Code

Oops, was missing Dale.
[inkscape.git] / src / ui / dialog / inkscape-preferences.cpp
index 4dd20682ffa0eefd26ed1e59c1ff55a1b9f64b77..c8e9448b4e99a6a21f2199b7941da22b04af0a42 100644 (file)
@@ -14,6 +14,7 @@
 # include <config.h>
 #endif
 
+#include <gtkmm/main.h>
 #include <gtkmm/frame.h>
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/alignment.h>
@@ -22,6 +23,7 @@
 #include "inkscape-preferences.h"
 #include "verbs.h"
 #include "selcue.h"
+#include "unit-constants.h"
 #include <iostream>
 #include "enums.h"
 #include "inkscape.h"
@@ -60,7 +62,6 @@ InkscapePreferences::InkscapePreferences()
     hbox_list_page->set_spacing(12);
     this->get_vbox()->add(*hbox_list_page);
 
-
     //Pagelist
     Gtk::Frame* list_frame = Gtk::manage(new Gtk::Frame());
     Gtk::ScrolledWindow* scrolled_window = Gtk::manage(new Gtk::ScrolledWindow());
@@ -181,7 +182,7 @@ void InkscapePreferences::initPageSteps()
     _page_steps.add_line( false, _("Inset/Outset by:"), _steps_inset, _("px"), 
                           _("Inset and Outset commands displace the path by this distance (in px units)"), false);
     _steps_compass.init ( _("Compass-like display of angles"), "options.compassangledisplay", "value", true);
-    _page_windows.add_line( false, "", _steps_compass, "", 
+    _page_steps.add_line( false, "", _steps_compass, "", 
                             _("When on, angles are displayed with 0 at north, 0 to 360 range, positive clockwise; otherwise with 0 at east, -180 to 180 range, positive counterclockwise"));
     int const num_items = 12;
     Glib::ustring labels[num_items] = {"90", "60", "45", "30", "15", "10", "7.5", "6", "3", "2", "1", _("None")};
@@ -215,10 +216,10 @@ void StyleFromSelectionToTool(gchar const *prefs_path, StyleSwatch *swatch)
     if (desktop == NULL)
         return;
 
-    Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+    Inkscape::Selection *selection = sp_desktop_selection(desktop);
 
     if (selection->isEmpty()) {
-        SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE,
+        sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE,
                                        _("<b>No objects selected</b> to take the style from."));
         return;
     }
@@ -227,7 +228,7 @@ void StyleFromSelectionToTool(gchar const *prefs_path, StyleSwatch *swatch)
         /* TODO: If each item in the selection has the same style then don't consider it an error.
          * Maybe we should try to handle multiple selections anyway, e.g. the intersection of the
          * style attributes for the selected items. */
-        SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE,
+        sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE,
                                        _("<b>More than one object selected.</b>  Cannot take style from multiple objects."));
         return;
     }
@@ -300,6 +301,10 @@ void InkscapePreferences::initPageTools()
     Gtk::TreeModel::iterator iter_tools = this->AddPage(_page_tools, _("Tools"), PREFS_PAGE_TOOLS);    
     _path_tools = _page_list.get_model()->get_path(iter_tools);
 
+    _calligrapy_use_abs_size.init ( _("Width is in absolute units"), "tools.calligraphic", "abs_width", false);
+    _calligrapy_keep_selected.init ( _("Keep selected"), "tools.calligraphic", "keep_selected", true);
+    _connector_ignore_text.init( _("Don't attach connectors to text objects"), "tools.connector", "ignoretext", true);
+
     //Selector
     this->AddPage(_page_selector, _("Selector"), iter_tools, PREFS_PAGE_TOOLS_SELECTOR);
 
@@ -368,6 +373,10 @@ void InkscapePreferences::initPageTools()
     //Calligraphy
     this->AddPage(_page_calligraphy, _("Calligraphy"), iter_tools, PREFS_PAGE_TOOLS_CALLIGRAPHY);
     this->AddNewObjectsStyle(_page_calligraphy, "tools.calligraphic");
+    _page_calligraphy.add_line( false, "", _calligrapy_use_abs_size, "", 
+                            _("If on, pen width is in absolute units (px) independent of zoom; otherwise pen width depends on zoom so that it looks the same at any zoom"));
+    _page_calligraphy.add_line( false, "", _calligrapy_keep_selected, "", 
+                            _("If on, each object created with this tool will remain selected after you finish drawing it"));
     //Text
     this->AddPage(_page_text, _("Text"), iter_tools, PREFS_PAGE_TOOLS_TEXT);
     this->AddSelcueCheckbox(_page_text, "tools.text", true);
@@ -379,6 +388,8 @@ void InkscapePreferences::initPageTools()
     //Connector
     this->AddPage(_page_connector, _("Connector"), iter_tools, PREFS_PAGE_TOOLS_CONNECTOR);
     this->AddSelcueCheckbox(_page_connector, "tools.connector", true);
