summaryrefslogtreecommitdiff
path: root/endless/eosflexygrid.h
blob: 6739f093c036220a9b7bc37be53c00e99ddf2b1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* Copyright 2013 Endless Mobile, Inc. */

#ifndef EOS_FLEXY_GRID_H
#define EOS_FLEXY_GRID_H

#include "eostypes.h"

#include <gtk/gtk.h>

G_BEGIN_DECLS

#define EOS_TYPE_FLEXY_GRID                     (eos_flexy_grid_get_type ())
#define EOS_FLEXY_GRID(obj)                     (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOS_TYPE_FLEXY_GRID, EosFlexyGrid))
#define EOS_IS_FLEXY_GRID(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOS_TYPE_FLEXY_GRID))
#define EOS_FLEXY_GRID_CLASS(klass)             (G_TYPE_CHECK_CLASS_CAST ((klass), EOS_TYPE_FLEXY_GRID, EosFlexyGridClass))
#define EOS_IS_FLEXY_GRID_CLASS(klass)          (G_TYPE_CHECK_CLASS_TYPE ((klass), EOS_TYPE_FLEXY_GRID))
#define EOS_FLEXY_GRID_GET_CLASS(obj)           (G_TYPE_INSTANCE_GET_CLASS ((obj), EOS_TYPE_FLEXY_GRID, EosFlexyGridClass))

#define EOS_TYPE_FLEXY_GRID_CELL                (eos_flexy_grid_cell_get_type ())
#define EOS_FLEXY_GRID_CELL(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOS_TYPE_FLEXY_GRID_CELL, EosFlexyGridCell))
#define EOS_IS_FLEXY_GRID_CELL(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOS_TYPE_FLEXY_GRID_CELL))
#define EOS_FLEXY_GRID_CELL_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), EOS_TYPE_FLEXY_GRID_CELL, EosFlexyGridCellClass))
#define EOS_IS_FLEXY_GRID_CELL_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), EOS_TYPE_FLEXY_GRID_CELL))
#define EOS_FLEXY_GRID_CELL_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), EOS_TYPE_FLEXY_GRID_CELL, EosFlexyGridCellClass))

#define EOS_STYLE_CLASS_FLEXY_GRID      "flexy-grid"
#define EOS_STYLE_CLASS_FLEXY_GRID_CELL "flexy-grid-cell"

typedef struct _EosFlexyGrid            EosFlexyGrid;
typedef struct _EosFlexyGridClass       EosFlexyGridClass;

typedef struct _EosFlexyGridCell        EosFlexyGridCell;
typedef struct _EosFlexyGridCellClass   EosFlexyGridCellClass;

typedef gint (* EosFlexyGridSortFunc) (EosFlexyGridCell *cell_a,
                                       EosFlexyGridCell *cell_b,
                                       gpointer          user_data);

struct _EosFlexyGrid
{
  /*< private >*/
  GtkContainer parent_instance;

  gpointer priv;
};

struct _EosFlexyGridClass
{
  /*< private >*/
  GtkContainerClass parent_class;

  void (* cell_selected)  (EosFlexyGrid     *grid,
                           EosFlexyGridCell *cell);
  void (* cell_activated) (EosFlexyGrid     *grid,
                           EosFlexyGridCell *cell);

  gpointer _padding[8];
};

EOS_SDK_ALL_API_VERSIONS
GType eos_flexy_grid_get_type (void) G_GNUC_CONST;

EOS_SDK_ALL_API_VERSIONS
GtkWidget *     eos_flexy_grid_new              (void);
EOS_SDK_ALL_API_VERSIONS
void            eos_flexy_grid_set_cell_size    (EosFlexyGrid *grid,
                                                 int           size);
EOS_SDK_ALL_API_VERSIONS
void            eos_flexy_grid_set_cell_spacing (EosFlexyGrid *grid,
                                                 int           spacing);
EOS_SDK_ALL_API_VERSIONS
void            eos_flexy_grid_insert           (EosFlexyGrid *grid,
                                                 GtkWidget    *child,
                                                 int           index_);

struct _EosFlexyGridCell
{
  /*< private >*/
  GtkBin parent_instance;

  gpointer priv;
};

struct _EosFlexyGridCellClass
{
  /*< private >*/
  GtkBinClass parent_class;

  gpointer _padding[8];
};

EOS_SDK_ALL_API_VERSIONS
GType eos_flexy_grid_cell_get_type (void) G_GNUC_CONST;

EOS_SDK_ALL_API_VERSIONS
GtkWidget *     eos_flexy_grid_cell_new                 (void);
EOS_SDK_ALL_API_VERSIONS
void            eos_flexy_grid_cell_set_shape           (EosFlexyGridCell *cell,
                                                         EosFlexyShape     shape);
EOS_SDK_ALL_API_VERSIONS
EosFlexyShape   eos_flexy_grid_cell_get_shape           (EosFlexyGridCell *cell);

G_END_DECLS

#endif /* EOS_FLEXY_GRID_H */