replace primary transport buttons
[rugen] / src / interface.c
index f28b2e6..65b9814 100644 (file)
 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
   g_object_set_data (G_OBJECT (component), name, widget)
 
-static void create_buttons_transport(GtkWidget *top, GtkWidget *parent_box)
+static
+GtkWidget *
+create_buttons_transport(GtkWidget *top, int type)
+{
+       int i;
+       GtkWidget *hbox;
+       gchar name[32];
+       const static struct
+       {
+               int type;
+               gchar* tooltip;
+               gchar* filename;
+       } buttons[] =
+       {
+               {
+                       2,
+                       "Beginning of playlist",
+                       "stock_media-begin-16.png"
+               },
+               {
+                       2,
+                       "Start of clip",
+                       "stock_media-prev-16.png"
+               },
+               {
+                       2,
+                       "Rewind",
+                       "stock_media-rew-16.png"
+               },
+               {
+                       2,
+                       "Previous frame",
+                       "stock_media-prev-frame-16.png"
+               },
+               {
+                       1,
+                       "Pause",
+                       "player_pause_32x32.png"
+               },
+               {
+                       1,
+                       "Play",
+                       "player_play_64x32.png"
+               },
+               {
+                       1,
+                       "Stop",
+                       "player_stop_32x32.png"
+               },
+               {
+                       2,
+                       "Next frame",
+                       "stock_media-next-frame-16.png"
+               },
+               {
+                       2,
+                       "Fast forward",
+                       "stock_media-fwd-16.png"
+               },
+               {
+                       2,
+                       "Next clip",
+                       "stock_media-next-16.png"
+               },
+               {
+                       2,
+                       "End of playlist",
+                       "stock_media-end-16.png"
+               },
+               {
+                       2,
+                       "Loop On",
+                       "eof-loop-16.png"
+               },
+               {
+                       2,
+                       "Loop Off",
+                       "eof-pause-16.png"
+               },
+               {
+                       0,
+                       NULL,
+                       NULL
+               }
+       };
+
+       hbox = gtk_hbox_new (FALSE, 0);
+       gtk_widget_show (hbox);
+
+
+       for(i = 0; buttons[i].filename; i++)
+       {
+               GtkWidget *transport, *image;
+
+               if ( type != buttons[i].type )
+                       continue;
+
+               transport = gtk_button_new ();
+               gtk_widget_show (transport);
+               gtk_box_pack_start (GTK_BOX (hbox), transport, TRUE, FALSE, 0);
+               GTK_WIDGET_UNSET_FLAGS (transport, GTK_CAN_FOCUS);
+               gtk_button_set_relief (GTK_BUTTON (transport), GTK_RELIEF_NONE);
+               gtk_widget_set_tooltip_text (transport, buttons[i].tooltip);
+
+               image = gtk_image_new_from_pixbuf(create_pixbuf(buttons[i].filename));
+               gtk_widget_show (image);
+               gtk_container_add (GTK_CONTAINER (transport), image);
+
+               snprintf(name, sizeof(name), "transport_%d", i);
+               GLADE_HOOKUP_OBJECT (top, transport, name);
+
+               snprintf(name, sizeof(name), "transport_image_%d", i);
+               GLADE_HOOKUP_OBJECT (top, image, name);
+       };
+
+       snprintf(name, sizeof(name), "buttons_transport_hbox_%d", type);
+       GLADE_HOOKUP_OBJECT (top, hbox, name);
+
+       return hbox;
+};
+
+static
+GtkWidget *
+create_block_buttons_transport(GtkWidget *top, int type)
 {
-    int i;
-    GtkWidget *hbox;
-    gchar name[32];
-    const static struct
-    {
-        gchar* tooltip;
-        gchar* filename;
-    } buttons[] =
-    {
-        {
-            "Beginning of playlist",
-            "stock_media-begin-16.png"
-        },
-        {
-            "Start of clip",
-            "stock_media-prev-16.png"
-        },
-        {
-            "Rewind",
-            "stock_media-rew-16.png"
-        },
-        {
-            "Previous frame",
-            "stock_media-prev-frame-16.png"
-        },
-        {
-            "Pause",
-            "stock_media-pause-16.png"
-        },
-        {
-            "Play",
-            "stock_media-play-16.png"
-        },
-        {
-            "Stop",
-            "stock_media-stop-16.png"
-        },
-        {
-            "Next frame",
-            "stock_media-next-frame-16.png"
-        },
-        {
-            "Fast forward",
-            "stock_media-fwd-16.png"
-        },
-        {
-            "Next clip",
-            "stock_media-next-16.png"
-        },
-        {
-            "End of playlist",
-            "stock_media-end-16.png"
-        },
-        {
-            "Loop On",
-            "eof-loop-16.png"
-        },
-        {
-            "Loop Off",
-            "eof-pause-16.png"
-        },
-        {
-            NULL,
-            NULL
-        }
-    };
-
-    hbox = gtk_hbox_new (FALSE, 0);
-    gtk_widget_show (hbox);
-    gtk_box_pack_start (GTK_BOX (parent_box), hbox, FALSE, TRUE, 0);
-
-
-    for(i = 0; buttons[i].filename; i++)
-    {
-        GtkWidget *transport, *image;
-
-        transport = gtk_button_new ();
-        gtk_widget_show (transport);
-        gtk_box_pack_start (GTK_BOX (hbox), transport, TRUE, FALSE, 0);
-        gtk_widget_set_size_request (transport, 34, 25);
-        GTK_WIDGET_UNSET_FLAGS (transport, GTK_CAN_FOCUS);
-        gtk_button_set_relief (GTK_BUTTON (transport), GTK_RELIEF_NONE);
-        gtk_widget_set_tooltip_text (transport, buttons[i].tooltip);
-
-        image = gtk_image_new_from_pixbuf(create_pixbuf(buttons[i].filename));
-        gtk_widget_show (image);
-        gtk_container_add (GTK_CONTAINER (transport), image);
-
-        snprintf(name, sizeof(name), "transport_%d", i);
-        GLADE_HOOKUP_OBJECT (top, transport, name);
-
-        snprintf(name, sizeof(name), "transport_image_%d", i);
-        GLADE_HOOKUP_OBJECT (top, image, name);
-    };
-
-    GLADE_HOOKUP_OBJECT (top, hbox, "buttons_transport_hbox");
+       gchar name[32];
+       GtkWidget *hbox, *label[2];
+
+       hbox = gtk_hbox_new (FALSE, 0);
+       gtk_widget_show (hbox);
+
+       snprintf(name, sizeof(name), "bbt_label_%da", type);
+       label[0] = gtk_label_new (name);
+       gtk_widget_show (label[0]);
+       gtk_box_pack_start (GTK_BOX (hbox), label[0], TRUE, TRUE, 0);
+       gtk_label_set_justify (GTK_LABEL (label[0]), GTK_JUSTIFY_LEFT);
+       GLADE_HOOKUP_OBJECT (top, label[0], name);
+
+
+       gtk_box_pack_start (GTK_BOX (hbox),
+               create_buttons_transport(top, type),
+               FALSE, TRUE, 0);
+
+       snprintf(name, sizeof(name), "bbt_label_%db", type);
+       label[1] = gtk_label_new (name);
+       gtk_widget_show (label[1]);
+       gtk_box_pack_start (GTK_BOX (hbox), label[1], TRUE, TRUE, 0);
+       gtk_label_set_justify (GTK_LABEL (label[1]), GTK_JUSTIFY_LEFT);
+       GLADE_HOOKUP_OBJECT (top, label[0], name);
+
+       return hbox;
 };
 
 GtkWidget*
