index fbcdc665bf6799f215dfc0f7c67dae50f88dda42..62c8750e2b46b1293ac38e8767de2da6d1b64aad 100644 (file)
//Pages
Gtk::VBox* vbox_page = Gtk::manage(new Gtk::VBox());
Gtk::Frame* title_frame = Gtk::manage(new Gtk::Frame());
- hbox_list_page->pack_start(*vbox_page, true, true, 0);
+
+ Gtk::ScrolledWindow* pageScroller = Gtk::manage(new Gtk::ScrolledWindow());
+ pageScroller->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+ pageScroller->add(*vbox_page);
+ hbox_list_page->pack_start(*pageScroller, true, true, 0);
+
title_frame->add(_page_title);
vbox_page->pack_start(*title_frame, false, false, 0);
vbox_page->pack_start(_page_frame, true, true, 0);
_page_frame.set_shadow_type(Gtk::SHADOW_IN);
title_frame->set_shadow_type(Gtk::SHADOW_IN);
- initPageMouse();
- initPageScrolling();
- initPageSteps();
initPageTools();
- initPageWindows();
+ initPageSelecting();
+ initPageTransforms();
initPageClones();
initPageMasks();
- initPageTransforms();
initPageFilters();
- initPageSelecting();
- initPageImportExport();
+ initPageBitmaps();
initPageCMS();
initPageGrids();
+ initPageSVGOutput();
+ initPageAutosave();
+ initPageImportExport();
+ initPageUI();
+ initPageMouse();
+ initPageScrolling();
+ initPageSteps();
+ initPageWindows();
initPageMisc();
signalPresent().connect(sigc::mem_fun(*this, &InkscapePreferences::_presentPages));
}
}
-void InkscapePreferences::AddNewObjectsStyle(DialogPage& p, const std::string& prefs_path)
+void InkscapePreferences::AddNewObjectsStyle(DialogPage& p, const std::string& prefs_path, const gchar* banner)
{
-
-
- p.add_group_header( _("Create new objects with:"));
+ if (banner)
+ p.add_group_header(banner);
+ else
+ p.add_group_header( _("Create new objects with:"));
PrefRadioButton* current = Gtk::manage( new PrefRadioButton);
current->init ( _("Last used style"), prefs_path, "usecurrent", 1, true, 0);
p.add_line( true, "", *current, "",
_page_node.add_line( false, _("Flash time"), _t_node_pathflash_timeout, "ms", _("Specifies how long the path outline will be visible after a mouse-over (in milliseconds). Specify 0 to have the outline shown until mouse leaves the path."), false);
//Tweak
- this->AddPage(_page_tweak, _("Tweak"), iter_tools, PREFS_PAGE_TOOLS_NODE);
+ this->AddPage(_page_tweak, _("Tweak"), iter_tools, PREFS_PAGE_TOOLS_TWEAK);
+ this->AddNewObjectsStyle(_page_tweak, "tools.tweak", _("Paint objects with:"));
AddSelcueCheckbox(_page_tweak, "tools.tweak", true);
AddGradientCheckbox(_page_tweak, "tools.tweak", false);
+
//Zoom
this->AddPage(_page_zoom, _("Zoom"), iter_tools, PREFS_PAGE_TOOLS_ZOOM);
AddSelcueCheckbox(_page_zoom, "tools.zoom", true);
AddGradientCheckbox(_page_zoom, "tools.zoom", false);
+
//Shapes
Gtk::TreeModel::iterator iter_shapes = this->AddPage(_page_shapes, _("Shapes"), iter_tools, PREFS_PAGE_TOOLS_SHAPES);
_path_shapes = _page_list.get_model()->get_path(iter_shapes);
this->AddSelcueCheckbox(_page_shapes, "tools.shapes", true);
this->AddGradientCheckbox(_page_shapes, "tools.shapes", true);
+
//Rectangle
this->AddPage(_page_rectangle, _("Rectangle"), iter_shapes, PREFS_PAGE_TOOLS_SHAPES_RECT);
this->AddNewObjectsStyle(_page_rectangle, "tools.shapes.rect");
this->AddConvertGuidesCheckbox(_page_rectangle, "tools.shapes.rect", true);
+
//3D box
this->AddPage(_page_3dbox, _("3D Box"), iter_shapes, PREFS_PAGE_TOOLS_SHAPES_3DBOX);
this->AddNewObjectsStyle(_page_3dbox, "tools.shapes.3dbox");
this->AddConvertGuidesCheckbox(_page_3dbox, "tools.shapes.3dbox", true);
+
//ellipse
this->AddPage(_page_ellipse, _("Ellipse"), iter_shapes, PREFS_PAGE_TOOLS_SHAPES_ELLIPSE);
this->AddNewObjectsStyle(_page_ellipse, "tools.shapes.arc");
+
//star
this->AddPage(_page_star, _("Star"), iter_shapes, PREFS_PAGE_TOOLS_SHAPES_STAR);
this->AddNewObjectsStyle(_page_star, "tools.shapes.star");
+
//spiral
this->AddPage(_page_spiral, _("Spiral"), iter_shapes, PREFS_PAGE_TOOLS_SHAPES_SPIRAL);
this->AddNewObjectsStyle(_page_spiral, "tools.shapes.spiral");
+
//Pencil
this->AddPage(_page_pencil, _("Pencil"), iter_tools, PREFS_PAGE_TOOLS_PENCIL);
this->AddSelcueCheckbox(_page_pencil, "tools.freehand.pencil", true);
- _t_pencil_tolerance.init ( "tools.freehand.pencil", "tolerance", 0.0, 100.0, 0.5, 1.0, 10.0, false, false);
- _page_pencil.add_line( false, _("Tolerance:"), _t_pencil_tolerance, "",
- _("This value affects the amount of smoothing applied to freehand lines; lower values produce more uneven paths with more nodes"),
- false );
this->AddNewObjectsStyle(_page_pencil, "tools.freehand.pencil");
this->AddDotSizeSpinbutton(_page_pencil, "tools.freehand.pencil", 3.0);
+
//Pen
this->AddPage(_page_pen, _("Pen"), iter_tools, PREFS_PAGE_TOOLS_PEN);
this->AddSelcueCheckbox(_page_pen, "tools.freehand.pen", true);
this->AddNewObjectsStyle(_page_pen, "tools.freehand.pen");
this->AddDotSizeSpinbutton(_page_pen, "tools.freehand.pen", 3.0);
+
//Calligraphy
this->AddPage(_page_calligraphy, _("Calligraphy"), iter_tools, PREFS_PAGE_TOOLS_CALLIGRAPHY);
this->AddSelcueCheckbox(_page_calligraphy, "tools.calligraphic", false);
this->AddPage(_page_paintbucket, _("Paint Bucket"), iter_tools, PREFS_PAGE_TOOLS_PAINTBUCKET);
this->AddSelcueCheckbox(_page_paintbucket, "tools.paintbucket", false);
this->AddNewObjectsStyle(_page_paintbucket, "tools.paintbucket");
+
+ //Eraser
+ this->AddPage(_page_eraser, _("Eraser"), iter_tools, PREFS_PAGE_TOOLS_ERASER);
+ this->AddNewObjectsStyle(_page_eraser, "tools.eraser");
+
+ //LPETool
+ this->AddPage(_page_lpetool, _("LPE Tool"), iter_tools, PREFS_PAGE_TOOLS_LPETOOL);
+ this->AddNewObjectsStyle(_page_lpetool, "tools.lpetool");
+
//Text
this->AddPage(_page_text, _("Text"), iter_tools, PREFS_PAGE_TOOLS_TEXT);
this->AddSelcueCheckbox(_page_text, "tools.text", true);
this->AddGradientCheckbox(_page_text, "tools.text", true);
this->AddNewObjectsStyle(_page_text, "tools.text");
+
//Gradient
this->AddPage(_page_gradient, _("Gradient"), iter_tools, PREFS_PAGE_TOOLS_GRADIENT);
this->AddSelcueCheckbox(_page_gradient, "tools.gradient", true);
+
//Connector
this->AddPage(_page_connector, _("Connector"), iter_tools, PREFS_PAGE_TOOLS_CONNECTOR);
this->AddSelcueCheckbox(_page_connector, "tools.connector", true);
_("Floating"));
#ifndef WIN32 // non-Win32 special code to enable transient dialogs
- _page_windows.add_group_header( _("Dialogs on top:"));
+ _page_windows.add_group_header( _("Dialogs on top:"));
_page_windows.add_line( true, "", _win_ontop_none, "",
_("Dialogs are treated as regular windows"));
_page_clones.add_line( true, "", _clone_option_delete, "",
_("Orphaned clones are deleted along with their original."));
+ _page_clones.add_group_header( _("When duplicating original+clones:"));
+
+ _clone_relink_on_duplicate.init ( _("Relink duplicated clones"), "options.relinkclonesonduplicate", "value", false);
+ _page_clones.add_line(true, "", _clone_relink_on_duplicate, "",
+ _("When duplicating a selection containing both a clone and its original (possibly in groups), relink the duplicated clone to the duplicated original instead of the old original"));
+
//TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page
this->AddPage(_page_clones, _("Clones"), PREFS_PAGE_CLONES);
}
_grids_xy.add_line( false, _("Spacing Y"), _grids_xy_spacing_y, "", _("Distance between horizontal grid lines"), false);
_grids_xy_color.init(_("Grid line color"), "options.grids.xy", "color", 0x0000ff20);
- _grids_xy.add_line( false, _("Grid line color"), _grids_xy_color, "", _("Selects the color used for normal grid lines."), false);
+ _grids_xy.add_line( false, _("Grid line color"), _grids_xy_color, "", _("Color used for normal grid lines"), false);
_grids_xy_empcolor.init(_("Major grid line color"), "options.grids.xy", "empcolor", 0x0000ff40);
- _grids_xy.add_line( false, _("Major grid line color"), _grids_xy_empcolor, "", _("Selects the color used for major (highlighted) grid lines."), false);
+ _grids_xy.add_line( false, _("Major grid line color"), _grids_xy_empcolor, "", _("Color used for major (highlighted) grid lines"), false);
_grids_xy_empspacing.init("options.grids.xy", "empspacing", 1.0, 1000.0, 1.0, 5.0, 5.0, true, false);
_grids_xy.add_line( false, _("Major grid line every"), _grids_xy_empspacing, "", "", false);
_grids_xy_dotted.init( _("Show dots instead of lines"), "options.grids.xy", "dotted", false);
- _grids_xy.add_line( false, "", _grids_xy_dotted, "", _("If set, displays dots at gridpoints instead of gridlines"), false);
+ _grids_xy.add_line( false, "", _grids_xy_dotted, "", _("If set, display dots at gridpoints instead of gridlines"), false);
// CanvasAxonomGrid properties:
_grids_axonom_units.init("options.grids.axonom", "units");
_grids_axonom.add_line( false, _("Angle X"), _grids_axonom_angle_x, "", _("Angle of x-axis"), false);
_grids_axonom.add_line( false, _("Angle Z"), _grids_axonom_angle_z, "", _("Angle of z-axis"), false);
_grids_axonom_color.init(_("Grid line color"), "options.grids.axonom", "color", 0x0000ff20);
- _grids_axonom.add_line( false, _("Grid line color"), _grids_axonom_color, "", _("Selects the color used for normal grid lines."), false);
+ _grids_axonom.add_line( false, _("Grid line color"), _grids_axonom_color, "", _("Color used for normal grid lines"), false);
_grids_axonom_empcolor.init(_("Major grid line color"), "options.grids.axonom", "empcolor", 0x0000ff40);
- _grids_axonom.add_line( false, _("Major grid line color"), _grids_axonom_empcolor, "", _("Selects the color used for major (highlighted) grid lines."), false);
+ _grids_axonom.add_line( false, _("Major grid line color"), _grids_axonom_empcolor, "", _("Color used for major (highlighted) grid lines"), false);
_grids_axonom_empspacing.init("options.grids.axonom", "empspacing", 1.0, 1000.0, 1.0, 5.0, 5.0, true, false);
_grids_axonom.add_line( false, _("Major grid line every"), _grids_axonom_empspacing, "", "", false);
this->AddPage(_page_grids, _("Grids"), PREFS_PAGE_GRIDS);
}
-void InkscapePreferences::initPageMisc()
+void InkscapePreferences::initPageSVGOutput()
{
- _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);
+ _svgoutput_usenamedcolors.init( _("Use named colors"), "options.svgoutput", "usenamedcolors", false);
+ _page_svgoutput.add_line( false, "", _svgoutput_usenamedcolors, "", _("If set, write the CSS name of the color when available (e.g. 'red' or 'magenta') instead of the numeric value"), false);
- _misc_forkvectors.init( _("Prevent sharing of gradient definitions"), "options.forkgradientvectors", "value", true);
- _page_misc.add_line( false, "", _misc_forkvectors, "",
- _("When on, shared gradient definitions are automatically forked on change; uncheck to allow sharing of gradient definitions so that editing one object may affect other objects using the same gradient"), true);
+ _page_svgoutput.add_group_header( _("XML formatting"));
- _page_misc.add_line( false, _("Simplification threshold:"), _misc_simpl, "",
- _("How strong is the Simplify command by default. If you invoke this command several times in quick succession, it will act more and more aggressively; invoking it again after a pause restores the default threshold."), false);
- int const num_items = 5;
- Glib::ustring labels[num_items] = {_("None"), _("2x2"), _("4x4"), _("8x8"), _("16x16")};
- int values[num_items] = {0, 1, 2, 3, 4};
- _misc_overs_bitmap.set_size_request(_sb_width);
- _misc_overs_bitmap.init("options.bitmapoversample", "value", labels, values, num_items, 1);
- _page_misc.add_line( false, _("Oversample bitmaps:"), _misc_overs_bitmap, "", "", false);
+ _svgoutput_inlineattrs.init( _("Inline attributes"), "options.svgoutput", "inlineattrs", false);
+ _page_svgoutput.add_line( false, "", _svgoutput_inlineattrs, "", _("Put attributes on the same line as the element tag"), false);
+
+ _svgoutput_indent.init("options.svgoutput", "indent", 0.0, 1000.0, 1.0, 2.0, 2.0, true, false);
+ _page_svgoutput.add_line( false, _("Indent, spaces"), _svgoutput_indent, "", _("The number of spaces to use for indenting nested elements; set to 0 for no indentation"), false);
+
+ _page_svgoutput.add_group_header( _("Path data"));
+
+ _svgoutput_allowrelativecoordinates.init( _("Allow relative coordinates"), "options.svgoutput", "allowrelativecoordinates", true);
+ _page_svgoutput.add_line( false, "", _svgoutput_allowrelativecoordinates, "", _("If set, relative coordinates may be used in path data"), false);
+
+ _svgoutput_forcerepeatcommands.init( _("Force repeat commands"), "options.svgoutput", "forcerepeatcommands", false);
+ _page_svgoutput.add_line( false, "", _svgoutput_forcerepeatcommands, "", _("Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead of 'L 1,2 3,4')"), false);
+ _page_svgoutput.add_group_header( _("Numbers"));
- // consider moving this to an UI tab:
+ _svgoutput_numericprecision.init("options.svgoutput", "numericprecision", 1.0, 16.0, 1.0, 2.0, 8.0, true, false);
+ _page_svgoutput.add_line( false, _("Numeric precision"), _svgoutput_numericprecision, "", _("How many digits to write after the decimal dot"), false);
- Glib::ustring sizeLabels[] = {_("Normal"), _("Medium"), _("Small")};
+ _svgoutput_minimumexponent.init("options.svgoutput", "minimumexponent", -32.0, -1, 1.0, 2.0, -8.0, true, false);
+ _page_svgoutput.add_line( false, _("Minimum exponent"), _svgoutput_minimumexponent, "", _("The smallest number written to SVG is 10 to the power of this exponent; anything smaller is written as zero."), false);
+
+ this->AddPage(_page_svgoutput, _("SVG output"), PREFS_PAGE_SVGOUTPUT);
+}
+
+void InkscapePreferences::initPageUI()
+{
+ Glib::ustring sizeLabels[] = {_("Normal"), _("Medium"), _("Small")};
int sizeValues[] = {0, 1, 2};
_misc_small_toolbar.init( "toolbox", "small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
- _page_misc.add_line( false, _("Commands toolbar icon size"), _misc_small_toolbar, "",
+ _page_ui.add_line( false, _("Commands bar icon size"), _misc_small_toolbar, "",
_("Set the size for the commands toolbar to use (requires restart)"), false);
_misc_small_secondary.init( "toolbox", "secondary", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 1 );
- _page_misc.add_line( false, _("Secondary toolbar icon size"), _misc_small_secondary, "",
+ _page_ui.add_line( false, _("Tool controls bar icon size"), _misc_small_secondary, "",
_("Set the size for the secondary toolbar to use (requires restart)"), false);
_misc_small_tools.init( "toolbox.tools", "small", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), 0 );
- _page_misc.add_line( false, _("Main toolbar icon size"), _misc_small_tools, "",
+ _page_ui.add_line( false, _("Main toolbar icon size"), _misc_small_tools, "",
_("Set the size for the main tools to use (requires restart)"), false);
_misc_recent.init("options.maxrecentdocuments", "value", 0.0, 1000.0, 1.0, 1.0, 1.0, true, false);
- _page_misc.add_line( false, _("Maximum number of recent documents:"), _misc_recent, "",
+ _page_ui.add_line( false, _("Maximum documents in Open Recent:"), _misc_recent, "",
_("The maximum length of the Open Recent list in the File menu"), false);
+
+ this->AddPage(_page_ui, _("Interface"), PREFS_PAGE_UI);
+}
+
+
+void InkscapePreferences::initPageAutosave()
+{
+ // Autosave options
+ _autosave_autosave_enable.init( _("Enable autosave (requires restart)"), "options.autosave", "enable", false);
+ _page_autosave.add_line(false, "", _autosave_autosave_enable, "", _("Automatically save the current document(s) at a given interval, thus minimizing loss in case of a crash"), false);
+ _autosave_autosave_interval.init("options.autosave", "interval", 1.0, 10800.0, 1.0, 10.0, 10.0, true, false);
+ _page_autosave.add_line(true, _("Interval (in minutes)"), _autosave_autosave_interval, "", _("Interval (in minutes) at which document will be autosaved"), false);
+ _autosave_autosave_path.init("options.autosave", "path", true);
+ _page_autosave.add_line(true, _("Path"), _autosave_autosave_path, "", _("The directory where autosaves will be written"), false);
+ _autosave_autosave_max.init("options.autosave", "max", 1.0, 100.0, 1.0, 10.0, 10.0, true, false);
+ _page_autosave.add_line(true, _("Maximum number of autosaves"), _autosave_autosave_max, "", _("Maximum number of autosaved files; use this to limit the storage space used"), false);
+
+ /* When changing the interval or enabling/disabling the autosave function,
+ * update our running configuration
+ *
+ * FIXME!
+ * the inkscape_autosave_init should be called AFTER the values have been changed
+ * (which cannot be guaranteed from here)
+ *
+ * For now, autosave-settings will not change until restart
+ */
+ /*
+ _autosave_autosave_enable.signal_toggled().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE );
+ _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE );
+ */
+
+ // -----------
+
+ this->AddPage(_page_autosave, _("Autosave"), PREFS_PAGE_AUTOSAVE);
+}
+
+void InkscapePreferences::initPageBitmaps()
+{
+ {
+ Glib::ustring labels[] = {_("None"), _("2x2"), _("4x4"), _("8x8"), _("16x16")};
+ int values[] = {0, 1, 2, 3, 4};
+ _misc_overs_bitmap.set_size_request(_sb_width);
+ _misc_overs_bitmap.init("options.bitmapoversample", "value", labels, values, G_N_ELEMENTS(values), 1);
+ _page_bitmaps.add_line( false, _("Oversample bitmaps:"), _misc_overs_bitmap, "", "", false);
+ }
+
+ _misc_bitmap_autoreload.init(_("Automatically reload bitmaps"), "options.bitmapautoreload", "value", true);
+ _page_bitmaps.add_line( false, "", _misc_bitmap_autoreload, "",
+ _("Automatically reload linked images when file is changed on disk"));
+ gchar const *choices = prefs_get_string_attribute("options.bitmapeditor", "choices");
+ if ( choices && choices[0] ) {
+ gchar** splits = g_strsplit(choices, ",", 0);
+ gint numIems = g_strv_length(splits);
+
+ Glib::ustring labels[numIems];
+ int values[numIems];
+ for ( gint i = 0; i < numIems; i++) {
+ values[i] = i;
+ labels[i] = splits[i];
+ }
+ _misc_bitmap_editor.init("options.bitmapeditor", "value", labels, values, numIems, 0);
+ _page_bitmaps.add_line( false, _("Bitmap editor:"), _misc_bitmap_editor, "", "", false);
+
+ g_strfreev(splits);
+ }
+
+ _bitmap_copy_res.init("options.createbitmap", "resolution", 1.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false);
+ _page_bitmaps.add_line( false, _("Resolution for Create Bitmap Copy:"), _bitmap_copy_res, _("dpi"),
+ _("Resolution used by the Create Bitmap Copy command"), false);
+
+ this->AddPage(_page_bitmaps, _("Bitmaps"), PREFS_PAGE_BITMAPS);
+}
+
+
+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_forkvectors.init( _("Prevent sharing of gradient definitions"), "options.forkgradientvectors", "value", true);
+ _page_misc.add_line( false, "", _misc_forkvectors, "",
+ _("When on, shared gradient definitions are automatically forked on change; uncheck to allow sharing of gradient definitions so that editing one object may affect other objects using the same gradient"), true);
+
_misc_simpl.init("options.simplifythreshold", "value", 0.0001, 1.0, 0.0001, 0.0010, 0.0010, false, false);
+ _page_misc.add_line( false, _("Simplification threshold:"), _misc_simpl, "",
+ _("How strong is the Simplify command by default. If you invoke this command several times in quick succession, it will act more and more aggressively; invoking it again after a pause restores the default threshold."), false);
+
+ _misc_latency_skew.init("debug.latency", "skew", 0.5, 2.0, 0.01, 0.10, 1.0, false, false);
+ _page_misc.add_line( false, _("Latency skew:"), _misc_latency_skew, _("(requires restart)"),
+ _("Factor by which the event clock is skewed from the actual time (0.9766 on some systems)."), false);
+
+ _misc_namedicon_delay.init( _("Pre-render named icons"), "options.iconrender", "named_nodelay", false);
+ _page_misc.add_line( false, "", _misc_namedicon_delay, "",
+ _("When on, named icons will be rendered before displaying the ui. This is for working around bugs in GTK+ named icon notification"), true);
this->AddPage(_page_misc, _("Misc"), PREFS_PAGE_MISC);
}