commit de6df5dac6313bcb5e31294439c73a045f299e6d Author: phantomjinx <p.g.richard...@phantomjinx.co.uk> Date: Tue Jul 13 21:40:07 2010 +0100
Remove itdb callback and photo support * gtkpod_app_iface.* * itdb setting implied by the setting of the playlist so no need for the separate setter function or callback * playlist_display/plugin.c * Playlist display has no need to worry about tracks being removed since the view never displays tracks * display_playlists.c * pm_remove_track and pm_add_track simply notify other UI components so no longer necessary * file_itunesdb.c * display_photo.c * Re-implement photo database support * Add load_photodb function from display_photo since it is a library function that has no UI elments * display_photo to become core of photo plugin TODO | 23 +++ libgtkpod/gtkpod_app_iface.c | 17 +-- libgtkpod/gtkpod_app_iface.h | 1 - plugins/info_display/plugin.c | 1 - plugins/playlist_display/plugin.c | 2 - src/display_photo.c | 307 ++++++++++++++++--------------------- src/display_playlists.c | 108 ++------------ src/file_itunesdb.c | 52 ++++++- 8 files changed, 214 insertions(+), 297 deletions(-) --- diff --git a/TODO b/TODO index 011b76e..67204d6 100644 --- a/TODO +++ b/TODO @@ -96,3 +96,26 @@ Notes on trial build using ubuntu 910 # Change configure.in to signal at the bottom status of webkit #- pkconfig.pc for libgtkpod +1) Deleted Music Library +2) Created Music Library +3) Added localmusic + + +** Message: TODO signal all things such as conversions to cancel + +(lt-gtkpod:12130): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkFileChooser' + +(lt-gtkpod:12130): Gtk-CRITICAL **: gtk_file_chooser_get_current_folder: assertion `GTK_IS_FILE_CHOOSER (chooser)' failed + +** (lt-gtkpod:12130): WARNING **: busy push XXX +** Message: TODO load photodb handle + +** Message: TODO signal all things such as conversions to cancel + +** (lt-gtkpod:12130): CRITICAL **: coverart_select_cover: assertion `key' failed +** Message: TODO - update smart playlists before writing + + +(lt-gtkpod:12130): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed +** Message: TODO - cleanup gphoto_window on shutdown + diff --git a/libgtkpod/gtkpod_app_iface.c b/libgtkpod/gtkpod_app_iface.c index 254bf58..7a4e9b6 100644 --- a/libgtkpod/gtkpod_app_iface.c +++ b/libgtkpod/gtkpod_app_iface.c @@ -251,18 +251,6 @@ iTunesDB* gtkpod_get_current_itdb() { return GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_itdb; } -void gtkpod_set_current_itdb(iTunesDB* itdb) { - g_return_if_fail (GTKPOD_IS_APP(gtkpod_app)); - GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_itdb = itdb; - - if (!itdb) // If setting itdb to null then set playlist to null too - gtkpod_set_current_playlist(NULL); - - if (itdb && g_list_index(itdb->playlists, gtkpod_get_current_playlist()) == -1) - // if playlist is not in itdb then set it to null - gtkpod_set_current_playlist(NULL); -} - Playlist* gtkpod_get_current_playlist() { g_return_val_if_fail (GTKPOD_IS_APP(gtkpod_app), NULL); return GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_playlist; @@ -273,8 +261,11 @@ void gtkpod_set_current_playlist(Playlist* playlist) { GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_playlist = playlist; if (playlist) {// if playlist not null then set its itdb as current - gtkpod_set_current_itdb(playlist->itdb); + GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_itdb = playlist->itdb; gtkpod_set_displayed_tracks(playlist->members); + } else { + GTKPOD_APP_GET_INTERFACE (gtkpod_app)->current_itdb = NULL; + gtkpod_set_displayed_tracks(NULL); } g_signal_emit(gtkpod_app, gtkpod_app_signals[PLAYLIST_SELECTED], 0, playlist); diff --git a/libgtkpod/gtkpod_app_iface.h b/libgtkpod/gtkpod_app_iface.h index 88403d0..52c7053 100644 --- a/libgtkpod/gtkpod_app_iface.h +++ b/libgtkpod/gtkpod_app_iface.h @@ -174,7 +174,6 @@ void gtkpod_notify_data_changed(iTunesDB *itdb); void gtkpod_notify_data_unchanged(iTunesDB *itdb); iTunesDB* gtkpod_get_current_itdb(); -void gtkpod_set_current_itdb(iTunesDB* itdb); Playlist* gtkpod_get_current_playlist(); void gtkpod_set_current_playlist(Playlist* playlist); diff --git a/plugins/info_display/plugin.c b/plugins/info_display/plugin.c index de6941a..cd968a8 100644 --- a/plugins/info_display/plugin.c +++ b/plugins/info_display/plugin.c @@ -74,7 +74,6 @@ static gboolean activate_plugin(AnjutaPlugin *plugin) { g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_SELECTED, G_CALLBACK (info_display_playlist_selected_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_ADDED, G_CALLBACK (info_display_playlist_added_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_REMOVED, G_CALLBACK (info_display_playlist_removed_cb), NULL); - g_signal_connect (gtkpod_app, SIGNAL_TRACK_UPDATED, G_CALLBACK (info_display_track_updated_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_TRACK_REMOVED, G_CALLBACK (info_display_track_removed_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_TRACKS_DISPLAYED, G_CALLBACK (info_display_tracks_displayed_cb), NULL); diff --git a/plugins/playlist_display/plugin.c b/plugins/playlist_display/plugin.c index 02e27bf..c58b174 100644 --- a/plugins/playlist_display/plugin.c +++ b/plugins/playlist_display/plugin.c @@ -335,7 +335,6 @@ static gboolean activate_plugin(AnjutaPlugin *plugin) { g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_SELECTED, G_CALLBACK (playlist_display_select_playlist_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_ADDED, G_CALLBACK (playlist_display_playlist_added_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_PLAYLIST_REMOVED, G_CALLBACK (playlist_display_playlist_removed_cb), NULL); - g_signal_connect (gtkpod_app, SIGNAL_TRACK_REMOVED, G_CALLBACK (playlist_display_track_removed_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_ITDB_ADDED, G_CALLBACK (playlist_display_itdb_added_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_ITDB_REMOVED, G_CALLBACK (playlist_display_itdb_removed_cb), NULL); g_signal_connect (gtkpod_app, SIGNAL_ITDB_UPDATED, G_CALLBACK (playlist_display_update_itdb_cb), NULL); @@ -360,7 +359,6 @@ static gboolean deactivate_plugin(AnjutaPlugin *plugin) { g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_select_playlist_cb), plugin); g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_playlist_added_cb), plugin); g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_playlist_removed_cb), plugin); - g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_track_removed_cb), plugin); g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_itdb_added_cb), plugin); g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_itdb_removed_cb), plugin); g_signal_handlers_disconnect_by_func (plugin->shell, G_CALLBACK (playlist_display_update_itdb_cb), plugin); diff --git a/src/display_photo.c b/src/display_photo.c index 65ce748..07c4d7b 100644 --- a/src/display_photo.c +++ b/src/display_photo.c @@ -1,7 +1,7 @@ /* |Copyright (C) 2007 P.G. Richardson <phantom_sf at users.sourceforge.net> |Part of the gtkpod project. - | + | |URL: http://www.gtkpod.org/ |URL: http://gtkpod.sourceforge.net/ | @@ -125,59 +125,12 @@ enum }; /** - * gphoto_load_photodb: - * - * Using the info in the provided itunes db, load the photo db - * from the ipod if there is one present. Reference it in the - * extra itunes db data structure for later use. - * - * @ itdb: itunes database - * - */ -void gphoto_load_photodb(iTunesDB *itdb) -{ - ExtraiTunesDBData *eitdb; - PhotoDB *db; - const gchar *mp; - GError *error= NULL; - - g_return_if_fail (itdb); - - eitdb = itdb->userdata; - g_return_if_fail (eitdb); - g_return_if_fail (eitdb->photodb == NULL); - - mp = itdb_get_mountpoint (itdb); - db = itdb_photodb_parse (mp, &error); - if (db == NULL) - { - if (itdb_device_supports_photo (itdb->device)) - { - if (error) - { - gtkpod_warning (_("Error reading iPod photo database (%s).\n"), error->message); - } else - { - gtkpod_warning (_("Error reading iPod photo database.\n")); - } - } - } - if (error) - { - g_error_free (error); - error = NULL; - } - /* Set the reference to the photo database */ - eitdb->photodb = db; -} - -/** * gphoto_display_photo_window * * When the photo playlist is clicked on, it hands off to this * function which changes the entire display to the photo * window - * + * * @itdb: itunes db associated with the photo playlist clicked on */ void gphoto_display_photo_window(iTunesDB *itdb) @@ -217,7 +170,7 @@ void gphoto_display_photo_window(iTunesDB *itdb) * When the photo playlist is NOT clicked on; * this changes the entire display back to original * rather than the photo window. - * + * */ void gphoto_change_to_photo_window(gboolean showflag) { @@ -292,7 +245,7 @@ void gphoto_change_to_photo_window(gboolean showflag) photo_remove_image_menuItem = GTK_MENU_ITEM (gtkpod_xml_get_widget (photo_xml, "photo_remove_image_menuItem")); photo_view_full_size_menuItem = GTK_MENU_ITEM (gtkpod_xml_get_widget (photo_xml, "photo_view_full_size_menuItem")); photo_rename_album_menuItem = GTK_MENU_ITEM (gtkpod_xml_get_widget (photo_xml, "photo_rename_album_menuItem")); - + photo_viewport = gtkpod_xml_get_widget (photo_xml, "photo_viewport"); g_object_ref (photo_album_window); g_object_ref (photo_thumb_window); @@ -303,17 +256,17 @@ void gphoto_change_to_photo_window(gboolean showflag) gtk_widget_destroy (photowin); /* Bring the menus to life */ - g_signal_connect (G_OBJECT(photo_add_album_menuItem), "activate", G_CALLBACK(on_photodb_add_album_menuItem_activate), + g_signal_connect (G_OBJECT(photo_add_album_menuItem), "activate", G_CALLBACK(on_photodb_add_album_menuItem_activate), NULL); - g_signal_connect (G_OBJECT(photo_add_image_menuItem), "activate", G_CALLBACK(on_photodb_add_image_menuItem_activate), + g_signal_connect (G_OBJECT(photo_add_image_menuItem), "activate", G_CALLBACK(on_photodb_add_image_menuItem_activate), NULL); - g_signal_connect (G_OBJECT(photo_add_image_dir_menuItem), "activate", G_CALLBACK(on_photodb_add_image_dir_menuItem_activate), + g_signal_connect (G_OBJECT(photo_add_image_dir_menuItem), "activate", G_CALLBACK(on_photodb_add_image_dir_menuItem_activate), NULL); - g_signal_connect (G_OBJECT(photo_remove_album_menuItem), "activate", G_CALLBACK(on_photodb_remove_album_menuItem_activate), + g_signal_connect (G_OBJECT(photo_remove_album_menuItem), "activate", G_CALLBACK(on_photodb_remove_album_menuItem_activate), NULL); - g_signal_connect (G_OBJECT(photo_remove_image_menuItem), "activate", G_CALLBACK(on_photodb_remove_image_menuItem_activate), + g_signal_connect (G_OBJECT(photo_remove_image_menuItem), "activate", G_CALLBACK(on_photodb_remove_image_menuItem_activate), NULL); - g_signal_connect (G_OBJECT(photo_view_full_size_menuItem), "activate", G_CALLBACK(on_photodb_view_full_size_menuItem_activate), + g_signal_connect (G_OBJECT(photo_view_full_size_menuItem), "activate", G_CALLBACK(on_photodb_view_full_size_menuItem_activate), NULL); g_signal_connect (G_OBJECT(photo_rename_album_menuItem), "activate", G_CALLBACK(on_photodb_rename_album_menuItem_activate), NULL); @@ -321,7 +274,7 @@ void gphoto_change_to_photo_window(gboolean showflag) if (gtk_widget_get_parent (photo_viewport) == NULL) gtk_container_add (GTK_CONTAINER (main_vbox), photo_viewport); - + } else { if (!GTK_WIDGET_VISIBLE (paned1)) @@ -373,7 +326,7 @@ void gphoto_change_to_photo_window(gboolean showflag) * Construct the album tree based upon the albums * stored on the iPod. If necessary destory and old * existing tree object. - * + * */ static void gphoto_create_albumview() { @@ -401,7 +354,7 @@ static void gphoto_create_albumview() gtk_widget_set_events (GTK_WIDGET(album_view), GDK_KEY_PRESS_MASK); renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (album_view, -1, _("Photo Albums"), renderer, "text", COL_ALBUM_NAME, + gtk_tree_view_insert_column_with_attributes (album_view, -1, _("Photo Albums"), renderer, "text", COL_ALBUM_NAME, NULL); /* create model */ @@ -429,7 +382,7 @@ static void gphoto_create_albumview() /* function to be enacted when the album is changed */ selection = gtk_tree_view_get_selection (album_view); - g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (gphoto_album_selection_changed), + g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (gphoto_album_selection_changed), NULL); g_signal_connect (G_OBJECT (album_view), "button-press-event", G_CALLBACK (gphoto_button_press), (gpointer) GPHOTO_ALBUM_VIEW); @@ -439,18 +392,18 @@ static void gphoto_create_albumview() /* Dnd destinaton for album view */ gtk_drag_dest_set ( - GTK_WIDGET (album_view), - GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT, - photo_drop_types, - TGNR (photo_drop_types), + GTK_WIDGET (album_view), + GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT, + photo_drop_types, + TGNR (photo_drop_types), GDK_ACTION_COPY|GDK_ACTION_MOVE); g_signal_connect ((gpointer) album_view, "drag-drop", - G_CALLBACK (dnd_album_drag_drop), + G_CALLBACK (dnd_album_drag_drop), NULL); - + g_signal_connect ((gpointer) album_view, "drag-data-received", - G_CALLBACK (dnd_album_drag_data_received), + G_CALLBACK (dnd_album_drag_data_received), NULL); } @@ -460,7 +413,7 @@ static void gphoto_create_albumview() * Construct the thumbnail tree based upon the * photos stored on the iPod associated with the * selected album. - * + * */ static void gphoto_create_thumbnailview() { @@ -489,12 +442,12 @@ static void gphoto_create_thumbnailview() gtk_drag_source_set ( GTK_WIDGET (thumbnail_view), GDK_BUTTON1_MASK, - photo_drag_types, + photo_drag_types, TGNR (photo_drag_types), GDK_ACTION_COPY|GDK_ACTION_MOVE); - g_signal_connect ((gpointer) thumbnail_view, "drag-data-get", - G_CALLBACK (dnd_images_drag_data_get), + g_signal_connect ((gpointer) thumbnail_view, "drag-data-get", + G_CALLBACK (dnd_images_drag_data_get), NULL); } @@ -503,9 +456,9 @@ static void gphoto_create_thumbnailview() * * Create the model for the thumbnail view * based upon the selected album. - * + * * @ album_name: name of the selected album or null if none selected - * + * */ static void gphoto_build_thumbnail_model(gchar *album_name) { @@ -547,7 +500,7 @@ static void gphoto_build_thumbnail_model(gchar *album_name) gtk_icon_view_set_item_width(thumbnail_view, -1); // let the model decide how wide /* function to be enacted when the thumbnail is changed */ - g_signal_connect (thumbnail_view, "selection-changed", G_CALLBACK (gphoto_thumb_selection_changed), + g_signal_connect (thumbnail_view, "selection-changed", G_CALLBACK (gphoto_thumb_selection_changed), NULL); /* Disable the remove image menu item until an image is selected */ @@ -563,10 +516,10 @@ static void gphoto_build_thumbnail_model(gchar *album_name) * * When the album selection is changed, rebuild the thumbnail model * to display those thumbnails only associated with the album. - * + * * @ selection: album name selection * @ user_data: not used. - * + * */ static void gphoto_album_selection_changed(GtkTreeSelection *selection, gpointer user_data) { @@ -582,7 +535,7 @@ static void gphoto_album_selection_changed(GtkTreeSelection *selection, gpointer { /* Enable the remove album menu item now that one is selected */ gtk_widget_set_sensitive (GTK_WIDGET(photo_remove_album_menuItem), TRUE); - + selected_album = itdb_photodb_photoalbum_by_name (photodb, album_name); g_free (album_name); @@ -604,10 +557,10 @@ static void gphoto_album_selection_changed(GtkTreeSelection *selection, gpointer * * When the thumb view selection is changed, update the * preview image to display that which is selected. - * + * * @ iconview: thumbnail view * @ user_data: not used - * + * */ static void gphoto_thumb_selection_changed(GtkIconView *iconview, gpointer user_data) { @@ -637,18 +590,18 @@ static void gphoto_thumb_selection_changed(GtkIconView *iconview, gpointer user_ * gphoto_display_photo_preview: * * Display the supplied photo is the preview window. - * + * * @ artwork: photo to be displayed - * + * */ static void gphoto_display_photo_preview(Artwork *artwork) { GdkPixbuf *pixbuf; - + g_return_if_fail (artwork); pixbuf = itdb_artwork_get_pixbuf (device, artwork, - PHOTO_FULL_SCREEN_WIDTH, + PHOTO_FULL_SCREEN_WIDTH, PHOTO_FULL_SCREEN_HEIGHT); g_return_if_fail (pixbuf); @@ -658,12 +611,12 @@ static void gphoto_display_photo_preview(Artwork *artwork) } /** - * + * * signal_data_changed: - * + * * Convenience function that sets the flags on the Extra iTunes Database * that the photo database has changed and will need saving - * + * */ static void signal_data_changed() { @@ -672,7 +625,7 @@ static void signal_data_changed() eitdb = ipod_itdb->userdata; eitdb->photo_data_changed = TRUE; eitdb->data_changed = TRUE; - + gtk_image_clear (photo_preview_image); } @@ -681,9 +634,9 @@ static void signal_data_changed() * * Given the selection of the album_treeview, * return the album name selected.. - * + * * @ selection: GtkTreeSelection - * + * * Returns: * string value representing the album name selected. Must be * g_free()ed after use. @@ -710,7 +663,7 @@ static gchar *gphoto_get_selected_album_name(GtkTreeSelection *selection) * * Function to return the number of photos * currently selected in the iconview. - * + * */ gint gphoto_get_selected_photo_count () { @@ -720,7 +673,7 @@ gint gphoto_get_selected_photo_count () if (selected_items == NULL) return 0; - + return g_list_length (selected_items); } @@ -730,9 +683,9 @@ gint gphoto_get_selected_photo_count () * Add a photo from file name to the photo database and * hence to the gui. If an album is selected other than the * Photo Library then the photo is added to it. - * + * * @ photo_filename: gchar * - * + * */ static void gphoto_add_image_to_database(gchar *photo_filename) { @@ -743,7 +696,7 @@ static void gphoto_add_image_to_database(gchar *photo_filename) g_return_if_fail (photo_filename); - /* Add the photo to the photo database and the + /* Add the photo to the photo database and the * default photo library album */ image = itdb_photodb_add_photo (photodb, photo_filename, -1, GDK_PIXBUF_ROTATE_NONE, &error); @@ -769,7 +722,7 @@ static void gphoto_add_image_to_database(gchar *photo_filename) if (selected_album->album_type != 0x01) { - /* Add the photo to the selected album only if it is not + /* Add the photo to the selected album only if it is not * the Photo Library, as already done that. */ itdb_photodb_photoalbum_add_photo (photodb, selected_album, image, -1); @@ -784,9 +737,9 @@ static void gphoto_add_image_to_database(gchar *photo_filename) * gphoto_add_image_to_iconview * * Add an Artwork image to the icon_view - * + * * @ photo: Artwork - * + * */ static void gphoto_add_image_to_iconview(Artwork *photo, gint index) { @@ -805,7 +758,7 @@ static void gphoto_add_image_to_iconview(Artwork *photo, gint index) gchar *index_str= NULL; index_str = g_strdup_printf ("%d", index); - + /* Add a new row to the model */ gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, COL_THUMB_NAIL, pixbuf, COL_THUMB_FILENAME, index_str, COL_THUMB_ARTWORK, photo, -1); @@ -817,7 +770,7 @@ static void gphoto_add_image_to_iconview(Artwork *photo, gint index) * gphoto_remove_album_from_database * * Remove the selected album from the photo database and the view - * + * */ void gphoto_remove_album_from_database() { @@ -835,14 +788,14 @@ void gphoto_remove_album_from_database() gtk_tree_model_get (album_model, &iter, COL_ALBUM_NAME, &album_name, -1); else return; - + g_return_if_fail (album_name); /* Find the selected album. If no selection then returns the Main Album */ selected_album = itdb_photodb_photoalbum_by_name (photodb, album_name); g_return_if_fail (selected_album); g_free (album_name); - + if (selected_album->album_type == 0x01) { gtkpod_warning (_("The Photo Library album cannot be removed")); @@ -875,7 +828,7 @@ void gphoto_remove_album_from_database() GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, _("Yes. Do Not Display Again"), PHOTO_YES_DONT_DISPLAY_RESPONSE, NULL); - + result = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); @@ -895,7 +848,7 @@ void gphoto_remove_album_from_database() break; } } - + album_model = gtk_tree_view_get_model (album_view); gtk_list_store_remove (GTK_LIST_STORE(album_model), &iter); @@ -911,7 +864,7 @@ void gphoto_remove_album_from_database() * gphoto_remove_image_from_album * * Remove the selected image from the album - * + * */ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) { @@ -935,7 +888,7 @@ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) GtkWindow *parent = GTK_WINDOW (gtkpod_xml_get_widget (main_window_xml, "gtkpod")); GtkWidget *dialog; gboolean delete_pics = FALSE; - + if (show_dialogs) { if (selected_album != NULL&& selected_album->album_type != 0x01) @@ -945,7 +898,7 @@ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("This will remove the photo selection from the selected album.\n Do you want to delete them from the database as well?")); - + gtk_dialog_add_buttons ( GTK_DIALOG (dialog), GTK_STOCK_YES, GTK_RESPONSE_YES, @@ -960,7 +913,7 @@ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("This will delete the photo selection from the Photo Library and all albums. Are you sure?")); - + gtk_dialog_add_buttons ( GTK_DIALOG (dialog), GTK_STOCK_YES, GTK_RESPONSE_YES, @@ -989,7 +942,7 @@ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) { delete_pics = FALSE; } - + thumbnail_model = gtk_icon_view_get_model (thumbnail_view); for (i = 0; i < g_list_length (selected_images); ++i) { @@ -1013,7 +966,7 @@ void gphoto_remove_selected_photos_from_album (gboolean show_dialogs) * gphoto_rename_selected_album * * Remove the selected image from the album - * + * */ void gphoto_rename_selected_album () { @@ -1026,22 +979,22 @@ void gphoto_rename_selected_album () /* Find the selected album. If no selection then returns the Main Album */ selected_album = itdb_photodb_photoalbum_by_name (photodb, album_name); g_return_if_fail (selected_album); - + if (selected_album->album_type == 0x01) { /* Dont rename the Photo Library */ return; } - + gchar *new_album_name = get_user_string (_("New Photo Album Name"), - _("Please enter a new name for the photo album"), - NULL, - NULL, + _("Please enter a new name for the photo album"), + NULL, + NULL, NULL, GTK_STOCK_ADD); if (new_album_name == NULL|| strlen (new_album_name) == 0) return; - + /* Check an album with this name doesnt already exist */ PhotoAlbum *curr_album; curr_album = itdb_photodb_photoalbum_by_name (photodb, new_album_name); @@ -1051,35 +1004,35 @@ void gphoto_rename_selected_album () g_free (new_album_name); return; } - + /* Rename the album in the database */ selected_album->name = g_strdup (new_album_name); - + /* Update the row in the album view */ GtkTreeModel *album_model; GtkTreeIter iter; - + album_model = gtk_tree_view_get_model (album_view); if (gtk_tree_selection_get_selected (selection, &album_model, &iter) == TRUE) { gtk_list_store_set (GTK_LIST_STORE(album_model), &iter, COL_ALBUM_NAME, new_album_name, -1);; } - + g_free (new_album_name); - + signal_data_changed(); - + /* Using the existing selection, reselect the album so it reloads the preview of the first image */ gphoto_album_selection_changed (selection, NULL); } /** - * + * * gphoto_button_press: - * + * * When right mouse button is pressed on one of the widgets, * a popup menu is displayed. - * + * * @ w: widget upon which button press has occurred * @ e: button event * @ data: not used @@ -1104,10 +1057,10 @@ static gboolean gphoto_button_press(GtkWidget *w, GdkEventButton *e, gpointer da * on_photodb_add_album_menuItem_activate: * * Callback for add album menu item - * + * * @ menuitem: add album menu item * @ user_data: not used - * + * */ void on_photodb_add_album_menuItem_activate(GtkMenuItem *menuItem, gpointer user_data) { @@ -1117,9 +1070,9 @@ void on_photodb_add_album_menuItem_activate(GtkMenuItem *menuItem, gpointer user gchar *album_name; album_name = get_user_string (_("New Photo Album"), - _("Please enter a name for the new photo album"), - FALSE, - NULL, + _("Please enter a name for the new photo album"), + FALSE, + NULL, NULL, GTK_STOCK_ADD); @@ -1156,14 +1109,14 @@ void on_photodb_add_album_menuItem_activate(GtkMenuItem *menuItem, gpointer user * on_photodb_add_image_menuItem_activate: * * Callback for add image menu item - * + * * @ menuitem: add image menu item * @ user_data: not used - * + * */ void on_photodb_add_image_menuItem_activate(GtkMenuItem *menuItem, gpointer user_data) { - gchar *image_name = fileselection_get_file_or_dir (_("Add Image to iPod"), + gchar *image_name = fileselection_get_file_or_dir (_("Add Image to iPod"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN); if (image_name == NULL) @@ -1179,10 +1132,10 @@ void on_photodb_add_image_menuItem_activate(GtkMenuItem *menuItem, gpointer user * * Comparision function for comparing the filenames * of newly added images. - * + * * @ a: filename 1 * @ b: filename 2 - * + * */ static int _strptrcmp(const void* _a, const void* _b) { @@ -1207,10 +1160,10 @@ static int _strptrcmp(const void* _a, const void* _b) * on_photodb_add_image_dir_menuItem_activate: * * Callback for add image directory menu item - * + * * @ menuitem: add album menu item * @ user_data: not used - * + * */ void on_photodb_add_image_dir_menuItem_activate(GtkMenuItem *menuItem, gpointer user_data) { @@ -1218,7 +1171,7 @@ void on_photodb_add_image_dir_menuItem_activate(GtkMenuItem *menuItem, gpointer GError *error= NULL; /* Open a dialog directory chooser window */ - gchar*dir_name = fileselection_get_file_or_dir (_("Add a Directory of Images to the iPod. Select the Directory."), + gchar*dir_name = fileselection_get_file_or_dir (_("Add a Directory of Images to the iPod. Select the Directory."), NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); if (dir_name == NULL) @@ -1252,7 +1205,7 @@ void on_photodb_add_image_dir_menuItem_activate(GtkMenuItem *menuItem, gpointer G_CONST_RETURN gchar *filename; GPtrArray* filename_arr = g_ptr_array_new(); unsigned u; - + do { filename = g_dir_read_name(directory); @@ -1261,7 +1214,7 @@ void on_photodb_add_image_dir_menuItem_activate(GtkMenuItem *menuItem, gpointer g_ptr_array_add(filename_arr, (void*) filename); } } while (filename != NULL); - + /* Conduct an alphabetical sort on the filenames so * they are added in order. */ @@ -1295,10 +1248,10 @@ void on_photodb_add_image_dir_menuItem_activate(GtkMenuItem *menuItem, gpointer * on_photodb_remove_album_menuItem_activate: * * Callback for remove album menu item - * + * * @ menuitem: remove album menu item * @ user_data: not used - * + * */ void on_photodb_remove_album_menuItem_activate(GtkMenuItem *menuItem, gpointer user_data) { @@ -1309,10 +1262,10 @@ void on_photodb_remove_album_menuItem_activate(GtkMenuItem *menuItem, gpointer u * on_photodb_remove_image_menuItem_activate: * * Callback for remove image menu item - * + * * @ menuitem: remove image menu item * @ user_data: not used - * + * */ void on_photodb_remove_image_menuItem_activate(GtkMenuItem *menuItem, gpointer user_data) { @@ -1322,13 +1275,13 @@ void on_photodb_remove_image_menuItem_activate(GtkMenuItem *menuItem, gpointer u /** * on_photodb_view_full_size_menuItem_activate * - * Callback used to display a dialog contain a full + * Callback used to display a dialog contain a full * size / screen size version of the selected image. * Same as that used in coverart display. - * + * * @ menuitem: remove image menu item * @ user_data: not used - * + * */ void on_photodb_view_full_size_menuItem_activate (GtkMenuItem *menuItem, gpointer user_data) { @@ -1338,7 +1291,7 @@ void on_photodb_view_full_size_menuItem_activate (GtkMenuItem *menuItem, gpointe GtkTreeIter iter; Artwork *artwork = NULL; GdkPixbuf * pixbuf; - + /* Find which images are selected */ selected_images = gtk_icon_view_get_selected_items (GTK_ICON_VIEW(thumbnail_view)); if (selected_images == NULL|| g_list_length (selected_images) == 0) @@ -1349,14 +1302,14 @@ void on_photodb_view_full_size_menuItem_activate (GtkMenuItem *menuItem, gpointe * correctly. */ model = gtk_icon_view_get_model (GTK_ICON_VIEW(thumbnail_view)); - + treePath = g_list_nth_data (selected_images, 0); gtk_tree_model_get_iter (model, &iter, treePath); gtk_tree_model_get (model, &iter, COL_THUMB_ARTWORK, &artwork, -1); - + pixbuf = itdb_artwork_get_pixbuf (device, artwork, -1, -1); g_return_if_fail (pixbuf); - + display_image_dialog (pixbuf); g_object_unref (pixbuf); @@ -1366,10 +1319,10 @@ void on_photodb_view_full_size_menuItem_activate (GtkMenuItem *menuItem, gpointe * on_photodb_rename_album_menuItem_activate * * Callback used to rename an album. - * + * * @ menuitem: remove image menu item * @ user_data: not used - * + * */ void on_photodb_rename_album_menuItem_activate (GtkMenuItem *menuItem, gpointer user_data) { @@ -1387,7 +1340,7 @@ void on_photodb_rename_album_menuItem_activate (GtkMenuItem *menuItem, gpointer * Allow dnd of an image onto an album row in the * album tree. Gives ability to add an image to a * different album. - * + * */ static gboolean dnd_album_drag_drop(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, guint time, gpointer user_data) { @@ -1397,7 +1350,7 @@ static gboolean dnd_album_drag_drop(GtkWidget *widget, GdkDragContext *drag_cont if (target != GDK_NONE) { gboolean rowfound; - + /* determine whether a row has been dropped over in album view */ rowfound = gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW(widget), x, y, NULL, NULL); if (rowfound == TRUE) @@ -1416,7 +1369,7 @@ static gboolean dnd_album_drag_drop(GtkWidget *widget, GdkDragContext *drag_cont * * Provide the images which are to be dnded * onto the new album in the album tree. - * + * */ static void dnd_images_drag_data_get(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *data, guint info, guint time, gpointer user_data) @@ -1424,7 +1377,7 @@ static void dnd_images_drag_data_get(GtkWidget *widget, GdkDragContext *dc, GtkS GtkTreeModel *model; GList *selected_images; gint i; - + if (!data) return; @@ -1434,12 +1387,12 @@ static void dnd_images_drag_data_get(GtkWidget *widget, GdkDragContext *dc, GtkS return; model = gtk_icon_view_get_model (GTK_ICON_VIEW(widget)); - + GtkTreePath *treePath = NULL; GtkTreeIter iter; Artwork *artwork = NULL; GString *reply = g_string_sized_new (2000); - + for (i = 0; i < g_list_length(selected_images); ++i) { treePath = g_list_nth_data (selected_images, i); @@ -1447,7 +1400,7 @@ static void dnd_images_drag_data_get(GtkWidget *widget, GdkDragContext *dc, GtkS gtk_tree_model_get (model, &iter, COL_THUMB_ARTWORK, &artwork, -1); g_string_append_printf (reply, "%p\n", artwork); } - + switch (info) { case DND_GTKPOD_PHOTOIMAGELIST: @@ -1466,7 +1419,7 @@ static void dnd_images_drag_data_get(GtkWidget *widget, GdkDragContext *dc, GtkS * The final part of the dnd images onto album dnd * operation. This uses the data received and adds * the images to the new album. - * + * */ static void dnd_album_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data) @@ -1486,7 +1439,7 @@ static void dnd_album_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gchar *src_name; PhotoAlbum *tgt_album; PhotoAlbum *src_album; - + /* determine whether a row has been dropped over in album view */ rowfound = gtk_tree_view_get_dest_row_at_pos (GTK_TREE_VIEW(widget), x, y, &treepath, NULL); if (! rowfound) @@ -1494,24 +1447,24 @@ static void dnd_album_drag_data_received(GtkWidget *widget, GdkDragContext *dc, gtk_drag_finish (dc, FALSE, FALSE, time); return; } - + g_return_if_fail (treepath); - + model = gtk_tree_view_get_model (GTK_TREE_VIEW(widget)); - + /* Find the target album to drop the artwork into */ if(gtk_tree_model_get_iter (model, &iter, treepath)) gtk_tree_model_get (model, &iter, COL_ALBUM_NAME, &tgt_name, -1); - + gtk_tree_path_free (treepath); treepath = NULL; g_return_if_fail (tgt_name); - + tgt_album = itdb_photodb_photoalbum_by_name (photodb, tgt_name); g_return_if_fail (tgt_album); if (tgt_name != NULL) g_free (tgt_name); - + /* Find the selected album, ie. the source, or else the Photo Library if no selection */ GtkTreeSelection *selection = NULL; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(widget)); @@ -1519,28 +1472,28 @@ static void dnd_album_drag_data_received(GtkWidget *widget, GdkDragContext *dc, src_name = gphoto_get_selected_album_name (selection); else src_name = NULL; - + /* Find the selected album. If no selection then returns the Photo Library */ src_album = itdb_photodb_photoalbum_by_name (photodb, src_name); g_return_if_fail (src_album); if (src_name != NULL) g_free (src_name); - + if (src_album == tgt_album) { gtk_drag_finish (dc, FALSE, FALSE, time); return; } - + Artwork *artwork; GList *artwork_list = NULL; gchar *datap = data->data; gint i = 0; - + /* parse artwork and add each one to a GList */ while (parse_artwork_from_string (&datap, &artwork)) artwork_list = g_list_append (artwork_list, artwork); - + if (tgt_album->album_type != 0x01) { /* Only if the target is not the Photo Library (which should have the photo @@ -1552,11 +1505,11 @@ static void dnd_album_drag_data_received(GtkWidget *widget, GdkDragContext *dc, itdb_photodb_photoalbum_add_photo (photodb, tgt_album, artwork, -1); } } - - /* Remove the artwork from the selected album if it is not the Photo Library */ + + /* Remove the artwork from the selected album if it is not the Photo Library */ if (src_album->album_type != 0x01) gphoto_remove_selected_photos_from_album (FALSE); - + signal_data_changed (); } @@ -1603,4 +1556,4 @@ static void debug_list_photos(iTunesDB *itdb) } } #endif - + diff --git a/src/display_playlists.c b/src/display_playlists.c index 118004a..30de8bd 100644 --- a/src/display_playlists.c +++ b/src/display_playlists.c @@ -91,34 +91,29 @@ static gboolean pm_get_iter_for_playlist(Playlist *pl, GtkTreeIter *iter); * pressed) * * ---------------------------------------------------------------- */ -static void pm_drag_begin (GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data) { -/* puts ("drag_begin"); */ +static void pm_drag_begin(GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data) { + /* puts ("drag_begin"); */ } static void pm_drag_data_delete_remove_playlist(GtkTreeModel *tm, GtkTreePath *tp, GtkTreeIter *iter, gpointer data) { Playlist *pl; g_return_if_fail (tm); g_return_if_fail (iter); - gtk_tree_model_get (tm, iter, PM_COLUMN_PLAYLIST, &pl, -1); + gtk_tree_model_get(tm, iter, PM_COLUMN_PLAYLIST, &pl, -1); g_return_if_fail (pl); - gp_playlist_remove (pl); + gp_playlist_remove(pl); } /* remove dragged playlist after successful MOVE */ -static void pm_drag_data_delete (GtkWidget *widget, - GdkDragContext *drag_context, - gpointer user_data) -{ +static void pm_drag_data_delete(GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data) { g_return_if_fail (widget); g_return_if_fail (drag_context); -/* printf ("drag_data_delete: %d\n", drag_context->action); */ + /* printf ("drag_data_delete: %d\n", drag_context->action); */ - if (drag_context->action == GDK_ACTION_MOVE) - { - GtkTreeSelection *ts = gtk_tree_view_get_selection( - GTK_TREE_VIEW (widget)); - gtk_tree_selection_selected_foreach (ts, pm_drag_data_delete_remove_playlist, NULL); + if (drag_context->action == GDK_ACTION_MOVE) { + GtkTreeSelection *ts = gtk_tree_view_get_selection(GTK_TREE_VIEW (widget)); + gtk_tree_selection_selected_foreach(ts, pm_drag_data_delete_remove_playlist, NULL); } } @@ -918,38 +913,6 @@ static gboolean pm_get_iter_for_playlist(Playlist *playlist, GtkTreeIter *pl_ite /* Section for playlist display */ /* ---------------------------------------------------------------- */ -/* remove a track from a current playlist (model) */ -void pm_remove_track(Playlist *playlist, Track *track) { - g_return_if_fail (playlist); - g_return_if_fail (track); - - Playlist *current_playlist = gtkpod_get_current_playlist(); - /* notify sort tab if currently selected playlist is affected */ - if (current_playlist) { /* only remove if selected playlist is in same itdb as track */ - if (track->itdb == current_playlist->itdb) { - if ((playlist == current_playlist) || itdb_playlist_is_mpl(current_playlist)) { - // if (prefs_get_int(KEY_DISPLAY_COVERART)) { - // coverart_track_changed(track, COVERART_REMOVE_SIGNAL); - // } - // st_remove_track(track, 0); - } - } - } -} - -/* Add track to the display if it's in the currently displayed playlist. - * @display: TRUE: add to track model (i.e. display it) */ -void pm_add_track(Playlist *playlist, Track *track, gboolean display) { - // if (playlist == current_playlist) { - // st_add_track(track, TRUE, display, 0); /* Add to first sort tab */ - // - // /* As with add_track above, only add to the playlist if it is the current one */ - // if (prefs_get_int(KEY_DISPLAY_COVERART)) { - // coverart_track_changed(track, COVERART_CREATE_SIGNAL); - // } - // } -} - /* One of the playlist names has changed (this happens when the Itdb_iTunesDB is read */ void pm_itdb_name_changed(Itdb_iTunesDB *itdb) { @@ -1035,24 +998,6 @@ void pm_add_child(Itdb_iTunesDB *itdb, PM_column_type type, gpointer item, gint gtk_tree_store_insert(GTK_TREE_STORE (model), &iter, mpli, pos); gtk_tree_store_set(GTK_TREE_STORE (model), &iter, PM_COLUMN_ITDB, itdb, PM_COLUMN_TYPE, type, type, item, -1); - -#if 0 - /* If the current_playlist is "playlist", we select it. This can - happen during a display_reset */ - if (current_playlist == playlist) - { - selection = gtk_tree_view_get_selection (playlist_treeview); - gtk_tree_selection_select_iter (selection, &iter); - } -#endif - /* else if (current_playlist == NULL) - { - if (itdb_playlist_is_mpl(playlist) && prefs_get_int("mpl_autoselect")) - { - selection = gtk_tree_view_get_selection (playlist_treeview); - gtk_tree_selection_select_iter (selection, &iter); - } - } */ } /* Remove "playlist" from the display model. @@ -1180,16 +1125,9 @@ static gboolean pm_selection_changed_cb(gpointer data) { time.tv_sec % 3600, time.tv_usec); #endif - /* Avoid track selection errors on coverart while enacting a change - * in playlist - */ - // coverart_block_change (TRUE); - if (gtk_tree_selection_get_selected(selection, &model, &iter) == FALSE) { /* no selection -> reset sort tabs */ // gphoto_change_to_photo_window (FALSE); - // st_init (-1, 0); gtkpod_set_current_playlist(NULL); - gtkpod_set_current_itdb(NULL); } else { Playlist *new_playlist = NULL; @@ -1200,7 +1138,6 @@ static gboolean pm_selection_changed_cb(gpointer data) { gtk_tree_model_get(model, &iter, PM_COLUMN_TYPE, &type, PM_COLUMN_ITDB, &itdb, PM_COLUMN_PLAYLIST, &new_playlist, PM_COLUMN_PHOTOS, &photodb, -1); gtkpod_set_current_playlist(new_playlist); - gtkpod_set_current_itdb(itdb); switch (type) { case PM_COLUMN_PLAYLIST: @@ -1209,15 +1146,6 @@ static gboolean pm_selection_changed_cb(gpointer data) { // gphoto_change_to_photo_window (FALSE); - /* If new playlist is in an iPod itdb, set the mountpoint for - * the free space display to this iPod (there may be several - * iPods connected */ - // - // if (itdb->usertype & GP_ITDB_TYPE_IPOD) - // { - // space_set_ipod_itdb (itdb); - // } - if (new_playlist->is_spl && new_playlist->splpref.liveupdate) itdb_spl_update(new_playlist); @@ -1303,11 +1231,6 @@ void pm_add_itdb(Itdb_iTunesDB *itdb, gint pos) { pm_add_child(itdb, PM_COLUMN_PLAYLIST, pl, -1); } } - /* eitdb->photodb might be NULL: the itdb is added before the iPod - * is parsed */ - if (itdb_device_supports_photo(itdb->device) && eitdb->photodb) { - pm_add_child(itdb, PM_COLUMN_PHOTOS, eitdb->photodb, -1); - } /* expand the itdb */ if (pm_get_iter_for_itdb(itdb, &mpl_iter)) { @@ -1674,7 +1597,7 @@ static void pm_set_playlist_renderer_pix(GtkCellRenderer *renderer, Playlist *pl g_return_if_fail (renderer); stock_id = return_playlist_stock_image(playlist); - if (! stock_id) + if (!stock_id) return; g_object_set(G_OBJECT (renderer), "stock-id", stock_id, NULL); @@ -2117,7 +2040,7 @@ void playlist_display_itdb_added_cb(GtkPodApp *app, gpointer itdb, gint32 pos, g return; } - pm_add_itdb (new_itdb, pos); + pm_add_itdb(new_itdb, pos); } void playlist_display_itdb_removed_cb(GtkPodApp *app, gpointer itdb, gpointer data) { @@ -2126,7 +2049,7 @@ void playlist_display_itdb_removed_cb(GtkPodApp *app, gpointer itdb, gpointer da return; } - pm_remove_playlist (itdb_playlist_mpl (old_itdb), FALSE); + pm_remove_playlist(itdb_playlist_mpl(old_itdb), FALSE); } void playlist_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer data) { @@ -2155,13 +2078,6 @@ void playlist_display_playlist_removed_cb(GtkPodApp *app, gpointer pl, gpointer pm_remove_playlist(old_playlist, TRUE); } -void playlist_display_track_removed_cb(GtkPodApp *app, gpointer tk, gpointer data) { - Track *old_track = tk; - Playlist *current_playlist = gtkpod_get_current_playlist(); - - pm_remove_track(current_playlist, old_track); -} - void playlist_display_preference_changed_cb(GtkPodApp *app, gpointer pfname, gint32 value, gpointer data) { gchar *pref_name = pfname; if (g_str_equal(pref_name, "pm_sort")) { diff --git a/src/file_itunesdb.c b/src/file_itunesdb.c index 1654c72..e6921c5 100644 --- a/src/file_itunesdb.c +++ b/src/file_itunesdb.c @@ -371,6 +371,47 @@ static gboolean read_extended_info(gchar *name, gchar *itunes) { return success; } +/** + * load_photodb: + * + * Using the info in the provided itunes db, load the photo db + * from the ipod if there is one present. Reference it in the + * extra itunes db data structure for later use. + * + * @ itdb: itunes database + * + */ +static void load_photodb(iTunesDB *itdb) { + ExtraiTunesDBData *eitdb; + PhotoDB *db; + const gchar *mp; + GError *error = NULL; + + g_return_if_fail (itdb); + + if (!itdb_device_supports_photo(itdb->device)) + return; + + eitdb = itdb->userdata; + g_return_if_fail (eitdb); + g_return_if_fail (eitdb->photodb == NULL); + + mp = itdb_get_mountpoint(itdb); + db = itdb_photodb_parse(mp, &error); + if (error) { + gtkpod_warning(_("Error reading iPod photo database (%s).\n"), error->message); + g_error_free(error); + error = NULL; + } + else if (db == NULL) { + gtkpod_warning(_("Error reading iPod photo database. (No error message)\n")); + } + else { + /* Set the reference to the photo database */ + eitdb->photodb = db; + } +} + /* Import an iTunesDB and return an iTunesDB structure. * If @old_itdb is set, it will be merged into the newly imported * one. @old_itdb will not be changed. @@ -422,10 +463,7 @@ iTunesDB *gp_import_itdb(iTunesDB *old_itdb, const gint type, const gchar *mp, c *msg = g_strdup_printf(_("The repository %s does not have a readable extended database.\n"), name_db); msg - = g_strconcat(msg, _("This database identifies the track on disk with the track data in the repository database."), - _("Any tracks already in the database cannot be transferred between repositories without the extended database."), - _("A new extended database will be created upon saving but existing tracks will need to be reimported to be linked to the file on disk."), - NULL); + = g_strconcat(msg, _("This database identifies the track on disk with the track data in the repository database."), _("Any tracks already in the database cannot be transferred between repositories without the extended database."), _("A new extended database will be created upon saving but existing tracks will need to be reimported to be linked to the file on disk."), NULL); gtkpod_warning(msg); } @@ -650,6 +688,9 @@ iTunesDB *gp_import_itdb(iTunesDB *old_itdb, const gint type, const gchar *mp, c } } + /* Add photo database */ + load_photodb(itdb); + release_widgets(); return itdb; @@ -704,9 +745,6 @@ static iTunesDB *gp_merge_itdb(iTunesDB *old_itdb) { g_return_val_if_fail (old_eitdb->offline_filename, NULL); new_itdb = gp_import_itdb(old_itdb, old_itdb->usertype, mountpoint, old_eitdb->offline_filename, NULL); - g_message("TODO load photodb handle\n"); - // if (new_itdb) - // gphoto_load_photodb(new_itdb); } else { g_return_val_if_reached (NULL); ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ gtkpod-cvs2 mailing list gtkpod-cvs2@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2