factorize playlist's button creation
authorMaksym Veremeyenko <verem@m1stereo.tv>
Tue, 14 Jun 2011 12:33:04 +0000 (15:33 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Tue, 14 Jun 2011 12:33:04 +0000 (15:33 +0300)
src/interface.c

index adc7b86..384f20d 100644 (file)
@@ -553,6 +553,112 @@ static GtkWidget* create_pane_status (GtkWidget* parent, GtkWidget* top)
        return scrolledwindow;
 }
 
+static
+GtkWidget*
+create_playlist_buttons( GtkWidget* parent, GtkWidget* top )
+{
+       int i;
+       const static struct
+       {
+               gchar* tooltip;
+               gchar* stock;
+               gchar* label;
+               gchar* hookup;
+       } buttons[] =
+       {
+               {
+                       "Refresh",
+                       "gtk-refresh",
+                       "",
+                       "button_clips_refresh",
+               },
+               {
+                       "Load root folder",
+                       "gtk-home",
+                       "",
+                       "button_clips_home"
+               },
+               {
+                       "Move clip up",
+                       "gtk-go-up",
+                       "",
+                       "button_up"
+               },
+               {
+                       "Move clip down",
+                       "gtk-go-down",
+                       "",
+                       "button_down"
+               },
+               {
+                       "Remove clip",
+                       "gtk-delete",
+                       "",
+                       "button_remove"
+               },
+               {
+                       "Remove all but current clip",
+                       "gtk-clear",
+                       "",
+                       "button_clean"
+               },
+               {
+                       NULL, NULL, NULL, NULL
+               }
+       };
+
+       GtkWidget *label44, *label45, *hbuttonbox5;
+
+       label44 = gtk_label_new (_(" "));
+       gtk_widget_show (label44);
+       gtk_box_pack_start (GTK_BOX (parent), label44, TRUE, TRUE, 0);
+       gtk_label_set_justify (GTK_LABEL (label44), GTK_JUSTIFY_LEFT);
+
+       for(i = 0; buttons[i].stock; i++)
+       {
+               GtkWidget *button, *alignment, *hbox, *image, *label;
+
+               button = gtk_button_new ();
+               gtk_widget_show (button);
+               gtk_box_pack_start (GTK_BOX (parent), button, FALSE, FALSE, 0);
+               GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
+               GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+               gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+               gtk_widget_set_tooltip_text (button, buttons[i].tooltip);
+
+               alignment = gtk_alignment_new (0, 0.5, 0, 0);
+               gtk_widget_show (alignment);
+               gtk_container_add (GTK_CONTAINER (button), alignment);
+
+               hbox = gtk_hbox_new (FALSE, 2);
+               gtk_widget_show (hbox);
+               gtk_container_add (GTK_CONTAINER (alignment), hbox);
+
+               image = gtk_image_new_from_stock (buttons[i].stock, GTK_ICON_SIZE_MENU);
+               gtk_widget_show (image);
+               gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+
+               label = gtk_label_new_with_mnemonic (buttons[i].label);
+               gtk_widget_show (label);
+               gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+               gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
+
+               GLADE_HOOKUP_OBJECT (top, button, buttons[i].hookup);
+       };
+
+       hbuttonbox5 = gtk_hbutton_box_new ();
+       gtk_widget_show (hbuttonbox5);
+       gtk_box_pack_start (GTK_BOX (parent), hbuttonbox5, FALSE, FALSE, 0);
+
+       label45 = gtk_label_new (_(" "));
+       gtk_widget_show (label45);
+       gtk_box_pack_start (GTK_BOX (parent), label45, TRUE, TRUE, 0);
+       gtk_label_set_justify (GTK_LABEL (label45), GTK_JUSTIFY_LEFT);
+
+       return parent;
+}
+
+
 GtkWidget*
 create_page_operate (void)
 {
@@ -579,27 +685,6 @@ create_page_operate (void)
   GtkWidget *treeview1;
   GtkWidget *alignment12;
   GtkWidget *hbox19;
-  GtkWidget *label44;
-  GtkWidget *button_clips_refresh;
-  GtkWidget *alignment5;
-  GtkWidget *hbox12;
-  GtkWidget *image5;
-  GtkWidget *label36;
-  GtkWidget *button_clips_home;
-  GtkWidget *alignment6;
-  GtkWidget *hbox13;
-  GtkWidget *image6;
-  GtkWidget *label37;
-  GtkWidget *button_up;
-  GtkWidget *image21;
-  GtkWidget *button_down;
-  GtkWidget *image22;
-  GtkWidget *button_remove;
-  GtkWidget *image23;
-  GtkWidget *button_clean;
-  GtkWidget *image24;
-  GtkWidget *hbuttonbox5;
-  GtkWidget *label45;
   GtkWidget *hpaned0;
   GtkWidget *frame1, *frame2;
 
@@ -734,117 +819,7 @@ create_page_operate (void)
   gtk_widget_show (hbox19);
   gtk_container_add (GTK_CONTAINER (alignment12), hbox19);
 
-  label44 = gtk_label_new (_(" "));
-  gtk_widget_show (label44);
-  gtk_box_pack_start (GTK_BOX (hbox19), label44, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (label44), GTK_JUSTIFY_LEFT);
-
-  button_clips_refresh = gtk_button_new ();
-  gtk_widget_show (button_clips_refresh);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_clips_refresh, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_clips_refresh, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_clips_refresh, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_clips_refresh), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_clips_refresh, _("Refresh"));
-
-  alignment5 = gtk_alignment_new (0, 0.5, 0, 0);
-  gtk_widget_show (alignment5);
-  gtk_container_add (GTK_CONTAINER (button_clips_refresh), alignment5);
-
-  hbox12 = gtk_hbox_new (FALSE, 2);
-  gtk_widget_show (hbox12);
-  gtk_container_add (GTK_CONTAINER (alignment5), hbox12);
-
-  image5 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image5);
-  gtk_box_pack_start (GTK_BOX (hbox12), image5, FALSE, FALSE, 0);
-
-  label36 = gtk_label_new_with_mnemonic ("");
-  gtk_widget_show (label36);
-  gtk_box_pack_start (GTK_BOX (hbox12), label36, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (label36), GTK_JUSTIFY_LEFT);
-
-  button_clips_home = gtk_button_new ();
-  gtk_widget_show (button_clips_home);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_clips_home, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_clips_home, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_clips_home, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_clips_home), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_clips_home, _("Load root folder"));
-
-  alignment6 = gtk_alignment_new (0, 0.5, 0, 0);
-  gtk_widget_show (alignment6);
-  gtk_container_add (GTK_CONTAINER (button_clips_home), alignment6);
-
-  hbox13 = gtk_hbox_new (FALSE, 2);
-  gtk_widget_show (hbox13);
-  gtk_container_add (GTK_CONTAINER (alignment6), hbox13);
-
-  image6 = gtk_image_new_from_stock ("gtk-home", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image6);
-  gtk_box_pack_start (GTK_BOX (hbox13), image6, FALSE, FALSE, 0);
-
-  label37 = gtk_label_new_with_mnemonic ("");
-  gtk_widget_show (label37);
-  gtk_box_pack_start (GTK_BOX (hbox13), label37, FALSE, FALSE, 0);
-  gtk_label_set_justify (GTK_LABEL (label37), GTK_JUSTIFY_LEFT);
-
-  button_up = gtk_button_new ();
-  gtk_widget_show (button_up);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_up, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_up, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_up, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_up), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_up, _("Move clip up"));
-
-  image21 = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image21);
-  gtk_container_add (GTK_CONTAINER (button_up), image21);
-
-  button_down = gtk_button_new ();
-  gtk_widget_show (button_down);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_down, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_down, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_down, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_down), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_down, _("Move clip down"));
-
-  image22 = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image22);
-  gtk_container_add (GTK_CONTAINER (button_down), image22);
-
-  button_remove = gtk_button_new ();
-  gtk_widget_show (button_remove);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_remove, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_remove, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_remove, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_remove), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_remove, _("Remove clip"));
-
-  image23 = gtk_image_new_from_stock ("gtk-delete", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image23);
-  gtk_container_add (GTK_CONTAINER (button_remove), image23);
-
-  button_clean = gtk_button_new ();
-  gtk_widget_show (button_clean);
-  gtk_box_pack_start (GTK_BOX (hbox19), button_clean, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (button_clean, GTK_CAN_FOCUS);
-  GTK_WIDGET_SET_FLAGS (button_clean, GTK_CAN_DEFAULT);
-  gtk_button_set_relief (GTK_BUTTON (button_clean), GTK_RELIEF_NONE);
-  gtk_widget_set_tooltip_text (button_clean, _("Remove all but current clip"));
-
-  image24 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU);
-  gtk_widget_show (image24);
-  gtk_container_add (GTK_CONTAINER (button_clean), image24);
-
-  hbuttonbox5 = gtk_hbutton_box_new ();
-  gtk_widget_show (hbuttonbox5);
-  gtk_box_pack_start (GTK_BOX (hbox19), hbuttonbox5, FALSE, FALSE, 0);
-
-  label45 = gtk_label_new (_(" "));
-  gtk_widget_show (label45);
-  gtk_box_pack_start (GTK_BOX (hbox19), label45, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (label45), GTK_JUSTIFY_LEFT);
+       create_playlist_buttons(hbox19, page_clips);
 
   /* Store pointers to all widgets, for use by lookup_widget(). */
   GLADE_HOOKUP_OBJECT (page_clips, vbox8, "vbox8");