+    _page_connector.add_line(false, "", _connector_ignore_text, "", 
+            _("If on, connector attachment points will not be shown for text objects"));
     //Dropper
     this->AddPage(_page_dropper, _("Dropper"), iter_tools, PREFS_PAGE_TOOLS_DROPPER);
     this->AddSelcueCheckbox(_page_dropper, "tools.dropper", true);
@@ -390,6 +401,7 @@ void InkscapePreferences::initPageWindows()
     _win_save_geom.init ( _("Save window geometry"), "options.savewindowgeometry", "value", true);
     _win_hide_task.init ( _("Dialogs are hidden in taskbar"), "options.dialogsskiptaskbar", "value", true);
     _win_zoom_resize.init ( _("Zoom when window is resized"), "options.stickyzoom", "value", false);
+    _win_show_close.init ( _("Show close button on dialogs"), "dialogs", "showclose", false);
     _win_ontop_none.init ( _("None"), "options.transientpolicy", "value", 0, false, 0);
     _win_ontop_normal.init ( _("Normal"), "options.transientpolicy", "value", 1, true, &_win_ontop_none);
     _win_ontop_agressive.init ( _("Aggressive"), "options.transientpolicy", "value", 2, false, &_win_ontop_none);
@@ -400,6 +412,8 @@ void InkscapePreferences::initPageWindows()
                             _("Whether dialog windows are to be hidden in the window manager taskbar"));
     _page_windows.add_line( false, "", _win_zoom_resize, "", 
                             _("Zoom drawing when document window is resized, to keep the same area visible (this is the default which can be changed in any window using the button above the right scrollbar)"));
+    _page_windows.add_line( false, "", _win_show_close, "", 
+                            _("Whether dialog windows have a close button (requires restart)"));
     _page_windows.add_group_header( _("Dialogs on top:"));
     _page_windows.add_line( true, "", _win_ontop_none, "", 
                             _("Dialogs are treated as regular windows"));
@@ -473,6 +487,7 @@ void InkscapePreferences::initPageSelecting()
     _sel_recursive.init ( _("Select in current layer and sublayers"), "options.kbselection", "inlayer", PREFS_SELECTION_LAYER_RECURSIVE, false, &_sel_all);
     _sel_hidden.init ( _("Ignore hidden objects"), "options.kbselection", "onlyvisible", true);
     _sel_locked.init ( _("Ignore locked objects"), "options.kbselection", "onlysensitive", true);
+    _sel_layer_deselects.init ( _("Deselect upon layer change"), "options.selection", "layerdeselect", true);
 
     _page_select.add_group_header( _("Ctrl+A, Tab, Shift+Tab:"));
     _page_select.add_line( true, "", _sel_all, "", 
@@ -486,13 +501,16 @@ void InkscapePreferences::initPageSelecting()
     _page_select.add_line( true, "", _sel_locked, "", 
                            _("Uncheck this to be able to select objects that are locked (either by themselves or by being in a locked group or layer)"));
 
+    _page_select.add_line( false, "", _sel_layer_deselects, "", 
+                           _("Uncheck this to be able to keep the current objects selected when the current layer changes"));
+
     this->AddPage(_page_select, _("Selecting"), PREFS_PAGE_SELECTING);
 }
 
 
 void InkscapePreferences::initPageMisc()
 {
-    _misc_export.init("dialogs.export.defaultxdpi", "value", 0.0, 6000.0, 1.0, 1.0, 1.0, true, false);
+    _misc_export.init("dialogs.export.defaultxdpi", "value", 0.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false);
     _page_misc.add_line( false, _("Default export resolution:"), _misc_export, _("dpi"), 
                            _("Default bitmap resolution (in dots per inch) in the Export dialog"), false);
     _misc_imp_bitmap.init( _("Import bitmap as <image>"), "options.importbitmapsasimages", "value", true);
@@ -501,9 +519,6 @@ void InkscapePreferences::initPageMisc()
     _misc_comment.init( _("Add label comments to printing output"), "printing.debug", "show-label-comments", false);
     _page_misc.add_line( false, "", _misc_comment, "", 
                            _("When on, a comment will be added to the raw print output, marking the rendered output for an object with its label"), true);
-    _misc_scripts.init( _("Enable script effects (requires restart) - EXPERIMENTAL"), "extensions", "show-effects-menu", false);
-    _page_misc.add_line( false, "", _misc_scripts, "", 
-                           _("When on, the effects menu is enabled, allowing external effect scripts to be called, requires restart before effective - EXPERIMENTAL"), true);
     _misc_recent.init("options.maxrecentdocuments", "value", 0.0, 1000.0, 1.0, 1.0, 1.0, true, false);
     _page_misc.add_line( false, _("Max recent documents:"), _misc_recent, "", 
                            _("The maximum length of the Open Recent list in the File menu"), false);
@@ -573,6 +588,11 @@ void InkscapePreferences::on_pagelist_selection_changed()
         _page_title.set_markup("<span size='large'><b>" + row[_page_list_columns._col_name] + "</b></span>");
         _page_frame.add(*_current_page);
         _current_page->show();
+        while (Gtk::Main::events_pending()) 
+        {
+            Gtk::Main::iteration();
+        }
+        this->show_all_children();
     }
 }