index f3429ce7b59de9964f5d78242115fd92858bc52d..34e97a71372789c4e35634d1e1abcd8d4a85d81f 100644 (file)
* Carl Hetherington
* Marco Scholten
* Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
+ * Bruno Dilly <bruno.dilly@gmail.com>
*
* Copyright (C) 2004-2007 Authors
*
#include "xml/repr.h"
#include "ui/widget/style-swatch.h"
#include "display/nr-filter-gaussian.h"
+#include "color-profile-fns.h"
+#include "display/canvas-grid.h"
namespace Inkscape {
namespace UI {
namespace Dialog {
InkscapePreferences::InkscapePreferences()
- : Dialog ("dialogs.preferences", SP_VERB_DIALOG_DISPLAY),
+ : UI::Widget::Panel ("", "dialogs.preferences", SP_VERB_DIALOG_DISPLAY),
_max_dialog_width(0),
_max_dialog_height(0),
_current_page(0)
//get the width of a spinbutton
Gtk::SpinButton* sb = new Gtk::SpinButton;
sb->set_width_chars(6);
- this->get_vbox()->add(*sb);
- this->show_all_children();
- Gtk:: Requisition sreq;
+ _getContents()->add(*sb);
+ show_all_children();
+ Gtk::Requisition sreq;
sb->size_request(sreq);
_sb_width = sreq.width;
- this->get_vbox()->remove(*sb);
+ _getContents()->remove(*sb);
delete sb;
//Main HBox
Gtk::HBox* hbox_list_page = Gtk::manage(new Gtk::HBox());
hbox_list_page->set_border_width(12);
hbox_list_page->set_spacing(12);
- this->get_vbox()->add(*hbox_list_page);
+ _getContents()->add(*hbox_list_page);
//Pagelist
Gtk::Frame* list_frame = Gtk::manage(new Gtk::Frame());
initPageTransforms();
initPageFilters();
initPageSelecting();
+ initPageImportExport();
+ initPageCMS();
+ initPageGrids();
initPageMisc();
+ signalPresent().connect(sigc::mem_fun(*this, &InkscapePreferences::_presentPages));
+
//calculate the size request for this dialog
this->show_all_children();
_page_list.expand_all();
_page_list_model->foreach_iter(sigc::mem_fun(*this, &InkscapePreferences::SetMaxDialogSize));
- this->set_size_request(_max_dialog_width, _max_dialog_height);
+ _getContents()->set_size_request(_max_dialog_width, _max_dialog_height);
_page_list.collapse_all();
}
{
}
-void InkscapePreferences::present()
-{
- _page_list_model->foreach_iter(sigc::mem_fun(*this, &InkscapePreferences::PresentPage));
- Dialog::present();
-}
-
Gtk::TreeModel::iterator InkscapePreferences::AddPage(DialogPage& p, Glib::ustring title, int id)
{
return AddPage(p, title, Gtk::TreeModel::iterator() , id);
_scroll_auto_thres.init ( "options.autoscrolldistance", "value", -600.0, 600.0, 1.0, 1.0, -10.0, true, false);
_page_scrolling.add_line( true, _("Threshold:"), _scroll_auto_thres, _("pixels"),
_("How far (in screen pixels) you need to be from the canvas edge to trigger autoscroll; positive is outside the canvas, negative is within the canvas"), false);
+ _scroll_space.init ( _("Left mouse button pans when Space is pressed"), "options.spacepans", "value", false);
+ _page_scrolling.add_line( false, "", _scroll_space, "",
+ _("When on, pressing and holding Space and dragging with left mouse button pans canvas (as in Adobe Illustrator). When off, Space temporarily switches to Selector tool (default)."));
+ _wheel_zoom.init ( _("Mouse wheel zooms by default"), "options.wheelzooms", "value", false);
+ _page_scrolling.add_line( false, "", _wheel_zoom, "",
+ _("When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when off, it zooms with Ctrl and scrolls without Ctrl."));
}
void InkscapePreferences::initPageSteps()
_steps_compass.init ( _("Compass-like display of angles"), "options.compassangledisplay", "value", true);
_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")};
- int values[num_items] = {2, 3, 4, 6, 12, 18, 24, 30, 60, 90, 180, 0};
+ int const num_items = 17;
+ Glib::ustring labels[num_items] = {"90", "60", "45", "36", "30", "22.5", "18", "15", "12", "10", "7.5", "6", "3", "2", "1", "0.5", _("None")};
+ int values[num_items] = {2, 3, 4, 5, 6, 8, 10, 12, 15, 18, 24, 30, 60, 90, 180, 360, 0};
_steps_rot_snap.set_size_request(_sb_width);
_steps_rot_snap.init("options.rotationsnapsperpi", "value", labels, values, num_items, 12);
_page_steps.add_line( false, _("Rotation snaps every:"), _steps_rot_snap, _("degrees"),
@@ -221,6 +229,22 @@ void InkscapePreferences::AddGradientCheckbox(DialogPage& p, const std::string&
p.add_line( false, "", *cb, "", _("Whether selected objects display gradient editing controls"));
}
+void InkscapePreferences::AddConvertGuidesCheckbox(DialogPage& p, const std::string& prefs_path, bool def_value) {
+ PrefCheckButton* cb = Gtk::manage( new PrefCheckButton);
+ cb->init ( _("Conversion to guides uses edges instead of bounding box"), prefs_path, "convertguides", def_value);
+ p.add_line( false, "", *cb, "", _("Converting an object to guides places these along the object's true edges (imitating the object's shape), not along the bounding box."));
+}
+
+void InkscapePreferences::AddDotSizeSpinbutton(DialogPage& p, const std::string& prefs_path, double def_value)
+{
+ PrefSpinButton* sb = Gtk::manage( new PrefSpinButton);
+ sb->init ( prefs_path, "dot-size", 0.0, 1000.0, 0.1, 10.0, def_value, false, false);
+ p.add_line( false, _("Ctrl+click dot size:"), *sb, "times current stroke width",
+ _("Size of dots created with Ctrl+click (relative to current stroke width)"),
+ false );
+}
+
+
void StyleFromSelectionToTool(gchar const *prefs_path, StyleSwatch *swatch)
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
Gtk::TreeModel::iterator iter_tools = this->AddPage(_page_tools, _("Tools"), PREFS_PAGE_TOOLS);
_path_tools = _page_list.get_model()->get_path(iter_tools);
+ _page_tools.add_group_header( _("Bounding box to use:"));
+ _t_bbox_visual.init ( _("Visual bounding box"), "tools", "bounding_box", "visual", false, 0);
+ _page_tools.add_line( true, "", _t_bbox_visual, "",
+ _("This bounding box includes stroke width, markers, filter margins, etc."));
+ _t_bbox_geometric.init ( _("Geometric bounding box"), "tools", "bounding_box", "geometric", true, &_t_bbox_visual);
+ _page_tools.add_line( true, "", _t_bbox_geometric, "",
+ _("This bounding box includes only the bare path"));
+
+ _page_tools.add_group_header( _("Conversion to guides:"));
+ _t_cvg_keep_objects.init ( _("Keep objects after conversion to guides"), "tools", "cvg_keep_objects", false);
+ _page_tools.add_line( true, "", _t_cvg_keep_objects, "",
+ _("When converting an object to guides, don't delete the object after the conversion."));
+
_calligrapy_use_abs_size.init ( _("Width is in absolute units"), "tools.calligraphic", "abs_width", false);
_calligrapy_keep_selected.init ( _("Select new path"), "tools.calligraphic", "keep_selected", true);
_connector_ignore_text.init( _("Don't attach connectors to text objects"), "tools.connector", "ignoretext", true);
_page_selector.add_line( true, "", _t_sel_cue_box, "",
_("Each selected object displays its bounding box"));
- _page_selector.add_group_header( _("Bounding box to use:"));
- _t_sel_bbox_visual.init ( _("Visual bounding box"), "tools.select", "bounding_box", "visual", false, 0);
- _page_selector.add_line( true, "", _t_sel_bbox_visual, "",
- _("This bounding box includes stroke width, markers, filter margins, etc."));
- _t_sel_bbox_geometric.init ( _("Geometric bounding box"), "tools.select", "bounding_box", "geometric", true, &_t_sel_bbox_visual);
- _page_selector.add_line( true, "", _t_sel_bbox_geometric, "",
- _("This bounding box includes only the bare path"));
-
//Node
this->AddPage(_page_node, _("Node"), iter_tools, PREFS_PAGE_TOOLS_NODE);
AddSelcueCheckbox(_page_node, "tools.nodes", true);
AddGradientCheckbox(_page_node, "tools.nodes", true);
+ //Tweak
+ this->AddPage(_page_tweak, _("Tweak"), iter_tools, PREFS_PAGE_TOOLS_NODE);
+ 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);
//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");
_("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->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"));
_("If on, each newly created object will be selected (deselecting previous selection)"));
//Paint Bucket
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");
//Text
this->AddPage(_page_text, _("Text"), iter_tools, PREFS_PAGE_TOOLS_TEXT);
_win_save_geom_prefs.init ( _("Remember and use last window's geometry"), "options.savewindowgeometry", "value", 2, false, &_win_save_geom);
_win_save_geom_off.init ( _("Don't save window geometry"), "options.savewindowgeometry", "value", 0, false, &_win_save_geom);
+ _win_dockable.init ( _("Dockable"), "options.dialogtype", "value", 1, true, 0);
+ _win_floating.init ( _("Floating"), "options.dialogtype", "value", 0, false, &_win_dockable);
+
_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);
_page_windows.add_line( false, "", _win_save_geom, "",
_("Save and restore window geometry for each document (saves geometry in the document)"));
+ _page_windows.add_group_header( _("Dialog behavior (requires restart):"));
+ _page_windows.add_line( true, "", _win_dockable, "",
+ _("Dockable"));
+ _page_windows.add_line( true, "", _win_floating, "",
+ _("Floating"));
+
_page_windows.add_group_header( _("Dialogs on top:"));
#ifndef WIN32 // FIXME: Temporary Win32 special code to enable transient dialogs
_page_windows.add_line( true, "", _win_ontop_none, "",
_page_transforms.add_line( false, "", _trans_scale_corner, "",
_("When scaling rectangles, scale the radii of rounded corners"));
_page_transforms.add_line( false, "", _trans_gradient, "",
- _("Transform gradients (in fill or stroke) along with the objects"));
+ _("Move gradients (in fill or stroke) along with the objects"));
_page_transforms.add_line( false, "", _trans_pattern, "",
- _("Transform patterns (in fill or stroke) along with the objects"));
+ _("Move patterns (in fill or stroke) along with the objects"));
_page_transforms.add_group_header( _("Store transformation:"));
_page_transforms.add_line( true, "", _trans_optimized, "",
_("If possible, apply transformation to objects without adding a transform= attribute"));
_sel_all.init ( _("Select in all layers"), "options.kbselection", "inlayer", PREFS_SELECTION_ALL, false, 0);
_sel_current.init ( _("Select only within current layer"), "options.kbselection", "inlayer", PREFS_SELECTION_LAYER, true, &_sel_all);
_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_hidden.init ( _("Ignore hidden objects and layers"), "options.kbselection", "onlyvisible", true);
+ _sel_locked.init ( _("Ignore locked objects and layers"), "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_recursive, "",
_("Make keyboard selection commands work on objects in current layer and all its sublayers"));
_page_select.add_line( true, "", _sel_hidden, "",
- _("Uncheck this to be able to select objects that are hidden (either by themselves or by being in a hidden group or layer)"));
+ _("Uncheck this to be able to select objects that are hidden (either by themselves or by being in a hidden layer)"));
_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)"));
+ _("Uncheck this to be able to select objects that are locked (either by themselves or by being in a locked 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"));
}
+void InkscapePreferences::initPageImportExport()
+{
+ _importexport_export.init("dialogs.export.defaultxdpi", "value", 0.0, 6000.0, 1.0, 1.0, PX_PER_IN, true, false);
+ _page_importexport.add_line( false, _("Default export resolution:"), _importexport_export, _("dpi"),
+ _("Default bitmap resolution (in dots per inch) in the Export dialog"), false);
+ _importexport_ocal_url.init("options.ocalurl", "str", true, g_strdup_printf("openclipart.org"));
+ _page_importexport.add_line( false, _("Open Clip Art Library Server Name:"), _importexport_ocal_url, "",
+ _("The server name of the Open Clip Art Library webdav server. It's used by the Import and Export to OCAL function."), true);
+ _importexport_ocal_username.init("options.ocalusername", "str", true);
+ _page_importexport.add_line( false, _("Open Clip Art Library Username:"), _importexport_ocal_username, "",
+ _("The username used to log into Open Clip Art Library."), true);
+ _importexport_ocal_password.init("options.ocalpassword", "str", false);
+ _page_importexport.add_line( false, _("Open Clip Art Library Password:"), _importexport_ocal_password, "",
+ _("The password used to log into Open Clip Art Library."), true);
+
+ this->AddPage(_page_importexport, _("Import/Export"), PREFS_PAGE_IMPORTEXPORT);
+}
+
+#if ENABLE_LCMS
+static void profileComboChanged( Gtk::ComboBoxText* combo )
+{
+ int rowNum = combo->get_active_row_number();
+ if ( rowNum < 1 ) {
+ prefs_set_string_attribute( "options.displayprofile", "uri", "" );
+ } else {
+ Glib::ustring active = combo->get_active_text();
+
+ Glib::ustring path = get_path_for_profile(active);
+ if ( !path.empty() ) {
+ prefs_set_string_attribute( "options.displayprofile", "uri", path.c_str() );
+ }
+ }
+}
+
+static void proofComboChanged( Gtk::ComboBoxText* combo )
+{
+ Glib::ustring active = combo->get_active_text();
+
+ Glib::ustring path = get_path_for_profile(active);
+ if ( !path.empty() ) {
+ prefs_set_string_attribute( "options.softproof", "uri", path.c_str() );
+ }
+}
+
+static void gamutColorChanged( Gtk::ColorButton* btn ) {
+ Gdk::Color color = btn->get_color();
+ gushort r = color.get_red();
+ gushort g = color.get_green();
+ gushort b = color.get_blue();
+
+ gchar* tmp = g_strdup_printf("#%02x%02x%02x", (r >> 8), (g >> 8), (b >> 8) );
+
+ prefs_set_string_attribute( "options.softproof", "gamutcolor", tmp );
+ g_free(tmp);
+}
+#endif // ENABLE_LCMS
+
+void InkscapePreferences::initPageCMS()
+{
+ int const numIntents = 4;
+ /* TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm */
+ Glib::ustring intentLabels[numIntents] = {_("Perceptual"), _("Relative Colorimetric"), _("Saturation"), _("Absolute Colorimetric")};
+ int intentValues[numIntents] = {0, 1, 2, 3};
+
+#if !ENABLE_LCMS
+ Gtk::Label* lbl = new Gtk::Label(_("(Note: Color management has been disabled in this build)"));
+ _page_cms.add_line( false, "", *lbl, "", "", true);
+#endif // !ENABLE_LCMS
+
+ _page_cms.add_group_header( _("Display adjustment"));
+
+ _page_cms.add_line( false, _("Display profile:"), _cms_display_profile, "",
+ _("The ICC profile to use to calibrate display output."), false);
+
+ _cms_from_display.init( _("Retrieve profile from display"), "options.displayprofile", "from_display", false);
+ _page_cms.add_line( false, "", _cms_from_display, "",
+#ifdef GDK_WINDOWING_X11
+ _("Retrieve profiles from those attached to displays via XICC."), false);
+#else
+ _("Retrieve profiles from those attached to displays."), false);
+#endif // GDK_WINDOWING_X11
+
+
+ _cms_intent.init("options.displayprofile", "intent", intentLabels, intentValues, numIntents, 0);
+ _page_cms.add_line( false, _("Display rendering intent:"), _cms_intent, "",
+ _("The rendering intent to use to calibrate display output."), false);
+
+ _page_cms.add_group_header( _("Proofing"));
+
+ _cms_softproof.init( _("Simulate output on screen"), "options.softproof", "enable", false);
+ _page_cms.add_line( false, "", _cms_softproof, "",
+ _("Simulates output of target device."), false);
+
+ _cms_gamutwarn.init( _("Mark out of gamut colors"), "options.softproof", "gamutwarn", false);
+ _page_cms.add_line( false, "", _cms_gamutwarn, "",
+ _("Highlights colors that are out of gamut for the target device."), false);
+
+ gchar const* colorStr = prefs_get_string_attribute("options.softproof", "gamutcolor");
+ Gdk::Color tmpColor( (colorStr && colorStr[0]) ? colorStr : "#00ff00");
+ _cms_gamutcolor.set_color( tmpColor );
+ _page_cms.add_line( true, _("Out of gamut warning color:"), _cms_gamutcolor, "",
+ _("Selects the color used for out of gamut warning."), false);
+
+ _page_cms.add_line( false, _("Device profile:"), _cms_proof_profile, "",
+ _("The ICC profile to use to simulate device output."), false);
+
+ _cms_proof_intent.init("options.softproof", "intent", intentLabels, intentValues, numIntents, 0);
+ _page_cms.add_line( false, _("Device rendering intent:"), _cms_proof_intent, "",
+ _("The rendering intent to use to calibrate display output."), false);
+
+ _cms_proof_blackpoint.init( _("Black point compensation"), "options.softproof", "bpc", false);
+ _page_cms.add_line( false, "", _cms_proof_blackpoint, "",
+ _("Enables black point compensation."), false);
+
+ _cms_proof_preserveblack.init( _("Preserve black"), "options.softproof", "preserveblack", false);
+ _page_cms.add_line( false, "", _cms_proof_preserveblack,
+#if defined(cmsFLAGS_PRESERVEBLACK)
+ "",
+#else
+ _("(LittleCMS 1.15 or later required)"),
+#endif // defined(cmsFLAGS_PRESERVEBLACK)
+ _("Preserve K channel in CMYK -> CMYK transforms"), false);
+
+#if !defined(cmsFLAGS_PRESERVEBLACK)
+ _cms_proof_preserveblack.set_sensitive( false );
+#endif // !defined(cmsFLAGS_PRESERVEBLACK)
+
+
+#if ENABLE_LCMS
+ {
+ std::vector<Glib::ustring> names = ::Inkscape::colorprofile_get_display_names();
+ Glib::ustring current = prefs_get_string_attribute( "options.displayprofile", "uri" );
+
+ gint index = 0;
+ _cms_display_profile.append_text(_("<none>"));
+ index++;
+ for ( std::vector<Glib::ustring>::iterator it = names.begin(); it != names.end(); ++it ) {
+ _cms_display_profile.append_text( *it );
+ Glib::ustring path = get_path_for_profile(*it);
+ if ( !path.empty() && path == current ) {
+ _cms_display_profile.set_active(index);
+ }
+ index++;
+ }
+ if ( current.empty() ) {
+ _cms_display_profile.set_active(0);
+ }
+
+ names = ::Inkscape::colorprofile_get_softproof_names();
+ const gchar * tmp = prefs_get_string_attribute( "options.softproof", "uri" );
+ current = tmp ? tmp : "";
+ index = 0;
+ for ( std::vector<Glib::ustring>::iterator it = names.begin(); it != names.end(); ++it ) {
+ _cms_proof_profile.append_text( *it );
+ Glib::ustring path = get_path_for_profile(*it);
+ if ( !path.empty() && path == current ) {
+ _cms_proof_profile.set_active(index);
+ }
+ index++;
+ }
+ }
+
+ _cms_gamutcolor.signal_color_set().connect( sigc::bind( sigc::ptr_fun(gamutColorChanged), &_cms_gamutcolor) );
+
+ _cms_display_profile.signal_changed().connect( sigc::bind( sigc::ptr_fun(profileComboChanged), &_cms_display_profile) );
+ _cms_proof_profile.signal_changed().connect( sigc::bind( sigc::ptr_fun(proofComboChanged), &_cms_proof_profile) );
+#else
+ // disable it, but leave it visible
+ _cms_intent.set_sensitive( false );
+ _cms_display_profile.set_sensitive( false );
+ _cms_from_display.set_sensitive( false );
+ _cms_softproof.set_sensitive( false );
+ _cms_gamutwarn.set_sensitive( false );
+ _cms_gamutcolor.set_sensitive( false );
+ _cms_proof_intent.set_sensitive( false );
+ _cms_proof_profile.set_sensitive( false );
+ _cms_proof_blackpoint.set_sensitive( false );
+ _cms_proof_preserveblack.set_sensitive( false );
+#endif // ENABLE_LCMS
+
+ this->AddPage(_page_cms, _("Color management"), PREFS_PAGE_CMS);
+}
+
+void InkscapePreferences::initPageGrids()
+{
+ _page_grids.add_group_header( _("Default grid settings"));
+
+ _grids_no_emphasize_on_zoom.init( _("Don't emphasize gridlines when zoomed out"), "options.grids", "no_emphasize_when_zoomedout", false);
+ _page_grids.add_line( false, "", _grids_no_emphasize_on_zoom, "", _("If set and zoomed out, the gridlines will be shown in normal color instead of major grid line color."), false);
+ _page_grids.add_line( false, "", _grids_notebook, "", "", false);
+ _grids_notebook.append_page(_grids_xy, CanvasGrid::getName( GRID_RECTANGULAR ));
+ _grids_notebook.append_page(_grids_axonom, CanvasGrid::getName( GRID_AXONOMETRIC ));
+ _grids_xy_units.init("options.grids.xy", "units");
+ _grids_xy.add_line( false, _("Grid units"), _grids_xy_units, "", "", false);
+ _grids_xy_origin_x.init("options.grids.xy", "origin_x", -10000.0, 10000.0, 0.1, 1.0, 0.0, false, false);
+ _grids_xy_origin_y.init("options.grids.xy", "origin_y", -10000.0, 10000.0, 0.1, 1.0, 0.0, false, false);
+ _grids_xy.add_line( false, _("Origin X"), _grids_xy_origin_x, "", _("X coordinate of grid origin"), false);
+ _grids_xy.add_line( false, _("Origin Y"), _grids_xy_origin_y, "", _("Y coordinate of grid origin"), false);
+ _grids_xy_spacing_x.init("options.grids.xy", "spacing_x", -10000.0, 10000.0, 0.1, 1.0, 1.0, false, false);
+ _grids_xy_spacing_y.init("options.grids.xy", "spacing_y", -10000.0, 10000.0, 0.1, 1.0, 1.0, false, false);
+ _grids_xy.add_line( false, _("Spacing X"), _grids_xy_spacing_x, "", _("Distance between vertical grid lines"), false);
+ _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_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_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);
+
+ // CanvasAxonomGrid properties:
+ _grids_axonom_units.init("options.grids.axonom", "units");
+ _grids_axonom.add_line( false, _("Grid units"), _grids_axonom_units, "", "", false);
+ _grids_axonom_origin_x.init("options.grids.axonom", "origin_x", -10000.0, 10000.0, 0.1, 1.0, 0.0, false, false);
+ _grids_axonom_origin_y.init("options.grids.axonom", "origin_y", -10000.0, 10000.0, 0.1, 1.0, 0.0, false, false);
+ _grids_axonom.add_line( false, _("Origin X"), _grids_axonom_origin_x, "", _("X coordinate of grid origin"), false);
+ _grids_axonom.add_line( false, _("Origin Y"), _grids_axonom_origin_y, "", _("Y coordinate of grid origin"), false);
+ _grids_axonom_spacing_y.init("options.grids.axonom", "spacing_y", -10000.0, 10000.0, 0.1, 1.0, 1.0, false, false);
+ _grids_axonom.add_line( false, _("Spacing Y"), _grids_axonom_spacing_y, "", _("Base length of z-axis"), false);
+ _grids_axonom_angle_x.init("options.grids.axonom", "angle_x", -360.0, 360.0, 1.0, 10.0, 30.0, false, false);
+ _grids_axonom_angle_z.init("options.grids.axonom", "angle_z", -360.0, 360.0, 1.0, 10.0, 30.0, false, false);
+ _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_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_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()
{
- _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);
- _page_misc.add_line( false, "", _misc_imp_bitmap, "",
- _("When on, an imported bitmap creates an <image> element; otherwise it is a rectangle with bitmap fill"), true);
_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_small_toolbar.init( _("Make commands toolbar smaller"), "toolbox", "small", true);
- _page_misc.add_line( false, "", _misc_small_toolbar, "",
- _("Make the commands toolbar use the 'secondary' toolbar size (requires restart)"), 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);
- _misc_simpl.init("options.simplifythreshold", "value", 0.0001, 1.0, 0.0001, 0.0010, 0.0010, false, 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_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;
_misc_overs_bitmap.init("options.bitmapoversample", "value", labels, values, num_items, 1);
_page_misc.add_line( false, _("Oversample bitmaps:"), _misc_overs_bitmap, "", "", false);
+
+ // consider moving this to an UI tab:
+ _misc_small_toolbar.init( _("Make the commands toolbar icons smaller"), "toolbox", "small", true);
+ _page_misc.add_line( false, "", _misc_small_toolbar, "",
+ _("Make the commands toolbar use the 'secondary' toolbar size (requires restart)"), true);
+
+ _misc_small_tools.init( _("Make the main toolbar icons smaller"), "toolbox.tools", "small", true);
+ _page_misc.add_line( false, "", _misc_small_tools, "",
+ _("Make the main tools use the 'secondary' toolbar size (requires restart)"), true);
+
+ _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, "",
+ _("The maximum length of the Open Recent list in the File menu"), false);
+ _misc_simpl.init("options.simplifythreshold", "value", 0.0001, 1.0, 0.0001, 0.0010, 0.0010, false, false);
+
this->AddPage(_page_misc, _("Misc"), PREFS_PAGE_MISC);
}
}
}
+void InkscapePreferences::_presentPages()
+{
+ _page_list_model->foreach_iter(sigc::mem_fun(*this, &InkscapePreferences::PresentPage));
+}
+
} // namespace Dialog
} // namespace UI
} // namespace Inkscape