@@ -153,9 +206,6 @@ create_gdv1394d (void)
   GtkWidget *notebook1;
   GtkWidget *empty_notebook_page;
   GtkWidget *label40;
-  GtkWidget *hbox20;
-  GtkWidget *label46;
-  GtkWidget *label47;
   GtkWidget *vbox_trim;
   GtkWidget *statusbar;
 
@@ -276,26 +326,18 @@ create_gdv1394d (void)
   gtk_widget_show (empty_notebook_page);
   gtk_container_add (GTK_CONTAINER (notebook1), empty_notebook_page);
 
-  label40 = gtk_label_new ("");
+  label40 = gtk_label_new ("label40");
   gtk_widget_show (label40);
   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label40);
   gtk_label_set_justify (GTK_LABEL (label40), GTK_JUSTIFY_LEFT);
 
-  hbox20 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_show (hbox20);
-  gtk_box_pack_start (GTK_BOX (vbox6), hbox20, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox6),
+               create_block_buttons_transport(gdv1394d, 1),
+               FALSE, TRUE, 0);
 
-  label46 = gtk_label_new ("");
-  gtk_widget_show (label46);
-  gtk_box_pack_start (GTK_BOX (hbox20), label46, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (label46), GTK_JUSTIFY_LEFT);
-
-  create_buttons_transport(gdv1394d, hbox20);
-
-  label47 = gtk_label_new ("");
-  gtk_widget_show (label47);
-  gtk_box_pack_start (GTK_BOX (hbox20), label47, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (label47), GTK_JUSTIFY_LEFT);
+       gtk_box_pack_start (GTK_BOX (vbox6),
+               create_block_buttons_transport(gdv1394d, 2),
+               FALSE, TRUE, 0);
 
   vbox_trim = gtk_vbox_new (FALSE, 0);
   gtk_widget_show (vbox_trim);
