summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2018-09-22 01:23:04 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2018-09-22 01:23:04 +0000
commit7cd9900d0d7ff692a6cf0a0fbfa3651413c27ca8 (patch)
tree733ddd2e985d44d1ebc3318dee89a8658424aaa9 /src
parentfix CTRL+button2 rotation direction (diff)
downloadinkscape-7cd9900d0d7ff692a6cf0a0fbfa3651413c27ca8.tar.gz
inkscape-7cd9900d0d7ff692a6cf0a0fbfa3651413c27ca8.zip
Fix problems on dialogs with extensions. TODO: Add dialog on drag&drop a SVG
Diffstat (limited to 'src')
-rw-r--r--src/extension/extension.h1
-rw-r--r--src/extension/internal/svg.cpp24
-rw-r--r--src/extension/system.cpp14
-rw-r--r--src/main.cpp7
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp2
-rw-r--r--src/ui/interface.cpp5
-rw-r--r--src/verbs.cpp12
7 files changed, 22 insertions, 43 deletions
diff --git a/src/extension/extension.h b/src/extension/extension.h
index 6b1a2aed8..1607f606b 100644
--- a/src/extension/extension.h
+++ b/src/extension/extension.h
@@ -290,6 +290,7 @@ public:
Gtk::Widget * autogui (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal<void> * changeSignal = nullptr);
void paramListString (std::list <std::string> & retlist);
void set_gui(bool s) { _gui = s; }
+ bool get_gui() { return _gui; }
/* Extension editor dialog stuff */
public:
diff --git a/src/extension/internal/svg.cpp b/src/extension/internal/svg.cpp
index 7d88ad007..3f6a342de 100644
--- a/src/extension/internal/svg.cpp
+++ b/src/extension/internal/svg.cpp
@@ -137,7 +137,7 @@ Svg::init()
"<inkscape-extension xmlns=\"" INKSCAPE_EXTENSION_URI "\">\n"
"<name>" N_("SVG Input") "</name>\n"
"<id>" SP_MODULE_KEY_INPUT_SVG "</id>\n"
- "<param name='link_svg' type='optiongroup' appearance='full' _gui-text='" N_("SVG Image Import Type:") "' >\n"
+ "<param name='import_mode_svg' type='optiongroup' appearance='full' _gui-text='" N_("SVG Image Import Type:") "' >\n"
"<_option value='include' >" N_("Include SVG image as editable object(s) in the current file") "</_option>\n"
"<_option value='embed' >" N_("Embed the SVG file in a image tag (not editable in this document)") "</_option>\n"
"<_option value='link' >" N_("Link the SVG file in a image tag (not editable in this document).") "</_option>\n"
@@ -206,21 +206,15 @@ Svg::open (Inkscape::Extension::Input *mod, const gchar *uri)
const auto path = file->get_path();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
bool ask = prefs->getBool("/dialogs/import/ask");
- Glib::ustring link_svg = prefs->getString("/dialogs/import/link_svg");
+ Glib::ustring import_mode_svg = prefs->getString("/dialogs/import/import_mode_svg");
Glib::ustring scale = prefs->getString("/dialogs/import/scale");
- bool is_import = false;
- if (strcmp(prefs->getString("/options/openmethod/value").c_str(), "done") == 0 ||
- strcmp(prefs->getString("/options/openmethod/value").c_str(), "import") == 0)
- {
- is_import = true;
- }
- if(INKSCAPE.use_gui() && is_import && ask) {
- Glib::ustring mod_link_svg = mod->get_param_optiongroup("link_svg");
+ if(mod->get_gui() && ask) {
+ Glib::ustring mod_import_mode_svg = mod->get_param_optiongroup("import_mode_svg");
Glib::ustring mod_scale = mod->get_param_optiongroup("scale");
- if( link_svg.compare( mod_link_svg) != 0 ) {
- link_svg = mod_link_svg;
+ if( import_mode_svg.compare( mod_import_mode_svg) != 0 ) {
+ import_mode_svg = mod_import_mode_svg;
}
- prefs->setString("/dialogs/import/link_svg", link_svg );
+ prefs->setString("/dialogs/import/import_mode_svg", import_mode_svg );
if( scale.compare( mod_scale ) != 0 ) {
scale = mod_scale;
}
@@ -228,8 +222,8 @@ Svg::open (Inkscape::Extension::Input *mod, const gchar *uri)
prefs->setBool("/dialogs/import/ask", !mod->get_param_bool("do_not_ask") );
}
SPDocument * doc = SPDocument::createNewDoc (nullptr, TRUE, TRUE);
- if (link_svg.compare("include") != 0 && is_import) {
- bool embed = ( link_svg.compare( "embed" ) == 0 );
+ if (prefs->getBool("/options/onimport", false) && import_mode_svg.compare("include") != 0) {
+ bool embed = ( import_mode_svg.compare( "embed" ) == 0 );
SPDocument * ret = SPDocument::createNewDoc(uri, TRUE);
SPNamedView *nv = sp_document_namedview(doc, nullptr);
Glib::ustring display_unit = nv->display_units->abbr;
diff --git a/src/extension/system.cpp b/src/extension/system.cpp
index 2a74c6b0c..daad169aa 100644
--- a/src/extension/system.cpp
+++ b/src/extension/system.cpp
@@ -99,12 +99,14 @@ SPDocument *open(Extension *key, gchar const *filename)
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
bool ask = prefs->getBool("/dialogs/import/ask");
Glib::ustring id = Glib::ustring(imod->get_id(), 22);
- if (id.compare("org.inkscape.input.svg") == 0 &&
- ((strcmp(prefs->getString("/options/openmethod/value").c_str(), "done") != 0 &&
- strcmp(prefs->getString("/options/openmethod/value").c_str(), "import") != 0) ||
- !ask)) {
- show = false;
- imod->set_gui(false);
+ if (id.compare("org.inkscape.input.svg") == 0) {
+ if (ask && prefs->getBool("/options/onimport", false)) {
+ show = true;
+ imod->set_gui(true);
+ } else {
+ show = false;
+ imod->set_gui(false);
+ }
} else if(strlen(imod->get_id()) > 27) {
id = Glib::ustring(imod->get_id(), 28);
if (!ask && id.compare( "org.inkscape.input.gdkpixbuf") == 0) {
diff --git a/src/main.cpp b/src/main.cpp
index 290579a01..43c2a11d0 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1100,7 +1100,6 @@ static int sp_main_shell(char const* command_name)
{
int retval = 0;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setString("/options/openmethod/value", "shell");
const unsigned int buffer_size = 4096;
gchar *command_line = g_strnfill(buffer_size, 0);
g_strlcpy(command_line, command_name, buffer_size);
@@ -1166,7 +1165,6 @@ static int sp_main_shell(char const* command_name)
} while (linedata && (retval == 0));
g_free(command_line);
- prefs->setString("/options/openmethod/value", "done");
return retval;
}
@@ -1174,7 +1172,6 @@ int sp_main_console(int argc, char const **argv)
{
/* We are started in text mode */
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
-prefs->setString("/options/openmethod/value", "shell");
#if !GLIB_CHECK_VERSION(2,36,0)
/* Do this g_type_init(), so that we can use Xft/Freetype2 (Pango)
* in a non-Gtk environment. Used in libnrtype's
@@ -1197,7 +1194,6 @@ prefs->setString("/options/openmethod/value", "shell");
#endif // WITH_DBUS
) {
do_print_message("Nothing to do!\n");
- prefs->setString("/options/openmethod/value", "done");
exit(0);
}
@@ -1206,16 +1202,13 @@ prefs->setString("/options/openmethod/value", "shell");
if (sp_shell) {
int retVal = sp_main_shell(argv[0]); // Run as interactive shell
- prefs->setString("/options/openmethod/value", "done");
exit((retVal < 0) ? 1 : 0);
} else {
int retVal = sp_process_file_list(fl); // Normal command line invocation
if (retVal){
- prefs->setString("/options/openmethod/value", "done");
exit(1);
}
}
- prefs->setString("/options/openmethod/value", "done");
return 0;
}
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index c52d4f93c..a1aae3cde 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -1745,7 +1745,7 @@ void InkscapePreferences::initPageBitmaps()
{
Glib::ustring labels[] = {_("Include"), _("Embed"), _("Link")};
Glib::ustring values[] = {"include", "embed", "link"};
- _svg_link.init("/dialogs/import/link_svg", labels, values, G_N_ELEMENTS(values), "include");
+ _svg_link.init("/dialogs/import/import_mode_svg", labels, values, G_N_ELEMENTS(values), "include");
_page_bitmaps.add_line( false, _("SVG import mode:"), _svg_link, "", "", false);
}
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index b19b10221..35723af04 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -750,8 +750,6 @@ static void
sp_recent_open(GtkRecentChooser *recent_menu, gpointer /*user_data*/)
{
// dealing with the bizarre filename convention in Inkscape for now
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setString("/options/openmethod/value", "open");
gchar *uri = gtk_recent_chooser_get_current_uri(GTK_RECENT_CHOOSER(recent_menu));
gchar *local_fn = g_filename_from_uri(uri, nullptr, nullptr);
gchar *utf8_fn = g_filename_to_utf8(local_fn, -1, nullptr, nullptr, nullptr);
@@ -759,7 +757,6 @@ sp_recent_open(GtkRecentChooser *recent_menu, gpointer /*user_data*/)
g_free(utf8_fn);
g_free(local_fn);
g_free(uri);
- prefs->setString("/options/openmethod/value", "done");
}
static void
@@ -1293,7 +1290,7 @@ sp_ui_drag_data_received(GtkWidget *widget,
Inkscape::GC::release(newgroup);
DocumentUndo::done( doc, SP_VERB_NONE,
- _("Drop SVG") );
+ _("Drop SVG") );
break;
}
diff --git a/src/verbs.cpp b/src/verbs.cpp
index fd3febc2c..4834f02d0 100644
--- a/src/verbs.cpp
+++ b/src/verbs.cpp
@@ -889,14 +889,10 @@ void FileVerb::perform(SPAction *action, void *data)
sp_file_new_default();
break;
case SP_VERB_FILE_OPEN:
- prefs->setString("/options/openmethod/value", "open");
sp_file_open_dialog(*parent, nullptr, nullptr);
- prefs->setString("/options/openmethod/value", "done");
break;
case SP_VERB_FILE_REVERT:
- prefs->setString("/options/openmethod/value", "revert");
sp_file_revert_dialog();
- prefs->setString("/options/openmethod/value", "done");
break;
case SP_VERB_FILE_SAVE:
sp_file_save(*parent, nullptr, nullptr);
@@ -914,17 +910,15 @@ void FileVerb::perform(SPAction *action, void *data)
sp_file_print(*parent);
break;
case SP_VERB_FILE_IMPORT:
- prefs->setString("/options/openmethod/value","import");
+ prefs->setBool("/options/onimport",true);
sp_file_import(*parent);
- prefs->setString("/options/openmethod/value", "done");
+ prefs->setBool("/options/onimport",false);
break;
// case SP_VERB_FILE_EXPORT:
// sp_file_export_dialog(*parent);
// break;
case SP_VERB_FILE_IMPORT_FROM_OCAL:
- prefs->setString("/options/openmethod/value", "ocal");
sp_file_import_from_ocal(*parent);
- prefs->setString("/options/openmethod/value", "done");
break;
// case SP_VERB_FILE_EXPORT_TO_OCAL:
// sp_file_export_to_ocal(*parent);
@@ -939,9 +933,7 @@ void FileVerb::perform(SPAction *action, void *data)
sp_ui_close_view(nullptr);
break;
case SP_VERB_FILE_TEMPLATES:
- prefs->setString("/options/openmethod/value", "template");
Inkscape::UI::NewFromTemplate::load_new_from_template();
- prefs->setString("/options/openmethod/value", "done");
break;
default:
break;