commit a5193d9f25a6f052d28b50f622f197f85707383c Author: phantomjinx <p.g.richard...@phantomjinx.co.uk> Date: Sat Nov 20 14:55:44 2010 +0000
Correct mistakes in glib interface use * Seems the dummy object is the reference to pass around rather than the interface itself. * Creation of functions to act as getters for interface properties libgtkpod/context_menus.c | 12 ++-- libgtkpod/details_editor_iface.c | 9 ++- libgtkpod/details_editor_iface.h | 10 ++- libgtkpod/exporter_iface.c | 30 +++++++- libgtkpod/exporter_iface.h | 13 ++- libgtkpod/gtkpod_app_iface.c | 89 ++++++++++++--------- libgtkpod/gtkpod_app_iface.h | 8 +- libgtkpod/lyrics_editor_iface.c | 8 ++ libgtkpod/lyrics_editor_iface.h | 10 ++- libgtkpod/misc_playlist.c | 8 +- libgtkpod/misc_track.c | 8 +- libgtkpod/photo_editor_iface.c | 7 ++ libgtkpod/photo_editor_iface.h | 10 ++- libgtkpod/repository_editor_iface.c | 21 +++++ libgtkpod/repository_editor_iface.h | 12 ++- libgtkpod/track_command_iface.c | 31 +++++++- libgtkpod/track_command_iface.h | 3 + plugins/exporter/exporter_actions.c | 8 +- plugins/media_player/plugin.c | 4 +- plugins/playlist_display/display_playlists.c | 8 +- plugins/track_display/track_display_preferences.c | 10 +- 21 files changed, 223 insertions(+), 96 deletions(-) --- diff --git a/libgtkpod/context_menus.c b/libgtkpod/context_menus.c index 884ec56..a131a64 100644 --- a/libgtkpod/context_menus.c +++ b/libgtkpod/context_menus.c @@ -132,11 +132,11 @@ GtkWidget *add_exec_commands(GtkWidget *menu) { } while(cmds != NULL) { - TrackCommandInterface *cmd = cmds->data; + TrackCommand *cmd = cmds->data; GPtrArray *pairarr = g_ptr_array_new (); g_ptr_array_add (pairarr, cmd); g_ptr_array_add (pairarr, gtkpod_get_selected_tracks()); - hookup_menu_item(mm, cmd->text, GTK_STOCK_EXECUTE, G_CALLBACK (on_track_command_menuitem_activate), pairarr); + hookup_menu_item(mm, track_command_get_text(cmd), GTK_STOCK_EXECUTE, G_CALLBACK (on_track_command_menuitem_activate), pairarr); cmds = cmds->next; } @@ -264,10 +264,10 @@ static void create_playlist_file(GtkWidget *w, gpointer data) if (!gtkpod_has_exporter()) return; - ExporterInterface *exporter = gtkpod_get_exporter(); + Exporter *exporter = gtkpod_get_exporter(); if(gtkpod_get_selected_tracks()) - exporter->export_tracks_to_playlist_file(gtkpod_get_selected_tracks()); + exporter_export_tracks_to_playlist_file(exporter, gtkpod_get_selected_tracks()); } GtkWidget *add_create_playlist_file (GtkWidget *menu) @@ -301,11 +301,11 @@ GtkWidget *add_edit_track_details(GtkWidget *menu) { */ static void export_entries(GtkWidget *w, gpointer data) { - ExporterInterface *exporter = gtkpod_get_exporter(); + Exporter *exporter = gtkpod_get_exporter(); g_return_if_fail(exporter); if(gtkpod_get_selected_tracks()) - exporter->export_tracks_as_files (gtkpod_get_selected_tracks(), NULL, FALSE, NULL); + exporter_export_tracks_as_files (exporter, gtkpod_get_selected_tracks(), NULL, FALSE, NULL); } GtkWidget *add_copy_track_to_filesystem (GtkWidget *menu) diff --git a/libgtkpod/details_editor_iface.c b/libgtkpod/details_editor_iface.c index 6b85de2..cbad6e4 100644 --- a/libgtkpod/details_editor_iface.c +++ b/libgtkpod/details_editor_iface.c @@ -46,8 +46,15 @@ GType details_editor_get_type(void) { if (!type) { static const GTypeInfo info = { sizeof(DetailsEditorInterface), (GBaseInitFunc) details_editor_base_init, NULL, NULL, NULL, NULL, 0, 0, NULL }; - type = g_type_register_static(G_TYPE_INTERFACE, "DetailsEditorInterface", &info, 0); + type = g_type_register_static(G_TYPE_INTERFACE, "DetailsEditor", &info, 0); g_type_interface_add_prerequisite(type, G_TYPE_OBJECT); } return type; } + +void details_editor_edit_details(DetailsEditor *editor, GList *tracks) { + if (! DETAILS_EDITOR_IS_EDITOR(editor)) + return; + + DETAILS_EDITOR_GET_INTERFACE(editor)->edit_details(tracks); +} diff --git a/libgtkpod/details_editor_iface.h b/libgtkpod/details_editor_iface.h index 7e59224..f27fccf 100644 --- a/libgtkpod/details_editor_iface.h +++ b/libgtkpod/details_editor_iface.h @@ -35,6 +35,11 @@ #include <gtk/gtk.h> #include "itdb.h" +#define DETAILS_EDITOR_TYPE (details_editor_get_type ()) +#define DETAILS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DETAILS_EDITOR_TYPE, DetailsEditor)) +#define DETAILS_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DETAILS_EDITOR_TYPE)) +#define DETAILS_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), DETAILS_EDITOR_TYPE, DetailsEditorInterface)) + typedef struct _DetailsEditor DetailsEditor; typedef struct _DetailsEditorInterface DetailsEditorInterface; @@ -46,9 +51,6 @@ struct _DetailsEditorInterface { GType details_editor_get_type(void); -#define DETAILS_EDITOR_TYPE (details_editor_get_type ()) -#define DETAILS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DETAILS_EDITOR_TYPE, DetailsEditor)) -#define DETAILS_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DETAILS_EDITOR_TYPE)) -#define DETAILS_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), DETAILS_EDITOR_TYPE, DetailsEditorInterface)) +void details_editor_edit_details(DetailsEditor *editor, GList *tracks); #endif /* DETAILS_EDITOR_IFACE_H_ */ diff --git a/libgtkpod/exporter_iface.c b/libgtkpod/exporter_iface.c index 1a32e17..a69c1b9 100644 --- a/libgtkpod/exporter_iface.c +++ b/libgtkpod/exporter_iface.c @@ -49,8 +49,36 @@ GType exporter_get_type(void) { if (!type) { static const GTypeInfo info = { sizeof(ExporterInterface), (GBaseInitFunc) exporter_base_init, NULL, NULL, NULL, NULL, 0, 0, NULL }; - type = g_type_register_static(G_TYPE_INTERFACE, "ExporterInterface", &info, 0); + type = g_type_register_static(G_TYPE_INTERFACE, "Exporter", &info, 0); g_type_interface_add_prerequisite(type, G_TYPE_OBJECT); } return type; } + +void exporter_export_tracks_as_files(Exporter *exporter, GList *tracks, GList **filenames, gboolean display, gchar *message) { + if (! EXPORTER_IS_EXPORTER(exporter)) + return; + + EXPORTER_GET_INTERFACE(exporter)->export_tracks_as_files(tracks, filenames, display, message); +} + +void exporter_export_tracks_to_playlist_file (Exporter *exporter, GList *tracks) { + if (! EXPORTER_IS_EXPORTER(exporter)) + return; + + EXPORTER_GET_INTERFACE(exporter)->export_tracks_to_playlist_file(tracks); +} + +GList *exporter_transfer_track_glist_between_itdbs (Exporter *exporter, iTunesDB *itdb_s, iTunesDB *itdb_d, GList *tracks) { + if (! EXPORTER_IS_EXPORTER(exporter)) + return NULL; + + return EXPORTER_GET_INTERFACE(exporter)->transfer_track_glist_between_itdbs(itdb_s, itdb_d, tracks); +} + +GList *exporter_transfer_track_names_between_itdbs (Exporter *exporter, iTunesDB *itdb_s, iTunesDB *itdb_d, gchar *data) { + if (! EXPORTER_IS_EXPORTER(exporter)) + return NULL; + + return EXPORTER_GET_INTERFACE(exporter)->transfer_track_names_between_itdbs (itdb_s, itdb_d, data); +} diff --git a/libgtkpod/exporter_iface.h b/libgtkpod/exporter_iface.h index 1c8df91..19d1d60 100644 --- a/libgtkpod/exporter_iface.h +++ b/libgtkpod/exporter_iface.h @@ -35,6 +35,11 @@ #include <gtk/gtk.h> #include "itdb.h" +#define EXPORTER_TYPE (exporter_get_type ()) +#define EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXPORTER_TYPE, Exporter)) +#define EXPORTER_IS_EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXPORTER_TYPE)) +#define EXPORTER_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EXPORTER_TYPE, ExporterInterface)) + typedef struct _Exporter Exporter; typedef struct _ExporterInterface ExporterInterface; @@ -49,9 +54,9 @@ struct _ExporterInterface { GType exporter_get_type(void); -#define EXPORTER_TYPE (exporter_get_type ()) -#define EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXPORTER_TYPE, Exporter)) -#define EXPORTER_IS_EXPORTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXPORTER_TYPE)) -#define EXPORTER_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EXPORTER_TYPE, ExporterInterface)) +void exporter_export_tracks_as_files(Exporter *exporter, GList *tracks, GList **filenames, gboolean display, gchar *message); +void exporter_export_tracks_to_playlist_file (Exporter *exporter, GList *tracks); +GList *exporter_transfer_track_glist_between_itdbs (Exporter *exporter, iTunesDB *itdb_s, iTunesDB *itdb_d, GList *tracks); +GList *exporter_transfer_track_names_between_itdbs (Exporter *exporter, iTunesDB *itdb_s, iTunesDB *itdb_d, gchar *data); #endif /* EXPORTER_IFACE_H_ */ diff --git a/libgtkpod/gtkpod_app_iface.c b/libgtkpod/gtkpod_app_iface.c index 2e48dc6..b6dcb0d 100644 --- a/libgtkpod/gtkpod_app_iface.c +++ b/libgtkpod/gtkpod_app_iface.c @@ -43,8 +43,28 @@ static void gtkpod_app_base_init(GtkPodAppInterface* klass) { if (!initialized) { klass->current_itdb = NULL; klass->current_playlist = NULL; + klass->displayed_tracks = NULL; + klass->selected_tracks = NULL; klass->sort_enablement = TRUE; - + klass->xml_file = NULL; + klass->exporter = NULL; + klass->repository_editor = NULL; + klass->details_editor = NULL; + klass->lyrics_editor = NULL; + klass->photo_editor = NULL; + klass->track_commands = NULL; + + klass->itdb_updated = NULL; + klass->statusbar_message = NULL; + klass->gtkpod_warning = NULL; + klass->gtkpod_warning_hig = NULL; + klass->gtkpod_confirmation_hig = NULL; + klass->gtkpod_confirmation = NULL; + klass->statusbar_busy_push = NULL; + klass->statusbar_busy_pop = NULL; + klass->export_tracks_as_gchar = NULL; + klass->export_tracks_as_glist = NULL; + klass->display_widget = NULL; gtkpod_app_signals[ITDB_UPDATED] = g_signal_new(SIGNAL_ITDB_UPDATED, G_OBJECT_CLASS_TYPE (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _gtkpod_app_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); @@ -421,13 +441,13 @@ gboolean gtkpod_has_exporter() { return (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->exporter != NULL); } -ExporterInterface *gtkpod_get_exporter() { +Exporter *gtkpod_get_exporter() { g_return_val_if_fail (GTKPOD_IS_APP(gtkpod_app), NULL); if (!gtkpod_has_exporter()) return NULL; - return EXPORTER_GET_INTERFACE(GTKPOD_APP_GET_INTERFACE (gtkpod_app)->exporter); + return GTKPOD_APP_GET_INTERFACE (gtkpod_app)->exporter; } void gtkpod_display_widget(GtkWidget *widget) { @@ -449,34 +469,29 @@ void gtkpod_unregister_repository_editor() { gboolean gtkpod_has_repository_editor() { g_return_val_if_fail (GTKPOD_IS_APP(gtkpod_app), FALSE); - return (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor != NULL); + RepositoryEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor; + return REPOSITORY_EDITOR_IS_EDITOR(editor); } void gtkpod_edit_repository(iTunesDB *itdb, Playlist *playlist) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); - g_return_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - RepositoryEditorInterface *editor_iface = REPOSITORY_EDITOR_GET_INTERFACE(gp_iface->repository_editor); - editor_iface->edit_repository(itdb, playlist); + RepositoryEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor; + repository_editor_edit_repository(editor, itdb, playlist); } gboolean gtkpod_init_repository(iTunesDB *itdb) { g_return_val_if_fail(GTKPOD_IS_APP(gtkpod_app), FALSE); - g_return_val_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor, FALSE); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - RepositoryEditorInterface *editor_iface = REPOSITORY_EDITOR_GET_INTERFACE(gp_iface->repository_editor); - return editor_iface->init_repository(itdb); + RepositoryEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor; + return repository_editor_init_repository(editor, itdb); } void gtkpod_populate_repository_model(iTunesDB *itdb, const gchar *old_model) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); - g_return_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - RepositoryEditorInterface *editor_iface = REPOSITORY_EDITOR_GET_INTERFACE(gp_iface->repository_editor); - editor_iface->set_repository_model(itdb, old_model); + RepositoryEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->repository_editor; + repository_edtor_set_repository_model(editor, itdb, old_model); } void gtkpod_register_details_editor(DetailsEditor *editor) { @@ -492,16 +507,16 @@ void gtkpod_unregister_details_editor() { gboolean gtkpod_has_details_editor() { g_return_val_if_fail (GTKPOD_IS_APP(gtkpod_app), FALSE); - return (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->details_editor != NULL); + DetailsEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->details_editor; + return DETAILS_EDITOR_IS_EDITOR(editor); } void gtkpod_edit_details(GList *selected_tracks) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); g_return_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->details_editor); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - DetailsEditorInterface *editor_iface = DETAILS_EDITOR_GET_INTERFACE(gp_iface->details_editor); - editor_iface->edit_details(selected_tracks); + DetailsEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->details_editor; + details_editor_edit_details(editor, selected_tracks); } void gtkpod_register_lyrics_editor(LyricsEditor *editor) { @@ -520,13 +535,11 @@ gboolean gtkpod_has_lyrics_editor() { return (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->lyrics_editor != NULL); } -void gtkpod_edit_lyrics(GList *selected_tracks) { +void gtkpod_edit_lyrics(GList *tracks) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); - g_return_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->lyrics_editor); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - LyricsEditorInterface *editor_iface = LYRICS_EDITOR_GET_INTERFACE(gp_iface->lyrics_editor); - editor_iface->edit_lyrics(selected_tracks); + LyricsEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->lyrics_editor; + lyrics_editor_edit_lyrics(editor, tracks); } void gtkpod_register_photo_editor(PhotoEditor *editor) { @@ -542,25 +555,25 @@ void gtkpod_unregister_photo_editor() { gboolean gtkpod_has_photo_editor() { g_return_val_if_fail (GTKPOD_IS_APP(gtkpod_app), FALSE); - return (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->photo_editor != NULL); + PhotoEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->photo_editor; + return PHOTO_EDITOR_IS_EDITOR(editor); } void gtkpod_edit_photos(iTunesDB *itdb) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); g_return_if_fail (GTKPOD_APP_GET_INTERFACE (gtkpod_app)->photo_editor); - GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); - PhotoEditorInterface *editor_iface = PHOTO_EDITOR_GET_INTERFACE(gp_iface->photo_editor); - editor_iface->edit_photos(itdb); + PhotoEditor *editor = GTKPOD_APP_GET_INTERFACE (gtkpod_app)->photo_editor; + photo_editor_edit_photos(editor, itdb); } -void gtkpod_register_track_command(TrackCommandInterface *command) { +void gtkpod_register_track_command(TrackCommand *command) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); gp_iface->track_commands = g_list_append(gp_iface->track_commands, command); } -void gtkpod_unregister_track_command(TrackCommandInterface *command) { +void gtkpod_unregister_track_command(TrackCommand *command) { g_return_if_fail(GTKPOD_IS_APP(gtkpod_app)); GtkPodAppInterface *gp_iface = GTKPOD_APP_GET_INTERFACE (gtkpod_app); gp_iface->track_commands = g_list_remove(gp_iface->track_commands, command); @@ -583,11 +596,11 @@ static void gtkpod_display_command_ctx_menu(GList *track_cmds, GList *tracks) { cmds = track_cmds; while(cmds != NULL) { - TrackCommandInterface *cmd = cmds->data; + TrackCommand *cmd = cmds->data; GPtrArray *pairarr = g_ptr_array_new (); g_ptr_array_add (pairarr, cmd); g_ptr_array_add (pairarr, tracks); - hookup_menu_item(menu, cmd->text, GTK_STOCK_EXECUTE, G_CALLBACK (on_track_command_menuitem_activate), pairarr); + hookup_menu_item(menu, track_command_get_text(cmd), GTK_STOCK_EXECUTE, G_CALLBACK (on_track_command_menuitem_activate), pairarr); cmds = cmds->next; } @@ -608,8 +621,8 @@ void gtkpod_execute_track_command(GList *tracks) { break; case 1: ; - TrackCommandInterface *cmd = g_list_nth_data(gp_iface->track_commands, 0); - cmd->execute(tracks); + TrackCommand *cmd = g_list_nth_data(gp_iface->track_commands, 0); + track_command_execute(cmd, tracks); break; default: ; @@ -617,9 +630,9 @@ void gtkpod_execute_track_command(GList *tracks) { gchar *cmdpref = NULL; if (prefs_get_string_value(DEFAULT_TRACK_COMMAND_PREF_KEY, &cmdpref)) { for (gint i = 0; i < g_list_length(gp_iface->track_commands); ++i) { - TrackCommandInterface *cmd = g_list_nth_data(gp_iface->track_commands, i); - if (cmdpref && g_str_equal(cmdpref, cmd->id)) { - cmd->execute(tracks); + TrackCommand *cmd = g_list_nth_data(gp_iface->track_commands, i); + if (cmdpref && g_str_equal(cmdpref, track_command_get_id(cmd))) { + track_command_execute(cmd, tracks); return; } } diff --git a/libgtkpod/gtkpod_app_iface.h b/libgtkpod/gtkpod_app_iface.h index 3c6fcf7..2e8b0a6 100644 --- a/libgtkpod/gtkpod_app_iface.h +++ b/libgtkpod/gtkpod_app_iface.h @@ -202,7 +202,7 @@ void gtkpod_broadcast_preference_change(gchar *preference_name, gint value); void gtkpod_register_exporter(Exporter *exporter); void gtkpod_unregister_exporter(); gboolean gtkpod_has_exporter(); -ExporterInterface *gtkpod_get_exporter(); +Exporter *gtkpod_get_exporter(); void gtkpod_display_widget(GtkWidget *widget); @@ -221,15 +221,15 @@ void gtkpod_edit_details(GList* selected_tracks); void gtkpod_register_lyrics_editor(LyricsEditor *editor); void gtkpod_unregister_lyrics_editor(); gboolean gtkpod_has_lyrics_editor(); -void gtkpod_edit_lyrics(GList* selected_tracks); +void gtkpod_edit_lyrics(GList* tracks); void gtkpod_register_photo_editor(PhotoEditor *editor); void gtkpod_unregister_photo_editor(); gboolean gtkpod_has_photo_editor(); void gtkpod_edit_photos(iTunesDB *itdb); -void gtkpod_register_track_command(TrackCommandInterface *command); -void gtkpod_unregister_track_command(TrackCommandInterface *command); +void gtkpod_register_track_command(TrackCommand *command); +void gtkpod_unregister_track_command(TrackCommand *command); void gtkpod_execute_track_command(GList *tracks); GList *gtkpod_get_registered_track_commands(); diff --git a/libgtkpod/lyrics_editor_iface.c b/libgtkpod/lyrics_editor_iface.c index 5516b76..6f59a69 100644 --- a/libgtkpod/lyrics_editor_iface.c +++ b/libgtkpod/lyrics_editor_iface.c @@ -51,3 +51,11 @@ GType lyrics_editor_get_type(void) { } return type; } + +void lyrics_editor_edit_lyrics(LyricsEditor *editor, GList *tracks) { + if (! LYRICS_EDITOR_IS_EDITOR(editor)) + return; + + LYRICS_EDITOR_GET_INTERFACE(editor)->edit_lyrics(tracks); +} + diff --git a/libgtkpod/lyrics_editor_iface.h b/libgtkpod/lyrics_editor_iface.h index 0b5d382..1a9fa07 100644 --- a/libgtkpod/lyrics_editor_iface.h +++ b/libgtkpod/lyrics_editor_iface.h @@ -35,6 +35,11 @@ #include <gtk/gtk.h> #include "itdb.h" +#define LYRICS_EDITOR_TYPE (lyrics_editor_get_type ()) +#define LYRICS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LYRICS_EDITOR_TYPE, LyricsEditor)) +#define LYRICS_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LYRICS_EDITOR_TYPE)) +#define LYRICS_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), LYRICS_EDITOR_TYPE, LyricsEditorInterface)) + typedef struct _LyricsEditor LyricsEditor; typedef struct _LyricsEditorInterface LyricsEditorInterface; @@ -46,9 +51,6 @@ struct _LyricsEditorInterface { GType lyrics_editor_get_type(void); -#define LYRICS_EDITOR_TYPE (lyrics_editor_get_type ()) -#define LYRICS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LYRICS_EDITOR_TYPE, LyricsEditor)) -#define LYRICS_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LYRICS_EDITOR_TYPE)) -#define LYRICS_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), LYRICS_EDITOR_TYPE, LyricsEditorInterface)) +void lyrics_editor_edit_lyrics(LyricsEditor *editor, GList *tracks); #endif /* LYRICS_EDITOR_IFACE_H_ */ diff --git a/libgtkpod/misc_playlist.c b/libgtkpod/misc_playlist.c index 0a5ad75..03dbc94 100644 --- a/libgtkpod/misc_playlist.c +++ b/libgtkpod/misc_playlist.c @@ -1327,7 +1327,7 @@ void delete_playlist_head(DeleteAction deleteaction) { void copy_playlist_to_target_playlist(Playlist *pl, Playlist *t_pl) { GList *addtracks = NULL; Playlist *t_mpl; - ExporterInterface *exporter; + Exporter *exporter; g_return_if_fail (pl); g_return_if_fail (t_pl); @@ -1338,7 +1338,7 @@ void copy_playlist_to_target_playlist(Playlist *pl, Playlist *t_pl) { exporter = gtkpod_get_exporter(); g_return_if_fail(exporter); - addtracks = exporter->transfer_track_glist_between_itdbs(pl->itdb, t_pl->itdb, pl->members); + addtracks = exporter_transfer_track_glist_between_itdbs(exporter, pl->itdb, t_pl->itdb, pl->members); if (addtracks || !pl->members) { add_trackglist_to_playlist(t_pl, addtracks); gtkpod_statusbar_message(_("Copied '%s' playlist to '%s' in '%s'"), pl->name, t_pl->name, t_mpl->name); @@ -1353,7 +1353,7 @@ void copy_playlist_to_target_playlist(Playlist *pl, Playlist *t_pl) { void copy_playlist_to_target_itdb(Playlist *pl, iTunesDB *t_itdb) { Playlist *pl_n; GList *addtracks = NULL; - ExporterInterface *exporter; + Exporter *exporter; g_return_if_fail (pl); g_return_if_fail (t_itdb); @@ -1362,7 +1362,7 @@ void copy_playlist_to_target_itdb(Playlist *pl, iTunesDB *t_itdb) { g_return_if_fail(exporter); if (pl->itdb != t_itdb) { - addtracks = exporter->transfer_track_glist_between_itdbs(pl->itdb, t_itdb, pl->members); + addtracks = exporter_transfer_track_glist_between_itdbs(exporter, pl->itdb, t_itdb, pl->members); if (addtracks || !pl->members) { pl_n = gp_playlist_add_new(t_itdb, pl->name, FALSE, -1); add_trackglist_to_playlist(pl_n, addtracks); diff --git a/libgtkpod/misc_track.c b/libgtkpod/misc_track.c index 3a01ce0..65b115e 100644 --- a/libgtkpod/misc_track.c +++ b/libgtkpod/misc_track.c @@ -2080,7 +2080,7 @@ void copy_tracks_to_target_playlist(GList *tracks, Playlist *t_pl) { Track *first; Playlist *mpl; gint n; - ExporterInterface *exporter; + Exporter *exporter; g_return_if_fail (tracks); g_return_if_fail (t_pl); @@ -2095,7 +2095,7 @@ void copy_tracks_to_target_playlist(GList *tracks, Playlist *t_pl) { if (tracks) { first = tracks->data; g_return_if_fail (first); - addtracks = exporter->transfer_track_glist_between_itdbs(first->itdb, t_pl->itdb, tracks); + addtracks = exporter_transfer_track_glist_between_itdbs(exporter, first->itdb, t_pl->itdb, tracks); add_trackglist_to_playlist(t_pl, addtracks); } n = g_list_length(addtracks); @@ -2113,7 +2113,7 @@ void copy_tracks_to_target_itdb(GList *tracks, iTunesDB *t_itdb) { Track *first = tracks->data; Playlist *mpl; gint n; - ExporterInterface *exporter; + Exporter *exporter; g_return_if_fail(tracks); g_return_if_fail(t_itdb); @@ -2124,7 +2124,7 @@ void copy_tracks_to_target_itdb(GList *tracks, iTunesDB *t_itdb) { exporter = gtkpod_get_exporter(); g_return_if_fail(exporter); - addtracks = exporter->transfer_track_glist_between_itdbs(first->itdb, t_itdb, tracks); + addtracks = exporter_transfer_track_glist_between_itdbs(exporter, first->itdb, t_itdb, tracks); if (addtracks) { add_trackglist_to_playlist(mpl, addtracks); diff --git a/libgtkpod/photo_editor_iface.c b/libgtkpod/photo_editor_iface.c index 65924f3..7a301e0 100644 --- a/libgtkpod/photo_editor_iface.c +++ b/libgtkpod/photo_editor_iface.c @@ -51,3 +51,10 @@ GType photo_editor_get_type(void) { } return type; } + +void photo_editor_edit_photos(PhotoEditor *editor, iTunesDB *itdb) { + if (!PHOTO_EDITOR_IS_EDITOR(editor)) + return; + + PHOTO_EDITOR_GET_INTERFACE(editor)->edit_photos(itdb); +} diff --git a/libgtkpod/photo_editor_iface.h b/libgtkpod/photo_editor_iface.h index ee3fb8f..2f16efb 100644 --- a/libgtkpod/photo_editor_iface.h +++ b/libgtkpod/photo_editor_iface.h @@ -35,6 +35,11 @@ #include <gtk/gtk.h> #include "itdb.h" +#define PHOTO_EDITOR_TYPE (photo_editor_get_type ()) +#define PHOTO_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PHOTO_EDITOR_TYPE, PhotoEditor)) +#define PHOTO_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PHOTO_EDITOR_TYPE)) +#define PHOTO_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), PHOTO_EDITOR_TYPE, PhotoEditorInterface)) + typedef struct _PhotoEditor PhotoEditor; typedef struct _PhotoEditorInterface PhotoEditorInterface; @@ -46,9 +51,6 @@ struct _PhotoEditorInterface { GType photo_editor_get_type(void); -#define PHOTO_EDITOR_TYPE (photo_editor_get_type ()) -#define PHOTO_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PHOTO_EDITOR_TYPE, PhotoEditor)) -#define PHOTO_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PHOTO_EDITOR_TYPE)) -#define PHOTO_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), PHOTO_EDITOR_TYPE, PhotoEditorInterface)) +void photo_editor_edit_photos(PhotoEditor *editor, iTunesDB *itdb); #endif /* PHOTO_EDITOR_IFACE_H_ */ diff --git a/libgtkpod/repository_editor_iface.c b/libgtkpod/repository_editor_iface.c index 1c3b51c..a5369ee 100644 --- a/libgtkpod/repository_editor_iface.c +++ b/libgtkpod/repository_editor_iface.c @@ -53,3 +53,24 @@ GType repository_editor_get_type(void) { } return type; } + +void repository_editor_edit_repository(RepositoryEditor *editor, iTunesDB *itdb, Playlist *playlist) { + if (! REPOSITORY_EDITOR_IS_EDITOR(editor)) + return; + + REPOSITORY_EDITOR_GET_INTERFACE(editor)->edit_repository(itdb, playlist); +} + +gboolean repository_editor_init_repository(RepositoryEditor *editor, iTunesDB *itdb) { + if (! REPOSITORY_EDITOR_IS_EDITOR(editor)) + return FALSE; + + return REPOSITORY_EDITOR_GET_INTERFACE(editor)->init_repository(itdb); +} + +void repository_edtor_set_repository_model(RepositoryEditor *editor, iTunesDB *itdb, const gchar *old_model) { + if (! REPOSITORY_EDITOR_IS_EDITOR(editor)) + return; + + REPOSITORY_EDITOR_GET_INTERFACE(editor)->set_repository_model(itdb, old_model); +} diff --git a/libgtkpod/repository_editor_iface.h b/libgtkpod/repository_editor_iface.h index 69197ef..db9b435 100644 --- a/libgtkpod/repository_editor_iface.h +++ b/libgtkpod/repository_editor_iface.h @@ -35,6 +35,11 @@ #include <gtk/gtk.h> #include "itdb.h" +#define REPOSITORY_EDITOR_TYPE (repository_editor_get_type ()) +#define REPOSITORY_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), REPOSITORY_EDITOR_TYPE, RepositoryEditor)) +#define REPOSITORY_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REPOSITORY_EDITOR_TYPE)) +#define REPOSITORY_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REPOSITORY_EDITOR_TYPE, RepositoryEditorInterface)) + typedef struct _RepositoryEditor RepositoryEditor; typedef struct _RepositoryEditorInterface RepositoryEditorInterface; @@ -48,9 +53,8 @@ struct _RepositoryEditorInterface { GType repository_editor_get_type(void); -#define REPOSITORY_EDITOR_TYPE (repository_editor_get_type ()) -#define REPOSITORY_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), REPOSITORY_EDITOR_TYPE, RepositoryEditor)) -#define REPOSITORY_EDITOR_IS_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REPOSITORY_EDITOR_TYPE)) -#define REPOSITORY_EDITOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REPOSITORY_EDITOR_TYPE, RepositoryEditorInterface)) +void repository_editor_edit_repository(RepositoryEditor *editor, iTunesDB *itdb, Playlist *playlist); +gboolean repository_editor_init_repository(RepositoryEditor *editor, iTunesDB *itdb); +void repository_edtor_set_repository_model(RepositoryEditor *editor, iTunesDB *itdb, const gchar *old_model); #endif /* REPOSITORY_EDITOR_IFACE_H_ */ diff --git a/libgtkpod/track_command_iface.c b/libgtkpod/track_command_iface.c index 1ac814f..34183bf 100644 --- a/libgtkpod/track_command_iface.c +++ b/libgtkpod/track_command_iface.c @@ -45,17 +45,42 @@ GType track_command_get_type(void) { if (!type) { static const GTypeInfo info = { sizeof(TrackCommandInterface), (GBaseInitFunc) track_command_base_init, NULL, NULL, NULL, NULL, 0, 0, NULL }; - type = g_type_register_static(G_TYPE_INTERFACE, "TrackCommandInterface", &info, 0); + type = g_type_register_static(G_TYPE_INTERFACE, "TrackCommand", &info, 0); g_type_interface_add_prerequisite(type, G_TYPE_OBJECT); } return type; } +gchar *track_command_get_id(TrackCommand *command) { + if (!TRACK_IS_COMMAND(command)) + return NULL; + + return TRACK_COMMAND_GET_INTERFACE(command)->id; +} + +gchar *track_command_get_text(TrackCommand *command) { + if (!TRACK_IS_COMMAND(command)) + return NULL; + + return TRACK_COMMAND_GET_INTERFACE(command)->text; +} + +void track_command_execute(TrackCommand *command, GList *tracks) { + if (!tracks) { + return; + } + + if (!TRACK_IS_COMMAND(command)) + return; + + return TRACK_COMMAND_GET_INTERFACE(command)->execute(tracks); +} + void on_track_command_menuitem_activate(GtkMenuItem *mi, gpointer data) { GPtrArray *pairarr = (GPtrArray *) data; - TrackCommandInterface *cmd = g_ptr_array_index(pairarr, 0); + TrackCommand *cmd = g_ptr_array_index(pairarr, 0); GList *tracks = g_ptr_array_index(pairarr, 1); - cmd->execute(tracks); + track_command_execute(cmd, tracks); g_ptr_array_free(pairarr, FALSE); } diff --git a/libgtkpod/track_command_iface.h b/libgtkpod/track_command_iface.h index cb9d99e..59e3864 100644 --- a/libgtkpod/track_command_iface.h +++ b/libgtkpod/track_command_iface.h @@ -56,6 +56,9 @@ GType track_command_get_type(void); #define TRACK_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACK_COMMAND_TYPE)) #define TRACK_COMMAND_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), TRACK_COMMAND_TYPE, TrackCommandInterface)) +gchar *track_command_get_id(TrackCommand *command); +gchar *track_command_get_text(TrackCommand *command); +void track_command_execute(TrackCommand *command, GList *tracks); void on_track_command_menuitem_activate(GtkMenuItem *mi, gpointer data); #endif /* TRACK_COMMAND_IFACE_H_ */ diff --git a/plugins/exporter/exporter_actions.c b/plugins/exporter/exporter_actions.c index 2027b6f..18d40fb 100644 --- a/plugins/exporter/exporter_actions.c +++ b/plugins/exporter/exporter_actions.c @@ -40,14 +40,14 @@ void on_export_tracks_to_playlist_file(GtkAction *action, ExporterPlugin* plugin GList *tracks = gtkpod_get_selected_tracks(); g_return_if_fail(tracks); - ExporterInterface *exporter = gtkpod_get_exporter(); - exporter->export_tracks_to_playlist_file(tracks); + Exporter *exporter = gtkpod_get_exporter(); + exporter_export_tracks_to_playlist_file(exporter, tracks); } void on_export_tracks_to_filesystem(GtkAction *action, ExporterPlugin* plugin) { GList *tracks = gtkpod_get_selected_tracks(); g_return_if_fail(tracks); - ExporterInterface *exporter = gtkpod_get_exporter(); - exporter->export_tracks_as_files(tracks, NULL, FALSE, NULL); + Exporter *exporter = gtkpod_get_exporter(); + exporter_export_tracks_as_files(exporter, tracks, NULL, FALSE, NULL); } diff --git a/plugins/media_player/plugin.c b/plugins/media_player/plugin.c index f2a2bf9..fef536d 100644 --- a/plugins/media_player/plugin.c +++ b/plugins/media_player/plugin.c @@ -84,7 +84,7 @@ static gboolean activate_plugin(AnjutaPlugin *plugin) { init_media_player(media_player_plugin->media_player_window); - gtkpod_register_track_command(TRACK_COMMAND_GET_INTERFACE(media_player_plugin)); + gtkpod_register_track_command(TRACK_COMMAND(media_player_plugin)); // Do not show all as video widget is initially invisible gtk_widget_show(media_player_plugin->media_player_window); @@ -100,7 +100,7 @@ static gboolean deactivate_plugin(AnjutaPlugin *plugin) { media_player_plugin = (MediaPlayerPlugin*) plugin; ui = anjuta_shell_get_ui(plugin->shell, NULL); - gtkpod_unregister_track_command(TRACK_COMMAND_GET_INTERFACE(media_player_plugin)); + gtkpod_unregister_track_command(TRACK_COMMAND(media_player_plugin)); /* Destroy the browser */ destroy_media_player(); diff --git a/plugins/playlist_display/display_playlists.c b/plugins/playlist_display/display_playlists.c index 1adcaad..db026cd 100644 --- a/plugins/playlist_display/display_playlists.c +++ b/plugins/playlist_display/display_playlists.c @@ -509,7 +509,7 @@ static void pm_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gint x, gboolean path_ok; gboolean del_src; - ExporterInterface *exporter = gtkpod_get_exporter(); + Exporter *exporter = gtkpod_get_exporter(); g_return_if_fail(exporter); /* printf ("drag_data_received: x y a: %d %d %d\n", x, y, dc->suggested_action); */ @@ -619,7 +619,7 @@ static void pm_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gint x, if ((pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE) || (pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER)) { /* drop into existing playlist */ /* copy files from iPod if necessary */ - GList *trackglist = exporter->transfer_track_names_between_itdbs(tr_s->itdb, pl->itdb, data_copy); + GList *trackglist = exporter_transfer_track_names_between_itdbs(exporter, tr_s->itdb, pl->itdb, data_copy); if (trackglist) { add_trackglist_to_playlist(pl, trackglist); g_list_free(trackglist); @@ -641,7 +641,7 @@ static void pm_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gint x, if (plitem) { /* copy files from iPod if necessary */ - GList *trackglist = exporter->transfer_track_names_between_itdbs(tr_s->itdb, pl->itdb, data_copy); + GList *trackglist = exporter_transfer_track_names_between_itdbs(exporter, tr_s->itdb, pl->itdb, data_copy); if (trackglist) { add_trackglist_to_playlist(plitem, trackglist); g_list_free(trackglist); @@ -776,7 +776,7 @@ static void pm_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gint x, g_return_if_fail (pl_d); /* copy files from iPod if necessary */ - trackglist = exporter->transfer_track_glist_between_itdbs(pl_s->itdb, pl_d->itdb, pl_s->members); + trackglist = exporter_transfer_track_glist_between_itdbs(exporter, pl_s->itdb, pl_d->itdb, pl_s->members); /* check if copying went fine (trackglist is empty if pl_s->members is empty, so this must not be counted as diff --git a/plugins/track_display/track_display_preferences.c b/plugins/track_display/track_display_preferences.c index 85d2f38..4dee200 100644 --- a/plugins/track_display/track_display_preferences.c +++ b/plugins/track_display/track_display_preferences.c @@ -348,8 +348,8 @@ static void trkcmd_combobox_changed(GtkComboBox *combo) { if (activeindex > -1) { GList *cmds = g_object_get_data(G_OBJECT(combo), "cmds"); - TrackCommandInterface *cmd = g_list_nth_data(cmds, activeindex); - prefs_set_string(DEFAULT_TRACK_COMMAND_PREF_KEY, cmd->id); + TrackCommand *cmd = g_list_nth_data(cmds, activeindex); + prefs_set_string(DEFAULT_TRACK_COMMAND_PREF_KEY, track_command_get_id(cmd)); } } @@ -373,9 +373,9 @@ static void populate_track_cmd_combo(GtkComboBox *combo) { prefs_get_string_value(DEFAULT_TRACK_COMMAND_PREF_KEY, &cmdpref); for (i = 0; i < g_list_length(trkcmds); ++i) { - TrackCommandInterface *cmd = g_list_nth_data(trkcmds, i); - gtk_combo_box_append_text(combo, _(cmd->text)); - if (cmdpref && g_str_equal(cmdpref, cmd->id)) + TrackCommand *cmd = g_list_nth_data(trkcmds, i); + gtk_combo_box_append_text(combo, _(track_command_get_text(cmd))); + if (cmdpref && g_str_equal(cmdpref, track_command_get_id(cmd))) activeindex = i; } ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today http://p.sf.net/sfu/msIE9-sfdev2dev _______________________________________________ gtkpod-cvs2 mailing list gtkpod-cvs2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2