replace primary transport buttons
[rugen] / src / interface.c
index e8abeff..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);
-
-  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);
+       gtk_box_pack_start (GTK_BOX (vbox6),
+               create_block_buttons_transport(gdv1394d, 1),
+               FALSE, TRUE, 0);
 
-  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");