ocarina: Created add-to-playlist menu items

For people who don't like keyboard shortcuts...

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-09-08 10:09:57 -04:00
parent 55cfdc5dba
commit 42c6bdff0e
4 changed files with 169 additions and 2 deletions

View File

@ -28,6 +28,7 @@ namespace libsaria
Playlist *new_playlist(list<Track *> &, PlaylistType, bool);
void delete_playlist(Playlist *);
unsigned int move_playlist(Playlist *, unsigned int);
unsigned int num_playlists();
Playlist *get_playlist(unsigned int);
int get_playlist_index(Playlist *);

View File

@ -161,6 +161,11 @@ namespace libsaria
return index;
}
unsigned int deck::num_playlists()
{
return playlist_deck.size();
}
void deck::init()
{
app::mkdir("playlist");

View File

@ -304,6 +304,26 @@ static void on_menu_item(GtkWidget *item, gpointer data)
new_playlist("S", widgets->treeview, true);
else if (item == get_widget("MenuSetBack"))
new_playlist("s", widgets->treeview, false);
else if (item == get_widget("AddPlaylist0"))
add_to_playlist(widgets->treeview, 0);
else if (item == get_widget("AddPlaylist1"))
add_to_playlist(widgets->treeview, 1);
else if (item == get_widget("AddPlaylist2"))
add_to_playlist(widgets->treeview, 2);
else if (item == get_widget("AddPlaylist3"))
add_to_playlist(widgets->treeview, 3);
else if (item == get_widget("AddPlaylist4"))
add_to_playlist(widgets->treeview, 4);
else if (item == get_widget("AddPlaylist5"))
add_to_playlist(widgets->treeview, 5);
else if (item == get_widget("AddPlaylist6"))
add_to_playlist(widgets->treeview, 6);
else if (item == get_widget("AddPlaylist7"))
add_to_playlist(widgets->treeview, 7);
else if (item == get_widget("AddPlaylist8"))
add_to_playlist(widgets->treeview, 8);
else if (item == get_widget("AddPlaylist9"))
add_to_playlist(widgets->treeview, 9);
}
static gboolean entry_keypress(GtkEntry *entry, GdkEvent *event, gpointer data)
@ -316,10 +336,44 @@ static gboolean entry_keypress(GtkEntry *entry, GdkEvent *event, gpointer data)
return FALSE;
}
static void show_menu_widget(const string &name, unsigned int plist_num,
unsigned int deck_size)
{
if (plist_num < deck_size)
gtk_widget_show(get_widget(name));
else
gtk_widget_hide(get_widget(name));
}
static void on_click(GtkTreeView *treeview, GdkEvent *event, gpointer data)
{
unsigned int deck_size = libsaria::deck::num_playlists();
if (event->button.button != 3)
return;
show_menu_widget("MenuQueueBack", deck_size, 10);
show_menu_widget("MenuQueueFront", deck_size, 10);
show_menu_widget("MenuSetBack", deck_size, 10);
show_menu_widget("MenuSetFront", deck_size, 10);
show_menu_widget("MenuNewSep", deck_size, 10);
if (deck_size > 0 && deck_size < 10)
gtk_widget_show(get_widget("MenuAddSep"));
else
gtk_widget_hide(get_widget("MenuAddSep"));
show_menu_widget("AddPlaylist0", 0, deck_size);
show_menu_widget("AddPlaylist1", 1, deck_size);
show_menu_widget("AddPlaylist2", 2, deck_size);
show_menu_widget("AddPlaylist3", 3, deck_size);
show_menu_widget("AddPlaylist4", 4, deck_size);
show_menu_widget("AddPlaylist5", 5, deck_size);
show_menu_widget("AddPlaylist6", 6, deck_size);
show_menu_widget("AddPlaylist7", 7, deck_size);
show_menu_widget("AddPlaylist8", 8, deck_size);
show_menu_widget("AddPlaylist9", 9, deck_size);
gtk_menu_popup(GTK_MENU(get_widget("PlaylistMenu")), NULL, NULL, NULL, NULL, event->button.button, event->button.time);
}
@ -443,4 +497,14 @@ void init_playlist()
connect_signal("MenuSetFront", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("MenuQueueBack", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("MenuSetBack", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist0", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist1", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist2", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist3", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist4", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist5", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist6", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist7", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist8", "activate", G_CALLBACK(on_menu_item), NULL);
connect_signal("AddPlaylist9", "activate", G_CALLBACK(on_menu_item), NULL);
}

View File

@ -2,6 +2,7 @@
<interface>
<!-- interface-requires gtk+ 3.0 -->
<!-- interface-naming-policy toplevel-contextual -->
<object class="GtkAction" id="action1"/>
<object class="GtkFileChooserDialog" id="DirectoryChooser">
<property name="can_focus">False</property>
<property name="border_width">5</property>
@ -144,7 +145,6 @@
<column type="guint"/>
</columns>
</object>
<object class="GtkAction" id="action1"/>
<object class="GtkWindow" id="MainWindow">
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -745,7 +745,7 @@
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="menuitem3">
<object class="GtkSeparatorMenuItem" id="MenuNewSep">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -769,5 +769,102 @@
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="MenuAddSep">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist0">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 0</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist1">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 1</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist2">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 2</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist3">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 3</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist4">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 4</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist5">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 5</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist6">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 6</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist7">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 7</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist8">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 8</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="AddPlaylist9">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add to playlist 9</property>
<property name="use_underline">True</property>
</object>
</child>
</object>
</interface>