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++;