Yasumichi Akahoshi
yasum****@users*****
2005年 3月 31日 (木) 01:38:45 JST
Index: libcxp/src/cxp-handler.c diff -u libcxp/src/cxp-handler.c:1.2 libcxp/src/cxp-handler.c:1.3 --- libcxp/src/cxp-handler.c:1.2 Thu Mar 31 00:07:52 2005 +++ libcxp/src/cxp-handler.c Thu Mar 31 01:38:45 2005 @@ -86,7 +86,7 @@ { bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - + CxpHandler *self = CXP_HANDLER (instance); self->priv = g_new (CxpHandlerPrivate, 1); @@ -139,7 +139,7 @@ { gchar *filename; gchar *suffix = NULL; - gchar *cmd; + gchar *cmd = NULL; gchar *fullcmd; gint index; GtkWidget *dialog; @@ -150,23 +150,45 @@ if ((suffix = strstr (filename, ".")) != NULL) { cmd = cxp_profile_get_string (handler->priv->profile, suffix); - if (cmd != NULL) - { - fullcmd = g_strdup_printf ("%s %s", cmd, fullpath); - g_spawn_command_line_async (fullcmd, NULL); - g_free (cmd); - } - else + if (cmd == NULL) { - dialog = cxp_entry_dialog_new(_("Undefined suffix"), _("input command"), ""); - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) + dialog = cxp_entry_dialog_new (_("Undefined suffix"), + _("input command"), ""); + if (gtk_dialog_run (GTK_DIALOG (dialog)) == + GTK_RESPONSE_OK) { - cmd = cxp_entry_dialog_get_entry_text (CXP_ENTRY_DIALOG(dialog)); - g_print("%s", cmd); - g_free(cmd); + cmd = cxp_entry_dialog_get_entry_text + (CXP_ENTRY_DIALOG (dialog)); + if (cmd != NULL) + { + cxp_profile_set_string (handler->priv-> + profile, suffix, + cmd); + } } - gtk_widget_destroy(dialog); + gtk_widget_destroy (dialog); } + g_free (suffix); } + else + { + dialog = cxp_entry_dialog_new (_("Open file"), + _("input command"), ""); + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) + { + cmd = cxp_entry_dialog_get_entry_text (CXP_ENTRY_DIALOG + (dialog)); + } + gtk_widget_destroy (dialog); + } + + if (cmd != NULL) + { + fullcmd = g_strdup_printf ("%s %s", cmd, fullpath); + g_spawn_command_line_async (fullcmd, NULL); + g_free (cmd); + g_free (fullcmd); + } + g_free (filename); } Index: libcxp/src/cxp-profile.c diff -u libcxp/src/cxp-profile.c:1.4 libcxp/src/cxp-profile.c:1.5 --- libcxp/src/cxp-profile.c:1.4 Thu Mar 31 01:04:44 2005 +++ libcxp/src/cxp-profile.c Thu Mar 31 01:38:45 2005 @@ -123,14 +123,11 @@ } self->priv->dispose_has_run = TRUE; - filename = g_build_filename ( - g_get_home_dir (), - ".cxp", - self->priv->appname, - self->priv->section, - NULL ); - if ((channel = - g_io_channel_new_file (filename, "w", NULL)) != NULL) + filename = g_build_filename (g_get_home_dir (), + ".cxp", + self->priv->appname, + self->priv->section, NULL); + if ((channel = g_io_channel_new_file (filename, "w", NULL)) != NULL) { g_hash_table_foreach (self->priv->config, cxp_profile_save_file, channel); @@ -151,7 +148,7 @@ g_free (self->priv); } -CxpProfile *cxp_profile_new (const gchar * appname, const gchar *section) +CxpProfile *cxp_profile_new (const gchar * appname, const gchar * section) { CxpProfile *profile; gchar *cxpdir; @@ -160,10 +157,7 @@ profile = CXP_PROFILE (g_object_new (CXP_TYPE_PROFILE, NULL)); profile->priv->appname = g_strdup (appname); profile->priv->section = g_strdup (section); - cxpdir = g_build_filename ( - g_get_home_dir (), - ".cxp", - NULL); + cxpdir = g_build_filename (g_get_home_dir (), ".cxp", NULL); if (!g_file_test (cxpdir, G_FILE_TEST_EXISTS)) { if (mkdir (cxpdir, S_IFDIR | 0777) != 0) @@ -171,10 +165,7 @@ g_error ("%s couldn't be created.\n", cxpdir); } } - appdir = g_build_filename ( - cxpdir, - appname, - NULL); + appdir = g_build_filename (cxpdir, appname, NULL); if (!g_file_test (appdir, G_FILE_TEST_EXISTS)) { if (mkdir (appdir, S_IFDIR | 0777) != 0) @@ -243,16 +234,17 @@ gchar *value; GIOChannel *channel; - filename = g_build_filename ( - g_get_home_dir (), - ".cxp", - profile->priv->appname, - profile->priv->section, - NULL ); + filename = g_build_filename (g_get_home_dir (), + ".cxp", + profile->priv->appname, + profile->priv->section, NULL); if ((channel = g_io_channel_new_file (filename, "r", NULL)) == NULL) { - g_free(filename); - filename = g_build_filename (PACKAGE_CONF_DIR, profile->priv->appname, profile->priv->section, NULL); + g_free (filename); + filename = + g_build_filename (PACKAGE_CONF_DIR, + profile->priv->appname, + profile->priv->section, NULL); channel = g_io_channel_new_file (filename, "r", NULL); } @@ -267,11 +259,11 @@ array = g_strsplit (line, "=", 2); name = g_strdup (array[0]); value = g_strdup (array[1]); - g_hash_table_replace(config, name, value); + g_hash_table_replace (config, name, value); } g_free (line); } - g_io_channel_unref(channel); + g_io_channel_unref (channel); } g_free (filename); }