@@ -328,9 +370,6 @@ create_gdv1394d (void)
   GLADE_HOOKUP_OBJECT (gdv1394d, vbox6, "vbox6");
   GLADE_HOOKUP_OBJECT (gdv1394d, notebook1, "notebook1");
   GLADE_HOOKUP_OBJECT (gdv1394d, label40, "label40");
-  GLADE_HOOKUP_OBJECT (gdv1394d, hbox20, "hbox20");
-  GLADE_HOOKUP_OBJECT (gdv1394d, label46, "label46");
-  GLADE_HOOKUP_OBJECT (gdv1394d, label47, "label47");
   GLADE_HOOKUP_OBJECT (gdv1394d, vbox_trim, "vbox_trim");
   GLADE_HOOKUP_OBJECT (gdv1394d, statusbar, "statusbar");
 
@@ -665,10 +704,24 @@ create_pane_filedir( GtkWidget* top )
        GtkWidget* vpaned;
        GtkWidget* scrolledwindow[2];
        GtkWidget* list[2];
+       GtkWidget* label_directory;
+       GtkWidget* vbox;
+
+       /* create vbox for label pack */
+       vbox = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (vbox);
+
+       /* create a label for dir name */
+       label_directory = gtk_label_new (_("Disconnected"));
+       gtk_widget_show (label_directory);
+       gtk_box_pack_start (GTK_BOX (vbox), label_directory, FALSE, FALSE, 0);
+       gtk_misc_set_alignment (GTK_MISC (label_directory), 0, 0.5);
+       GLADE_HOOKUP_OBJECT (top, label_directory, "label_directory");
 
        /* create a vertical pane for dirs list and clips list */
        vpaned = gtk_vpaned_new ();
        gtk_widget_show (vpaned);
+       gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
 
        /* create two scrolled window for lists areas */
        scrolledwindow[0] = gtk_scrolled_window_new (NULL, NULL);
@@ -704,7 +757,7 @@ create_pane_filedir( GtkWidget* top )
 
        gtk_widget_grab_focus (list[0]);
 
-       return vpaned;
+       return vbox;
 };
 
 static
@@ -756,15 +809,6 @@ GtkWidget*
 create_page_operate (void)
 {
   GtkWidget *page_clips;
-  GtkWidget *vbox8;
-  GtkWidget *hbox26;
-  GtkWidget *label_directory;
-  GtkWidget *optionmenu1;
-  GtkWidget *menu1;
-  GtkWidget *mode_0;
-  GtkWidget *mode_1;
-  GtkWidget *mode_2;
-  GtkWidget *mode_3;
   GtkWidget *hpaned1;
        GtkWidget *hpaned0;
        GtkWidget *frame1, *frame2;
@@ -795,48 +839,10 @@ create_page_operate (void)
 
        create_pane_status (frame2, page_clips);
 
-  vbox8 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_show (vbox8);
-       gtk_container_add (GTK_CONTAINER (frame1), vbox8);
-
-  hbox26 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_show (hbox26);
-  gtk_box_pack_start (GTK_BOX (vbox8), hbox26, FALSE, FALSE, 0);
-
-  label_directory = gtk_label_new (_("Disconnected"));
-  gtk_widget_show (label_directory);
-  gtk_box_pack_start (GTK_BOX (hbox26), label_directory, TRUE, TRUE, 0);
-  gtk_misc_set_alignment (GTK_MISC (label_directory), 0, 0.5);
-
-  optionmenu1 = gtk_option_menu_new ();
-  gtk_widget_show (optionmenu1);
-  gtk_box_pack_start (GTK_BOX (hbox26), optionmenu1, FALSE, FALSE, 0);
-  GTK_WIDGET_UNSET_FLAGS (optionmenu1, GTK_CAN_FOCUS);
-
-  menu1 = gtk_menu_new ();
-
-  mode_0 = gtk_menu_item_new_with_mnemonic (_("Play"));
-  gtk_widget_show (mode_0);
-  gtk_container_add (GTK_CONTAINER (menu1), mode_0);
-
-  mode_1 = gtk_menu_item_new_with_mnemonic (_("Load"));
-  gtk_widget_show (mode_1);
-  gtk_container_add (GTK_CONTAINER (menu1), mode_1);
-
-  mode_2 = gtk_menu_item_new_with_mnemonic (_("Append"));
-  gtk_widget_show (mode_2);
-  gtk_container_add (GTK_CONTAINER (menu1), mode_2);
-
-  mode_3 = gtk_menu_item_new_with_mnemonic (_("Insert"));
-  gtk_widget_show (mode_3);
-  gtk_container_add (GTK_CONTAINER (menu1), mode_3);
-
-  gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu1), menu1);
-
-  hpaned1 = gtk_hpaned_new ();
-  gtk_widget_show (hpaned1);
-  gtk_box_pack_start (GTK_BOX (vbox8), hpaned1, TRUE, TRUE, 0);
-  gtk_paned_set_position (GTK_PANED (hpaned1), 120);
+       hpaned1 = gtk_hpaned_new ();
+       gtk_widget_show (hpaned1);
+       gtk_container_add (GTK_CONTAINER (frame1), hpaned1);
+       gtk_paned_set_position (GTK_PANED (hpaned1), 120);
 
        gtk_paned_pack1 (GTK_PANED (hpaned1),
                create_pane_filedir(page_clips),
@@ -849,15 +855,6 @@ create_page_operate (void)
 
 
   /* Store pointers to all widgets, for use by lookup_widget(). */
-  GLADE_HOOKUP_OBJECT (page_clips, vbox8, "vbox8");
-  GLADE_HOOKUP_OBJECT (page_clips, hbox26, "hbox26");
-  GLADE_HOOKUP_OBJECT (page_clips, label_directory, "label_directory");
-  GLADE_HOOKUP_OBJECT (page_clips, optionmenu1, "optionmenu1");
-  GLADE_HOOKUP_OBJECT (page_clips, menu1, "menu1");
-  GLADE_HOOKUP_OBJECT (page_clips, mode_0, "mode_0");
-  GLADE_HOOKUP_OBJECT (page_clips, mode_1, "mode_1");
-  GLADE_HOOKUP_OBJECT (page_clips, mode_2, "mode_2");
-  GLADE_HOOKUP_OBJECT (page_clips, mode_3, "mode_3");
   GLADE_HOOKUP_OBJECT (page_clips, hpaned1, "hpaned1");
 
   return page_clips;