From afc9d00750d37e8a1e5e0c35e3c11bab20b2282f Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Fri, 2 Apr 2010 20:29:08 +0200 Subject: added New playlist menu item and ctrl+n shortcut --- plugins/gtkui/callbacks.c | 14 +++++- plugins/gtkui/callbacks.h | 4 ++ plugins/gtkui/ddblistview.c | 100 ++++++++++++++++++++++-------------------- plugins/gtkui/ddbtabstrip.c | 36 +++------------ plugins/gtkui/deadbeef.glade | 28 ++++++++---- plugins/gtkui/gtkui.c | 28 ++++++++++++ plugins/gtkui/gtkui.h | 3 ++ plugins/gtkui/interface.c | 102 ++++++++++++++++++++++++------------------- 8 files changed, 183 insertions(+), 132 deletions(-) diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 02abba62..761bd930 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -292,7 +292,7 @@ on_mainwin_key_press_event (GtkWidget *widget, gpointer user_data) { - if (event->keyval == GDK_n) { + if (event->keyval == GDK_n && !(event->state&(GDK_SHIFT_MASK|GDK_CONTROL_MASK|GDK_MOD1_MASK))) { // button for that one is not in toolbar anymore, so handle it manually deadbeef->sendmessage (M_PLAYRANDOM, 0, 0, 0); } @@ -1064,3 +1064,15 @@ on_invert_selection1_activate (GtkMenuItem *menuitem, ddb_listview_refresh (pl, DDB_REFRESH_LIST | DDB_EXPOSE_LIST); } + +void +on_new_playlist1_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + int pl = gtkui_add_new_playlist (); + if (pl != -1) { + deadbeef->plt_set_curr (pl); + deadbeef->conf_set_int ("playlist.current", pl); + } +} + diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h index 02a324f0..530bed31 100644 --- a/plugins/gtkui/callbacks.h +++ b/plugins/gtkui/callbacks.h @@ -849,3 +849,7 @@ on_mmb_delete_playlist_clicked (GtkButton *button, void on_mmb_delete_playlist_toggled (GtkToggleButton *togglebutton, gpointer user_data); + +void +on_new_playlist1_activate (GtkMenuItem *menuitem, + gpointer user_data); diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index 845758a0..c8536adf 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -1693,66 +1693,70 @@ ddb_listview_handle_keypress (DdbListview *ps, int keyval, int state) { int cursor = prev; GtkWidget *range = ps->scrollbar; GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (range)); - if (keyval == GDK_Down) { - if (cursor < ps->binding->count () - 1) { - cursor++; - } - else { - gtk_range_set_value (GTK_RANGE (range), adj->upper); + + if (!(state & (GDK_CONTROL_MASK|GDK_MOD1_MASK))) { + if (keyval == GDK_Down) { + if (cursor < ps->binding->count () - 1) { + cursor++; + } + else { + gtk_range_set_value (GTK_RANGE (range), adj->upper); + } } - } - else if (keyval == GDK_Up) { - if (cursor > 0) { - cursor--; + else if (keyval == GDK_Up) { + if (cursor > 0) { + cursor--; + } + else { + gtk_range_set_value (GTK_RANGE (range), adj->lower); + if (cursor < 0 && ps->binding->count () > 0) { + cursor = 0; + } + } } - else { - gtk_range_set_value (GTK_RANGE (range), adj->lower); - if (cursor < 0 && ps->binding->count () > 0) { - cursor = 0; + else if (keyval == GDK_Page_Down) { + if (cursor < ps->binding->count () - 1) { + cursor += 10; + if (cursor >= ps->binding->count ()) { + cursor = ps->binding->count () - 1; + } + } + else { + gtk_range_set_value (GTK_RANGE (range), adj->upper); } } - } - else if (keyval == GDK_Page_Down) { - if (cursor < ps->binding->count () - 1) { - cursor += 10; - if (cursor >= ps->binding->count ()) { - cursor = ps->binding->count () - 1; + else if (keyval == GDK_Page_Up) { + if (cursor > 0) { + cursor -= 10; + if (cursor < 0) { + gtk_range_set_value (GTK_RANGE (range), adj->lower); + cursor = 0; + } + } + else { + if (cursor < 0 && ps->binding->count () > 0) { + cursor = 0; + } + gtk_range_set_value (GTK_RANGE (range), adj->lower); } } - else { + else if (keyval == GDK_End) { + cursor = ps->binding->count () - 1; gtk_range_set_value (GTK_RANGE (range), adj->upper); } - } - else if (keyval == GDK_Page_Up) { - if (cursor > 0) { - cursor -= 10; - if (cursor < 0) { - gtk_range_set_value (GTK_RANGE (range), adj->lower); - cursor = 0; - } + else if (keyval == GDK_Home) { + cursor = 0; + gtk_range_set_value (GTK_RANGE (range), adj->lower); + } + else if (keyval == GDK_Delete) { + ps->binding->delete_selected (); + cursor = ps->binding->cursor (); } else { - if (cursor < 0 && ps->binding->count () > 0) { - cursor = 0; - } - gtk_range_set_value (GTK_RANGE (range), adj->lower); + return 0; } } - else if (keyval == GDK_End) { - cursor = ps->binding->count () - 1; - gtk_range_set_value (GTK_RANGE (range), adj->upper); - } - else if (keyval == GDK_Home) { - cursor = 0; - gtk_range_set_value (GTK_RANGE (range), adj->lower); - } - else if (keyval == GDK_Delete) { - ps->binding->delete_selected (); - cursor = ps->binding->cursor (); - } - else { - return 0; - } + if (state & GDK_SHIFT_MASK) { if (cursor != prev) { int newscroll = ps->scrollpos; diff --git a/plugins/gtkui/ddbtabstrip.c b/plugins/gtkui/ddbtabstrip.c index 495b9e66..b9b17cd5 100644 --- a/plugins/gtkui/ddbtabstrip.c +++ b/plugins/gtkui/ddbtabstrip.c @@ -566,39 +566,17 @@ on_remove_playlist1_activate (GtkMenuItem *menuitem, } } - void on_add_new_playlist1_activate (GtkMenuItem *menuitem, gpointer user_data) { - int cnt = deadbeef->plt_get_count (); - int i; - int idx = 0; - for (;;) { - char name[100]; - if (!idx) { - strcpy (name, "New Playlist"); - } - else { - snprintf (name, sizeof (name), "New Playlist (%d)", idx); - } - for (i = 0; i < cnt; i++) { - char t[100]; - deadbeef->plt_get_title (i, t, sizeof (t)); - if (!strcasecmp (t, name)) { - break; - } - } - if (i == cnt) { - int playlist = deadbeef->plt_add (cnt, name); - deadbeef->plt_set_curr (playlist); - deadbeef->conf_set_int ("playlist.current", playlist); - DdbTabStrip *ts = DDB_TABSTRIP (lookup_widget (mainwin, "tabstrip")); - tabstrip_render (ts); - tabstrip_expose (ts, 0, 0, GTK_WIDGET (ts)->allocation.width, GTK_WIDGET (ts)->allocation.height); - break; - } - idx++; + int playlist = gtkui_add_new_playlist (); + if (playlist != -1) { + deadbeef->plt_set_curr (playlist); + deadbeef->conf_set_int ("playlist.current", playlist); + DdbTabStrip *ts = DDB_TABSTRIP (lookup_widget (mainwin, "tabstrip")); + tabstrip_render (ts); + tabstrip_expose (ts, 0, 0, GTK_WIDGET (ts)->allocation.width, GTK_WIDGET (ts)->allocation.height); } } diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index 8054826d..7afb12ef 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -58,7 +58,7 @@ - + True gtk-open 1 @@ -85,7 +85,7 @@ - + True gtk-add 1 @@ -106,7 +106,7 @@ - + True gtk-add 1 @@ -127,7 +127,7 @@ - + True gtk-add 1 @@ -155,6 +155,16 @@ + + + True + New playlist + True + + + + + True @@ -197,7 +207,7 @@ - + True gtk-quit 1 @@ -231,7 +241,7 @@ - + True gtk-clear 1 @@ -289,7 +299,7 @@ - + True gtk-remove 1 @@ -548,7 +558,7 @@ - + True gtk-help 1 @@ -608,7 +618,7 @@ - + True gtk-about 1 diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index 12afe93d..d08af942 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -667,6 +667,34 @@ redraw_seekbar_cb (gpointer nothing) { return FALSE; } +int +gtkui_add_new_playlist (void) { + int cnt = deadbeef->plt_get_count (); + int i; + int idx = 0; + for (;;) { + char name[100]; + if (!idx) { + strcpy (name, "New Playlist"); + } + else { + snprintf (name, sizeof (name), "New Playlist (%d)", idx); + } + for (i = 0; i < cnt; i++) { + char t[100]; + deadbeef->plt_get_title (i, t, sizeof (t)); + if (!strcasecmp (t, name)) { + break; + } + } + if (i == cnt) { + return deadbeef->plt_add (cnt, name); + } + idx++; + } + return -1; +} + static int gtk_initialized = 0; void diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h index 6195e6ec..a128cb3a 100644 --- a/plugins/gtkui/gtkui.h +++ b/plugins/gtkui/gtkui.h @@ -89,4 +89,7 @@ search_refresh (void); int gtkui_listview_theming_disabled (void); +int +gtkui_add_new_playlist (void); + #endif diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index f8047b6f..6f06eb46 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -35,33 +35,34 @@ create_mainwin (void) GtkWidget *menuitem1; GtkWidget *menuitem1_menu; GtkWidget *open; - GtkWidget *image360; + GtkWidget *image368; GtkWidget *separator2; GtkWidget *add_files; - GtkWidget *image361; + GtkWidget *image369; GtkWidget *add_folders; - GtkWidget *image362; + GtkWidget *image370; GtkWidget *add_audio_cd; - GtkWidget *image363; + GtkWidget *image371; GtkWidget *add_location1; GtkWidget *separatormenuitem1; + GtkWidget *new_playlist1; GtkWidget *playlist_load; GtkWidget *playlist_save; GtkWidget *playlist_save_as; GtkWidget *separator8; GtkWidget *quit; - GtkWidget *image364; + GtkWidget *image372; GtkWidget *edit1; GtkWidget *edit1_menu; GtkWidget *clear1; - GtkWidget *image365; + GtkWidget *image373; GtkWidget *select_all1; GtkWidget *deselect_all1; GtkWidget *invert_selection1; GtkWidget *selection1; GtkWidget *selection1_menu; GtkWidget *remove1; - GtkWidget *image366; + GtkWidget *image374; GtkWidget *crop1; GtkWidget *find1; GtkWidget *separator5; @@ -92,14 +93,14 @@ create_mainwin (void) GtkWidget *menuitem4; GtkWidget *menuitem4_menu; GtkWidget *help1; - GtkWidget *image367; + GtkWidget *image375; GtkWidget *changelog1; GtkWidget *separator10; GtkWidget *gpl1; GtkWidget *lgpl1; GtkWidget *separator9; GtkWidget *about1; - GtkWidget *image368; + GtkWidget *image376; GtkWidget *hbox2; GtkWidget *hbox3; GtkWidget *stopbtn; @@ -149,9 +150,9 @@ create_mainwin (void) GDK_O, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image360 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); - gtk_widget_show (image360); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open), image360); + image368 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); + gtk_widget_show (image368); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open), image368); separator2 = gtk_separator_menu_item_new (); gtk_widget_show (separator2); @@ -162,25 +163,25 @@ create_mainwin (void) gtk_widget_show (add_files); gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_files); - image361 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image361); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_files), image361); + image369 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image369); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_files), image369); add_folders = gtk_image_menu_item_new_with_mnemonic ("Add folder(s)"); gtk_widget_show (add_folders); gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_folders); - image362 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image362); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_folders), image362); + image370 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image370); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_folders), image370); add_audio_cd = gtk_image_menu_item_new_with_mnemonic ("Add Audio CD"); gtk_widget_show (add_audio_cd); gtk_container_add (GTK_CONTAINER (menuitem1_menu), add_audio_cd); - image363 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image363); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_audio_cd), image363); + image371 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image371); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (add_audio_cd), image371); add_location1 = gtk_menu_item_new_with_mnemonic ("Add location"); gtk_widget_show (add_location1); @@ -191,6 +192,13 @@ create_mainwin (void) gtk_container_add (GTK_CONTAINER (menuitem1_menu), separatormenuitem1); gtk_widget_set_sensitive (separatormenuitem1, FALSE); + new_playlist1 = gtk_menu_item_new_with_mnemonic ("New playlist"); + gtk_widget_show (new_playlist1); + gtk_container_add (GTK_CONTAINER (menuitem1_menu), new_playlist1); + gtk_widget_add_accelerator (new_playlist1, "activate", accel_group, + GDK_n, (GdkModifierType) GDK_CONTROL_MASK, + GTK_ACCEL_VISIBLE); + playlist_load = gtk_menu_item_new_with_mnemonic ("Load playlist"); gtk_widget_show (playlist_load); gtk_container_add (GTK_CONTAINER (menuitem1_menu), playlist_load); @@ -215,9 +223,9 @@ create_mainwin (void) GDK_Q, (GdkModifierType) GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image364 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU); - gtk_widget_show (image364); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image364); + image372 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU); + gtk_widget_show (image372); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (quit), image372); edit1 = gtk_menu_item_new_with_mnemonic ("_Edit"); gtk_widget_show (edit1); @@ -230,9 +238,9 @@ create_mainwin (void) gtk_widget_show (clear1); gtk_container_add (GTK_CONTAINER (edit1_menu), clear1); - image365 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU); - gtk_widget_show (image365); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (clear1), image365); + image373 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU); + gtk_widget_show (image373); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (clear1), image373); select_all1 = gtk_menu_item_new_with_mnemonic ("Select all"); gtk_widget_show (select_all1); @@ -260,9 +268,9 @@ create_mainwin (void) gtk_widget_show (remove1); gtk_container_add (GTK_CONTAINER (selection1_menu), remove1); - image366 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU); - gtk_widget_show (image366); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove1), image366); + image374 = gtk_image_new_from_stock ("gtk-remove", GTK_ICON_SIZE_MENU); + gtk_widget_show (image374); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (remove1), image374); crop1 = gtk_menu_item_new_with_mnemonic ("Crop"); gtk_widget_show (crop1); @@ -391,9 +399,9 @@ create_mainwin (void) gtk_widget_show (help1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), help1); - image367 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); - gtk_widget_show (image367); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), image367); + image375 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); + gtk_widget_show (image375); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (help1), image375); changelog1 = gtk_menu_item_new_with_mnemonic ("_ChangeLog"); gtk_widget_show (changelog1); @@ -421,9 +429,9 @@ create_mainwin (void) gtk_widget_show (about1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), about1); - image368 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); - gtk_widget_show (image368); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about1), image368); + image376 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_MENU); + gtk_widget_show (image376); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (about1), image376); hbox2 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox2); @@ -569,6 +577,9 @@ create_mainwin (void) g_signal_connect ((gpointer) add_location1, "activate", G_CALLBACK (on_add_location_activate), NULL); + g_signal_connect ((gpointer) new_playlist1, "activate", + G_CALLBACK (on_new_playlist1_activate), + NULL); g_signal_connect ((gpointer) playlist_load, "activate", G_CALLBACK (on_playlist_load_activate), NULL); @@ -697,33 +708,34 @@ create_mainwin (void) GLADE_HOOKUP_OBJECT (mainwin, menuitem1, "menuitem1"); GLADE_HOOKUP_OBJECT (mainwin, menuitem1_menu, "menuitem1_menu"); GLADE_HOOKUP_OBJECT (mainwin, open, "open"); - GLADE_HOOKUP_OBJECT (mainwin, image360, "image360"); + GLADE_HOOKUP_OBJECT (mainwin, image368, "image368"); GLADE_HOOKUP_OBJECT (mainwin, separator2, "separator2"); GLADE_HOOKUP_OBJECT (mainwin, add_files, "add_files"); - GLADE_HOOKUP_OBJECT (mainwin, image361, "image361"); + GLADE_HOOKUP_OBJECT (mainwin, image369, "image369"); GLADE_HOOKUP_OBJECT (mainwin, add_folders, "add_folders"); - GLADE_HOOKUP_OBJECT (mainwin, image362, "image362"); + GLADE_HOOKUP_OBJECT (mainwin, image370, "image370"); GLADE_HOOKUP_OBJECT (mainwin, add_audio_cd, "add_audio_cd"); - GLADE_HOOKUP_OBJECT (mainwin, image363, "image363"); + GLADE_HOOKUP_OBJECT (mainwin, image371, "image371"); GLADE_HOOKUP_OBJECT (mainwin, add_location1, "add_location1"); GLADE_HOOKUP_OBJECT (mainwin, separatormenuitem1, "separatormenuitem1"); + GLADE_HOOKUP_OBJECT (mainwin, new_playlist1, "new_playlist1"); GLADE_HOOKUP_OBJECT (mainwin, playlist_load, "playlist_load"); GLADE_HOOKUP_OBJECT (mainwin, playlist_save, "playlist_save"); GLADE_HOOKUP_OBJECT (mainwin, playlist_save_as, "playlist_save_as"); GLADE_HOOKUP_OBJECT (mainwin, separator8, "separator8"); GLADE_HOOKUP_OBJECT (mainwin, quit, "quit"); - GLADE_HOOKUP_OBJECT (mainwin, image364, "image364"); + GLADE_HOOKUP_OBJECT (mainwin, image372, "image372"); GLADE_HOOKUP_OBJECT (mainwin, edit1, "edit1"); GLADE_HOOKUP_OBJECT (mainwin, edit1_menu, "edit1_menu"); GLADE_HOOKUP_OBJECT (mainwin, clear1, "clear1"); - GLADE_HOOKUP_OBJECT (mainwin, image365, "image365"); + GLADE_HOOKUP_OBJECT (mainwin, image373, "image373"); GLADE_HOOKUP_OBJECT (mainwin, select_all1, "select_all1"); GLADE_HOOKUP_OBJECT (mainwin, deselect_all1, "deselect_all1"); GLADE_HOOKUP_OBJECT (mainwin, invert_selection1, "invert_selection1"); GLADE_HOOKUP_OBJECT (mainwin, selection1, "selection1"); GLADE_HOOKUP_OBJECT (mainwin, selection1_menu, "selection1_menu"); GLADE_HOOKUP_OBJECT (mainwin, remove1, "remove1"); - GLADE_HOOKUP_OBJECT (mainwin, image366, "image366"); + GLADE_HOOKUP_OBJECT (mainwin, image374, "image374"); GLADE_HOOKUP_OBJECT (mainwin, crop1, "crop1"); GLADE_HOOKUP_OBJECT (mainwin, find1, "find1"); GLADE_HOOKUP_OBJECT (mainwin, separator5, "separator5"); @@ -752,14 +764,14 @@ create_mainwin (void) GLADE_HOOKUP_OBJECT (mainwin, menuitem4, "menuitem4"); GLADE_HOOKUP_OBJECT (mainwin, menuitem4_menu, "menuitem4_menu"); GLADE_HOOKUP_OBJECT (mainwin, help1, "help1"); - GLADE_HOOKUP_OBJECT (mainwin, image367, "image367"); + GLADE_HOOKUP_OBJECT (mainwin, image375, "image375"); GLADE_HOOKUP_OBJECT (mainwin, changelog1, "changelog1"); GLADE_HOOKUP_OBJECT (mainwin, separator10, "separator10"); GLADE_HOOKUP_OBJECT (mainwin, gpl1, "gpl1"); GLADE_HOOKUP_OBJECT (mainwin, lgpl1, "lgpl1"); GLADE_HOOKUP_OBJECT (mainwin, separator9, "separator9"); GLADE_HOOKUP_OBJECT (mainwin, about1, "about1"); - GLADE_HOOKUP_OBJECT (mainwin, image368, "image368"); + GLADE_HOOKUP_OBJECT (mainwin, image376, "image376"); GLADE_HOOKUP_OBJECT (mainwin, hbox2, "hbox2"); GLADE_HOOKUP_OBJECT (mainwin, hbox3, "hbox3"); GLADE_HOOKUP_OBJECT (mainwin, stopbtn, "stopbtn"); -- cgit v1.2.3