index e1219c6eceb669b654faa7c35ee778919fcd27d2..34e97a71372789c4e35634d1e1abcd8d4a85d81f 100644 (file)
* Copyright (C) 2004-2007 Authors
*
* Released under GNU GPL. Read the file 'COPYING' for more information.
- */
+ */
#ifdef HAVE_CONFIG_H
# include <config.h>
#include "display/nr-filter-gaussian.h"
#include "color-profile-fns.h"
#include "display/canvas-grid.h"
-#include "dialogs/rdf.h"
namespace Inkscape {
namespace UI {
InkscapePreferences::InkscapePreferences()
: UI::Widget::Panel ("", "dialogs.preferences", SP_VERB_DIALOG_DISPLAY),
- _max_dialog_width(0),
+ _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);
initPageImportExport();
initPageCMS();
initPageGrids();
- initPageMetadata();
- initPageLicense();
initPageMisc();
signalPresent().connect(sigc::mem_fun(*this, &InkscapePreferences::_presentPages));
@@ -232,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);
_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"));
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)"));
+ 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_group_header( _("Display adjustment"));
_page_cms.add_line( false, _("Display profile:"), _cms_display_profile, "",
_("The ICC profile to use to calibrate display output."), false);
_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);
+ _cms_proof_blackpoint.init( _("Black point compensation"), "options.softproof", "bpc", false);
_page_cms.add_line( false, "", _cms_proof_blackpoint, "",
_("Enables black point compensation."), false);
#else
_("(LittleCMS 1.15 or later required)"),
#endif // defined(cmsFLAGS_PRESERVEBLACK)
- _("Preserve K channel on CMYK -> CMYK transforms"), false);
+ _("Preserve K channel in CMYK -> CMYK transforms"), false);
#if !defined(cmsFLAGS_PRESERVEBLACK)
_cms_proof_preserveblack.set_sensitive( false );
_cms_proof_preserveblack.set_sensitive( false );
#endif // ENABLE_LCMS
- this->AddPage(_page_cms, _("Color Management"), PREFS_PAGE_CMS);
+ 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 ));
this->AddPage(_page_grids, _("Grids"), PREFS_PAGE_GRIDS);
}
-void InkscapePreferences::initPageMetadata()
-{
- _metadata_title.init ( "options.defaultmetadata", "title", true);
- _metadata_date.init ( "options.defaultmetadata", "date", true);
- _metadata_format.init ( "options.defaultmetadata", "format", true);
- _metadata_type.init ( "options.defaultmetadata", "type", true);
- _metadata_creator.init ( "options.defaultmetadata", "creator", true);
- _metadata_rights.init ( "options.defaultmetadata", "rights", true);
- _metadata_publisher.init ( "options.defaultmetadata", "publisher", true);
- _metadata_identifier.init ( "options.defaultmetadata", "identifier", true);
- _metadata_source.init ( "options.defaultmetadata", "source", true);
- _metadata_relation.init ( "options.defaultmetadata", "relation", true);
- _metadata_language.init ( "options.defaultmetadata", "language", true);
- _metadata_subject.init ( "options.defaultmetadata", "subject", true);
- _metadata_coverage.init ( "options.defaultmetadata", "coverage", true);
- _metadata_description.init ( "options.defaultmetadata", "description", true);
- _metadata_contributor.init ( "options.defaultmetadata", "contributor", true);
-
- _page_metadata.add_group_header( _("Default metadata that will be used for new documents:"));
-
- _page_metadata.add_line(true, _("Title:"), _metadata_title, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Date:"), _metadata_date, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Format:"), _metadata_format, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Type:"), _metadata_type, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Creator:"), _metadata_creator, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Rights:"), _metadata_rights, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Publisher:"), _metadata_publisher, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Identifier:"), _metadata_identifier, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Source:"), _metadata_source, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Relation:"), _metadata_relation, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Language:"), _metadata_language, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Subject:"), _metadata_subject, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Coverage:"), _metadata_coverage, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Description:"), _metadata_description, "", _("These values will be used as default metadata for new documents"));
- _page_metadata.add_line(true, _("Contributor:"), _metadata_contributor, "", _("These values will be used as default metadata for new documents"));
-
- this->AddPage(_page_metadata, _("Default Metadata"), PREFS_PAGE_METADATA);
-}
-
-void InkscapePreferences::on_license_changed(){
- int i = prefs_get_int_attribute("options.defaultmetadata", "license", 0);
- if (i)
- _license_uri.set_text( rdf_licenses[i - 1].uri );
- else
- _license_uri.set_text("");
-}
-
-void InkscapePreferences::initPageLicense()
-{
- _license_proprietary.init( _("Proprietary"), "options.defaultmetadata", "license", LICENSE_PROPRIETARY, true, 0);
- _license_ccby.init( _("Creative Commons By 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY, false, &_license_proprietary);
- _license_ccbysa.init( _("Creative Commons By Sa 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY_SA, false, &_license_proprietary);
- _license_ccbynd.init( _("Creative Commons By Nd 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY_ND, false, &_license_proprietary);
- _license_ccbync.init( _("Creative Commons By Nc 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY_NC, false, &_license_proprietary);
- _license_ccbyncsa.init( _("Creative Commons By Nc Sa 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY_NC_SA, false, &_license_proprietary);
- _license_ccbyncnd.init( _("Creative Commons By Nc Nd 3.0"), "options.defaultmetadata", "license", LICENSE_CC_BY_NC_ND, false, &_license_proprietary);
- _license_pdomain.init( _("Public Domain"), "options.defaultmetadata", "license", LICENSE_PUBLIC_DOMAIN, false, &_license_proprietary);
- _license_freeart.init( _("FreeArt"), "options.defaultmetadata", "license", LICENSE_FREE_ART, false, &_license_proprietary);
- _license_openfont.init( _("Open Font License"), "options.defaultmetadata", "license", LICENSE_OPEN_FONT, false, &_license_proprietary);
- _license_uri.init( "options.defaultmetadata", "license_uri", true);
-
- _license_proprietary.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed ));
- _license_ccby.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_ccbysa.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_ccbynd.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_ccbync.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_ccbyncsa.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_ccbyncnd.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_pdomain.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_freeart.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
- _license_openfont.signal_toggled().connect(sigc::mem_fun( *this, &InkscapePreferences::on_license_changed));
-
- _page_license.add_group_header( _("Default Licensing for new documents:"));
-
- _page_license.add_line(true, "", _license_proprietary, "", _("All Rights Reserved"));
- _page_license.add_line(true, "", _license_ccby, "", _("Creative Commons: Attribution"));
- _page_license.add_line(true, "", _license_ccbysa, "", _("Creative Commons: Attribution-ShareAlike"));
- _page_license.add_line(true, "", _license_ccbynd, "", _("Creative Commons: Attribution-NoDerivatives"));
- _page_license.add_line(true, "", _license_ccbync, "", _("Creative Commons: Attribution-NonCommercial"));
- _page_license.add_line(true, "", _license_ccbyncsa, "", _("Creative Commons: Attribution-NonCommercial-ShareAlike"));
- _page_license.add_line(true, "", _license_ccbyncnd, "", _("Creative Commons: Attribution-NonCommercial-NoDerivatives"));
- _page_license.add_line(true, "", _license_pdomain, "", _("Public Domain"));
- _page_license.add_line(true, "", _license_freeart, "", _("Free Art License"));
- _page_license.add_line(true, "", _license_openfont, "", _("Open Font License"));
-
- _page_license.add_line(true, _("URL:"), _license_uri, "", "");
-
- this->AddPage(_page_license, _("Default License"), PREFS_PAGE_LICENSE);
-}
-
-
void InkscapePreferences::initPageMisc()
{
_misc_comment.init( _("Add label comments to printing output"), "printing.debug", "show-label-comments", false);