static void save_options_cb (GtkWidget *w, DialogData *data) { GFile *options_dir; GFile *options_file; char *opt_filename; options_dir = get_user_config_subdirectory (ADD_FOLDER_OPTIONS_DIR, TRUE); make_directory_tree (options_dir, 0700, NULL); opt_filename = _gtk_request_dialog_run ( GTK_WINDOW (data->dialog), GTK_DIALOG_MODAL, _("Save Options"), _("_Options Name:"), (data->last_options != NULL) ? data->last_options : "", 1024, GTK_STOCK_CANCEL, GTK_STOCK_SAVE); if (opt_filename == NULL) return; options_file = g_file_get_child_for_display_name (options_dir, opt_filename, NULL); dlg_add_folder_save_current_options (data, options_file); dlg_add_folder_save_last_used_options (data, opt_filename); g_free (opt_filename); g_object_unref (options_file); g_object_unref (options_dir); }
static void overwrite_dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data) { GthPixbufListTask *self = user_data; if (response_id != GTK_RESPONSE_OK) self->priv->overwrite_response = GTH_OVERWRITE_RESPONSE_UNSPECIFIED; else self->priv->overwrite_response = gth_overwrite_dialog_get_response (GTH_OVERWRITE_DIALOG (dialog)); gtk_widget_hide (GTK_WIDGET (dialog)); gth_task_dialog (GTH_TASK (self), FALSE); switch (self->priv->overwrite_response) { case GTH_OVERWRITE_RESPONSE_NO: case GTH_OVERWRITE_RESPONSE_ALWAYS_NO: case GTH_OVERWRITE_RESPONSE_UNSPECIFIED: if (self->priv->overwrite_response == GTH_OVERWRITE_RESPONSE_ALWAYS_NO) self->priv->overwrite_mode = GTH_OVERWRITE_SKIP; process_next_file (self); break; case GTH_OVERWRITE_RESPONSE_YES: case GTH_OVERWRITE_RESPONSE_ALWAYS_YES: if (self->priv->overwrite_response == GTH_OVERWRITE_RESPONSE_ALWAYS_YES) self->priv->overwrite_mode = GTH_OVERWRITE_OVERWRITE; pixbuf_task_save_current_pixbuf (self, NULL, TRUE); break; case GTH_OVERWRITE_RESPONSE_RENAME: { GFile *parent; GFile *new_destination; if (self->priv->destination_folder != NULL) { parent = g_object_ref (self->priv->destination_folder); } else { GthFileData *file_data; file_data = self->priv->current->data; parent = g_file_get_parent (file_data->file); } new_destination = g_file_get_child_for_display_name (parent, gth_overwrite_dialog_get_filename (GTH_OVERWRITE_DIALOG (dialog)), NULL); pixbuf_task_save_current_pixbuf (self, new_destination, FALSE); g_object_unref (new_destination); g_object_unref (parent); } break; } gtk_widget_destroy (GTK_WIDGET (dialog)); }
static void save_button_clicked_cb (GtkButton *button, DialogData *data) { GthDateTime *date_time; GFile *gio_file; char *buffer; gsize size; if (strcmp (gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry"))), "") != 0) { GFile *parent; char *uri; char *clean_name; char *display_name; GFile *new_file; parent = g_file_get_parent (data->original_file); uri = g_file_get_uri (data->original_file); clean_name = _g_filename_clear_for_file (gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry")))); display_name = g_strconcat (clean_name, _g_uri_get_file_extension (uri), NULL); new_file = g_file_get_child_for_display_name (parent, display_name, NULL); if ((new_file != NULL) && ! g_file_equal (new_file, data->original_file)) gth_file_data_set_file (data->file_data, new_file); _g_object_unref (new_file); g_free (display_name); g_free (clean_name); g_free (uri); g_object_unref (parent); } gth_catalog_set_name (data->catalog, gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry")))); date_time = gth_datetime_new (); gth_time_selector_get_value (GTH_TIME_SELECTOR (data->time_selector), date_time); gth_catalog_set_date (data->catalog, date_time); gth_datetime_free (date_time); /* invoke the hook to save derived catalogs such as searches */ gth_hook_invoke ("dlg-catalog-properties-save", data->builder, data->file_data, data->catalog); gio_file = gth_catalog_file_to_gio_file (data->file_data->file); buffer = gth_catalog_to_data (data->catalog, &size); _g_file_write_async (gio_file, buffer, size, TRUE, G_PRIORITY_DEFAULT, NULL, catalog_saved_cb, data); g_object_unref (gio_file); }
static void set_current_destination_file (GthPixbufListTask *self) { GthFileData *file_data; char *display_name; GFile *parent; GFile *destination; file_data = self->priv->current->data; if (self->priv->mime_type != NULL) { char *no_ext; GthPixbufSaver *saver; no_ext = _g_uri_remove_extension (g_file_info_get_display_name (file_data->info)); saver = gth_main_get_pixbuf_saver (self->priv->mime_type); g_return_if_fail (saver != NULL); display_name = g_strconcat (no_ext, ".", gth_pixbuf_saver_get_default_ext (saver), NULL); gth_file_data_set_mime_type (file_data, self->priv->mime_type); g_object_unref (saver); g_free (no_ext); } else display_name = g_strdup (g_file_info_get_display_name (file_data->info)); if (self->priv->destination_folder != NULL) parent = g_object_ref (self->priv->destination_folder); else parent = g_file_get_parent (file_data->file); destination = g_file_get_child_for_display_name (parent, display_name, NULL); gth_file_data_set_file (file_data, destination); g_object_unref (destination); g_object_unref (parent); g_free (display_name); }
static void catalog_new_dialog_response_cb (GtkWidget *dialog, int response_id, gpointer user_data) { GthBrowser *browser = user_data; char *name; GthFileData *selected_parent; GFile *parent; GthFileSource *file_source; GFile *gio_parent; char *display_name; GError *error = NULL; GFile *gio_file; if (response_id != GTK_RESPONSE_OK) { gtk_widget_destroy (dialog); return; } name = gth_request_dialog_get_normalized_text (GTH_REQUEST_DIALOG (dialog)); if (_g_utf8_all_spaces (name)) { g_free (name); gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, _("No name specified")); return; } if (g_regex_match_simple ("/", name, 0, 0)) { char *message; message = g_strdup_printf (_("Invalid name. The following characters are not allowed: %s"), "/"); gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, message); g_free (message); g_free (name); return; } selected_parent = gth_browser_get_folder_popup_file_data (browser); if (selected_parent != NULL) { GthFileSource *file_source; GFileInfo *info; file_source = gth_main_get_file_source (selected_parent->file); info = gth_file_source_get_file_info (file_source, selected_parent->file, GFILE_BASIC_ATTRIBUTES); if (g_file_info_get_attribute_boolean (info, "gthumb::no-child")) parent = g_file_get_parent (selected_parent->file); else parent = g_file_dup (selected_parent->file); g_object_unref (info); g_object_unref (file_source); } else parent = g_file_new_for_uri ("catalog:///"); file_source = gth_main_get_file_source (parent); gio_parent = gth_file_source_to_gio_file (file_source, parent); display_name = g_strconcat (name, ".catalog", NULL); gio_file = g_file_get_child_for_display_name (gio_parent, display_name, &error); if (gio_file != NULL) { GFileOutputStream *stream; stream = g_file_create (gio_file, G_FILE_CREATE_NONE, NULL, &error); if (stream != NULL) { GFile *file; GList *list; file = gth_catalog_file_from_gio_file (gio_file, NULL); list = g_list_prepend (NULL, file); gth_monitor_folder_changed (gth_main_get_default_monitor (), parent, list, GTH_MONITOR_EVENT_CREATED); g_list_free (list); g_object_unref (file); g_object_unref (stream); } g_object_unref (gio_file); } if (error != NULL) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS)) gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, _("Name already used")); else gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, error->message); g_clear_error (&error); } else gtk_widget_destroy (dialog); g_free (display_name); g_object_unref (gio_parent); g_object_unref (file_source); g_free (name); }
int main (int argc, char *argv[]) { RygelMediaServer *server; RygelSimpleContainer *root_container; char *path; GFile *source_dir; GFileEnumerator *enumerator; GFileInfo *info; int i; GMainLoop *loop; GError *error = NULL; g_type_init (); rygel_media_engine_init (&error); if (error != NULL) { g_print ("Could not initialize media engine: %s\n", error->message); g_error_free (error); return EXIT_FAILURE; } g_set_application_name ("Standalone-Server"); root_container = rygel_simple_container_new_root ("Sample implementation"); if (argc >= 2) { path = g_strdup (argv[1]); } else { path = g_get_current_dir (); } source_dir = g_file_new_for_commandline_arg (path); g_free (path); enumerator = g_file_enumerate_children (source_dir, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "," G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); info = g_file_enumerator_next_file (enumerator, NULL, NULL); i = 0; while (info != NULL) { GFile *file; const char *display_name, *content_type; char *uri, *id; RygelMediaItem *item = NULL; GError *error = NULL; display_name = g_file_info_get_display_name (info); content_type = g_file_info_get_content_type (info); file = g_file_get_child_for_display_name (source_dir, display_name, &error); if (error != NULL) { g_critical ("Failed to get child: %s", error->message); return 127; } uri = g_file_get_uri (file); g_object_unref (file); id = g_strdup_printf ("%06d", i); if (g_str_has_prefix (content_type, "audio/")) { item = rygel_audio_item_new (id, root_container, display_name, RYGEL_AUDIO_ITEM_UPNP_CLASS); } else if (g_str_has_prefix (content_type, "video/")) { item = rygel_video_item_new (id, root_container, display_name, RYGEL_VIDEO_ITEM_UPNP_CLASS); } else if (g_str_has_prefix (content_type, "image/")) { item = rygel_image_item_new (id, root_container, display_name, RYGEL_IMAGE_ITEM_UPNP_CLASS); } g_free (id); if (item != NULL) { GeeArrayList* uris; rygel_media_object_set_mime_type (RYGEL_MEDIA_OBJECT (item), content_type); rygel_media_object_add_uri (RYGEL_MEDIA_OBJECT (item), uri); rygel_simple_container_add_child_item (root_container, item); } i++; info = g_file_enumerator_next_file (enumerator, NULL, NULL); } server = rygel_media_server_new ("LibRygel sample server", root_container, RYGEL_PLUGIN_CAPABILITIES_NONE); rygel_media_device_add_interface (RYGEL_MEDIA_DEVICE (server), "eth0"); rygel_media_device_add_interface (RYGEL_MEDIA_DEVICE (server), "wlan0"); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); }
static gboolean step_process_multiple (FilesCtx *ctx, const gchar **orig_uris, GError **err) { SeahorseWidget *swidget; gboolean done = FALSE; FileInfo *pkg_info = NULL; gchar *package = NULL; gchar *ext; GFile *file, *parent; gboolean ok = FALSE; GtkWidget *dlg; guint nfolders, nfiles; gchar *uris[2]; gchar *uri; GList *l; g_assert (err && !*err); for (l = ctx->finfos, nfolders = nfiles = 0; l; l = g_list_next (l)) { FileInfo *finfo = (FileInfo*)l->data; if (g_file_info_get_file_type (finfo->info) == G_FILE_TYPE_DIRECTORY) ++nfolders; else ++nfiles; } /* In the case of one or less files, no dialog */ if(nfolders == 0 && nfiles <= 1) return TRUE; /* The package extension */ if ((ext = g_settings_get_string (seahorse_tool_settings, "package-extension")) == NULL) ext = g_strdup (".zip"); /* Yes this happens when the schema isn't installed */ /* Figure out a good URI for our package */ for (l = ctx->finfos; l; l = g_list_next (l)) { if (l->data) { pkg_info = (FileInfo*)(l->data); break; } } /* This sets up but doesn't run the dialog */ swidget = prepare_dialog (ctx, nfolders, nfiles, pkg_info->info, ext); g_free (ext); dlg = seahorse_widget_get_toplevel (swidget); /* Inhibit popping up of progress dialog */ seahorse_tool_progress_block (TRUE); while (!done) { switch (gtk_dialog_run (GTK_DIALOG (dlg))) { case GTK_RESPONSE_HELP: /* TODO: Implement help */ break; case GTK_RESPONSE_OK: package = get_results (swidget); ok = TRUE; /* Fall through */ default: done = TRUE; break; } } /* Let progress dialog pop up */ seahorse_tool_progress_block (FALSE); seahorse_widget_destroy (swidget); /* Cancelled */ if (!ok) return FALSE; /* No package was selected? */ if (!package) return TRUE; /* A package was selected */ /* Make a new path based on the first uri */ parent = g_file_get_parent (pkg_info->file); if (!parent) parent = pkg_info->file; file = g_file_get_child_for_display_name (parent, package, err); if (!file) return FALSE; uri = g_file_get_uri (file); g_return_val_if_fail (uri, FALSE); g_object_unref (file); if (!seahorse_util_uris_package (uri, orig_uris)) { g_free (uri); return FALSE; } /* Free all file info */ g_list_foreach (ctx->finfos, (GFunc)free_file_info, NULL); g_list_free (ctx->finfos); ctx->finfos = NULL; /* Reload up the new file, as what to encrypt */ uris[0] = uri; uris[1] = NULL; ok = step_check_uris (ctx, (const gchar**)uris, err); g_free (uri); return ok; }
static void new_folder_dialog_response_cb (GtkWidget *dialog, int response_id, gpointer user_data) { NewFolderData *data = user_data; char *name; GFile *folder; GError *error = NULL; if (response_id != GTK_RESPONSE_OK) { new_folder_data_free (data); gtk_widget_destroy (dialog); return; } name = gth_request_dialog_get_normalized_text (GTH_REQUEST_DIALOG (dialog)); if (_g_utf8_all_spaces (name)) { g_free (name); gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, _("No name specified")); return; } if (g_regex_match_simple ("/", name, 0, 0)) { char *message; message = g_strdup_printf (_("Invalid name. The following characters are not allowed: %s"), "/"); gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, message); g_free (message); g_free (name); return; } folder = g_file_get_child_for_display_name (data->parent, name, &error); if ((folder != NULL) && g_file_make_directory (folder, NULL, &error)) { GList *list; GtkWidget *folder_tree; GtkTreePath *path; list = g_list_prepend (NULL, folder); gth_monitor_folder_changed (gth_main_get_default_monitor (), data->parent, list, GTH_MONITOR_EVENT_CREATED); folder_tree = gth_browser_get_folder_tree (data->browser); path = gth_folder_tree_get_path (GTH_FOLDER_TREE (folder_tree), data->parent); gth_folder_tree_expand_row (GTH_FOLDER_TREE (folder_tree), path, FALSE); gtk_tree_path_free (path); g_list_free (list); } if (error != NULL) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS)) gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, _("Name already used")); else gth_request_dialog_set_info_text (GTH_REQUEST_DIALOG (dialog), GTK_MESSAGE_ERROR, error->message); g_clear_error (&error); } else { gth_browser_load_location (data->browser, folder); new_folder_data_free (data); gtk_widget_destroy (dialog); } g_object_unref (folder); }
static void screenshot_ready_cb (GdkPixbuf *pixbuf, gpointer user_data) { SaveData *save_data = user_data; GtkWidget *file_sel; if (pixbuf == NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (save_data->browser), _("Could not take a screenshot"), NULL); save_date_free (save_data); return; } save_data->image = gth_image_new_for_pixbuf (pixbuf); file_sel = gth_file_chooser_dialog_new (_("Save Image"), GTK_WINDOW (save_data->browser), "image-saver"); gtk_window_set_modal (GTK_WINDOW (file_sel), TRUE); { char *last_uri; GFile *last_folder; GthFileData *file_data; char *prefix; char *display_name; int attempt; last_uri = g_settings_get_string (save_data->settings, PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION); if ((last_uri == NULL) || (strcmp (last_uri, "~") == 0) || (strcmp (last_uri, "file://~") == 0)) { const char *dir; dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (dir != NULL) last_folder = g_file_new_for_path (dir); else last_folder = g_file_new_for_uri (get_home_uri ()); } else last_folder = g_file_new_for_uri (last_uri); gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (file_sel), last_folder, NULL); file_data = gth_media_viewer_page_get_file_data (save_data->page); prefix = _g_utf8_remove_extension (g_file_info_get_display_name (file_data->info)); if (prefix == NULL) prefix = g_strdup (C_("Filename", "Screenshot")); display_name = NULL; for (attempt = 1; attempt < MAX_ATTEMPTS; attempt++) { GFile *proposed_file; g_free (display_name); display_name = g_strdup_printf ("%s-%02d.jpeg", prefix, attempt); proposed_file = g_file_get_child_for_display_name (last_folder, display_name, NULL); if ((proposed_file != NULL) && ! g_file_query_exists (proposed_file, NULL)) { g_object_unref (proposed_file); break; } } if (display_name != NULL) { gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (file_sel), display_name); g_free (display_name); } g_free (prefix); g_object_unref (last_folder); g_free (last_uri); } g_signal_connect (GTK_DIALOG (file_sel), "response", G_CALLBACK (save_as_response_cb), save_data); gtk_widget_show (file_sel); }
static gboolean rygel_media_container_real_add_item_co (RygelMediaContainerAddItemData* data) { switch (data->_state_) { case 0: goto _state_0; case 27: goto _state_27; case 28: goto _state_28; default: g_assert_not_reached (); } _state_0: { data->_state_ = 27; rygel_media_object_get_writable ((RygelMediaObject*) data->self, data->cancellable, rygel_media_container_add_item_ready, data); return FALSE; _state_27: data->dir = rygel_media_object_get_writable_finish ((RygelMediaObject*) data->self, data->_res_, &data->_inner_error_); if (data->_inner_error_ != NULL) { g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_); g_error_free (data->_inner_error_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } } #line 178 "rygel-media-container.vala" if (data->dir == NULL) { #line 735 "rygel-media-container.c" data->_inner_error_ = g_error_new (RYGEL_CONTENT_DIRECTORY_ERROR, RYGEL_CONTENT_DIRECTORY_ERROR_RESTRICTED_PARENT, _ ("Object creation in %s not allowed"), ((RygelMediaObject*) data->self)->id); { g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_); g_error_free (data->_inner_error_); _g_object_unref0 (data->dir); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } } } data->file = g_file_get_child_for_display_name (data->dir, rygel_media_object_get_title ((RygelMediaObject*) data->item), &data->_inner_error_); if (data->_inner_error_ != NULL) { g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_); g_error_free (data->_inner_error_); _g_object_unref0 (data->dir); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } } data->_state_ = 28; g_file_create_async (data->file, G_FILE_CREATE_NONE, G_PRIORITY_DEFAULT, data->cancellable, rygel_media_container_add_item_ready, data); return FALSE; _state_28: #line 185 "rygel-media-container.vala" data->_tmp0_ = g_file_create_finish (data->file, data->_res_, &data->_inner_error_); #line 773 "rygel-media-container.c" _g_object_unref0 (data->_tmp0_); if (data->_inner_error_ != NULL) { g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_); g_error_free (data->_inner_error_); _g_object_unref0 (data->dir); _g_object_unref0 (data->file); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } } data->uri = g_file_get_uri (data->file); #line 189 "rygel-media-container.vala" ((RygelMediaObject*) data->item)->id = (data->_tmp1_ = g_strdup (data->uri), _g_free0 (((RygelMediaObject*) data->item)->id), data->_tmp1_); #line 190 "rygel-media-container.vala" gee_abstract_collection_add ((GeeAbstractCollection*) ((RygelMediaObject*) data->item)->uris, data->uri); #line 795 "rygel-media-container.c" _g_object_unref0 (data->dir); _g_object_unref0 (data->file); _g_free0 (data->uri); } { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } }