Update of /cvsroot/gtkpod/gtkpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv11370/src
Modified Files:
context_menus.c
Log Message:
* src/context_menus.c: started rewrite of context menu
setup. Cleaned up the playlist context menu.
Index: context_menus.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/context_menus.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- context_menus.c 14 Jun 2006 16:12:10 -0000 1.61
+++ context_menus.c 16 Jun 2006 17:19:33 -0000 1.62
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-06-15 00:53:19 jcs>
+/* Time-stamp: <2006-06-17 02:11:32 jcs>
|
| Copyright (C) 2003 Corey Donohoe <atmos at atmos dot org>
| Copyright (C) 2003-2005 Jorg Schuler <jcsjcs at users sourceforge net>
@@ -59,6 +59,7 @@
} CM_type;
+
#if LOCALDEBUG
/**
* do_special - for debugging: change as needed to obtain information
@@ -361,8 +362,265 @@
}
-void
-create_context_menu(CM_type type)
+static GtkWidget *add_play_now (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Play Now"), GTK_STOCK_CDROM,
+ G_CALLBACK (play_entries_now), NULL);
+}
+
+static GtkWidget *add_enqueue (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Enqueue"), GTK_STOCK_CDROM,
+ G_CALLBACK (play_entries_enqueue), NULL);
+}
+
+static GtkWidget *add_copy_track_to_filesystem (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Copy Tracks to Filesystem"),
+ GTK_STOCK_SAVE_AS,
+ G_CALLBACK (export_entries), NULL);
+}
+
+static GtkWidget *add_create_playlist_file (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Create Playlist File"),
+ GTK_STOCK_SAVE_AS,
+ G_CALLBACK (create_playlist_file), NULL);
+}
+
+static GtkWidget *add_update_tracks_from_file (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Update Tracks from File"),
+ GTK_STOCK_REFRESH,
+ G_CALLBACK (update_entries), NULL);
+}
+
+static GtkWidget *add_edit_smart_playlist (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Edit Smart Playlist"),
+ GTK_STOCK_PROPERTIES,
+ G_CALLBACK (edit_spl), NULL);
+}
+
+static GtkWidget *add_sync_playlist_with_dirs (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Sync Playlist with Dir(s)"),
+ GTK_STOCK_REFRESH,
+ G_CALLBACK (sync_dirs), NULL);
+}
+
+static GtkWidget *add_remove_all_tracks_from_ipod (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Remove All Tracks from iPod"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_IPOD));
+}
+
+static GtkWidget *add_remove_all_podcasts_from_ipod (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Remove All Podcasts from iPod"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_IPOD));
+}
+
+static GtkWidget *add_delete_including_tracks (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete Including Tracks"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_IPOD));
+}
+
+static GtkWidget *add_delete_but_keep_tracks (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete But Keep Tracks"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_PLAYLIST));
+}
+
+static GtkWidget *add_edit_ipod_properties (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Edit iPod Properties"),
+ GTK_STOCK_PREFERENCES,
+ G_CALLBACK (edit_properties), NULL);
+}
+
+static GtkWidget *add_edit_track_details (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Edit Track Details"),
+ GTK_STOCK_EDIT,
+ G_CALLBACK (edit_details_entries), NULL);
+}
+
+static GtkWidget *add_check_ipod_files (GtkWidget *menu)
+{
+ /* FIXME */
+ return NULL;
+}
+
+static GtkWidget *add_load_ipod (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Load iPod"),
+ GTK_STOCK_CONNECT,
+ G_CALLBACK (load_ipod), NULL);
+}
+
+static GtkWidget *add_eject_ipod (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Eject iPod"),
+ GTK_STOCK_DISCONNECT,
+ G_CALLBACK (eject_ipod), NULL);
+}
+
+static GtkWidget *add_remove_all_tracks_from_database (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Remove All Tracks from Database"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_DATABASE));
+}
+
+static GtkWidget *add_delete_including_tracks_harddisk (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete Including Tracks (Harddisk)"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_LOCAL));
+}
+
+static GtkWidget *add_delete_including_tracks_database (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete Including Tracks (Database)"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_DATABASE));
+}
+
+static GtkWidget *add_edit_playlist_properties (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Edit Playlist Properties"),
+ GTK_STOCK_PREFERENCES,
+ G_CALLBACK (edit_properties), NULL);
+}
+
+
+
+static GtkMenu *create_context_menu_pl (void)
+{
+ static GtkWidget *menu = NULL;
+ Playlist *pl;
+
+ if (menu)
+ {
+ gtk_widget_destroy (menu);
+ menu = NULL;
+ }
+
+ pl = pm_get_selected_playlist();
+ if (pl)
+ {
+ ExtraiTunesDBData *eitdb;
+ iTunesDB *itdb = pl->itdb;
+
+ g_return_val_if_fail (itdb, NULL);
+ eitdb = itdb->userdata;
+ g_return_val_if_fail (eitdb, NULL);
+
+ menu = gtk_menu_new ();
+
+ if (itdb->usertype & GP_ITDB_TYPE_IPOD)
+ {
+ if (eitdb->itdb_imported)
+ {
+ add_play_now (menu);
+ add_enqueue (menu);
+ add_copy_track_to_filesystem (menu);
+ add_create_playlist_file (menu);
+ add_update_tracks_from_file (menu);
+ if (!pl->is_spl)
+ {
+ add_sync_playlist_with_dirs (menu);
+ }
+ add_separator (menu);
+ if (itdb_playlist_is_mpl (pl))
+ {
+ add_remove_all_tracks_from_ipod (menu);
+ }
+ else if (itdb_playlist_is_podcasts (pl))
+ {
+ add_remove_all_podcasts_from_ipod (menu);
+ }
+ else
+ {
+ add_delete_including_tracks (menu);
+ add_delete_but_keep_tracks (menu);
+ }
+ add_separator (menu);
+ add_edit_track_details (menu);
+ if (pl->is_spl)
+ {
+ add_edit_smart_playlist (menu);
+ }
+ if (itdb_playlist_is_mpl (pl) || pl->is_spl)
+ {
+ add_edit_ipod_properties (menu);
+ }
+ else
+ {
+ add_edit_playlist_properties (menu);
+ }
+ add_check_ipod_files (menu);
+ add_eject_ipod (menu);
+ }
+ else
+ { /* not imported */
+ add_edit_ipod_properties (menu);
+ add_check_ipod_files (menu);
+ add_separator (menu);
+ add_load_ipod (menu);
+ }
+ }
+ if (itdb->usertype & GP_ITDB_TYPE_LOCAL)
+ {
+ add_play_now (menu);
+ add_enqueue (menu);
+ add_copy_track_to_filesystem (menu);
+ add_create_playlist_file (menu);
+ add_update_tracks_from_file (menu);
+ if (!pl->is_spl)
+ {
+ add_sync_playlist_with_dirs (menu);
+ }
+ add_separator (menu);
+ if (itdb_playlist_is_mpl (pl))
+ {
+ add_remove_all_tracks_from_database (menu);
+ }
+ else
+ {
+ add_delete_including_tracks_database (menu);
+ add_delete_including_tracks_harddisk (menu);
+ add_delete_but_keep_tracks (menu);
+ }
+ add_separator (menu);
+ add_edit_track_details (menu);
+ if (pl->is_spl)
+ {
+ add_edit_smart_playlist (menu);
+ }
+ add_edit_playlist_properties (menu);
+ }
+ }
+
+ return GTK_MENU (menu);
+}
+
+
+
+static GtkMenu *create_context_menu_old (CM_type type)
{
static GtkWidget *menu[CM_NUM];
static GtkWidget *mi_exp[CM_NUM]; /* Export Tracks */
@@ -562,9 +820,9 @@
{
ExtraiTunesDBData *eitdb;
iTunesDB *itdb = pl->itdb;
- g_return_if_fail (itdb);
+ g_return_val_if_fail (itdb, NULL);
eitdb = itdb->userdata;
- g_return_if_fail (eitdb);
+ g_return_val_if_fail (eitdb, NULL);
/* Make sure, only available delete options are displayed */
switch (type)
@@ -703,15 +961,45 @@
}
}
+ return GTK_MENU (menu[type]);
+}
+
+
+
+void create_context_menu (CM_type type)
+{
+ GtkMenu *menu = NULL;
+
+ switch (type)
+ {
+ case CM_PL:
+ menu = create_context_menu_pl ();
+ break;
+ case CM_ST:
+/* create_context_menu_st (); */
+ menu = create_context_menu_old (CM_ST);
+ break;
+ case CM_TM:
+/* create_context_menu_tm (); */
+ create_context_menu_old (CM_TM);
+ break;
+ case CM_NUM:
+ g_return_if_reached ();
+ }
+
/*
* button should be button 0 as per the docs because we're calling
* from a button release event
*/
- gtk_menu_popup(GTK_MENU(menu[type]), NULL, NULL,
- NULL, NULL, 0, gtk_get_current_event_time());
+ if (menu)
+ {
+ gtk_menu_popup (menu, NULL, NULL,
+ NULL, NULL, 0, gtk_get_current_event_time());
+ }
}
+
/**
* tm_context_menu_init - initialize the right click menu for tracks
*/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2