X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Finterface.c;h=02086d558caf76a1823ab6a2146e846e411a6b72;hb=00135851c96fd5e095b658e99bb72ad5c89b658c;hp=223a7a76651759bdc01262b7c89883dfccc775d0;hpb=d53453fd92464ac2140b7b0da1ffa8a6b1985329;p=rugen diff --git a/src/interface.c b/src/interface.c index 223a7a7..02086d5 100644 --- a/src/interface.c +++ b/src/interface.c @@ -26,104 +26,157 @@ #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 - { - 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"); + int i; + GtkWidget *hbox; + gchar name[32]; + const static struct + { + int type; + gchar* tooltip; + gchar* filename; + } buttons[] = + { + { + 2, + "Beginning of playlist", + "begin-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Start of clip", + "prev-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Rewind", + "rew-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Previous frame", + "prev-frame-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 1, + "Play", + "player_play_64x32_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 1, + "Pause", + "player_pause_32x32_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 1, + "Stop", + "player_stop_32x32_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Next frame", + "next-frame-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Fast forward", + "fwd-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Next clip", + "next-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "End of playlist", + "end-16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Loop On", + "loop_on_16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 2, + "Loop Off", + "loop_off_16x16_(Axialis_Team).png" /* Free Icons by Axialis Software http://www.axialis.com */ + }, + { + 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) +{ + 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 (""); + 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 (""); + 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,11 +206,9 @@ create_gdv1394d (void) GtkWidget *notebook1; GtkWidget *empty_notebook_page; GtkWidget *label40; - GtkWidget *hbox20; - GtkWidget *label46; - GtkWidget *label47; GtkWidget *vbox_trim; GtkWidget *statusbar; + GtkWidget *button_open_playlist, *button_save_playlist; gdv1394d = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (gdv1394d), _("Melted Client")); @@ -235,6 +286,32 @@ create_gdv1394d (void) gtk_toolbar_append_space (GTK_TOOLBAR (toolbar1)); + tmp_toolbar_icon = gtk_image_new_from_stock ("gtk-open", + gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1))); + button_open_playlist = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar1), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + "Open Playlist", + _("Open playlist"), NULL, + tmp_toolbar_icon, NULL, NULL); + gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild*) (g_list_last (GTK_TOOLBAR (toolbar1)->children)->data))->label), TRUE); + gtk_widget_show (button_open_playlist); + GLADE_HOOKUP_OBJECT (gdv1394d, button_open_playlist, "button_open_playlist"); + + tmp_toolbar_icon = gtk_image_new_from_stock ("gtk-save-as", + gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1))); + button_save_playlist = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar1), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + "Save Playlist", + _("Save playlist"), NULL, + tmp_toolbar_icon, NULL, NULL); + gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild*) (g_list_last (GTK_TOOLBAR (toolbar1)->children)->data))->label), TRUE); + gtk_widget_show (button_save_playlist); + GLADE_HOOKUP_OBJECT (gdv1394d, button_save_playlist, "button_save_playlist"); + + gtk_toolbar_append_space (GTK_TOOLBAR (toolbar1)); + // vseparator1 = gtk_vseparator_new (); // gtk_widget_show (vseparator1); // gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar1), vseparator1, NULL, NULL); @@ -276,26 +353,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 +397,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 +731,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); @@ -681,11 +761,11 @@ create_pane_filedir( GtkWidget* top ) GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); /* pane them */ - gtk_widget_set_size_request (vpaned, 400 , -1); gtk_paned_pack1 (GTK_PANED (vpaned), scrolledwindow[0], FALSE, FALSE); - gtk_widget_set_size_request (scrolledwindow[0], 150, -1); + gtk_widget_set_size_request (scrolledwindow[0], 250, -1); gtk_paned_pack2 (GTK_PANED (vpaned), scrolledwindow[1], TRUE, FALSE); - gtk_widget_set_size_request (scrolledwindow[1], 250, -1); + gtk_widget_set_size_request (scrolledwindow[1], 450, -1); + gtk_paned_set_position(GTK_PANED (vpaned), 250); /* list_dirs */ list[0] = gtk_tree_view_new (); @@ -704,7 +784,7 @@ create_pane_filedir( GtkWidget* top ) gtk_widget_grab_focus (list[0]); - return vpaned; + return vbox; }; static @@ -721,7 +801,7 @@ create_pane_playlist( GtkWidget* top ) scrolledwindow = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow); - gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 1, 0, 1, + gtk_table_attach (GTK_TABLE (table), scrolledwindow, 0, 1, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), (GtkAttachOptions) (GTK_EXPAND | GTK_SHRINK | GTK_FILL), 0, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), @@ -733,7 +813,7 @@ create_pane_playlist( GtkWidget* top ) alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment); - gtk_table_attach (GTK_TABLE (table), alignment, 0, 1, 1, 2, + gtk_table_attach (GTK_TABLE (table), alignment, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); @@ -756,15 +836,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 +866,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 +882,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;