/gpump/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/gpump/trunk

« back to all changes in this revision

Viewing changes to src/GPumpApp.c

  • Committer: Gustav Hartvigsson
  • Date: 2014-02-09 01:40:21 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20140209014021-8whq22ru8j5qpng3
Something is wrong with GtkListStore it seems,
but I can not figure it out...

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
#include "GPumpApp.h"
7
7
 
8
 
#define GPUMP_APP_GET_PRIVATE(obj)\
9
 
  (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GPUMP_TYPE_APP, GPumpAppPrivate))
 
8
#define GPUMP_APP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\
 
9
  GPUMP_TYPE_APP, GPumpAppPrivate))
10
10
 
11
11
G_DEFINE_TYPE (GPumpApp, gpump_app, GTK_TYPE_APPLICATION)
12
12
 
19
19
  GtkWidget * window;
20
20
  GtkWidget * header_bar;
21
21
  GtkWidget * layout; /* GtkBox */
22
 
  GtkWidget * scroll_view; /* GtkScrolledWindow */
23
 
  GtkWidget * post_list_box; /* GtkListBox */
24
 
  GtkWidget * btn_gear; /* GtkMenuButton */
25
 
  GtkWidget * btn_new_post;
26
 
  GtkWidget * btn_refresh;
27
 
  
28
 
  /* gear menu */
29
 
  GtkWidget * gear_menu; /* GtkMenu */
 
22
  GtkWidget * post_list_view; /* GtkTreeView */
30
23
  
31
24
  /* List store */
32
25
  GtkListStore * post_list_store;
33
26
};
34
27
 
 
28
/* * Callback and private function declarations *******************************/
 
29
void gpump_app_class_init (GPumpAppClass * klass);
 
30
void gpump_app_activate (GApplication * application);
 
31
void gpump_app_init (GPumpApp * self);
 
32
 
35
33
typedef enum {
36
34
  GPUPM_APP_MAIN_LIST_COL = 0,
37
35
  GPUMP_APP_MAIN_LIST_NUM_COL
38
36
} GPumpAppCols;
39
37
 
40
 
 
41
 
 
42
 
/* * Callback and private function declarations *******************************/
43
 
void gpump_app_class_init (GPumpAppClass * klass);
44
 
void gpump_app_activate (GApplication * application);
45
 
void gpump_app_init (GPumpApp * self);
46
 
 
47
 
void _prepere_window (GPumpApp * self);
48
 
void _prepere_gear_menu (GPumpApp * self);
49
 
void _prepere_new_post_button (GPumpApp * self);
50
 
void _prepere_refresh_button (GPumpApp * self);
51
 
 
52
38
/* * Class functions **********************************************************/
53
39
GPumpApp * gpump_app_new (void) {
54
40
  GPumpApp * self = g_object_new (GPUMP_TYPE_APP,
59
45
}
60
46
 
61
47
void gpump_app_init (GPumpApp * self) {
62
 
  g_print ("init\n");
63
 
  self->priv = GPUMP_APP_GET_PRIVATE (self);
64
 
  
 
48
  // GPumpAppPrivate * priv = GPUMP_APP_GET_PRIVATE (self);
 
49
  /* Nothing to be done here? */
65
50
}
66
51
 
67
52
void gpump_app_class_init (GPumpAppClass * klass) {
72
57
  
73
58
  application_class->activate = gpump_app_activate;
74
59
  
75
 
  g_type_class_add_private (klass, sizeof(GPumpAppPrivate));
 
60
  g_type_class_add_private (klass, sizeof(GPumpApp));
76
61
  
77
62
  g_print ("GPumpApp class init done.\n");
78
63
}
80
65
 
81
66
void gpump_app_activate (GApplication * application) {
82
67
  g_print ("GPumpApp activate.\n");
83
 
 
84
 
  
85
 
  /* Prepere stuff */
86
 
  _prepere_window (GPUMP_APP (application));
87
 
  _prepere_gear_menu (GPUMP_APP (application));
88
 
  _prepere_new_post_button (GPUMP_APP (application));
89
 
  _prepere_refresh_button (GPUMP_APP (application));
90
 
  
91
 
  /* Show it! */
92
 
  gtk_widget_show_all (GTK_WIDGET(GPUMP_APP(application)->priv->window));
93
 
  
94
 
  g_print ("done GPumpApp activate.\n");
95
 
}
96
 
 
97
 
void _prepere_gear_menu (GPumpApp * self) {
98
 
  GPumpAppPrivate * priv = self->priv;
99
 
 
100
 
  /* create the menu model */
101
 
  GMenu * menu_model = g_menu_new ();
102
 
  g_menu_append (menu_model, "Profiles", NULL);
103
 
  g_menu_append (menu_model, "Settings", NULL);
104
 
  
105
 
  priv->gear_menu = gtk_menu_new_from_model (G_MENU_MODEL (menu_model));
106
 
  g_object_unref (menu_model);
107
 
  
108
 
  /* create and attatch the gear menu button */
109
 
  priv->btn_gear = gtk_menu_button_new ();
110
 
  gtk_menu_button_set_popup (GTK_MENU_BUTTON(priv->btn_gear),
111
 
    GTK_WIDGET(priv->gear_menu));
112
 
  gtk_header_bar_pack_end (GTK_HEADER_BAR(priv->header_bar), priv->btn_gear);
113
 
  
114
 
  /* Setting icon */
115
 
  GtkWidget * gear_icon = gtk_image_new_from_icon_name(
116
 
    "emblem-system-symbolic", GTK_ICON_SIZE_LARGE_TOOLBAR);
117
 
  gtk_button_set_image (GTK_BUTTON (priv->btn_gear), gear_icon);
118
 
  
119
 
  gtk_widget_set_tooltip_text (GTK_WIDGET (priv->btn_gear), "GPupm gear menu");
120
 
}
121
 
 
122
 
void _prepere_new_post_button (GPumpApp * self) {
123
 
  GPumpAppPrivate * priv = self->priv;
124
 
  
125
 
  GtkWidget * share_icon = gtk_image_new_from_icon_name ("text-editor-symbolic",
126
 
    GTK_ICON_SIZE_LARGE_TOOLBAR);
127
 
  priv->btn_new_post = gtk_button_new ();
128
 
  gtk_button_set_image (GTK_BUTTON (priv->btn_new_post), share_icon);
129
 
  
130
 
  gtk_header_bar_pack_start (GTK_HEADER_BAR (priv->header_bar),
131
 
    priv->btn_new_post);
132
 
  gtk_widget_set_tooltip_text (GTK_WIDGET (priv->btn_new_post),
133
 
    "Create new post");
134
 
}
135
 
 
136
 
void _prepere_window (GPumpApp * self) {
137
 
  GPumpAppPrivate * priv = self->priv;
 
68
  
 
69
  /* Creating widgets */
 
70
  GPumpAppPrivate * priv = GPUMP_APP_GET_PRIVATE (application);
138
71
  GtkWidget * window = priv->window =
139
 
    gtk_application_window_new (GTK_APPLICATION (self));
 
72
    gtk_application_window_new (GTK_APPLICATION (application));
140
73
  GtkWidget * header_bar = priv->header_bar = gtk_header_bar_new ();
141
 
  GtkWidget * layout = priv->layout =
142
 
    gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
 
74
  GtkWidget * layout = priv->layout = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
143
75
  
144
 
  gtk_header_bar_set_title (GTK_HEADER_BAR (header_bar), "GPump");
145
76
  gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header_bar), TRUE);
