Update of /cvsroot/gtkpod/gtkpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv8813/src
Modified Files:
context_menus.c
Log Message:
moved context menus over to new system.
Index: context_menus.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/context_menus.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- context_menus.c 16 Jun 2006 17:21:12 -0000 1.63
+++ context_menus.c 22 Jun 2006 16:26:01 -0000 1.64
@@ -1,4 +1,4 @@
-/* Time-stamp: <2006-06-17 02:20:53 jcs>
+/* Time-stamp: <2006-06-23 00:55:05 jcs>
|
| Copyright (C) 2003 Corey Donohoe <atmos at atmos dot org>
| Copyright (C) 2003-2005 Jorg Schuler <jcsjcs at users sourceforge net>
@@ -43,7 +43,7 @@
#include "repository.h"
#include "syncdir.h"
-#define LOCALDEBUG 1
+#define LOCALDEBUG 0
static guint entry_inst = -1;
static GList *selected_tracks = NULL;
@@ -385,7 +385,14 @@
{
return hookup_mi (menu, _("Create Playlist File"),
GTK_STOCK_SAVE_AS,
- G_CALLBACK (create_playlist_file), NULL);
+ G_CALLBACK (create_playlist_file), NULL);
+}
+
+static GtkWidget *add_create_new_playlist (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Create new Playlist"),
+ GTK_STOCK_JUSTIFY_LEFT,
+ G_CALLBACK (create_playlist_from_entries), NULL);
}
static GtkWidget *add_update_tracks_from_file (GtkWidget *menu)
@@ -475,6 +482,13 @@
G_CALLBACK (eject_ipod), NULL);
}
+static GtkWidget *add_save_changes (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Save Changes"),
+ GTK_STOCK_SAVE,
+ G_CALLBACK (save_changes), NULL);
+}
+
static GtkWidget *add_remove_all_tracks_from_database (GtkWidget *menu)
{
return hookup_mi (menu, _("Remove All Tracks from Database"),
@@ -499,6 +513,54 @@
GINT_TO_POINTER (DELETE_ACTION_DATABASE));
}
+static GtkWidget *add_delete_from_ipod (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete From iPod"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_IPOD));
+}
+
+static GtkWidget *add_delete_from_playlist (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete From Playlist"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_PLAYLIST));
+}
+
+static GtkWidget *add_delete_from_harddisk (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete From Harddisk"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_LOCAL));
+}
+
+static GtkWidget *add_delete_from_database (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Delete From Database"),
+ GTK_STOCK_DELETE,
+ G_CALLBACK (delete_entries),
+ GINT_TO_POINTER (DELETE_ACTION_DATABASE));
+}
+
+static GtkWidget *add_alphabetize (GtkWidget *menu)
+{
+ return hookup_mi (menu, _("Alphabetize"),
+ GTK_STOCK_SORT_ASCENDING,
+ G_CALLBACK (alphabetize), NULL);
+}
+
+#if LOCALDEBUG
+static GtkWidget *add_special (GtkWidget *menu)
+{
+ return hookup_mi (menu, "Special",
+ GTK_STOCK_STOP,
+ G_CALLBACK (do_special), NULL);
+}
+#endif
+
static GtkWidget *add_edit_playlist_properties (GtkWidget *menu)
{
return hookup_mi (menu, _("Edit Playlist Properties"),
@@ -507,14 +569,13 @@
}
-
-static GtkMenu *create_context_menu_pl (void)
+void create_context_menu (CM_type type)
{
static GtkWidget *menu = NULL;
Playlist *pl;
if (menu)
- {
+ { /* free memory for last menu */
gtk_widget_destroy (menu);
menu = NULL;
}
@@ -524,16 +585,68 @@
{
ExtraiTunesDBData *eitdb;
iTunesDB *itdb = pl->itdb;
-
- g_return_val_if_fail (itdb, NULL);
+ g_return_if_fail (itdb);
eitdb = itdb->userdata;
- g_return_val_if_fail (eitdb, NULL);
+ g_return_if_fail (eitdb);
menu = gtk_menu_new ();
- if (itdb->usertype & GP_ITDB_TYPE_IPOD)
+ switch (type)
{
- if (eitdb->itdb_imported)
+ case CM_PL:
+ 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);
@@ -547,15 +660,12 @@
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);
+ add_remove_all_tracks_from_database (menu);
}
else
{
- add_delete_including_tracks (menu);
+ add_delete_including_tracks_database (menu);
+ add_delete_including_tracks_harddisk (menu);
add_delete_but_keep_tracks (menu);
}
add_separator (menu);
@@ -564,437 +674,66 @@
{
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);
+ add_edit_playlist_properties (menu);
+ add_save_changes (menu);
}
- }
- if (itdb->usertype & GP_ITDB_TYPE_LOCAL)
- {
+ break;
+ case CM_ST:
+ case CM_TM:
add_play_now (menu);
add_enqueue (menu);
add_copy_track_to_filesystem (menu);
add_create_playlist_file (menu);
+ add_create_new_playlist (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
+ if (type == CM_ST)
{
- add_delete_including_tracks_database (menu);
- add_delete_including_tracks_harddisk (menu);
- add_delete_but_keep_tracks (menu);
+ add_alphabetize (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 */
- static GtkWidget *mi_delpl[CM_NUM]; /* DELETE_ACTION_PLAYLIST */
- static GtkWidget *mi_delipod[CM_NUM]; /* DELETE_ACTION_IPOD */
- static GtkWidget *mi_dellocal[CM_NUM];/* DELETE_ACTION_LOCAL */
- static GtkWidget *mi_deldb[CM_NUM]; /* DELETE_ACTION_DATABASE */
- static GtkWidget *mi_delpcipod[CM_NUM]; /* DELETE_ACTION_IPOD */
- static GtkWidget *mi_delsep[CM_NUM]; /* separator */
- static GtkWidget *mi_spl[CM_NUM]; /* edit smart playlist */
- static GtkWidget *mi_delipod_all[CM_NUM];/* DELETE_ACTION_IPOD (all
- * tracks) */
- static GtkWidget *mi_deldb_all[CM_NUM]; /* DELETE_ACTION_DATABASE
- * (all tracks) */
- static GtkWidget *mi_io_sep; /* separator for iPod/repository
- load/eject/save changes */
- static GtkWidget *mi_ipodio_load, *mi_ipodio_eject, *mi_io_save;
- static GtkWidget *mi_prop_pl, *mi_prop_rep, *mi_prop_ipod;
-
- Playlist *pl;
-
- if(!menu[type])
- {
- menu[type] = gtk_menu_new();
- hookup_mi (menu[type], _("Play Now"), GTK_STOCK_CDROM,
- G_CALLBACK (play_entries_now), NULL);
- hookup_mi (menu[type], _("Enqueue"), GTK_STOCK_CDROM,
- G_CALLBACK (play_entries_enqueue), NULL);
- mi_exp[type] = hookup_mi (menu[type],
- _("Copy Tracks to Filesystem"),
GTK_STOCK_SAVE_AS,
- G_CALLBACK (export_entries), NULL);
- hookup_mi (menu[type], _("Create Playlist File"), GTK_STOCK_SAVE_AS,
- G_CALLBACK (create_playlist_file), NULL);
- hookup_mi (menu[type], _("Edit Track Details"),
- GTK_STOCK_EDIT,
- G_CALLBACK (edit_details_entries), NULL);
- hookup_mi (menu[type], _("Update Tracks from File"),
- GTK_STOCK_REFRESH,
- G_CALLBACK (update_entries), NULL);
- if (type == CM_PL)
- {
- hookup_mi (menu[type], _("Sync Playlist with Dir(s)"),
- GTK_STOCK_REFRESH,
- G_CALLBACK (sync_dirs), NULL);
- }
- hookup_mi (menu[type], _("Create new Playlist"),
- GTK_STOCK_JUSTIFY_LEFT,
- G_CALLBACK (create_playlist_from_entries), NULL);
- mi_spl[type] = hookup_mi (menu[type], _("Edit Smart Playlist"),
- GTK_STOCK_PROPERTIES,
- G_CALLBACK (edit_spl), NULL);
-
- if (type == CM_ST)
- {
- hookup_mi (menu[type], _("Alphabetize"),
- GTK_STOCK_SORT_ASCENDING,
- G_CALLBACK (alphabetize), NULL);
-/* example for sub menus!
- GtkWidget *mi;
- GtkWidget *sub;
-
- mi = hookup_mi (menu[type], _("Alphabetize"), NULL, NULL);
- sub = gtk_menu_new ();
- gtk_widget_show (sub);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), sub);
- hookup_mi (sub, _("Ascending"), GTK_STOCK_SORT_ASCENDING,
- G_CALLBACK (alphabetize_ascending), NULL);
- hookup_mi (sub, _("Descending"), GTK_STOCK_SORT_DESCENDING,
- G_CALLBACK (alphabetize_descending), NULL);
- hookup_mi (sub, _("Reset"), GTK_STOCK_UNDO,
- G_CALLBACK (reset_alphabetize), NULL);
-*/
- }
- if ((type == CM_ST) || (type == CM_TM))
- {
- mi_delsep[type] = add_separator (menu[type]);
- mi_delipod[type] =
- hookup_mi (menu[type],
- _("Delete From iPod"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
- mi_dellocal[type] =
- hookup_mi (menu[type],
- _("Delete From Harddisk"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_LOCAL));
- mi_deldb[type] =
- hookup_mi (menu[type],
- _("Delete From Database"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_DATABASE));
- mi_delpl[type] =
- hookup_mi (menu[type],
- _("Delete From Playlist"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_PLAYLIST));
- }
-#if LOCALDEBUG
- /* This is for debugging purposes -- this allows to inspect
- * any track with a custom function */
- if (type == CM_TM)
- {
- hookup_mi (menu[type], "Special", GTK_STOCK_STOP,
- G_CALLBACK (do_special), NULL);
- }
-#endif
- if (type == CM_PL)
- {
- mi_delsep[type] = add_separator (menu[type]);
- mi_delipod[type] =
- hookup_mi (menu[type],
- _("Delete Including Tracks"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
- mi_dellocal[type] =
- hookup_mi (menu[type],
- _("Delete Including Tracks (Harddisk)"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_LOCAL));
- mi_deldb[type] =
- hookup_mi (menu[type],
- _("Delete Including Tracks (Database)"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_DATABASE));
- mi_delpl[type] =
- hookup_mi (menu[type],
- _("Delete But Keep Tracks"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_PLAYLIST));
- mi_delipod_all[type] =
- hookup_mi (menu[type],
- _("Remove All Tracks from iPod"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
- mi_deldb_all[type] =
- hookup_mi (menu[type],
- _("Remove All Tracks from Database"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_DATABASE));
-
- mi_delpcipod[type] =
- hookup_mi (menu[type],
- _("Remove All Podcasts from iPod"),
- GTK_STOCK_DELETE,
- G_CALLBACK (delete_entries),
- GINT_TO_POINTER (DELETE_ACTION_IPOD));
-
- mi_io_sep = add_separator (menu[type]);
-
- mi_prop_pl = hookup_mi (menu[type],
- _("Edit Playlist Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
- mi_prop_rep = hookup_mi (menu[type],
- _("Edit Repository Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
- mi_prop_ipod = hookup_mi (menu[type],
- _("Edit iPod Properties"),
- GTK_STOCK_PREFERENCES,
- G_CALLBACK (edit_properties), NULL);
-
- mi_ipodio_load =
- hookup_mi (menu[type],
- _("Load iPod"),
- GTK_STOCK_CONNECT,
- G_CALLBACK (load_ipod), NULL);
-
- mi_ipodio_eject =
- hookup_mi (menu[type],
- _("Eject iPod"),
- GTK_STOCK_DISCONNECT,
- G_CALLBACK (eject_ipod), NULL);
-
- mi_io_save =
- hookup_mi (menu[type],
- _("Save Changes"),
- GTK_STOCK_SAVE,
- G_CALLBACK (save_changes), NULL);
-
-
- }
- }
- /* Make sure, only available options are displayed */
- 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);
-
- /* Make sure, only available delete options are displayed */
- switch (type)
- {
- case CM_PL:
- gtk_widget_hide (mi_spl[type]);
- gtk_widget_hide (mi_dellocal[type]);
- gtk_widget_hide (mi_delpl[type]);
- gtk_widget_hide (mi_deldb[type]);
- gtk_widget_hide (mi_deldb_all[type]);
- gtk_widget_hide (mi_delsep[type]);
- gtk_widget_hide (mi_delipod[type]);
- gtk_widget_hide (mi_delipod_all[type]);
- gtk_widget_hide (mi_delpcipod[type]);
- gtk_widget_hide (mi_dellocal[type]);
- gtk_widget_hide (mi_io_sep);
- gtk_widget_hide (mi_ipodio_load);
- gtk_widget_hide (mi_ipodio_eject);
- gtk_widget_hide (mi_io_save);
- gtk_widget_hide (mi_prop_pl);
- gtk_widget_hide (mi_prop_rep);
- gtk_widget_hide (mi_prop_ipod);
-
- if (pl->is_spl)
- {
- gtk_widget_show (mi_spl[type]);
- }
-
if (itdb->usertype & GP_ITDB_TYPE_IPOD)
{
- if (itdb_playlist_is_mpl (pl))
- {
- gtk_widget_show (mi_delipod_all[type]);
- gtk_widget_show (mi_io_sep);
- gtk_widget_show (mi_prop_ipod);
- if (eitdb->itdb_imported)
- {
- gtk_widget_show (mi_ipodio_eject);
- }
- else
- {
- gtk_widget_show (mi_ipodio_load);
- }
- }
- else
+ add_delete_from_ipod (menu);
+ if (!itdb_playlist_is_mpl (pl))
{
- gtk_widget_show (mi_prop_pl);
- if (itdb_playlist_is_podcasts (pl))
- {
- gtk_widget_show (mi_delpcipod[type]);
- }
- else
- {
- gtk_widget_show (mi_delsep[type]);
- gtk_widget_show (mi_delipod[type]);
- gtk_widget_show (mi_delpl[type]);
- }
+ add_delete_from_playlist (menu);
}
}
-
if (itdb->usertype & GP_ITDB_TYPE_LOCAL)
{
- if (itdb_playlist_is_mpl (pl))
- {
- gtk_widget_show (mi_prop_rep);
- gtk_widget_show (mi_deldb_all[type]);
- if (eitdb->data_changed)
- {
- gtk_widget_show (mi_io_sep);
- gtk_widget_show (mi_io_save);
- }
-
- }
- else
- {
- gtk_widget_show (mi_prop_pl);
- gtk_widget_show (mi_delsep[type]);
- gtk_widget_show (mi_dellocal[type]);
- gtk_widget_show (mi_deldb[type]);
- gtk_widget_show (mi_delpl[type]);
- }
- }
-
- if (itdb->usertype & GP_ITDB_TYPE_PODCASTS)
- {
- gtk_widget_show (mi_delsep[type]);
- }
- break;
- case CM_ST:
- case CM_TM:
- gtk_widget_hide (mi_spl[type]);
- gtk_widget_hide (mi_dellocal[type]);
- gtk_widget_hide (mi_deldb[type]);
- gtk_widget_hide (mi_delpl[type]);
- gtk_widget_hide (mi_delipod[type]);
-
- if (pl->is_spl)
- {
- gtk_widget_show (mi_spl[type]);
- }
- if (itdb->usertype & GP_ITDB_TYPE_IPOD)
- {
- gtk_widget_show (mi_delipod[type]);
- if (!itdb_playlist_is_mpl (pl) &&
- !itdb_playlist_is_podcasts (pl))
+ add_delete_from_harddisk (menu);
+ add_delete_from_database (menu);
+ if (!itdb_playlist_is_mpl (pl))
{
- gtk_widget_show (mi_delpl[type]);
+ add_delete_from_playlist (menu);
}
}
- if (itdb->usertype & GP_ITDB_TYPE_LOCAL)
+ add_separator (menu);
+ add_edit_track_details (menu);
+#if LOCALDEBUG
+ /* This is for debugging purposes -- this allows to inspect
+ * any track with a custom function */
+ if (type == CM_TM)
{
- gtk_widget_show (mi_dellocal[type]);
- gtk_widget_show (mi_deldb[type]);
- /* actually, local repositories are not supposed to
- have podcasts playlists, but for completeness' sake
- I'll test anyway*/
- if(!itdb_playlist_is_mpl (pl) &&
- !itdb_playlist_is_podcasts (pl))
- {
- gtk_widget_show (mi_delpl[type]);
- }
+ add_special (menu);
}
+#endif
break;
- case CM_NUM: /* to avoid compiler warning */
- break;
- }
- /* turn 'export tracks' insensitive when necessary */
- if (itdb->usertype & GP_ITDB_TYPE_IPOD)
- {
- gtk_widget_set_sensitive (mi_exp[type],
- !prefs_get_offline ());
- }
- else
- {
- gtk_widget_set_sensitive (mi_exp[type], TRUE);
+ case CM_NUM:
+ g_return_if_reached ();
}
}
-
- 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 (); */
- menu = 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
*/
if (menu)
{
- gtk_menu_popup (menu, NULL, NULL,
+ gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
NULL, NULL, 0, gtk_get_current_event_time());
}
}
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2