/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 20:15:21 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20140209201521-mvjdpy9lpkguhft7
* changed the icons in the widget UI to Symoblic.
* changed from GtkTreeView to GtkListBox. This should make things
  in the future

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 
6
6
#include "GPumpApp.h"
7
7
 
8
 
#define GPUMP_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((GPumpApp *) obj)->priv)
 
8
#define GPUMP_APP_GET_PRIVATE(obj)\
 
9
  (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GPUMP_TYPE_APP, GPumpAppPrivate))
9
10
 
10
11
G_DEFINE_TYPE (GPumpApp, gpump_app, GTK_TYPE_APPLICATION)
11
12
 
18
19
  GtkWidget * window;
19
20
  GtkWidget * header_bar;
20
21
  GtkWidget * layout; /* GtkBox */
21
 
  GtkWidget * post_list_view; /* GtkTreeView */
 
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 */
 
30
  
 
31
  /* List store */
22
32
  GtkListStore * post_list_store;
23
33
};
24
34
 
 
35
typedef enum {
 
36
  GPUPM_APP_MAIN_LIST_COL = 0,
 
37
  GPUMP_APP_MAIN_LIST_NUM_COL
 
38
} GPumpAppCols;
 
39
 
 
40
 
 
41
 
25
42
/* * Callback and private function declarations *******************************/
26
43
void gpump_app_class_init (GPumpAppClass * klass);
27
44
void gpump_app_activate (GApplication * application);
28
45
void gpump_app_init (GPumpApp * self);
29
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
 
30
52
/* * Class functions **********************************************************/
31
53
GPumpApp * gpump_app_new (void) {
32
54
  GPumpApp * self = g_object_new (GPUMP_TYPE_APP,
37
59
}
38
60
 
39
61
void gpump_app_init (GPumpApp * self) {
 
62
  g_print ("init\n");
 
63
  self->priv = GPUMP_APP_GET_PRIVATE (self);
40
64
  
41
65
}
42
66
 
48
72
  
49
73
  application_class->activate = gpump_app_activate;
50
74
  
51
 
  g_type_class_add_private (klass, sizeof(GPumpApp));
 
75
  g_type_class_add_private (klass, sizeof(GPumpAppPrivate));
52
76
  
53
77
  g_print ("GPumpApp class init done.\n");
54
78
}
56
80
 
57
81
void gpump_app_activate (GApplication * application) {
58
82
  g_print ("GPumpApp activate.\n");
59
 
  
60
 
  
 
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));
61
93
  
62
94
  g_print ("done GPumpApp activate.\n");
63
95
}
64
96
 
65
 
 
 
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;
 
138
  GtkWidget * window = priv->window =
 
139
    gtk_application_window_new (GTK_APPLICATION (self));
 
140
  GtkWidget * header_bar = priv->header_bar = gtk_header_bar_new ();
 
141
  GtkWidget * layout = priv->layout =
 
142
    gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
 
143
  
 
144
  gtk_header_bar_set_title (GTK_HEADER_BAR (header_bar), "GPump");
 
145
  gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header_bar), TRUE);
 
146
  
 
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
  
 
159
  gtk_window_set_titlebar (GTK_WINDOW (window), header_bar);
 
160
  gtk_widget_set_size_request (window, 500,500);
 
161
  
 
162
  gtk_box_pack_start (GTK_BOX (layout), scroll, TRUE, TRUE, 1);
 
163
  
 
164
  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
}
66
177
 
67
178
/* * Callback implemenations **************************************************/
68
179