Mercurial > geeqie.yaz
comparison src/bar.c @ 1383:3c9abbc05792
use standard GtkHPaned for sidebar width
author | nadvornik |
---|---|
date | Fri, 06 Mar 2009 14:24:11 +0000 |
parents | 5a61fb9adc05 |
children | 6f31fa931d3f |
comparison
equal
deleted
inserted
replaced
1382:31a747f9d268 | 1383:3c9abbc05792 |
---|---|
28 #include "bar_exif.h" | 28 #include "bar_exif.h" |
29 #include "bar_histogram.h" | 29 #include "bar_histogram.h" |
30 #include "histogram.h" | 30 #include "histogram.h" |
31 #include "rcfile.h" | 31 #include "rcfile.h" |
32 | 32 |
33 #define BAR_SIZE_INCREMENT 48 | 33 //#define BAR_SIZE_INCREMENT 48 |
34 #define BAR_ARROW_SIZE 7 | 34 //#define BAR_ARROW_SIZE 7 |
35 | 35 |
36 | 36 |
37 typedef struct _BarData BarData; | 37 typedef struct _BarData BarData; |
38 struct _BarData | 38 struct _BarData |
39 { | 39 { |
221 } | 221 } |
222 g_list_free(list); | 222 g_list_free(list); |
223 return; | 223 return; |
224 } | 224 } |
225 | 225 |
226 | |
227 | |
228 | |
229 | |
230 void bar_add(GtkWidget *bar, GtkWidget *pane) | 226 void bar_add(GtkWidget *bar, GtkWidget *pane) |
231 { | 227 { |
232 GtkWidget *expander; | 228 GtkWidget *expander; |
233 BarData *bd = g_object_get_data(G_OBJECT(bar), "bar_data"); | 229 BarData *bd = g_object_get_data(G_OBJECT(bar), "bar_data"); |
234 PaneData *pd = g_object_get_data(G_OBJECT(pane), "pane_data"); | 230 PaneData *pd = g_object_get_data(G_OBJECT(pane), "pane_data"); |
276 | 272 |
277 widget = bar_pane_exif_new(_("Exif"), TRUE, TRUE); | 273 widget = bar_pane_exif_new(_("Exif"), TRUE, TRUE); |
278 bar_add(bar, widget); | 274 bar_add(bar, widget); |
279 } | 275 } |
280 | 276 |
281 static void bar_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data) | 277 static void bar_size_allocate(GtkWidget *widget, GtkAllocation *allocation, gpointer data) |
282 { | 278 { |
283 BarData *bd = data; | 279 BarData *bd = data; |
280 | |
284 bd->width = allocation->width; | 281 bd->width = allocation->width; |
285 } | 282 } |
286 | 283 |
287 | 284 gint bar_get_width(GtkWidget *bar) |
288 static void bar_width(BarData *bd, gint val) | 285 { |
289 { | 286 BarData *bd = g_object_get_data(G_OBJECT(bar), "bar_data"); |
290 gint size; | 287 if (!bd) return 0; |
291 | 288 return bd->width; |
292 size = bd->widget->allocation.width; | |
293 size = CLAMP(size + val, BAR_SIZE_INCREMENT * 2, BAR_SIZE_INCREMENT * 16); | |
294 | |
295 gtk_widget_set_size_request(bd->widget, size, -1); | |
296 } | |
297 | |
298 static void bar_larger(GtkWidget *widget, gpointer data) | |
299 { | |
300 BarData *bd = data; | |
301 | |
302 bar_width(bd, BAR_SIZE_INCREMENT); | |
303 } | |
304 | |
305 static void bar_smaller(GtkWidget *widget, gpointer data) | |
306 { | |
307 BarData *bd = data; | |
308 | |
309 bar_width(bd, -BAR_SIZE_INCREMENT); | |
310 } | 289 } |
311 | 290 |
312 void bar_close(GtkWidget *bar) | 291 void bar_close(GtkWidget *bar) |
313 { | 292 { |
314 BarData *bd; | 293 BarData *bd; |
341 bd->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP); | 320 bd->widget = gtk_vbox_new(FALSE, PREF_PAD_GAP); |
342 g_object_set_data(G_OBJECT(bd->widget), "bar_data", bd); | 321 g_object_set_data(G_OBJECT(bd->widget), "bar_data", bd); |
343 g_signal_connect(G_OBJECT(bd->widget), "destroy", | 322 g_signal_connect(G_OBJECT(bd->widget), "destroy", |
344 G_CALLBACK(bar_destroy), bd); | 323 G_CALLBACK(bar_destroy), bd); |
345 | 324 |
346 g_signal_connect(G_OBJECT(bd->widget), "size_allocate", | 325 g_signal_connect(G_OBJECT(bd->widget), "size-allocate", |
347 G_CALLBACK(bar_sized), bd); | 326 G_CALLBACK(bar_size_allocate), bd); |
348 | 327 |
349 bd->width = PANEL_DEFAULT_WIDTH; | 328 bd->width = SIDEBAR_DEFAULT_WIDTH; |
350 gtk_widget_set_size_request(bd->widget, bd->width, -1); | 329 gtk_widget_set_size_request(bd->widget, bd->width, -1); |
351 | 330 |
352 box = gtk_hbox_new(FALSE, 0); | 331 box = gtk_hbox_new(FALSE, 0); |
353 | |
354 sizer = sizer_new(bd->widget, bounding_widget, SIZER_POS_LEFT); | |
355 sizer_set_limits(sizer, BAR_SIZE_INCREMENT * 2, -1, -1 , -1); | |
356 gtk_box_pack_start(GTK_BOX(box), sizer, FALSE, FALSE, 0); | |
357 gtk_widget_show(sizer); | |
358 | 332 |
359 bd->label_file_name = gtk_label_new(""); | 333 bd->label_file_name = gtk_label_new(""); |
360 gtk_label_set_ellipsize(GTK_LABEL(bd->label_file_name), PANGO_ELLIPSIZE_END); | 334 gtk_label_set_ellipsize(GTK_LABEL(bd->label_file_name), PANGO_ELLIPSIZE_END); |
361 gtk_label_set_selectable(GTK_LABEL(bd->label_file_name), TRUE); | 335 gtk_label_set_selectable(GTK_LABEL(bd->label_file_name), TRUE); |
362 gtk_misc_set_alignment(GTK_MISC(bd->label_file_name), 0.5, 0.5); | 336 gtk_misc_set_alignment(GTK_MISC(bd->label_file_name), 0.5, 0.5); |
363 gtk_box_pack_start(GTK_BOX(box), bd->label_file_name, TRUE, TRUE, 0); | 337 gtk_box_pack_start(GTK_BOX(box), bd->label_file_name, TRUE, TRUE, 0); |
364 gtk_widget_show(bd->label_file_name); | 338 gtk_widget_show(bd->label_file_name); |
365 | 339 |
366 button = gtk_button_new(); | |
367 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
368 g_signal_connect(G_OBJECT(button), "clicked", | |
369 G_CALLBACK(bar_smaller), bd); | |
370 gtk_box_pack_end(GTK_BOX(box), button, FALSE, FALSE, 0); | |
371 arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE); | |
372 gtk_widget_set_size_request(arrow, BAR_ARROW_SIZE, BAR_ARROW_SIZE); | |
373 gtk_container_add(GTK_CONTAINER(button), arrow); | |
374 gtk_widget_show(arrow); | |
375 gtk_widget_show(button); | |
376 | |
377 button = gtk_button_new(); | |
378 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
379 g_signal_connect(G_OBJECT(button), "clicked", | |
380 G_CALLBACK(bar_larger), bd); | |
381 gtk_box_pack_end(GTK_BOX(box), button, FALSE, FALSE, 0); | |
382 arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); | |
383 gtk_widget_set_size_request(arrow, BAR_ARROW_SIZE, BAR_ARROW_SIZE); | |
384 gtk_container_add(GTK_CONTAINER(button), arrow); | |
385 gtk_widget_show(arrow); | |
386 gtk_widget_show(button); | |
387 | |
388 gtk_box_pack_start(GTK_BOX(bd->widget), box, FALSE, FALSE, 0); | 340 gtk_box_pack_start(GTK_BOX(bd->widget), box, FALSE, FALSE, 0); |
389 gtk_widget_show(box); | 341 gtk_widget_show(box); |
390 | 342 |
391 scrolled = gtk_scrolled_window_new(NULL, NULL); | 343 scrolled = gtk_scrolled_window_new(NULL, NULL); |
392 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), | 344 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
418 GtkWidget *bar_new_from_config(GtkWidget *bounding_widget, const gchar **attribute_names, const gchar **attribute_values) | 370 GtkWidget *bar_new_from_config(GtkWidget *bounding_widget, const gchar **attribute_names, const gchar **attribute_values) |
419 { | 371 { |
420 GtkWidget *bar = bar_new(bounding_widget); | 372 GtkWidget *bar = bar_new(bounding_widget); |
421 | 373 |
422 gboolean enabled = TRUE; | 374 gboolean enabled = TRUE; |
423 gint width = PANEL_DEFAULT_WIDTH; | 375 gint width = SIDEBAR_DEFAULT_WIDTH; |
424 | 376 |
425 while (*attribute_names) | 377 while (*attribute_names) |
426 { | 378 { |
427 const gchar *option = *attribute_names++; | 379 const gchar *option = *attribute_names++; |
428 const gchar *value = *attribute_values++; | 380 const gchar *value = *attribute_values++; |