@@ -869,27 +844,6 @@ create_page_operate (void)
   GLADE_HOOKUP_OBJECT (page_clips, treeview1, "treeview1");
   GLADE_HOOKUP_OBJECT (page_clips, alignment12, "alignment12");
   GLADE_HOOKUP_OBJECT (page_clips, hbox19, "hbox19");
-  GLADE_HOOKUP_OBJECT (page_clips, label44, "label44");
-  GLADE_HOOKUP_OBJECT (page_clips, button_clips_refresh, "button_clips_refresh");
-  GLADE_HOOKUP_OBJECT (page_clips, alignment5, "alignment5");
-  GLADE_HOOKUP_OBJECT (page_clips, hbox12, "hbox12");
-  GLADE_HOOKUP_OBJECT (page_clips, image5, "image5");
-  GLADE_HOOKUP_OBJECT (page_clips, label36, "label36");
-  GLADE_HOOKUP_OBJECT (page_clips, button_clips_home, "button_clips_home");
-  GLADE_HOOKUP_OBJECT (page_clips, alignment6, "alignment6");
-  GLADE_HOOKUP_OBJECT (page_clips, hbox13, "hbox13");
-  GLADE_HOOKUP_OBJECT (page_clips, image6, "image6");
-  GLADE_HOOKUP_OBJECT (page_clips, label37, "label37");
-  GLADE_HOOKUP_OBJECT (page_clips, button_up, "button_up");
-  GLADE_HOOKUP_OBJECT (page_clips, image21, "image21");
-  GLADE_HOOKUP_OBJECT (page_clips, button_down, "button_down");
-  GLADE_HOOKUP_OBJECT (page_clips, image22, "image22");
-  GLADE_HOOKUP_OBJECT (page_clips, button_remove, "button_remove");
-  GLADE_HOOKUP_OBJECT (page_clips, image23, "image23");
-  GLADE_HOOKUP_OBJECT (page_clips, button_clean, "button_clean");
-  GLADE_HOOKUP_OBJECT (page_clips, image24, "image24");
-  GLADE_HOOKUP_OBJECT (page_clips, hbuttonbox5, "hbuttonbox5");
-  GLADE_HOOKUP_OBJECT (page_clips, label45, "label45");
 
   gtk_widget_grab_focus (list_dir);
   return page_clips;