summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/callbacks.c1
-rw-r--r--plugins/gtkui/callbacks.h24
-rw-r--r--plugins/gtkui/deadbeef.glade203
-rw-r--r--plugins/gtkui/gtkui.c2
-rw-r--r--plugins/gtkui/interface.c145
-rw-r--r--plugins/gtkui/interface.h2
-rw-r--r--plugins/gtkui/tabs.c121
7 files changed, 475 insertions, 23 deletions
diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c
index d68f5e19..09a40adf 100644
--- a/plugins/gtkui/callbacks.c
+++ b/plugins/gtkui/callbacks.c
@@ -2303,3 +2303,4 @@ on_trackproperties_delete_event (GtkWidget *widget,
trackproperties = NULL;
return FALSE;
}
+
diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h
index 5070d73e..63c4990b 100644
--- a/plugins/gtkui/callbacks.h
+++ b/plugins/gtkui/callbacks.h
@@ -836,3 +836,27 @@ gboolean
on_tabbar_motion_notify_event (GtkWidget *widget,
GdkEventMotion *event,
gpointer user_data);
+
+void
+on_rename_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_remove_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_add_new_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_load_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_save_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
+
+void
+on_save_all_playlists1_activate (GtkMenuItem *menuitem,
+ gpointer user_data);
diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade
index 0bc0cad0..21d84934 100644
--- a/plugins/gtkui/deadbeef.glade
+++ b/plugins/gtkui/deadbeef.glade
@@ -797,7 +797,7 @@
<widget class="GtkDrawingArea" id="tabbar">
<property name="height_request">24</property>
<property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="button_press_event" handler="on_tabbar_button_press_event" last_modification_time="Sun, 07 Feb 2010 19:07:32 GMT"/>
<signal name="button_release_event" handler="on_tabbar_button_release_event" last_modification_time="Sun, 07 Feb 2010 19:07:35 GMT"/>
<signal name="configure_event" handler="on_tabbar_configure_event" last_modification_time="Sun, 07 Feb 2010 19:07:41 GMT"/>
@@ -2090,7 +2090,7 @@
<widget class="GtkDialog" id="editcolumndlg">
<property name="border_width">12</property>
<property name="visible">True</property>
- <property name="title" translatable="yes">dialog1</property>
+ <property name="title" translatable="yes">editcolumndlg</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">True</property>
@@ -3450,4 +3450,203 @@ SOCKS5_HOSTNAME</property>
</child>
</widget>
+<widget class="GtkDialog" id="editplaylistdlg">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">editplaylistdlg</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">True</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox3">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancelbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-6</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="okbutton2">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-5</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox15">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox33">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+
+ <child>
+ <widget class="GtkLabel" id="label40">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Title:</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">•</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+<widget class="GtkMenu" id="plmenu">
+
+ <child>
+ <widget class="GtkMenuItem" id="rename_playlist1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Rename Playlist</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_rename_playlist1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="remove_playlist1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Remove Playlist</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_remove_playlist1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="add_new_playlist1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Add New Playlist</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_add_new_playlist1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator11">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="load_playlist1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Load Playlist</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_load_playlist1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="save_playlist1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Save Playlist</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_playlist1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="save_all_playlists1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Save All Playlists</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_all_playlists1_activate" last_modification_time="Tue, 09 Feb 2010 17:43:59 GMT"/>
+ </widget>
+ </child>
+</widget>
+
</glade-interface>
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index 0ac4ccf9..2c072c63 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -326,6 +326,8 @@ playlistswitch_cb (gpointer none) {
playlist_refresh ();
search_refresh ();
tabbar_draw (lookup_widget (mainwin, "tabbar"));
+ //GtkWidget *widget = lookup_widget (mainwin, "tabbar");
+ //gdk_window_invalidate_rect (widget->window, NULL, FALSE);
return FALSE;
}
diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c
index 94d115ac..a3f1e341 100644
--- a/plugins/gtkui/interface.c
+++ b/plugins/gtkui/interface.c
@@ -506,7 +506,7 @@ create_mainwin (void)
gtk_widget_show (tabbar);
gtk_box_pack_start (GTK_BOX (vbox1), tabbar, FALSE, TRUE, 0);
gtk_widget_set_size_request (tabbar, -1, 24);
- gtk_widget_set_events (tabbar, GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
+ gtk_widget_set_events (tabbar, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);
frame1 = gtk_frame_new (NULL);
gtk_widget_show (frame1);
@@ -1621,7 +1621,7 @@ create_editcolumndlg (void)
editcolumndlg = gtk_dialog_new ();
gtk_container_set_border_width (GTK_CONTAINER (editcolumndlg), 12);
- gtk_window_set_title (GTK_WINDOW (editcolumndlg), "dialog1");
+ gtk_window_set_title (GTK_WINDOW (editcolumndlg), "editcolumndlg");
gtk_window_set_modal (GTK_WINDOW (editcolumndlg), TRUE);
gtk_window_set_type_hint (GTK_WINDOW (editcolumndlg), GDK_WINDOW_TYPE_HINT_DIALOG);
@@ -2187,3 +2187,144 @@ create_prefwin (void)
return prefwin;
}
+GtkWidget*
+create_editplaylistdlg (void)
+{
+ GtkWidget *editplaylistdlg;
+ GtkWidget *dialog_vbox3;
+ GtkWidget *vbox15;
+ GtkWidget *hbox33;
+ GtkWidget *label40;
+ GtkWidget *title;
+ GtkWidget *dialog_action_area3;
+ GtkWidget *cancelbutton2;
+ GtkWidget *okbutton2;
+
+ editplaylistdlg = gtk_dialog_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (editplaylistdlg), 12);
+ gtk_window_set_title (GTK_WINDOW (editplaylistdlg), "editplaylistdlg");
+ gtk_window_set_type_hint (GTK_WINDOW (editplaylistdlg), GDK_WINDOW_TYPE_HINT_DIALOG);
+
+ dialog_vbox3 = GTK_DIALOG (editplaylistdlg)->vbox;
+ gtk_widget_show (dialog_vbox3);
+
+ vbox15 = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox15);
+ gtk_box_pack_start (GTK_BOX (dialog_vbox3), vbox15, TRUE, TRUE, 0);
+
+ hbox33 = gtk_hbox_new (FALSE, 8);
+ gtk_widget_show (hbox33);
+ gtk_box_pack_start (GTK_BOX (vbox15), hbox33, TRUE, TRUE, 0);
+
+ label40 = gtk_label_new ("Title:");
+ gtk_widget_show (label40);
+ gtk_box_pack_start (GTK_BOX (hbox33), label40, FALSE, FALSE, 0);
+
+ title = gtk_entry_new ();
+ gtk_widget_show (title);
+ gtk_box_pack_start (GTK_BOX (hbox33), title, TRUE, TRUE, 0);
+ gtk_entry_set_invisible_char (GTK_ENTRY (title), 8226);
+
+ dialog_action_area3 = GTK_DIALOG (editplaylistdlg)->action_area;
+ gtk_widget_show (dialog_action_area3);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_END);
+
+ cancelbutton2 = gtk_button_new_from_stock ("gtk-cancel");
+ gtk_widget_show (cancelbutton2);
+ gtk_dialog_add_action_widget (GTK_DIALOG (editplaylistdlg), cancelbutton2, GTK_RESPONSE_CANCEL);
+ GTK_WIDGET_SET_FLAGS (cancelbutton2, GTK_CAN_DEFAULT);
+
+ okbutton2 = gtk_button_new_from_stock ("gtk-ok");
+ gtk_widget_show (okbutton2);
+ gtk_dialog_add_action_widget (GTK_DIALOG (editplaylistdlg), okbutton2, GTK_RESPONSE_OK);
+ GTK_WIDGET_SET_FLAGS (okbutton2, GTK_CAN_DEFAULT);
+
+ /* Store pointers to all widgets, for use by lookup_widget(). */
+ GLADE_HOOKUP_OBJECT_NO_REF (editplaylistdlg, editplaylistdlg, "editplaylistdlg");
+ GLADE_HOOKUP_OBJECT_NO_REF (editplaylistdlg, dialog_vbox3, "dialog_vbox3");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, vbox15, "vbox15");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, hbox33, "hbox33");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, label40, "label40");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, title, "title");
+ GLADE_HOOKUP_OBJECT_NO_REF (editplaylistdlg, dialog_action_area3, "dialog_action_area3");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, cancelbutton2, "cancelbutton2");
+ GLADE_HOOKUP_OBJECT (editplaylistdlg, okbutton2, "okbutton2");
+
+ return editplaylistdlg;
+}
+
+GtkWidget*
+create_plmenu (void)
+{
+ GtkWidget *plmenu;
+ GtkWidget *rename_playlist1;
+ GtkWidget *remove_playlist1;
+ GtkWidget *add_new_playlist1;
+ GtkWidget *separator11;
+ GtkWidget *load_playlist1;
+ GtkWidget *save_playlist1;
+ GtkWidget *save_all_playlists1;
+
+ plmenu = gtk_menu_new ();
+
+ rename_playlist1 = gtk_menu_item_new_with_mnemonic ("Rename Playlist");
+ gtk_widget_show (rename_playlist1);
+ gtk_container_add (GTK_CONTAINER (plmenu), rename_playlist1);
+
+ remove_playlist1 = gtk_menu_item_new_with_mnemonic ("Remove Playlist");
+ gtk_widget_show (remove_playlist1);
+ gtk_container_add (GTK_CONTAINER (plmenu), remove_playlist1);
+
+ add_new_playlist1 = gtk_menu_item_new_with_mnemonic ("Add New Playlist");
+ gtk_widget_show (add_new_playlist1);
+ gtk_container_add (GTK_CONTAINER (plmenu), add_new_playlist1);
+
+ separator11 = gtk_separator_menu_item_new ();
+ gtk_widget_show (separator11);
+ gtk_container_add (GTK_CONTAINER (plmenu), separator11);
+ gtk_widget_set_sensitive (separator11, FALSE);
+
+ load_playlist1 = gtk_menu_item_new_with_mnemonic ("Load Playlist");
+ gtk_widget_show (load_playlist1);
+ gtk_container_add (GTK_CONTAINER (plmenu), load_playlist1);
+
+ save_playlist1 = gtk_menu_item_new_with_mnemonic ("Save Playlist");
+ gtk_widget_show (save_playlist1);
+ gtk_container_add (GTK_CONTAINER (plmenu), save_playlist1);
+
+ save_all_playlists1 = gtk_menu_item_new_with_mnemonic ("Save All Playlists");
+ gtk_widget_show (save_all_playlists1);
+ gtk_container_add (GTK_CONTAINER (plmenu), save_all_playlists1);
+
+ g_signal_connect ((gpointer) rename_playlist1, "activate",
+ G_CALLBACK (on_rename_playlist1_activate),
+ NULL);
+ g_signal_connect ((gpointer) remove_playlist1, "activate",
+ G_CALLBACK (on_remove_playlist1_activate),
+ NULL);
+ g_signal_connect ((gpointer) add_new_playlist1, "activate",
+ G_CALLBACK (on_add_new_playlist1_activate),
+ NULL);
+ g_signal_connect ((gpointer) load_playlist1, "activate",
+ G_CALLBACK (on_load_playlist1_activate),
+ NULL);
+ g_signal_connect ((gpointer) save_playlist1, "activate",
+ G_CALLBACK (on_save_playlist1_activate),
+ NULL);
+ g_signal_connect ((gpointer) save_all_playlists1, "activate",
+ G_CALLBACK (on_save_all_playlists1_activate),
+ NULL);
+
+ /* Store pointers to all widgets, for use by lookup_widget(). */
+ GLADE_HOOKUP_OBJECT_NO_REF (plmenu, plmenu, "plmenu");
+ GLADE_HOOKUP_OBJECT (plmenu, rename_playlist1, "rename_playlist1");
+ GLADE_HOOKUP_OBJECT (plmenu, remove_playlist1, "remove_playlist1");
+ GLADE_HOOKUP_OBJECT (plmenu, add_new_playlist1, "add_new_playlist1");
+ GLADE_HOOKUP_OBJECT (plmenu, separator11, "separator11");
+ GLADE_HOOKUP_OBJECT (plmenu, load_playlist1, "load_playlist1");
+ GLADE_HOOKUP_OBJECT (plmenu, save_playlist1, "save_playlist1");
+ GLADE_HOOKUP_OBJECT (plmenu, save_all_playlists1, "save_all_playlists1");
+
+ return plmenu;
+}
+
diff --git a/plugins/gtkui/interface.h b/plugins/gtkui/interface.h
index 0cac3e09..78c94da9 100644
--- a/plugins/gtkui/interface.h
+++ b/plugins/gtkui/interface.h
@@ -12,3 +12,5 @@ GtkWidget* create_addlocation (void);
GtkWidget* create_trackproperties (void);
GtkWidget* create_editcolumndlg (void);
GtkWidget* create_prefwin (void);
+GtkWidget* create_editplaylistdlg (void);
+GtkWidget* create_plmenu (void);
diff --git a/plugins/gtkui/tabs.c b/plugins/gtkui/tabs.c
index d302d582..58692139 100644
--- a/plugins/gtkui/tabs.c
+++ b/plugins/gtkui/tabs.c
@@ -30,6 +30,7 @@
static int margin_size = 10;
static int tab_dragging = -1;
static int tab_movepos;
+static int tab_clicked = -1;
void
tabbar_draw (GtkWidget *widget) {
@@ -128,34 +129,45 @@ tabbar_draw (GtkWidget *widget) {
draw_end ();
}
+static int
+get_tab_under_cursor (int x) {
+ int idx;
+ int cnt = deadbeef->plt_get_count ();
+ int fw = 0;
+ int tab_selected = deadbeef->plt_get_curr ();
+ for (idx = 0; idx < cnt; idx++) {
+ const char *title = deadbeef->plt_get_title (idx);
+ int w = 0;
+ int h = 0;
+ draw_get_text_extents (title, strlen (title), &w, &h);
+ w += margin_size + 10;
+ if (tab_selected == idx) {
+ w += margin_size;
+ }
+ fw += w;
+ if (fw > x) {
+ return idx;
+ }
+ }
+ return -1;
+}
+
gboolean
on_tabbar_button_press_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
+ tab_clicked = get_tab_under_cursor (event->x);
if (event->button == 1)
{
- int idx;
- int cnt = deadbeef->plt_get_count ();
- int fw = 0;
- int tab_selected = deadbeef->plt_get_curr ();
- for (idx = 0; idx < cnt; idx++) {
- const char *title = deadbeef->plt_get_title (idx);
- int w = 0;
- int h = 0;
- draw_get_text_extents (title, strlen (title), &w, &h);
- w += margin_size + 10;
- if (tab_selected == idx) {
- w += margin_size;
- }
- fw += w;
- if (fw > event->x) {
- deadbeef->plt_set_curr (idx);
-// tabbar_draw (widget);
- break;
- }
+ if (tab_clicked != -1) {
+ deadbeef->plt_set_curr (tab_clicked);
}
}
+ else if (event->button == 3) {
+ GtkWidget *menu = create_plmenu ();
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, widget, 0, gtk_get_current_event_time());
+ }
return FALSE;
}
@@ -198,3 +210,74 @@ on_tabbar_motion_notify_event (GtkWidget *widget,
return FALSE;
}
+void
+on_rename_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_remove_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ if (tab_clicked != -1) {
+ deadbeef->plt_remove (tab_clicked);
+ }
+}
+
+
+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++) {
+ const char *t = deadbeef->plt_get_title (i);
+ if (!strcasecmp (t, name)) {
+ break;
+ }
+ }
+ if (i == cnt) {
+ deadbeef->plt_add (cnt, name);
+ break;
+ }
+ idx++;
+ }
+}
+
+
+void
+on_load_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_save_playlist1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+
+
+void
+on_save_all_playlists1_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+
+}
+