146
77
  
147
 
  GtkWidget * scroll = priv->post_list_box =
148
 
    gtk_scrolled_window_new (NULL, NULL);
149
 
  
150
 
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
151
 
    GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
152
 
  
153
 
  GtkWidget * post_list_box = priv->post_list_box =
154
 
    gtk_list_box_new ();
155
 
 
156
 
  
157
 
  gtk_container_add (GTK_CONTAINER(scroll), post_list_box);
158
 
  
 
78
  GtkListStore * post_list_store = priv->post_list_store =
 
79
    gtk_list_store_new ( GPUMP_APP_MAIN_LIST_NUM_COL, GTK_TYPE_WIDGET);
 
80
  
 
81
  GtkWidget * post_list_view = priv->post_list_view =
 
82
    gtk_tree_view_new ();
 
83
  
 
84
  
 
85
  gtk_tree_view_set_model (GTK_TREE_VIEW (post_list_view), GTK_TREE_MODEL(post_list_store));
 
86
  
 
87
  /* adding widgets */
159
88
  gtk_window_set_titlebar (GTK_WINDOW (window), header_bar);
160
 
  gtk_widget_set_size_request (window, 500,500);
161
89
  
162
 
  gtk_box_pack_start (GTK_BOX (layout), scroll, TRUE, TRUE, 1);
 
90
  gtk_box_pack_start (GTK_BOX (layout), post_list_view, TRUE, TRUE, 1);
163
91
  
164
92
  gtk_container_add (GTK_CONTAINER (window), layout);
165
 
}
166
 
 
167
 
void _prepere_refresh_button (GPumpApp * self) {
168
 
  GPumpAppPrivate * priv = self->priv;
169
 
  GtkWidget * refresh_icon = gtk_image_new_from_icon_name
170
 
    ("emblem-synchronizing-symbolic", GTK_ICON_SIZE_LARGE_TOOLBAR);
171
 
  priv->btn_refresh = gtk_button_new ();
172
 
  gtk_button_set_image (GTK_BUTTON (priv->btn_refresh), refresh_icon);
173
 
  gtk_header_bar_pack_start (GTK_HEADER_BAR(priv->header_bar), priv->btn_refresh);
174
 
  gtk_widget_set_tooltip_text (GTK_WIDGET (priv->btn_refresh),
175
 
    "Refresh the stream");
176
 
}
 
93
  
 
94
  /* Show it! */
 
95
  gtk_widget_show_all (GTK_WIDGET(window));
 
96
  
 
97
  g_print ("done GPumpApp activate.\n");
 
98
}
 
99
 
 
100
 
177
101
 
178
102
/* * Callback implemenations **************************************************/
179
103