summaryrefslogtreecommitdiff
path: root/plugins/gtkui
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui')
-rw-r--r--plugins/gtkui/callbacks.h5
-rw-r--r--plugins/gtkui/deadbeef.glade24
-rw-r--r--plugins/gtkui/fileman.c21
-rw-r--r--plugins/gtkui/interface.c9
-rw-r--r--plugins/gtkui/prefwin.c13
5 files changed, 68 insertions, 4 deletions
diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h
index 7462abd2..5693dcbe 100644
--- a/plugins/gtkui/callbacks.h
+++ b/plugins/gtkui/callbacks.h
@@ -1041,3 +1041,8 @@ on_dsp_up_clicked (GtkButton *button,
void
on_dsp_down_clicked (GtkButton *button,
gpointer user_data);
+
+void
+on_auto_name_playlist_from_folder_toggled
+ (GtkToggleButton *togglebutton,
+ gpointer user_data);
diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade
index 2ac6580a..71cb56b4 100644
--- a/plugins/gtkui/deadbeef.glade
+++ b/plugins/gtkui/deadbeef.glade
@@ -2952,6 +2952,26 @@ Album</property>
</child>
<child>
+ <widget class="GtkCheckButton" id="auto_name_playlist_from_folder">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Auto-name playlists when adding a single folder</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_auto_name_playlist_from_folder_toggled" last_modification_time="Tue, 04 Jan 2011 20:49:15 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
<widget class="GtkHBox" id="hbox64">
<property name="visible">True</property>
<property name="homogeneous">False</property>
@@ -3066,10 +3086,6 @@ Album</property>
<property name="fill">False</property>
</packing>
</child>
-
- <child>
- <placeholder/>
- </child>
</widget>
<packing>
<property name="tab_expand">False</property>
diff --git a/plugins/gtkui/fileman.c b/plugins/gtkui/fileman.c
index a41f6000..874ffb2c 100644
--- a/plugins/gtkui/fileman.c
+++ b/plugins/gtkui/fileman.c
@@ -2,6 +2,7 @@
#include <gtk/gtk.h>
#include <stdlib.h>
#include <ctype.h>
+#include <string.h>
#include "gtkui.h"
#include "ddblistview.h"
#include "progress.h"
@@ -23,6 +24,25 @@ gtkpl_adddir_cb (gpointer data, gpointer userdata) {
void
gtkpl_add_dirs (GSList *lst) {
+ if (g_slist_length (lst) == 1
+ && deadbeef->conf_get_int ("gtkui.name_playlist_from_folder", 0)) {
+ deadbeef->plt_lock ();
+ int plt = deadbeef->plt_get_curr ();
+ if (plt != -1) {
+ char t[1000];
+ if (!deadbeef->plt_get_title (plt, t, sizeof (t))) {
+ char *def = _("New Playlist");
+ if (!strncmp (t, def, strlen (def))) {
+ const char *folder = strrchr ((char*)lst->data, '/');
+ if (!folder) {
+ folder = lst->data;
+ }
+ deadbeef->plt_set_title (plt, folder+1);
+ }
+ }
+ }
+ deadbeef->plt_unlock ();
+ }
g_idle_add (gtkui_progress_show_idle, NULL);
g_slist_foreach(lst, gtkpl_adddir_cb, NULL);
g_slist_free (lst);
@@ -82,6 +102,7 @@ void
gtkui_open_files (struct _GSList *lst) {
deadbeef->pl_clear ();
playlist_refresh ();
+
intptr_t tid = deadbeef->thread_start (open_files_worker, lst);
deadbeef->thread_detach (tid);
}
diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c
index f30221d2..c811718d 100644
--- a/plugins/gtkui/interface.c
+++ b/plugins/gtkui/interface.c
@@ -1637,6 +1637,7 @@ create_prefwin (void)
GtkWidget *hide_tray_icon;
GtkWidget *embolden_current;
GtkWidget *hide_delete_from_disk;
+ GtkWidget *auto_name_playlist_from_folder;
GtkWidget *hbox64;
GtkWidget *label101;
GtkWidget *titlebar_format_playing;
@@ -1941,6 +1942,10 @@ create_prefwin (void)
gtk_widget_show (hide_delete_from_disk);
gtk_box_pack_start (GTK_BOX (vbox9), hide_delete_from_disk, FALSE, FALSE, 0);
+ auto_name_playlist_from_folder = gtk_check_button_new_with_mnemonic (_("Auto-name playlists when adding a single folder"));
+ gtk_widget_show (auto_name_playlist_from_folder);
+ gtk_box_pack_start (GTK_BOX (vbox9), auto_name_playlist_from_folder, FALSE, FALSE, 0);
+
hbox64 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox64);
gtk_box_pack_start (GTK_BOX (vbox9), hbox64, FALSE, FALSE, 0);
@@ -2626,6 +2631,9 @@ create_prefwin (void)
g_signal_connect ((gpointer) hide_delete_from_disk, "toggled",
G_CALLBACK (on_hide_delete_from_disk_toggled),
NULL);
+ g_signal_connect ((gpointer) auto_name_playlist_from_folder, "toggled",
+ G_CALLBACK (on_auto_name_playlist_from_folder_toggled),
+ NULL);
g_signal_connect ((gpointer) titlebar_format_playing, "changed",
G_CALLBACK (on_titlebar_format_playing_changed),
NULL);
@@ -2790,6 +2798,7 @@ create_prefwin (void)
GLADE_HOOKUP_OBJECT (prefwin, hide_tray_icon, "hide_tray_icon");
GLADE_HOOKUP_OBJECT (prefwin, embolden_current, "embolden_current");
GLADE_HOOKUP_OBJECT (prefwin, hide_delete_from_disk, "hide_delete_from_disk");
+ GLADE_HOOKUP_OBJECT (prefwin, auto_name_playlist_from_folder, "auto_name_playlist_from_folder");
GLADE_HOOKUP_OBJECT (prefwin, hbox64, "hbox64");
GLADE_HOOKUP_OBJECT (prefwin, label101, "label101");
GLADE_HOOKUP_OBJECT (prefwin, titlebar_format_playing, "titlebar_format_playing");
diff --git a/plugins/gtkui/prefwin.c b/plugins/gtkui/prefwin.c
index 978019aa..b27af570 100644
--- a/plugins/gtkui/prefwin.c
+++ b/plugins/gtkui/prefwin.c
@@ -506,6 +506,9 @@ on_preferences_activate (GtkMenuItem *menuitem,
// hide_delete_from_disk
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (w, "hide_delete_from_disk")), deadbeef->conf_get_int ("gtkui.hide_remove_from_disk", 0));
+ // auto-rename playlist from folder name
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (lookup_widget (w, "auto_name_playlist_from_folder")), deadbeef->conf_get_int ("gtkui.name_playlist_from_folder", 0));
+
// titlebar text
gtk_entry_set_text (GTK_ENTRY (lookup_widget (w, "titlebar_format_playing")), deadbeef->conf_get_str ("gtkui.titlebar_playing", "%a - %t - DeaDBeeF-%V"));
gtk_entry_set_text (GTK_ENTRY (lookup_widget (w, "titlebar_format_stopped")), deadbeef->conf_get_str ("gtkui.titlebar_stopped", "DeaDBeeF-%V"));
@@ -1314,3 +1317,13 @@ on_resume_last_session_toggled (GtkToggleButton *togglebutton,
deadbeef->conf_set_int ("resume_last_session", active);
}
+
+void
+on_auto_name_playlist_from_folder_toggled
+ (GtkToggleButton *togglebutton,
+ gpointer user_data)
+{
+ int active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton));
+ deadbeef->conf_set_int ("gtkui.name_playlist_from_folder", active);
+}
+