From 2abe0bb681044d972e171189395a2afdbc39bf28 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Tue, 15 Aug 2017 22:39:32 +0200 Subject: Fix inverted y sign for glyph positioning This is causing vertical glyph positioning to move in the wrong direction e.g. marks go below base glyph instead of above. Seems to be a regression introduced in: commit 83dac189ff21c59be9b4f912e0d0e9690e710a4d Author: Tavmjong Bah Date: Tue Nov 3 13:19:36 2015 +0100 Rearrange code to make handling of baseline clearer. (bzr r14430.1.3) --- src/libnrtype/Layout-TNG-Compute.cpp | 4 ++-- testfiles/rendering_tests/CMakeLists.txt | 1 + .../expected_rendering/test-glyph-y-pos-large.png | Bin 0 -> 73316 bytes .../expected_rendering/test-glyph-y-pos.png | Bin 0 -> 13723 bytes testfiles/rendering_tests/test-glyph-y-pos.svg | 26 +++++++++++++++++++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png create mode 100644 testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png create mode 100644 testfiles/rendering_tests/test-glyph-y-pos.svg diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 63364ab34..5d0c5c3ce 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -767,7 +767,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, if( dominant_baseline == SP_CSS_BASELINE_AUTO ) dominant_baseline = SP_CSS_BASELINE_ALPHABETIC; } - new_glyph.y += delta_y; + new_glyph.y -= delta_y; // TODO: Should also check 'glyph_orientation_vertical' if 'text-orientation' is unset... if( new_span.text_orientation == SP_CSS_TEXT_ORIENTATION_SIDEWAYS || @@ -801,7 +801,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, if( dominant_baseline == SP_CSS_BASELINE_AUTO ) dominant_baseline = SP_CSS_BASELINE_ALPHABETIC; - new_glyph.y -= delta_y; + new_glyph.y += delta_y; new_glyph.y += new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ]; new_glyph.width = unbroken_span_glyph_info->geometry.width * font_size_multiplier; diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt index 3f838628a..739f9789d 100644 --- a/testfiles/rendering_tests/CMakeLists.txt +++ b/testfiles/rendering_tests/CMakeLists.txt @@ -2,6 +2,7 @@ #add your test here (do not put the .svg extension) set(RENDERING_TESTS test-empty + test-glyph-y-pos ) diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png new file mode 100644 index 000000000..0bd76e68e Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png new file mode 100644 index 000000000..27833a1bb Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png differ diff --git a/testfiles/rendering_tests/test-glyph-y-pos.svg b/testfiles/rendering_tests/test-glyph-y-pos.svg new file mode 100644 index 000000000..28200c79b --- /dev/null +++ b/testfiles/rendering_tests/test-glyph-y-pos.svg @@ -0,0 +1,26 @@ + + + + + + + G̃g̃X̃x̃ + G̃g̃X̃x̃ + G̃g̃X̃x̃ + + + Composed Glyphs + + -- cgit v1.2.3 From f7e6b3725686becd2b8d034cc572417e5a272cba Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Tue, 15 Aug 2017 22:41:53 +0200 Subject: Fix RTL glyph widths in vertical orientation The vertical branch seems to be broken, removing it makes RTL text in vertical orientation work again. --- src/libnrtype/Layout-TNG-Compute.cpp | 7 +----- testfiles/rendering_tests/CMakeLists.txt | 1 + .../expected_rendering/test-rtl-vertical-large.png | Bin 0 -> 50034 bytes .../expected_rendering/test-rtl-vertical.png | Bin 0 -> 8677 bytes testfiles/rendering_tests/test-rtl-vertical.svg | 25 +++++++++++++++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png create mode 100644 testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png create mode 100644 testfiles/rendering_tests/test-rtl-vertical.svg diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 5d0c5c3ce..f812f0c41 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -818,12 +818,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, for (unsigned rtl_index = glyph_index; rtl_index < it_span->end_glyph_index ; rtl_index++) { if (unbroken_span.glyph_string->glyphs[rtl_index].attr.is_cluster_start && rtl_index != glyph_index) break; - if (_block_progression == LEFT_TO_RIGHT || _block_progression == RIGHT_TO_LEFT) - // Vertical text - cluster_width += new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span.glyph_string->glyphs[rtl_index].glyph, true); - else - // Horizontal text - cluster_width += font_size_multiplier * unbroken_span.glyph_string->glyphs[rtl_index].geometry.width; + cluster_width += font_size_multiplier * unbroken_span.glyph_string->glyphs[rtl_index].geometry.width; } new_glyph.x -= cluster_width; } diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt index 739f9789d..8b77927a0 100644 --- a/testfiles/rendering_tests/CMakeLists.txt +++ b/testfiles/rendering_tests/CMakeLists.txt @@ -3,6 +3,7 @@ set(RENDERING_TESTS test-empty test-glyph-y-pos + test-rtl-vertical ) diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png new file mode 100644 index 000000000..a96c2bfdb Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png new file mode 100644 index 000000000..3dccfca78 Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png differ diff --git a/testfiles/rendering_tests/test-rtl-vertical.svg b/testfiles/rendering_tests/test-rtl-vertical.svg new file mode 100644 index 000000000..feb454ed6 --- /dev/null +++ b/testfiles/rendering_tests/test-rtl-vertical.svg @@ -0,0 +1,25 @@ + + + + + + + أبجد + أبجد + + + RTL text in vertical mode + + -- cgit v1.2.3 From b0e00d7b7fd82a4c4abcd28b467fd83ed6ee6164 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Fri, 18 Aug 2017 00:45:37 +0200 Subject: Fix vertical RTL text with upright orientation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When orientation is upright we don’t want Pango to use the natural gravity of the text (that would be the mixed orientation). This also changes the positioning of combining marks in such case. It is still wrong, however, but it matches Pango output now. --- src/libnrtype/Layout-TNG-Compute.cpp | 4 ++++ .../expected_rendering/test-glyph-y-pos-large.png | Bin 73316 -> 73451 bytes .../expected_rendering/test-glyph-y-pos.png | Bin 13723 -> 13746 bytes .../expected_rendering/test-rtl-vertical-large.png | Bin 50034 -> 55017 bytes .../expected_rendering/test-rtl-vertical.png | Bin 8677 -> 9995 bytes testfiles/rendering_tests/test-rtl-vertical.svg | 1 + 6 files changed, 5 insertions(+) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index f812f0c41..504314046 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -1746,6 +1746,10 @@ bool Layout::Calculator::calculate() if( _block_progression == RIGHT_TO_LEFT || _block_progression == LEFT_TO_RIGHT ) { // Vertical text, CJK pango_context_set_base_gravity(_pango_context, PANGO_GRAVITY_EAST); + + if( _flow._blockTextOrientation() != SP_CSS_TEXT_ORIENTATION_MIXED ) { + pango_context_set_gravity_hint(_pango_context, PANGO_GRAVITY_HINT_STRONG); + } } else { // Horizontal text pango_context_set_base_gravity(_pango_context, PANGO_GRAVITY_AUTO); diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png index 0bd76e68e..0720e797c 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png index 27833a1bb..4104e6560 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png index a96c2bfdb..3d8eba4ea 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png index 3dccfca78..44676e4d9 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png differ diff --git a/testfiles/rendering_tests/test-rtl-vertical.svg b/testfiles/rendering_tests/test-rtl-vertical.svg index feb454ed6..e17b94d39 100644 --- a/testfiles/rendering_tests/test-rtl-vertical.svg +++ b/testfiles/rendering_tests/test-rtl-vertical.svg @@ -18,6 +18,7 @@ أبجد أبجد + أبجد RTL text in vertical mode -- cgit v1.2.3 From f4cd41d6a53518399d442c4dd730faa100dba16e Mon Sep 17 00:00:00 2001 From: Vishal Agarwal Date: Sat, 2 Sep 2017 18:34:08 +0200 Subject: Implement CSS 3 pseudo selectors. GSoC project 2017. --- src/libcroco/cr-parser.c | 29 +- src/libcroco/cr-pseudo.c | 16 +- src/libcroco/cr-pseudo.h | 4 +- src/libcroco/cr-sel-eng.c | 688 ++++++++++++++++++++++++++++++++++++++++++++-- src/libcroco/cr-sel-eng.h | 8 + src/libcroco/cr-term.c | 1 + src/libcroco/cr-term.h | 5 + src/libcroco/cr-token.h | 14 +- 8 files changed, 722 insertions(+), 43 deletions(-) diff --git a/src/libcroco/cr-parser.c b/src/libcroco/cr-parser.c index 4e50b5402..454e1c330 100644 --- a/src/libcroco/cr-parser.c +++ b/src/libcroco/cr-parser.c @@ -1499,6 +1499,9 @@ cr_parser_parse_property (CRParser * a_this, *EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* | function ] | *STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor * + * As a special case for 'an+b', parse integer followed immediately by 'n'. + * The 'an' is parsed as a DIMEN. + * *TODO: handle parsing of 'RGB' * *Returns CR_OK upon successfull completion, an error code otherwise. @@ -1595,6 +1598,13 @@ cr_parser_parse_term (CRParser * a_this, CRTerm ** a_term) status = cr_term_set_hash (result, token->u.str); CHECK_PARSING_STATUS (status, TRUE); token->u.str = NULL; + } else if (token && token->type == DIMEN_TK) { + gboolean n = !strcmp(token->dimen->stryng->str, "n"); + status = cr_term_set_number (result, token->u.num); + result->n = n; // For nth-child (an+b) + CHECK_PARSING_STATUS (status, TRUE); + token->u.num = NULL; + status = CR_OK; } else { status = CR_PARSING_ERROR; } @@ -1819,22 +1829,21 @@ cr_parser_parse_simple_selector (CRParser * a_this, CRSimpleSel ** a_sel) (&pseudo->location, &token->location) ; + /* Save selector name for use by 'type' pseudo selectors */ + if (sel->name) + pseudo->sel_name = cr_string_dup (sel->name); + if (token->type == IDENT_TK) { pseudo->type = IDENT_PSEUDO; pseudo->name = token->u.str; token->u.str = NULL; found_sel = TRUE; } else if (token->type == FUNCTION_TK) { - pseudo->name = token->u.str; - token->u.str = NULL; - cr_parser_try_to_skip_spaces_and_comments - (a_this); - status = cr_parser_parse_ident - (a_this, &pseudo->extra); - + status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token); + token = NULL; + status = cr_parser_parse_function (a_this, &pseudo->name, &pseudo->term); ENSURE_PARSING_COND (status == CR_OK); - READ_NEXT_CHAR (a_this, &cur_char); - ENSURE_PARSING_COND (cur_char == ')'); + pseudo->type = FUNCTION_PSEUDO; found_sel = TRUE; } else { @@ -1863,7 +1872,7 @@ cr_parser_parse_simple_selector (CRParser * a_this, CRSimpleSel ** a_sel) token = NULL; break; } - } + } // for loop if (status == CR_OK && found_sel == TRUE) { cr_parser_try_to_skip_spaces_and_comments (a_this); diff --git a/src/libcroco/cr-pseudo.c b/src/libcroco/cr-pseudo.c index cee3fc869..8715c19f1 100644 --- a/src/libcroco/cr-pseudo.c +++ b/src/libcroco/cr-pseudo.c @@ -86,11 +86,6 @@ cr_pseudo_to_string (CRPseudo const * a_this) name = (guchar *) g_strndup (a_this->name->stryng->str, a_this->name->stryng->len); - if (a_this->extra) { - arg = (guchar *) g_strndup (a_this->extra->stryng->str, - a_this->extra->stryng->len); - } - if (name) { g_string_append_printf (str_buf, "%s(", name); g_free (name); @@ -158,9 +153,14 @@ cr_pseudo_destroy (CRPseudo * a_this) a_this->name = NULL; } - if (a_this->extra) { - cr_string_destroy (a_this->extra); - a_this->extra = NULL; + if (a_this->sel_name) { + cr_string_destroy (a_this->sel_name); + a_this->sel_name = NULL; + } + + if (a_this->term) { + cr_term_destroy (a_this->term); + a_this->term = NULL; } g_free (a_this); diff --git a/src/libcroco/cr-pseudo.h b/src/libcroco/cr-pseudo.h index 8917da45e..b78435014 100644 --- a/src/libcroco/cr-pseudo.h +++ b/src/libcroco/cr-pseudo.h @@ -27,6 +27,7 @@ #include #include "cr-attr-sel.h" #include "cr-parsing-location.h" +#include "cr-term.h" G_BEGIN_DECLS @@ -47,7 +48,8 @@ struct _CRPseudo { enum CRPseudoType type ; CRString *name ; - CRString *extra ; + CRString *sel_name; + CRTerm *term ; CRParsingLocation location ; } ; diff --git a/src/libcroco/cr-sel-eng.c b/src/libcroco/cr-sel-eng.c index 665ba4daf..3c96ac7c7 100644 --- a/src/libcroco/cr-sel-eng.c +++ b/src/libcroco/cr-sel-eng.c @@ -87,26 +87,67 @@ static enum CRStatus put_css_properties_in_props_list (CRPropList ** a_props, a_ruleset); static gboolean pseudo_class_add_sel_matches_node (CRSelEng * a_this, - CRAdditionalSel * - a_add_sel, + CRAdditionalSel * a_add_sel, CRXMLNodePtr a_node); +static gboolean empty_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean root_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + static gboolean lang_pseudo_class_handler (CRSelEng * a_this, CRAdditionalSel * a_sel, CRXMLNodePtr a_node); +static gboolean only_child_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + static gboolean first_child_pseudo_class_handler (CRSelEng * a_this, CRAdditionalSel * a_sel, CRXMLNodePtr a_node); +static gboolean first_of_type_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean last_child_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean last_of_type_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean nth_child_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean nth_of_type_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean nth_last_child_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + +static gboolean nth_last_of_type_pseudo_class_handler (CRSelEng * a_this, + CRAdditionalSel * a_sel, + CRXMLNodePtr a_node); + static CRXMLNodePtr get_next_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node); -static CRXMLNodePtr get_next_child_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node); +static CRXMLNodePtr get_first_child_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node); static CRXMLNodePtr get_prev_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node); static CRXMLNodePtr get_next_parent_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node); +static CRArguments get_arguments_from_function (CRAdditionalSel * a_sel); + void cr_sel_eng_set_node_iface (CRSelEng *const a_this, CRNodeIface const *const a_node_iface) { @@ -119,6 +160,60 @@ cr_sel_eng_set_node_iface (CRSelEng *const a_this, CRNodeIface const *const a_no #define strqcmp(str,lit,lit_len) \ (strlen (str) != (lit_len) || memcmp (str, lit, lit_len)) +static gboolean +root_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "root") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :root only"); + return FALSE; + } + + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + + // libxml apears to set the parent of the root element to an + // element of type 'xml'. + return (parent == NULL || !strcmp(node_iface->getLocalName(parent),"xml") ); +} + +static gboolean +empty_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "empty") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :empty only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + + CRXMLNodePtr cur_node = NULL; + cur_node = node_iface->getFirstChild (a_node); + + return (cur_node == NULL); +} + static gboolean lang_pseudo_class_handler (CRSelEng *const a_this, CRAdditionalSel * a_sel, CRXMLNodePtr a_node) @@ -144,15 +239,16 @@ lang_pseudo_class_handler (CRSelEng *const a_this, return FALSE; } /*lang code should exist and be at least of length 2 */ - if (!a_sel->content.pseudo->extra - || !a_sel->content.pseudo->extra->stryng - || a_sel->content.pseudo->extra->stryng->len < 2) + if (!a_sel->content.pseudo->term + || a_sel->content.pseudo->term->type != TERM_IDENT + || !a_sel->content.pseudo->term->content.str->stryng + || a_sel->content.pseudo->term->content.str->stryng->len < 2) return FALSE; for (; node; node = get_next_parent_element_node (node_iface, node)) { char *val = node_iface->getProp (node, (const xmlChar *) "lang"); if (!val) val = node_iface->getProp (node, (const xmlChar *) "xml:lang"); if (val) { - if (!strcasecmp(val, a_sel->content.pseudo->extra->stryng->str)) { + if (!strcasecmp(val, a_sel->content.pseudo->term->content.str->stryng->str)) { result = TRUE; break; } @@ -164,12 +260,85 @@ lang_pseudo_class_handler (CRSelEng *const a_this, return result; } +static gboolean +only_child_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "only-child") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :only-child only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + CRXMLNodePtr cur_node = NULL; + + cur_node = get_first_child_element_node (node_iface, parent); + return (cur_node == a_node && + !get_next_element_node(node_iface, cur_node) ); +} + +static gboolean +only_of_type_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "only-of-type") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :only-of-type selector only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + CRXMLNodePtr cur_node = NULL; + int m = 0; + int child = 0; + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + if (!strcmp(node_iface->getLocalName(cur_node), a_sel->content.pseudo->sel_name->stryng->str)) { + ++m; + } + if (cur_node == a_node) { + child = m; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + return (child == m && child == 1); +} + static gboolean first_child_pseudo_class_handler (CRSelEng *const a_this, CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) { CRNodeIface const *node_iface = NULL; - CRXMLNodePtr node = NULL, parent = NULL; + CRXMLNodePtr node = NULL; + CRXMLNodePtr parent = NULL; g_return_val_if_fail (a_this && PRIVATE (a_this) && a_sel && a_sel->content.pseudo @@ -178,8 +347,7 @@ first_child_pseudo_class_handler (CRSelEng *const a_this, && a_sel->content.pseudo->name->stryng && a_node, FALSE); - if (strcmp (a_sel->content.pseudo->name->stryng->str, - "first-child") + if (strcmp (a_sel->content.pseudo->name->stryng->str, "first-child") || a_sel->content.pseudo->type != IDENT_PSEUDO) { cr_utils_trace_info ("This handler is for :first-child only"); return FALSE; @@ -188,10 +356,397 @@ first_child_pseudo_class_handler (CRSelEng *const a_this, parent = node_iface->getParentNode (a_node); if (!parent) return FALSE; - node = get_next_child_element_node (node_iface, parent); + node = get_first_child_element_node (node_iface, parent); return (node == a_node); } +static gboolean +first_of_type_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "first-of-type") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :first-of-type only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + // Count which child no. of type + CRXMLNodePtr cur_node = NULL; + int child = 0; + int found = FALSE; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + if(!strcmp(node_iface->getLocalName(cur_node), a_sel->content.pseudo->sel_name->stryng->str)) { + child++; + } + if (cur_node == a_node) { + found = TRUE; + break; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + + if (!found) + return FALSE; + + return (child == 1); +} + +static gboolean +last_child_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "last-child") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :last-child only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + CRXMLNodePtr cur_node = NULL; + int m = 0; + int child = 0; + + cur_node = get_first_child_element_node (node_iface, parent); + while (cur_node) { + ++m; + if (cur_node == a_node) { + child = m; + } + cur_node = get_next_element_node (node_iface, cur_node); + + } + return (m == child); +} + +static gboolean +last_of_type_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "last-of-type") + || a_sel->content.pseudo->type != IDENT_PSEUDO) { + cr_utils_trace_info ("This handler is for :last-of-type only"); + return FALSE; + } + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + CRXMLNodePtr cur_node = NULL; + int m = 0; + int child = 0; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + if (!strcmp(node_iface->getLocalName(cur_node), a_sel->content.pseudo->sel_name->stryng->str)) { + ++m; + } + if (cur_node == a_node) { + child = m; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + + return (m == child); +} + +// See https://www.w3.org/TR/selectors/#nth-child-pseudo +static gboolean +nth_child_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "nth-child") + || a_sel->content.pseudo->type != FUNCTION_PSEUDO) { + cr_utils_trace_info ("This handler is for :nth-child only"); + return FALSE; + } + + /*pseude code term should exist */ + if (!a_sel->content.pseudo->term) + return FALSE; + + CRArguments arg = get_arguments_from_function (a_sel); + + if (arg.a == 0 && arg.b == 0) + return FALSE; + + int a = arg.a; + int b = arg.b; + + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + /* Count which child this is */ + CRXMLNodePtr cur_node = NULL; + int child = 0; + int found = FALSE; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + ++child; + if (cur_node == a_node) { + found = TRUE; + break; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + + if (!found) + return FALSE; + + if (a == 0) + return (b == child); + + return ((child - b)%a == 0 && (child - b)/a > -1); +} + +static gboolean +nth_of_type_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "nth-of-type") + || a_sel->content.pseudo->type != FUNCTION_PSEUDO) { + cr_utils_trace_info ("This handler is for :nth-of-type only"); + return FALSE; + } + + // pseudo code term should exist + if (!a_sel->content.pseudo->term) + return FALSE; + + CRArguments arg = get_arguments_from_function (a_sel); + + if (arg.a == 0 && arg.b == 0) + return FALSE; + + int a = arg.a; + int b = arg.b; + + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) + return FALSE; + + // Count which child no. of required type + CRXMLNodePtr cur_node = NULL; + int child = 0; + int found = FALSE; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + // check if type match + if (!strcmp(node_iface->getLocalName(cur_node), a_sel->content.pseudo->sel_name->stryng->str)) + ++child; + if (cur_node == a_node) { + found = TRUE; + break; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + + if (!found) + return FALSE; + + if (a == 0) + return (b == child); + + return ((child - b)%a == 0 && (child - b)/a > -1); +} + +static gboolean +nth_last_child_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "nth-last-child")) { + cr_utils_trace_info ("This handler is for :nth-last-child only"); + return FALSE; + } + + /*pseudo code term should exist */ + if (!a_sel->content.pseudo->term) + return FALSE; + + CRArguments arg = get_arguments_from_function (a_sel); + + if (arg.a == 0 && arg.b == 0) + return FALSE; + + int a = arg.a; + int b = arg.b; + + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + + if (!parent) { + return FALSE; + } + + /* Count which child this is (child) and total number of children (m). */ + + CRXMLNodePtr cur_node = NULL; + int m = 0; + int child = 0; + int found = FALSE; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + if (cur_node == a_node) { + found = TRUE; + child = m; + } + cur_node = get_next_element_node (node_iface,cur_node); + ++m; + } + + if (!found) + return FALSE; + + if (a == 0) + return ((m - b) == child); + + return ((m - child - b)%a == 0 && (m - child - b)/a > -1); +} + +static gboolean +nth_last_of_type_pseudo_class_handler (CRSelEng *const a_this, + CRAdditionalSel * a_sel, CRXMLNodePtr const a_node) +{ + CRNodeIface const *node_iface = NULL; + CRXMLNodePtr parent = NULL; + + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_sel && a_sel->content.pseudo + && a_sel->content.pseudo + && a_sel->content.pseudo->name + && a_sel->content.pseudo->name->stryng + && a_node, FALSE); + + if (strcmp (a_sel->content.pseudo->name->stryng->str, "nth-last-of-type")) { + cr_utils_trace_info ("This handler is for :nth-last-of-type only"); + return FALSE; + } + + /*pseude code term should exist */ + if (!a_sel->content.pseudo->term) + return FALSE; + + CRArguments arg = get_arguments_from_function (a_sel); + + if (arg.a == 0 && arg.b == 0) + return FALSE; + + int a = arg.a; + int b = arg.b; + + node_iface = PRIVATE(a_this)->node_iface; + parent = node_iface->getParentNode (a_node); + if (!parent) { + return FALSE; + } + + CRXMLNodePtr cur_node = NULL; + int m = 0; + int child = 0; + int found = FALSE; + + cur_node = get_first_child_element_node (node_iface, parent); + + while (cur_node) { + if (!strcmp(node_iface->getLocalName(cur_node), a_sel->content.pseudo->sel_name->stryng->str)) + ++m; + if (cur_node == a_node) { + found = TRUE; + child = m; + } + cur_node = get_next_element_node (node_iface, cur_node); + } + + if (!found) + return FALSE; + + if (a == 0) + return ((m - b) == child); + + return ((m - child - b +1)%a == 0 && (m - child - b +1)/a > -1); + +} + static gboolean pseudo_class_add_sel_matches_node (CRSelEng * a_this, CRAdditionalSel * a_add_sel, @@ -539,11 +1094,8 @@ get_next_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node) return cur_node; } -/* TODO: Consider renaming this to get_first_child_element_node. - (cf get_first_parent_element_node, which does getParent until element node - rather than getNextSibling). */ static CRXMLNodePtr -get_next_child_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node) +get_first_child_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_node) { CRXMLNodePtr cur_node = NULL; @@ -583,6 +1135,64 @@ get_next_parent_element_node (CRNodeIface const * a_node_iface, CRXMLNodePtr a_n return cur_node; } +static CRArguments +get_arguments_from_function (CRAdditionalSel * a_sel) +{ + CRArguments arg; + arg.a = 0; + arg.b = 0; + switch (a_sel->content.pseudo->term->type) { + case TERM_NUMBER: + if (a_sel->content.pseudo->term->content.num) { + arg.b = a_sel->content.pseudo->term->content.num->val; + } + if (a_sel->content.pseudo->term->n) { + arg.a = arg.b; + arg.b = 0; + } + break; + + case TERM_IDENT: + if (a_sel->content.pseudo->term->content.str) { + if (!strcmp(a_sel->content.pseudo->term->content.str->stryng->str, "even")) { + arg.a = 2; + arg.b = 0; + } else if (!strcmp(a_sel->content.pseudo->term->content.str->stryng->str, "odd")) { + arg.a = 2; + arg.b = 1; + } else if (!strcmp(a_sel->content.pseudo->term->content.str->stryng->str, "n")) { + /* 'n' without number */ + arg.a = 1; + } else if (!strcmp(a_sel->content.pseudo->term->content.str->stryng->str, "-n")) { + /* '-n' without number */ + arg.a = -1; + } else { + /* Unknown string */ + arg.a = 0; + arg.b = 0; + return (arg); + } + } + break; + + default: + cr_utils_trace_info ("Unknown term in nth style handler"); + arg.a = 0; + arg.b = 0; + return (arg); + } + + if (arg.a != 0 && a_sel->content.pseudo->term->next) { + /* check for b in 'an+b' */ + if (a_sel->content.pseudo->term->next->type == TERM_NUMBER && + a_sel->content.pseudo->term->next->content.num ) { + arg.b = a_sel->content.pseudo->term->next->content.num->val; + } + } + + return (arg); +} + /** *Evaluate a selector (a simple selectors list) and says *if it matches the xml node given in parameter. @@ -1121,13 +1731,57 @@ cr_sel_eng_new (void) } memset (PRIVATE (result), 0, sizeof (CRSelEngPriv)); cr_sel_eng_register_pseudo_class_sel_handler - (result, (guchar *) "first-child", + (result, (guchar *) "root", IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ - first_child_pseudo_class_handler); + root_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "empty", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + empty_pseudo_class_handler); cr_sel_eng_register_pseudo_class_sel_handler (result, (guchar *) "lang", FUNCTION_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ lang_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "only-child", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + only_child_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "only-of-type", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + only_of_type_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "first-child", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + first_child_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "first-of-type", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + first_of_type_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "last-child", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + last_child_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "last-of-type", + IDENT_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + last_of_type_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "nth-child", + FUNCTION_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + nth_child_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "nth-of-type", + FUNCTION_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + nth_of_type_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "nth-last-child", + FUNCTION_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + nth_last_child_pseudo_class_handler); + cr_sel_eng_register_pseudo_class_sel_handler + (result, (guchar *) "nth-last-of-type", + FUNCTION_PSEUDO, /*(CRPseudoClassSelectorHandler)*/ + nth_last_of_type_pseudo_class_handler); return result; } diff --git a/src/libcroco/cr-sel-eng.h b/src/libcroco/cr-sel-eng.h index 564debc8d..206990eb6 100644 --- a/src/libcroco/cr-sel-eng.h +++ b/src/libcroco/cr-sel-eng.h @@ -44,6 +44,14 @@ G_BEGIN_DECLS typedef struct _CRSelEng CRSelEng ; typedef struct _CRSelEngPriv CRSelEngPriv ; +typedef struct _CRArguments CRArguments ; + +//stores arguments of function of type an+b +struct _CRArguments +{ + int a; + int b; +} ; /** *The Selection engine class. diff --git a/src/libcroco/cr-term.c b/src/libcroco/cr-term.c index 1c50aed2a..aec524b0b 100644 --- a/src/libcroco/cr-term.c +++ b/src/libcroco/cr-term.c @@ -74,6 +74,7 @@ cr_term_clear (CRTerm * a_this) } a_this->type = TERM_NO_TYPE; + a_this->n = FALSE; } /** diff --git a/src/libcroco/cr-term.h b/src/libcroco/cr-term.h index e85867afb..39b9c6a8b 100644 --- a/src/libcroco/cr-term.h +++ b/src/libcroco/cr-term.h @@ -122,6 +122,11 @@ struct _CRTerm CRTerm *func_param ; } ext_content ; + /** + *A flag to indicate if there is an n as in the nth child expression 'an+b'. + */ + gboolean n; + /** *A spare pointer, just in case. *Can be used by the application. diff --git a/src/libcroco/cr-token.h b/src/libcroco/cr-token.h index f1257b7a8..35e914d2d 100644 --- a/src/libcroco/cr-token.h +++ b/src/libcroco/cr-token.h @@ -35,37 +35,37 @@ G_BEGIN_DECLS enum CRTokenType { - NO_TK, + NO_TK, // 0 S_TK, CDO_TK, CDC_TK, INCLUDES_TK, - DASHMATCH_TK, + DASHMATCH_TK, // 5 COMMENT_TK, STRING_TK, IDENT_TK, HASH_TK, - IMPORT_SYM_TK, + IMPORT_SYM_TK, // 10 PAGE_SYM_TK, MEDIA_SYM_TK, FONT_FACE_SYM_TK, CHARSET_SYM_TK, - ATKEYWORD_TK, + ATKEYWORD_TK, // 15 IMPORTANT_SYM_TK, EMS_TK, EXS_TK, LENGTH_TK, - ANGLE_TK, + ANGLE_TK, // 20 TIME_TK, FREQ_TK, DIMEN_TK, PERCENTAGE_TK, - NUMBER_TK, + NUMBER_TK, // 25 RGB_TK, URI_TK, FUNCTION_TK, UNICODERANGE_TK, - SEMICOLON_TK, + SEMICOLON_TK, // 30 CBO_TK, /*opening curly bracket*/ CBC_TK, /*closing curly bracket*/ PO_TK, /*opening parenthesis*/ -- cgit v1.2.3 From 039bd1db377db24d13ca472e039838aed4cf3e97 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sat, 2 Sep 2017 22:08:04 +0200 Subject: Implement CSS 3 "general sibling" combinator (~). --- src/libcroco/cr-parser.c | 4 ++++ src/libcroco/cr-sel-eng.c | 39 +++++++++++++++++++++++++++++++++++++++ src/libcroco/cr-simple-sel.c | 4 ++++ src/libcroco/cr-simple-sel.h | 7 ++++--- 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/libcroco/cr-parser.c b/src/libcroco/cr-parser.c index 454e1c330..449533c6e 100644 --- a/src/libcroco/cr-parser.c +++ b/src/libcroco/cr-parser.c @@ -1969,6 +1969,10 @@ cr_parser_parse_simple_sels (CRParser * a_this, READ_NEXT_CHAR (a_this, &cur_char); comb = COMB_PLUS; cr_parser_try_to_skip_spaces_and_comments (a_this); + } else if (next_char == '~') { + READ_NEXT_CHAR (a_this, &cur_char); + comb = COMB_TILDE; + cr_parser_try_to_skip_spaces_and_comments (a_this); } else if (next_char == '>') { READ_NEXT_CHAR (a_this, &cur_char); comb = COMB_GT; diff --git a/src/libcroco/cr-sel-eng.c b/src/libcroco/cr-sel-eng.c index 3c96ac7c7..ea04bfd2e 100644 --- a/src/libcroco/cr-sel-eng.c +++ b/src/libcroco/cr-sel-eng.c @@ -1349,6 +1349,45 @@ sel_matches_node_real (CRSelEng * a_this, CRSimpleSel * a_sel, goto done; break; + case COMB_TILDE: /* General sibling selector. */ + { + CRXMLNodePtr n = NULL; + enum CRStatus status = CR_OK; + gboolean matches = FALSE; + + /* + * Walk through previous sibing nodes looking for a + * node that matches the preceding selector. + */ + for (n = get_prev_element_node (node_iface, cur_node); + n; + n = get_prev_element_node (node_iface, n)) { + status = sel_matches_node_real + (a_this, cur_sel->prev, + n, &matches, FALSE, TRUE); + + if (status != CR_OK) + goto done; + + if (matches == TRUE) { + cur_node = n ; + break; + } + } + + if (!n) { + /* + * Didn't find any previous sibling that matches + * the previous simple selector. + */ + goto done; + } + /* + * See note above in COMB_WS section. + */ + break; + } + case COMB_GT: cur_node = get_next_parent_element_node (node_iface, cur_node); if (!cur_node) diff --git a/src/libcroco/cr-simple-sel.c b/src/libcroco/cr-simple-sel.c index 4df93fa77..3a4a3b2e2 100644 --- a/src/libcroco/cr-simple-sel.c +++ b/src/libcroco/cr-simple-sel.c @@ -125,6 +125,10 @@ cr_simple_sel_to_string (CRSimpleSel const * a_this) g_string_append (str_buf, "+"); break; + case COMB_TILDE: + g_string_append (str_buf, "~"); + break; + case COMB_GT: g_string_append (str_buf, ">"); break; diff --git a/src/libcroco/cr-simple-sel.h b/src/libcroco/cr-simple-sel.h index d8edc0025..552e44f00 100644 --- a/src/libcroco/cr-simple-sel.h +++ b/src/libcroco/cr-simple-sel.h @@ -40,9 +40,10 @@ G_BEGIN_DECLS enum Combinator { NO_COMBINATOR, - COMB_WS,/*whitespace: descendent*/ - COMB_PLUS,/*'+': preceded by*/ - COMB_GT/*greater than ('>'): child*/ + COMB_WS, /*whitespace: descendent*/ + COMB_PLUS, /*'+': immediately preceded by*/ + COMB_TILDE, /*'~': preceded by, CSS 3*/ + COMB_GT /*greater than ('>'): child*/ } ; enum SimpleSelectorType -- cgit v1.2.3 From 9279f974816c13df8eebb0163c8848088d43e065 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Mon, 4 Sep 2017 15:10:35 +0200 Subject: Fix crash in style dialog (double deletion of document->style_sheet). --- src/sp-style-elem.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index c87b5436d..694334d23 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -176,6 +176,10 @@ import_style_cb (CRDocHandler *a_handler, std::cerr << "import_style_cb: No document!" << std::endl; return; } + if (!document->style_sheet) { + std::cerr << "import_style_cb: No document style sheet!" << std::endl; + return; + } if (!document->getURI()) { std::cerr << "import_style_cb: Document URI is NULL" << std::endl; return; @@ -364,10 +368,6 @@ void SPStyleElem::read_content() { // style element would correspond to document->style_sheet, while // laters ones are chained on using style_sheet->next). - if (document->style_sheet != NULL) { - cr_stylesheet_destroy (document->style_sheet); - document->style_sheet = NULL; - } document->style_sheet = cr_stylesheet_new (NULL); CRParser *parser = parser_init(document->style_sheet, document); @@ -385,8 +385,11 @@ void SPStyleElem::read_content() { // std::cout << (string?string:"Null") << std::endl; if (parse_status == CR_OK) { - cr_cascade_set_sheet(document->style_cascade, document->style_sheet, ORIGIN_AUTHOR); + // Also destroys old style sheet: + cr_cascade_set_sheet (document->style_cascade, document->style_sheet, ORIGIN_AUTHOR); } else { + cr_stylesheet_destroy (document->style_sheet); + document->style_sheet = NULL; if (parse_status != CR_PARSING_ERROR) { g_printerr("parsing error code=%u\n", unsigned(parse_status)); /* Better than nothing. TODO: Improve libcroco's error handling. At a minimum, add a -- cgit v1.2.3 From a113f4663e5f155386a5b3b8f1b1f19f4d61145b Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Tue, 5 Sep 2017 01:47:21 +0200 Subject: Allow nested LPE over groups also with shapes --- src/sp-item-group.cpp | 30 +++++++++++++++++++++++++----- src/sp-lpe-item.cpp | 22 ++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 88b2bb1f9..c81375f05 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -32,6 +32,7 @@ #include "attributes.h" #include "sp-item-transform.h" #include "sp-root.h" +#include "sp-rect.h" #include "sp-offset.h" #include "sp-clippath.h" #include "sp-mask.h" @@ -953,11 +954,28 @@ sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write) SPShape *subShape = dynamic_cast(subitem); if (subShape) { SPCurve * c = NULL; - - SPPath *subPath = dynamic_cast(subShape); - if (subPath) { - c = subPath->get_original_curve(); - } else { + // If item is a SPRect, convert it to path first: + if ( dynamic_cast(subShape) ) { + SPDesktop *desktop = SP_ACTIVE_DESKTOP; + if (desktop) { + Inkscape::Selection *sel = desktop->getSelection(); + if ( sel && !sel->isEmpty() ) { + sel->clear(); + sel->add(SP_ITEM(subShape)); + sel->toCurves(); + subitem = sel->singleItem(); + subShape = dynamic_cast(subitem); + if (!subShape) { + continue; + } + sel->clear(); + sel->add(SP_ITEM(topgroup)); + } + } + } + //SPPath *subPath = dynamic_cast(subShape); + c = subShape->getCurveBeforeLPE(); + if (!c || (subShape->getCurve() != c)) { c = subShape->getCurve(); } bool success = false; @@ -968,7 +986,9 @@ sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write) c->transform(i2anc_affine(subitem, topgroup).inverse()); Inkscape::XML::Node *repr = subitem->getRepr(); if (c && success) { + subShape->setCurveInsync( subShape->getCurveBeforeLPE(), TRUE); subShape->setCurve(c, TRUE); + subShape->setCurveInsync( c, TRUE); if (write) { gchar *str = sp_svg_write_path(c->get_pathvector()); repr->setAttribute("d", str); diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index edd572b8b..6e30419ef 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -439,6 +439,28 @@ sp_lpe_item_cleanup_original_path_recursive(SPLPEItem *lpeitem, bool keep_paths) } else { sp_lpe_item_update_patheffect(lpeitem, true, true); } + } else if (SP_IS_SHAPE(lpeitem)) { + Inkscape::XML::Node *repr = lpeitem->getRepr(); + SPMask * mask = lpeitem->mask_ref->getObject(); + if(mask) { + sp_lpe_item_cleanup_original_path_recursive(SP_LPE_ITEM(mask->firstChild()), keep_paths); + } + SPClipPath * clip_path = lpeitem->clip_ref->getObject(); + if(clip_path) { + sp_lpe_item_cleanup_original_path_recursive(SP_LPE_ITEM(clip_path->firstChild()), keep_paths); + } + mask = dynamic_cast(lpeitem->parent); + clip_path = dynamic_cast(lpeitem->parent); + if ((!lpeitem->hasPathEffectRecursive() && repr->attribute("inkscape:original-d")) || + ((mask || clip_path) && !lpeitem->hasPathEffectOnClipOrMaskRecursive() && repr->attribute("inkscape:original-d"))) + { + if (!keep_paths) { + repr->setAttribute("d", NULL); + } + } else { + sp_lpe_item_update_patheffect(lpeitem, true, true); + } + } } -- cgit v1.2.3 From df5ad324d0ad5d828ae31f189e1d939d722569fa Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Tue, 5 Sep 2017 15:33:50 +0200 Subject: Replace reference to non-existant icon to one that exists. (Prevented Image properties dialog from appearing.) Fixes bug #1715138. --- src/verbs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/verbs.cpp b/src/verbs.cpp index 4827ba631..c1c108415 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -3114,7 +3114,7 @@ Verb *Verb::_base_verbs[] = { new DialogVerb(SP_VERB_DIALOG_CLONETILER, "DialogClonetiler", N_("Create Tiled Clones..."), N_("Create multiple clones of selected object, arranging them into a pattern or scattering"), INKSCAPE_ICON("dialog-tile-clones")), new DialogVerb(SP_VERB_DIALOG_ATTR, "DialogObjectAttributes", N_("_Object attributes..."), - N_("Edit the object attributes..."), INKSCAPE_ICON("dialog-object-attributes")), + N_("Edit the object attributes..."), INKSCAPE_ICON("dialog-object-properties")), new DialogVerb(SP_VERB_DIALOG_ITEM, "DialogObjectProperties", N_("_Object Properties..."), N_("Edit the ID, locked and visible status, and other object properties"), INKSCAPE_ICON("dialog-object-properties")), new DialogVerb(SP_VERB_DIALOG_INPUT, "DialogInput", N_("_Input Devices..."), -- cgit v1.2.3 From cdb439b810e67df7ffe090848a072fe1f5c44e32 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 6 Sep 2017 11:14:29 +0200 Subject: Minor code cleanup. --- src/libnrtype/Layout-TNG-Compute.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 504314046..d9ab8694b 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -698,6 +698,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, if (_flow._input_stream[unbroken_span.input_index]->Type() == TEXT_SOURCE) { // the span is set up, push the glyphs and chars + InputStreamTextSource const *text_source = static_cast(_flow._input_stream[unbroken_span.input_index]); Glib::ustring::const_iterator iter_source_text = Glib::ustring::const_iterator(unbroken_span.input_stream_first_character.base() + it_span->start.char_byte) ; unsigned char_index_in_unbroken_span = it_span->start.char_index; @@ -708,9 +709,9 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, for (unsigned glyph_index = it_span->start_glyph_index ; glyph_index < it_span->end_glyph_index ; glyph_index++) { unsigned char_byte = iter_source_text.base() - unbroken_span.input_stream_first_character.base(); - int newcluster = 0; - if (unbroken_span.glyph_string->glyphs[glyph_index].attr.is_cluster_start){ - newcluster = 1; + bool newcluster = false; + if (unbroken_span.glyph_string->glyphs[glyph_index].attr.is_cluster_start) { + newcluster = true; x_in_span = x_in_span_last; } @@ -774,7 +775,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, (new_span.text_orientation == SP_CSS_TEXT_ORIENTATION_MIXED && para.pango_items[unbroken_span.pango_item_index].item->analysis.gravity == 0) ) { - // Sideways orientation (Latin characters, CJK punctuation), 90deg rotation done at output stage. zzzzzzz + // Sideways orientation (Latin characters, CJK punctuation), 90deg rotation done at output stage. new_glyph.orientation = ORIENTATION_SIDEWAYS; new_glyph.y -= new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ]; @@ -826,8 +827,9 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, // create the Layout::Character(s) double advance_width = new_glyph.width; - if (newcluster){ - newcluster = 0; + if (newcluster) { + newcluster = false; + // find where the text ends for this log_cluster end_byte = it_span->start.iter_span->text_bytes; // Upper limit for(int next_glyph_index = glyph_index+1; next_glyph_index < unbroken_span.glyph_string->num_glyphs; next_glyph_index++){ @@ -836,6 +838,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, break; } } + // Figure out how many glyphs and characters are in the log_cluster. log_cluster_size_glyphs = 0; log_cluster_size_chars = 0; @@ -843,6 +846,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, if(unbroken_span.glyph_string->log_clusters[glyph_index ] != unbroken_span.glyph_string->log_clusters[glyph_index + log_cluster_size_glyphs])break; } + Glib::ustring::const_iterator lclist = iter_source_text; unsigned lcb = char_byte; while(lcb < end_byte){ @@ -851,6 +855,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, lcb = lclist.base() - unbroken_span.input_stream_first_character.base(); } } + while (char_byte < end_byte) { /* Hack to survive ligatures: in log_cluster keep the number of available chars >= number of glyphs remaining. When there are no ligatures these two sizes are always the same. -- cgit v1.2.3 From c6ca1727bc540ef2f8a05274d644b48503878c81 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Wed, 6 Sep 2017 21:35:39 +0200 Subject: CI/AppVeyor: Fix build - patched cairo merged upstream - updated python2-pillow merged upstream - poppler >= 0.58 introduced incompatible API changes so use old version until compatibility is restored --- buildtools/appveyor.sh | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh index 5a1f7ab7b..41182405b 100644 --- a/buildtools/appveyor.sh +++ b/buildtools/appveyor.sh @@ -31,16 +31,9 @@ export CCACHE_DIR=$(cygpath -a ccache/master) ccache --max-size=200M ccache --set-config=sloppiness=include_file_ctime,include_file_mtime -# patched cairo to avoid crash when printing -# - https://bugs.launchpad.net/inkscape/+bug/1665768 -# - https://bugs.freedesktop.org/show_bug.cgi?id=101833 -# - https://github.com/Alexpux/MINGW-packages/pull/2825 -wget -nv https://gitlab.com/Ede123/bintray/raw/master/$MINGW_PACKAGE_PREFIX-cairo-1.15.6-1-any.pkg.tar.xz \ - && pacman -U $MINGW_PACKAGE_PREFIX-cairo-1.15.6-1-any.pkg.tar.xz --noconfirm - -# missing dependency for python2-pillow -# - https://github.com/Alexpux/MINGW-packages/pull/2824 -pacman -S $MINGW_PACKAGE_PREFIX-libraqm --needed --noconfirm --noprogressbar +# temporarily use old poppler (versions >= 0.58 need compatibilty fixes due to changed "Object" API) +wget -nv http://repo.msys2.org/mingw/$MSYSTEM_CARCH/$MINGW_PACKAGE_PREFIX-poppler-0.55.0-1-any.pkg.tar.xz \ + && pacman -U $MINGW_PACKAGE_PREFIX-poppler-0.55.0-1-any.pkg.tar.xz --noconfirm ### build / test -- cgit v1.2.3 From 4e1ef09a7b0a6598b614ed1fb635e015c37e6378 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Wed, 6 Sep 2017 21:36:26 +0200 Subject: cmake/MSYS2: drop unused dependency --- CMakeScripts/InstallMSYS2.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeScripts/InstallMSYS2.cmake b/CMakeScripts/InstallMSYS2.cmake index c7ce5b2e6..a192f459f 100644 --- a/CMakeScripts/InstallMSYS2.cmake +++ b/CMakeScripts/InstallMSYS2.cmake @@ -66,7 +66,6 @@ if(WIN32) ${MINGW_BIN}/libicudt[0-9]*.dll ${MINGW_BIN}/libicuin[0-9]*.dll ${MINGW_BIN}/libicuuc[0-9]*.dll - ${MINGW_BIN}/libidn-[0-9]*.dll ${MINGW_BIN}/libidn2-[0-9]*.dll ${MINGW_BIN}/libintl-[0-9]*.dll ${MINGW_BIN}/libjpeg-[0-9]*.dll -- cgit v1.2.3 From 0085d04d2132cfeb1316535ead6f1943a7158cc2 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Wed, 6 Sep 2017 22:45:42 +0200 Subject: A bit refactor on SPGroup --- src/sp-item-group.cpp | 92 +++++++++++++++++++++++++-------------------------- src/sp-item-group.h | 4 +-- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index c81375f05..875d81ded 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -56,11 +56,11 @@ using Inkscape::DocumentUndo; -static void sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write); +static void sp_group_perform_patheffect(SPGroup *group, SPGroup *top_group, bool write); SPGroup::SPGroup() : SPLPEItem(), _expanded(false), - _insertBottom(false), + _insert_bottom(false), _layer_mode(SPGroup::GROUP) { } @@ -713,8 +713,8 @@ void SPGroup::setExpanded(bool isexpanded) { } void SPGroup::setInsertBottom(bool insertbottom) { - if ( _insertBottom != insertbottom) { - _insertBottom = insertbottom; + if ( _insert_bottom != insertbottom) { + _insert_bottom = insertbottom; } } @@ -788,19 +788,19 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo item->doWriteTransform(item->getRepr(), tAff, NULL, true); } else { // used for other import - SPItem *subItem = NULL; + SPItem *sub_item = NULL; if (item->clip_ref->getObject()) { - subItem = dynamic_cast(item->clip_ref->getObject()->firstChild()); + sub_item = dynamic_cast(item->clip_ref->getObject()->firstChild()); } - if (subItem != NULL) { - subItem->doWriteTransform(subItem->getRepr(), subItem->transform*sc, NULL, true); + if (sub_item != NULL) { + sub_item->doWriteTransform(sub_item->getRepr(), sub_item->transform*sc, NULL, true); } - subItem = NULL; + sub_item = NULL; if (item->mask_ref->getObject()) { - subItem = dynamic_cast(item->mask_ref->getObject()->firstChild()); + sub_item = dynamic_cast(item->mask_ref->getObject()->firstChild()); } - if (subItem != NULL) { - subItem->doWriteTransform(subItem->getRepr(), subItem->transform*sc, NULL, true); + if (sub_item != NULL) { + sub_item->doWriteTransform(sub_item->getRepr(), sub_item->transform*sc, NULL, true); } item->doWriteTransform(item->getRepr(), sc.inverse()*item->transform*sc, NULL, true); group->scaleChildItemsRec(sc, p, false); @@ -813,10 +813,10 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo Geom::Affine final = s.inverse() * sc * s; gchar const *conn_type = NULL; - SPText *textItem = dynamic_cast(item); - bool isTextTextpath = textItem && textItem->firstChild() && dynamic_cast(textItem->firstChild()); - if (isTextTextpath) { - textItem->optimizeTextpathText(); + SPText *text_item = dynamic_cast(item); + bool is_text_path = text_item && text_item->firstChild() && dynamic_cast(text_item->firstChild()); + if (is_text_path) { + text_item->optimizeTextpathText(); } else { SPFlowtext *flowText = dynamic_cast(item); if (flowText) { @@ -839,7 +839,7 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo Persp3D *persp = dynamic_cast(item); if (persp) { persp3d_apply_affine_transformation(persp, final); - } else if (isTextTextpath && !item->transform.isIdentity()) { + } else if (is_text_path && !item->transform.isIdentity()) { // Save and reset current transform Geom::Affine tmp(item->transform); item->transform = Geom::Affine(); @@ -908,11 +908,11 @@ void SPGroup::update_patheffect(bool write) { std::vector const item_list = sp_item_group_item_list(this); for ( std::vector::const_iterator iter=item_list.begin();iter!=item_list.end();++iter) { - SPObject *subitem = *iter; + SPObject *sub_item = *iter; - SPLPEItem *lpeItem = dynamic_cast(subitem); - if (lpeItem) { - lpeItem->update_patheffect(write); + SPLPEItem *lpe_item = dynamic_cast(sub_item); + if (lpe_item) { + lpe_item->update_patheffect(write); } } @@ -940,55 +940,55 @@ void SPGroup::update_patheffect(bool write) { } static void -sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write) +sp_group_perform_patheffect(SPGroup *group, SPGroup *top_group, bool write) { std::vector const item_list = sp_item_group_item_list(group); for ( std::vector::const_iterator iter=item_list.begin();iter!=item_list.end();++iter) { - SPObject *subitem = *iter; + SPObject *sub_item = *iter; - SPGroup *subGroup = dynamic_cast(subitem); - if (subGroup) { - sp_group_perform_patheffect(subGroup, topgroup, write); + SPGroup *sub_group = dynamic_cast(sub_item); + if (sub_group) { + sp_group_perform_patheffect(sub_group, top_group, write); } else { - SPShape *subShape = dynamic_cast(subitem); - if (subShape) { + SPShape *sub_shape = dynamic_cast(sub_item); + if (sub_shape) { SPCurve * c = NULL; // If item is a SPRect, convert it to path first: - if ( dynamic_cast(subShape) ) { + if ( dynamic_cast(sub_shape) ) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop) { Inkscape::Selection *sel = desktop->getSelection(); if ( sel && !sel->isEmpty() ) { sel->clear(); - sel->add(SP_ITEM(subShape)); + sel->add(SP_ITEM(sub_shape)); sel->toCurves(); - subitem = sel->singleItem(); - subShape = dynamic_cast(subitem); - if (!subShape) { + sub_item = sel->singleItem(); + sub_shape = dynamic_cast(sub_item); + if (!sub_shape) { continue; } sel->clear(); - sel->add(SP_ITEM(topgroup)); + sel->add(SP_ITEM(top_group)); } } } - //SPPath *subPath = dynamic_cast(subShape); - c = subShape->getCurveBeforeLPE(); - if (!c || (subShape->getCurve() != c)) { - c = subShape->getCurve(); + //SPPath *sub_path = dynamic_cast(sub_shape); + c = sub_shape->getCurveBeforeLPE(); + if (!c || (sub_shape->getCurve() != c)) { + c = sub_shape->getCurve(); } bool success = false; // only run LPEs when the shape has a curve defined if (c) { - c->transform(i2anc_affine(subitem, topgroup)); - success = topgroup->performPathEffect(c, subShape); - c->transform(i2anc_affine(subitem, topgroup).inverse()); - Inkscape::XML::Node *repr = subitem->getRepr(); + c->transform(i2anc_affine(sub_item, top_group)); + success = top_group->performPathEffect(c, sub_shape); + c->transform(i2anc_affine(sub_item, top_group).inverse()); + Inkscape::XML::Node *repr = sub_item->getRepr(); if (c && success) { - subShape->setCurveInsync( subShape->getCurveBeforeLPE(), TRUE); - subShape->setCurve(c, TRUE); - subShape->setCurveInsync( c, TRUE); + sub_shape->setCurveInsync( sub_shape->getCurveBeforeLPE(), TRUE); + sub_shape->setCurve(c, TRUE); + sub_shape->setCurveInsync( c, TRUE); if (write) { gchar *str = sp_svg_write_path(c->get_pathvector()); repr->setAttribute("d", str); @@ -1004,7 +1004,7 @@ sp_group_perform_patheffect(SPGroup *group, SPGroup *topgroup, bool write) Geom::PathVector pv = sp_svg_read_pathv(value); SPCurve *oldcurve = new (std::nothrow) SPCurve(pv); if (oldcurve) { - subShape->setCurve(oldcurve, TRUE); + sub_shape->setCurve(oldcurve, TRUE); oldcurve->unref(); } } diff --git a/src/sp-item-group.h b/src/sp-item-group.h index 0c74c3dc3..a96d77aa9 100644 --- a/src/sp-item-group.h +++ b/src/sp-item-group.h @@ -36,7 +36,7 @@ public: enum LayerMode { GROUP, LAYER, MASK_HELPER }; bool _expanded; - bool _insertBottom; + bool _insert_bottom; LayerMode _layer_mode; std::map _display_modes; @@ -46,7 +46,7 @@ public: bool expanded() const { return _expanded; } void setExpanded(bool isexpanded); - bool insertBottom() const { return _insertBottom; } + bool insertBottom() const { return _insert_bottom; } void setInsertBottom(bool insertbottom); LayerMode effectiveLayerMode(unsigned int display_key) const { -- cgit v1.2.3 From 4754229fb90d296b1fad0b1a537734f9a4da5f34 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Wed, 6 Sep 2017 22:46:36 +0200 Subject: A little improvements on groups with paths having LPE --- src/sp-item-group.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 875d81ded..68c17abc8 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -986,9 +986,12 @@ sp_group_perform_patheffect(SPGroup *group, SPGroup *top_group, bool write) c->transform(i2anc_affine(sub_item, top_group).inverse()); Inkscape::XML::Node *repr = sub_item->getRepr(); if (c && success) { - sub_shape->setCurveInsync( sub_shape->getCurveBeforeLPE(), TRUE); - sub_shape->setCurve(c, TRUE); - sub_shape->setCurveInsync( c, TRUE); + SPPath *sub_path = dynamic_cast(sub_item); + if (!sub_path) { + sub_shape->setCurveInsync( sub_shape->getCurveBeforeLPE(), TRUE); + sub_shape->setCurve(c, TRUE); + sub_shape->setCurveInsync( c, TRUE); + } if (write) { gchar *str = sp_svg_write_path(c->get_pathvector()); repr->setAttribute("d", str); -- cgit v1.2.3 From bfc70139347781252b7d6860cde5722ed9d5a487 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Thu, 7 Sep 2017 18:00:25 +0200 Subject: Fix infinite loop when rendering text inside a shape under very special conditions. (When a line does not fit due to its height but when refitted with a larger height it is broken into multiple chunks and no text fits into the first chunk.) Fixes bug #1715442. --- src/libnrtype/Layout-TNG-Compute.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index d9ab8694b..1bc035856 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -253,8 +253,7 @@ class Layout::Calculator UnbrokenSpanPosition const &start_span_pos, ScanlineMaker::ScanRun const &scan_run, std::vector *chunk_info, - FontMetrics *line_height, - FontMetrics const *strut_height) const; + FontMetrics *line_height) const; bool _measureUnbrokenSpan(ParagraphInfo const ¶, BrokenSpan *span, @@ -1472,8 +1471,8 @@ bool Layout::Calculator::_findChunksForLine(ParagraphInfo const ¶, TRACE((" initial line_box_height (em size): %f\n", line_box_height->emSize() )); UnbrokenSpanPosition span_pos; + static int trys = 0; for( ; ; ) { - // Get regions where one can place one line of text (can be more than one, if filling a // donut for example). std::vector scan_runs; @@ -1495,10 +1494,9 @@ bool Layout::Calculator::_findChunksForLine(ParagraphInfo const ¶, unsigned scan_run_index; span_pos = *start_span_pos; for (scan_run_index = 0 ; scan_run_index < scan_runs.size() ; scan_run_index++) { - // Returns false if some text in line requires a taller line_box_height. // (We try again with a larger line_box_height.) - if (!_buildChunksInScanRun(para, span_pos, scan_runs[scan_run_index], chunk_info, line_box_height, strut_height)) { + if (!_buildChunksInScanRun(para, span_pos, scan_runs[scan_run_index], chunk_info, line_box_height)) { break; } @@ -1534,11 +1532,12 @@ bool Layout::Calculator::_buildChunksInScanRun(ParagraphInfo const ¶, UnbrokenSpanPosition const &start_span_pos, ScanlineMaker::ScanRun const &scan_run, std::vector *chunk_info, - FontMetrics *line_height, - FontMetrics const *strut_height) const + FontMetrics *line_height) const { TRACE((" begin _buildChunksInScanRun: chunks: %lu, em size: %f\n", chunk_info->size(), line_height->emSize() )); + FontMetrics line_height_saved = *line_height; // Store for recalculating line height if chunks are backed out + ChunkInfo new_chunk; new_chunk.text_width = 0.0; new_chunk.whitespace_count = 0; @@ -1647,7 +1646,7 @@ bool Layout::Calculator::_buildChunksInScanRun(ParagraphInfo const ¶, } // Recalculate line_box_height after backing out chunks - *line_height = *strut_height; + *line_height = line_height_saved; for (std::vector::const_iterator it_chunk = chunk_info->begin() ; it_chunk != chunk_info->end() ; it_chunk++) { for (std::vector::const_iterator it_span = it_chunk->broken_spans.begin() ; it_span != it_chunk->broken_spans.end() ; it_span++) { FontMetrics span_height = it_span->start.iter_span->line_height; -- cgit v1.2.3 From 9418824967eb4c53371ef8588243fed4cab496e0 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Wed, 6 Sep 2017 15:05:31 +0200 Subject: adapt to poppler 0.58 --- CMakeScripts/DefineDependsandFlags.cmake | 4 + config.h.cmake | 3 + src/extension/internal/pdfinput/pdf-input.cpp | 6 + src/extension/internal/pdfinput/pdf-parser.cpp | 521 +++++++++++++++++++++++++ 4 files changed, 534 insertions(+) diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index 46fbe7568..48979c67e 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -131,6 +131,10 @@ if(ENABLE_POPPLER) POPPLER_VERSION VERSION_EQUAL "0.29.0") set(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API ON) endif() + if(POPPLER_VERSION VERSION_GREATER "0.58.0" OR + POPPLER_VERSION VERSION_EQUAL "0.58.0") + set(POPPLER_NEW_OBJECT_API ON) + endif() else() set(ENABLE_POPPLER_CAIRO OFF) endif() diff --git a/config.h.cmake b/config.h.cmake index a7ad4b355..60bea0d8d 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -107,6 +107,9 @@ /* Use color space API from Poppler >= 0.29.0 */ #cmakedefine POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API 1 +/* Use object API from Poppler >= 0.58.0 */ +#cmakedefine POPPLER_NEW_OBJECT_API 1 + /* Define to 1 if you have the `pow' function. */ #cmakedefine HAVE_POW 1 diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp index 844d16c17..6e0ee75aa 100644 --- a/src/extension/internal/pdfinput/pdf-input.cpp +++ b/src/extension/internal/pdfinput/pdf-input.cpp @@ -846,14 +846,20 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) { } // Parse the document structure +#if defined(POPPLER_NEW_OBJECT_API) + Object obj = page->getContents(); +#else Object obj; page->getContents(&obj); +#endif if (!obj.isNull()) { pdf_parser->parse(&obj); } // Cleanup +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif delete pdf_parser; delete builder; g_free(docname); diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp index 5ede59bf3..604b7f807 100644 --- a/src/extension/internal/pdfinput/pdf-parser.cpp +++ b/src/extension/internal/pdfinput/pdf-parser.cpp @@ -414,13 +414,21 @@ void PdfParser::parse(Object *obj, GBool topLevel) { if (obj->isArray()) { for (int i = 0; i < obj->arrayGetLength(); ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj->arrayGet(i); +#else obj->arrayGet(i, &obj2); +#endif if (!obj2.isStream()) { error(errInternal, -1, "Weird page contents"); +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif return; } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } } else if (!obj->isStream()) { error(errInternal, -1, "Weird page contents"); @@ -439,7 +447,11 @@ void PdfParser::go(GBool /*topLevel*/) // scan a sequence of objects int numArgs = 0; +#if defined(POPPLER_NEW_OBJECT_API) + obj = parser->getObj(); +#else parser->getObj(&obj); +#endif while (!obj.isEOF()) { // got a command - execute it @@ -457,14 +469,20 @@ void PdfParser::go(GBool /*topLevel*/) // Run the operation execOp(&obj, args, numArgs); +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); for (int i = 0; i < numArgs; ++i) args[i].free(); +#endif numArgs = 0; // got an argument - save it } else if (numArgs < maxArgs) { +#if defined(POPPLER_NEW_OBJECT_API) + args[numArgs++] = std::move(obj); +#else args[numArgs++] = obj; +#endif // too many arguments - something is wrong } else { @@ -475,13 +493,21 @@ void PdfParser::go(GBool /*topLevel*/) printf("\n"); fflush(stdout); } +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif } // grab the next object +#if defined(POPPLER_NEW_OBJECT_API) + obj = parser->getObj(); +#else parser->getObj(&obj); +#endif } +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif // args at end with no command if (numArgs > 0) { @@ -495,8 +521,10 @@ void PdfParser::go(GBool /*topLevel*/) printf("\n"); fflush(stdout); } +#if !defined(POPPLER_NEW_OBJECT_API) for (int i = 0; i < numArgs; ++i) args[i].free(); +#endif } } @@ -692,9 +720,13 @@ void PdfParser::opSetDash(Object args[], int /*numArgs*/) if (length != 0) { dash = (double *)gmallocn(length, sizeof(double)); for (int i = 0; i < length; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + dash[i] = a->get(i).getNum(); +#else Object obj; dash[i] = a->get(i, &obj)->getNum(); obj.free(); +#endif } } state->setLineDash(dash, length, args[1].getNum()); @@ -744,12 +776,18 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) GBool haveBackdropColor = gFalse; GBool alpha = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj1 = res->lookupGState(args[0].getName())).isNull()) { +#else if (!res->lookupGState(args[0].getName(), &obj1)) { +#endif return; } if (!obj1.isDict()) { error(errSyntaxError, getPos(), "ExtGState '{0:s}' is wrong type"), args[0].getName(); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif return; } if (printCommands) { @@ -759,7 +797,11 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) } // transparency support: blend mode, fill/stroke opacity +#if defined(POPPLER_NEW_OBJECT_API) + if (!((obj2 = obj1.dictLookup(const_cast("BM"))).isNull())) { +#else if (!obj1.dictLookup(const_cast("BM"), &obj2)->isNull()) { +#endif GfxBlendMode mode = gfxBlendNormal; if (state->parseBlendMode(&obj2, &mode)) { state->setBlendMode(mode); @@ -767,40 +809,71 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) error(errSyntaxError, getPos(), "Invalid blend mode in ExtGState"); } } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj2 = obj1.dictLookup(const_cast("ca"))).isNum()) { +#else obj2.free(); if (obj1.dictLookup(const_cast("ca"), &obj2)->isNum()) { +#endif state->setFillOpacity(obj2.getNum()); } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj2 = obj1.dictLookup(const_cast("CA"))).isNum()) { +#else obj2.free(); if (obj1.dictLookup(const_cast("CA"), &obj2)->isNum()) { +#endif state->setStrokeOpacity(obj2.getNum()); } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif // fill/stroke overprint GBool haveFillOP = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + if ((haveFillOP = (obj2 = obj1.dictLookup(const_cast("op"))).isBool())) { +#else if ((haveFillOP = (obj1.dictLookup(const_cast("op"), &obj2)->isBool()))) { +#endif state->setFillOverprint(obj2.getBool()); } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj2 = obj1.dictLookup(const_cast("OP"))).isBool()) { +#else obj2.free(); if (obj1.dictLookup(const_cast("OP"), &obj2)->isBool()) { +#endif state->setStrokeOverprint(obj2.getBool()); if (!haveFillOP) { state->setFillOverprint(obj2.getBool()); } } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif // stroke adjust +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj2 = obj1.dictLookup(const_cast("SA"))).isBool()) { +#else if (obj1.dictLookup(const_cast("SA"), &obj2)->isBool()) { +#endif state->setStrokeAdjust(obj2.getBool()); } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif // transfer function +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj2 = obj1.dictLookup(const_cast("TR2"))).isNull()) { + obj2 = obj1.dictLookup(const_cast("TR")); +#else if (obj1.dictLookup(const_cast("TR2"), &obj2)->isNull()) { obj2.free(); obj1.dictLookup(const_cast("TR"), &obj2); +#endif } if (obj2.isName(const_cast("Default")) || obj2.isName(const_cast("Identity"))) { @@ -809,9 +882,15 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) } else if (obj2.isArray() && obj2.arrayGetLength() == 4) { int pos = 4; for (int i = 0; i < 4; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj3 = obj2.arrayGet(i); +#else obj2.arrayGet(i, &obj3); +#endif funcs[i] = Function::parse(&obj3); +#if !defined(POPPLER_NEW_OBJECT_API) obj3.free(); +#endif if (!funcs[i]) { pos = i; break; @@ -828,21 +907,37 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) } else if (!obj2.isNull()) { error(errSyntaxError, getPos(), "Invalid transfer function in ExtGState"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif // soft mask +#if defined(POPPLER_NEW_OBJECT_API) + if (!((obj2 = obj1.dictLookup(const_cast("SMask"))).isNull())) { +#else if (!obj1.dictLookup(const_cast("SMask"), &obj2)->isNull()) { +#endif if (obj2.isName(const_cast("None"))) { builder->clearSoftMask(state); } else if (obj2.isDict()) { +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj3 = obj2.dictLookup(const_cast("S"))).isName(const_cast("Alpha"))) { +#else if (obj2.dictLookup(const_cast("S"), &obj3)->isName(const_cast("Alpha"))) { +#endif alpha = gTrue; } else { // "Luminosity" alpha = gFalse; } +#if !defined(POPPLER_NEW_OBJECT_API) obj3.free(); +#endif funcs[0] = NULL; +#if defined(POPPLER_NEW_OBJECT_API) + if (!((obj3 = obj2.dictLookup(const_cast("TR"))).isNull())) { +#else if (!obj2.dictLookup(const_cast("TR"), &obj3)->isNull()) { +#endif funcs[0] = Function::parse(&obj3); if (funcs[0]->getInputSize() != 1 || funcs[0]->getOutputSize() != 1) { @@ -851,26 +946,45 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) funcs[0] = NULL; } } +#if defined(POPPLER_NEW_OBJECT_API) + if ((haveBackdropColor = (obj3 = obj2.dictLookup(const_cast("BC"))).isArray())) { +#else obj3.free(); if ((haveBackdropColor = obj2.dictLookup(const_cast("BC"), &obj3)->isArray())) { +#endif for (int i = 0; i < gfxColorMaxComps; ++i) { backdropColor.c[i] = 0; } for (int i = 0; i < obj3.arrayGetLength() && i < gfxColorMaxComps; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj4 = obj3.arrayGet(i); +#else obj3.arrayGet(i, &obj4); +#endif if (obj4.isNum()) { backdropColor.c[i] = dblToCol(obj4.getNum()); } +#if !defined(POPPLER_NEW_OBJECT_API) obj4.free(); +#endif } } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj3 = obj2.dictLookup(const_cast("G"))).isStream()) { + if ((obj4 = obj3.streamGetDict()->lookup(const_cast("Group"))).isDict()) { +#else obj3.free(); if (obj2.dictLookup(const_cast("G"), &obj3)->isStream()) { if (obj3.streamGetDict()->lookup(const_cast("Group"), &obj4)->isDict()) { +#endif GfxColorSpace *blendingColorSpace = 0; GBool isolated = gFalse; GBool knockout = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + if (!((obj5 = obj4.dictLookup(const_cast("CS"))).isNull())) { +#else if (!obj4.dictLookup(const_cast("CS"), &obj5)->isNull()) { +#endif #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) blendingColorSpace = GfxColorSpace::parse(NULL, &obj5, NULL, NULL); #elif defined(POPPLER_EVEN_NEWER_COLOR_SPACE_API) @@ -879,15 +993,25 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) blendingColorSpace = GfxColorSpace::parse(&obj5, NULL); #endif } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj5 = obj4.dictLookup(const_cast("I"))).isBool()) { +#else obj5.free(); if (obj4.dictLookup(const_cast("I"), &obj5)->isBool()) { +#endif isolated = obj5.getBool(); } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj5 = obj4.dictLookup(const_cast("K"))).isBool()) { +#else obj5.free(); if (obj4.dictLookup(const_cast("K"), &obj5)->isBool()) { +#endif knockout = obj5.getBool(); } +#if !defined(POPPLER_NEW_OBJECT_API) obj5.free(); +#endif if (!haveBackdropColor) { if (blendingColorSpace) { blendingColorSpace->getDefaultColor(&backdropColor); @@ -906,18 +1030,24 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) } else { error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj4.free(); +#endif } else { error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj3.free(); +#endif } else if (!obj2.isNull()) { error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState"); } } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); obj1.free(); +#endif } void PdfParser::doSoftMask(Object *str, GBool alpha, @@ -938,43 +1068,79 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, dict = str->streamGetDict(); // check form type +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("FormType")); +#else dict->lookup(const_cast("FormType"), &obj1); +#endif if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { error(errSyntaxError, getPos(), "Unknown form type"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // get bounding box +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("BBox")); +#else dict->lookup(const_cast("BBox"), &obj1); +#endif if (!obj1.isArray()) { +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif error(errSyntaxError, getPos(), "Bad form bounding box"); return; } for (i = 0; i < 4; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj1.arrayGet(i); +#else obj1.arrayGet(i, &obj2); +#endif bbox[i] = obj2.getNum(); +#if defined(POPPLER_NEW_OBJECT_API) + } +#else obj2.free(); } obj1.free(); +#endif // get matrix +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Matrix")); +#else dict->lookup(const_cast("Matrix"), &obj1); +#endif if (obj1.isArray()) { for (i = 0; i < 6; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj1.arrayGet(i); +#else obj1.arrayGet(i, &obj2); +#endif m[i] = obj2.getNum(); +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } } else { m[0] = 1; m[1] = 0; m[2] = 0; m[3] = 1; m[4] = 0; m[5] = 0; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // get resources +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Resources")); +#else dict->lookup(const_cast("Resources"), &obj1); +#endif resDict = obj1.isDict() ? obj1.getDict() : (Dict *)NULL; // draw it @@ -987,7 +1153,9 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, if (blendingColorSpace) { delete blendingColorSpace; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif } void PdfParser::opSetRenderingIntent(Object /*args*/[], int /*numArgs*/) @@ -1084,7 +1252,11 @@ void PdfParser::opSetFillColorSpace(Object args[], int /*numArgs*/) Object obj; state->setFillPattern(NULL); +#if defined(POPPLER_NEW_OBJECT_API) + obj = res->lookupColorSpace(args[0].getName()); +#else res->lookupColorSpace(args[0].getName(), &obj); +#endif GfxColorSpace *colorSpace = 0; #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) @@ -1106,7 +1278,9 @@ void PdfParser::opSetFillColorSpace(Object args[], int /*numArgs*/) colorSpace = GfxColorSpace::parse(&obj, NULL); } #endif +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif if (colorSpace) { GfxColor color; state->setFillColorSpace(colorSpace); @@ -1125,7 +1299,11 @@ void PdfParser::opSetStrokeColorSpace(Object args[], int /*numArgs*/) GfxColorSpace *colorSpace = 0; state->setStrokePattern(NULL); +#if defined(POPPLER_NEW_OBJECT_API) + obj = res->lookupColorSpace(args[0].getName()); +#else res->lookupColorSpace(args[0].getName(), &obj); +#endif #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) if (obj.isNull()) { colorSpace = GfxColorSpace::parse(NULL, &args[0], NULL, NULL); @@ -1145,7 +1323,9 @@ void PdfParser::opSetStrokeColorSpace(Object args[], int /*numArgs*/) colorSpace = GfxColorSpace::parse(&obj, NULL); } #endif +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif if (colorSpace) { GfxColor color; state->setStrokeColorSpace(colorSpace); @@ -2375,7 +2555,11 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/) wMode = state->getFont()->getWMode(); a = args[0].getArray(); for (int i = 0; i < a->getLength(); ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj = a->get(i); +#else a->get(i, &obj); +#endif if (obj.isNum()) { // this uses the absolute value of the font size to match // Acrobat's behavior @@ -2392,7 +2576,9 @@ void PdfParser::opShowSpaceText(Object args[], int /*numArgs*/) } else { error(errSyntaxError, getPos(), "Element of show/space array must be number or string"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif } } @@ -2465,7 +2651,11 @@ void PdfParser::doShowText(GooString *s) { //out->updateCTM(state, 1, 0, 0, 1, 0, 0); if (0){ /*!out->beginType3Char(state, curX + riseX, curY + riseY, tdx, tdy, code, u, uLen)) {*/ +#if defined(POPPLER_NEW_OBJECT_API) + charProc = ((Gfx8BitFont *)font)->getCharProc(code); +#else ((Gfx8BitFont *)font)->getCharProc(code, &charProc); +#endif if ((resDict = ((Gfx8BitFont *)font)->getResources())) { pushResources(resDict); } @@ -2478,7 +2668,9 @@ void PdfParser::doShowText(GooString *s) { if (resDict) { popResources(); } +#if !defined(POPPLER_NEW_OBJECT_API) charProc.free(); +#endif } restoreState(); // GfxState::restore() does *not* restore the current position, @@ -2541,23 +2733,43 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) Object obj1, obj2, obj3, refObj; char *name = args[0].getName(); +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj1 = res->lookupXObject(name)).isNull()) { +#else if (!res->lookupXObject(name, &obj1)) { +#endif return; } if (!obj1.isStream()) { error(errSyntaxError, getPos(), "XObject '{0:s}' is wrong type", name); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif return; } +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj1.streamGetDict()->lookup(const_cast("Subtype")); +#else obj1.streamGetDict()->lookup(const_cast("Subtype"), &obj2); +#endif if (obj2.isName(const_cast("Image"))) { +#if defined(POPPLER_NEW_OBJECT_API) + refObj = res->lookupXObjectNF(name); +#else res->lookupXObjectNF(name, &refObj); +#endif doImage(&refObj, obj1.getStream(), gFalse); +#if !defined(POPPLER_NEW_OBJECT_API) refObj.free(); +#endif } else if (obj2.isName(const_cast("Form"))) { doForm(&obj1); } else if (obj2.isName(const_cast("PS"))) { +#if defined(POPPLER_NEW_OBJECT_API) + obj3 = obj1.streamGetDict()->lookup(const_cast("Level1")); +#else obj1.streamGetDict()->lookup(const_cast("Level1"), &obj3); +#endif /* out->psXObject(obj1.getStream(), obj3.isStream() ? obj3.getStream() : (Stream *)NULL);*/ } else if (obj2.isName()) { @@ -2565,8 +2777,10 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) } else { error(errSyntaxError, getPos(), "XObject subtype is missing or wrong type"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); obj1.free(); +#endif } void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) @@ -2593,10 +2807,18 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) dict = str->getDict(); // get size +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Width")); +#else dict->lookup(const_cast("Width"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("W")); +#else obj1.free(); dict->lookup(const_cast("W"), &obj1); +#endif } if (obj1.isInt()){ width = obj1.getInt(); @@ -2607,11 +2829,19 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) else { goto err2; } +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Height")); +#else obj1.free(); dict->lookup(const_cast("Height"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("H")); +#else obj1.free(); dict->lookup(const_cast("H"), &obj1); +#endif } if (obj1.isInt()) { height = obj1.getInt(); @@ -2622,26 +2852,46 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) else { goto err2; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // image interpolation +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup("Interpolate"); +#else dict->lookup("Interpolate", &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup("I"); +#else obj1.free(); dict->lookup("I", &obj1); +#endif } if (obj1.isBool()) interpolate = obj1.getBool(); else interpolate = gFalse; +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif maskInterpolate = gFalse; // image or mask? +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("ImageMask")); +#else dict->lookup(const_cast("ImageMask"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("IM")); +#else obj1.free(); dict->lookup(const_cast("IM"), &obj1); +#endif } mask = gFalse; if (obj1.isBool()) { @@ -2650,14 +2900,24 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) else if (!obj1.isNull()) { goto err2; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // bit depth if (bits == 0) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("BitsPerComponent")); +#else dict->lookup(const_cast("BitsPerComponent"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("BPC")); +#else obj1.free(); dict->lookup(const_cast("BPC"), &obj1); +#endif } if (obj1.isInt()) { bits = obj1.getInt(); @@ -2666,7 +2926,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } else { goto err2; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif } // display a mask @@ -2676,21 +2938,37 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) goto err1; } invert = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Decode")); +#else dict->lookup(const_cast("Decode"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("D")); +#else obj1.free(); dict->lookup(const_cast("D"), &obj1); +#endif } if (obj1.isArray()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj1.arrayGet(0); +#else obj1.arrayGet(0, &obj2); +#endif if (obj2.isInt() && obj2.getInt() == 1) { invert = gTrue; } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } else if (!obj1.isNull()) { goto err2; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // draw it builder->addImageMask(state, str, width, height, invert, interpolate); @@ -2698,18 +2976,36 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } else { // get color space and color map GfxColorSpace *colorSpace; +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("ColorSpace")); +#else dict->lookup(const_cast("ColorSpace"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("CS")); +#else obj1.free(); dict->lookup(const_cast("CS"), &obj1); +#endif } if (obj1.isName()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = res->lookupColorSpace(obj1.getName()); +#else res->lookupColorSpace(obj1.getName(), &obj2); +#endif if (!obj2.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = std::move(obj2); +#else obj1.free(); obj1 = obj2; +#endif } else { +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } } if (!obj1.isNull()) { @@ -2729,17 +3025,29 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } else { colorSpace = NULL; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif if (!colorSpace) { goto err1; } +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("Decode")); +#else dict->lookup(const_cast("Decode"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("D")); +#else obj1.free(); dict->lookup(const_cast("D"), &obj1); +#endif } GfxImageColorMap *colorMap = new GfxImageColorMap(bits, &obj1, colorSpace); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif if (!colorMap->isOk()) { delete colorMap; goto err1; @@ -2753,8 +3061,13 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) int maskHeight = 0; maskInvert = gFalse; GfxImageColorMap *maskColorMap = NULL; +#if defined(POPPLER_NEW_OBJECT_API) + maskObj = dict->lookup(const_cast("Mask")); + smaskObj = dict->lookup(const_cast("SMask")); +#else dict->lookup(const_cast("Mask"), &maskObj); dict->lookup(const_cast("SMask"), &smaskObj); +#endif Dict* maskDict; if (smaskObj.isStream()) { // soft mask @@ -2763,58 +3076,108 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } maskStr = smaskObj.getStream(); maskDict = smaskObj.streamGetDict(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Width")); +#else maskDict->lookup(const_cast("Width"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("W")); +#else obj1.free(); maskDict->lookup(const_cast("W"), &obj1); +#endif } if (!obj1.isInt()) { goto err2; } maskWidth = obj1.getInt(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Height")); +#else obj1.free(); maskDict->lookup(const_cast("Height"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("H")); +#else obj1.free(); maskDict->lookup(const_cast("H"), &obj1); +#endif } if (!obj1.isInt()) { goto err2; } maskHeight = obj1.getInt(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("BitsPerComponent")); +#else obj1.free(); maskDict->lookup(const_cast("BitsPerComponent"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("BPC")); +#else obj1.free(); maskDict->lookup(const_cast("BPC"), &obj1); +#endif } if (!obj1.isInt()) { goto err2; } int maskBits = obj1.getInt(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Interpolate")); +#else obj1.free(); maskDict->lookup("Interpolate", &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("I")); +#else obj1.free(); maskDict->lookup("I", &obj1); +#endif } if (obj1.isBool()) maskInterpolate = obj1.getBool(); else maskInterpolate = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("ColorSpace")); +#else obj1.free(); maskDict->lookup(const_cast("ColorSpace"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("CS")); +#else obj1.free(); maskDict->lookup(const_cast("CS"), &obj1); +#endif } if (obj1.isName()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = res->lookupColorSpace(obj1.getName()); +#else res->lookupColorSpace(obj1.getName(), &obj2); +#endif if (!obj2.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = std::move(obj2); +#else obj1.free(); obj1 = obj2; +#endif } else { +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } } #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) @@ -2824,17 +3187,29 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) #else GfxColorSpace *maskColorSpace = GfxColorSpace::parse(&obj1, NULL); #endif +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif if (!maskColorSpace || maskColorSpace->getMode() != csDeviceGray) { goto err1; } +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Decode")); +#else maskDict->lookup(const_cast("Decode"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("D")); +#else obj1.free(); maskDict->lookup(const_cast("D"), &obj1); +#endif } maskColorMap = new GfxImageColorMap(maskBits, &obj1, maskColorSpace); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif if (!maskColorMap->isOk()) { delete maskColorMap; goto err1; @@ -2845,9 +3220,15 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) // color key mask int i; for (i = 0; i < maskObj.arrayGetLength() && i < 2*gfxColorMaxComps; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskObj.arrayGet(i); +#else maskObj.arrayGet(i, &obj1); +#endif maskColors[i] = obj1.getInt(); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif } haveColorKeyMask = gTrue; } else if (maskObj.isStream()) { @@ -2857,61 +3238,111 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } maskStr = maskObj.getStream(); maskDict = maskObj.streamGetDict(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Width")); +#else maskDict->lookup(const_cast("Width"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("W")); +#else obj1.free(); maskDict->lookup(const_cast("W"), &obj1); +#endif } if (!obj1.isInt()) { goto err2; } maskWidth = obj1.getInt(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Height")); +#else obj1.free(); maskDict->lookup(const_cast("Height"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("H")); +#else obj1.free(); maskDict->lookup(const_cast("H"), &obj1); +#endif } if (!obj1.isInt()) { goto err2; } maskHeight = obj1.getInt(); +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("ImageMask")); +#else obj1.free(); maskDict->lookup(const_cast("ImageMask"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("IM")); +#else obj1.free(); maskDict->lookup(const_cast("IM"), &obj1); +#endif } if (!obj1.isBool() || !obj1.getBool()) { goto err2; } +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup("Interpolate"); +#else obj1.free(); maskDict->lookup("Interpolate", &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup("I"); +#else obj1.free(); maskDict->lookup("I", &obj1); +#endif } if (obj1.isBool()) maskInterpolate = obj1.getBool(); else maskInterpolate = gFalse; +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif maskInvert = gFalse; +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("Decode")); +#else maskDict->lookup(const_cast("Decode"), &obj1); +#endif if (obj1.isNull()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = maskDict->lookup(const_cast("D")); +#else obj1.free(); maskDict->lookup(const_cast("D"), &obj1); +#endif } if (obj1.isArray()) { +#if defined(POPPLER_NEW_OBJECT_API) + obj2 = obj1.arrayGet(0); +#else obj1.arrayGet(0, &obj2); +#endif if (obj2.isInt() && obj2.getInt() == 1) { maskInvert = gTrue; } +#if !defined(POPPLER_NEW_OBJECT_API) obj2.free(); +#endif } else if (!obj1.isNull()) { goto err2; } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif haveExplicitMask = gTrue; } @@ -2929,14 +3360,18 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) } delete colorMap; +#if !defined(POPPLER_NEW_OBJECT_API) maskObj.free(); smaskObj.free(); +#endif } return; err2: +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif err1: error(errSyntaxError, getPos(), "Bad image parameters"); } @@ -2961,52 +3396,97 @@ void PdfParser::doForm(Object *str) { dict = str->streamGetDict(); // check form type +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = dict->lookup(const_cast("FormType")); +#else dict->lookup(const_cast("FormType"), &obj1); +#endif if (!(obj1.isNull() || (obj1.isInt() && obj1.getInt() == 1))) { error(errSyntaxError, getPos(), "Unknown form type"); } +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif // get bounding box +#if defined(POPPLER_NEW_OBJECT_API) + bboxObj = dict->lookup(const_cast("BBox")); +#else dict->lookup(const_cast("BBox"), &bboxObj); +#endif if (!bboxObj.isArray()) { +#if !defined(POPPLER_NEW_OBJECT_API) bboxObj.free(); +#endif error(errSyntaxError, getPos(), "Bad form bounding box"); return; } for (i = 0; i < 4; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = bboxObj.arrayGet(i); +#else bboxObj.arrayGet(i, &obj1); +#endif bbox[i] = obj1.getNum(); +#if defined(POPPLER_NEW_OBJECT_API) + } +#else obj1.free(); } bboxObj.free(); +#endif // get matrix +#if defined(POPPLER_NEW_OBJECT_API) + matrixObj = dict->lookup(const_cast("Matrix")); +#else dict->lookup(const_cast("Matrix"), &matrixObj); +#endif if (matrixObj.isArray()) { for (i = 0; i < 6; ++i) { +#if defined(POPPLER_NEW_OBJECT_API) + obj1 = matrixObj.arrayGet(i); +#else matrixObj.arrayGet(i, &obj1); +#endif m[i] = obj1.getNum(); +#if !defined(POPPLER_NEW_OBJECT_API) obj1.free(); +#endif } } else { m[0] = 1; m[1] = 0; m[2] = 0; m[3] = 1; m[4] = 0; m[5] = 0; } +#if !defined(POPPLER_NEW_OBJECT_API) matrixObj.free(); +#endif // get resources +#if defined(POPPLER_NEW_OBJECT_API) + resObj = dict->lookup(const_cast("Resources")); +#else dict->lookup(const_cast("Resources"), &resObj); +#endif resDict = resObj.isDict() ? resObj.getDict() : (Dict *)NULL; // check for a transparency group transpGroup = isolated = knockout = gFalse; blendingColorSpace = NULL; +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj1 = dict->lookup(const_cast("Group"))).isDict()) { + if ((obj2 = obj1.dictLookup(const_cast("S"))).isName(const_cast("Transparency"))) { +#else if (dict->lookup(const_cast("Group"), &obj1)->isDict()) { if (obj1.dictLookup(const_cast("S"), &obj2)->isName(const_cast("Transparency"))) { +#endif transpGroup = gTrue; +#if defined(POPPLER_NEW_OBJECT_API) + if (!((obj3 = obj1.dictLookup(const_cast("CS"))).isNull())) { +#else if (!obj1.dictLookup(const_cast("CS"), &obj3)->isNull()) { +#endif #if defined(POPPLER_EVEN_NEWER_NEW_COLOR_SPACE_API) blendingColorSpace = GfxColorSpace::parse(NULL, &obj3, NULL, NULL); #elif defined(POPPLER_EVEN_NEWER_COLOR_SPACE_API) @@ -3015,19 +3495,32 @@ void PdfParser::doForm(Object *str) { blendingColorSpace = GfxColorSpace::parse(&obj3, NULL); #endif } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj3 = obj1.dictLookup(const_cast("I"))).isBool()) { +#else obj3.free(); if (obj1.dictLookup(const_cast("I"), &obj3)->isBool()) { +#endif isolated = obj3.getBool(); } +#if defined(POPPLER_NEW_OBJECT_API) + if ((obj3 = obj1.dictLookup(const_cast("K"))).isBool()) { +#else obj3.free(); if (obj1.dictLookup(const_cast("K"), &obj3)->isBool()) { +#endif knockout = obj3.getBool(); } +#if defined(POPPLER_NEW_OBJECT_API) + } + } +#else obj3.free(); } obj2.free(); } obj1.free(); +#endif // draw it ++formDepth; @@ -3038,7 +3531,9 @@ void PdfParser::doForm(Object *str) { if (blendingColorSpace) { delete blendingColorSpace; } +#if !defined(POPPLER_NEW_OBJECT_API) resObj.free(); +#endif } void PdfParser::doForm1(Object *str, Dict *resDict, double *matrix, double *bbox, @@ -3166,35 +3661,61 @@ Stream *PdfParser::buildImageStream() { Stream *str; // build dictionary +#if defined(POPPLER_NEW_OBJECT_API) + dict = Object(new Dict(xref)); + obj = parser->getObj(); +#else dict.initDict(xref); parser->getObj(&obj); +#endif while (!obj.isCmd(const_cast("ID")) && !obj.isEOF()) { if (!obj.isName()) { error(errSyntaxError, getPos(), "Inline image dictionary key must be a name object"); +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif } else { key = copyString(obj.getName()); +#if defined(POPPLER_NEW_OBJECT_API) + obj = parser->getObj(); +#else obj.free(); parser->getObj(&obj); +#endif if (obj.isEOF() || obj.isError()) { gfree(key); break; } +#if defined(POPPLER_NEW_OBJECT_API) + dict.dictAdd(key, std::move(obj)); + } + obj = parser->getObj(); +#else dict.dictAdd(key, &obj); } parser->getObj(&obj); +#endif } if (obj.isEOF()) { error(errSyntaxError, getPos(), "End of file in inline image"); +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); dict.free(); +#endif return NULL; } +#if !defined(POPPLER_NEW_OBJECT_API) obj.free(); +#endif // make stream +#if defined(POPPLER_NEW_OBJECT_API) + str = new EmbedStream(parser->getStream(), dict.copy(), gFalse, 0); + str = str->addFilters(dict.getDict()); +#else str = new EmbedStream(parser->getStream(), &dict, gFalse, 0); str = str->addFilters(&dict); +#endif return str; } -- cgit v1.2.3 From 9d530753f37f1b7ccfdb342aadb0eb6ac8f34a0f Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 7 Sep 2017 21:13:09 +0200 Subject: CI/AppVeyor: now compiles with poppler 0.59 --- buildtools/appveyor.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh index 41182405b..0457b98d3 100644 --- a/buildtools/appveyor.sh +++ b/buildtools/appveyor.sh @@ -31,10 +31,6 @@ export CCACHE_DIR=$(cygpath -a ccache/master) ccache --max-size=200M ccache --set-config=sloppiness=include_file_ctime,include_file_mtime -# temporarily use old poppler (versions >= 0.58 need compatibilty fixes due to changed "Object" API) -wget -nv http://repo.msys2.org/mingw/$MSYSTEM_CARCH/$MINGW_PACKAGE_PREFIX-poppler-0.55.0-1-any.pkg.tar.xz \ - && pacman -U $MINGW_PACKAGE_PREFIX-poppler-0.55.0-1-any.pkg.tar.xz --noconfirm - ### build / test -- cgit v1.2.3 From 1f0a20e9f4270de3aff4b9ce0484e1d26c6d58da Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Fri, 8 Sep 2017 22:28:13 +0200 Subject: Fix for bug: 1715433 :: Clone original LPE can no longer be used to fill a powerstroke path --- src/live_effects/lpe-fill-between-many.cpp | 1 + src/live_effects/parameter/originalpath.cpp | 7 +++++- src/live_effects/parameter/originalpath.h | 2 ++ src/live_effects/parameter/originalpatharray.cpp | 28 +++++++++++++++++++++++- src/live_effects/parameter/originalpatharray.h | 5 +++++ src/live_effects/parameter/path.cpp | 7 +++++- src/live_effects/parameter/path.h | 2 ++ 7 files changed, 49 insertions(+), 3 deletions(-) diff --git a/src/live_effects/lpe-fill-between-many.cpp b/src/live_effects/lpe-fill-between-many.cpp index 40fa91c68..ded8819fc 100644 --- a/src/live_effects/lpe-fill-between-many.cpp +++ b/src/live_effects/lpe-fill-between-many.cpp @@ -31,6 +31,7 @@ LPEFillBetweenMany::LPEFillBetweenMany(LivePathEffectObject *lpeobject) : registerParameter(&join); registerParameter(&close); transformmultiply = false; + linked_paths.allowOnlyBsplineSpiro(true); } LPEFillBetweenMany::~LPEFillBetweenMany() diff --git a/src/live_effects/parameter/originalpath.cpp b/src/live_effects/parameter/originalpath.cpp index 62483d7fb..3f833d2ac 100644 --- a/src/live_effects/parameter/originalpath.cpp +++ b/src/live_effects/parameter/originalpath.cpp @@ -36,6 +36,7 @@ OriginalPathParam::OriginalPathParam( const Glib::ustring& label, const Glib::us : PathParam(label, tip, key, wr, effect, "") { oncanvas_editable = false; + _from_original_d = false; } OriginalPathParam::~OriginalPathParam() @@ -90,7 +91,11 @@ OriginalPathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags* { SPCurve *curve = NULL; if (SP_IS_SHAPE(linked_obj)) { - curve = SP_SHAPE(linked_obj)->getCurve(); + if (_from_original_d) { + curve = SP_SHAPE(linked_obj)->getCurveBeforeLPE(); + } else { + curve = SP_SHAPE(linked_obj)->getCurve(); + } } if (SP_IS_TEXT(linked_obj)) { curve = SP_TEXT(linked_obj)->getNormalizedBpath(); diff --git a/src/live_effects/parameter/originalpath.h b/src/live_effects/parameter/originalpath.h index b3feec41f..ec80d1026 100644 --- a/src/live_effects/parameter/originalpath.h +++ b/src/live_effects/parameter/originalpath.h @@ -32,6 +32,7 @@ public: virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; /** Disable the canvas indicators of parent class by overriding this method */ virtual void addCanvasIndicators(SPLPEItem const* /*lpeitem*/, std::vector & /*hp_vec*/) {}; + void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; }; protected: virtual void linked_modified_callback(SPObject *linked_obj, guint flags); @@ -40,6 +41,7 @@ protected: void on_select_original_button_click(); private: + bool _from_original_d; OriginalPathParam(const OriginalPathParam&); OriginalPathParam& operator=(const OriginalPathParam&); }; diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 92859de05..2513a0d5e 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -9,6 +9,10 @@ #endif #include "live_effects/parameter/originalpatharray.h" +#include "live_effects/lpe-spiro.h" +#include "live_effects/lpe-bspline.h" +#include "live_effects/lpeobject.h" +#include "live_effects/lpeobject-reference.h" #include #include @@ -100,6 +104,8 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, //_scroller.set_shadow_type(Gtk::SHADOW_IN); oncanvas_editable = true; + _from_original_d = false; + _allow_only_bspline_spiro = false; } @@ -389,7 +395,27 @@ void OriginalPathArrayParam::setPathVector(SPObject *linked_obj, guint /*flags*/ } SPCurve *curve = NULL; if (SP_IS_SHAPE(linked_obj)) { - curve = SP_SHAPE(linked_obj)->getCurve(); + SPLPEItem * lpe_item = SP_LPE_ITEM(linked_obj); + if (_from_original_d) { + curve = SP_SHAPE(linked_obj)->getCurveBeforeLPE(); + } else if (_allow_only_bspline_spiro && lpe_item && lpe_item->hasPathEffect()){ + curve = SP_SHAPE(linked_obj)->getCurveBeforeLPE(); + PathEffectList lpelist = lpe_item->getEffectList(); + PathEffectList::iterator i; + for (i = lpelist.begin(); i != lpelist.end(); ++i) { + LivePathEffectObject *lpeobj = (*i)->lpeobject; + if (lpeobj) { + Inkscape::LivePathEffect::Effect *lpe = lpeobj->get_lpe(); + if (dynamic_cast(lpe)) { + LivePathEffect::sp_bspline_do_effect(curve, 0); + } else if (dynamic_cast(lpe)) { + LivePathEffect::sp_spiro_do_effect(curve); + } + } + } + } else { + curve = SP_SHAPE(linked_obj)->getCurve(); + } } if (SP_IS_TEXT(linked_obj)) { curve = SP_TEXT(linked_obj)->getNormalizedBpath(); diff --git a/src/live_effects/parameter/originalpatharray.h b/src/live_effects/parameter/originalpatharray.h index fe9371644..eb1114c3f 100644 --- a/src/live_effects/parameter/originalpatharray.h +++ b/src/live_effects/parameter/originalpatharray.h @@ -70,6 +70,9 @@ public: virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; /** Disable the canvas indicators of parent class by overriding this method */ virtual void addCanvasIndicators(SPLPEItem const* /*lpeitem*/, std::vector & /*hp_vec*/) {}; + void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; }; + void allowOnlyBsplineSpiro(bool allow_only_bspline_spiro){ _allow_only_bspline_spiro = allow_only_bspline_spiro; }; + std::vector _vector; protected: @@ -99,6 +102,8 @@ protected: void on_reverse_toggled(const Glib::ustring& path); private: + bool _from_original_d; + bool _allow_only_bspline_spiro; OriginalPathArrayParam(const OriginalPathArrayParam&); OriginalPathArrayParam& operator=(const OriginalPathArrayParam&); }; diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index ec011b855..470535314 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -68,6 +68,7 @@ PathParam::PathParam( const Glib::ustring& label, const Glib::ustring& tip, defvalue = g_strdup(default_value); param_readSVGValue(defvalue); oncanvas_editable = true; + _from_original_d = false; _edit_button = true; _copy_button = true; _paste_button = true; @@ -444,7 +445,11 @@ PathParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) { SPCurve *curve = NULL; if (SP_IS_SHAPE(linked_obj)) { - curve = SP_SHAPE(linked_obj)->getCurve(); + if (_from_original_d) { + curve = SP_SHAPE(linked_obj)->getCurveBeforeLPE(); + } else { + curve = SP_SHAPE(linked_obj)->getCurve(); + } } if (SP_IS_TEXT(linked_obj)) { curve = SP_TEXT(linked_obj)->getNormalizedBpath(); diff --git a/src/live_effects/parameter/path.h b/src/live_effects/parameter/path.h index ff5e4f1b8..c8efb11e0 100644 --- a/src/live_effects/parameter/path.h +++ b/src/live_effects/parameter/path.h @@ -50,6 +50,7 @@ public: virtual void addCanvasIndicators(SPLPEItem const* lpeitem, std::vector &hp_vec); virtual void param_transform_multiply(Geom::Affine const& /*postmul*/, bool /*set*/); + void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; }; sigc::signal signal_path_pasted; sigc::signal signal_path_changed; @@ -91,6 +92,7 @@ protected: gchar * defvalue; private: + bool _from_original_d; bool _edit_button; bool _copy_button; bool _paste_button; -- cgit v1.2.3 From 30faf29165b1bcd936e9e0ca3ecc8b4bad4c94d2 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 9 Sep 2017 03:54:39 +0200 Subject: This commit is based on a coment on bug #1670644. And allow to fill the fill between many LPE widget that allow attach all paths on the clipboard instead only one Also added to this widget the option visible, to allow work with multiples paths wigout getting full cracy --- src/live_effects/lpe-fill-between-many.cpp | 15 ++- src/live_effects/lpe-fill-between-many.h | 2 + src/live_effects/parameter/originalpatharray.cpp | 134 ++++++++++++++--------- src/live_effects/parameter/originalpatharray.h | 28 +++-- src/selection-chemistry.cpp | 1 + src/ui/clipboard.cpp | 49 +++++++++ src/ui/clipboard.h | 1 + 7 files changed, 165 insertions(+), 65 deletions(-) diff --git a/src/live_effects/lpe-fill-between-many.cpp b/src/live_effects/lpe-fill-between-many.cpp index ded8819fc..8b5cb9b95 100644 --- a/src/live_effects/lpe-fill-between-many.cpp +++ b/src/live_effects/lpe-fill-between-many.cpp @@ -20,12 +20,16 @@ namespace LivePathEffect { LPEFillBetweenMany::LPEFillBetweenMany(LivePathEffectObject *lpeobject) : Effect(lpeobject), linked_paths(_("Linked path:"), _("Paths from which to take the original path data"), "linkedpaths", &wr, this), + original_visible(_("Original path visible"), _("Original path visibled"), "original_visible", &wr, this, true), + original_reversed(_("Original path reversed"), _("Reverse original path"), "original_reversed", &wr, this, false), fuse(_("Fuse coincident points"), _("Fuse coincident points"), "fuse", &wr, this, false), allow_transforms(_("Allow transforms"), _("Allow transforms"), "allow_transforms", &wr, this, false), join(_("Join subpaths"), _("Join subpaths"), "join", &wr, this, true), close(_("Close"), _("Close path"), "close", &wr, this, true) { registerParameter(&linked_paths); + registerParameter(&original_visible); + registerParameter(&original_reversed); registerParameter(&fuse); registerParameter(&allow_transforms); registerParameter(&join); @@ -43,9 +47,16 @@ void LPEFillBetweenMany::doEffect (SPCurve * curve) { Geom::PathVector res_pathv; SPItem * firstObj = NULL; - for (std::vector::iterator iter = linked_paths._vector.begin(); iter != linked_paths._vector.end(); ++iter) { + if (original_visible) { + Geom::PathVector original = curve->get_pathvector(); + if (original_reversed) { + original = original.reversed(); + } + res_pathv = original; + } + for (std::vector::iterator iter = linked_paths._vector.begin(); iter != linked_paths._vector.end(); ++iter) { SPObject *obj; - if ((*iter)->ref.isAttached() && (obj = (*iter)->ref.getObject()) && SP_IS_ITEM(obj) && !(*iter)->_pathvector.empty()) { + if ((*iter)->ref.isAttached() && (obj = (*iter)->ref.getObject()) && SP_IS_ITEM(obj) && !(*iter)->_pathvector.empty() && (*iter)->visibled) { Geom::Path linked_path; if ((*iter)->reversed) { linked_path = (*iter)->_pathvector.front().reversed(); diff --git a/src/live_effects/lpe-fill-between-many.h b/src/live_effects/lpe-fill-between-many.h index fe824e936..5bea53aba 100644 --- a/src/live_effects/lpe-fill-between-many.h +++ b/src/live_effects/lpe-fill-between-many.h @@ -24,6 +24,8 @@ public: private: OriginalPathArrayParam linked_paths; + BoolParam original_visible; + BoolParam original_reversed; BoolParam fuse; BoolParam allow_transforms; BoolParam join; diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 2513a0d5e..13bd23634 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -54,12 +54,14 @@ public: add(_colObject); add(_colLabel); add(_colReverse); + add(_colVisible); } virtual ~ModelColumns() {} - Gtk::TreeModelColumn _colObject; + Gtk::TreeModelColumn _colObject; Gtk::TreeModelColumn _colLabel; Gtk::TreeModelColumn _colReverse; + Gtk::TreeModelColumn _colVisible; }; OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, @@ -72,6 +74,7 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, _tree(), _text_renderer(), _toggle_renderer(), + _toggle_visible(), _scroller() { _model = new ModelColumns(); @@ -81,13 +84,6 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, _tree.set_reorderable(true); _tree.enable_model_drag_dest (Gdk::ACTION_MOVE); - _text_renderer = manage(new Gtk::CellRendererText()); - int nameColNum = _tree.append_column(_("Name"), *_text_renderer) - 1; - _name_column = _tree.get_column(nameColNum); - _name_column->add_attribute(_text_renderer->property_text(), _model->_colLabel); - - _tree.set_expander_column( *_tree.get_column(nameColNum) ); - _tree.set_search_column(_model->_colLabel); Gtk::CellRendererToggle * _toggle_renderer = manage(new Gtk::CellRendererToggle()); int toggleColNum = _tree.append_column(_("Reverse"), *_toggle_renderer) - 1; @@ -96,6 +92,22 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, _toggle_renderer->signal_toggled().connect(sigc::mem_fun(*this, &OriginalPathArrayParam::on_reverse_toggled)); col->add_attribute(_toggle_renderer->property_active(), _model->_colReverse); + + Gtk::CellRendererToggle * _toggle_visible = manage(new Gtk::CellRendererToggle()); + int toggleColNum2 = _tree.append_column(_("Visible"), *_toggle_visible) - 1; + Gtk::TreeViewColumn* col2 = _tree.get_column(toggleColNum2); + _toggle_visible->set_activatable(true); + _toggle_visible->signal_toggled().connect(sigc::mem_fun(*this, &OriginalPathArrayParam::on_visible_toggled)); + col2->add_attribute(_toggle_visible->property_active(), _model->_colVisible); + + _text_renderer = manage(new Gtk::CellRendererText()); + int nameColNum = _tree.append_column(_("Name"), *_text_renderer) - 1; + _name_column = _tree.get_column(nameColNum); + _name_column->add_attribute(_text_renderer->property_text(), _model->_colLabel); + + _tree.set_expander_column( *_tree.get_column(nameColNum) ); + _tree.set_search_column(_model->_colLabel); + //quick little hack -- newer versions of gtk gave the item zero space allotment _scroller.set_size_request(-1, 120); @@ -112,7 +124,7 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, OriginalPathArrayParam::~OriginalPathArrayParam() { while (!_vector.empty()) { - PathAndDirection *w = _vector.back(); + PathAndDirectionAndVisible *w = _vector.back(); _vector.pop_back(); unlink(w); delete w; @@ -124,7 +136,7 @@ void OriginalPathArrayParam::on_reverse_toggled(const Glib::ustring& path) { Gtk::TreeModel::iterator iter = _store->get_iter(path); Gtk::TreeModel::Row row = *iter; - PathAndDirection *w = row[_model->_colObject]; + PathAndDirectionAndVisible *w = row[_model->_colObject]; row[_model->_colReverse] = !row[_model->_colReverse]; w->reversed = row[_model->_colReverse]; @@ -135,6 +147,21 @@ void OriginalPathArrayParam::on_reverse_toggled(const Glib::ustring& path) _("Link path parameter to path")); } +void OriginalPathArrayParam::on_visible_toggled(const Glib::ustring& path) +{ + Gtk::TreeModel::iterator iter = _store->get_iter(path); + Gtk::TreeModel::Row row = *iter; + PathAndDirectionAndVisible *w = row[_model->_colObject]; + row[_model->_colVisible] = !row[_model->_colVisible]; + w->visibled = row[_model->_colVisible]; + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Toggle path parameter to path")); +} + void OriginalPathArrayParam::param_set_default() { @@ -223,8 +250,8 @@ void OriginalPathArrayParam::on_up_button_click() Gtk::TreeModel::Row row = *iter; int i = -1; - std::vector::iterator piter = _vector.begin(); - for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); piter = iter, i++, ++iter) { + std::vector::iterator piter = _vector.begin(); + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); piter = iter, i++, ++iter) { if (*iter == row[_model->_colObject]) { _vector.erase(iter); _vector.insert(piter, row[_model->_colObject]); @@ -250,9 +277,9 @@ void OriginalPathArrayParam::on_down_button_click() Gtk::TreeModel::Row row = *iter; int i = 0; - for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); i++, ++iter) { + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); i++, ++iter) { if (*iter == row[_model->_colObject]) { - std::vector::iterator niter = _vector.erase(iter); + std::vector::iterator niter = _vector.erase(iter); if (niter != _vector.end()) { ++niter; i++; @@ -294,37 +321,40 @@ void OriginalPathArrayParam::on_link_button_click() { Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get(); - Glib::ustring pathid = cm->getShapeOrTextObjectId(SP_ACTIVE_DESKTOP); + std::vector pathsid = cm->getElementsOfType(SP_ACTIVE_DESKTOP, "svg:path"); - if (pathid == "") { + if (pathsid.empty()) { return; } - // add '#' at start to make it an uri. - pathid.insert(pathid.begin(), '#'); - Inkscape::SVGOStringStream os; - bool foundOne = false; - for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + for (auto i=pathsid.begin();i!=pathsid.end();++i) { + Glib::ustring pathid = *i; + // add '#' at start to make it an uri. + pathid.insert(pathid.begin(), '#'); + bool foundOne = false; + for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + if (foundOne) { + os << "|"; + } else { + foundOne = true; + } + os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0") << "," << ((*iter)->visibled ? "1" : "0"); + } + if (foundOne) { os << "|"; - } else { - foundOne = true; } - os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0"); - } - - if (foundOne) { - os << "|"; + os << pathid.c_str() << ",0"; + if (*i != *(--pathsid.end())) { + os << "|"; + } } - - os << pathid.c_str() << ",0"; - param_write_to_repr(os.str().c_str()); DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Link path parameter to path")); } -void OriginalPathArrayParam::unlink(PathAndDirection* to) +void OriginalPathArrayParam::unlink(PathAndDirectionAndVisible* to) { to->linked_modified_connection.disconnect(); to->linked_delete_connection.disconnect(); @@ -336,12 +366,12 @@ void OriginalPathArrayParam::unlink(PathAndDirection* to) } } -void OriginalPathArrayParam::remove_link(PathAndDirection* to) +void OriginalPathArrayParam::remove_link(PathAndDirectionAndVisible* to) { unlink(to); - for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { if (*iter == to) { - PathAndDirection *w = *iter; + PathAndDirectionAndVisible *w = *iter; _vector.erase(iter); delete w; return; @@ -349,7 +379,7 @@ void OriginalPathArrayParam::remove_link(PathAndDirection* to) } } -void OriginalPathArrayParam::linked_delete(SPObject */*deleted*/, PathAndDirection* /*to*/) +void OriginalPathArrayParam::linked_delete(SPObject */*deleted*/, PathAndDirectionAndVisible* /*to*/) { //remove_link(to); @@ -358,7 +388,7 @@ void OriginalPathArrayParam::linked_delete(SPObject */*deleted*/, PathAndDirecti g_free(full); } -bool OriginalPathArrayParam::_updateLink(const Gtk::TreeIter& iter, PathAndDirection* pd) +bool OriginalPathArrayParam::_updateLink(const Gtk::TreeIter& iter, PathAndDirectionAndVisible* pd) { Gtk::TreeModel::Row row = *iter; if (row[_model->_colObject] == pd) { @@ -369,26 +399,26 @@ bool OriginalPathArrayParam::_updateLink(const Gtk::TreeIter& iter, PathAndDirec return false; } -void OriginalPathArrayParam::linked_changed(SPObject */*old_obj*/, SPObject *new_obj, PathAndDirection* to) +void OriginalPathArrayParam::linked_changed(SPObject */*old_obj*/, SPObject *new_obj, PathAndDirectionAndVisible* to) { to->linked_delete_connection.disconnect(); to->linked_modified_connection.disconnect(); to->linked_transformed_connection.disconnect(); if (new_obj && SP_IS_ITEM(new_obj)) { - to->linked_delete_connection = new_obj->connectDelete(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_delete), to)); - to->linked_modified_connection = new_obj->connectModified(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_modified), to)); - to->linked_transformed_connection = SP_ITEM(new_obj)->connectTransformed(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_transformed), to)); + to->linked_delete_connection = new_obj->connectDelete(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_delete), to)); + to->linked_modified_connection = new_obj->connectModified(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_modified), to)); + to->linked_transformed_connection = SP_ITEM(new_obj)->connectTransformed(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_transformed), to)); linked_modified(new_obj, SP_OBJECT_MODIFIED_FLAG, to); } else { to->_pathvector = Geom::PathVector(); SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); - _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::_updateLink), to)); + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::_updateLink), to)); } } -void OriginalPathArrayParam::setPathVector(SPObject *linked_obj, guint /*flags*/, PathAndDirection* to) +void OriginalPathArrayParam::setPathVector(SPObject *linked_obj, guint /*flags*/, PathAndDirectionAndVisible* to) { if (!to) { return; @@ -430,21 +460,21 @@ void OriginalPathArrayParam::setPathVector(SPObject *linked_obj, guint /*flags*/ } } -void OriginalPathArrayParam::linked_modified(SPObject *linked_obj, guint flags, PathAndDirection* to) +void OriginalPathArrayParam::linked_modified(SPObject *linked_obj, guint flags, PathAndDirectionAndVisible* to) { if (!to) { return; } setPathVector(linked_obj, flags, to); SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); - _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::_updateLink), to)); + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::_updateLink), to)); } bool OriginalPathArrayParam::param_readSVGValue(const gchar* strvalue) { if (strvalue) { while (!_vector.empty()) { - PathAndDirection *w = _vector.back(); + PathAndDirectionAndVisible *w = _vector.back(); unlink(w); _vector.pop_back(); delete w; @@ -455,11 +485,12 @@ bool OriginalPathArrayParam::param_readSVGValue(const gchar* strvalue) for (gchar ** iter = strarray; *iter != NULL; iter++) { if ((*iter)[0] == '#') { gchar ** substrarray = g_strsplit(*iter, ",", 0); - PathAndDirection* w = new PathAndDirection((SPObject *)param_effect->getLPEObj()); + PathAndDirectionAndVisible* w = new PathAndDirectionAndVisible((SPObject *)param_effect->getLPEObj()); w->href = g_strdup(*substrarray); w->reversed = *(substrarray+1) != NULL && (*(substrarray+1))[0] == '1'; - - w->linked_changed_connection = w->ref.changedSignal().connect(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_changed), w)); + //Like this to make backwards compatible, new value added in 0.93 + w->visibled = *(substrarray+2) == NULL || (*(substrarray+2))[0] == '1'; + w->linked_changed_connection = w->ref.changedSignal().connect(sigc::bind(sigc::mem_fun(*this, &OriginalPathArrayParam::linked_changed), w)); w->ref.attach(URI(w->href)); _vector.push_back(w); @@ -471,6 +502,7 @@ bool OriginalPathArrayParam::param_readSVGValue(const gchar* strvalue) row[_model->_colObject] = w; row[_model->_colLabel] = obj ? ( obj->label() ? obj->label() : obj->getId() ) : w->href; row[_model->_colReverse] = w->reversed; + row[_model->_colVisible] = w->visibled; g_strfreev (substrarray); } } @@ -484,13 +516,13 @@ gchar * OriginalPathArrayParam::param_getSVGValue() const { Inkscape::SVGOStringStream os; bool foundOne = false; - for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { if (foundOne) { os << "|"; } else { foundOne = true; } - os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0"); + os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0") << "," << ((*iter)->visibled ? "1" : "0"); } gchar * str = g_strdup(os.str().c_str()); return str; diff --git a/src/live_effects/parameter/originalpatharray.h b/src/live_effects/parameter/originalpatharray.h index eb1114c3f..51810a5cf 100644 --- a/src/live_effects/parameter/originalpatharray.h +++ b/src/live_effects/parameter/originalpatharray.h @@ -28,13 +28,14 @@ namespace Inkscape { namespace LivePathEffect { -class PathAndDirection { +class PathAndDirectionAndVisible { public: - PathAndDirection(SPObject *owner) + PathAndDirectionAndVisible(SPObject *owner) : href(NULL), ref(owner), _pathvector(Geom::PathVector()), - reversed(false) + reversed(false), + visibled(true) { } @@ -42,6 +43,7 @@ public: URIReference ref; Geom::PathVector _pathvector; bool reversed; + bool visibled; sigc::connection linked_changed_connection; sigc::connection linked_delete_connection; @@ -73,25 +75,26 @@ public: void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; }; void allowOnlyBsplineSpiro(bool allow_only_bspline_spiro){ _allow_only_bspline_spiro = allow_only_bspline_spiro; }; - std::vector _vector; + std::vector _vector; protected: - bool _updateLink(const Gtk::TreeIter& iter, PathAndDirection* pd); + bool _updateLink(const Gtk::TreeIter& iter, PathAndDirectionAndVisible* pd); bool _selectIndex(const Gtk::TreeIter& iter, int* i); - void unlink(PathAndDirection* to); - void remove_link(PathAndDirection* to); - void setPathVector(SPObject *linked_obj, guint flags, PathAndDirection* to); + void unlink(PathAndDirectionAndVisible* to); + void remove_link(PathAndDirectionAndVisible* to); + void setPathVector(SPObject *linked_obj, guint flags, PathAndDirectionAndVisible* to); - void linked_changed(SPObject *old_obj, SPObject *new_obj, PathAndDirection* to); - void linked_modified(SPObject *linked_obj, guint flags, PathAndDirection* to); - void linked_transformed(Geom::Affine const *, SPItem *, PathAndDirection*) {} - void linked_delete(SPObject *deleted, PathAndDirection* to); + void linked_changed(SPObject *old_obj, SPObject *new_obj, PathAndDirectionAndVisible* to); + void linked_modified(SPObject *linked_obj, guint flags, PathAndDirectionAndVisible* to); + void linked_transformed(Geom::Affine const *, SPItem *, PathAndDirectionAndVisible*) {} + void linked_delete(SPObject *deleted, PathAndDirectionAndVisible* to); ModelColumns *_model; Glib::RefPtr _store; Gtk::TreeView _tree; Gtk::CellRendererText *_text_renderer; Gtk::CellRendererToggle *_toggle_renderer; + Gtk::CellRendererToggle *_toggle_visible; Gtk::TreeView::Column *_name_column; Gtk::ScrolledWindow _scroller; @@ -100,6 +103,7 @@ protected: void on_up_button_click(); void on_down_button_click(); void on_reverse_toggled(const Glib::ustring& path); + void on_visible_toggled(const Glib::ustring& path); private: bool _from_original_d; diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index bac924980..f4e37d7e9 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2942,6 +2942,7 @@ void ObjectSet::cloneOriginalPathLPE() { lpe_repr->setAttribute("effect", "fill_between_many"); lpe_repr->setAttribute("linkedpaths", os.str()); + lpe_repr->setAttribute("retain_original", "false"); document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute } std::string lpe_id_href = std::string("#") + lpe_repr->attribute("id"); diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index 3cc8ac098..202c8d922 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -105,6 +105,7 @@ public: virtual bool pastePathEffect(ObjectSet *set); virtual Glib::ustring getPathParameter(SPDesktop* desktop); virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop); + virtual std::vector getElementsOfType(SPDesktop *desktop, gchar const *type); virtual const gchar *getFirstObjectID(); ClipboardManagerImpl(); @@ -652,6 +653,54 @@ Glib::ustring ClipboardManagerImpl::getShapeOrTextObjectId(SPDesktop *desktop) return svgd; } +/** + * Get all objects id from the clipboard. + * @return A vector containing all IDs or empty if no shape or text item was found. + * type. Set to "*" to retrive all elements of the types vector inside, feel free to populate more + */ +std::vector ClipboardManagerImpl::getElementsOfType(SPDesktop *desktop, gchar const *type) +{ + std::vector result; + SPDocument *tempdoc = _retrieveClipboard(); // any target will do here + if ( tempdoc == NULL ) { + _userWarn(desktop, _("Nothing on the clipboard.")); + return result; + } + Inkscape::XML::Node *root = tempdoc->getReprRoot(); + + // 1293979: strip out the defs of the document + root->removeChild(tempdoc->getDefs()->getRepr()); + std::vector reprs; + if (strcmp(type, "*") == 0){ + //TODO:Fill vector with all posible elements + std::vector types; + types.push_back((Glib::ustring)"svg:path"); + types.push_back((Glib::ustring)"svg:circle"); + types.push_back((Glib::ustring)"svg:rect"); + types.push_back((Glib::ustring)"svg:ellipse"); + types.push_back((Glib::ustring)"svg:text"); + types.push_back((Glib::ustring)"svg:g"); + types.push_back((Glib::ustring)"svg:image"); + for (auto i=types.begin();i!=types.end();++i) { + Glib::ustring type_elem = *i; + std::vector reprs_found = sp_repr_lookup_name_many(root, type_elem.c_str(), -1); // unlimited search depth + reprs.insert(reprs.end(), reprs_found.begin(), reprs_found.end()); + } + } else { + reprs = sp_repr_lookup_name_many(root, type, -1); // unlimited search depth + } + for (auto i=reprs.begin();i!=reprs.end();++i) { + Inkscape::XML::Node const * node = *i; + result.push_back(node->attribute("id")); + } + if ( result.empty() ) { + _userWarn(desktop, ((Glib::ustring)_("Clipboard does not contain any.") + (Glib::ustring)type).c_str()); + tempdoc->doUnref(); + return result; + } + return result; +} + /** * Iterate over a list of items and copy them to the clipboard. */ diff --git a/src/ui/clipboard.h b/src/ui/clipboard.h index 32a49867c..12dbd51df 100644 --- a/src/ui/clipboard.h +++ b/src/ui/clipboard.h @@ -51,6 +51,7 @@ public: virtual bool pastePathEffect(ObjectSet *set) = 0; virtual Glib::ustring getPathParameter(SPDesktop* desktop) = 0; virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop) = 0; + virtual std::vector getElementsOfType(SPDesktop *desktop, gchar const *type = "*") = 0; virtual const gchar *getFirstObjectID() = 0; static ClipboardManager *get(); -- cgit v1.2.3 From 1c31310676b12bd4fd5e477192bf7bd9fffabf83 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 9 Sep 2017 06:28:03 +0200 Subject: Fix a bug when creating a cloned LPE with fill between many --- src/object-set.h | 2 +- src/selection-chemistry.cpp | 8 +++++--- src/ui/dialog/livepatheffect-editor.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/object-set.h b/src/object-set.h index 82d2988c7..c5e190136 100644 --- a/src/object-set.h +++ b/src/object-set.h @@ -370,7 +370,7 @@ public: bool unlinkRecursive(const bool skip_undo = false); void relink(); void cloneOriginal(); - void cloneOriginalPathLPE(); + void cloneOriginalPathLPE(bool allow_transforms = false); Inkscape::XML::Node* group(); void popFromGroup(); void ungroup(); diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index f4e37d7e9..f23a49500 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2917,7 +2917,7 @@ void ObjectSet::cloneOriginal() /** * This creates a new path, applies the Original Path LPE, and has it refer to the selection. */ -void ObjectSet::cloneOriginalPathLPE() +void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) { Inkscape::SVGOStringStream os; @@ -2930,7 +2930,7 @@ void ObjectSet::cloneOriginalPathLPE() } else { firstItem = SP_ITEM(*i); } - os << '#' << SP_ITEM(*i)->getId() << ",0"; + os << '#' << SP_ITEM(*i)->getId() << ",0,1"; } } if (firstItem) { @@ -2942,7 +2942,9 @@ void ObjectSet::cloneOriginalPathLPE() { lpe_repr->setAttribute("effect", "fill_between_many"); lpe_repr->setAttribute("linkedpaths", os.str()); - lpe_repr->setAttribute("retain_original", "false"); + lpe_repr->setAttribute("original_visible", "false"); + gchar const *allow_transforms_str = allow_transforms ? "true" : "false"; + lpe_repr->setAttribute("allow_transforms", allow_transforms_str); document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute } std::string lpe_id_href = std::string("#") + lpe_repr->attribute("id"); diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp index 98789f7b2..02f76dbbb 100644 --- a/src/ui/dialog/livepatheffect-editor.cpp +++ b/src/ui/dialog/livepatheffect-editor.cpp @@ -473,7 +473,7 @@ LivePathEffectEditor::onAdd() item = NULL; // run sp_selection_clone_original_path_lpe - sel->cloneOriginalPathLPE(); + sel->cloneOriginalPathLPE(true); SPItem *new_item = sel->singleItem(); // Check that the cloning was successful. We don't want to change the ID of the original referenced path! -- cgit v1.2.3 From 4610a0f7f704afd0daf15350b40e0851881a2c78 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 13 Sep 2017 10:40:43 +0200 Subject: Improve rendering of vertical text with non-spacing marks in upright orientation. --- src/libnrtype/Layout-TNG-Compute.cpp | 61 +++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 1bc035856..38c3c48c4 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -398,17 +398,28 @@ bool Layout::Calculator::_measureUnbrokenSpan(ParagraphInfo const ¶, double char_width = 0.0; while (span->end_glyph_index < (unsigned)span->end.iter_span->glyph_string->num_glyphs && span->end.iter_span->glyph_string->log_clusters[span->end_glyph_index] <= (int)span->end.char_byte) { + + PangoGlyphInfo *info = &(span->end.iter_span->glyph_string->glyphs[span->end_glyph_index]); + // double glyph_width = font_size_multiplier * info->geometry.width; + // double glyph_x_offset = font_size_multiplier * info->geometry.x_offset; + // double glyph_y_offset = font_size_multiplier * info->geometry.y_offset; + // std::cout << " glyph: " << info->glyph << " width: " << glyph_width << " x_offset: " << glyph_x_offset << " y_offset: " << glyph_y_offset << std::endl; + if (_block_progression == LEFT_TO_RIGHT || _block_progression == RIGHT_TO_LEFT) { // Vertical text if( text_source->style->text_orientation.computed == SP_CSS_TEXT_ORIENTATION_SIDEWAYS || (text_source->style->text_orientation.computed == SP_CSS_TEXT_ORIENTATION_MIXED && - para.pango_items[span->end.iter_span->pango_item_index].item->analysis.gravity == 0) ) { + para.pango_items[span->end.iter_span->pango_item_index].item->analysis.gravity == PANGO_GRAVITY_SOUTH) ) { // Sideways orientation - char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(span->end.iter_span->glyph_string->glyphs[span->end_glyph_index].glyph, false); + char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(info->glyph, false); } else { // Upright orientation - char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(span->end.iter_span->glyph_string->glyphs[span->end_glyph_index].glyph, true); + guint32 c = *Glib::ustring::const_iterator(span->end.iter_span->input_stream_first_character.base() + span->end.char_byte); + if (g_unichar_type (c) != G_UNICODE_NON_SPACING_MARK) { + // Non-spacing marks should not contribute to width. Fonts may not report the correct advance, especially if the 'vmtx' table is missing. + char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(info->glyph, true); + } } } else { // Horizontal text @@ -416,6 +427,7 @@ bool Layout::Calculator::_measureUnbrokenSpan(ParagraphInfo const ¶, } span->end_glyph_index++; } + if (char_attributes.is_cursor_position) char_width += text_source->style->letter_spacing.computed * _flow.getTextLengthMultiplierDue(); if (char_attributes.is_white) @@ -434,6 +446,7 @@ bool Layout::Calculator::_measureUnbrokenSpan(ParagraphInfo const ¶, if (is_soft_hyphen) soft_hyphen_glyph_width = char_width; + // Go to next character (resets end.char_byte to zero if at end) span->end.increment(); // Width should not include letter_spacing (or word_spacing) after last letter at end of line. @@ -662,8 +675,8 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, new_span.block_progression = _block_progression; new_span.text_orientation = unbroken_span.text_orientation; if ((_flow._input_stream[unbroken_span.input_index]->Type() == TEXT_SOURCE) && (new_span.font = para.pango_items[unbroken_span.pango_item_index].font)) - { - new_span.font->Ref(); + { + new_span.font->Ref(); new_span.font_size = unbroken_span.font_size; new_span.direction = para.pango_items[unbroken_span.pango_item_index].item->analysis.level & 1 ? RIGHT_TO_LEFT : LEFT_TO_RIGHT; new_span.input_stream_first_character = Glib::ustring::const_iterator(unbroken_span.input_stream_first_character.base() + it_span->start.char_byte); @@ -750,10 +763,12 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, new_glyph.vertical_scale = 1.0; // Position glyph -------------------- - new_glyph.x = current_x + unbroken_span_glyph_info->geometry.x_offset * font_size_multiplier; + new_glyph.x = current_x; new_glyph.y =_y_offset; - // y-coordinate is flipped between vertical and horizontal text... delta_y is common offset but applied with opposite sign + // y-coordinate is flipped between vertical and horizontal text... + // delta_y is common offset but applied with opposite sign + double delta_x = unbroken_span_glyph_info->geometry.x_offset * font_size_multiplier; double delta_y = unbroken_span_glyph_info->geometry.y_offset * font_size_multiplier + unbroken_span.baseline_shift; SPCSSBaseline dominant_baseline = _flow._blockBaseline(); @@ -767,41 +782,50 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, if( dominant_baseline == SP_CSS_BASELINE_AUTO ) dominant_baseline = SP_CSS_BASELINE_ALPHABETIC; } - new_glyph.y -= delta_y; - // TODO: Should also check 'glyph_orientation_vertical' if 'text-orientation' is unset... if( new_span.text_orientation == SP_CSS_TEXT_ORIENTATION_SIDEWAYS || (new_span.text_orientation == SP_CSS_TEXT_ORIENTATION_MIXED && - para.pango_items[unbroken_span.pango_item_index].item->analysis.gravity == 0) ) { + para.pango_items[unbroken_span.pango_item_index].item->analysis.gravity == PANGO_GRAVITY_SOUTH) ) { // Sideways orientation (Latin characters, CJK punctuation), 90deg rotation done at output stage. new_glyph.orientation = ORIENTATION_SIDEWAYS; - new_glyph.y -= new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ]; + new_glyph.x += delta_x; + new_glyph.y -= delta_y; + + new_glyph.y -= new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ]; new_glyph.width = new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span_glyph_info->glyph, false); } else { // Upright orientation - new_glyph.x += new_span.line_height.ascent; + new_glyph.x += delta_x; + new_glyph.y -= delta_y; - // Glyph reference point is center (shift: left edge to center glyph) - new_glyph.y -= unbroken_span_glyph_info->geometry.width * 0.5 * font_size_multiplier; + // Adjust for alignment point (top of em box, horizontal center). + new_glyph.x += new_span.line_height.ascent; new_glyph.y -= new_span.font_size * (para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ] - para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ SP_CSS_BASELINE_CENTRAL ] ); - new_glyph.width = new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span_glyph_info->glyph, true); - if( new_glyph.width == 0 ) { - new_glyph.width = unbroken_span_glyph_info->geometry.width * font_size_multiplier; + static double shift_y = 0; // Save to use with non_spacing marks (should be shifted the same amount as previous glyph). + if (g_unichar_type (*iter_source_text) == G_UNICODE_NON_SPACING_MARK) { + new_glyph.width = 0; + new_glyph.x += new_span.font_size; // Hack! + } else { + // Glyph reference point is center (shift: left edge to center glyph) + shift_y = unbroken_span_glyph_info->geometry.width * 0.5 * font_size_multiplier; + new_glyph.width = new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span_glyph_info->glyph, true); } - + new_glyph.y -= shift_y; } } else { // Horizontal text if( dominant_baseline == SP_CSS_BASELINE_AUTO ) dominant_baseline = SP_CSS_BASELINE_ALPHABETIC; + new_glyph.x += delta_x; new_glyph.y += delta_y; + new_glyph.y += new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ dominant_baseline ]; new_glyph.width = unbroken_span_glyph_info->geometry.width * font_size_multiplier; @@ -810,7 +834,6 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, // for some reason pango returns zero width for invalid glyph characters (those empty boxes), so go to freetype for the info } - if (new_span.direction == RIGHT_TO_LEFT) { // pango wanted to give us glyphs in visual order but we refused, so we need to work // out where the cluster start is ourselves -- cgit v1.2.3 From b5d3bcd190a8b4c95613eeb82e2b768b08b693ce Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Wed, 13 Sep 2017 17:10:44 +0200 Subject: Fixes for clone original LPE --- src/live_effects/lpe-fill-between-many.cpp | 122 ++++++++++++++++++----- src/live_effects/lpe-fill-between-many.h | 16 ++- src/live_effects/parameter/originalpatharray.cpp | 35 ++++--- src/live_effects/parameter/originalpatharray.h | 7 +- src/selection-chemistry.cpp | 6 +- src/sp-path.cpp | 1 + 6 files changed, 137 insertions(+), 50 deletions(-) diff --git a/src/live_effects/lpe-fill-between-many.cpp b/src/live_effects/lpe-fill-between-many.cpp index 8b5cb9b95..e380ca2dd 100644 --- a/src/live_effects/lpe-fill-between-many.cpp +++ b/src/live_effects/lpe-fill-between-many.cpp @@ -6,10 +6,14 @@ #include "live_effects/lpe-fill-between-many.h" - +#include "live_effects/lpeobject.h" +#include "xml/node.h" #include "display/curve.h" +#include "inkscape.h" +#include "selection.h" #include "sp-shape.h" #include "sp-text.h" +#include "sp-defs.h" #include "svg/svg.h" // TODO due to internal breakage in glibmm headers, this must be last: #include @@ -17,25 +21,31 @@ namespace Inkscape { namespace LivePathEffect { +static const Util::EnumData FilllpemethodData[] = { + { FLM_NONE, N_("Without LPE"), "none" }, + { FLM_PARTIAL, N_("Spiro/BSpline"), "partial" }, + { FLM_ALL, N_("All LPE"), "all" } +}; +static const Util::EnumDataConverter FLMConverter(FilllpemethodData, FLM_END); + LPEFillBetweenMany::LPEFillBetweenMany(LivePathEffectObject *lpeobject) : Effect(lpeobject), linked_paths(_("Linked path:"), _("Paths from which to take the original path data"), "linkedpaths", &wr, this), - original_visible(_("Original path visible"), _("Original path visibled"), "original_visible", &wr, this, true), - original_reversed(_("Original path reversed"), _("Reverse original path"), "original_reversed", &wr, this, false), + method(_("LPE's on linked:"), _("LPE's on linked"), "method", FLMConverter, &wr, this, FLM_PARTIAL), fuse(_("Fuse coincident points"), _("Fuse coincident points"), "fuse", &wr, this, false), allow_transforms(_("Allow transforms"), _("Allow transforms"), "allow_transforms", &wr, this, false), join(_("Join subpaths"), _("Join subpaths"), "join", &wr, this, true), - close(_("Close"), _("Close path"), "close", &wr, this, true) + close(_("Close"), _("Close path"), "close", &wr, this, true), + applied("Store the first apply", "", "applied", &wr, this, "false", false) { registerParameter(&linked_paths); - registerParameter(&original_visible); - registerParameter(&original_reversed); + registerParameter(&method); registerParameter(&fuse); registerParameter(&allow_transforms); registerParameter(&join); registerParameter(&close); - transformmultiply = false; - linked_paths.allowOnlyBsplineSpiro(true); + registerParameter(&applied); + previous_method = FLM_END; } LPEFillBetweenMany::~LPEFillBetweenMany() @@ -43,17 +53,70 @@ LPEFillBetweenMany::~LPEFillBetweenMany() } +void LPEFillBetweenMany::doOnApply (SPLPEItem const* lpeitem) +{ + SPDocument * document = SP_ACTIVE_DOCUMENT; + if (!document) { + return; + } + SPLPEItem *lpe_item = const_cast(lpeitem); + SPObject * parent = lpe_item->parent; + if (lpe_item) { + SPShape *shape = dynamic_cast(lpe_item); + if (shape) { + Inkscape::SVGOStringStream os; + if (strcmp(this->lpeobj->getRepr()->attribute("applied"), "false") == 0) { + os << '#' << SP_ITEM(lpe_item)->getId() << ",0,1"; + + Inkscape::XML::Document *xml_doc = document->getReprDoc(); + // create the LPE + Inkscape::XML::Node *lpe_repr = xml_doc->createElement("inkscape:path-effect"); + { + lpe_repr->setAttribute("effect", "fill_between_many"); + lpe_repr->setAttribute("linkedpaths", os.str()); + lpe_repr->setAttribute("applied", "true"); + lpe_repr->setAttribute("method", "partial"); + lpe_repr->setAttribute("allow_transforms", "false"); + document->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute + } + std::string lpe_id_href = std::string("#") + lpe_repr->attribute("id"); + Inkscape::GC::release(lpe_repr); + Inkscape::XML::Node *clone = xml_doc->createElement("svg:path"); + { + clone->setAttribute("d", "M 0 0", false); + // add the new clone to the top of the original's parent + parent->appendChildRepr(clone); + SPObject *clone_obj = document->getObjectById(clone->attribute("id")); + SPLPEItem *clone_lpeitem = dynamic_cast(clone_obj); + if (clone_lpeitem) { + clone_lpeitem->addPathEffect(lpe_id_href, false); + } + } + Inkscape::Selection * sel = SP_ACTIVE_DESKTOP->getSelection(); + sel->set(clone); + Inkscape::GC::release(clone); + lpe_item->removeCurrentPathEffect(false); + } + } + } +} + void LPEFillBetweenMany::doEffect (SPCurve * curve) { - Geom::PathVector res_pathv; - SPItem * firstObj = NULL; - if (original_visible) { - Geom::PathVector original = curve->get_pathvector(); - if (original_reversed) { - original = original.reversed(); + if (previous_method != method) { + if (method == FLM_PARTIAL) { + linked_paths.allowOnlyBsplineSpiro(true); + linked_paths.setFromOriginalD(false); + } else if(method == FLM_NONE) { + linked_paths.allowOnlyBsplineSpiro(false); + linked_paths.setFromOriginalD(true); + } else { + linked_paths.allowOnlyBsplineSpiro(false); + linked_paths.setFromOriginalD(false); } - res_pathv = original; + previous_method = method; } + Geom::PathVector res_pathv; for (std::vector::iterator iter = linked_paths._vector.begin(); iter != linked_paths._vector.end(); ++iter) { SPObject *obj; if ((*iter)->ref.isAttached() && (obj = (*iter)->ref.getObject()) && SP_IS_ITEM(obj) && !(*iter)->_pathvector.empty() && (*iter)->visibled) { @@ -65,36 +128,43 @@ void LPEFillBetweenMany::doEffect (SPCurve * curve) } if (!res_pathv.empty() && join) { - linked_path = linked_path * SP_ITEM(obj)->getRelativeTransform(firstObj); if (!are_near(res_pathv.front().finalPoint(), linked_path.initialPoint(), 0.01) || !fuse) { res_pathv.front().appendNew(linked_path.initialPoint()); } else { linked_path.setInitial(res_pathv.front().finalPoint()); } + if(!allow_transforms) { + Geom::Affine affine = Geom::identity(); + sp_svg_transform_read(SP_ITEM(obj)->getAttribute("transform"), &affine); + linked_path *= affine; + } res_pathv.front().append(linked_path); } else { - firstObj = SP_ITEM(obj); if (close && !join) { linked_path.close(); } + if(!allow_transforms) { + Geom::Affine affine = Geom::identity(); + sp_svg_transform_read(SP_ITEM(obj)->getAttribute("transform"), &affine); + linked_path *= affine; + } res_pathv.push_back(linked_path); } } } + + if(!allow_transforms && sp_lpe_item) { + SP_ITEM(sp_lpe_item)->transform = Geom::identity(); + } + if (!res_pathv.empty() && close) { res_pathv.front().close(); } + if (res_pathv.empty()) { res_pathv = curve->get_pathvector(); } - if(!allow_transforms && !transformmultiply) { - Geom::Affine affine = Geom::identity(); - sp_svg_transform_read(SP_ITEM(sp_lpe_item)->getAttribute("transform"), &affine); - res_pathv *= affine.inverse(); - } - if(transformmultiply) { - transformmultiply = false; - } + curve->set_pathvector(res_pathv); } @@ -103,8 +173,6 @@ LPEFillBetweenMany::transform_multiply(Geom::Affine const& postmul, bool set) { if(!allow_transforms && sp_lpe_item) { SP_ITEM(sp_lpe_item)->transform *= postmul.inverse(); - transformmultiply = true; - sp_lpe_item_update_patheffect(sp_lpe_item, false, false); } } diff --git a/src/live_effects/lpe-fill-between-many.h b/src/live_effects/lpe-fill-between-many.h index 5bea53aba..da3a532bf 100644 --- a/src/live_effects/lpe-fill-between-many.h +++ b/src/live_effects/lpe-fill-between-many.h @@ -10,27 +10,37 @@ */ #include "live_effects/effect.h" +#include "live_effects/parameter/enum.h" #include "live_effects/parameter/originalpatharray.h" +#include "live_effects/parameter/hidden.h" namespace Inkscape { namespace LivePathEffect { +enum Filllpemethod { + FLM_NONE, + FLM_PARTIAL, + FLM_ALL, + FLM_END +}; + class LPEFillBetweenMany : public Effect { public: LPEFillBetweenMany(LivePathEffectObject *lpeobject); virtual ~LPEFillBetweenMany(); + virtual void doOnApply (SPLPEItem const* lpeitem); virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual void doEffect (SPCurve * curve); private: OriginalPathArrayParam linked_paths; - BoolParam original_visible; - BoolParam original_reversed; + EnumParam method; BoolParam fuse; BoolParam allow_transforms; BoolParam join; BoolParam close; - bool transformmultiply; + HiddenParam applied; + Filllpemethod previous_method; private: LPEFillBetweenMany(const LPEFillBetweenMany&); LPEFillBetweenMany& operator=(const LPEFillBetweenMany&); diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 13bd23634..0b1eb4802 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -326,28 +326,25 @@ OriginalPathArrayParam::on_link_button_click() if (pathsid.empty()) { return; } + bool foundOne = false; Inkscape::SVGOStringStream os; + for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + if (foundOne) { + os << "|"; + } else { + foundOne = true; + } + os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0") << "," << ((*iter)->visibled ? "1" : "0"); + } for (auto i=pathsid.begin();i!=pathsid.end();++i) { Glib::ustring pathid = *i; // add '#' at start to make it an uri. pathid.insert(pathid.begin(), '#'); - bool foundOne = false; - for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { - if (foundOne) { - os << "|"; - } else { - foundOne = true; - } - os << (*iter)->href << "," << ((*iter)->reversed ? "1" : "0") << "," << ((*iter)->visibled ? "1" : "0"); - } - + if (foundOne) { os << "|"; } - os << pathid.c_str() << ",0"; - if (*i != *(--pathsid.end())) { - os << "|"; - } + os << pathid.c_str() << ",0,1"; } param_write_to_repr(os.str().c_str()); DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, @@ -363,7 +360,7 @@ void OriginalPathArrayParam::unlink(PathAndDirectionAndVisible* to) if (to->href) { g_free(to->href); to->href = NULL; - } + } } void OriginalPathArrayParam::remove_link(PathAndDirectionAndVisible* to) @@ -528,6 +525,14 @@ gchar * OriginalPathArrayParam::param_getSVGValue() const return str; } +void OriginalPathArrayParam::update() +{ + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + SPObject *linked_obj = (*iter)->ref.getObject(); + linked_modified(linked_obj, SP_OBJECT_MODIFIED_FLAG, *iter); + } +} + } /* namespace LivePathEffect */ } /* namespace Inkscape */ diff --git a/src/live_effects/parameter/originalpatharray.h b/src/live_effects/parameter/originalpatharray.h index 51810a5cf..cffa2911f 100644 --- a/src/live_effects/parameter/originalpatharray.h +++ b/src/live_effects/parameter/originalpatharray.h @@ -72,11 +72,11 @@ public: virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; /** Disable the canvas indicators of parent class by overriding this method */ virtual void addCanvasIndicators(SPLPEItem const* /*lpeitem*/, std::vector & /*hp_vec*/) {}; - void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; }; - void allowOnlyBsplineSpiro(bool allow_only_bspline_spiro){ _allow_only_bspline_spiro = allow_only_bspline_spiro; }; + void setFromOriginalD(bool from_original_d){ _from_original_d = from_original_d; update();}; + void allowOnlyBsplineSpiro(bool allow_only_bspline_spiro){ _allow_only_bspline_spiro = allow_only_bspline_spiro; update();}; std::vector _vector; - + protected: bool _updateLink(const Gtk::TreeIter& iter, PathAndDirectionAndVisible* pd); bool _selectIndex(const Gtk::TreeIter& iter, int* i); @@ -108,6 +108,7 @@ protected: private: bool _from_original_d; bool _allow_only_bspline_spiro; + void update(); OriginalPathArrayParam(const OriginalPathArrayParam&); OriginalPathArrayParam& operator=(const OriginalPathArrayParam&); }; diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index f23a49500..9764563f1 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2915,7 +2915,7 @@ void ObjectSet::cloneOriginal() } /** -* This creates a new path, applies the Original Path LPE, and has it refer to the selection. +* This applies the Fill Between Many LPE, and has it refer to the selection. */ void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) { @@ -2942,7 +2942,9 @@ void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) { lpe_repr->setAttribute("effect", "fill_between_many"); lpe_repr->setAttribute("linkedpaths", os.str()); - lpe_repr->setAttribute("original_visible", "false"); + lpe_repr->setAttribute("applied", "true"); + gchar const *method_str = allow_transforms ? "all" : "partial"; + lpe_repr->setAttribute("method", method_str); gchar const *allow_transforms_str = allow_transforms ? "true" : "false"; lpe_repr->setAttribute("allow_transforms", allow_transforms_str); document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute diff --git a/src/sp-path.cpp b/src/sp-path.cpp index bb76eb73f..0cf2a5f3e 100644 --- a/src/sp-path.cpp +++ b/src/sp-path.cpp @@ -299,6 +299,7 @@ Geom::Affine SPPath::set_transform(Geom::Affine const &transform) { // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(transform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return transform; } else { _curve_before_lpe->transform(transform); -- cgit v1.2.3 From 58ef38f81c81f38149952f48e674a5fa5402bb98 Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Wed, 13 Sep 2017 18:35:35 +0200 Subject: Fixes for bug #1716926. Consider backport --- src/live_effects/lpe-patternalongpath.cpp | 79 +++++++++++++++++-------------- src/live_effects/parameter/path.cpp | 33 +++++++------ 2 files changed, 61 insertions(+), 51 deletions(-) diff --git a/src/live_effects/lpe-patternalongpath.cpp b/src/live_effects/lpe-patternalongpath.cpp index 22b18e077..4aa172161 100644 --- a/src/live_effects/lpe-patternalongpath.cpp +++ b/src/live_effects/lpe-patternalongpath.cpp @@ -294,25 +294,29 @@ KnotHolderEntityWidthPatternAlongPath::knot_set(Geom::Point const &p, Geom::Poin Geom::Point const s = snap_knot_position(p, state); SPShape const *sp_shape = dynamic_cast(SP_LPE_ITEM(item)); if (sp_shape) { - Geom::Path const *path_in = sp_shape->getCurveBeforeLPE()->first_path(); - Geom::Point ptA = path_in->pointAt(Geom::PathTime(0, 0.0)); - Geom::Point B = path_in->pointAt(Geom::PathTime(1, 0.0)); - Geom::Curve const *first_curve = &path_in->curveAt(Geom::PathTime(0, 0.0)); - Geom::CubicBezier const *cubic = dynamic_cast(&*first_curve); - Geom::Ray ray(ptA, B); - if (cubic) { - ray.setPoints(ptA, (*cubic)[1]); - } - ray.setAngle(ray.angle() + Geom::rad_from_deg(90)); - Geom::Point knot_pos = this->knot->pos * item->i2dt_affine().inverse(); - Geom::Coord nearest_to_ray = ray.nearestTime(knot_pos); - if(nearest_to_ray == 0){ - lpe->prop_scale.param_set_value(-Geom::distance(s , ptA)/(lpe->original_height/2.0)); - } else { - lpe->prop_scale.param_set_value(Geom::distance(s , ptA)/(lpe->original_height/2.0)); + SPCurve *curve_before = sp_shape->getCurveBeforeLPE(); + if (curve_before) { + Geom::Path const *path_in = curve_before->first_path(); + Geom::Point ptA = path_in->pointAt(Geom::PathTime(0, 0.0)); + Geom::Point B = path_in->pointAt(Geom::PathTime(1, 0.0)); + Geom::Curve const *first_curve = &path_in->curveAt(Geom::PathTime(0, 0.0)); + Geom::CubicBezier const *cubic = dynamic_cast(&*first_curve); + Geom::Ray ray(ptA, B); + if (cubic) { + ray.setPoints(ptA, (*cubic)[1]); + } + ray.setAngle(ray.angle() + Geom::rad_from_deg(90)); + Geom::Point knot_pos = this->knot->pos * item->i2dt_affine().inverse(); + Geom::Coord nearest_to_ray = ray.nearestTime(knot_pos); + if(nearest_to_ray == 0){ + lpe->prop_scale.param_set_value(-Geom::distance(s , ptA)/(lpe->original_height/2.0)); + } else { + lpe->prop_scale.param_set_value(Geom::distance(s , ptA)/(lpe->original_height/2.0)); + } + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setDouble("/live_effect/pap/width", lpe->prop_scale); + curve_before->unref(); } - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - prefs->setDouble("/live_effect/pap/width", lpe->prop_scale); } sp_lpe_item_update_patheffect (SP_LPE_ITEM(item), false, true); } @@ -324,25 +328,28 @@ KnotHolderEntityWidthPatternAlongPath::knot_get() const SPShape const *sp_shape = dynamic_cast(SP_LPE_ITEM(item)); if (sp_shape) { - Geom::Path const *path_in = sp_shape->getCurveBeforeLPE()->first_path(); - Geom::Point ptA = path_in->pointAt(Geom::PathTime(0, 0.0)); - Geom::Point B = path_in->pointAt(Geom::PathTime(1, 0.0)); - Geom::Curve const *first_curve = &path_in->curveAt(Geom::PathTime(0, 0.0)); - Geom::CubicBezier const *cubic = dynamic_cast(&*first_curve); - Geom::Ray ray(ptA, B); - if (cubic) { - ray.setPoints(ptA, (*cubic)[1]); + SPCurve *curve_before = sp_shape->getCurveBeforeLPE(); + if (curve_before) { + Geom::Path const *path_in = curve_before->first_path(); + Geom::Point ptA = path_in->pointAt(Geom::PathTime(0, 0.0)); + Geom::Point B = path_in->pointAt(Geom::PathTime(1, 0.0)); + Geom::Curve const *first_curve = &path_in->curveAt(Geom::PathTime(0, 0.0)); + Geom::CubicBezier const *cubic = dynamic_cast(&*first_curve); + Geom::Ray ray(ptA, B); + if (cubic) { + ray.setPoints(ptA, (*cubic)[1]); + } + ray.setAngle(ray.angle() + Geom::rad_from_deg(90)); + Geom::Point result_point = Geom::Point::polar(ray.angle(), (lpe->original_height/2.0) * lpe->prop_scale) + ptA; + + pap_helper_path.clear(); + Geom::Path hp(result_point); + hp.appendNew(ptA); + pap_helper_path.push_back(hp); + hp.clear(); + curve_before->unref(); + return result_point; } - ray.setAngle(ray.angle() + Geom::rad_from_deg(90)); - Geom::Point result_point = Geom::Point::polar(ray.angle(), (lpe->original_height/2.0) * lpe->prop_scale) + ptA; - - pap_helper_path.clear(); - Geom::Path hp(result_point); - hp.appendNew(ptA); - pap_helper_path.push_back(hp); - hp.clear(); - - return result_point; } return Geom::Point(); } diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index 470535314..a91e50db8 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -79,21 +79,24 @@ PathParam::PathParam( const Glib::ustring& label, const Glib::ustring& tip, PathParam::~PathParam() { remove_link(); - using namespace Inkscape::UI; - SPDesktop *desktop = SP_ACTIVE_DESKTOP; - if (desktop) { - if (tools_isactive(desktop, TOOLS_NODES)) { - SPItem * item = SP_ACTIVE_DESKTOP->getSelection()->singleItem(); - if (item != NULL) { - Inkscape::UI::Tools::NodeTool *nt = static_cast(desktop->event_context); - std::set shapes; - ShapeRecord r; - r.item = item; - shapes.insert(r); - nt->_multipath->setItems(shapes); - } - } - } +//TODO: Removed to fix a bug https://bugs.launchpad.net/inkscape/+bug/1716926 +// Maybe wee need to resurrect, not know when this code is added, but seems also not working now in a few test I do. +// in the future and do a deeper fix in multi-path-manipulator +// using namespace Inkscape::UI; +// SPDesktop *desktop = SP_ACTIVE_DESKTOP; +// if (desktop) { +// if (tools_isactive(desktop, TOOLS_NODES)) { +// SPItem * item = SP_ACTIVE_DESKTOP->getSelection()->singleItem(); +// if (item) { +// Inkscape::UI::Tools::NodeTool *nt = static_cast(desktop->event_context); +// std::set shapes; +// ShapeRecord r; +// r.item = item; +// shapes.insert(r); +// nt->_multipath->setItems(shapes); +// } +// } +// } g_free(defvalue); } -- cgit v1.2.3 From bf5a9dd8028a965e4f072ea45a802b4feb6f821a Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Thu, 14 Sep 2017 11:05:47 +0200 Subject: Added new LPE parameter to store Items array, also bugfixing in patharray parameter --- po/POTFILES.in | 1 + src/live_effects/CMakeLists.txt | 2 + src/live_effects/parameter/originalitemarray.cpp | 458 +++++++++++++++++++++++ src/live_effects/parameter/originalitemarray.h | 120 ++++++ src/live_effects/parameter/originalpatharray.cpp | 10 +- src/ui/clipboard.cpp | 2 +- src/ui/clipboard.h | 2 +- 7 files changed, 589 insertions(+), 6 deletions(-) create mode 100644 src/live_effects/parameter/originalitemarray.cpp create mode 100644 src/live_effects/parameter/originalitemarray.h diff --git a/po/POTFILES.in b/po/POTFILES.in index 1daf72188..0a5d1c435 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -159,6 +159,7 @@ src/live_effects/parameter/bool.cpp src/live_effects/parameter/enum.h src/live_effects/parameter/fontbutton.cpp src/live_effects/parameter/item.cpp +src/live_effects/parameter/originalitemarray.cpp src/live_effects/parameter/originalitem.cpp src/live_effects/parameter/originalpath.cpp src/live_effects/parameter/originalpatharray.cpp diff --git a/src/live_effects/CMakeLists.txt b/src/live_effects/CMakeLists.txt index b1000de01..2c16e2383 100644 --- a/src/live_effects/CMakeLists.txt +++ b/src/live_effects/CMakeLists.txt @@ -67,6 +67,7 @@ set(live_effects_SRC parameter/hidden.cpp parameter/item-reference.cpp parameter/item.cpp + parameter/originalitemarray.cpp parameter/originalitem.cpp parameter/originalpath.cpp parameter/originalpatharray.cpp @@ -157,6 +158,7 @@ set(live_effects_SRC parameter/hidden.h parameter/enum.h parameter/item.h + parameter/originalitemarray.cpp parameter/item-reference.h parameter/originalitem.h parameter/originalpath.h diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp new file mode 100644 index 000000000..fddbfe4ce --- /dev/null +++ b/src/live_effects/parameter/originalitemarray.cpp @@ -0,0 +1,458 @@ +/* + * Copyright (C) Theodore Janeczko 2012 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "live_effects/parameter/originalitemarray.h" + +#include +#include +#include +#include +#include + +#include + +#include "inkscape.h" +#include "icon-size.h" +#include "ui/clipboard.h" +#include "svg/svg.h" +#include "svg/stringstream.h" +#include "originalitem.h" +#include "uri.h" + +#include "live_effects/effect.h" + +#include "verbs.h" +#include "document-undo.h" +#include "document.h" + +namespace Inkscape { + +namespace LivePathEffect { + +class OriginalItemArrayParam::ModelColumns : public Gtk::TreeModel::ColumnRecord +{ +public: + + ModelColumns() + { + add(_colObject); + add(_colLabel); + add(_colActived); + } + virtual ~ModelColumns() {} + + Gtk::TreeModelColumn _colObject; + Gtk::TreeModelColumn _colLabel; + Gtk::TreeModelColumn _colActived; +}; + +OriginalItemArrayParam::OriginalItemArrayParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect ) +: Parameter(label, tip, key, wr, effect), + _vector(), + _tree(), + _text_renderer(), + _toggle_renderer(), + _scroller() +{ + _model = new ModelColumns(); + _store = Gtk::TreeStore::create(*_model); + _tree.set_model(_store); + + _tree.set_reorderable(true); + _tree.enable_model_drag_dest (Gdk::ACTION_MOVE); + + Gtk::CellRendererToggle * _toggle_renderer = manage(new Gtk::CellRendererToggle()); + int toggleColNum = _tree.append_column(_("Active"), *_toggle_renderer) - 1; + Gtk::TreeViewColumn* col = _tree.get_column(toggleColNum); + _toggle_renderer->set_activatable(true); + _toggle_renderer->signal_toggled().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_active_toggled)); + col->add_attribute(_toggle_renderer->property_active(), _model->_colActived); + + _text_renderer = manage(new Gtk::CellRendererText()); + int nameColNum = _tree.append_column(_("Name"), *_text_renderer) - 1; + _name_column = _tree.get_column(nameColNum); + _name_column->add_attribute(_text_renderer->property_text(), _model->_colLabel); + + _tree.set_expander_column( *_tree.get_column(nameColNum) ); + _tree.set_search_column(_model->_colLabel); + + //quick little hack -- newer versions of gtk gave the item zero space allotment + _scroller.set_size_request(-1, 120); + + _scroller.add(_tree); + _scroller.set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC ); + //_scroller.set_shadow_type(Gtk::SHADOW_IN); + + oncanvas_editable = true; +} + +OriginalItemArrayParam::~OriginalItemArrayParam() +{ + while (!_vector.empty()) { + ItemAndActive *w = _vector.back(); + _vector.pop_back(); + unlink(w); + delete w; + } + delete _model; +} + +void OriginalItemArrayParam::on_active_toggled(const Glib::ustring& item) +{ + Gtk::TreeModel::iterator iter = _store->get_iter(item); + Gtk::TreeModel::Row row = *iter; + ItemAndActive *w = row[_model->_colObject]; + row[_model->_colActived] = !row[_model->_colActived]; + w->actived = row[_model->_colActived]; + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Link item parameter to item")); +} + +void OriginalItemArrayParam::param_set_default() +{ + +} + +Gtk::Widget* OriginalItemArrayParam::param_newWidget() +{ + Gtk::VBox* vbox = Gtk::manage(new Gtk::VBox()); + Gtk::HBox* hbox = Gtk::manage(new Gtk::HBox()); + + vbox->pack_start(_scroller, Gtk::PACK_EXPAND_WIDGET); + + + { // Paste item to link button + Gtk::Image *pIcon = Gtk::manage(new Gtk::Image()); + pIcon->set_from_icon_name("edit-clone", Gtk::ICON_SIZE_BUTTON); + Gtk::Button *pButton = Gtk::manage(new Gtk::Button()); + pButton->set_relief(Gtk::RELIEF_NONE); + pIcon->show(); + pButton->add(*pIcon); + pButton->show(); + pButton->signal_clicked().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_link_button_click)); + hbox->pack_start(*pButton, Gtk::PACK_SHRINK); + pButton->set_tooltip_text(_("Link to item")); + } + + { // Remove linked item + Gtk::Image *pIcon = Gtk::manage(new Gtk::Image()); + pIcon->set_from_icon_name("gtk-remove", Gtk::ICON_SIZE_BUTTON); + Gtk::Button *pButton = Gtk::manage(new Gtk::Button()); + pButton->set_relief(Gtk::RELIEF_NONE); + pIcon->show(); + pButton->add(*pIcon); + pButton->show(); + pButton->signal_clicked().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_remove_button_click)); + hbox->pack_start(*pButton, Gtk::PACK_SHRINK); + pButton->set_tooltip_text(_("Remove Item")); + } + + { // Move Down + Gtk::Image *pIcon = Gtk::manage(new Gtk::Image()); + pIcon->set_from_icon_name( "gtk-go-down", Gtk::ICON_SIZE_BUTTON); + Gtk::Button *pButton = Gtk::manage(new Gtk::Button()); + pButton->set_relief(Gtk::RELIEF_NONE); + pIcon->show(); + pButton->add(*pIcon); + pButton->show(); + pButton->signal_clicked().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_down_button_click)); + hbox->pack_end(*pButton, Gtk::PACK_SHRINK); + pButton->set_tooltip_text(_("Move Down")); + } + + { // Move Down + Gtk::Image *pIcon = Gtk::manage(new Gtk::Image()); + pIcon->set_from_icon_name( "gtk-go-up", Gtk::ICON_SIZE_BUTTON); + Gtk::Button *pButton = Gtk::manage(new Gtk::Button()); + pButton->set_relief(Gtk::RELIEF_NONE); + pIcon->show(); + pButton->add(*pIcon); + pButton->show(); + pButton->signal_clicked().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_up_button_click)); + hbox->pack_end(*pButton, Gtk::PACK_SHRINK); + pButton->set_tooltip_text(_("Move Up")); + } + + vbox->pack_end(*hbox, Gtk::PACK_SHRINK); + + vbox->show_all_children(true); + + return vbox; +} + +bool OriginalItemArrayParam::_selectIndex(const Gtk::TreeIter& iter, int* i) +{ + if ((*i)-- <= 0) { + _tree.get_selection()->select(iter); + return true; + } + return false; +} + +void OriginalItemArrayParam::on_up_button_click() +{ + Gtk::TreeModel::iterator iter = _tree.get_selection()->get_selected(); + if (iter) { + Gtk::TreeModel::Row row = *iter; + + int i = -1; + std::vector::iterator piter = _vector.begin(); + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); piter = iter, i++, ++iter) { + if (*iter == row[_model->_colObject]) { + _vector.erase(iter); + _vector.insert(piter, row[_model->_colObject]); + break; + } + } + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); + + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Move item up")); + + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::_selectIndex), &i)); + } +} + +void OriginalItemArrayParam::on_down_button_click() +{ + Gtk::TreeModel::iterator iter = _tree.get_selection()->get_selected(); + if (iter) { + Gtk::TreeModel::Row row = *iter; + + int i = 0; + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); i++, ++iter) { + if (*iter == row[_model->_colObject]) { + std::vector::iterator niter = _vector.erase(iter); + if (niter != _vector.end()) { + ++niter; + i++; + } + _vector.insert(niter, row[_model->_colObject]); + break; + } + } + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); + + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Move item down")); + + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::_selectIndex), &i)); + } +} + +void OriginalItemArrayParam::on_remove_button_click() +{ + Gtk::TreeModel::iterator iter = _tree.get_selection()->get_selected(); + if (iter) { + Gtk::TreeModel::Row row = *iter; + remove_link(row[_model->_colObject]); + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); + + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Remove item")); + } + +} + +void +OriginalItemArrayParam::on_link_button_click() +{ + Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get(); + //without second parameter populate all elements filled inside the called function + std::vector itemsid = cm->getElementsOfType(SP_ACTIVE_DESKTOP); + + if (itemsid.empty()) { + return; + } + + bool foundOne = false; + Inkscape::SVGOStringStream os; + for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + if (foundOne) { + os << "|"; + } else { + foundOne = true; + } + os << (*iter)->href << "," << ((*iter)->actived ? "1" : "0"); + } + for (auto i=itemsid.begin();i!=itemsid.end();++i) { + Glib::ustring itemid = *i; + // add '#' at start to make it an uri. + itemid.insert(itemid.begin(), '#'); + + if (foundOne) { + os << "|"; + } else { + foundOne = true; + } + os << itemid.c_str() << ",1"; + } + param_write_to_repr(os.str().c_str()); + DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, + _("Link itemarray parameter to item")); +} + +void OriginalItemArrayParam::unlink(ItemAndActive* to) +{ + to->linked_modified_connection.disconnect(); + to->linked_delete_connection.disconnect(); + to->ref.detach(); + if (to->href) { + g_free(to->href); + to->href = NULL; + } +} + +void OriginalItemArrayParam::remove_link(ItemAndActive* to) +{ + unlink(to); + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + if (*iter == to) { + ItemAndActive *w = *iter; + _vector.erase(iter); + delete w; + return; + } + } +} + +void OriginalItemArrayParam::linked_delete(SPObject */*deleted*/, ItemAndActive* /*to*/) +{ + //remove_link(to); + + gchar * full = param_getSVGValue(); + param_write_to_repr(full); + g_free(full); +} + +bool OriginalItemArrayParam::_updateLink(const Gtk::TreeIter& iter, ItemAndActive* pd) +{ + Gtk::TreeModel::Row row = *iter; + if (row[_model->_colObject] == pd) { + SPObject *obj = pd->ref.getObject(); + row[_model->_colLabel] = obj && obj->getId() ? ( obj->label() ? obj->label() : obj->getId() ) : pd->href; + return true; + } + return false; +} + +void OriginalItemArrayParam::linked_changed(SPObject */*old_obj*/, SPObject *new_obj, ItemAndActive* to) +{ + to->linked_delete_connection.disconnect(); + to->linked_modified_connection.disconnect(); + to->linked_transformed_connection.disconnect(); + + if (new_obj && SP_IS_ITEM(new_obj)) { + to->linked_delete_connection = new_obj->connectDelete(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::linked_delete), to)); + to->linked_modified_connection = new_obj->connectModified(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::linked_modified), to)); + to->linked_transformed_connection = SP_ITEM(new_obj)->connectTransformed(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::linked_transformed), to)); + + linked_modified(new_obj, SP_OBJECT_MODIFIED_FLAG, to); + } else { + SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::_updateLink), to)); + } +} + +void OriginalItemArrayParam::linked_modified(SPObject *linked_obj, guint flags, ItemAndActive* to) +{ + if (!to) { + return; + } + SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); + _store->foreach_iter(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::_updateLink), to)); +} + +bool OriginalItemArrayParam::param_readSVGValue(const gchar* strvalue) +{ + if (strvalue) { + while (!_vector.empty()) { + ItemAndActive *w = _vector.back(); + unlink(w); + _vector.pop_back(); + delete w; + } + _store->clear(); + + gchar ** strarray = g_strsplit(strvalue, "|", 0); + for (gchar ** iter = strarray; *iter != NULL; iter++) { + if ((*iter)[0] == '#') { + gchar ** substrarray = g_strsplit(*iter, ",", 0); + ItemAndActive* w = new ItemAndActive((SPObject *)param_effect->getLPEObj()); + w->href = g_strdup(*substrarray); + w->actived = *(substrarray+1) != NULL && (*(substrarray+1))[0] == '1'; + w->linked_changed_connection = w->ref.changedSignal().connect(sigc::bind(sigc::mem_fun(*this, &OriginalItemArrayParam::linked_changed), w)); + w->ref.attach(URI(w->href)); + + _vector.push_back(w); + + Gtk::TreeModel::iterator iter = _store->append(); + Gtk::TreeModel::Row row = *iter; + SPObject *obj = w->ref.getObject(); + + row[_model->_colObject] = w; + row[_model->_colLabel] = obj ? ( obj->label() ? obj->label() : obj->getId() ) : w->href; + row[_model->_colActived] = w->actived; + g_strfreev (substrarray); + } + } + g_strfreev (strarray); + return true; + } + return false; +} + +gchar * OriginalItemArrayParam::param_getSVGValue() const +{ + Inkscape::SVGOStringStream os; + bool foundOne = false; + for (std::vector::const_iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + if (foundOne) { + os << "|"; + } else { + foundOne = true; + } + os << (*iter)->href << "," << ((*iter)->actived ? "1" : "0"); + } + gchar * str = g_strdup(os.str().c_str()); + return str; +} + +} /* namespace LivePathEffect */ + +} /* namespace Inkscape */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/originalitemarray.h b/src/live_effects/parameter/originalitemarray.h new file mode 100644 index 000000000..3b300bd25 --- /dev/null +++ b/src/live_effects/parameter/originalitemarray.h @@ -0,0 +1,120 @@ +#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_ORIGINALITEMARRAY_H +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_ORIGINALITEMARRAY_H + +/* + * Inkscape::LivePathEffectParameters + * + * Copyright (C) Theodore Janeczko 2012 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include + +#include +#include +#include +#include + +#include "live_effects/parameter/parameter.h" +#include "live_effects/parameter/item-reference.h" + +#include "svg/svg.h" +#include "svg/stringstream.h" +#include "item-reference.h" +#include "sp-object.h" + +namespace Inkscape { + +namespace LivePathEffect { + +class ItemAndActive { +public: + ItemAndActive(SPObject *owner) + : href(NULL), + ref(owner), + actived(true) + { + + } + gchar *href; + URIReference ref; + bool actived; + + sigc::connection linked_changed_connection; + sigc::connection linked_delete_connection; + sigc::connection linked_modified_connection; + sigc::connection linked_transformed_connection; +}; + +class OriginalItemArrayParam : public Parameter { +public: + class ModelColumns; + + OriginalItemArrayParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect); + + virtual ~OriginalItemArrayParam(); + + virtual Gtk::Widget * param_newWidget(); + virtual bool param_readSVGValue(const gchar * strvalue); + virtual gchar * param_getSVGValue() const; + virtual void param_set_default(); + virtual void param_update_default(const gchar * default_value){}; + /** Disable the canvas indicators of parent class by overriding this method */ + virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; + /** Disable the canvas indicators of parent class by overriding this method */ + virtual void addCanvasIndicators(SPLPEItem const* /*lpeitem*/, std::vector & /*hp_vec*/) {}; + + std::vector _vector; + +protected: + bool _updateLink(const Gtk::TreeIter& iter, ItemAndActive* pd); + bool _selectIndex(const Gtk::TreeIter& iter, int* i); + void unlink(ItemAndActive* to); + void remove_link(ItemAndActive* to); + void setItem(SPObject *linked_obj, guint flags, ItemAndActive* to); + + void linked_changed(SPObject *old_obj, SPObject *new_obj, ItemAndActive* to); + void linked_modified(SPObject *linked_obj, guint flags, ItemAndActive* to); + void linked_transformed(Geom::Affine const *, SPItem *, ItemAndActive*) {} + void linked_delete(SPObject *deleted, ItemAndActive* to); + + ModelColumns *_model; + Glib::RefPtr _store; + Gtk::TreeView _tree; + Gtk::CellRendererText *_text_renderer; + Gtk::CellRendererToggle *_toggle_renderer; + Gtk::TreeView::Column *_name_column; + Gtk::ScrolledWindow _scroller; + + void on_link_button_click(); + void on_remove_button_click(); + void on_up_button_click(); + void on_down_button_click(); + void on_active_toggled(const Glib::ustring& actived); + +private: + OriginalItemArrayParam(const OriginalItemArrayParam&); + OriginalItemArrayParam& operator=(const OriginalItemArrayParam&); +}; + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 0b1eb4802..8ac07b98f 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -322,7 +322,8 @@ OriginalPathArrayParam::on_link_button_click() { Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get(); std::vector pathsid = cm->getElementsOfType(SP_ACTIVE_DESKTOP, "svg:path"); - + std::vector textsid = cm->getElementsOfType(SP_ACTIVE_DESKTOP, "svg:text"); + pathsid.insert(pathsid.end(), textsid.begin(), textsid.end()); if (pathsid.empty()) { return; } @@ -343,12 +344,14 @@ OriginalPathArrayParam::on_link_button_click() if (foundOne) { os << "|"; + } else { + foundOne = true; } os << pathid.c_str() << ",0,1"; } param_write_to_repr(os.str().c_str()); DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, - _("Link path parameter to path")); + _("Link patharray parameter to path")); } void OriginalPathArrayParam::unlink(PathAndDirectionAndVisible* to) @@ -443,8 +446,7 @@ void OriginalPathArrayParam::setPathVector(SPObject *linked_obj, guint /*flags*/ } else { curve = SP_SHAPE(linked_obj)->getCurve(); } - } - if (SP_IS_TEXT(linked_obj)) { + } else if (SP_IS_TEXT(linked_obj)) { curve = SP_TEXT(linked_obj)->getNormalizedBpath(); } diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index 202c8d922..33ad4401c 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -658,7 +658,7 @@ Glib::ustring ClipboardManagerImpl::getShapeOrTextObjectId(SPDesktop *desktop) * @return A vector containing all IDs or empty if no shape or text item was found. * type. Set to "*" to retrive all elements of the types vector inside, feel free to populate more */ -std::vector ClipboardManagerImpl::getElementsOfType(SPDesktop *desktop, gchar const *type) +std::vector ClipboardManagerImpl::getElementsOfType(SPDesktop *desktop, gchar const* type) { std::vector result; SPDocument *tempdoc = _retrieveClipboard(); // any target will do here diff --git a/src/ui/clipboard.h b/src/ui/clipboard.h index 12dbd51df..390830bba 100644 --- a/src/ui/clipboard.h +++ b/src/ui/clipboard.h @@ -51,7 +51,7 @@ public: virtual bool pastePathEffect(ObjectSet *set) = 0; virtual Glib::ustring getPathParameter(SPDesktop* desktop) = 0; virtual Glib::ustring getShapeOrTextObjectId(SPDesktop *desktop) = 0; - virtual std::vector getElementsOfType(SPDesktop *desktop, gchar const *type = "*") = 0; + virtual std::vector getElementsOfType(SPDesktop *desktop, gchar const* type = "*") = 0; virtual const gchar *getFirstObjectID() = 0; static ClipboardManager *get(); -- cgit v1.2.3 From f008c6912ab933175622fa45dff5cc50643c77b6 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 14 Sep 2017 19:20:13 +0200 Subject: CI/AppVeyor: Enable tests Patched Aspell [1] has fixed the SEGFAULTs on exit and additionally seems to have fixed the deadlocks when running tests. [1] https://github.com/Alexpux/MINGW-packages/pull/2872 --- buildtools/appveyor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh index 0457b98d3..c9d2d1c74 100644 --- a/buildtools/appveyor.sh +++ b/buildtools/appveyor.sh @@ -67,8 +67,8 @@ if [ -n "$err" ]; then warning "installed executable produces output on stderr:" INKSCAPE_DATADIR=../share bin/inkscape.exe -V >/dev/null || error "uninstalled executable won't run" err=$(INKSCAPE_DATADIR=../share bin/inkscape.exe -V 2>&1 >/dev/null) if [ -n "$err" ]; then warning "uninstalled executable produces output on stderr:"; echo "$err"; fi -# run tests (don't fail yet as most tests SEGFAULT on exit) -#ninja check || warning "tests failed" # disabled because of sporadic deadlocks :-( +# run tests (don't fail yet as some need to be fixed first) +ninja check || warning "tests failed" message "##### BUILD SUCCESSFULL #####\n\n" -- cgit v1.2.3 From 1da36c2be7f64ba0aed75ecad4a5cbb1e972f261 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Fri, 15 Sep 2017 21:33:13 +0200 Subject: Add default extension for native win32 file save dialog. We manually appended an extension already (so functionality does not change), however GetSaveFileNameW also adds the chosen name (which was the name without extension before) to the list of recently used documents which resulted in unusable links. --- src/ui/dialog/filedialogimpl-win32.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/dialog/filedialogimpl-win32.cpp b/src/ui/dialog/filedialogimpl-win32.cpp index 4fb8089ee..7f0bf58c5 100644 --- a/src/ui/dialog/filedialogimpl-win32.cpp +++ b/src/ui/dialog/filedialogimpl-win32.cpp @@ -1781,6 +1781,7 @@ void FileSaveDialogImplWin32::GetSaveFileName_thread() ofn.lpstrFilter = _filter; ofn.nFilterIndex = _filter_index; ofn.lpfnHook = GetSaveFileName_hookproc; + ofn.lpstrDefExt = L"svg\0"; ofn.lCustData = (LPARAM)this; _result = GetSaveFileNameW(&ofn) != 0; -- cgit v1.2.3 From f38f101c22e8afeceacc49bcd09b43bac47347e7 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 16 Sep 2017 16:00:54 +0200 Subject: Fix a bug on uninicialitated variable, that perform diferent results in debug and in release mode. Thanks Michael for help me finfing this bug. Also sused to remove some unnneded code in path chemistry and to better naming the variable uninicilitated --- src/live_effects/lpe-clone-original.cpp | 2 +- src/live_effects/parameter/originalitem.cpp | 3 ++- src/live_effects/parameter/originalitem.h | 4 ++-- src/selection-chemistry.cpp | 12 ------------ 4 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index 31bf0e270..e72735370 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -221,7 +221,7 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co void LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ if (linkeditem.linksToItem()) { - linkeditem.setInverse(inverse); + linkeditem.setInsensitive(inverse); if ( preserve_position_changed != preserve_position ) { if (!preserve_position) { sp_svg_transform_read(SP_ITEM(sp_lpe_item)->getAttribute("transform"), &preserve_affine); diff --git a/src/live_effects/parameter/originalitem.cpp b/src/live_effects/parameter/originalitem.cpp index 81ab41c56..6de70be17 100644 --- a/src/live_effects/parameter/originalitem.cpp +++ b/src/live_effects/parameter/originalitem.cpp @@ -35,6 +35,7 @@ OriginalItemParam::OriginalItemParam( const Glib::ustring& label, const Glib::us Effect* effect) : ItemParam(label, tip, key, wr, effect, "") { + _insensitive = false; } OriginalItemParam::~OriginalItemParam() @@ -87,7 +88,7 @@ OriginalItemParam::param_newWidget() void OriginalItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) { - if (!inverse) { + if (!_insensitive) { emit_changed(); SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); } diff --git a/src/live_effects/parameter/originalitem.h b/src/live_effects/parameter/originalitem.h index 58d04e05a..9b692c503 100644 --- a/src/live_effects/parameter/originalitem.h +++ b/src/live_effects/parameter/originalitem.h @@ -23,7 +23,7 @@ public: Inkscape::UI::Widget::Registry* wr, Effect* effect); virtual ~OriginalItemParam(); - void setInverse(bool inversed) { inverse = inversed; } + void setInsensitive(bool insensitive) { insensitive = _insensitive; } bool linksToItem() const { return (href != NULL); } SPItem * getObject() const { return ref.getObject(); } @@ -36,7 +36,7 @@ protected: void on_select_original_button_click(); private: - bool inverse; + bool _insensitive; OriginalItemParam(const OriginalItemParam&); OriginalItemParam& operator=(const OriginalItemParam&); }; diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 9764563f1..9e0298f6a 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2849,18 +2849,6 @@ void ObjectSet::cloneOriginal() SPFlowtext *flowtext = dynamic_cast(item); if (flowtext) { original = flowtext->get_frame(NULL); // first frame only - } else { - SPLPEItem *lpeItem = dynamic_cast(item); - if (lpeItem) { - // check if the applied LPE is Clone original, if so, go to the refered path - Inkscape::LivePathEffect::Effect* lpe = lpeItem->getPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL); - if (lpe) { - Inkscape::LivePathEffect::Parameter *lpeparam = lpe->getParameter("linkedpath"); - if (Inkscape::LivePathEffect::OriginalPathParam *pathparam = dynamic_cast(lpeparam)) { - original = pathparam->getObject(); - } - } - } } } } -- cgit v1.2.3 From d3520b305d8a29fb6dd0c32c782601465a7d677f Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 16 Sep 2017 23:00:19 +0200 Subject: Fix bug #1658855, bend from clipboard end point get some spike --- src/live_effects/lpe-bendpath.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/live_effects/lpe-bendpath.cpp b/src/live_effects/lpe-bendpath.cpp index 5c1953fda..39714e629 100644 --- a/src/live_effects/lpe-bendpath.cpp +++ b/src/live_effects/lpe-bendpath.cpp @@ -94,7 +94,7 @@ LPEBendPath::doEffect_pwd2 (Geom::Piecewise > const & pwd uskeleton = arc_length_parametrization(Piecewise >(bend_path.get_pwd2()),2,.1); uskeleton = remove_short_cuts(uskeleton,.01); n = rot90(derivative(uskeleton)); - n = force_continuity(remove_short_cuts(n,.1)); + n = force_continuity(remove_short_cuts(n,.01)); bend_path.changed = false; } @@ -109,9 +109,10 @@ LPEBendPath::doEffect_pwd2 (Geom::Piecewise > const & pwd Interval bboxHorizontal = vertical_pattern.get_value() ? boundingbox_Y : boundingbox_X; Interval bboxVertical = vertical_pattern.get_value() ? boundingbox_X : boundingbox_Y; - + + //+0.1 in x fix bug #1658855 //We use the group bounding box size or the path bbox size to translate well x and y - x-= bboxHorizontal.min(); + x-= bboxHorizontal.min() + 0.1; y-= bboxVertical.middle(); double scaling = uskeleton.cuts.back()/bboxHorizontal.extent(); -- cgit v1.2.3 From b715d8f04c609173b2e9600660e22fc00f9d328f Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 16 Sep 2017 23:40:25 +0200 Subject: Fix bug #1460858 Ruler LPE does not consider drawing scale (page size / viewBox) --- src/live_effects/lpe-ruler.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/live_effects/lpe-ruler.cpp b/src/live_effects/lpe-ruler.cpp index 852592219..7ba5a7913 100644 --- a/src/live_effects/lpe-ruler.cpp +++ b/src/live_effects/lpe-ruler.cpp @@ -78,9 +78,12 @@ LPERuler::ruler_mark(Geom::Point const &A, Geom::Point const &n, MarkType const using namespace Geom; double real_mark_length = mark_length; - real_mark_length = Inkscape::Util::Quantity::convert(real_mark_length, unit.get_abbreviation(), "px"); + SPDocument * document = SP_ACTIVE_DOCUMENT; + SPNamedView *nv = sp_document_namedview(document, NULL); + Glib::ustring display_unit = nv->display_units->abbr; + real_mark_length = Inkscape::Util::Quantity::convert(real_mark_length, unit.get_abbreviation(), display_unit.c_str()); double real_minor_mark_length = minor_mark_length; - real_minor_mark_length = Inkscape::Util::Quantity::convert(real_minor_mark_length, unit.get_abbreviation(), "px"); + real_minor_mark_length = Inkscape::Util::Quantity::convert(real_minor_mark_length, unit.get_abbreviation(), display_unit.c_str()); n_major = real_mark_length * n; n_minor = real_minor_mark_length * n; @@ -130,10 +133,13 @@ LPERuler::doEffect_pwd2 (Geom::Piecewise > const & pwd2_i std::vector s_cuts; double real_mark_distance = mark_distance; - real_mark_distance = Inkscape::Util::Quantity::convert(real_mark_distance, unit.get_abbreviation(), "px"); + SPDocument * document = SP_ACTIVE_DOCUMENT; + SPNamedView *nv = sp_document_namedview(document, NULL); + Glib::ustring display_unit = nv->display_units->abbr; + real_mark_distance = Inkscape::Util::Quantity::convert(real_mark_distance, unit.get_abbreviation(), display_unit.c_str()); double real_offset = offset; - real_offset = Inkscape::Util::Quantity::convert(real_offset, unit.get_abbreviation(), "px"); + real_offset = Inkscape::Util::Quantity::convert(real_offset, unit.get_abbreviation(), display_unit.c_str()); for (double s = real_offset; s Date: Sun, 17 Sep 2017 18:06:00 +0200 Subject: Flushing std::cout --- src/document.cpp | 2 +- src/libcola/colafd.cpp | 2 +- src/libvpsc/linesegment.h | 10 +++++----- src/live_effects/lpe-fillet-chamfer.cpp | 2 -- src/live_effects/lpe-knot.cpp | 2 +- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/document.cpp b/src/document.cpp index d9c709626..4c24d0a96 100644 --- a/src/document.cpp +++ b/src/document.cpp @@ -513,7 +513,7 @@ SPDocument *SPDocument::createChildDoc(std::string const &uri) } else { path = uri; } - std::cout << "Added base: '" << path << "'\n"; + std::cout << "Added base: '" << path << std::endl; document = createNewDoc(path.c_str(), false, false, this); } return document; diff --git a/src/libcola/colafd.cpp b/src/libcola/colafd.cpp index 7be18f7d6..748f3354b 100644 --- a/src/libcola/colafd.cpp +++ b/src/libcola/colafd.cpp @@ -75,7 +75,7 @@ void dumpSquareMatrix(unsigned n, T** L) { for(unsigned i=0;igetCurve()->get_pathvector()); Satellites satellites; double power = radius; - std::cout << power << "power\n"; if (!flexible) { SPDocument * document = SP_ACTIVE_DOCUMENT; SPNamedView *nv = sp_document_namedview(document, NULL); Glib::ustring display_unit = nv->display_units->abbr; power = Inkscape::Util::Quantity::convert(power, unit.get_abbreviation(), display_unit.c_str()); } - std::cout << power << "power22222222\n"; SatelliteType satellite_type = FILLET; std::map gchar_map_to_satellite_type = boost::assign::map_list_of("F", FILLET)("IF", INVERSE_FILLET)("C", CHAMFER)("IC", INVERSE_CHAMFER)("KO", INVALID_SATELLITE); diff --git a/src/live_effects/lpe-knot.cpp b/src/live_effects/lpe-knot.cpp index 261612fdb..22c548c1d 100644 --- a/src/live_effects/lpe-knot.cpp +++ b/src/live_effects/lpe-knot.cpp @@ -199,7 +199,7 @@ CrossingPoints::CrossingPoints(Geom::PathVector const &paths) : std::vector Date: Tue, 19 Sep 2017 22:20:03 +0200 Subject: Fix bug #1718224 Removing PowerStroke LPE from path in master sets negative stroke width --- src/live_effects/lpe-powerstroke.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp index d87f92fcc..6576e6a62 100644 --- a/src/live_effects/lpe-powerstroke.cpp +++ b/src/live_effects/lpe-powerstroke.cpp @@ -276,7 +276,7 @@ void LPEPowerStroke::doOnRemove(SPLPEItem const* lpeitem) } Inkscape::CSSOStringStream os; - os << offset_points.median_width() * 2; + os << std::abs(offset_points.median_width()) * 2; sp_repr_css_set_property (css, "stroke-width", os.str().c_str()); sp_repr_css_set_property(css, "fill", "none"); -- cgit v1.2.3 From 42c84a546461fd30d838124870c705476cfbd693 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 20 Sep 2017 14:44:00 +0200 Subject: Update expected renderings. --- .../expected_rendering/test-glyph-y-pos-large.png | Bin 73451 -> 72482 bytes .../expected_rendering/test-glyph-y-pos.png | Bin 13746 -> 13500 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png index 0720e797c..756dc2c47 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png index 4104e6560..f4a8069be 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png differ -- cgit v1.2.3 From 9bedc7179f307d9ee937c527f7e879a08e6ce98d Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Mon, 11 Sep 2017 14:40:00 +0200 Subject: Refactor Box3d::string_from_axes to use Glib::ustring --- src/axis-manip.cpp | 12 ++++++------ src/axis-manip.h | 2 +- src/box3d-side.cpp | 13 ++++++------- src/box3d-side.h | 2 +- src/desktop-style.cpp | 6 ++---- src/ui/tools/box3d-tool.cpp | 5 +++-- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/axis-manip.cpp b/src/axis-manip.cpp index 8955202c8..2332bc0a3 100644 --- a/src/axis-manip.cpp +++ b/src/axis-manip.cpp @@ -32,12 +32,12 @@ get_remaining_axes (Axis axis) { return std::make_pair (extract_first_axis_direction (plane), extract_second_axis_direction (plane)); } -char * string_from_axes (Box3D::Axis axis) { - GString *pstring = g_string_new(""); - if (axis & Box3D::X) g_string_append_printf (pstring, "X"); - if (axis & Box3D::Y) g_string_append_printf (pstring, "Y"); - if (axis & Box3D::Z) g_string_append_printf (pstring, "Z"); - return pstring->str; +Glib::ustring string_from_axes (Box3D::Axis axis) { + Glib::ustring result; + if (axis & Box3D::X) result += "X"; + if (axis & Box3D::Y) result += "Y"; + if (axis & Box3D::Z) result += "Z"; + return result; } } // namespace Box3D diff --git a/src/axis-manip.h b/src/axis-manip.h index 5e245939e..2231acc38 100644 --- a/src/axis-manip.h +++ b/src/axis-manip.h @@ -238,7 +238,7 @@ inline Box3D::Axis get_perpendicular_axis_direction (Box3D::Axis dirs) { return Box3D::NONE; } -char * string_from_axes (Box3D::Axis axis); +Glib::ustring string_from_axes (Box3D::Axis axis); std::pair get_remaining_axes (Axis axis); } // namespace Box3D diff --git a/src/box3d-side.cpp b/src/box3d-side.cpp index 14b457ea6..d9145d17b 100644 --- a/src/box3d-side.cpp +++ b/src/box3d-side.cpp @@ -210,29 +210,28 @@ void Box3DSide::set_shape() { c->unref(); } -gchar *box3d_side_axes_string(Box3DSide *side) +Glib::ustring box3d_side_axes_string(Box3DSide *side) { - GString *pstring = g_string_new(""); - g_string_printf (pstring, "%s", Box3D::string_from_axes ((Box3D::Axis) (side->dir1 ^ side->dir2))); + Glib::ustring result(Box3d::string_from_axes((Box3D::Axis) (side->dir1 ^ side->dir2))); switch ((Box3D::Axis) (side->dir1 ^ side->dir2)) { case Box3D::XY: - g_string_append_printf (pstring, (side->front_or_rear == Box3D::FRONT) ? "front" : "rear"); + result += ((side->front_or_rear == Box3D::FRONT) ? "front" : "rear"); break; case Box3D::XZ: - g_string_append_printf (pstring, (side->front_or_rear == Box3D::FRONT) ? "top" : "bottom"); + result += ((side->front_or_rear == Box3D::FRONT) ? "top" : "bottom"); break; case Box3D::YZ: - g_string_append_printf (pstring, (side->front_or_rear == Box3D::FRONT) ? "right" : "left"); + result += ((side->front_or_rear == Box3D::FRONT) ? "right" : "left"); break; default: break; } - return pstring->str; + return result; } static void diff --git a/src/box3d-side.h b/src/box3d-side.h index 4783a5f24..29f17b8f3 100644 --- a/src/box3d-side.h +++ b/src/box3d-side.h @@ -43,7 +43,7 @@ public: void box3d_side_position_set (Box3DSide *side); // FIXME: Replace this by box3d_side_set_shape?? -char *box3d_side_axes_string(Box3DSide *side); +Glib::ustring box3d_side_axes_string(Box3DSide *side); Persp3D *box3d_side_perspective(Box3DSide *side); diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp index 19582c9ee..23f803d6a 100644 --- a/src/desktop-style.cpp +++ b/src/desktop-style.cpp @@ -197,10 +197,8 @@ sp_desktop_set_style(Inkscape::ObjectSet *set, SPDesktop *desktop, SPCSSAttr *cs SPObject *obj = *i; Box3DSide *side = dynamic_cast(obj); if (side) { - const char * descr = box3d_side_axes_string(side); - if (descr != NULL) { - prefs->mergeStyle(Glib::ustring("/desktop/") + descr + "/style", css_write); - } + prefs->mergeStyle( + Glib::ustring("/desktop/") + box3d_side_axes_string(side) + "/style", css_write); } } sp_repr_css_attr_unref(css_write); diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp index 276385335..410fc3010 100644 --- a/src/ui/tools/box3d-tool.cpp +++ b/src/ui/tools/box3d-tool.cpp @@ -530,8 +530,9 @@ void Box3dTool::drag(guint /*state*/) { } else { // use default style GString *pstring = g_string_new(""); - g_string_printf (pstring, "/tools/shapes/3dbox/%s", box3d_side_axes_string(side)); - desktop->applyCurrentOrToolStyle (side, pstring->str, false); + Glib::ustring tool_path = Glib::ustring::compose("/tools/shapes/3dbox/%1", + box3d_side_axes_string(side)); + desktop->applyCurrentOrToolStyle (side, tool_path, false); } side->updateRepr(); // calls box3d_side_write() and updates, e.g., the axes string description -- cgit v1.2.3 From 1ab105e6fc885d5d4e99f52602c7b689e3bcf79d Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Mon, 11 Sep 2017 15:36:44 +0200 Subject: Fix typo in 4e8400f0d963cdc0dfae659ebeeed3db2243bcff --- src/box3d-side.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/box3d-side.cpp b/src/box3d-side.cpp index d9145d17b..3eea8855c 100644 --- a/src/box3d-side.cpp +++ b/src/box3d-side.cpp @@ -212,7 +212,7 @@ void Box3DSide::set_shape() { Glib::ustring box3d_side_axes_string(Box3DSide *side) { - Glib::ustring result(Box3d::string_from_axes((Box3D::Axis) (side->dir1 ^ side->dir2))); + Glib::ustring result(Box3D::string_from_axes((Box3D::Axis) (side->dir1 ^ side->dir2))); switch ((Box3D::Axis) (side->dir1 ^ side->dir2)) { case Box3D::XY: -- cgit v1.2.3 From 2b7b90299e69bb06434b1d22e6dec921903a3bd0 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Mon, 11 Sep 2017 16:46:51 +0200 Subject: Add missing include. --- src/axis-manip.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/axis-manip.h b/src/axis-manip.h index 2231acc38..28875b2f5 100644 --- a/src/axis-manip.h +++ b/src/axis-manip.h @@ -15,6 +15,7 @@ #include #include #include +#include namespace Proj { -- cgit v1.2.3 From 279cc8bbb41cf03be62a5fd3913787d36ccd9635 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 08:39:29 +0200 Subject: Remove usage of GString from seltrans.cpp --- src/seltrans.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/seltrans.cpp b/src/seltrans.cpp index 9e18bbe90..dd76b679f 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -1309,12 +1309,10 @@ gboolean Inkscape::SelTrans::centerRequest(Geom::Point &pt, guint state) // status text Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(pt[Geom::X], "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(pt[Geom::Y], "px"); - GString *xs = g_string_new(x_q.string(_desktop->namedview->display_units).c_str()); - GString *ys = g_string_new(y_q.string(_desktop->namedview->display_units).c_str()); - _message_context.setF(Inkscape::NORMAL_MESSAGE, _("Move center to %s, %s"), xs->str, ys->str); - g_string_free(xs, FALSE); - g_string_free(ys, FALSE); - + Glib::ustring xs(x_q.string(_desktop->namedview->display_units)); + Glib::ustring ys(y_q.string(_desktop->namedview->display_units)); + _message_context.setF(Inkscape::NORMAL_MESSAGE, _("Move center to %s, %s"), + xs.c_str(), ys.c_str()); return TRUE; } @@ -1455,11 +1453,11 @@ void Inkscape::SelTrans::moveTo(Geom::Point const &xy, guint state) // status text Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(dxy[Geom::X], "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(dxy[Geom::Y], "px"); - GString *xs = g_string_new(x_q.string(_desktop->namedview->display_units).c_str()); - GString *ys = g_string_new(y_q.string(_desktop->namedview->display_units).c_str()); - _message_context.setF(Inkscape::NORMAL_MESSAGE, _("Move by %s, %s; with Ctrl to restrict to horizontal/vertical; with Shift to disable snapping"), xs->str, ys->str); - g_string_free(xs, TRUE); - g_string_free(ys, TRUE); + Glib::ustring xs(x_q.string(_desktop->namedview->display_units)); + Glib::ustring ys(y_q.string(_desktop->namedview->display_units)); + _message_context.setF(Inkscape::NORMAL_MESSAGE, + _("Move by %s, %s; with Ctrl to restrict to horizontal/vertical; with Shift to disable snapping"), + xs.c_str(), ys.c_str()); } // Given a location of a handle at the visual bounding box, find the corresponding location at the -- cgit v1.2.3 From bc5cab7c179b3e0b7e234731908f552b78a29676 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 09:12:38 +0200 Subject: Remove useage of GString from sp-text.cpp --- src/sp-text.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 2a88c5009..a13adbf0b 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -359,7 +359,7 @@ gchar* SPText::description() const { int unit = prefs->getInt("/options/font/unitType", SP_CSS_UNIT_PT); Inkscape::Util::Quantity q = Inkscape::Util::Quantity(style->font_size.computed, "px"); q.quantity *= this->i2doc_affine().descrim(); - GString *xs = g_string_new(q.string(sp_style_get_css_unit_string(unit)).c_str()); + Glib::ustring xs = q.string(sp_style_get_css_unit_string(unit)); char const *trunc = ""; Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) this); @@ -369,8 +369,8 @@ gchar* SPText::description() const { } char *ret = ( SP_IS_TEXT_TEXTPATH(this) - ? g_strdup_printf(_("on path%s (%s, %s)"), trunc, n, xs->str) - : g_strdup_printf(_("%s (%s, %s)"), trunc, n, xs->str) ); + ? g_strdup_printf(_("on path%s (%s, %s)"), trunc, n, xs.c_str()) + : g_strdup_printf(_("%s (%s, %s)"), trunc, n, xs.c_str()) ); return ret; } -- cgit v1.2.3 From 5fd6657569a041c62ae92d274299fc3b38c3fd0f Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 09:31:05 +0200 Subject: Remove usage of GString from tool/node.cpp --- src/ui/tool/node.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp index d6e491ac3..4f42400d4 100644 --- a/src/ui/tool/node.cpp +++ b/src/ui/tool/node.cpp @@ -559,14 +559,11 @@ Glib::ustring Handle::_getDragTip(GdkEventMotion */*event*/) const Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(dist[Geom::X], "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(dist[Geom::Y], "px"); Inkscape::Util::Quantity len_q = Inkscape::Util::Quantity(length(), "px"); - GString *x = g_string_new(x_q.string(_desktop->namedview->display_units).c_str()); - GString *y = g_string_new(y_q.string(_desktop->namedview->display_units).c_str()); - GString *len = g_string_new(len_q.string(_desktop->namedview->display_units).c_str()); + Glib::ustring x = x_q.string(_desktop->namedview->display_units); + Glib::ustring y = y_q.string(_desktop->namedview->display_units); + Glib::ustring len = len_q.string(_desktop->namedview->display_units); Glib::ustring ret = format_tip(C_("Path handle tip", - "Move handle by %s, %s; angle %.2f°, length %s"), x->str, y->str, angle, len->str); - g_string_free(x, TRUE); - g_string_free(y, TRUE); - g_string_free(len, TRUE); + "Move handle by %s, %s; angle %.2f°, length %s"), x.c_str(), y.c_str(), angle, len.c_str()); return ret; } @@ -1458,11 +1455,9 @@ Glib::ustring Node::_getDragTip(GdkEventMotion */*event*/) const Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(dist[Geom::X], "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(dist[Geom::Y], "px"); - GString *x = g_string_new(x_q.string(_desktop->namedview->display_units).c_str()); - GString *y = g_string_new(y_q.string(_desktop->namedview->display_units).c_str()); - Glib::ustring ret = format_tip(C_("Path node tip", "Move node by %s, %s"), x->str, y->str); - g_string_free(x, TRUE); - g_string_free(y, TRUE); + Glib::ustring x = x_q.string(_desktop->namedview->display_units); + Glib::ustring y = y_q.string(_desktop->namedview->display_units); + Glib::ustring ret = format_tip(C_("Path node tip", "Move node by %s, %s"), x.c_str(), y.c_str()); return ret; } -- cgit v1.2.3 From f392aac0d90b79faad248fec46450eabea0671d6 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 09:36:35 +0200 Subject: Remove usage of GString from ui/tools/spiral-tool.cpp --- src/ui/tools/spiral-tool.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/ui/tools/spiral-tool.cpp b/src/ui/tools/spiral-tool.cpp index b681aec38..d2be32855 100644 --- a/src/ui/tools/spiral-tool.cpp +++ b/src/ui/tools/spiral-tool.cpp @@ -372,11 +372,10 @@ void SpiralTool::drag(Geom::Point const &p, guint state) { /* status text */ Inkscape::Util::Quantity q = Inkscape::Util::Quantity(rad, "px"); - GString *rads = g_string_new(q.string(desktop->namedview->display_units).c_str()); + Glib::ustring rads = q.string(desktop->namedview->display_units); this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Spiral: radius %s, angle %5g°; with Ctrl to snap angle"), - rads->str, sp_round((arg + 2.0*M_PI*this->spiral->revo)*180/M_PI, 0.0001)); - g_string_free(rads, FALSE); + rads.c_str(), sp_round((arg + 2.0*M_PI*this->spiral->revo)*180/M_PI, 0.0001)); } void SpiralTool::finishItem() { -- cgit v1.2.3 From f3b050c16ac1db287f00ddd542efdb27d3c543fc Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 09:46:21 +0200 Subject: Remove unused GString in ui/tools/box3d-tool.cpp --- src/ui/tools/box3d-tool.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp index 410fc3010..69555d6c9 100644 --- a/src/ui/tools/box3d-tool.cpp +++ b/src/ui/tools/box3d-tool.cpp @@ -529,7 +529,6 @@ void Box3dTool::drag(guint /*state*/) { side->setAttribute("style", cur_style.data()); } else { // use default style - GString *pstring = g_string_new(""); Glib::ustring tool_path = Glib::ustring::compose("/tools/shapes/3dbox/%1", box3d_side_axes_string(side)); desktop->applyCurrentOrToolStyle (side, tool_path, false); -- cgit v1.2.3 From 36863a0e699b5a7cba346bca8a26e729be5a2f87 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 10:13:54 +0200 Subject: Remove remaining usage of GString in ui/tools/* --- src/ui/tools/arc-tool.cpp | 11 ++++------- src/ui/tools/pen-tool.cpp | 5 ++--- src/ui/tools/rect-tool.cpp | 23 ++++++++++++++--------- src/ui/tools/star-tool.cpp | 6 ++---- src/ui/tools/text-tool.cpp | 10 +++------- 5 files changed, 25 insertions(+), 30 deletions(-) diff --git a/src/ui/tools/arc-tool.cpp b/src/ui/tools/arc-tool.cpp index b501962fb..9ad42c842 100644 --- a/src/ui/tools/arc-tool.cpp +++ b/src/ui/tools/arc-tool.cpp @@ -385,8 +385,8 @@ void ArcTool::drag(Geom::Point pt, guint state) { Inkscape::Util::Quantity rdimx_q = Inkscape::Util::Quantity(rdimx, "px"); Inkscape::Util::Quantity rdimy_q = Inkscape::Util::Quantity(rdimy, "px"); - GString *xs = g_string_new(rdimx_q.string(desktop->namedview->display_units).c_str()); - GString *ys = g_string_new(rdimy_q.string(desktop->namedview->display_units).c_str()); + Glib::ustring xs = rdimx_q.string(desktop->namedview->display_units); + Glib::ustring ys = rdimy_q.string(desktop->namedview->display_units); if (state & GDK_CONTROL_MASK) { int ratio_x, ratio_y; @@ -399,13 +399,10 @@ void ArcTool::drag(Geom::Point pt, guint state) { ratio_y = (int) rint (rdimy / rdimx); } - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Ellipse: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point"), xs->str, ys->str, ratio_x, ratio_y); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Ellipse: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point"), xs.c_str(), ys.c_str(), ratio_x, ratio_y); } else { - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Ellipse: %s × %s; with Ctrl to make square or integer-ratio ellipse; with Shift to draw around the starting point"), xs->str, ys->str); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Ellipse: %s × %s; with Ctrl to make square or integer-ratio ellipse; with Shift to draw around the starting point"), xs.c_str(), ys.c_str()); } - - g_string_free(xs, FALSE); - g_string_free(ys, FALSE); } void ArcTool::finishItem() { diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp index 77cb5b6f8..0db5c3954 100644 --- a/src/ui/tools/pen-tool.cpp +++ b/src/ui/tools/pen-tool.cpp @@ -1291,7 +1291,7 @@ void PenTool::_setAngleDistanceStatusMessage(Geom::Point const p, int pc_point_t Geom::Point rel = p - this->p[pc_point_to_compare]; Inkscape::Util::Quantity q = Inkscape::Util::Quantity(Geom::L2(rel), "px"); - GString *dist = g_string_new(q.string(desktop->namedview->display_units).c_str()); + Glib::ustring dist = q.string(desktop->namedview->display_units); double angle = atan2(rel[Geom::Y], rel[Geom::X]) * 180 / M_PI; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (prefs->getBool("/options/compassangledisplay/value", 0) != 0) { @@ -1301,8 +1301,7 @@ void PenTool::_setAngleDistanceStatusMessage(Geom::Point const p, int pc_point_t } } - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, message, angle, dist->str); - g_string_free(dist, false); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, message, angle, dist.c_str()); } // this function changes the colors red, green and blue making them transparent or not, depending on if spiro is being used. diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp index 9ebf51e76..c04f44877 100644 --- a/src/ui/tools/rect-tool.cpp +++ b/src/ui/tools/rect-tool.cpp @@ -397,8 +397,8 @@ void RectTool::drag(Geom::Point const pt, guint state) { Inkscape::Util::Quantity rdimx_q = Inkscape::Util::Quantity(rdimx, "px"); Inkscape::Util::Quantity rdimy_q = Inkscape::Util::Quantity(rdimy, "px"); - GString *xs = g_string_new(rdimx_q.string(desktop->namedview->display_units).c_str()); - GString *ys = g_string_new(rdimy_q.string(desktop->namedview->display_units).c_str()); + Glib::ustring xs = rdimx_q.string(desktop->namedview->display_units); + Glib::ustring ys = rdimy_q.string(desktop->namedview->display_units); if (state & GDK_CONTROL_MASK) { int ratio_x, ratio_y; @@ -421,20 +421,25 @@ void RectTool::drag(Geom::Point const pt, guint state) { } if (!is_golden_ratio) { - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point"), xs->str, ys->str, ratio_x, ratio_y); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, + _("Rectangle: %s × %s (constrained to ratio %d:%d); with Shift to draw around the starting point"), + xs.c_str(), ys.c_str(), ratio_x, ratio_y); } else { if (ratio_y == 1) { - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with Shift to draw around the starting point"), xs->str, ys->str); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, + _("Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with Shift to draw around the starting point"), + xs.c_str(), ys.c_str()); } else { - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with Shift to draw around the starting point"), xs->str, ys->str); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, + _("Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with Shift to draw around the starting point"), + xs.c_str(), ys.c_str()); } } } else { - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Rectangle: %s × %s; with Ctrl to make square or integer-ratio rectangle; with Shift to draw around the starting point"), xs->str, ys->str); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, + _("Rectangle: %s × %s; with Ctrl to make square or integer-ratio rectangle; with Shift to draw around the starting point"), + xs.c_str(), ys.c_str()); } - - g_string_free(xs, FALSE); - g_string_free(ys, FALSE); } void RectTool::finishItem() { diff --git a/src/ui/tools/star-tool.cpp b/src/ui/tools/star-tool.cpp index 32f0e6d92..05a1f8f7c 100644 --- a/src/ui/tools/star-tool.cpp +++ b/src/ui/tools/star-tool.cpp @@ -389,14 +389,12 @@ void StarTool::drag(Geom::Point p, guint state) /* status text */ Inkscape::Util::Quantity q = Inkscape::Util::Quantity(r1, "px"); - GString *rads = g_string_new(q.string(desktop->namedview->display_units).c_str()); + Glib::ustring rads = q.string(desktop->namedview->display_units); this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, ( this->isflatsided? _("Polygon: radius %s, angle %5g°; with Ctrl to snap angle") : _("Star: radius %s, angle %5g°; with Ctrl to snap angle") ), - rads->str, sp_round((arg1) * 180 / M_PI, 0.0001)); - - g_string_free(rads, FALSE); + rads.c_str(), sp_round((arg1) * 180 / M_PI, 0.0001)); } void StarTool::finishItem() { diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 9091b455e..ee48c2348 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -575,13 +575,9 @@ bool TextTool::root_handler(GdkEvent* event) { // status text Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(fabs((p - this->p0)[Geom::X]), "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(fabs((p - this->p0)[Geom::Y]), "px"); - GString *xs = g_string_new(x_q.string(desktop->namedview->display_units).c_str()); - GString *ys = g_string_new(y_q.string(desktop->namedview->display_units).c_str()); - this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Flowed text frame: %s × %s"), xs->str, ys->str); - - g_string_free(xs, FALSE); - g_string_free(ys, FALSE); - + Glib::ustring xs = x_q.string(desktop->namedview->display_units); + Glib::ustring ys = y_q.string(desktop->namedview->display_units); + this->message_context->setF(Inkscape::IMMEDIATE_MESSAGE, _("Flowed text frame: %s × %s"), xs.c_str(), ys.c_str()); } else if (!this->sp_event_context_knot_mouseover()) { SnapManager &m = desktop->namedview->snap_manager; m.setup(desktop); -- cgit v1.2.3 From a5c0adc03cab0597e16ad581b58689a09167d719 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 10:24:54 +0200 Subject: Remove usage of GString in sp-guide.cpp --- src/sp-guide.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index ff0f6cadb..8b4bf121d 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -485,28 +485,25 @@ char* SPGuide::description(bool const verbose) const Inkscape::Util::Quantity x_q = Inkscape::Util::Quantity(this->point_on_line[X], "px"); Inkscape::Util::Quantity y_q = Inkscape::Util::Quantity(this->point_on_line[Y], "px"); - GString *position_string_x = g_string_new(x_q.string(namedview->display_units).c_str()); - GString *position_string_y = g_string_new(y_q.string(namedview->display_units).c_str()); + Glib::ustring position_string_x = x_q.string(namedview->display_units); + Glib::ustring position_string_y = y_q.string(namedview->display_units); gchar *shortcuts = g_strdup_printf("; %s", _("Shift+drag to rotate, Ctrl+drag to move origin, Del to delete")); if ( are_near(this->normal_to_line, Geom::Point(1., 0.)) || are_near(this->normal_to_line, -Geom::Point(1., 0.)) ) { - descr = g_strdup_printf(_("vertical, at %s"), position_string_x->str); + descr = g_strdup_printf(_("vertical, at %s"), position_string_x.c_str()); } else if ( are_near(this->normal_to_line, Geom::Point(0., 1.)) || are_near(this->normal_to_line, -Geom::Point(0., 1.)) ) { - descr = g_strdup_printf(_("horizontal, at %s"), position_string_y->str); + descr = g_strdup_printf(_("horizontal, at %s"), position_string_y.c_str()); } else { double const radians = this->angle(); double const degrees = Geom::deg_from_rad(radians); int const degrees_int = (int) round(degrees); descr = g_strdup_printf(_("at %d degrees, through (%s,%s)"), - degrees_int, position_string_x->str, position_string_y->str); + degrees_int, position_string_x.c_str(), position_string_y.c_str()); } - - g_string_free(position_string_x, TRUE); - g_string_free(position_string_y, TRUE); - + if (verbose) { gchar *oldDescr = descr; descr = g_strconcat(oldDescr, shortcuts, NULL); -- cgit v1.2.3 From f9c2a80c16d0c77fd4156181817d3b13b1037aec Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 12:06:22 +0200 Subject: Remove usage of GString in sp-style-elem.cpp --- src/sp-style-elem.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 694334d23..1a3c194b9 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -106,14 +106,14 @@ Inkscape::XML::Node* SPStyleElem::write(Inkscape::XML::Document* xml_doc, Inksca /** Returns the concatenation of the content of the text children of the specified object. */ -static GString * +static Glib::ustring concat_children(Inkscape::XML::Node const &repr) { - GString *ret = g_string_sized_new(0); - // effic: 0 is just to catch bugs. Increase to something reasonable. + Glib::ustring ret; + // effic: Initialising ret to a reasonable starting size could speed things up. for (Inkscape::XML::Node const *rch = repr.firstChild(); rch != NULL; rch = rch->next()) { if ( rch->type() == TEXT_NODE ) { - ret = g_string_append(ret, rch->content()); + ret += rch->content(); } } return ret; @@ -376,9 +376,9 @@ void SPStyleElem::read_content() { ParseTmp *parse_tmp = reinterpret_cast(sac_handler->app_data); //XML Tree being used directly here while it shouldn't be. - GString *const text = concat_children(*getRepr()); + Glib::ustring const text = concat_children(*getRepr()); CRStatus const parse_status = - cr_parser_parse_buf (parser, reinterpret_cast(text->str), text->len, CR_UTF_8); + cr_parser_parse_buf (parser, reinterpret_cast(text.c_str()), text.bytes(), CR_UTF_8); // std::cout << "SPStyeElem::read_content: result:" << std::endl; // const gchar* string = cr_stylesheet_to_string (document->style_sheet); -- cgit v1.2.3 From 7c5cc63b4d74331cb5ba71faea2d4c1ac8dcae66 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 14:38:29 +0200 Subject: Remove usage of GString in sp-object.cpp --- src/sp-object.cpp | 17 +++++++++-------- src/sp-object.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/sp-object.cpp b/src/sp-object.cpp index 9f15935ac..fc222f701 100644 --- a/src/sp-object.cpp +++ b/src/sp-object.cpp @@ -1540,7 +1540,10 @@ char * SPObject::getTitleOrDesc(gchar const *svg_tagname) const char *result = NULL; SPObject *elem = findFirstChild(svg_tagname); if ( elem ) { - result = elem->textualContent(); + //This string copy could be avoided by changing + //the return type of SPObject::getTitleOrDesc + //to std::unique_ptr + result = g_strdup(elem->textualContent().c_str()); } return result; } @@ -1625,24 +1628,22 @@ SPObject* SPObject::findFirstChild(gchar const *tagname) const return nullptr; } -char* SPObject::textualContent() const +Glib::ustring SPObject::textualContent() const { - GString* text = g_string_new(""); + Glib::ustring text; for (auto& child: children) { Inkscape::XML::NodeType child_type = child.repr->type(); if (child_type == Inkscape::XML::ELEMENT_NODE) { - char* new_string = child.textualContent(); - g_string_append(text, new_string); - g_free(new_string); + text += child.textualContent(); } else if (child_type == Inkscape::XML::TEXT_NODE) { - g_string_append(text, child.repr->content()); + text += child.repr->content(); } } - return g_string_free(text, FALSE); + return text; } // For debugging: Print SP tree structure. diff --git a/src/sp-object.h b/src/sp-object.h index d145e966b..08e69f771 100644 --- a/src/sp-object.h +++ b/src/sp-object.h @@ -803,7 +803,7 @@ private: * content except the tags). * Must not be used on anything except elements. */ - char * textualContent() const; + Glib::ustring textualContent() const; /* Real handlers of repr signals */ -- cgit v1.2.3 From a474159bf7130e9b46a8da1efaf32e9eac4c55b7 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Thu, 21 Sep 2017 23:12:27 +0200 Subject: Fix for bug #1715433 Clone original LPE can no longer be used to fill a powerstroke path --- src/live_effects/lpe-clone-original.cpp | 284 +++++++---------------- src/live_effects/lpe-clone-original.h | 35 ++- src/live_effects/lpe-fill-between-many.cpp | 12 +- src/live_effects/lpe-fill-between-many.h | 6 +- src/live_effects/parameter/originalitemarray.cpp | 32 ++- src/live_effects/parameter/originalitemarray.h | 5 +- src/live_effects/parameter/originalpatharray.cpp | 20 +- src/live_effects/parameter/originalpatharray.h | 2 +- src/selection-chemistry.cpp | 31 ++- src/sp-ellipse.cpp | 2 + src/sp-spiral.cpp | 2 + src/sp-star.cpp | 2 + src/ui/dialog/livepatheffect-editor.cpp | 8 +- 13 files changed, 164 insertions(+), 277 deletions(-) diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index e72735370..b035cc1d0 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -5,6 +5,10 @@ */ #include "live_effects/lpe-clone-original.h" +#include "live_effects/lpe-spiro.h" +#include "live_effects/lpe-bspline.h" +#include "live_effects/lpeobject.h" +#include "live_effects/lpeobject-reference.h" #include "display/curve.h" #include "svg/path-string.h" #include "svg/svg.h" @@ -18,59 +22,45 @@ namespace Inkscape { namespace LivePathEffect { +static const Util::EnumData ClonelpemethodData[] = { + { CLM_NONE, N_("No shape"), "none" }, + { CLM_ORIGINALD, N_("Without LPE's"), "originald" }, + { CLM_BSPLINESPIRO, N_("With Spiro or BSpline"), "bsplinespiro" }, + { CLM_D, N_("With LPE's"), "d" } +}; +static const Util::EnumDataConverter CLMConverter(ClonelpemethodData, CLM_END); + LPECloneOriginal::LPECloneOriginal(LivePathEffectObject *lpeobject) : Effect(lpeobject), linkeditem(_("Linked Item:"), _("Item from which to take the original data"), "linkeditem", &wr, this), - scale(_("Scale %"), _("Scale item %"), "scale", &wr, this, 100.0), - preserve_position(_("Preserve position"), _("Preserve position"), "preserve_position", &wr, this, false), - inverse(_("Inverse clone"), _("Use LPE item as origin"), "inverse", &wr, this, false), - d(_("Clone shape -d-"), _("Clone shape -d-"), "d", &wr, this, true), - transform(_("Clone transforms"), _("Clone transforms"), "transform", &wr, this, true), - fill(_("Clone fill"), _("Clone fill"), "fill", &wr, this, false), - stroke(_("Clone stroke"), _("Clone stroke"), "stroke", &wr, this, false), - paintorder(_("Clone paint order"), _("Clone paint order"), "paintorder", &wr, this, false), - opacity(_("Clone opacity"), _("Clone opacity"), "opacity", &wr, this, false), - filter(_("Clone filter"), _("Clone filter"), "filter", &wr, this, false), + method(_("Shape linked"), _("Shape linked"), "method", CLMConverter, &wr, this, CLM_D), attributes("Attributes linked", "Attributes linked, comma separated atributes", "attributes", &wr, this,""), - style_attributes("Style attributes linked", "Style attributes linked, comma separated atributes", "style_attributes", &wr, this,""), - expanded(false), - origin(Geom::Point(0,0)) + style_attributes("Style attributes linked", "Style attributes linked, comma separated attributes like fill, filter, opacity", "style_attributes", &wr, this,""), + allow_transforms(_("Alow transforms"), _("Alow transforms"), "allow_transforms", &wr, this, true) { //0.92 compatibility const gchar * linkedpath = this->getRepr()->attribute("linkedpath"); if (linkedpath && strcmp(linkedpath, "") != 0){ this->getRepr()->setAttribute("linkeditem", linkedpath); this->getRepr()->setAttribute("linkedpath", NULL); - this->getRepr()->setAttribute("transform", "false"); + this->getRepr()->setAttribute("method", "bsplinespiro"); + this->getRepr()->setAttribute("allow_transforms", "false"); }; registerParameter(&linkeditem); - registerParameter(&scale); + registerParameter(&method); registerParameter(&attributes); registerParameter(&style_attributes); - registerParameter(&preserve_position); - registerParameter(&inverse); - registerParameter(&d); - registerParameter(&transform); - registerParameter(&fill); - registerParameter(&stroke); - registerParameter(&paintorder); - registerParameter(&opacity); - registerParameter(&filter); - scale.param_set_range(0.01, 999999.0); - scale.param_set_increments(1, 1); - scale.param_set_digits(2); + registerParameter(&allow_transforms); attributes.param_hide_canvas_text(); style_attributes.param_hide_canvas_text(); - preserve_position_changed = preserve_position; - preserve_affine = Geom::identity(); } void -LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, const char * attributes, const char * style_attributes, bool root) +LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, const char * attributes, const char * style_attributes) { SPDocument * document = SP_ACTIVE_DOCUMENT; - if (!document) { + if (!document || !origin || !dest) { return; } if ( SP_IS_GROUP(origin) && SP_IS_GROUP(dest) && SP_GROUP(origin)->getItemCount() == SP_GROUP(dest)->getItemCount() ) { @@ -79,7 +69,7 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co for (std::vector::iterator obj_it = childs.begin(); obj_it != childs.end(); ++obj_it) { SPObject *dest_child = dest->nthChild(index); - cloneAttrbutes((*obj_it), dest_child, live, attributes, style_attributes, false); + cloneAttrbutes((*obj_it), dest_child, attributes, style_attributes); index++; } } @@ -97,7 +87,7 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co for ( std::vector::const_iterator iter=mask_list.begin();iter!=mask_list.end();++iter) { SPObject * mask_data = *iter; SPObject * mask_dest_data = mask_list_dest[i]; - cloneAttrbutes(mask_data, mask_dest_data, live, attributes, style_attributes, false); + cloneAttrbutes(mask_data, mask_dest_data, attributes, style_attributes); i++; } } @@ -112,86 +102,60 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co for ( std::vector::const_iterator iter=clippath_list.begin();iter!=clippath_list.end();++iter) { SPObject * clippath_data = *iter; SPObject * clippath_dest_data = clippath_list_dest[i]; - cloneAttrbutes(clippath_data, clippath_dest_data, live, attributes, style_attributes, false); + cloneAttrbutes(clippath_data, clippath_dest_data, attributes, style_attributes); i++; } } } gchar ** attarray = g_strsplit(attributes, ",", 0); gchar ** iter = attarray; - Geom::Affine affine_dest = Geom::identity(); - Geom::Affine affine_origin = Geom::identity(); - Geom::Affine affine_previous = Geom::identity(); - sp_svg_transform_read(SP_ITEM(dest)->getAttribute("transform"), &affine_dest); - sp_svg_transform_read(SP_ITEM(origin)->getAttribute("transform"), &affine_origin); while (*iter != NULL) { const char* attribute = (*iter); - if ( std::strcmp(attribute, "transform") == 0 ) { - if (preserve_position) { - Geom::Affine dest_affine = Geom::identity(); - if (root) { - dest_affine *= affine_origin; - if (preserve_affine == Geom::identity()) { - dest_affine *= Geom::Translate(affine_dest.translation()); + if (strlen(attribute)) { + if ( shape_dest && shape_origin && (std::strcmp(attribute, "d") == 0)) { + SPCurve *c = NULL; + if (method == CLM_BSPLINESPIRO) { + c = shape_origin->getCurveBeforeLPE(); + SPLPEItem * lpe_item = SP_LPE_ITEM(origin); + if (lpe_item) { + PathEffectList lpelist = lpe_item->getEffectList(); + PathEffectList::iterator i; + for (i = lpelist.begin(); i != lpelist.end(); ++i) { + LivePathEffectObject *lpeobj = (*i)->lpeobject; + if (lpeobj) { + Inkscape::LivePathEffect::Effect *lpe = lpeobj->get_lpe(); + if (dynamic_cast(lpe)) { + LivePathEffect::sp_bspline_do_effect(c, 0); + } else if (dynamic_cast(lpe)) { + LivePathEffect::sp_spiro_do_effect(c); + } + } + } } - dest_affine *= Geom::Translate(affine_origin.translation()).inverse(); - dest_affine *= Geom::Translate(preserve_affine.translation()); - affine_previous = preserve_affine; - preserve_affine = Geom::identity(); - gchar * str = sp_svg_transform_write(dest_affine); - SP_ITEM(dest)->getRepr()->setAttribute("transform", str); - g_free(str); - } - } else { - gchar * str = sp_svg_transform_write(affine_origin); - SP_ITEM(dest)->getRepr()->setAttribute("transform", str); - g_free(str); - } - } else if ( shape_dest && shape_origin && live && (std::strcmp(attribute, "d") == 0)) { - SPCurve *c = NULL; - if (inverse) { - c = shape_origin->getCurveBeforeLPE(); - } else { - c = shape_origin->getCurve(); - } - if (c) { - Geom::PathVector c_pv = c->get_pathvector(); - Geom::OptRect orig_bbox = SP_ITEM(origin)->geometricBounds(); - Geom::OptRect dest_bbox = SP_ITEM(dest)->geometricBounds(); - if (dest_bbox && orig_bbox && root) { - Geom::Point orig_point = (*orig_bbox).corner(0); - Geom::Point dest_point = (*dest_bbox).corner(0); - if (scale != 100.0) { - double scale_affine = scale/100.0; - Geom::Scale scale = Geom::Scale(scale_affine); - c_pv *= Geom::Translate(orig_point).inverse(); - c_pv *= scale; - c_pv *= Geom::Translate(orig_point); - } - if (preserve_position) { - c_pv *= Geom::Translate(dest_point - orig_point); - } - } - if (inverse) { - c_pv *= i2anc_affine(origin, sp_lpe_item); + } else if(method == CLM_ORIGINALD) { + c = shape_origin->getCurveBeforeLPE(); } else { - c_pv *= i2anc_affine(dest, sp_lpe_item); + c = shape_origin->getCurve(); } - c->set_pathvector(c_pv); - if (!path_origin) { - shape_dest->setCurveInsync(c, TRUE); - gchar *str = sp_svg_write_path(c_pv); - dest->getRepr()->setAttribute(attribute, str); - g_free(str); + if (c) { + Geom::PathVector c_pv = c->get_pathvector(); + c_pv *= i2anc_affine(dest, sp_lpe_item); + c->set_pathvector(c_pv); + if (!path_origin) { + shape_dest->setCurveInsync(c, TRUE); + gchar *str = sp_svg_write_path(c_pv); + dest->getRepr()->setAttribute(attribute, str); + g_free(str); + } else { + shape_dest->setCurve(c, TRUE); + } + c->unref(); } else { - shape_dest->setCurve(c, TRUE); + dest->getRepr()->setAttribute(attribute, NULL); } - c->unref(); } else { - dest->getRepr()->setAttribute(attribute, NULL); + dest->getRepr()->setAttribute(attribute, origin->getRepr()->attribute(attribute)); } - } else { - dest->getRepr()->setAttribute(attribute, origin->getRepr()->attribute(attribute)); } iter++; } @@ -204,11 +168,13 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co gchar ** styleiter = styleattarray; while (*styleiter != NULL) { const char* attribute = (*styleiter); - const char* origin_attribute = sp_repr_css_property(css_origin, attribute, ""); - if (!strlen(origin_attribute)) { //==0 - sp_repr_css_set_property (css_dest, attribute, NULL); - } else { - sp_repr_css_set_property (css_dest, attribute, origin_attribute); + if (strlen(attribute)) { + const char* origin_attribute = sp_repr_css_property(css_origin, attribute, ""); + if (!strlen(origin_attribute)) { //==0 + sp_repr_css_set_property (css_dest, attribute, NULL); + } else { + sp_repr_css_set_property (css_dest, attribute, origin_attribute); + } } styleiter++; } @@ -221,123 +187,29 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, co void LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ if (linkeditem.linksToItem()) { - linkeditem.setInsensitive(inverse); - if ( preserve_position_changed != preserve_position ) { - if (!preserve_position) { - sp_svg_transform_read(SP_ITEM(sp_lpe_item)->getAttribute("transform"), &preserve_affine); - } - preserve_position_changed = preserve_position; - } Glib::ustring attr = ""; - if (d) { + if (method != CLM_NONE) { attr.append("d,"); } - if (transform) { - attr.append("transform,"); - } attr.append(Glib::ustring(attributes.param_getSVGValue()).append(",")); if (attr.size() && !Glib::ustring(attributes.param_getSVGValue()).size()) { attr.erase (attr.size()-1, 1); } Glib::ustring style_attr = ""; - if (fill) { - style_attr.append("fill,").append("fill-rule,"); - } - if (stroke) { - style_attr.append("stroke,").append("stroke-width,").append("stroke-linecap,").append("stroke-linejoin,"); - style_attr.append("stroke-opacity,").append("stroke-miterlimit,").append("stroke-dasharray,"); - style_attr.append("stroke-opacity,").append("stroke-dashoffset,").append("marker-start,"); - style_attr.append("marker-mid,").append("marker-end,"); - } - if (paintorder) { - style_attr.append("paint-order,"); - } - if (filter) { - style_attr.append("filter,"); - } - if (opacity) { - style_attr.append("opacity,"); - } if (style_attr.size() && !Glib::ustring(style_attributes.param_getSVGValue()).size()) { style_attr.erase (style_attr.size()-1, 1); } style_attr.append(Glib::ustring(style_attributes.param_getSVGValue()).append(",")); - SPItem * from = inverse ? SP_ITEM(sp_lpe_item) : SP_ITEM(linkeditem.getObject()); - SPItem * to = !inverse ? SP_ITEM(sp_lpe_item) : SP_ITEM(linkeditem.getObject()); - cloneAttrbutes(from, to, true, g_strdup(attr.c_str()), g_strdup(style_attr.c_str()), true); - Geom::OptRect bbox = from->geometricBounds(); - if (bbox && preserve_position && origin != Geom::Point(0,0)) { - origin = (*bbox).corner(0) - origin; - to->transform *= Geom::Translate(origin); - } - bbox = from->geometricBounds(); - if (bbox && preserve_position) { - origin = (*bbox).corner(0); + SPItem * origin = SP_ITEM(linkeditem.getObject()); + SPItem * dest = SP_ITEM(sp_lpe_item); + cloneAttrbutes(origin, dest, g_strdup(attr.c_str()), g_strdup(style_attr.c_str())); + if (!allow_transforms) { + SP_ITEM(dest)->getRepr()->setAttribute("transform", SP_ITEM(origin)->getAttribute("transform")); } } } - -Gtk::Widget * -LPECloneOriginal::newWidget() -{ - // use manage here, because after deletion of Effect object, others might - // still be pointing to this widget. - Gtk::VBox *vbox = Gtk::manage(new Gtk::VBox(Effect::newWidget())); - vbox->set_border_width(5); - vbox->set_homogeneous(false); - vbox->set_spacing(2); - Gtk::VBox * vbox_expander = Gtk::manage( new Gtk::VBox(Effect::newWidget()) ); - vbox_expander->set_border_width(0); - vbox_expander->set_spacing(2); - std::vector::iterator it = param_vector.begin(); - while (it != param_vector.end()) { - if ((*it)->widget_is_visible) { - Parameter * param = *it; - if (param->param_key == "linkedpath") { - ++it; - continue; - } - Gtk::Widget * widg = param->param_newWidget(); - Glib::ustring * tip = param->param_getTooltip(); - if (widg) { - if (param->param_key != "attributes" && - param->param_key != "style_attributes") { - vbox->pack_start(*widg, true, true, 2); - } else { - vbox_expander->pack_start(*widg, true, true, 2); - } - if (tip) { - widg->set_tooltip_text(*tip); - } else { - widg->set_tooltip_text(""); - widg->set_has_tooltip(false); - } - } - } - - ++it; - } - expander = Gtk::manage(new Gtk::Expander(Glib::ustring(_("Show attributes override")))); - expander->add(*vbox_expander); - expander->set_expanded(expanded); - expander->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &LPECloneOriginal::onExpanderChanged) ); - vbox->pack_start(*expander, true, true, 2); - return dynamic_cast(vbox); -} - -void -LPECloneOriginal::onExpanderChanged() -{ - expanded = expander->get_expanded(); - if(expanded) { - expander->set_label (Glib::ustring(_("Hide attributes override"))); - } else { - expander->set_label (Glib::ustring(_("Show attributes override"))); - } -} - LPECloneOriginal::~LPECloneOriginal() { @@ -346,15 +218,15 @@ LPECloneOriginal::~LPECloneOriginal() void LPECloneOriginal::transform_multiply(Geom::Affine const& postmul, bool set) { - if (linkeditem.linksToItem()) { - linkeditem.getObject()->requestModified(SP_OBJECT_MODIFIED_FLAG); + if (!allow_transforms && linkeditem.linksToItem()) { + sp_lpe_item->transform *= postmul.inverse(); } } void LPECloneOriginal::doEffect (SPCurve * curve) { - if (linkeditem.linksToItem() && !inverse) { + if (linkeditem.linksToItem()) { SPShape * shape = getCurrentShape(); if(shape){ curve->set_pathvector(shape->getCurve()->get_pathvector()); diff --git a/src/live_effects/lpe-clone-original.h b/src/live_effects/lpe-clone-original.h index 9bab8553f..b78b144bc 100644 --- a/src/live_effects/lpe-clone-original.h +++ b/src/live_effects/lpe-clone-original.h @@ -10,16 +10,22 @@ */ #include #include "live_effects/effect.h" +#include "live_effects/parameter/enum.h" #include "live_effects/parameter/originalitem.h" -#include "live_effects/parameter/originalpath.h" -#include "live_effects/parameter/parameter.h" -#include "live_effects/parameter/point.h" #include "live_effects/parameter/text.h" #include "live_effects/lpegroupbbox.h" namespace Inkscape { namespace LivePathEffect { +enum Clonelpemethod { + CLM_NONE, + CLM_ORIGINALD, + CLM_BSPLINESPIRO, + CLM_D, + CLM_END +}; + class LPECloneOriginal : public Effect, GroupBBoxEffect { public: LPECloneOriginal(LivePathEffectObject *lpeobject); @@ -27,29 +33,14 @@ public: virtual void doEffect (SPCurve * curve); virtual void doBeforeEffect (SPLPEItem const* lpeitem); virtual void transform_multiply(Geom::Affine const& postmul, bool set); - virtual Gtk::Widget * newWidget(); - void onExpanderChanged(); - void cloneAttrbutes(SPObject *origin, SPObject *dest, bool live, const char * attributes, const char * style_attributes, bool root); + void cloneAttrbutes(SPObject *origin, SPObject *dest, const char * attributes, const char * style_attributes); private: - OriginalItemParam linkeditem; - ScalarParam scale; - BoolParam preserve_position; - BoolParam inverse; - BoolParam d; - BoolParam transform; - BoolParam fill; - BoolParam stroke; - BoolParam paintorder; - BoolParam opacity; - BoolParam filter; + OriginalItemParam linkeditem; + EnumParam method; TextParam attributes; TextParam style_attributes; - Geom::Point origin; - bool preserve_position_changed; - bool expanded; - Gtk::Expander * expander; - Geom::Affine preserve_affine; + BoolParam allow_transforms; LPECloneOriginal(const LPECloneOriginal&); LPECloneOriginal& operator=(const LPECloneOriginal&); }; diff --git a/src/live_effects/lpe-fill-between-many.cpp b/src/live_effects/lpe-fill-between-many.cpp index e380ca2dd..7e2131f76 100644 --- a/src/live_effects/lpe-fill-between-many.cpp +++ b/src/live_effects/lpe-fill-between-many.cpp @@ -22,16 +22,16 @@ namespace Inkscape { namespace LivePathEffect { static const Util::EnumData FilllpemethodData[] = { - { FLM_NONE, N_("Without LPE"), "none" }, - { FLM_PARTIAL, N_("Spiro/BSpline"), "partial" }, - { FLM_ALL, N_("All LPE"), "all" } + { FLM_ORIGINALD, N_("Without LPE's"), "originald" }, + { FLM_BSPLINESPIRO, N_("With Spiro or BSpline"), "bsplinespiro" }, + { FLM_D, N_("With LPE's"), "d" } }; static const Util::EnumDataConverter FLMConverter(FilllpemethodData, FLM_END); LPEFillBetweenMany::LPEFillBetweenMany(LivePathEffectObject *lpeobject) : Effect(lpeobject), linked_paths(_("Linked path:"), _("Paths from which to take the original path data"), "linkedpaths", &wr, this), - method(_("LPE's on linked:"), _("LPE's on linked"), "method", FLMConverter, &wr, this, FLM_PARTIAL), + method(_("LPE's on linked:"), _("LPE's on linked"), "method", FLMConverter, &wr, this, FLM_BSPLINESPIRO), fuse(_("Fuse coincident points"), _("Fuse coincident points"), "fuse", &wr, this, false), allow_transforms(_("Allow transforms"), _("Allow transforms"), "allow_transforms", &wr, this, false), join(_("Join subpaths"), _("Join subpaths"), "join", &wr, this, true), @@ -104,10 +104,10 @@ void LPEFillBetweenMany::doOnApply (SPLPEItem const* lpeitem) void LPEFillBetweenMany::doEffect (SPCurve * curve) { if (previous_method != method) { - if (method == FLM_PARTIAL) { + if (method == FLM_BSPLINESPIRO) { linked_paths.allowOnlyBsplineSpiro(true); linked_paths.setFromOriginalD(false); - } else if(method == FLM_NONE) { + } else if(method == FLM_ORIGINALD) { linked_paths.allowOnlyBsplineSpiro(false); linked_paths.setFromOriginalD(true); } else { diff --git a/src/live_effects/lpe-fill-between-many.h b/src/live_effects/lpe-fill-between-many.h index da3a532bf..7ff998309 100644 --- a/src/live_effects/lpe-fill-between-many.h +++ b/src/live_effects/lpe-fill-between-many.h @@ -18,9 +18,9 @@ namespace Inkscape { namespace LivePathEffect { enum Filllpemethod { - FLM_NONE, - FLM_PARTIAL, - FLM_ALL, + FLM_ORIGINALD, + FLM_BSPLINESPIRO, + FLM_D, FLM_END }; diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp index fddbfe4ce..24b002e18 100644 --- a/src/live_effects/parameter/originalitemarray.cpp +++ b/src/live_effects/parameter/originalitemarray.cpp @@ -44,13 +44,13 @@ public: { add(_colObject); add(_colLabel); - add(_colActived); + add(_colActive); } virtual ~ModelColumns() {} Gtk::TreeModelColumn _colObject; Gtk::TreeModelColumn _colLabel; - Gtk::TreeModelColumn _colActived; + Gtk::TreeModelColumn _colActive; }; OriginalItemArrayParam::OriginalItemArrayParam( const Glib::ustring& label, @@ -62,7 +62,7 @@ OriginalItemArrayParam::OriginalItemArrayParam( const Glib::ustring& label, _vector(), _tree(), _text_renderer(), - _toggle_renderer(), + _toggle_active(), _scroller() { _model = new ModelColumns(); @@ -72,12 +72,12 @@ OriginalItemArrayParam::OriginalItemArrayParam( const Glib::ustring& label, _tree.set_reorderable(true); _tree.enable_model_drag_dest (Gdk::ACTION_MOVE); - Gtk::CellRendererToggle * _toggle_renderer = manage(new Gtk::CellRendererToggle()); - int toggleColNum = _tree.append_column(_("Active"), *_toggle_renderer) - 1; - Gtk::TreeViewColumn* col = _tree.get_column(toggleColNum); - _toggle_renderer->set_activatable(true); - _toggle_renderer->signal_toggled().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_active_toggled)); - col->add_attribute(_toggle_renderer->property_active(), _model->_colActived); + Gtk::CellRendererToggle * _toggle_active = manage(new Gtk::CellRendererToggle()); + int activeColNum = _tree.append_column(_("Active"), *_toggle_active) - 1; + Gtk::TreeViewColumn* col_active = _tree.get_column(activeColNum); + _toggle_active->set_activatable(true); + _toggle_active->signal_toggled().connect(sigc::mem_fun(*this, &OriginalItemArrayParam::on_active_toggled)); + col_active->add_attribute(_toggle_active->property_active(), _model->_colActive); _text_renderer = manage(new Gtk::CellRendererText()); int nameColNum = _tree.append_column(_("Name"), *_text_renderer) - 1; @@ -113,8 +113,8 @@ void OriginalItemArrayParam::on_active_toggled(const Glib::ustring& item) Gtk::TreeModel::iterator iter = _store->get_iter(item); Gtk::TreeModel::Row row = *iter; ItemAndActive *w = row[_model->_colObject]; - row[_model->_colActived] = !row[_model->_colActived]; - w->actived = row[_model->_colActived]; + row[_model->_colActive] = !row[_model->_colActive]; + w->actived = row[_model->_colActive]; gchar * full = param_getSVGValue(); param_write_to_repr(full); @@ -416,7 +416,7 @@ bool OriginalItemArrayParam::param_readSVGValue(const gchar* strvalue) row[_model->_colObject] = w; row[_model->_colLabel] = obj ? ( obj->label() ? obj->label() : obj->getId() ) : w->href; - row[_model->_colActived] = w->actived; + row[_model->_colActive] = w->actived; g_strfreev (substrarray); } } @@ -442,6 +442,14 @@ gchar * OriginalItemArrayParam::param_getSVGValue() const return str; } +void OriginalItemArrayParam::update() +{ + for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { + SPObject *linked_obj = (*iter)->ref.getObject(); + linked_modified(linked_obj, SP_OBJECT_MODIFIED_FLAG, *iter); + } +} + } /* namespace LivePathEffect */ } /* namespace Inkscape */ diff --git a/src/live_effects/parameter/originalitemarray.h b/src/live_effects/parameter/originalitemarray.h index 3b300bd25..f600aba34 100644 --- a/src/live_effects/parameter/originalitemarray.h +++ b/src/live_effects/parameter/originalitemarray.h @@ -87,7 +87,7 @@ protected: Glib::RefPtr _store; Gtk::TreeView _tree; Gtk::CellRendererText *_text_renderer; - Gtk::CellRendererToggle *_toggle_renderer; + Gtk::CellRendererToggle *_toggle_active; Gtk::TreeView::Column *_name_column; Gtk::ScrolledWindow _scroller; @@ -95,9 +95,10 @@ protected: void on_remove_button_click(); void on_up_button_click(); void on_down_button_click(); - void on_active_toggled(const Glib::ustring& actived); + void on_active_toggled(const Glib::ustring& item); private: + void update(); OriginalItemArrayParam(const OriginalItemArrayParam&); OriginalItemArrayParam& operator=(const OriginalItemArrayParam&); }; diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 8ac07b98f..d67f08e5b 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -73,7 +73,7 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, _vector(), _tree(), _text_renderer(), - _toggle_renderer(), + _toggle_reverse(), _toggle_visible(), _scroller() { @@ -85,20 +85,20 @@ OriginalPathArrayParam::OriginalPathArrayParam( const Glib::ustring& label, _tree.enable_model_drag_dest (Gdk::ACTION_MOVE); - Gtk::CellRendererToggle * _toggle_renderer = manage(new Gtk::CellRendererToggle()); - int toggleColNum = _tree.append_column(_("Reverse"), *_toggle_renderer) - 1; - Gtk::TreeViewColumn* col = _tree.get_column(toggleColNum); - _toggle_renderer->set_activatable(true); - _toggle_renderer->signal_toggled().connect(sigc::mem_fun(*this, &OriginalPathArrayParam::on_reverse_toggled)); - col->add_attribute(_toggle_renderer->property_active(), _model->_colReverse); + Gtk::CellRendererToggle * _toggle_reverse = manage(new Gtk::CellRendererToggle()); + int reverseColNum = _tree.append_column(_("Reverse"), *_toggle_reverse) - 1; + Gtk::TreeViewColumn* col_reverse = _tree.get_column(reverseColNum); + _toggle_reverse->set_activatable(true); + _toggle_reverse->signal_toggled().connect(sigc::mem_fun(*this, &OriginalPathArrayParam::on_reverse_toggled)); + col_reverse->add_attribute(_toggle_reverse->property_active(), _model->_colReverse); Gtk::CellRendererToggle * _toggle_visible = manage(new Gtk::CellRendererToggle()); - int toggleColNum2 = _tree.append_column(_("Visible"), *_toggle_visible) - 1; - Gtk::TreeViewColumn* col2 = _tree.get_column(toggleColNum2); + int visibleColNum = _tree.append_column(_("Visible"), *_toggle_visible) - 1; + Gtk::TreeViewColumn* col_visible = _tree.get_column(visibleColNum); _toggle_visible->set_activatable(true); _toggle_visible->signal_toggled().connect(sigc::mem_fun(*this, &OriginalPathArrayParam::on_visible_toggled)); - col2->add_attribute(_toggle_visible->property_active(), _model->_colVisible); + col_visible->add_attribute(_toggle_visible->property_active(), _model->_colVisible); _text_renderer = manage(new Gtk::CellRendererText()); int nameColNum = _tree.append_column(_("Name"), *_text_renderer) - 1; diff --git a/src/live_effects/parameter/originalpatharray.h b/src/live_effects/parameter/originalpatharray.h index cffa2911f..0ba6984c2 100644 --- a/src/live_effects/parameter/originalpatharray.h +++ b/src/live_effects/parameter/originalpatharray.h @@ -93,7 +93,7 @@ protected: Glib::RefPtr _store; Gtk::TreeView _tree; Gtk::CellRendererText *_text_renderer; - Gtk::CellRendererToggle *_toggle_renderer; + Gtk::CellRendererToggle *_toggle_reverse; Gtk::CellRendererToggle *_toggle_visible; Gtk::TreeView::Column *_name_column; Gtk::ScrolledWindow _scroller; diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 9e0298f6a..807c8f7e1 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2911,10 +2911,12 @@ void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) Inkscape::SVGOStringStream os; SPObject * firstItem = NULL; auto items_= items(); + bool multiple = false; for (auto i=items_.begin();i!=items_.end();++i){ if (SP_IS_SHAPE(*i) || SP_IS_TEXT(*i)) { if (firstItem) { os << "|"; + multiple = true; } else { firstItem = SP_ITEM(*i); } @@ -2924,19 +2926,21 @@ void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) if (firstItem) { Inkscape::XML::Document *xml_doc = document()->getReprDoc(); SPObject *parent = firstItem->parent; - // create the LPE Inkscape::XML::Node *lpe_repr = xml_doc->createElement("inkscape:path-effect"); - { + if (multiple) { lpe_repr->setAttribute("effect", "fill_between_many"); lpe_repr->setAttribute("linkedpaths", os.str()); lpe_repr->setAttribute("applied", "true"); - gchar const *method_str = allow_transforms ? "all" : "partial"; - lpe_repr->setAttribute("method", method_str); - gchar const *allow_transforms_str = allow_transforms ? "true" : "false"; - lpe_repr->setAttribute("allow_transforms", allow_transforms_str); - document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute + } else { + lpe_repr->setAttribute("effect", "clone_original"); + lpe_repr->setAttribute("linkeditem", ((Glib::ustring)"#" + (Glib::ustring)firstItem->getId()).c_str()); } + gchar const *method_str = allow_transforms ? "d" : "bsplinespiro"; + lpe_repr->setAttribute("method", method_str); + gchar const *allow_transforms_str = allow_transforms ? "true" : "false"; + lpe_repr->setAttribute("allow_transforms", allow_transforms_str); + document()->getDefs()->getRepr()->addChild(lpe_repr, NULL); // adds to and assigns the 'id' attribute std::string lpe_id_href = std::string("#") + lpe_repr->attribute("id"); Inkscape::GC::release(lpe_repr); @@ -2946,18 +2950,21 @@ void ObjectSet::cloneOriginalPathLPE(bool allow_transforms) clone->setAttribute("d", "M 0 0", false); // add the new clone to the top of the original's parent parent->appendChildRepr(clone); + // select the new object: + set(clone); + Inkscape::GC::release(clone); SPObject *clone_obj = document()->getObjectById(clone->attribute("id")); SPLPEItem *clone_lpeitem = dynamic_cast(clone_obj); if (clone_lpeitem) { clone_lpeitem->addPathEffect(lpe_id_href, false); } } + if (multiple) { + DocumentUndo::done(document(), SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE, _("Fill between many")); + } else { + DocumentUndo::done(document(), SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE, _("Clone original")); + } - DocumentUndo::done(document(), SP_VERB_EDIT_CLONE_ORIGINAL_PATH_LPE, _("Fill between many")); - // select the new object: - set(clone); - - Inkscape::GC::release(clone); } else { if(desktop()) desktop()->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select path(s) to fill.")); diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index 30c1096ca..c2dca1fc3 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -503,6 +503,8 @@ Geom::Affine SPGenericEllipse::set_transform(Geom::Affine const &xform) { // Allow live effects if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index d75db3daa..f59fc0720 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -436,6 +436,8 @@ Geom::Affine SPSpiral::set_transform(Geom::Affine const &xform) // Allow live effects if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } diff --git a/src/sp-star.cpp b/src/sp-star.cpp index d7ee352c7..5913dde20 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -518,6 +518,8 @@ Geom::Affine SPStar::set_transform(Geom::Affine const &xform) // Allow live effects if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } diff --git a/src/ui/dialog/livepatheffect-editor.cpp b/src/ui/dialog/livepatheffect-editor.cpp index 02f76dbbb..28a42929b 100644 --- a/src/ui/dialog/livepatheffect-editor.cpp +++ b/src/ui/dialog/livepatheffect-editor.cpp @@ -206,9 +206,11 @@ LivePathEffectEditor::showParams(LivePathEffect::Effect& effect) if (defaultswidget) { Gtk::Expander * expander = NULL; std::vector childs = dynamic_cast (effectwidget)->get_children(); - std::vector childs_default = dynamic_cast (childs[childs.size()-1])->get_children(); - if ((expander = dynamic_cast(childs_default[childs_default.size()-1]))){ - expanderopen = expander->get_expanded(); + if (childs.size()) { + std::vector childs_default = dynamic_cast (childs[childs.size()-1])->get_children(); + if ((expander = dynamic_cast(childs_default[childs_default.size()-1]))){ + expanderopen = expander->get_expanded(); + } } } effectcontrol_vbox.remove(*effectwidget); -- cgit v1.2.3 From 1fe4a0658bfe9140476fd475ddc7f40948ca63fa Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Thu, 21 Sep 2017 23:33:54 +0200 Subject: Add some sugesstions and fixes from CR to measure segments --- src/live_effects/lpe-measure-segments.cpp | 15 ++++++++------- src/live_effects/lpe-measure-segments.h | 1 + 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 2ac40b580..2eae30b4d 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -50,7 +50,7 @@ static const Util::EnumDataConverter OMConverter(OrientationM LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : Effect(lpeobject), - unit(_("Unit"), _("Unit"), "unit", &wr, this, "px"), + unit(_("Unit"), _("Unit"), "unit", &wr, this, "mm"), fontbutton(_("Font"), _("Font Selector"), "fontbutton", &wr, this), orientation(_("Orientation"), _("Orientation method"), "orientation", OMConverter, &wr, this, OM_PARALLEL, false), precision(_("Precision"), _("Precision"), "precision", &wr, this, 2), @@ -846,7 +846,7 @@ Gtk::Widget *LPEMeasureSegments::newWidget() ++it; } - expander = Gtk::manage(new Gtk::Expander(Glib::ustring(_("Show DIM CSS style override")))); + expander = Gtk::manage(new Gtk::Expander(Glib::ustring(_("CSS Style Override")))); expander->add(*vbox_expander); expander->set_expanded(expanded); expander->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &LPEMeasureSegments::onExpanderChanged) ); @@ -854,15 +854,16 @@ Gtk::Widget *LPEMeasureSegments::newWidget() return dynamic_cast(vbox); } +void +LPEMeasureSegments::transform_multiply(Geom::Affine const& postmul, bool set) +{ + sp_lpe_item_update_patheffect(sp_lpe_item, false, false); +} + void LPEMeasureSegments::onExpanderChanged() { expanded = expander->get_expanded(); - if(expanded) { - expander->set_label (Glib::ustring(_("Hide DIM CSS style override"))); - } else { - expander->set_label (Glib::ustring(_("Show DIM CSS style override"))); - } } Geom::PathVector diff --git a/src/live_effects/lpe-measure-segments.h b/src/live_effects/lpe-measure-segments.h index f7f5be1e3..7383aeca8 100644 --- a/src/live_effects/lpe-measure-segments.h +++ b/src/live_effects/lpe-measure-segments.h @@ -44,6 +44,7 @@ public: virtual void doOnRemove (SPLPEItem const* /*lpeitem*/); virtual void doEffect (SPCurve * curve){}; //stop the chain virtual void doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/); + virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in); void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool overflow, bool remove, bool arrows = false); void createTextLabel(Geom::Point pos, size_t counter, double length, Geom::Coord angle, bool remove, bool valid); -- cgit v1.2.3 From 1711a79b8604d9e6d936e25eaf966154ff122483 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Fri, 22 Sep 2017 18:00:59 +0200 Subject: Add tooltip to set default LPE widget --- src/live_effects/effect.cpp | 29 ++++++++++++++++++------ src/live_effects/effect.h | 4 ++-- src/live_effects/parameter/array.h | 4 ++++ src/live_effects/parameter/bool.cpp | 7 ++++++ src/live_effects/parameter/bool.h | 1 + src/live_effects/parameter/enum.h | 7 +++++- src/live_effects/parameter/fontbutton.cpp | 8 +++++++ src/live_effects/parameter/fontbutton.h | 1 + src/live_effects/parameter/hidden.cpp | 9 ++++++++ src/live_effects/parameter/hidden.h | 1 + src/live_effects/parameter/item.cpp | 6 +++++ src/live_effects/parameter/item.h | 1 + src/live_effects/parameter/originalitemarray.cpp | 5 ++++ src/live_effects/parameter/originalitemarray.h | 1 + src/live_effects/parameter/originalpatharray.cpp | 5 ++++ src/live_effects/parameter/originalpatharray.h | 1 + src/live_effects/parameter/parameter.cpp | 9 ++++++++ src/live_effects/parameter/parameter.h | 2 ++ src/live_effects/parameter/path.cpp | 6 +++++ src/live_effects/parameter/path.h | 1 + src/live_effects/parameter/point.cpp | 9 ++++++++ src/live_effects/parameter/point.h | 1 + src/live_effects/parameter/random.cpp | 9 ++++++++ src/live_effects/parameter/random.h | 1 + src/live_effects/parameter/text.cpp | 9 ++++++++ src/live_effects/parameter/text.h | 1 + src/live_effects/parameter/togglebutton.cpp | 7 ++++++ src/live_effects/parameter/togglebutton.h | 1 + src/live_effects/parameter/transformedpoint.cpp | 9 ++++++++ src/live_effects/parameter/transformedpoint.h | 1 + src/live_effects/parameter/unit.cpp | 6 +++++ src/live_effects/parameter/unit.h | 1 + src/live_effects/parameter/vector.cpp | 9 ++++++++ src/live_effects/parameter/vector.h | 1 + 34 files changed, 163 insertions(+), 10 deletions(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index b2ba0acdc..dcc60af14 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -826,29 +826,36 @@ Effect::defaultParamSet() Glib::ustring * tip = param->param_getTooltip(); const gchar * key = param->param_key.c_str(); const gchar * value = param->param_label.c_str(); - const gchar * tooltip_extra = _(". Change custom values for this parameter"); - Glib::ustring tooltip = param->param_tooltip + (Glib::ustring)tooltip_extra; + Glib::ustring pref_path = (Glib::ustring)"/live_effects/" + effectkey + (Glib::ustring)"/" + (Glib::ustring)key; bool valid = prefs->getEntry(pref_path).isValid(); const gchar * set_or_upd; + Glib::ustring def = Glib::ustring(_("Default value: ")) + Glib::ustring(param->param_getDefaultSVGValue()) + Glib::ustring("\n"); + Glib::ustring ove = Glib::ustring(_("Default value overrided: ")) + Glib::ustring(prefs->getString(pref_path)) + Glib::ustring("\n"); if (valid) { set_or_upd = _("Update"); + def = Glib::ustring(_("Default value: ")) + Glib::ustring(param->param_getDefaultSVGValue()) + Glib::ustring("\n"); } else { set_or_upd = _("Set"); + ove = Glib::ustring(_("Default value overrided: None\n")); } + Glib::ustring cur = Glib::ustring(_("Current parameter value: ")) + Glib::ustring(param->param_getSVGValue()); Gtk::HBox * vbox_param = Gtk::manage( new Gtk::HBox(true) ); Gtk::Label *parameter_label = Gtk::manage(new Gtk::Label(value, Gtk::ALIGN_START)); parameter_label->set_use_markup(true); - parameter_label->set_use_underline (true); + parameter_label->set_use_underline(true); + Glib::ustring tooltip = Glib::ustring("") + parameter_label->get_text () + Glib::ustring("\n") + param->param_tooltip + Glib::ustring("\n"); parameter_label->set_ellipsize(Pango::ELLIPSIZE_END); + parameter_label->set_tooltip_markup((tooltip + def + ove + cur).c_str()); vbox_param->pack_start(*parameter_label, true, true, 2); Gtk::Button *set = Gtk::manage(new Gtk::Button((Glib::ustring)set_or_upd)); Gtk::Button *unset = Gtk::manage(new Gtk::Button(Glib::ustring(_("Unset")))); - unset->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &Effect::unsetDefaultParam), pref_path, set, unset)); - set->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &Effect::setDefaultParam), pref_path, param->param_getSVGValue(), set, unset)); + unset->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &Effect::unsetDefaultParam), pref_path, tooltip, param->param_getSVGValue(), param->param_getDefaultSVGValue(), parameter_label, set, unset)); + + set->signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &Effect::setDefaultParam), pref_path, tooltip, param->param_getSVGValue(), param->param_getDefaultSVGValue(), parameter_label, set, unset)); if (!valid) { unset->set_sensitive(false); } @@ -873,23 +880,31 @@ Effect::defaultParamSet() } void -Effect::setDefaultParam(Glib::ustring pref_path, gchar * value, Gtk::Button *set , Gtk::Button *unset) +Effect::setDefaultParam(Glib::ustring pref_path, Glib::ustring tooltip, gchar * value, gchar * defvalue, Gtk::Label *parameter_label, Gtk::Button *set , Gtk::Button *unset) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setString(pref_path, (Glib::ustring)value); gchar * label = _("Update"); set->set_label((Glib::ustring)label); unset->set_sensitive(true); + Glib::ustring def = Glib::ustring(_("Default value: ")) + Glib::ustring(defvalue) + Glib::ustring("\n"); + Glib::ustring ove = Glib::ustring(_("Default value overrided: ")) + Glib::ustring(value) + Glib::ustring("\n"); + Glib::ustring cur = Glib::ustring(_("Current parameter value: ")) + Glib::ustring(value); + parameter_label->set_tooltip_markup((tooltip + def + ove + cur).c_str()); } void -Effect::unsetDefaultParam(Glib::ustring pref_path, Gtk::Button *set, Gtk::Button *unset) +Effect::unsetDefaultParam(Glib::ustring pref_path, Glib::ustring tooltip, gchar * value, gchar * defvalue, Gtk::Label *parameter_label, Gtk::Button *set , Gtk::Button *unset) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->remove(pref_path); gchar * label = _("Set"); set->set_label((Glib::ustring)label); unset->set_sensitive(false); + Glib::ustring def = Glib::ustring(_("Default value: ")) + Glib::ustring(defvalue) + Glib::ustring("\n"); + Glib::ustring ove = Glib::ustring(_("Default value overrided: None\n")); + Glib::ustring cur = Glib::ustring(_("Current parameter value: ")) + Glib::ustring(value); + parameter_label->set_tooltip_markup((tooltip + def + ove + cur).c_str()); } Inkscape::XML::Node *Effect::getRepr() diff --git a/src/live_effects/effect.h b/src/live_effects/effect.h index e353eba23..d0024f877 100644 --- a/src/live_effects/effect.h +++ b/src/live_effects/effect.h @@ -181,8 +181,8 @@ protected: std::vector selectedNodesPoints; private: - void setDefaultParam(Glib::ustring pref_path, gchar * value, Gtk::Button *set , Gtk::Button *unset); - void unsetDefaultParam(Glib::ustring pref_path, Gtk::Button *set , Gtk::Button *unset); + void setDefaultParam(Glib::ustring pref_path, Glib::ustring par, gchar * value, gchar * defvalue, Gtk::Label *parameter_label, Gtk::Button *set , Gtk::Button *unset); + void unsetDefaultParam(Glib::ustring pref_path, Glib::ustring par, gchar * value, gchar * defvalue, Gtk::Label *parameter_label, Gtk::Button *set , Gtk::Button *unset); bool provides_own_flash_paths; // if true, the standard flash path is suppressed bool is_ready; diff --git a/src/live_effects/parameter/array.h b/src/live_effects/parameter/array.h index e65d3b55c..c66d53266 100644 --- a/src/live_effects/parameter/array.h +++ b/src/live_effects/parameter/array.h @@ -67,6 +67,10 @@ public: gchar * str = g_strdup(os.str().c_str()); return str; } + + virtual gchar * param_getDefaultSVGValue() const { + return g_strdup(""); + } void param_setValue(std::vector const &new_vector) { _vector = new_vector; diff --git a/src/live_effects/parameter/bool.cpp b/src/live_effects/parameter/bool.cpp index f291a8104..1a01f269b 100644 --- a/src/live_effects/parameter/bool.cpp +++ b/src/live_effects/parameter/bool.cpp @@ -61,6 +61,13 @@ BoolParam::param_getSVGValue() const return str; } +gchar * +BoolParam::param_getDefaultSVGValue() const +{ + gchar * str = g_strdup(defvalue ? "true" : "false"); + return str; +} + Gtk::Widget * BoolParam::param_newWidget() { diff --git a/src/live_effects/parameter/bool.h b/src/live_effects/parameter/bool.h index 417752050..1aa0e3c4a 100644 --- a/src/live_effects/parameter/bool.h +++ b/src/live_effects/parameter/bool.h @@ -32,6 +32,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; void param_setValue(bool newvalue); virtual void param_set_default(); diff --git a/src/live_effects/parameter/enum.h b/src/live_effects/parameter/enum.h index 78fa87a4f..ca237c0f7 100644 --- a/src/live_effects/parameter/enum.h +++ b/src/live_effects/parameter/enum.h @@ -64,7 +64,12 @@ public: gchar * str = g_strdup( enumdataconv->get_key(value).c_str() ); return str; }; - + + gchar * param_getDefaultSVGValue() const { + gchar * str = g_strdup( enumdataconv->get_key(defvalue).c_str() ); + return str; + }; + E get_value() const { return value; } diff --git a/src/live_effects/parameter/fontbutton.cpp b/src/live_effects/parameter/fontbutton.cpp index ca8908f0e..49edb850a 100644 --- a/src/live_effects/parameter/fontbutton.cpp +++ b/src/live_effects/parameter/fontbutton.cpp @@ -55,6 +55,14 @@ FontButtonParam::param_getSVGValue() const return g_strdup(value.c_str()); } +gchar * +FontButtonParam::param_getDefaultSVGValue() const +{ + return g_strdup(defvalue.c_str()); +} + + + Gtk::Widget * FontButtonParam::param_newWidget() { diff --git a/src/live_effects/parameter/fontbutton.h b/src/live_effects/parameter/fontbutton.h index 60e1aa46e..e2d0e1bb2 100644 --- a/src/live_effects/parameter/fontbutton.h +++ b/src/live_effects/parameter/fontbutton.h @@ -28,6 +28,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); void param_update_default(const gchar * default_value); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; void param_setValue(Glib::ustring newvalue); diff --git a/src/live_effects/parameter/hidden.cpp b/src/live_effects/parameter/hidden.cpp index e8c55ebd3..e08881f6d 100644 --- a/src/live_effects/parameter/hidden.cpp +++ b/src/live_effects/parameter/hidden.cpp @@ -59,6 +59,15 @@ HiddenParam::param_getSVGValue() const return str; } +gchar * +HiddenParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + Gtk::Widget * HiddenParam::param_newWidget() { diff --git a/src/live_effects/parameter/hidden.h b/src/live_effects/parameter/hidden.h index c3fba5575..b41c6c93c 100644 --- a/src/live_effects/parameter/hidden.h +++ b/src/live_effects/parameter/hidden.h @@ -37,6 +37,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; void param_setValue(Glib::ustring newvalue, bool write = false); virtual void param_set_default(); diff --git a/src/live_effects/parameter/item.cpp b/src/live_effects/parameter/item.cpp index 71134b118..149fd6627 100644 --- a/src/live_effects/parameter/item.cpp +++ b/src/live_effects/parameter/item.cpp @@ -104,6 +104,12 @@ ItemParam::param_getSVGValue() const return g_strdup(href); } +gchar * +ItemParam::param_getDefaultSVGValue() const +{ + return g_strdup(defvalue); +} + Gtk::Widget * ItemParam::param_newWidget() { diff --git a/src/live_effects/parameter/item.h b/src/live_effects/parameter/item.h index 89c32f9bd..b98294258 100644 --- a/src/live_effects/parameter/item.h +++ b/src/live_effects/parameter/item.h @@ -34,6 +34,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); virtual void param_update_default(const gchar * default_value); diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp index 24b002e18..83c237f2e 100644 --- a/src/live_effects/parameter/originalitemarray.cpp +++ b/src/live_effects/parameter/originalitemarray.cpp @@ -442,6 +442,11 @@ gchar * OriginalItemArrayParam::param_getSVGValue() const return str; } +gchar * OriginalItemArrayParam::param_getDefaultSVGValue() const +{ + return ""; +} + void OriginalItemArrayParam::update() { for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { diff --git a/src/live_effects/parameter/originalitemarray.h b/src/live_effects/parameter/originalitemarray.h index f600aba34..f93d865ec 100644 --- a/src/live_effects/parameter/originalitemarray.h +++ b/src/live_effects/parameter/originalitemarray.h @@ -62,6 +62,7 @@ public: virtual Gtk::Widget * param_newWidget(); virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); virtual void param_update_default(const gchar * default_value){}; /** Disable the canvas indicators of parent class by overriding this method */ diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index d67f08e5b..4535b6aa5 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -527,6 +527,11 @@ gchar * OriginalPathArrayParam::param_getSVGValue() const return str; } +gchar * OriginalPathArrayParam::param_getDefaultSVGValue() const +{ + return ""; +} + void OriginalPathArrayParam::update() { for (std::vector::iterator iter = _vector.begin(); iter != _vector.end(); ++iter) { diff --git a/src/live_effects/parameter/originalpatharray.h b/src/live_effects/parameter/originalpatharray.h index 0ba6984c2..c80d5daf3 100644 --- a/src/live_effects/parameter/originalpatharray.h +++ b/src/live_effects/parameter/originalpatharray.h @@ -66,6 +66,7 @@ public: virtual Gtk::Widget * param_newWidget(); virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); virtual void param_update_default(const gchar * default_value){}; /** Disable the canvas indicators of parent class by overriding this method */ diff --git a/src/live_effects/parameter/parameter.cpp b/src/live_effects/parameter/parameter.cpp index 2f73488aa..319ab3fe8 100644 --- a/src/live_effects/parameter/parameter.cpp +++ b/src/live_effects/parameter/parameter.cpp @@ -95,6 +95,15 @@ ScalarParam::param_getSVGValue() const return str; } +gchar * +ScalarParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + void ScalarParam::param_set_default() { diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index 7ab7e30dd..1586ef346 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -57,6 +57,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue) = 0; // returns true if new value is valid / accepted. virtual gchar * param_getSVGValue() const = 0; + virtual gchar * param_getDefaultSVGValue() const = 0; virtual void param_widget_is_visible(bool is_visible) {widget_is_visible = is_visible;} void write_to_SVG(); @@ -109,6 +110,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); void param_update_default(gdouble default_value); diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index a91e50db8..bd6608737 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -173,6 +173,12 @@ PathParam::param_getSVGValue() const } } +gchar * +PathParam::param_getDefaultSVGValue() const +{ + return g_strdup(defvalue); +} + void PathParam::set_buttons(bool edit_button, bool copy_button, bool paste_button, bool link_button) { diff --git a/src/live_effects/parameter/path.h b/src/live_effects/parameter/path.h index c8efb11e0..635056772 100644 --- a/src/live_effects/parameter/path.h +++ b/src/live_effects/parameter/path.h @@ -38,6 +38,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); virtual void param_update_default(const gchar * default_value); diff --git a/src/live_effects/parameter/point.cpp b/src/live_effects/parameter/point.cpp index 331a86f81..da6edf812 100644 --- a/src/live_effects/parameter/point.cpp +++ b/src/live_effects/parameter/point.cpp @@ -115,6 +115,15 @@ PointParam::param_getSVGValue() const return str; } +gchar * +PointParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + void PointParam::param_transform_multiply(Geom::Affine const& postmul, bool /*set*/) { diff --git a/src/live_effects/parameter/point.h b/src/live_effects/parameter/point.h index a5153ad80..03256f6d0 100644 --- a/src/live_effects/parameter/point.h +++ b/src/live_effects/parameter/point.h @@ -38,6 +38,7 @@ public: bool param_readSVGValue(const gchar * strvalue); gchar * param_getSVGValue() const; + gchar * param_getDefaultSVGValue() const; inline const gchar *handleTip() const { return handle_tip ? handle_tip : param_tooltip.c_str(); } void param_setValue(Geom::Point newpoint, bool write = false); void param_set_default(); diff --git a/src/live_effects/parameter/random.cpp b/src/live_effects/parameter/random.cpp index b1375adda..c2c1b5440 100644 --- a/src/live_effects/parameter/random.cpp +++ b/src/live_effects/parameter/random.cpp @@ -71,6 +71,15 @@ RandomParam::param_getSVGValue() const return str; } +gchar * +RandomParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue << ';' << defseed; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + void RandomParam::param_set_default() { diff --git a/src/live_effects/parameter/random.h b/src/live_effects/parameter/random.h index 5fb6027ac..c10473e85 100644 --- a/src/live_effects/parameter/random.h +++ b/src/live_effects/parameter/random.h @@ -31,6 +31,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); virtual Gtk::Widget * param_newWidget(); diff --git a/src/live_effects/parameter/text.cpp b/src/live_effects/parameter/text.cpp index f40708917..3f41bfeed 100644 --- a/src/live_effects/parameter/text.cpp +++ b/src/live_effects/parameter/text.cpp @@ -115,6 +115,15 @@ TextParam::param_getSVGValue() const return str; } +gchar * +TextParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + Gtk::Widget * TextParam::param_newWidget() { diff --git a/src/live_effects/parameter/text.h b/src/live_effects/parameter/text.h index 137f3ee02..460ef8629 100644 --- a/src/live_effects/parameter/text.h +++ b/src/live_effects/parameter/text.h @@ -38,6 +38,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; void param_setValue(Glib::ustring newvalue); void param_hide_canvas_text(); diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp index 6aad8b3a6..16b8f9067 100644 --- a/src/live_effects/parameter/togglebutton.cpp +++ b/src/live_effects/parameter/togglebutton.cpp @@ -59,6 +59,13 @@ ToggleButtonParam::param_getSVGValue() const return str; } +gchar * +ToggleButtonParam::param_getDefaultSVGValue() const +{ + gchar * str = g_strdup(defvalue ? "true" : "false"); + return str; +} + void ToggleButtonParam::param_update_default(bool default_value) { diff --git a/src/live_effects/parameter/togglebutton.h b/src/live_effects/parameter/togglebutton.h index 02b9d5127..4d043b340 100644 --- a/src/live_effects/parameter/togglebutton.h +++ b/src/live_effects/parameter/togglebutton.h @@ -41,6 +41,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; void param_setValue(bool newvalue); virtual void param_set_default(); diff --git a/src/live_effects/parameter/transformedpoint.cpp b/src/live_effects/parameter/transformedpoint.cpp index 22d5ba3a4..6ec2d0943 100644 --- a/src/live_effects/parameter/transformedpoint.cpp +++ b/src/live_effects/parameter/transformedpoint.cpp @@ -82,6 +82,15 @@ TransformedPointParam::param_getSVGValue() const return str; } +gchar * +TransformedPointParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + void TransformedPointParam::param_update_default(Geom::Point default_point) { diff --git a/src/live_effects/parameter/transformedpoint.h b/src/live_effects/parameter/transformedpoint.h index 269cc508e..8b92d81ba 100644 --- a/src/live_effects/parameter/transformedpoint.h +++ b/src/live_effects/parameter/transformedpoint.h @@ -37,6 +37,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; Geom::Point getVector() const { return vector; }; Geom::Point getOrigin() const { return origin; }; diff --git a/src/live_effects/parameter/unit.cpp b/src/live_effects/parameter/unit.cpp index b9b91c1e6..9199e592d 100644 --- a/src/live_effects/parameter/unit.cpp +++ b/src/live_effects/parameter/unit.cpp @@ -48,6 +48,12 @@ UnitParam::param_getSVGValue() const return g_strdup(unit->abbr.c_str()); } +gchar * +UnitParam::param_getDefaultSVGValue() const +{ + return g_strdup(defunit->abbr.c_str()); +} + void UnitParam::param_set_default() { diff --git a/src/live_effects/parameter/unit.h b/src/live_effects/parameter/unit.h index c662b6edc..86e1a24b3 100644 --- a/src/live_effects/parameter/unit.h +++ b/src/live_effects/parameter/unit.h @@ -31,6 +31,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; virtual void param_set_default(); void param_set_value(Inkscape::Util::Unit const &val); virtual void param_update_default(const gchar * default_unit); diff --git a/src/live_effects/parameter/vector.cpp b/src/live_effects/parameter/vector.cpp index 470fa9c2d..6b565536e 100644 --- a/src/live_effects/parameter/vector.cpp +++ b/src/live_effects/parameter/vector.cpp @@ -101,6 +101,15 @@ VectorParam::param_getSVGValue() const return str; } +gchar * +VectorParam::param_getDefaultSVGValue() const +{ + Inkscape::SVGOStringStream os; + os << defvalue; + gchar * str = g_strdup(os.str().c_str()); + return str; +} + Gtk::Widget * VectorParam::param_newWidget() { diff --git a/src/live_effects/parameter/vector.h b/src/live_effects/parameter/vector.h index d270e9f43..8c842e805 100644 --- a/src/live_effects/parameter/vector.h +++ b/src/live_effects/parameter/vector.h @@ -36,6 +36,7 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; Geom::Point getVector() const { return vector; }; Geom::Point getOrigin() const { return origin; }; -- cgit v1.2.3 From 89708dcf567d0de08eb59811b434c9f282768e40 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Fri, 22 Sep 2017 18:12:15 +0200 Subject: Minor tootltip tweak --- src/live_effects/effect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index dcc60af14..fcb4b5cb2 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -847,7 +847,7 @@ Effect::defaultParamSet() Gtk::Label *parameter_label = Gtk::manage(new Gtk::Label(value, Gtk::ALIGN_START)); parameter_label->set_use_markup(true); parameter_label->set_use_underline(true); - Glib::ustring tooltip = Glib::ustring("") + parameter_label->get_text () + Glib::ustring("\n") + param->param_tooltip + Glib::ustring("\n"); + Glib::ustring tooltip = Glib::ustring("") + parameter_label->get_text () + Glib::ustring("\n") + param->param_tooltip + Glib::ustring("\n\n"); parameter_label->set_ellipsize(Pango::ELLIPSIZE_END); parameter_label->set_tooltip_markup((tooltip + def + ove + cur).c_str()); vbox_param->pack_start(*parameter_label, true, true, 2); -- cgit v1.2.3 From 80b6446c2ead833bd4b5eebbd5f19afe0b5e3d18 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Fri, 22 Sep 2017 18:46:12 +0200 Subject: Fixes to Doxifile --- buildtools/Doxyfile | 99 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 78 insertions(+), 21 deletions(-) diff --git a/buildtools/Doxyfile b/buildtools/Doxyfile index f5db13c15..4eee24909 100644 --- a/buildtools/Doxyfile +++ b/buildtools/Doxyfile @@ -1,4 +1,4 @@ -# Doxyfile 1.8.9.1 +# Doxyfile 1.8.13 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -51,14 +51,14 @@ PROJECT_BRIEF = "Vector Graphics Editor" # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = share/branding/inkscape.svg +PROJECT_LOGO = /home/jtx/Development/inkscape/inkscape/share/branding/inkscape.svg # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = doxygen +OUTPUT_DIRECTORY = ../doc/doxygen # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -293,6 +293,15 @@ EXTENSION_MAPPING = MARKDOWN_SUPPORT = YES +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or @@ -315,7 +324,7 @@ BUILTIN_STL_SUPPORT = YES # enable parsing support. # The default value is: NO. -CPP_CLI_SUPPORT = NO +CPP_CLI_SUPPORT = YES # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen @@ -343,6 +352,13 @@ IDL_PROPERTY_SUPPORT = YES DISTRIBUTE_GROUP_DOC = NO +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent @@ -732,6 +748,12 @@ WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = NO +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated @@ -755,10 +777,10 @@ WARN_LOGFILE = doxygen_warnings.log # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with -# spaces. +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = src +INPUT = ../src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -771,12 +793,17 @@ INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. FILE_PATTERNS = *.cpp \ *.dox \ @@ -864,6 +891,10 @@ IMAGE_PATH = # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. INPUT_FILTER = @@ -873,6 +904,10 @@ INPUT_FILTER = # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. FILTER_PATTERNS = @@ -990,7 +1025,7 @@ VERBATIM_HEADERS = NO # rich C++ code for which doxygen's built-in parser lacks the necessary type # information. # Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. +# generated with the -Duse-libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO @@ -1626,9 +1661,12 @@ COMPACT_LATEX = NO PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names -# that should be included in the LaTeX output. To get the times font for -# instance you can specify -# EXTRA_PACKAGES=times +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} # If left blank no extra packages will be included. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1732,6 +1770,14 @@ LATEX_SOURCE_CODE = NO LATEX_BIB_STYLE = plain +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_TIMESTAMP = NO + #--------------------------------------------------------------------------- # Configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -2118,7 +2164,7 @@ HIDE_UNDOC_RELATIONS = YES # set to NO # The default value is: YES. -HAVE_DOT = YES +HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed # to run in parallel. When set to 0 doxygen will base this on the number of @@ -2230,7 +2276,8 @@ INCLUDED_BY_GRAPH = YES # # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2241,7 +2288,8 @@ CALL_GRAPH = NO # # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2264,13 +2312,17 @@ GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). # Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd, # png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo, -# gif:cairo:gd, gif:gd, gif:gd:gd and svg. +# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. # The default value is: png. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2321,6 +2373,11 @@ DIAFILE_DIRS = PLANTUML_JAR_PATH = +# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for plantuml. + +PLANTUML_CFG_FILE = + # When using plantuml, the specified paths are searched for files specified by # the !include statement in a plantuml block. -- cgit v1.2.3 From 9d04be759628dc9b743b9a8c0f12aec16a9090a8 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 23 Sep 2017 01:04:41 +0200 Subject: Fix wrong parameter in Doxifile pointed by Eduard Brown --- buildtools/Doxyfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildtools/Doxyfile b/buildtools/Doxyfile index 4eee24909..c63081e02 100644 --- a/buildtools/Doxyfile +++ b/buildtools/Doxyfile @@ -51,7 +51,7 @@ PROJECT_BRIEF = "Vector Graphics Editor" # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = /home/jtx/Development/inkscape/inkscape/share/branding/inkscape.svg +PROJECT_LOGO = ../share/branding/inkscape.svg # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -- cgit v1.2.3 From 179538a2098fe6ae701bdb20e538b92ff7a4ffe7 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 23 Sep 2017 20:01:24 +0200 Subject: Do not crash if no fonts are available Usually we fall back to "sans-serif" but if not a single fallback was available (this happens for example if the fontconfig configuration is invalid) Inkscape crashed. Fixed bug: - https://bugs.launchpad.net/inkscape/+bug/1716516 --- src/libnrtype/FontFactory.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 5c6a96694..40e5d4ba1 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -689,9 +689,12 @@ font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) pango_font_description_set_family(descr,"sans-serif"); res = Face(descr,false); pango_font_description_free(descr); + } else { + g_critical("Could not load any face for font '%s'.", pango_font_description_to_string(descr)); } } + if (res) { // Extract which OpenType tables are in the font. We'll make a list of all tables // regardless of which script and langauge they are in. This Harfbuzz code replaces // an earlier Pango version as the Pango functions are deprecated. @@ -836,6 +839,7 @@ font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) hb_face_destroy (face); g_free(scripts_hb); + } } else { // already here res = loadedFaces[descr]; -- cgit v1.2.3 From 6b8c070aa2a30a15f3d3187fc35af0cfe662d354 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 23 Sep 2017 20:02:45 +0200 Subject: cleanup: do not overwrite/free original font description (likely unproblematic but better be safe than sorry...) --- src/libnrtype/FontFactory.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 40e5d4ba1..3b7b5b9b4 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -685,10 +685,10 @@ font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) // no match if ( canFail ) { PANGO_DEBUG("falling back to 'sans-serif'\n"); - descr = pango_font_description_new(); - pango_font_description_set_family(descr,"sans-serif"); - res = Face(descr,false); - pango_font_description_free(descr); + PangoFontDescription *new_descr = pango_font_description_new(); + pango_font_description_set_family(new_descr, "sans-serif"); + res = Face(new_descr, false); + pango_font_description_free(new_descr); } else { g_critical("Could not load any face for font '%s'.", pango_font_description_to_string(descr)); } -- cgit v1.2.3 From 74d871992d7641101f8c26e934b96ae72d851c93 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 23 Sep 2017 20:20:35 +0200 Subject: cleanup: put extraction of OpenType tables in separate function --- src/libnrtype/FontFactory.cpp | 291 +++++++++++++++++++++--------------------- 1 file changed, 147 insertions(+), 144 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 3b7b5b9b4..e160fc277 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -627,6 +627,152 @@ Glib::ustring extract_tag( guint32 *tag ) { return tag_name; } +// Extract which OpenType tables are in the font. A list of all tables (regardless of which script and langauge +// they are in) will be stored as a std::map in the openTypeTables field of the font_instance +// This Harfbuzz code replaces an earlier Pango version as the Pango functions are deprecated. +void extract_openTypeTables(font_instance *res) { + // Empty map... bitmap fonts seem to be loaded multiple times. + res->openTypeTables.clear(); + + auto const face = hb_ft_face_create(res->theFace, NULL); + + // First time to get size of array + auto script_count = hb_ot_layout_table_get_script_tags(face, HB_OT_TAG_GSUB, 0, NULL, NULL); + auto const scripts_hb = g_new(hb_tag_t, script_count + 1); + + // Second time to fill array (this two step process was not necessary with Pango). + hb_ot_layout_table_get_script_tags(face, HB_OT_TAG_GSUB, 0, &script_count, scripts_hb); + + for(unsigned int i = 0; i < script_count; ++i) { + auto language_count = hb_ot_layout_script_get_language_tags(face, HB_OT_TAG_GSUB, i, 0, NULL, NULL); + + if(language_count > 0) { + auto const languages_hb = g_new(hb_tag_t, language_count + 1); + hb_ot_layout_script_get_language_tags(face, HB_OT_TAG_GSUB, i, 0, &language_count, languages_hb); + + for(unsigned int j = 0; j < language_count; ++j) { + auto feature_count = hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, j, 0, NULL, NULL); + auto const features_hb = g_new(hb_tag_t, feature_count + 1); + hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, j, 0, &feature_count, features_hb); + + for(unsigned int k = 0; k < feature_count; ++k) { + ++(res->openTypeTables[ extract_tag(&features_hb[k])]); + } + + g_free(features_hb); + } + + g_free(languages_hb); + } + else { + // Even if no languages are present there is still the default. + auto feature_count = hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, + HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, + 0, NULL, NULL); + auto const features_hb = g_new(hb_tag_t, feature_count + 1); + hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, + HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, + 0, &feature_count, features_hb); + + for(unsigned int k = 0; k < feature_count; ++k) { + ++(res->openTypeTables[ extract_tag(&features_hb[k])]); + } + + g_free(features_hb); + } + } + +// TODO: Ideally, we should use the HB_VERSION_ATLEAST macro here, +// but this was only released in harfbuzz >= 0.9.30 +// #if HB_VERSION_ATLEAST(1,2,3) +#if HB_VERSION_MAJOR*10000 + HB_VERSION_MINOR*100 + HB_VERSION_MICRO >= 10203 + // Find glyphs in OpenType substitution tables ('gsub'). + // Note that pango's functions are just dummies. Must use harfbuzz. + + // Loop over all tables + for (auto table: res->openTypeTables) { + + // Only look at style substitution tables ('salt', 'ss01', etc. but not 'ssty'). + if (table.first == "salt" || + (table.first[0] == 's' && table.first[1] == 's' && !(table.first[2] == 't') ) ) { + // std::cout << " Table: " << table.first << std::endl; + + Glib::ustring unicode_characters; + + unsigned int feature_index; + if ( hb_ot_layout_language_find_feature (face, HB_OT_TAG_GSUB, + 0, // Assume one script exists with index 0 + HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, + HB_TAG(table.first[0], + table.first[1], + table.first[2], + table.first[3]), + &feature_index ) ) { + + // std::cout << " Found feature, number: " << feature_index << std::endl; + unsigned int lookup_indexes[32]; + unsigned int lookup_count = 32; + int count = hb_ot_layout_feature_get_lookups (face, HB_OT_TAG_GSUB, + feature_index, + 0, // Start + &lookup_count, + lookup_indexes ); + // std::cout << " Lookup count: " << count << " total: " << lookup_count << std::endl; + + if (count > 0) { + hb_set_t* glyphs_before = NULL; // hb_set_create(); + hb_set_t* glyphs_input = hb_set_create(); + hb_set_t* glyphs_after = NULL; // hb_set_create(); + hb_set_t* glyphs_output = NULL; // hb_set_create(); + + // For now, just look at first index + hb_ot_layout_lookup_collect_glyphs (face, HB_OT_TAG_GSUB, + lookup_indexes[0], + glyphs_before, + glyphs_input, + glyphs_after, + glyphs_output ); + + hb_font_t *font = hb_font_create (face); + + // Without this, all functions return 0, etc. + hb_ft_font_set_funcs (font); + + hb_codepoint_t codepoint = -1; + while (hb_set_next (glyphs_input, &codepoint)) { + + // There is a unicode to glyph mapping function but not the inverse! + for (hb_codepoint_t unicode_i = 0; unicode_i < 0xffff; ++unicode_i) { + hb_codepoint_t glyph = 0; + hb_font_get_nominal_glyph (font, unicode_i, &glyph); + if ( glyph == codepoint) { + unicode_characters += (gunichar)unicode_i; + continue; + } + } + } + res->openTypeSubstitutions[table.first] = unicode_characters; + + hb_set_destroy (glyphs_input); + hb_font_destroy (font); + } + } else { + // std::cout << " Did not find '" << table.first << "'!" << std::endl; + } + } + } + // for (auto table: res->openTypeSubstitutions) { + // std::cout << table.first << ": " << table.second << std::endl; + // } +#else + std::cerr << "Requires Harfbuzz 1.2.3 for visualizing alternative glyph OpenType tables. " + << "Compiled with: " << HB_VERSION_STRING << "." << std::endl; +#endif + + hb_face_destroy (face); + g_free(scripts_hb); +} + font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) { #ifdef USE_PANGO_WIN32 @@ -695,150 +841,7 @@ font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) } if (res) { - // Extract which OpenType tables are in the font. We'll make a list of all tables - // regardless of which script and langauge they are in. This Harfbuzz code replaces - // an earlier Pango version as the Pango functions are deprecated. - - // Empty map... bitmap fonts seem to be loaded multiple times. - res->openTypeTables.clear(); - - auto const face = hb_ft_face_create(res->theFace, NULL); - - // First time to get size of array - auto script_count = hb_ot_layout_table_get_script_tags(face, HB_OT_TAG_GSUB, 0, NULL, NULL); - auto const scripts_hb = g_new(hb_tag_t, script_count + 1); - - // Second time to fill array (this two step process was not necessary with Pango). - hb_ot_layout_table_get_script_tags(face, HB_OT_TAG_GSUB, 0, &script_count, scripts_hb); - - for(unsigned int i = 0; i < script_count; ++i) { - auto language_count = hb_ot_layout_script_get_language_tags(face, HB_OT_TAG_GSUB, i, 0, NULL, NULL); - - if(language_count > 0) { - auto const languages_hb = g_new(hb_tag_t, language_count + 1); - hb_ot_layout_script_get_language_tags(face, HB_OT_TAG_GSUB, i, 0, &language_count, languages_hb); - - for(unsigned int j = 0; j < language_count; ++j) { - auto feature_count = hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, j, 0, NULL, NULL); - auto const features_hb = g_new(hb_tag_t, feature_count + 1); - hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, j, 0, &feature_count, features_hb); - - for(unsigned int k = 0; k < feature_count; ++k) { - ++(res->openTypeTables[ extract_tag(&features_hb[k])]); - } - - g_free(features_hb); - } - - g_free(languages_hb); - } - else { - // Even if no languages are present there is still the default. - auto feature_count = hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, - HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, - 0, NULL, NULL); - auto const features_hb = g_new(hb_tag_t, feature_count + 1); - hb_ot_layout_language_get_feature_tags(face, HB_OT_TAG_GSUB, i, - HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, - 0, &feature_count, features_hb); - - for(unsigned int k = 0; k < feature_count; ++k) { - ++(res->openTypeTables[ extract_tag(&features_hb[k])]); - } - - g_free(features_hb); - } - } - -// TODO: Ideally, we should use the HB_VERSION_ATLEAST macro here, -// but this was only released in harfbuzz >= 0.9.30 -// #if HB_VERSION_ATLEAST(1,2,3) -#if HB_VERSION_MAJOR*10000 + HB_VERSION_MINOR*100 + HB_VERSION_MICRO >= 10203 - // Find glyphs in OpenType substitution tables ('gsub'). - // Note that pango's functions are just dummies. Must use harfbuzz. - - // Loop over all tables - for (auto table: res->openTypeTables) { - - // Only look at style substitution tables ('salt', 'ss01', etc. but not 'ssty'). - if (table.first == "salt" || - (table.first[0] == 's' && table.first[1] == 's' && !(table.first[2] == 't') ) ) { - // std::cout << " Table: " << table.first << std::endl; - - Glib::ustring unicode_characters; - - unsigned int feature_index; - if ( hb_ot_layout_language_find_feature (face, HB_OT_TAG_GSUB, - 0, // Assume one script exists with index 0 - HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX, - HB_TAG(table.first[0], - table.first[1], - table.first[2], - table.first[3]), - &feature_index ) ) { - - // std::cout << " Found feature, number: " << feature_index << std::endl; - unsigned int lookup_indexes[32]; - unsigned int lookup_count = 32; - int count = hb_ot_layout_feature_get_lookups (face, HB_OT_TAG_GSUB, - feature_index, - 0, // Start - &lookup_count, - lookup_indexes ); - // std::cout << " Lookup count: " << count << " total: " << lookup_count << std::endl; - - if (count > 0) { - hb_set_t* glyphs_before = NULL; // hb_set_create(); - hb_set_t* glyphs_input = hb_set_create(); - hb_set_t* glyphs_after = NULL; // hb_set_create(); - hb_set_t* glyphs_output = NULL; // hb_set_create(); - - // For now, just look at first index - hb_ot_layout_lookup_collect_glyphs (face, HB_OT_TAG_GSUB, - lookup_indexes[0], - glyphs_before, - glyphs_input, - glyphs_after, - glyphs_output ); - - hb_font_t *font = hb_font_create (face); - - // Without this, all functions return 0, etc. - hb_ft_font_set_funcs (font); - - hb_codepoint_t codepoint = -1; - while (hb_set_next (glyphs_input, &codepoint)) { - - // There is a unicode to glyph mapping function but not the inverse! - for (hb_codepoint_t unicode_i = 0; unicode_i < 0xffff; ++unicode_i) { - hb_codepoint_t glyph = 0; - hb_font_get_nominal_glyph (font, unicode_i, &glyph); - if ( glyph == codepoint) { - unicode_characters += (gunichar)unicode_i; - continue; - } - } - } - res->openTypeSubstitutions[table.first] = unicode_characters; - - hb_set_destroy (glyphs_input); - hb_font_destroy (font); - } - } else { - // std::cout << " Did not find '" << table.first << "'!" << std::endl; - } - } - } - // for (auto table: res->openTypeSubstitutions) { - // std::cout << table.first << ": " << table.second << std::endl; - // } -#else - std::cerr << "Requires Harfbuzz 1.2.3 for visualizing alternative glyph OpenType tables. " - << "Compiled with: " << HB_VERSION_STRING << "." << std::endl; -#endif - - hb_face_destroy (face); - g_free(scripts_hb); + extract_openTypeTables(res); } } else { // already here -- cgit v1.2.3 From 944a8da0e8b0aad82c5bee3754e26cd925f44c50 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 23 Sep 2017 23:55:16 +0200 Subject: Fix bug #1094504 GTK3: RegisteredColorPicker (e.g. for grid, guides color) does not show preview of current color --- src/ui/widget/color-preview.cpp | 45 +++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/ui/widget/color-preview.cpp b/src/ui/widget/color-preview.cpp index c9b6e56d2..54b2991f0 100644 --- a/src/ui/widget/color-preview.cpp +++ b/src/ui/widget/color-preview.cpp @@ -11,6 +11,7 @@ #include "ui/widget/color-preview.h" #include "display/cairo-utils.h" +#include #define SPCP_DEFAULT_WIDTH 32 #define SPCP_DEFAULT_HEIGHT 12 @@ -70,45 +71,45 @@ ColorPreview::setRgba32 (guint32 rgba) bool ColorPreview::on_draw(const Cairo::RefPtr& cr) { - GdkRectangle warea, carea; - gint w2; - + double x, y, width, height; const Gtk::Allocation& allocation = get_allocation(); - warea.x = allocation.get_x(); - warea.y = allocation.get_y(); - warea.width = allocation.get_width(); - warea.height = allocation.get_height(); + x = 0; + y = 0; + width = allocation.get_width()/2.0; + height = allocation.get_height(); + + double radius = height / 7.5; + double degrees = M_PI / 180.0; + cairo_new_sub_path (cr->cobj()); + cairo_line_to(cr->cobj(), width, 0); + cairo_line_to(cr->cobj(), width, height); + cairo_arc (cr->cobj(), x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees); + cairo_arc (cr->cobj(), x + radius, y + radius, radius, 180 * degrees, 270 * degrees); + cairo_close_path (cr->cobj()); /* Transparent area */ - w2 = warea.width / 2; - - carea.x = warea.x; - carea.y = warea.y; - carea.width = w2; - carea.height = warea.height; - cairo_pattern_t *checkers = ink_cairo_pattern_create_checkerboard(); - cr->rectangle(carea.x, carea.y, carea.width, carea.height); cairo_set_source(cr->cobj(), checkers); cr->fill_preserve(); ink_cairo_set_source_rgba32(cr->cobj(), _rgba); cr->fill(); - cairo_pattern_destroy(checkers); /* Solid area */ - carea.x = warea.x + w2; - carea.y = warea.y; - carea.width = warea.width - w2; - carea.height = warea.height; + x = width; - cr->rectangle(carea.x, carea.y, carea.width, carea.height); + cairo_new_sub_path (cr->cobj()); + cairo_arc (cr->cobj(), x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees); + cairo_arc (cr->cobj(), x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees); + cairo_line_to(cr->cobj(), x, height); + cairo_line_to(cr->cobj(), x, y); + cairo_close_path (cr->cobj()); ink_cairo_set_source_rgba32(cr->cobj(), _rgba | 0xff); cr->fill(); - + return true; } -- cgit v1.2.3 From 6a03015b016c177e0657fc6274a571db16e48b64 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sat, 23 Sep 2017 10:02:16 +0200 Subject: Remove unused parameter in SPItem::doWriteTransform --- src/selection-chemistry.cpp | 24 ++++++++++++------------ src/seltrans.cpp | 2 +- src/sp-clippath.cpp | 2 +- src/sp-flowtext.cpp | 2 +- src/sp-item-group.cpp | 18 +++++++++--------- src/sp-item-notify-moveto.cpp | 2 +- src/sp-item-transform.cpp | 8 ++++---- src/sp-item.cpp | 3 +-- src/sp-item.h | 2 +- src/sp-marker.cpp | 2 +- src/sp-mask.cpp | 2 +- src/sp-offset.cpp | 2 +- src/sp-pattern.cpp | 2 +- src/sp-use.cpp | 12 ++++++------ src/splivarot.cpp | 18 +++++++++--------- src/text-chemistry.cpp | 4 ++-- src/trace/trace.cpp | 2 +- src/ui/dialog/grid-arrange-tab.cpp | 2 +- src/ui/dialog/layers.cpp | 4 ++-- src/ui/dialog/polar-arrange-tab.cpp | 2 +- src/ui/dialog/transformation.cpp | 2 +- src/ui/tools/arc-tool.cpp | 2 +- src/ui/tools/calligraphic-tool.cpp | 2 +- src/ui/tools/connector-tool.cpp | 2 +- src/ui/tools/eraser-tool.cpp | 2 +- src/ui/tools/flood-tool.cpp | 2 +- src/ui/tools/freehand-base.cpp | 2 +- src/ui/tools/measure-tool.cpp | 4 ++-- src/ui/tools/rect-tool.cpp | 2 +- src/ui/tools/spiral-tool.cpp | 2 +- src/ui/tools/spray-tool.cpp | 4 ++-- src/ui/tools/star-tool.cpp | 2 +- src/ui/tools/text-tool.cpp | 2 +- src/unclump.cpp | 4 ++-- 34 files changed, 74 insertions(+), 75 deletions(-) diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 807c8f7e1..b13af6bac 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -1666,7 +1666,7 @@ void ObjectSet::applyAffine(Geom::Affine const &affine, bool set_i2d, bool compe for (auto& itm: region.children) { SPUse *use = dynamic_cast(&itm); if ( use ) { - use->doWriteTransform(use->getRepr(), item->transform.inverse(), NULL, compensate); + use->doWriteTransform(item->transform.inverse(), NULL, compensate); } } } @@ -1710,13 +1710,13 @@ void ObjectSet::applyAffine(Geom::Affine const &affine, bool set_i2d, bool compe if (prefs_parallel) { Geom::Affine move = result * clone_move * t_inv; - item->doWriteTransform(item->getRepr(), move, &move, compensate); + item->doWriteTransform(move, &move, compensate); } else if (prefs_unmoved) { //if (dynamic_cast(sp_use_get_original(dynamic_cast(item)))) // clone_move = Geom::identity(); Geom::Affine move = result * clone_move; - item->doWriteTransform(item->getRepr(), move, &t, compensate); + item->doWriteTransform(move, &t, compensate); } } else if (transform_offset_with_source && (prefs_parallel || prefs_unmoved) && affine.isTranslation()){ @@ -1725,23 +1725,23 @@ void ObjectSet::applyAffine(Geom::Affine const &affine, bool set_i2d, bool compe if (prefs_parallel) { Geom::Affine move = result * offset_move * t_inv; - item->doWriteTransform(item->getRepr(), move, &move, compensate); + item->doWriteTransform(move, &move, compensate); } else if (prefs_unmoved) { Geom::Affine move = result * offset_move; - item->doWriteTransform(item->getRepr(), move, &t, compensate); + item->doWriteTransform(move, &t, compensate); } } else { // just apply the result - item->doWriteTransform(item->getRepr(), result, &t, compensate); + item->doWriteTransform(result, &t, compensate); } } else { if (set_i2d) { item->set_i2d_affine(item->i2dt_affine() * (Geom::Affine)affine); } - item->doWriteTransform(item->getRepr(), item->transform, NULL, compensate); + item->doWriteTransform(item->transform, NULL, compensate); } if (adjust_transf_center) { // The transformation center should not be touched in case of pasting or importing, which is allowed by this if clause @@ -3171,7 +3171,7 @@ void ObjectSet::toSymbol() prefs->setInt("/options/clonecompensation/value", SP_CLONE_COMPENSATION_UNMOVED); // Remove transform on group, updating clones. - the_group->doWriteTransform(object->getRepr(), Geom::identity()); + the_group->doWriteTransform(Geom::identity()); // restore compensation setting prefs->setInt("/options/clonecompensation/value", saved_compensation); @@ -3483,7 +3483,7 @@ void ObjectSet::untile() if (i) { Geom::Affine transform( i->transform * pat_transform ); - i->doWriteTransform(i->getRepr(), transform); + i->doWriteTransform(transform); new_select.push_back(i); } else { @@ -3955,9 +3955,9 @@ void ObjectSet::setClipGroup() Geom::Affine oldtr=(*i)->transform; oldtr *= SP_ITEM((*i)->parent)->i2doc_affine().inverse(); - (*i)->doWriteTransform((*i)->getRepr(), (*i)->i2doc_affine()); + (*i)->doWriteTransform((*i)->i2doc_affine()); Inkscape::XML::Node *dup = (*i)->getRepr()->duplicate(xml_doc); - (*i)->doWriteTransform((*i)->getRepr(), oldtr); + (*i)->doWriteTransform(oldtr); mask_items.push_back(dup); if (remove_original) { @@ -4160,7 +4160,7 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { // transform mask, so it is moved the same spot where mask was applied Geom::Affine transform(mask_item->transform); transform *= (*it).second->transform; - mask_item->doWriteTransform(mask_item->getRepr(), transform); + mask_item->doWriteTransform(transform); } g_slist_free(items_to_move); diff --git a/src/seltrans.cpp b/src/seltrans.cpp index 9e18bbe90..68d946712 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -558,7 +558,7 @@ void Inkscape::SelTrans::stamp() new_affine = &original_item->transform; } - copy_item->doWriteTransform(copy_repr, *new_affine); + copy_item->doWriteTransform(*new_affine); if ( copy_item->isCenterSet() && _center ) { copy_item->setCenter(*_center * _current_relative_affine); diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 1829837d8..52c043aee 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -310,7 +310,7 @@ const gchar *SPClipPath::create (std::vector &reprs, SPDoc if (NULL != applyTransform) { Geom::Affine transform (item->transform * (*applyTransform)); - item->doWriteTransform(item->getRepr(), transform); + item->doWriteTransform(transform); } } diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 741ca7886..c5af85774 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -714,7 +714,7 @@ Geom::Affine SPFlowtext::set_transform (Geom::Affine const &xform) SPRect *rect = dynamic_cast(region->firstChild()); if (rect) { rect->set_i2d_affine(xform * rect->i2dt_affine()); - rect->doWriteTransform(rect->getRepr(), rect->transform, NULL, true); + rect->doWriteTransform(rect->transform, NULL, true); } } diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 68c17abc8..4dbfa8ac3 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -643,7 +643,7 @@ sp_item_group_ungroup (SPGroup *group, std::vector &children, bool do_d SPItem *item = static_cast(doc->getObjectByRepr(repr)); if (item) { - item->doWriteTransform(repr, item->transform, NULL, false); + item->doWriteTransform(item->transform, NULL, false); children.insert(children.begin(),item); } else { g_assert_not_reached(); @@ -785,7 +785,7 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo tAff[4] = 0.0; tAff[5] = 0.0; } - item->doWriteTransform(item->getRepr(), tAff, NULL, true); + item->doWriteTransform(tAff, NULL, true); } else { // used for other import SPItem *sub_item = NULL; @@ -793,16 +793,16 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo sub_item = dynamic_cast(item->clip_ref->getObject()->firstChild()); } if (sub_item != NULL) { - sub_item->doWriteTransform(sub_item->getRepr(), sub_item->transform*sc, NULL, true); + sub_item->doWriteTransform(sub_item->transform*sc, NULL, true); } sub_item = NULL; if (item->mask_ref->getObject()) { sub_item = dynamic_cast(item->mask_ref->getObject()->firstChild()); } if (sub_item != NULL) { - sub_item->doWriteTransform(sub_item->getRepr(), sub_item->transform*sc, NULL, true); + sub_item->doWriteTransform(sub_item->transform*sc, NULL, true); } - item->doWriteTransform(item->getRepr(), sc.inverse()*item->transform*sc, NULL, true); + item->doWriteTransform(sc.inverse()*item->transform*sc, NULL, true); group->scaleChildItemsRec(sc, p, false); } } else { @@ -845,18 +845,18 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo item->transform = Geom::Affine(); // Apply scale item->set_i2d_affine(item->i2dt_affine() * sc); - item->doWriteTransform(item->getRepr(), item->transform, NULL, true); + item->doWriteTransform(item->transform, NULL, true); // Scale translation and restore original transform tmp[4] *= sc[0]; tmp[5] *= sc[1]; - item->doWriteTransform(item->getRepr(), tmp, NULL, true); + item->doWriteTransform(tmp, NULL, true); } else if (dynamic_cast(item)) { // calculate the matrix we need to apply to the clone // to cancel its induced transform from its original Geom::Affine move = final.inverse() * item->transform * final; - item->doWriteTransform(item->getRepr(), move, &move, true); + item->doWriteTransform(move, &move, true); } else { - item->doWriteTransform(item->getRepr(), item->transform*sc, NULL, true); + item->doWriteTransform(item->transform*sc, NULL, true); } if (conn_type != NULL) { diff --git a/src/sp-item-notify-moveto.cpp b/src/sp-item-notify-moveto.cpp index dcc91fd0b..28648c03a 100644 --- a/src/sp-item-notify-moveto.cpp +++ b/src/sp-item-notify-moveto.cpp @@ -51,7 +51,7 @@ void sp_item_notify_moveto(SPItem &item, SPGuide const &mv_g, int const snappoin /* Commit repr. */ { - item.doWriteTransform(item.getRepr(), item.transform); + item.doWriteTransform(item.transform); } sp_item_rm_unsatisfied_cns(item); diff --git a/src/sp-item-transform.cpp b/src/sp-item-transform.cpp index f1c69cdf6..3675323ca 100644 --- a/src/sp-item-transform.cpp +++ b/src/sp-item-transform.cpp @@ -29,7 +29,7 @@ void sp_item_rotate_rel(SPItem *item, Geom::Rotate const &rotation) // Rotate item. item->set_i2d_affine(item->i2dt_affine() * (Geom::Affine)affine); // Use each item's own transform writer, consistent with sp_selection_apply_affine() - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); // Restore the center position (it's changed because the bbox center changed) if (item->isCenterSet()) { @@ -44,7 +44,7 @@ void sp_item_scale_rel(SPItem *item, Geom::Scale const &scale) if (bbox) { Geom::Translate const s(bbox->midpoint()); // use getCenter? item->set_i2d_affine(item->i2dt_affine() * s.inverse() * scale * s); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); } } @@ -57,7 +57,7 @@ void sp_item_skew_rel(SPItem *item, double skewX, double skewY) Geom::Affine affine = Geom::Affine(s).inverse() * skew * Geom::Affine(s); item->set_i2d_affine(item->i2dt_affine() * affine); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); // Restore the center position (it's changed because the bbox center changed) if (item->isCenterSet()) { @@ -70,7 +70,7 @@ void sp_item_move_rel(SPItem *item, Geom::Translate const &tr) { item->set_i2d_affine(item->i2dt_affine() * tr); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); } /** diff --git a/src/sp-item.cpp b/src/sp-item.cpp index b4642da5d..dd98ee1a4 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -1422,9 +1422,8 @@ Geom::Affine SPItem::set_transform(Geom::Affine const &transform) { return transform; } -void SPItem::doWriteTransform(Inkscape::XML::Node *repr, Geom::Affine const &transform, Geom::Affine const *adv, bool compensate) +void SPItem::doWriteTransform(Geom::Affine const &transform, Geom::Affine const *adv, bool compensate) { - g_return_if_fail(repr != NULL); // calculate the relative transform, if not given by the adv attribute Geom::Affine advertized_transform; if (adv != NULL) { diff --git a/src/sp-item.h b/src/sp-item.h index c4d353a1d..36af02edc 100644 --- a/src/sp-item.h +++ b/src/sp-item.h @@ -330,7 +330,7 @@ public: * stored optimized. Send _transformed_signal. Invoke _write method so that * the repr is updated with the new transform. */ - void doWriteTransform(Inkscape::XML::Node *repr, Geom::Affine const &transform, Geom::Affine const *adv = NULL, bool compensate = true); + void doWriteTransform(Geom::Affine const &transform, Geom::Affine const *adv = NULL, bool compensate = true); /** * Sets item private transform (not propagated to repr), without compensating stroke widths, diff --git a/src/sp-marker.cpp b/src/sp-marker.cpp index 43df8525d..01a0d5e61 100644 --- a/src/sp-marker.cpp +++ b/src/sp-marker.cpp @@ -455,7 +455,7 @@ const gchar *generate_marker(std::vector &reprs, Geom::Rec dup_transform = Geom::identity(); dup_transform *= move; - copy->doWriteTransform(copy->getRepr(), dup_transform); + copy->doWriteTransform(dup_transform); } Inkscape::GC::release(repr); diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index a47fab35e..d2d4801f9 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -209,7 +209,7 @@ sp_mask_create (std::vector &reprs, SPDocument *document, if (NULL != applyTransform) { Geom::Affine transform (item->transform * (*applyTransform)); - item->doWriteTransform(item->getRepr(), transform); + item->doWriteTransform(transform); } } diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp index e5b1b5d69..e2ec9751c 100644 --- a/src/sp-offset.cpp +++ b/src/sp-offset.cpp @@ -1065,7 +1065,7 @@ static void sp_offset_move_compensate(Geom::Affine const *mp, SPItem */*original // commit the compensation self->transform *= offset_move; - self->doWriteTransform(self->getRepr(), self->transform, &advertized_move); + self->doWriteTransform(self->transform, &advertized_move); self->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp index 1e198506b..9ecfe8baa 100644 --- a/src/sp-pattern.cpp +++ b/src/sp-pattern.cpp @@ -408,7 +408,7 @@ const gchar *SPPattern::produce(const std::vector &reprs, dup_transform = Geom::identity(); dup_transform *= move; - copy->doWriteTransform(copy->getRepr(), dup_transform, NULL, false); + copy->doWriteTransform(dup_transform, NULL, false); } Inkscape::GC::release(repr); diff --git a/src/sp-use.cpp b/src/sp-use.cpp index 648852961..abb59d299 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -442,7 +442,7 @@ void SPUse::move_compensate(Geom::Affine const *mp) { if(item){ item->transform *= m; Geom::Affine identity; - item->doWriteTransform(clip.getRepr(),item->transform, &identity); + item->doWriteTransform(item->transform, &identity); } } } @@ -452,7 +452,7 @@ void SPUse::move_compensate(Geom::Affine const *mp) { if(item){ item->transform *= m; Geom::Affine identity; - item->doWriteTransform(mask.getRepr(),item->transform, &identity); + item->doWriteTransform(item->transform, &identity); } } } @@ -482,7 +482,7 @@ void SPUse::move_compensate(Geom::Affine const *mp) { if(item){ item->transform *= clone_move.inverse(); Geom::Affine identity; - item->doWriteTransform(clip.getRepr(),item->transform, &identity); + item->doWriteTransform(item->transform, &identity); } } } @@ -492,7 +492,7 @@ void SPUse::move_compensate(Geom::Affine const *mp) { if(item){ item->transform *= clone_move.inverse(); Geom::Affine identity; - item->doWriteTransform(mask.getRepr(),item->transform, &identity); + item->doWriteTransform(item->transform, &identity); } } } @@ -500,7 +500,7 @@ void SPUse::move_compensate(Geom::Affine const *mp) { // commit the compensation this->transform *= clone_move; - this->doWriteTransform(this->getRepr(), this->transform, &advertized_move); + this->doWriteTransform(this->transform, &advertized_move); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } @@ -742,7 +742,7 @@ SPItem *SPUse::unlink() { { Geom::Affine nomove(Geom::identity()); // Advertise ourselves as not moving. - item->doWriteTransform(item->getRepr(), t, &nomove); + item->doWriteTransform(t, &nomove); } return item; diff --git a/src/splivarot.cpp b/src/splivarot.cpp index c594a6426..3410a2635 100644 --- a/src/splivarot.cpp +++ b/src/splivarot.cpp @@ -867,7 +867,7 @@ void sp_selected_path_outline_add_marker( SPObject *marker_object, Geom::Affine //There is a special group to markers whith this reverse the order in clussion m_repr->setPosition(0); SPItem *marker_item = (SPItem *) doc->getObjectByRepr(m_repr); - marker_item->doWriteTransform(m_repr, tr); + marker_item->doWriteTransform(tr); if (!legacy) { sp_item_path_outline(marker_item, desktop, legacy); } @@ -1414,7 +1414,7 @@ sp_item_path_outline(SPItem *item, SPDesktop *desktop, bool legacy) // restore title, description, id, transform g_repr->setAttribute("id", id); SPItem *newitem = (SPItem *) doc->getObjectByRepr(g_repr); - newitem->doWriteTransform(g_repr, transform); + newitem->doWriteTransform(transform); if (title) { newitem->setTitle(title); } @@ -1768,7 +1768,7 @@ void sp_selected_path_create_offset_object(SPDesktop *desktop, int expand, bool Geom::Affine const transform(item->transform); - item->doWriteTransform(item->getRepr(), Geom::identity()); + item->doWriteTransform(Geom::identity()); //XML Tree being used directly here while it shouldn't be... gchar *style = g_strdup(item->getRepr()->attribute("style")); @@ -1869,7 +1869,7 @@ void sp_selected_path_create_offset_object(SPDesktop *desktop, int expand, bool if ( updating ) { //XML Tree being used directly here while it shouldn't be - item->doWriteTransform(item->getRepr(), transform); + item->doWriteTransform(transform); char const *id = item->getRepr()->attribute("id"); char const *uri = g_strdup_printf("#%s", id); repr->setAttribute("xlink:href", uri); @@ -1893,7 +1893,7 @@ void sp_selected_path_create_offset_object(SPDesktop *desktop, int expand, bool const char *n_id = item->getRepr()->attribute("id"); item->deleteObject(false); repr->setAttribute("id", n_id); - nitem->doWriteTransform(repr, transform); + nitem->doWriteTransform(transform); } // The object just created from a temporary repr is only a seed. @@ -1961,7 +1961,7 @@ sp_selected_path_do_offset(SPDesktop *desktop, bool expand, double prefOffset) Geom::Affine const transform(item->transform); - item->doWriteTransform(item->getRepr(), Geom::identity()); + item->doWriteTransform(Geom::identity()); gchar *style = g_strdup(item->getRepr()->attribute("style")); @@ -2103,7 +2103,7 @@ sp_selected_path_do_offset(SPDesktop *desktop, bool expand, double prefOffset) SPItem *newitem = (SPItem *) desktop->getDocument()->getObjectByRepr(repr); // reapply the transform - newitem->doWriteTransform(repr, transform); + newitem->doWriteTransform(transform); repr->setAttribute("id", id); @@ -2173,7 +2173,7 @@ sp_selected_path_simplify_item(SPDesktop *desktop, this is necessary so that the item is transformed twice back and forth, allowing all compensations to cancel out regardless of the preferences */ - item->doWriteTransform(item->getRepr(), Geom::identity()); + item->doWriteTransform(Geom::identity()); gchar *style = g_strdup(item->getRepr()->attribute("style")); gchar *mask = g_strdup(item->getRepr()->attribute("mask")); @@ -2246,7 +2246,7 @@ sp_selected_path_simplify_item(SPDesktop *desktop, SPItem *newitem = (SPItem *) desktop->getDocument()->getObjectByRepr(repr); // reapply the transform - newitem->doWriteTransform(repr, transform); + newitem->doWriteTransform(transform); // restore title & description if (title) { diff --git a/src/text-chemistry.cpp b/src/text-chemistry.cpp index 2b731c75d..bde269de7 100644 --- a/src/text-chemistry.cpp +++ b/src/text-chemistry.cpp @@ -119,7 +119,7 @@ text_put_on_path() parent->appendChild(repr); SPItem *new_item = (SPItem *) desktop->getDocument()->getObjectByRepr(repr); - new_item->doWriteTransform(repr, text->transform); + new_item->doWriteTransform(text->transform); new_item->updateRepr(); Inkscape::GC::release(repr); @@ -505,7 +505,7 @@ flowtext_to_text() parent->addChild(repr, item->getRepr()); SPItem *new_item = reinterpret_cast(desktop->getDocument()->getObjectByRepr(repr)); - new_item->doWriteTransform(repr, item->transform); + new_item->doWriteTransform(item->transform); new_item->updateRepr(); Inkscape::GC::release(repr); diff --git a/src/trace/trace.cpp b/src/trace/trace.cpp index 52e99886a..b93d8358f 100644 --- a/src/trace/trace.cpp +++ b/src/trace/trace.cpp @@ -527,7 +527,7 @@ void Tracer::traceThread() if (reprobj) { SPItem *newItem = SP_ITEM(reprobj); - newItem->doWriteTransform(pathRepr, tf, NULL); + newItem->doWriteTransform(tf); } if (nrPaths == 1) { diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp index 3cbc1b6e9..6e08645cf 100644 --- a/src/ui/dialog/grid-arrange-tab.cpp +++ b/src/ui/dialog/grid-arrange-tab.cpp @@ -329,7 +329,7 @@ g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_h Geom::Point move = Geom::Point(new_x - min[Geom::X], min[Geom::Y] - new_y); Geom::Affine const affine = Geom::Affine(Geom::Translate(move)); item->set_i2d_affine(item->i2dt_affine() * affine); - item->doWriteTransform(repr, item->transform, NULL); + item->doWriteTransform(item->transform); SP_OBJECT (current_row->data)->updateRepr(); cnt +=1; } diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp index 3c99d1461..4a381a565 100644 --- a/src/ui/dialog/layers.cpp +++ b/src/ui/dialog/layers.cpp @@ -713,12 +713,12 @@ void LayersPanel::_doTreeMove( ) { if (_dnd_source && _dnd_source->getRepr() ) { if(!_dnd_target){ - _dnd_source->doWriteTransform(_dnd_source->getRepr(), _dnd_source->i2doc_affine() * _dnd_source->document->getRoot()->i2doc_affine().inverse()); + _dnd_source->doWriteTransform(_dnd_source->i2doc_affine() * _dnd_source->document->getRoot()->i2doc_affine().inverse()); }else{ SPItem* parent = _dnd_into ? _dnd_target : dynamic_cast(_dnd_target->parent); if(parent){ Geom::Affine move = _dnd_source->i2doc_affine() * parent->i2doc_affine().inverse(); - _dnd_source->doWriteTransform(_dnd_source->getRepr(), move); + _dnd_source->doWriteTransform(move); } } _dnd_source->moveTo(_dnd_target, _dnd_into); diff --git a/src/ui/dialog/polar-arrange-tab.cpp b/src/ui/dialog/polar-arrange-tab.cpp index 2b4550d20..75e1a56b8 100644 --- a/src/ui/dialog/polar-arrange-tab.cpp +++ b/src/ui/dialog/polar-arrange-tab.cpp @@ -140,7 +140,7 @@ static void rotateAround(SPItem *item, Geom::Point center, Geom::Rotate const &r center = item->getCenter(); item->set_i2d_affine(item->i2dt_affine() * affine); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); if(item->isCenterSet()) { diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index 5ad1b9ec5..8713e6ddc 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -727,7 +727,7 @@ void Transformation::applyPageScale(Inkscape::Selection *selection) Geom::Affine scaler = get_scale_transform_for_variable_stroke (*bbox_pref, *bbox_geom, transform_stroke, preserve, x0, y0, x1, y1); item->set_i2d_affine(item->i2dt_affine() * scaler); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); } } } else { diff --git a/src/ui/tools/arc-tool.cpp b/src/ui/tools/arc-tool.cpp index b501962fb..712561b85 100644 --- a/src/ui/tools/arc-tool.cpp +++ b/src/ui/tools/arc-tool.cpp @@ -418,7 +418,7 @@ void ArcTool::finishItem() { } this->arc->updateRepr(); - this->arc->doWriteTransform(this->arc->getRepr(), this->arc->transform, NULL, true); + this->arc->doWriteTransform(this->arc->transform, NULL, true); desktop->canvas->endForcedFullRedraws(); diff --git a/src/ui/tools/calligraphic-tool.cpp b/src/ui/tools/calligraphic-tool.cpp index 266375caa..3e00fe69c 100644 --- a/src/ui/tools/calligraphic-tool.cpp +++ b/src/ui/tools/calligraphic-tool.cpp @@ -947,7 +947,7 @@ void CalligraphicTool::set_to_accumulated(bool unionize, bool subtract) { result = desktop->getSelection()->singleItem(); } - result->doWriteTransform(result->getRepr(), result->transform, NULL, true); + result->doWriteTransform(result->transform, NULL, true); } else { if (this->repr) { sp_repr_unparent(this->repr); diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp index 6d2682089..59d670d74 100644 --- a/src/ui/tools/connector-tool.cpp +++ b/src/ui/tools/connector-tool.cpp @@ -904,7 +904,7 @@ void ConnectorTool::_flushWhite(SPCurve *gc) { this->newconn->updateRepr(); } - this->newconn->doWriteTransform(this->newconn->getRepr(), this->newconn->transform, NULL, true); + this->newconn->doWriteTransform(this->newconn->transform, NULL, true); // Only set the selection after we are finished with creating the attributes of // the connector. Otherwise, the selection change may alter the defaults for diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index b4246b9cc..b919c138c 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -780,7 +780,7 @@ void EraserTool::set_to_accumulated() { if (dup_clip) { SPItem * dup_clip_obj = SP_ITEM(item_repr->parent->appendChildRepr(dup_clip)); if (dup_clip_obj) { - dup_clip_obj->doWriteTransform(dup_clip, item->transform); + dup_clip_obj->doWriteTransform(item->transform); sp_object_ref(clip_path, 0); clip_path->deleteObject(true); sp_object_unref(clip_path); diff --git a/src/ui/tools/flood-tool.cpp b/src/ui/tools/flood-tool.cpp index f6f9b4355..daeff228c 100644 --- a/src/ui/tools/flood-tool.cpp +++ b/src/ui/tools/flood-tool.cpp @@ -444,7 +444,7 @@ static void do_trace(bitmap_coords_info bci, guchar *trace_px, SPDesktop *deskto SPObject *reprobj = document->getObjectByRepr(pathRepr); if (reprobj) { - SP_ITEM(reprobj)->doWriteTransform(pathRepr, transform, NULL); + SP_ITEM(reprobj)->doWriteTransform(transform); // premultiply the item transform by the accumulated parent transform in the paste layer Geom::Affine local (SP_GROUP(desktop->currentLayer())->i2doc_affine()); diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp index 4313c4e29..fce17542a 100644 --- a/src/ui/tools/freehand-base.cpp +++ b/src/ui/tools/freehand-base.cpp @@ -822,7 +822,7 @@ static void spdc_flush_white(FreehandBase *dc, SPCurve *gc) Inkscape::GC::release(repr); item->transform = SP_ITEM(desktop->currentLayer())->i2doc_affine().inverse(); item->updateRepr(); - item->doWriteTransform(item->getRepr(), item->transform, NULL, true); + item->doWriteTransform(item->transform, NULL, true); spdc_check_for_and_apply_waiting_LPE(dc, item, c, false); dc->selection->set(repr); if(previous_shape_type == BEND_CLIPBOARD){ diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp index 0da883891..24295e7cf 100644 --- a/src/ui/tools/measure-tool.cpp +++ b/src/ui/tools/measure-tool.cpp @@ -1005,7 +1005,7 @@ void MeasureTool::setLabelText(const char *value, Geom::Point pos, double fontsi text_item_box->transform *= Geom::Translate(pos); text_item_box->transform *= SP_ITEM(desktop->currentLayer())->i2doc_affine().inverse(); text_item_box->updateRepr(); - text_item_box->doWriteTransform(text_item_box->getRepr(), text_item_box->transform, NULL, true); + text_item_box->doWriteTransform(text_item_box->transform, NULL, true); Inkscape::XML::Node *rlabel = text_item_box->getRepr(); text_item_box->deleteObject(); measure_repr->addChild(rlabel, NULL); @@ -1014,7 +1014,7 @@ void MeasureTool::setLabelText(const char *value, Geom::Point pos, double fontsi text_item->transform *= Geom::Rotate(angle); text_item->transform *= Geom::Translate(pos); text_item->transform *= SP_ITEM(desktop->currentLayer())->i2doc_affine().inverse(); - text_item->doWriteTransform(text_item->getRepr(), text_item->transform, NULL, true); + text_item->doWriteTransform(text_item->transform, NULL, true); } } diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp index 9ebf51e76..0a116e8cd 100644 --- a/src/ui/tools/rect-tool.cpp +++ b/src/ui/tools/rect-tool.cpp @@ -447,7 +447,7 @@ void RectTool::finishItem() { } this->rect->updateRepr(); - this->rect->doWriteTransform(this->rect->getRepr(), this->rect->transform, NULL, true); + this->rect->doWriteTransform(this->rect->transform, NULL, true); this->desktop->canvas->endForcedFullRedraws(); diff --git a/src/ui/tools/spiral-tool.cpp b/src/ui/tools/spiral-tool.cpp index b681aec38..8e10935e8 100644 --- a/src/ui/tools/spiral-tool.cpp +++ b/src/ui/tools/spiral-tool.cpp @@ -390,7 +390,7 @@ void SpiralTool::finishItem() { spiral->set_shape(); spiral->updateRepr(SP_OBJECT_WRITE_EXT); - spiral->doWriteTransform(spiral->getRepr(), spiral->transform, NULL, true); + spiral->doWriteTransform(spiral->transform, NULL, true); this->desktop->canvas->endForcedFullRedraws(); diff --git a/src/ui/tools/spray-tool.cpp b/src/ui/tools/spray-tool.cpp index f3e7e6d3c..eec7babc4 100644 --- a/src/ui/tools/spray-tool.cpp +++ b/src/ui/tools/spray-tool.cpp @@ -120,7 +120,7 @@ static void sp_spray_rotate_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *i // Rotate item. item->set_i2d_affine(item->i2dt_affine() * affine); // Use each item's own transform writer, consistent with sp_selection_apply_affine() - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); // Restore the center position (it's changed because the bbox center changed) if (item->isCenterSet()) { item->setCenter(c); @@ -133,7 +133,7 @@ static void sp_spray_scale_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *it { Geom::Translate const s(c); item->set_i2d_affine(item->i2dt_affine() * s.inverse() * scale * s); - item->doWriteTransform(item->getRepr(), item->transform); + item->doWriteTransform(item->transform); } SprayTool::SprayTool() diff --git a/src/ui/tools/star-tool.cpp b/src/ui/tools/star-tool.cpp index 32f0e6d92..d5e782f68 100644 --- a/src/ui/tools/star-tool.cpp +++ b/src/ui/tools/star-tool.cpp @@ -415,7 +415,7 @@ void StarTool::finishItem() { this->star->setCenter(this->center); this->star->set_shape(); this->star->updateRepr(SP_OBJECT_WRITE_EXT); - this->star->doWriteTransform(this->star->getRepr(), this->star->transform, NULL, true); + this->star->doWriteTransform(this->star->transform, NULL, true); desktop->canvas->endForcedFullRedraws(); diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 9091b455e..bab4ebb59 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -417,7 +417,7 @@ static void sp_text_context_setup_text(TextTool *tc) text_item->transform = SP_ITEM(ec->desktop->currentLayer())->i2doc_affine().inverse(); text_item->updateRepr(); - text_item->doWriteTransform(text_item->getRepr(), text_item->transform, NULL, true); + text_item->doWriteTransform(text_item->transform, NULL, true); DocumentUndo::done(ec->desktop->getDocument(), SP_VERB_CONTEXT_TEXT, _("Create text")); } diff --git a/src/unclump.cpp b/src/unclump.cpp index 5ec5cfce4..55825cdd6 100644 --- a/src/unclump.cpp +++ b/src/unclump.cpp @@ -298,7 +298,7 @@ unclump_push (SPItem *from, SPItem *what, double dist) //g_print ("push %s at %g,%g from %g,%g by %g,%g, dist %g\n", what->getId(), it[Geom::X],it[Geom::Y], p[Geom::X],p[Geom::Y], by[Geom::X],by[Geom::Y], dist); what->set_i2d_affine(what->i2dt_affine() * move); - what->doWriteTransform(what->getRepr(), what->transform, NULL); + what->doWriteTransform(what->transform); } /** @@ -321,7 +321,7 @@ unclump_pull (SPItem *to, SPItem *what, double dist) //g_print ("pull %s at %g,%g to %g,%g by %g,%g, dist %g\n", what->getId(), it[Geom::X],it[Geom::Y], p[Geom::X],p[Geom::Y], by[Geom::X],by[Geom::Y], dist); what->set_i2d_affine(what->i2dt_affine() * move); - what->doWriteTransform(what->getRepr(), what->transform, NULL); + what->doWriteTransform(what->transform); } -- cgit v1.2.3 From f81751abb770d0367d6c515cdcb56a7954714eab Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sat, 23 Sep 2017 10:23:47 +0200 Subject: Transform duplicate object only when clipping or masking --- src/selection-chemistry.cpp | 37 +++++++++++++++++++++---------------- src/sp-clippath.cpp | 9 ++------- src/sp-clippath.h | 2 +- src/sp-mask.cpp | 9 ++------- src/sp-mask.h | 2 +- 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index b13af6bac..7dfe74752 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -3871,11 +3871,10 @@ void ObjectSet::setClipGroup() clone->setAttribute("inkscape:transform-center-x", inner->attribute("inkscape:transform-center-x"), false); clone->setAttribute("inkscape:transform-center-y", inner->attribute("inkscape:transform-center-y"), false); - const Geom::Affine maskTransform(Geom::Affine::identity()); std::vector templist; templist.push_back(clone); // add the new clone to the top of the original's parent - gchar const *mask_id = SPClipPath::create(templist, doc, &maskTransform); + gchar const *mask_id = SPClipPath::create(templist, doc); outer->setAttribute("clip-path", g_strdup_printf("url(#%s)", mask_id)); @@ -3933,7 +3932,7 @@ void ObjectSet::setClipGroup() clear(); // create a list of duplicates - std::vector mask_items; + std::vector> mask_items; std::vector apply_to_items; std::vector items_to_delete; std::vector items_to_select; @@ -3953,12 +3952,8 @@ void ObjectSet::setClipGroup() || (topmost && !apply_to_layer && *i == items_.back()) || apply_to_layer){ - Geom::Affine oldtr=(*i)->transform; - oldtr *= SP_ITEM((*i)->parent)->i2doc_affine().inverse(); - (*i)->doWriteTransform((*i)->i2doc_affine()); Inkscape::XML::Node *dup = (*i)->getRepr()->duplicate(xml_doc); - (*i)->doWriteTransform(oldtr); - mask_items.push_back(dup); + mask_items.push_back(std::make_pair(dup, (*i)->i2doc_affine())); if (remove_original) { items_to_delete.push_back(*i); @@ -4003,11 +3998,15 @@ void ObjectSet::setClipGroup() gchar const *attributeName = apply_clip_path ? "clip-path" : "mask"; for (std::vector::const_reverse_iterator i = apply_to_items.rbegin(); i != apply_to_items.rend(); ++i) { SPItem *item = reinterpret_cast(*i); - // inverted object transform should be applied to a mask object, - // as mask is calculated in user space (after applying transform) + std::vector mask_items_dup; - for(std::vector::const_iterator it=mask_items.begin();it!=mask_items.end();++it) - mask_items_dup.push_back((*it)->duplicate(xml_doc)); + std::map dup_transf; + for (auto it = mask_items.begin(); it != mask_items.end(); ++it) { + Inkscape::XML::Node *dup = ((*it).first)->duplicate(xml_doc); + mask_items_dup.push_back(dup); + dup_transf[dup] = (*it).second; + } + Inkscape::XML::Node *current = SP_OBJECT(*i)->getRepr(); // Node to apply mask to Inkscape::XML::Node *apply_mask_to = current; @@ -4033,13 +4032,19 @@ void ObjectSet::setClipGroup() Inkscape::GC::release(group); } - Geom::Affine maskTransform(item->i2doc_affine().inverse()); - gchar const *mask_id = NULL; if (apply_clip_path) { - mask_id = SPClipPath::create(mask_items_dup, doc, &maskTransform); + mask_id = SPClipPath::create(mask_items_dup, doc); } else { - mask_id = sp_mask_create(mask_items_dup, doc, &maskTransform); + mask_id = sp_mask_create(mask_items_dup, doc); + } + + // inverted object transform should be applied to a mask object, + // as mask is calculated in user space (after applying transform) + for (auto it = mask_items_dup.begin(); it != mask_items_dup.end(); ++it) { + SPItem *clip_item = SP_ITEM(doc->getObjectByRepr(*it)); + clip_item->doWriteTransform(dup_transf[*it]); + clip_item->doWriteTransform(clip_item->transform * item->i2doc_affine().inverse()); } apply_mask_to->setAttribute(attributeName, Glib::ustring("url(#") + mask_id + ')'); diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 52c043aee..a56dfd85a 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -292,7 +292,7 @@ sp_clippath_view_list_remove(SPClipPathView *list, SPClipPathView *view) } // Create a mask element (using passed elements), add it to -const gchar *SPClipPath::create (std::vector &reprs, SPDocument *document, Geom::Affine const* applyTransform) +const gchar *SPClipPath::create (std::vector &reprs, SPDocument *document) { Inkscape::XML::Node *defsrepr = document->getDefs()->getRepr(); @@ -306,12 +306,7 @@ const gchar *SPClipPath::create (std::vector &reprs, SPDoc for (std::vector::const_iterator it = reprs.begin(); it != reprs.end(); ++it) { Inkscape::XML::Node *node = (*it); - SPItem *item = SP_ITEM(clip_path_object->appendChildRepr(node)); - - if (NULL != applyTransform) { - Geom::Affine transform (item->transform * (*applyTransform)); - item->doWriteTransform(transform); - } + clip_path_object->appendChildRepr(node); } Inkscape::GC::release(repr); diff --git a/src/sp-clippath.h b/src/sp-clippath.h index 129f3b7f3..87b5be92c 100644 --- a/src/sp-clippath.h +++ b/src/sp-clippath.h @@ -43,7 +43,7 @@ public: unsigned int clipPathUnits : 1; SPClipPathView *display; - static char const *create(std::vector &reprs, SPDocument *document, Geom::Affine const* applyTransform); + static char const *create(std::vector &reprs, SPDocument *document); //static GType sp_clippath_get_type(void); Inkscape::DrawingItem *show(Inkscape::Drawing &drawing, unsigned int key); diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index d2d4801f9..0597d29f7 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -191,7 +191,7 @@ Inkscape::XML::Node* SPMask::write(Inkscape::XML::Document* xml_doc, Inkscape::X // Create a mask element (using passed elements), add it to const gchar * -sp_mask_create (std::vector &reprs, SPDocument *document, Geom::Affine const* applyTransform) +sp_mask_create (std::vector &reprs, SPDocument *document) { Inkscape::XML::Node *defsrepr = document->getDefs()->getRepr(); @@ -205,12 +205,7 @@ sp_mask_create (std::vector &reprs, SPDocument *document, for (std::vector::const_iterator it = reprs.begin(); it != reprs.end(); ++it) { Inkscape::XML::Node *node = (*it); - SPItem *item = SP_ITEM(mask_object->appendChildRepr(node)); - - if (NULL != applyTransform) { - Geom::Affine transform (item->transform * (*applyTransform)); - item->doWriteTransform(transform); - } + mask_object->appendChildRepr(node); } if (repr != defsrepr->lastChild()) diff --git a/src/sp-mask.h b/src/sp-mask.h index 19786b1fd..02d37b82b 100644 --- a/src/sp-mask.h +++ b/src/sp-mask.h @@ -108,6 +108,6 @@ protected: } }; -const char *sp_mask_create (std::vector &reprs, SPDocument *document, Geom::Affine const* applyTransform); +const char *sp_mask_create (std::vector &reprs, SPDocument *document); #endif // SEEN_SP_MASK_H -- cgit v1.2.3 From 66eb773e415c972774da3262d0cc00fae37a64db Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Mon, 25 Sep 2017 12:48:59 +0200 Subject: Minor code cleanup and better handling of non-spacing marks in upright vertical text. --- src/libnrtype/Layout-TNG-Compute.cpp | 21 +++++++++++++++++---- .../expected_rendering/test-glyph-y-pos-large.png | Bin 72482 -> 72842 bytes .../expected_rendering/test-glyph-y-pos.png | Bin 13500 -> 13506 bytes 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 38c3c48c4..7826faf0d 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -405,6 +405,16 @@ bool Layout::Calculator::_measureUnbrokenSpan(ParagraphInfo const ¶, // double glyph_y_offset = font_size_multiplier * info->geometry.y_offset; // std::cout << " glyph: " << info->glyph << " width: " << glyph_width << " x_offset: " << glyph_x_offset << " y_offset: " << glyph_y_offset << std::endl; + font_instance *font = para.pango_items[span->end.iter_span->pango_item_index].font; + double font_size = span->start.iter_span->font_size; + double glyph_h_advance = font_size * font->Advance(info->glyph, false); + double glyph_v_advance = font_size * font->Advance(info->glyph, true ); + // std::cout << " h_advance: " << glyph_h_advance << " v_advance: " << glyph_v_advance << std::endl; + // Geom::OptRect bbox = font->BBox(info->glyph); + // *bbox *= Geom::Scale(font_size); + // std::cout << " bbox: " << *bbox << std::endl; + // std::cout << " h_extent: " << bbox->width() << " v_extent: " << bbox->height() << std::endl; + if (_block_progression == LEFT_TO_RIGHT || _block_progression == RIGHT_TO_LEFT) { // Vertical text @@ -412,18 +422,18 @@ bool Layout::Calculator::_measureUnbrokenSpan(ParagraphInfo const ¶, (text_source->style->text_orientation.computed == SP_CSS_TEXT_ORIENTATION_MIXED && para.pango_items[span->end.iter_span->pango_item_index].item->analysis.gravity == PANGO_GRAVITY_SOUTH) ) { // Sideways orientation - char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(info->glyph, false); + char_width += glyph_h_advance; } else { // Upright orientation guint32 c = *Glib::ustring::const_iterator(span->end.iter_span->input_stream_first_character.base() + span->end.char_byte); if (g_unichar_type (c) != G_UNICODE_NON_SPACING_MARK) { // Non-spacing marks should not contribute to width. Fonts may not report the correct advance, especially if the 'vmtx' table is missing. - char_width += span->start.iter_span->font_size * para.pango_items[span->end.iter_span->pango_item_index].font->Advance(info->glyph, true); + char_width += glyph_v_advance; } } } else { // Horizontal text - char_width += font_size_multiplier * span->end.iter_span->glyph_string->glyphs[span->end_glyph_index].geometry.width; + char_width += font_size_multiplier * info->geometry.width; } span->end_glyph_index++; } @@ -808,13 +818,16 @@ void Layout::Calculator::_outputLine(ParagraphInfo const ¶, para.pango_items[unbroken_span.pango_item_index].font->GetBaselines()[ SP_CSS_BASELINE_CENTRAL ] ); static double shift_y = 0; // Save to use with non_spacing marks (should be shifted the same amount as previous glyph). + static double shift_x = 0; // Subtract incorrect Pango inclusion of horizontal advance (https://bugzilla.gnome.org 787526) if (g_unichar_type (*iter_source_text) == G_UNICODE_NON_SPACING_MARK) { new_glyph.width = 0; - new_glyph.x += new_span.font_size; // Hack! + new_glyph.x += shift_x; // Hack + shift_x = 0; } else { // Glyph reference point is center (shift: left edge to center glyph) shift_y = unbroken_span_glyph_info->geometry.width * 0.5 * font_size_multiplier; new_glyph.width = new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span_glyph_info->glyph, true); + shift_x = new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span_glyph_info->glyph, false); } new_glyph.y -= shift_y; } diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png index 756dc2c47..e60f4772d 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png index f4a8069be..85a3050a8 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png and b/testfiles/rendering_tests/expected_rendering/test-glyph-y-pos.png differ -- cgit v1.2.3 From 943cb6ba767b1f3fd35fb3bb74161f224a53cdc7 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Mon, 25 Sep 2017 21:33:14 +0200 Subject: Add improvements to meassure segments LPE pointed by CR --- po/POTFILES.in | 1 + src/live_effects/CMakeLists.txt | 4 + src/live_effects/lpe-measure-segments.cpp | 225 ++++++++++++++--------------- src/live_effects/lpe-measure-segments.h | 21 +-- src/live_effects/parameter/colorpicker.cpp | 151 +++++++++++++++++++ src/live_effects/parameter/colorpicker.h | 61 ++++++++ src/live_effects/parameter/message.cpp | 101 +++++++++++++ src/live_effects/parameter/message.h | 61 ++++++++ src/ui/widget/registered-widget.cpp | 7 +- 9 files changed, 498 insertions(+), 134 deletions(-) create mode 100644 src/live_effects/parameter/colorpicker.cpp create mode 100644 src/live_effects/parameter/colorpicker.h create mode 100644 src/live_effects/parameter/message.cpp create mode 100644 src/live_effects/parameter/message.h diff --git a/po/POTFILES.in b/po/POTFILES.in index 0a5d1c435..5fcab373b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -156,6 +156,7 @@ src/live_effects/lpe-taperstroke.cpp src/live_effects/lpe-transform_2pts.cpp src/live_effects/lpe-vonkoch.cpp src/live_effects/parameter/bool.cpp +src/live_effects/parameter/colorpicker.cpp src/live_effects/parameter/enum.h src/live_effects/parameter/fontbutton.cpp src/live_effects/parameter/item.cpp diff --git a/src/live_effects/CMakeLists.txt b/src/live_effects/CMakeLists.txt index 2c16e2383..9d18626bc 100644 --- a/src/live_effects/CMakeLists.txt +++ b/src/live_effects/CMakeLists.txt @@ -64,9 +64,11 @@ set(live_effects_SRC parameter/array.cpp parameter/bool.cpp + parameter/colorpicker.cpp parameter/hidden.cpp parameter/item-reference.cpp parameter/item.cpp + parameter/message.cpp parameter/originalitemarray.cpp parameter/originalitem.cpp parameter/originalpath.cpp @@ -155,9 +157,11 @@ set(live_effects_SRC parameter/array.h parameter/bool.h + parameter/colorpicker.h parameter/hidden.h parameter/enum.h parameter/item.h + parameter/message.h parameter/originalitemarray.cpp parameter/item-reference.h parameter/originalitem.h diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 2eae30b4d..a3d4627ef 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -9,6 +9,7 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ #include "live_effects/lpe-measure-segments.h" +#include "live_effects/lpeobject.h" #include #include "ui/dialog/livepatheffect-editor.h" #include @@ -31,6 +32,7 @@ #include "sp-shape.h" #include "sp-path.h" #include "document.h" +#include "document-undo.h" #include #include @@ -51,8 +53,9 @@ static const Util::EnumDataConverter OMConverter(OrientationM LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : Effect(lpeobject), unit(_("Unit"), _("Unit"), "unit", &wr, this, "mm"), - fontbutton(_("Font"), _("Font Selector"), "fontbutton", &wr, this), orientation(_("Orientation"), _("Orientation method"), "orientation", OMConverter, &wr, this, OM_PARALLEL, false), + coloropacity(_("Color and opacity"), _("Set color and opacity of the measurements"), "coloropacity", &wr, this, 0x000000ff), + fontbutton(_("Font"), _("Font Selector"), "fontbutton", &wr, this), precision(_("Precision"), _("Precision"), "precision", &wr, this, 2), fix_overlaps(_("Fix overlaps °"), _("Min angle where overlaps are fixed, 180° no fix"), "fix_overlaps", &wr, this, 0), position(_("Position"), _("Position"), "position", &wr, this, 5), @@ -60,7 +63,9 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : text_right_left(_("Text right/left"), _("Text right/left"), "text_right_left", &wr, this, 0), helpline_distance(_("Helpline distance"), _("Helpline distance"), "helpline_distance", &wr, this, 0.0), helpline_overlap(_("Helpline overlap"), _("Helpline overlap"), "helpline_overlap", &wr, this, 2.0), + line_width(_("Line width"), _("Line width. DIM line group standar are 0.25 or 0.35"), "line_width", &wr, this, 0.25), scale(_("Scale"), _("Scaling factor"), "scale", &wr, this, 1.0), + format(_("Format"), _("Format the number ex:{measure} {unit}, return to save"), "format", &wr, this,"{measure}{unit}"), blacklist(_("Blacklist"), _("Optional segment index that exclude measure, comma limited, you can add more LPE like this to fill the holes"), "blacklist", &wr, this,""), whitelist(_("Inverse blacklist"), _("Blacklist as whitelist"), "whitelist", &wr, this, false), @@ -68,19 +73,15 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : flip_side(_("Flip side"), _("Flip side"), "flip_side", &wr, this, false), scale_sensitive(_("Scale sensitive"), _("Costrained scale sensitive to transformed containers"), "scale_sensitive", &wr, this, true), local_locale(_("Local Number Format"), _("Local number format"), "local_locale", &wr, this, true), - line_group_05(_("Line Group 0.5"), _("Line Group 0.5, from 0.7"), "line_group_05", &wr, this, true), rotate_anotation(_("Rotate Anotation"), _("Rotate Anotation"), "rotate_anotation", &wr, this, true), hide_back(_("Hide if label over"), _("Hide DIN line if label over"), "hide_back", &wr, this, true), - dimline_format(_("CSS DIN line"), _("Override CSS to DIN line, return to save, empty to reset to DIM"), "dimline_format", &wr, this,""), - helperlines_format(_("CSS helpers"), _("Override CSS to helper lines, return to save, empty to reset to DIM"), "helperlines_format", &wr, this,""), - anotation_format(_("CSS anotation"), _("Override CSS to anotation text, return to save, empty to reset to DIM"), "anotation_format", &wr, this,""), - arrows_format(_("CSS arrows"), _("Override CSS to arrows, return to save, empty to reset DIM"), "arrows_format", &wr, this,""), - expanded(false) + message(_("Info Box"), _("Important messages"), "message", &wr, this, _("Use \"Style Dialog\" to more styling. Each meassure element has extra selectors...")) { //set to true the parameters you want to be changed his default values registerParameter(&unit); - registerParameter(&fontbutton); registerParameter(&orientation); + registerParameter(&coloropacity); + registerParameter(&fontbutton); registerParameter(&precision); registerParameter(&fix_overlaps); registerParameter(&position); @@ -88,6 +89,7 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : registerParameter(&text_right_left); registerParameter(&helpline_distance); registerParameter(&helpline_overlap); + registerParameter(&line_width); registerParameter(&scale); registerParameter(&format); registerParameter(&blacklist); @@ -96,13 +98,9 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : registerParameter(&flip_side); registerParameter(&scale_sensitive); registerParameter(&local_locale); - registerParameter(&line_group_05); registerParameter(&rotate_anotation); registerParameter(&hide_back); - registerParameter(&dimline_format); - registerParameter(&helperlines_format); - registerParameter(&anotation_format); - registerParameter(&arrows_format); + registerParameter(&message); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -114,10 +112,6 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : format.param_hide_canvas_text(); blacklist.param_hide_canvas_text(); - dimline_format.param_hide_canvas_text(); - helperlines_format.param_hide_canvas_text(); - anotation_format.param_hide_canvas_text(); - arrows_format.param_hide_canvas_text(); precision.param_set_range(0, 100); precision.param_set_increments(1, 1); precision.param_set_digits(0); @@ -135,6 +129,9 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : text_top_bottom.param_set_range(-999999.0, 999999.0); text_top_bottom.param_set_increments(1, 1); text_top_bottom.param_set_digits(2); + line_width.param_set_range(-999999.0, 999999.0); + line_width.param_set_increments(1, 1); + line_width.param_set_digits(2); text_right_left.param_set_range(-999999.0, 999999.0); text_right_left.param_set_increments(1, 1); text_right_left.param_set_digits(2); @@ -155,6 +152,14 @@ LPEMeasureSegments::createArrowMarker(const char * mode) if (!document) { return; } + Glib::ustring style; + gchar c[32]; + unsigned const rgb24 = coloropacity.get_value() >> 8; + sprintf(c, "#%06x", rgb24); + style = Glib::ustring("fill:") + Glib::ustring(c); + Inkscape::SVGOStringStream os; + os << SP_RGBA32_A_F(coloropacity.get_value()); + style = style + Glib::ustring(";fill-opacity:") + Glib::ustring(os.str()); Inkscape::XML::Document *xml_doc = document->getReprDoc(); SPObject *elemref = NULL; Inkscape::XML::Node *arrow = NULL; @@ -165,24 +170,19 @@ LPEMeasureSegments::createArrowMarker(const char * mode) arrow->setAttribute("transform", NULL); Inkscape::XML::Node *arrow_data = arrow->firstChild(); if (arrow_data) { - SPCSSAttr *css = sp_repr_css_attr_new(); - sp_repr_css_set_property (css, "fill","#000000"); - sp_repr_css_set_property (css, "stroke","none"); arrow_data->setAttribute("transform", NULL); - sp_repr_css_attr_add_from_string(css, arrows_format.param_getSVGValue()); - Glib::ustring css_str; - sp_repr_css_write_string(css,css_str); - arrow_data->setAttribute("style", css_str.c_str()); + arrow_data->setAttribute("style", style.c_str()); } } } else { arrow = xml_doc->createElement("svg:marker"); arrow->setAttribute("id", mode); + arrow->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-arrows")).c_str()); arrow->setAttribute("inkscape:stockid", mode); arrow->setAttribute("orient", "auto"); arrow->setAttribute("refX", "0.0"); arrow->setAttribute("refY", "0.0"); - arrow->setAttribute("style", "overflow:visible"); + arrow->setAttribute("sodipodi:insensitive", "true"); /* Create */ Inkscape::XML::Node *arrow_path = xml_doc->createElement("svg:path"); @@ -197,13 +197,7 @@ LPEMeasureSegments::createArrowMarker(const char * mode) } arrow_path->setAttribute("id", Glib::ustring(mode).append("_path").c_str()); - SPCSSAttr *css = sp_repr_css_attr_new(); - sp_repr_css_set_property (css, "fill","#000000"); - sp_repr_css_set_property (css, "stroke","none"); - sp_repr_css_attr_add_from_string(css, arrows_format.param_getSVGValue()); - Glib::ustring css_str; - sp_repr_css_write_string(css,css_str); - arrow_path->setAttribute("style", css_str.c_str()); + arrow_path->setAttribute("style", style.c_str()); arrow->addChild(arrow_path, NULL); Inkscape::GC::release(arrow_path); elemref = SP_OBJECT(document->getDefs()->appendChildRepr(arrow)); @@ -256,6 +250,7 @@ LPEMeasureSegments::createTextLabel(Geom::Point pos, size_t counter, double leng rtext = xml_doc->createElement("svg:text"); rtext->setAttribute("xml:space", "preserve"); rtext->setAttribute("id", id); + rtext->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-labels")).c_str()); rtext->setAttribute("sodipodi:insensitive", "true"); pos = pos - Point::polar(angle, text_right_left); sp_repr_set_svg_double(rtext, "x", pos[Geom::X]); @@ -281,27 +276,25 @@ LPEMeasureSegments::createTextLabel(Geom::Point pos, size_t counter, double leng rtext->setAttribute("transform", transform); g_free(transform); SPCSSAttr *css = sp_repr_css_attr_new(); - sp_repr_css_attr_add_from_string(css, anotation_format.param_getSVGValue()); Inkscape::FontLister *fontlister = Inkscape::FontLister::get_instance(); fontlister->fill_css(css, Glib::ustring(fontbutton.param_getSVGValue())); std::stringstream font_size; font_size.imbue(std::locale::classic()); font_size << fontsize << "pt"; - sp_repr_css_set_property (css, "font-size",font_size.str().c_str()); - sp_repr_css_set_property (css, "line-height","125%"); - sp_repr_css_set_property (css, "letter-spacing","0"); - sp_repr_css_set_property (css, "word-spacing", "0"); - sp_repr_css_set_property (css, "text-align", "center"); - sp_repr_css_set_property (css, "text-anchor", "middle"); - sp_repr_css_set_property (css, "fill", "#000000"); - sp_repr_css_set_property (css, "fill-opacity", "1"); - sp_repr_css_set_property (css, "stroke", "none"); - sp_repr_css_attr_add_from_string(css, anotation_format.param_getSVGValue()); - Glib::ustring css_str; - sp_repr_css_write_string(css,css_str); + + gchar c[32]; + unsigned const rgb24 = coloropacity.get_value() >> 8; + sprintf(c, "#%06x", rgb24); + sp_repr_css_set_property (css, "fill",c); + Inkscape::SVGOStringStream os; + os << SP_RGBA32_A_F(coloropacity.get_value()); + sp_repr_css_set_property (css, "fill-opacity",os.str().c_str()); if (!rtspan) { rtspan = rtext->firstChild(); } + sp_repr_css_set_property (css, "font-size",font_size.str().c_str()); + Glib::ustring css_str; + sp_repr_css_write_string(css,css_str); rtext->setAttribute("style", css_str.c_str()); rtspan->setAttribute("style", NULL); rtspan->setAttribute("transform", NULL); @@ -427,6 +420,12 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i } line = xml_doc->createElement("svg:path"); line->setAttribute("id", id); + if (main) { + line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-DIM-lines")).c_str()); + } else { + line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-helper-lines")).c_str()); + } + line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-line")).c_str()); gchar * line_str = sp_svg_write_path( line_pathv ); line->setAttribute("d" , line_str); g_free(line_str); @@ -434,7 +433,7 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i line->setAttribute("sodipodi:insensitive", "true"); line_pathv.clear(); - Glib::ustring style = Glib::ustring("stroke:#000000;fill:none;"); + Glib::ustring style; if (overflow && !arrows) { line->setAttribute("inkscape:label", "downline"); } else if (main) { @@ -449,22 +448,18 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i } std::stringstream stroke_w; stroke_w.imbue(std::locale::classic()); - if (line_group_05) { - double stroke_width = Inkscape::Util::Quantity::convert(0.25 / doc_scale, "mm", display_unit.c_str()); - stroke_w << stroke_width; - style = style + Glib::ustring("stroke-width:" + stroke_w.str()); - } else { - double stroke_width = Inkscape::Util::Quantity::convert(0.35 / doc_scale, "mm", display_unit.c_str()); - stroke_w << stroke_width; - style = style + Glib::ustring("stroke-width:" + stroke_w.str()); - } + double stroke_width = Inkscape::Util::Quantity::convert(line_width / doc_scale, "mm", display_unit.c_str()); + stroke_w << stroke_width; + style = style + Glib::ustring("stroke-width:" + stroke_w.str()); + gchar c[32]; + unsigned const rgb24 = coloropacity.get_value() >> 8; + sprintf(c, "#%06x", rgb24); + style = style + Glib::ustring(";stroke:") + Glib::ustring(c); + Inkscape::SVGOStringStream os; + os << SP_RGBA32_A_F(coloropacity.get_value()); + style = style + Glib::ustring(";stroke-opacity:") + Glib::ustring(os.str()); SPCSSAttr *css = sp_repr_css_attr_new(); sp_repr_css_attr_add_from_string(css, style.c_str()); - if (main) { - sp_repr_css_attr_add_from_string(css, dimline_format.param_getSVGValue()); - } else { - sp_repr_css_attr_add_from_string(css, helperlines_format.param_getSVGValue()); - } Glib::ustring css_str; sp_repr_css_write_string(css,css_str); line->setAttribute("style", css_str.c_str()); @@ -490,6 +485,56 @@ LPEMeasureSegments::doOnApply(SPLPEItem const* lpeitem) SPLPEItem * item = const_cast(lpeitem); item->removeCurrentPathEffect(false); } + SPDocument *document = SP_ACTIVE_DOCUMENT; + bool saved = DocumentUndo::getUndoSensitive(document); + DocumentUndo::setUndoSensitive(document, false); + Inkscape::XML::Node *styleNode = NULL; + Inkscape::XML::Node* textNode = NULL; + Inkscape::XML::Node *root = SP_ACTIVE_DOCUMENT->getReprRoot(); + for (unsigned i = 0; i < root->childCount(); ++i) { + if (Glib::ustring(root->nthChild(i)->name()) == "svg:style") { + + styleNode = root->nthChild(i); + + for (unsigned j = 0; j < styleNode->childCount(); ++j) { + if (styleNode->nthChild(j)->type() == Inkscape::XML::TEXT_NODE) { + textNode = styleNode->nthChild(j); + } + } + + if (textNode == NULL) { + // Style element found but does not contain text node! + std::cerr << "StyleDialog::_getStyleTextNode(): No text node!" << std::endl; + textNode = SP_ACTIVE_DOCUMENT->getReprDoc()->createTextNode(""); + styleNode->appendChild(textNode); + Inkscape::GC::release(textNode); + } + } + } + + if (styleNode == NULL) { + // Style element not found, create one + styleNode = SP_ACTIVE_DOCUMENT->getReprDoc()->createElement("svg:style"); + textNode = SP_ACTIVE_DOCUMENT->getReprDoc()->createTextNode(""); + + styleNode->appendChild(textNode); + Inkscape::GC::release(textNode); + + root->addChild(styleNode, NULL); + Inkscape::GC::release(styleNode); + } + Glib::ustring styleContent = Glib::ustring(textNode->content()); + if (styleContent.find(".measure-arrows\n{\n") == -1) { + styleContent = styleContent + Glib::ustring("\n.measure-arrows") + Glib::ustring("\n{\nfill:#ff0000 !important;\nstroke:none;\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-labels") + Glib::ustring("\n{\nline-height:125%;\nletter-spacing:0;\nword-spacing:0;\ntext-align:center;\ntext-anchor:middle;\nfill:#000000;\nfill-opacity:1;\nstroke:none;\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-DIM-lines") + Glib::ustring("\n{\nstroke:#000000;\nfill:none;\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-helper-lines") + Glib::ustring("\n{\nstroke:#000000;\nfill:none;\n}"); + } +// styleContent = styleContent + Glib::ustring("\n.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}"); +// styleContent = styleContent + Glib::ustring("\n.measure-labels.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}\n"); +// styleContent = styleContent + Glib::ustring("\n.measure-arrows.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}\n"); + textNode->setContent(styleContent.c_str()); + DocumentUndo::setUndoSensitive(document, saved); } bool @@ -736,12 +781,9 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) createLine(sstart, prog_end, downline, true, overflow, false, false); } //LINE - arrow_gap = 8 * Inkscape::Util::Quantity::convert(0.35 / doc_scale, "mm", display_unit.c_str()); - if (line_group_05) { - arrow_gap = 8 * Inkscape::Util::Quantity::convert(0.25 / doc_scale, "mm", display_unit.c_str()); - } + arrow_gap = 8 * Inkscape::Util::Quantity::convert(line_width / doc_scale, "mm", display_unit.c_str()); SPCSSAttr *css = sp_repr_css_attr_new(); - sp_repr_css_attr_add_from_string(css, dimline_format.param_getSVGValue()); + char *oldlocale = g_strdup (setlocale(LC_NUMERIC, NULL)); setlocale (LC_NUMERIC, "C"); double width_line = atof(sp_repr_css_property(css,"stroke-width","-1")); @@ -807,65 +849,12 @@ LPEMeasureSegments::doOnRemove (SPLPEItem const* /*lpeitem*/) processObjects(LPE_ERASE); } -Gtk::Widget *LPEMeasureSegments::newWidget() -{ - // use manage here, because after deletion of Effect object, others might - // still be pointing to this widget. - Gtk::VBox *vbox = Gtk::manage(new Gtk::VBox(Effect::newWidget())); - - vbox->set_border_width(5); - vbox->set_homogeneous(false); - vbox->set_spacing(2); - - std::vector::iterator it = param_vector.begin(); - Gtk::VBox * vbox_expander = Gtk::manage( new Gtk::VBox(Effect::newWidget()) ); - vbox_expander->set_border_width(0); - vbox_expander->set_spacing(2); - while (it != param_vector.end()) { - if ((*it)->widget_is_visible) { - Parameter *param = *it; - Gtk::Widget *widg = dynamic_cast(param->param_newWidget()); - Glib::ustring *tip = param->param_getTooltip(); - if (widg) { - if (param->param_key != "dimline_format" && - param->param_key != "helperlines_format" && - param->param_key != "arrows_format" && - param->param_key != "anotation_format") { - vbox->pack_start(*widg, true, true, 2); - } else { - vbox_expander->pack_start(*widg, true, true, 2); - } - if (tip) { - widg->set_tooltip_text(*tip); - } else { - widg->set_tooltip_text(""); - widg->set_has_tooltip(false); - } - } - } - - ++it; - } - expander = Gtk::manage(new Gtk::Expander(Glib::ustring(_("CSS Style Override")))); - expander->add(*vbox_expander); - expander->set_expanded(expanded); - expander->property_expanded().signal_changed().connect(sigc::mem_fun(*this, &LPEMeasureSegments::onExpanderChanged) ); - vbox->pack_start(*expander, true, true, 2); - return dynamic_cast(vbox); -} - void LPEMeasureSegments::transform_multiply(Geom::Affine const& postmul, bool set) { sp_lpe_item_update_patheffect(sp_lpe_item, false, false); } -void -LPEMeasureSegments::onExpanderChanged() -{ - expanded = expander->get_expanded(); -} - Geom::PathVector LPEMeasureSegments::doEffect_path(Geom::PathVector const &path_in) { diff --git a/src/live_effects/lpe-measure-segments.h b/src/live_effects/lpe-measure-segments.h index 7383aeca8..7c4fd4073 100644 --- a/src/live_effects/lpe-measure-segments.h +++ b/src/live_effects/lpe-measure-segments.h @@ -11,15 +11,15 @@ */ #include "live_effects/effect.h" - -#include +#include "ui/dialog/styledialog.h" #include "live_effects/parameter/enum.h" #include "live_effects/parameter/fontbutton.h" #include "live_effects/parameter/text.h" #include "live_effects/parameter/unit.h" #include "live_effects/parameter/bool.h" -#include "live_effects/parameter/originalpath.h" +#include "live_effects/parameter/colorpicker.h" +#include "live_effects/parameter/message.h" #include #include <2geom/angle.h> #include <2geom/ray.h> @@ -48,14 +48,13 @@ public: virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in); void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool overflow, bool remove, bool arrows = false); void createTextLabel(Geom::Point pos, size_t counter, double length, Geom::Coord angle, bool remove, bool valid); - void onExpanderChanged(); void createArrowMarker(const char * mode); bool hasMeassure (size_t i); - virtual Gtk::Widget *newWidget(); private: UnitParam unit; - FontButtonParam fontbutton; EnumParam orientation; + ColorPickerParam coloropacity; + FontButtonParam fontbutton; ScalarParam precision; ScalarParam fix_overlaps; ScalarParam position; @@ -63,6 +62,7 @@ private: ScalarParam text_right_left; ScalarParam helpline_distance; ScalarParam helpline_overlap; + ScalarParam line_width; ScalarParam scale; TextParam format; TextParam blacklist; @@ -71,22 +71,15 @@ private: BoolParam flip_side; BoolParam scale_sensitive; BoolParam local_locale; - BoolParam line_group_05; BoolParam rotate_anotation; BoolParam hide_back; - TextParam dimline_format; - TextParam helperlines_format; - TextParam anotation_format; - TextParam arrows_format; + MessageParam message; Glib::ustring display_unit; - bool expanded; - Gtk::Expander * expander; double doc_scale; double fontsize; double anotation_width; double previous_size; double arrow_gap; - LPEMeasureSegments(const LPEMeasureSegments &); LPEMeasureSegments &operator=(const LPEMeasureSegments &); diff --git a/src/live_effects/parameter/colorpicker.cpp b/src/live_effects/parameter/colorpicker.cpp new file mode 100644 index 000000000..f6521d0c0 --- /dev/null +++ b/src/live_effects/parameter/colorpicker.cpp @@ -0,0 +1,151 @@ +/* + * Authors: + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include +#include "ui/widget/registered-widget.h" +#include "live_effects/parameter/colorpicker.h" +#include "live_effects/effect.h" +#include "ui/widget/color-picker.h" +#include "svg/svg.h" +#include "svg/svg-color.h" +#include "color.h" +#include "inkscape.h" +#include "svg/stringstream.h" +#include "verbs.h" +#include "document.h" +#include "document-undo.h" + +#include + +namespace Inkscape { + +namespace LivePathEffect { + +ColorPickerParam::ColorPickerParam( const Glib::ustring& label, const Glib::ustring& tip, + const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, + Effect* effect, const guint32 default_color ) + : Parameter(label, tip, key, wr, effect), + value(default_color), + defvalue(default_color) +{ + +} + +void +ColorPickerParam::param_set_default() +{ + param_setValue(defvalue); +} + +static guint32 sp_read_color_alpha(gchar const *str, guint32 def) +{ + guint32 val = 0; + if (str == NULL) return def; + while ((*str <= ' ') && *str) str++; + if (!*str) return def; + + if (str[0] == '#') { + gint i; + for (i = 1; str[i]; i++) { + int hexval; + if (str[i] >= '0' && str[i] <= '9') + hexval = str[i] - '0'; + else if (str[i] >= 'A' && str[i] <= 'F') + hexval = str[i] - 'A' + 10; + else if (str[i] >= 'a' && str[i] <= 'f') + hexval = str[i] - 'a' + 10; + else + break; + val = (val << 4) + hexval; + } + if (i != 1 + 8) { + return def; + } + } + return val; +} + +void +ColorPickerParam::param_update_default(const gchar * default_value) +{ + defvalue = sp_read_color_alpha(default_value, 0x000000ff); +} + +bool +ColorPickerParam::param_readSVGValue(const gchar * strvalue) +{ + param_setValue(sp_read_color_alpha(strvalue, 0x000000ff)); + return true; +} + +gchar * +ColorPickerParam::param_getSVGValue() const +{ + gchar c[32]; + sprintf(c, "#%08x", value); + return strdup(c); +} + +gchar * +ColorPickerParam::param_getDefaultSVGValue() const +{ + gchar c[32]; + sprintf(c, "#%08x", defvalue); + return strdup(c); +} + +Gtk::Widget * +ColorPickerParam::param_newWidget() +{ + Gtk::HBox *hbox = Gtk::manage(new Gtk::HBox()); + + hbox->set_border_width(5); + hbox->set_homogeneous(false); + hbox->set_spacing(2); + Inkscape::UI::Widget::RegisteredColorPicker * colorpickerwdg = Gtk::manage( + new Inkscape::UI::Widget::RegisteredColorPicker( param_label, + param_label, + param_tooltip, + param_key, + param_key + "_opacity_LPE", + *param_wr, + param_effect->getRepr(), + param_effect->getSPDoc() ) ); + Gtk::Label * label = new Gtk::Label (param_label, Gtk::ALIGN_END); + label->set_use_underline (true); + label->set_mnemonic_widget (*colorpickerwdg); + SPDocument *document = SP_ACTIVE_DOCUMENT; + bool saved = DocumentUndo::getUndoSensitive(document); + DocumentUndo::setUndoSensitive(document, false); + colorpickerwdg->setRgba32(value); + DocumentUndo::setUndoSensitive(document, saved); + colorpickerwdg->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change color button parameter")); + hbox->pack_start(*dynamic_cast (label), true, true); + hbox->pack_start(*dynamic_cast (colorpickerwdg), true, true); + return dynamic_cast (hbox); +} + +void +ColorPickerParam::param_setValue(const guint32 newvalue) +{ + value = newvalue; +} + + +} /* namespace LivePathEffect */ + +} /* namespace Inkscape */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/colorpicker.h b/src/live_effects/parameter/colorpicker.h new file mode 100644 index 000000000..84ae2f6d5 --- /dev/null +++ b/src/live_effects/parameter/colorpicker.h @@ -0,0 +1,61 @@ +#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_COLOR_BUTTON_H +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_COLOR_BUTTON_H + +/* + * Inkscape::LivePathEffectParameters + * + * Authors: + * Released under GNU GPL, read the file 'COPYING' for more information + */ +#include +#include "live_effects/parameter/parameter.h" + +namespace Inkscape { + +namespace LivePathEffect { + +class ColorPickerParam : public Parameter { +public: + ColorPickerParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect, + const guint32 default_color = 0x000000ff); + virtual ~ColorPickerParam() {} + + virtual Gtk::Widget * param_newWidget(); + virtual bool param_readSVGValue(const gchar * strvalue); + void param_update_default(const gchar * default_value); + virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; + + void param_setValue(guint32 newvalue); + + virtual void param_set_default(); + + const guint32 get_value() const { return value; }; + +private: + ColorPickerParam(const ColorPickerParam&); + ColorPickerParam& operator=(const ColorPickerParam&); + guint32 value; + guint32 defvalue; +}; + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/message.cpp b/src/live_effects/parameter/message.cpp new file mode 100644 index 000000000..39d8f12c7 --- /dev/null +++ b/src/live_effects/parameter/message.cpp @@ -0,0 +1,101 @@ +/* + * Authors: + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include +#include "live_effects/parameter/message.h" +#include "live_effects/effect.h" +#include + +namespace Inkscape { + +namespace LivePathEffect { + +MessageParam::MessageParam( const Glib::ustring& label, const Glib::ustring& tip, + const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, + Effect* effect, const gchar * default_message ) + : Parameter(label, tip, key, wr, effect), + message(g_strdup(default_message)), + defmessage(g_strdup(default_message)) +{ + +} + +void +MessageParam::param_set_default() +{ + param_setValue(defmessage); +} + +void +MessageParam::param_update_default(const gchar * default_message) +{ + defmessage = g_strdup(default_message); +} + +bool +MessageParam::param_readSVGValue(const gchar * strvalue) +{ + param_setValue(strvalue); + return true; +} + +gchar * +MessageParam::param_getSVGValue() const +{ + return message; +} + +gchar * +MessageParam::param_getDefaultSVGValue() const +{ + return defmessage; +} + +Gtk::Widget * +MessageParam::param_newWidget() +{ + Gtk::Frame * frame = new Gtk::Frame (param_label); + Gtk::Widget * widg_frame = frame->get_label_widget(); + widg_frame->set_margin_right(5); + widg_frame->set_margin_left(5); + Gtk::Label * label = new Gtk::Label (message, Gtk::ALIGN_END); + label->set_use_underline (true); + label->set_use_markup(); + label->set_line_wrap(true); + Gtk::Widget * widg_label = dynamic_cast (label); + widg_label->set_margin_top(8); + widg_label->set_margin_bottom(10); + widg_label->set_margin_right(6); + widg_label->set_margin_left(6); + + frame->add(*widg_label); + return dynamic_cast (frame); +} + +void +MessageParam::param_setValue(const gchar * strvalue) +{ + if (strcmp(strvalue, message) != 0) { + param_effect->upd_params = true; + } + message = g_strdup(strvalue); +} + + +} /* namespace LivePathEffect */ + +} /* namespace Inkscape */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/live_effects/parameter/message.h b/src/live_effects/parameter/message.h new file mode 100644 index 000000000..63075cf96 --- /dev/null +++ b/src/live_effects/parameter/message.h @@ -0,0 +1,61 @@ +#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_MESSAGE_H +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_MESSAGE_H + +/* + * Inkscape::LivePathEffectParameters + * + * Authors: + * Released under GNU GPL, read the file 'COPYING' for more information + */ +#include +#include "live_effects/parameter/parameter.h" + +namespace Inkscape { + +namespace LivePathEffect { + +class MessageParam : public Parameter { +public: + MessageParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect, + const gchar * default_message = "Default message"); + virtual ~MessageParam() {} + + virtual Gtk::Widget * param_newWidget(); + virtual bool param_readSVGValue(const gchar * strvalue); + void param_update_default(const gchar * default_value); + virtual gchar * param_getSVGValue() const; + virtual gchar * param_getDefaultSVGValue() const; + + void param_setValue(const gchar * message); + + virtual void param_set_default(); + + const gchar * get_value() const { return message; }; + +private: + MessageParam(const MessageParam&); + MessageParam& operator=(const MessageParam&); + gchar * message; + gchar * defmessage; +}; + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp index 639bd4161..a88413347 100644 --- a/src/ui/widget/registered-widget.cpp +++ b/src/ui/widget/registered-widget.cpp @@ -412,9 +412,12 @@ RegisteredColorPicker::on_changed (guint32 rgba) local_repr = dt->getNamedView()->getRepr(); local_doc = dt->getDocument(); } - gchar c[32]; - sp_svg_write_color(c, sizeof(c), rgba); + if (_akey == _ckey + "_opacity_LPE") { //For LPE parameter we want stored with alpha + sprintf(c, "#%08x", rgba); + } else { + sp_svg_write_color(c, sizeof(c), rgba); + } bool saved = DocumentUndo::getUndoSensitive(local_doc); DocumentUndo::setUndoSensitive(local_doc, false); local_repr->setAttribute(_ckey.c_str(), c); -- cgit v1.2.3 From db78328c47443816f23f32f59acd8f7df0ef4fee Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Tue, 26 Sep 2017 01:35:27 +0200 Subject: CSS fixes to measure line LPE --- src/live_effects/lpe-measure-segments.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index a3d4627ef..26e6cbe03 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -421,11 +421,10 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i line = xml_doc->createElement("svg:path"); line->setAttribute("id", id); if (main) { - line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-DIM-lines")).c_str()); + line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-DIM-lines measure-lines")).c_str()); } else { - line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-helper-lines")).c_str()); + line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-helper-lines measure-lines")).c_str()); } - line->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-line")).c_str()); gchar * line_str = sp_svg_write_path( line_pathv ); line->setAttribute("d" , line_str); g_free(line_str); @@ -525,10 +524,9 @@ LPEMeasureSegments::doOnApply(SPLPEItem const* lpeitem) } Glib::ustring styleContent = Glib::ustring(textNode->content()); if (styleContent.find(".measure-arrows\n{\n") == -1) { - styleContent = styleContent + Glib::ustring("\n.measure-arrows") + Glib::ustring("\n{\nfill:#ff0000 !important;\nstroke:none;\n}"); - styleContent = styleContent + Glib::ustring("\n.measure-labels") + Glib::ustring("\n{\nline-height:125%;\nletter-spacing:0;\nword-spacing:0;\ntext-align:center;\ntext-anchor:middle;\nfill:#000000;\nfill-opacity:1;\nstroke:none;\n}"); - styleContent = styleContent + Glib::ustring("\n.measure-DIM-lines") + Glib::ustring("\n{\nstroke:#000000;\nfill:none;\n}"); - styleContent = styleContent + Glib::ustring("\n.measure-helper-lines") + Glib::ustring("\n{\nstroke:#000000;\nfill:none;\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-arrows") + Glib::ustring("\n{\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-labels") + Glib::ustring("\n{\nline-height:125%;\nletter-spacing:0;\nword-spacing:0;\ntext-align:center;\ntext-anchor:middle;\nstroke:none;\n}"); + styleContent = styleContent + Glib::ustring("\n.measure-lines") + Glib::ustring("\n{\n}"); } // styleContent = styleContent + Glib::ustring("\n.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}"); // styleContent = styleContent + Glib::ustring("\n.measure-labels.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}\n"); -- cgit v1.2.3 From 342812bdbc6b67ab096c6e9c55bf5370163a2863 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Tue, 26 Sep 2017 13:22:42 +0200 Subject: Fix error when vertical text has 'text-orientation' value 'sideways'. --- src/libnrtype/Layout-TNG-Compute.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp index 7826faf0d..eca795994 100644 --- a/src/libnrtype/Layout-TNG-Compute.cpp +++ b/src/libnrtype/Layout-TNG-Compute.cpp @@ -1787,7 +1787,7 @@ bool Layout::Calculator::calculate() // Vertical text, CJK pango_context_set_base_gravity(_pango_context, PANGO_GRAVITY_EAST); - if( _flow._blockTextOrientation() != SP_CSS_TEXT_ORIENTATION_MIXED ) { + if( _flow._blockTextOrientation() == SP_CSS_TEXT_ORIENTATION_UPRIGHT ) { pango_context_set_gravity_hint(_pango_context, PANGO_GRAVITY_HINT_STRONG); } } else { -- cgit v1.2.3 From df07409a17c7d78163991e5958ed15b1454aeacb Mon Sep 17 00:00:00 2001 From: Fabio Massaioli Date: Tue, 26 Sep 2017 19:16:42 +0200 Subject: Add colord ICC store dirs to CMS search paths For reference, see https://github.com/hughsie/colord/blob/fe10f76536bb27614ced04e0ff944dc6fb4625c0/lib/colord/cd-icc-store.c#L590 --- src/color-profile.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/color-profile.cpp b/src/color-profile.cpp index 1552c38e7..7bdde9b6d 100644 --- a/src/color-profile.cpp +++ b/src/color-profile.cpp @@ -755,6 +755,22 @@ std::set ColorProfile::getBaseProfileDirs() { sources.insert(FilePlusHome(path, true)); g_free(path); + // search colord ICC store paths + // (see https://github.com/hughsie/colord/blob/fe10f76536bb27614ced04e0ff944dc6fb4625c0/lib/colord/cd-icc-store.c#L590) + + // user store + path = g_build_filename(g_get_user_data_dir(), "icc", NULL); + sources.insert(FilePlusHome(path, true)); + g_free(path); + + path = g_build_filename(g_get_home_dir(), ".color", "icc", NULL); + sources.insert(FilePlusHome(path, true)); + g_free(path); + + // machine store + sources.insert(FilePlusHome("/var/lib/color/icc", false)); + sources.insert(FilePlusHome("/var/lib/colord/icc", false)); + const gchar* const * dataDirs = g_get_system_data_dirs(); for ( int i = 0; dataDirs[i]; i++ ) { gchar* path = g_build_filename(dataDirs[i], "color", "icc", NULL); -- cgit v1.2.3 From fde4b17b3614d7b51e220e02053b97f66ddd0652 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Tue, 26 Sep 2017 20:55:36 +0200 Subject: Create parent directories when opening a file for writing - this affects callers of Inkscape::IO::fopen_utf8name - fixes at least two issues: - creating custom shortcuts failed when "/inkscape/keys" was missing in the configuration directory, see https://bugs.launchpad.net/inkscape/+bug/1719629 - autosaving probably failed if a non-existent directory was specified --- src/io/sys.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/io/sys.cpp b/src/io/sys.cpp index b06b550dd..833dee437 100644 --- a/src/io/sys.cpp +++ b/src/io/sys.cpp @@ -71,10 +71,20 @@ FILE *Inkscape::IO::fopen_utf8name( char const *utf8name, char const *mode ) gchar *filename = g_filename_from_utf8( utf8name, -1, NULL, NULL, NULL ); if ( filename ) { + // ensure we open the file in binary mode (not needed in POSIX but doesn't hurt either) Glib::ustring how( mode ); if ( how.find("b") == Glib::ustring::npos ) { - how.append("b"); // not needed in POSIX but doesn't hurt either + how.append("b"); + } + // when opening a file for writing: create parent directories if they don't exist already + if ( how.find("w") != Glib::ustring::npos ) + { + gchar *dirname = g_path_get_dirname(utf8name); + if (g_mkdir_with_parents(dirname, 0777)) { + g_warning("Could not create directory '%s'", dirname); + } + g_free(dirname); } fp = g_fopen(filename, how.c_str()); g_free(filename); -- cgit v1.2.3 From 1e0dba0eec6cdfd089f0ead30e12ea7a87a2b1cc Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 28 Sep 2017 19:44:28 +0200 Subject: MSYS2: Switch to repo.msys2.org URL for imagemagick (https://twitter.com/sfnet_ops/status/913044025791467520 among other reasons) --- buildtools/msys2installdeps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildtools/msys2installdeps.sh b/buildtools/msys2installdeps.sh index 4bcda71fd..384597c09 100644 --- a/buildtools/msys2installdeps.sh +++ b/buildtools/msys2installdeps.sh @@ -70,10 +70,10 @@ $ARCH-libyaml for arch in $(eval echo $ARCH); do case ${arch} in mingw-w64-i686) - pacman -U --needed --noconfirm https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686/mingw-w64-i686-imagemagick-6.9.3.7-1-any.pkg.tar.xz + pacman -U --needed --noconfirm http://repo.msys2.org/mingw/i686/mingw-w64-i686-imagemagick-6.9.3.7-1-any.pkg.tar.xz ;; mingw-w64-x86_64) - pacman -U --needed --noconfirm https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64/mingw-w64-x86_64-imagemagick-6.9.3.7-1-any.pkg.tar.xz + pacman -U --needed --noconfirm http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-imagemagick-6.9.3.7-1-any.pkg.tar.xz ;; esac done -- cgit v1.2.3 From 0c4a9a00c975fb4043cb923324baf5d84fd1edca Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 28 Sep 2017 19:47:03 +0200 Subject: MSYS2: Upgrade python packages when re-running the script (pip) --- buildtools/msys2installdeps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildtools/msys2installdeps.sh b/buildtools/msys2installdeps.sh index 384597c09..38c713342 100644 --- a/buildtools/msys2installdeps.sh +++ b/buildtools/msys2installdeps.sh @@ -89,10 +89,10 @@ $ARCH-python2-pillow for arch in $(eval echo $ARCH); do case ${arch} in mingw-w64-i686) - /mingw32/bin/pip install coverage pyserial scour + /mingw32/bin/pip install --upgrade coverage pyserial scour ;; mingw-w64-x86_64) - /mingw64/bin/pip install coverage pyserial scour + /mingw64/bin/pip install --upgrade coverage pyserial scour ;; esac done -- cgit v1.2.3 From f3b7c2a55feb6f11fb724e682185dfe27e2ae6d6 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 28 Sep 2017 21:05:47 +0200 Subject: Tests: Fix problematic rendering test Renderin was different between 32-bit and 64-bit builds of Inkscape, likely due to rounding issues, see https://gitlab.com/inkscape/inkscape/merge_requests/71#note_40940240) --- .../expected_rendering/test-rtl-vertical-large.png | Bin 55017 -> 54382 bytes .../expected_rendering/test-rtl-vertical.png | Bin 9995 -> 9856 bytes testfiles/rendering_tests/test-rtl-vertical.svg | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png index 3d8eba4ea..84abe78ff 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png index 44676e4d9..ea8836f51 100644 Binary files a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png and b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png differ diff --git a/testfiles/rendering_tests/test-rtl-vertical.svg b/testfiles/rendering_tests/test-rtl-vertical.svg index e17b94d39..a959c1880 100644 --- a/testfiles/rendering_tests/test-rtl-vertical.svg +++ b/testfiles/rendering_tests/test-rtl-vertical.svg @@ -17,7 +17,7 @@ أبجد - أبجد + بجد أبجد -- cgit v1.2.3 From 9cbd9e966164609309cc1d0a7edb174ed058f3ca Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 21 Sep 2017 00:53:05 +0200 Subject: CI/AppVeyor: Fix tests involving font rendering - use a custom fonts.conf to load fonts from ./build/fonts folder - manually download fonts required by tests and extract into said folder (subfolders are scanned, too, so that's fine) Now that finally all tests pass: Fail the build if a test fails! --- buildtools/appveyor.sh | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh index c9d2d1c74..5dac1227f 100644 --- a/buildtools/appveyor.sh +++ b/buildtools/appveyor.sh @@ -14,14 +14,18 @@ cd "$(cygpath ${APPVEYOR_BUILD_FOLDER})" mkdir build cd build -# write an empty fonts.conf to speed up fc-cache -export FONTCONFIG_FILE=/dummy-fonts.conf -cat >"$FONTCONFIG_FILE" < "$FONTCONFIG_FILE" < - +$(cygpath -aw fonts) EOF +mkdir fonts +wget -nv https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2 \ + && tar -xf dejavu-fonts-ttf-2.37.tar.bz2 --directory=fonts + # install dependencies message "--- Installing dependencies" source ../buildtools/msys2installdeps.sh @@ -67,8 +71,8 @@ if [ -n "$err" ]; then warning "installed executable produces output on stderr:" INKSCAPE_DATADIR=../share bin/inkscape.exe -V >/dev/null || error "uninstalled executable won't run" err=$(INKSCAPE_DATADIR=../share bin/inkscape.exe -V 2>&1 >/dev/null) if [ -n "$err" ]; then warning "uninstalled executable produces output on stderr:"; echo "$err"; fi -# run tests (don't fail yet as some need to be fixed first) -ninja check || warning "tests failed" +# run tests +ninja check || error "tests failed" message "##### BUILD SUCCESSFULL #####\n\n" -- cgit v1.2.3 From e79dffd40b61de158876961997df5c3cb3f34414 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Fri, 29 Sep 2017 18:31:55 +0200 Subject: remove helper/gnome-utils.* --- src/helper/CMakeLists.txt | 2 - src/helper/gnome-utils.cpp | 116 --------------------------------------------- src/helper/gnome-utils.h | 33 ------------- src/ui/interface.cpp | 14 +++--- 4 files changed, 7 insertions(+), 158 deletions(-) delete mode 100644 src/helper/gnome-utils.cpp delete mode 100644 src/helper/gnome-utils.h diff --git a/src/helper/CMakeLists.txt b/src/helper/CMakeLists.txt index 443648c5c..bcd9f7c58 100644 --- a/src/helper/CMakeLists.txt +++ b/src/helper/CMakeLists.txt @@ -17,7 +17,6 @@ set(helper_SRC geom-pathvectorsatellites.cpp geom-satellite.cpp gettext.cpp - gnome-utils.cpp pixbuf-ops.cpp png-write.cpp stock-items.cpp @@ -39,7 +38,6 @@ set(helper_SRC geom-satellite.h geom.h gettext.h - gnome-utils.h mathfns.h pixbuf-ops.h png-write.h diff --git a/src/helper/gnome-utils.cpp b/src/helper/gnome-utils.cpp deleted file mode 100644 index 3d2b333a2..000000000 --- a/src/helper/gnome-utils.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/** - * Helpers - * - * Authors: - * Mitsuru Oka - * Lauris Kaplinski - * - * Copyright (C) 2002 authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include -#include -#include - -#include "gnome-utils.h" - -/** - * gnome_uri_list_extract_uris: - * @uri_list: an uri-list in the standard format. - * - * Returns a GList containing strings allocated with g_malloc - * that have been splitted from @uri-list. - */ -GList *gnome_uri_list_extract_uris(const gchar *uri_list) -{ - const gchar *p, *q; - gchar *retval; - GList *result = NULL; - - g_return_val_if_fail(uri_list != NULL, NULL); - - p = uri_list; - - /* We don't actually try to validate the URI according to RFC - * 2396, or even check for allowed characters - we just ignore - * comments and trim whitespace off the ends. We also - * allow LF delimination as well as the specified CRLF. - */ - while (p) { - if (*p != '#') { - while (isspace(*p)) - p++; - - q = p; - while (*q && (*q != '\n') && (*q != '\r')) - q++; - - if (q > p) { - q--; - while (q > p && isspace(*q)) - q--; - - retval = (gchar *)g_malloc(q - p + 2); - strncpy(retval, p, q - p + 1); - retval[q - p + 1] = '\0'; - - result = g_list_prepend(result, retval); - } - } - p = strchr(p, '\n'); - if (p) - p++; - } - - return g_list_reverse(result); -} - -/** - * gnome_uri_list_extract_filenames: - * @uri_list: an uri-list in the standard format - * - * Returns a GList containing strings allocated with g_malloc - * that contain the filenames in the uri-list. - * - * Note that unlike gnome_uri_list_extract_uris() function, this - * will discard any non-file uri from the result value. - */ -GList *gnome_uri_list_extract_filenames(const gchar *uri_list) -{ - g_return_val_if_fail(uri_list != NULL, NULL); - - GList *result = gnome_uri_list_extract_uris(uri_list); - - GList *tmp_list = result; - while (tmp_list) { - gchar *s = (gchar *)tmp_list->data; - - GList *node = tmp_list; - tmp_list = tmp_list->next; - - if (!strncmp(s, "file:", 5)) { - node->data = g_filename_from_uri(s, NULL, NULL); - /* not sure if this fallback is useful at all */ - if (!node->data) - node->data = g_strdup(s + 5); - } else { - result = g_list_remove_link(result, node); - g_list_free_1(node); - } - g_free(s); - } - return result; -} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 : diff --git a/src/helper/gnome-utils.h b/src/helper/gnome-utils.h deleted file mode 100644 index 6f2f28223..000000000 --- a/src/helper/gnome-utils.h +++ /dev/null @@ -1,33 +0,0 @@ -/** - * GNOME Utils - Migration helper - * - * Authors: - * GNOME Developer - * Mitsuru Oka - * Lauris Kaplinski - * - * Copyright (C) 2001 Lauris Kaplinski and Ximian, Inc. - * - * Released under GNU GPL - */ - -#ifndef SEEN_GNOME_UTILS_H -#define SEEN_GNOME_UTILS_H - -#include - -GList *gnome_uri_list_extract_uris(gchar const *uri_list); -GList *gnome_uri_list_extract_filenames(gchar const *uri_list); - -#endif // !SEEN_GNOME_UTILS_H - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 : diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 0223b2b3b..93e91b8f8 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -51,7 +51,6 @@ #include "sp-namedview.h" #include "sp-root.h" #include "helper/action.h" -#include "helper/gnome-utils.h" #include "helper/window.h" #include "io/sys.h" #include "ui/dialog-events.h" @@ -1339,12 +1338,13 @@ static void sp_ui_drag_leave( GtkWidget */*widget*/, static void sp_ui_import_files(gchar *buffer) { - GList *list = gnome_uri_list_extract_filenames(buffer); - if (!list) - return; - g_list_foreach(list, sp_ui_import_one_file_with_check, NULL); - g_list_foreach(list, (GFunc) g_free, NULL); - g_list_free(list); + gchar** l = g_uri_list_extract_uris(buffer); + for (int i = 0; i< g_strv_length (l); i++) { + gchar *f = g_filename_from_uri (l[i], NULL, NULL); + sp_ui_import_one_file_with_check(f, NULL); + g_free(f); + } + g_strfreev(l); } static void -- cgit v1.2.3 From 227e6ff97bae25e129d353ac65b9dd91fdac5e85 Mon Sep 17 00:00:00 2001 From: Lucas Vieites Date: Fri, 29 Sep 2017 20:57:55 +0200 Subject: Translations: Update Spanish (es) translation --- po/es.po | 14245 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 7174 insertions(+), 7071 deletions(-) diff --git a/po/es.po b/po/es.po index 1cee5c551..c6e0e1c70 100644 --- a/po/es.po +++ b/po/es.po @@ -5,14 +5,14 @@ # Agradecimientos: zert, softcatala, 2002-2003. # Jose Antonio Salgueiro Aquino , 2003. # Francisco Javier F. Serrador , 2003. -# Lucas Vieites , 2003-2014, 2015. +# Lucas Vieites , 2003-2017. # msgid "" msgstr "" -"Project-Id-Version: Inkscape 0.49\n" +"Project-Id-Version: Inkscape 0.92.1\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2016-12-21 01:07+0100\n" -"PO-Revision-Date: 2017-01-02 11:59+0100\n" +"POT-Creation-Date: 2017-07-24 23:11+0200\n" +"PO-Revision-Date: 2017-09-17 12:51+0200\n" "Last-Translator: Lucas Vieites \n" "Language-Team: Español; Castellano \n" @@ -21,7 +21,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.11\n" +"X-Generator: Poedit 1.8.12\n" "X-Poedit-SourceCharset: UTF-8\n" #: ../inkscape.appdata.xml.in.h:1 ../inkscape.desktop.in.h:1 @@ -304,7 +304,7 @@ msgid "Sharpen edges and boundaries within the object, force=0.3" msgstr "Agudizar los bordes y límites dentro del objeto, fuerza=0.3" #: ../share/filters/filters.svg.h:74 -msgid "Oil painting" +msgid "Oil Painting" msgstr "Pintura al óleo" #: ../share/filters/filters.svg.h:75 ../share/filters/filters.svg.h:79 @@ -333,7 +333,7 @@ msgstr "Simular el estilo de la pintura al óleo" #. Pencil #: ../share/filters/filters.svg.h:78 -#: ../src/ui/dialog/inkscape-preferences.cpp:421 +#: ../src/ui/dialog/inkscape-preferences.cpp:433 msgid "Pencil" msgstr "Lápiz" @@ -1118,9 +1118,9 @@ msgstr "Luz negra" #: ../src/extension/internal/filter/paint.h:717 #: ../src/extension/internal/filter/shadows.h:73 #: ../src/extension/internal/filter/transparency.h:345 -#: ../src/filter-enums.cpp:67 ../src/ui/dialog/clonetiler.cpp:785 -#: ../src/ui/dialog/clonetiler.cpp:914 -#: ../src/ui/dialog/document-properties.cpp:153 +#: ../src/filter-enums.cpp:67 ../src/ui/dialog/clonetiler.cpp:828 +#: ../src/ui/dialog/clonetiler.cpp:979 +#: ../src/ui/dialog/document-properties.cpp:165 #: ../share/extensions/color_HSL_adjust.inx.h:20 #: ../share/extensions/color_blackandwhite.inx.h:3 #: ../share/extensions/color_brighter.inx.h:2 @@ -1187,7 +1187,7 @@ msgstr "Crema de cómic" #: ../share/filters/filters.svg.h:779 ../share/filters/filters.svg.h:783 #: ../share/filters/filters.svg.h:787 ../share/filters/filters.svg.h:791 #: ../share/filters/filters.svg.h:795 -msgid "Non realistic 3D shaders" +msgid "Non-realistic 3D Shaders" msgstr "Sombreadores 3D no realistas" #: ../share/filters/filters.svg.h:428 @@ -1207,7 +1207,7 @@ msgstr "" "líneas en sus cruces" #: ../share/filters/filters.svg.h:434 -msgid "Dark And Glow" +msgid "Dark and Glow" msgstr "Oscuro y brillo" #: ../share/filters/filters.svg.h:436 @@ -1565,7 +1565,7 @@ msgid "Pixellize" msgstr "Pixelizar" #: ../share/filters/filters.svg.h:591 -msgid "Pixel tools" +msgid "Pixel Tools" msgstr "Herramientas de píxeles" #: ../share/filters/filters.svg.h:592 @@ -2030,7 +2030,7 @@ msgid "Render Cyan, Magenta and Yellow channels with a colorizable background" msgstr "Generar canales Cián, Magenta y Amarillo con un fondo colorizado" #: ../share/filters/filters.svg.h:834 -msgid "Contouring table" +msgid "Contouring Table" msgstr "Tabla de contorneado" #: ../share/filters/filters.svg.h:836 @@ -2046,7 +2046,7 @@ msgid "Converts blurred contour to posterized steps" msgstr "Convierte el contorno difuminado en pasos posterizados" #: ../share/filters/filters.svg.h:842 -msgid "Contouring discrete" +msgid "Contouring Discrete" msgstr "Contorneado discreto" #: ../share/filters/filters.svg.h:844 @@ -4474,170 +4474,170 @@ msgid "no layers empty" msgstr "sin capas vacía" #. 3D box -#: ../src/box3d.cpp:249 ../src/box3d.cpp:1303 -#: ../src/ui/dialog/inkscape-preferences.cpp:404 +#: ../src/box3d.cpp:255 ../src/box3d.cpp:1309 +#: ../src/ui/dialog/inkscape-preferences.cpp:416 msgid "3D Box" msgstr "Caja 3D" -#: ../src/color-profile.cpp:851 +#: ../src/color-profile.cpp:860 #, c-format msgid "Color profiles directory (%s) is unavailable." msgstr "No está disponible el directorio de perfiles de color (%s)." -#: ../src/color-profile.cpp:923 ../src/color-profile.cpp:940 +#: ../src/color-profile.cpp:932 ../src/color-profile.cpp:949 msgid "(invalid UTF-8 string)" msgstr "(cadena UTF-8 inválida)" -#: ../src/color-profile.cpp:925 +#: ../src/color-profile.cpp:934 msgctxt "Profile name" msgid "None" msgstr "Ninguno" -#: ../src/context-fns.cpp:32 ../src/context-fns.cpp:61 +#: ../src/context-fns.cpp:33 ../src/context-fns.cpp:62 msgid "Current layer is hidden. Unhide it to be able to draw on it." msgstr "" "La capa actual está oculta, debe estar visible para poder dibujar en " "ella." -#: ../src/context-fns.cpp:38 ../src/context-fns.cpp:67 +#: ../src/context-fns.cpp:39 ../src/context-fns.cpp:68 msgid "Current layer is locked. Unlock it to be able to draw on it." msgstr "" "La capa actual está bloqueada, debe desbloquearla para poder dibujar " "en ella." -#: ../src/desktop-events.cpp:231 +#: ../src/desktop-events.cpp:244 msgid "Create guide" msgstr "Crear guía" -#: ../src/desktop-events.cpp:487 +#: ../src/desktop-events.cpp:500 msgid "Move guide" msgstr "Mover guía" -#: ../src/desktop-events.cpp:494 ../src/desktop-events.cpp:550 -#: ../src/ui/dialog/guides.cpp:138 +#: ../src/desktop-events.cpp:507 ../src/desktop-events.cpp:567 +#: ../src/ui/dialog/guides.cpp:147 msgid "Delete guide" msgstr "Borrar guía" # create dialog -#: ../src/desktop-events.cpp:530 +#: ../src/desktop-events.cpp:547 #, c-format msgid "Guideline: %s" msgstr "Línea guía: %s" -#: ../src/desktop.cpp:858 +#: ../src/desktop.cpp:875 msgid "No previous zoom." msgstr "No hay menos zoom." -#: ../src/desktop.cpp:879 +#: ../src/desktop.cpp:896 msgid "No next zoom." msgstr "No hay más zoom." -#: ../src/display/canvas-axonomgrid.cpp:321 ../src/display/canvas-grid.cpp:677 +#: ../src/display/canvas-axonomgrid.cpp:357 ../src/display/canvas-grid.cpp:713 msgid "Grid _units:" msgstr "_Unidades de la rejilla:" -#: ../src/display/canvas-axonomgrid.cpp:323 ../src/display/canvas-grid.cpp:679 +#: ../src/display/canvas-axonomgrid.cpp:359 ../src/display/canvas-grid.cpp:715 msgid "_Origin X:" msgstr "_Origen X:" -#: ../src/display/canvas-axonomgrid.cpp:323 ../src/display/canvas-grid.cpp:679 -#: ../src/ui/dialog/inkscape-preferences.cpp:779 -#: ../src/ui/dialog/inkscape-preferences.cpp:804 +#: ../src/display/canvas-axonomgrid.cpp:359 ../src/display/canvas-grid.cpp:715 +#: ../src/ui/dialog/inkscape-preferences.cpp:786 +#: ../src/ui/dialog/inkscape-preferences.cpp:811 msgid "X coordinate of grid origin" msgstr "Coordenada x del origen de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:326 ../src/display/canvas-grid.cpp:682 +#: ../src/display/canvas-axonomgrid.cpp:362 ../src/display/canvas-grid.cpp:718 msgid "O_rigin Y:" msgstr "_Origen Y:" -#: ../src/display/canvas-axonomgrid.cpp:326 ../src/display/canvas-grid.cpp:682 -#: ../src/ui/dialog/inkscape-preferences.cpp:780 -#: ../src/ui/dialog/inkscape-preferences.cpp:805 +#: ../src/display/canvas-axonomgrid.cpp:362 ../src/display/canvas-grid.cpp:718 +#: ../src/ui/dialog/inkscape-preferences.cpp:787 +#: ../src/ui/dialog/inkscape-preferences.cpp:812 msgid "Y coordinate of grid origin" msgstr "Coordenada y del origen de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:329 ../src/display/canvas-grid.cpp:688 +#: ../src/display/canvas-axonomgrid.cpp:365 ../src/display/canvas-grid.cpp:724 msgid "Spacing _Y:" msgstr "Espaciado _Y:" -#: ../src/display/canvas-axonomgrid.cpp:329 -#: ../src/ui/dialog/inkscape-preferences.cpp:808 +#: ../src/display/canvas-axonomgrid.cpp:365 +#: ../src/ui/dialog/inkscape-preferences.cpp:815 msgid "Base length of z-axis" msgstr "Longitud base del eje z" -#: ../src/display/canvas-axonomgrid.cpp:332 -#: ../src/ui/dialog/inkscape-preferences.cpp:811 -#: ../src/widgets/box3d-toolbar.cpp:301 +#: ../src/display/canvas-axonomgrid.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:818 +#: ../src/widgets/box3d-toolbar.cpp:302 msgid "Angle X:" msgstr "Ángulo X:" -#: ../src/display/canvas-axonomgrid.cpp:332 -#: ../src/ui/dialog/inkscape-preferences.cpp:811 +#: ../src/display/canvas-axonomgrid.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:818 msgid "Angle of x-axis" msgstr "Ángulo del eje x" -#: ../src/display/canvas-axonomgrid.cpp:334 -#: ../src/ui/dialog/inkscape-preferences.cpp:812 -#: ../src/widgets/box3d-toolbar.cpp:380 +#: ../src/display/canvas-axonomgrid.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:819 +#: ../src/widgets/box3d-toolbar.cpp:381 msgid "Angle Z:" msgstr "Ángulo Z:" -#: ../src/display/canvas-axonomgrid.cpp:334 -#: ../src/ui/dialog/inkscape-preferences.cpp:812 +#: ../src/display/canvas-axonomgrid.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:819 msgid "Angle of z-axis" msgstr "Ángulo del eje z" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 +#: ../src/display/canvas-axonomgrid.cpp:374 ../src/display/canvas-grid.cpp:729 msgid "Minor grid line _color:" msgstr "_Color de las líneas secundarias:" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 -#: ../src/ui/dialog/inkscape-preferences.cpp:763 +#: ../src/display/canvas-axonomgrid.cpp:374 ../src/display/canvas-grid.cpp:729 +#: ../src/ui/dialog/inkscape-preferences.cpp:770 msgid "Minor grid line color" msgstr "Color de las líneas secundarias de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 +#: ../src/display/canvas-axonomgrid.cpp:374 ../src/display/canvas-grid.cpp:729 msgid "Color of the minor grid lines" msgstr "Color de las líneas secundarias de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:343 ../src/display/canvas-grid.cpp:698 +#: ../src/display/canvas-axonomgrid.cpp:379 ../src/display/canvas-grid.cpp:734 msgid "Ma_jor grid line color:" msgstr "Color de las líneas pr_imarias:" -#: ../src/display/canvas-axonomgrid.cpp:343 ../src/display/canvas-grid.cpp:698 -#: ../src/ui/dialog/inkscape-preferences.cpp:765 +#: ../src/display/canvas-axonomgrid.cpp:379 ../src/display/canvas-grid.cpp:734 +#: ../src/ui/dialog/inkscape-preferences.cpp:772 msgid "Major grid line color" msgstr "Color de las líneas primarias de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:344 ../src/display/canvas-grid.cpp:699 +#: ../src/display/canvas-axonomgrid.cpp:380 ../src/display/canvas-grid.cpp:735 msgid "Color of the major (highlighted) grid lines" msgstr "Color de las líneas primarias (resaltadas) de la rejilla" -#: ../src/display/canvas-axonomgrid.cpp:348 ../src/display/canvas-grid.cpp:703 +#: ../src/display/canvas-axonomgrid.cpp:384 ../src/display/canvas-grid.cpp:739 msgid "_Major grid line every:" msgstr "Línea pri_maria cada:" -#: ../src/display/canvas-axonomgrid.cpp:348 ../src/display/canvas-grid.cpp:703 +#: ../src/display/canvas-axonomgrid.cpp:384 ../src/display/canvas-grid.cpp:739 msgid "lines" msgstr "líneas" -#: ../src/display/canvas-grid.cpp:55 +#: ../src/display/canvas-grid.cpp:60 msgid "Rectangular grid" msgstr "Rejilla rectangular" -#: ../src/display/canvas-grid.cpp:56 +#: ../src/display/canvas-grid.cpp:61 msgid "Axonometric grid" msgstr "Rejilla axonométrica" -#: ../src/display/canvas-grid.cpp:241 +#: ../src/display/canvas-grid.cpp:246 msgid "Create new grid" msgstr "Crear rejilla nueva" -#: ../src/display/canvas-grid.cpp:307 +#: ../src/display/canvas-grid.cpp:312 msgid "_Enabled" msgstr "_Activado" -#: ../src/display/canvas-grid.cpp:308 +#: ../src/display/canvas-grid.cpp:313 msgid "" "Determines whether to snap to this grid or not. Can be 'on' for invisible " "grids." @@ -4645,11 +4645,11 @@ msgstr "" "Determina si se ajusta a esta rejilla o no. Puede estar ativado para " "rejillas invisibles." -#: ../src/display/canvas-grid.cpp:312 +#: ../src/display/canvas-grid.cpp:317 msgid "Snap to visible _grid lines only" msgstr "Ajustar solamente a líneas de re_jlla visibles" -#: ../src/display/canvas-grid.cpp:313 +#: ../src/display/canvas-grid.cpp:318 msgid "" "When zoomed out, not all grid lines will be displayed. Only the visible ones " "will be snapped to" @@ -4657,11 +4657,11 @@ msgstr "" "Al alejarse no se muestran todas las líneas de rejilla. Solamente se " "ajustará a las visibles." -#: ../src/display/canvas-grid.cpp:317 +#: ../src/display/canvas-grid.cpp:322 msgid "_Visible" msgstr "_Visible" -#: ../src/display/canvas-grid.cpp:318 +#: ../src/display/canvas-grid.cpp:323 msgid "" "Determines whether the grid is displayed or not. Objects are still snapped " "to invisible grids." @@ -4669,25 +4669,25 @@ msgstr "" "Determina si se muestra o no la rejilla. Los objetos se siguen ajustando a " "las rejillas invisibles." -#: ../src/display/canvas-grid.cpp:685 +#: ../src/display/canvas-grid.cpp:721 msgid "Spacing _X:" msgstr "Espaciado _X:" -#: ../src/display/canvas-grid.cpp:685 -#: ../src/ui/dialog/inkscape-preferences.cpp:785 +#: ../src/display/canvas-grid.cpp:721 +#: ../src/ui/dialog/inkscape-preferences.cpp:792 msgid "Distance between vertical grid lines" msgstr "Distancia entre líneas de rejilla verticales" -#: ../src/display/canvas-grid.cpp:688 -#: ../src/ui/dialog/inkscape-preferences.cpp:786 +#: ../src/display/canvas-grid.cpp:724 +#: ../src/ui/dialog/inkscape-preferences.cpp:793 msgid "Distance between horizontal grid lines" msgstr "Distancia entre líneas de rejilla horizontales" -#: ../src/display/canvas-grid.cpp:720 +#: ../src/display/canvas-grid.cpp:756 msgid "_Show dots instead of lines" msgstr "Mo_strar puntos en vez de líneas" -#: ../src/display/canvas-grid.cpp:721 +#: ../src/display/canvas-grid.cpp:757 msgid "If set, displays dots at gridpoints instead of gridlines" msgstr "Muestra puntos en lugar de líneas en el diseño de la rejilla" @@ -4838,11 +4838,11 @@ msgstr "Centro de caja de contorno" msgid "Bounding box side midpoint" msgstr "Centro del lado de caja de contorno" -#: ../src/display/snap-indicator.cpp:196 ../src/ui/tool/node.cpp:1473 +#: ../src/display/snap-indicator.cpp:196 ../src/ui/tool/node.cpp:1484 msgid "Smooth node" msgstr "Nodo suave" -#: ../src/display/snap-indicator.cpp:199 ../src/ui/tool/node.cpp:1472 +#: ../src/display/snap-indicator.cpp:199 ../src/ui/tool/node.cpp:1483 msgid "Cusp node" msgstr "Nodo vértice" @@ -4898,63 +4898,63 @@ msgstr "Múltiplo de espaciado de rejilla" msgid " to " msgstr " a " -#: ../src/document.cpp:519 +#: ../src/document.cpp:543 #, c-format msgid "New document %d" msgstr "Documento nuevo %d" -#: ../src/document.cpp:524 +#: ../src/document.cpp:548 #, c-format msgid "Memory document %d" msgstr "Documento de memoria %d" -#: ../src/document.cpp:553 +#: ../src/document.cpp:577 msgid "Memory document %1" msgstr "Documento de memoria %1" -#: ../src/document.cpp:852 +#: ../src/document.cpp:876 #, c-format msgid "Unnamed document %d" msgstr "Documento sin nombre %d" -#: ../src/event-log.cpp:181 +#: ../src/event-log.cpp:185 msgid "[Unchanged]" msgstr "[Sin cambios]" #. Edit -#: ../src/event-log.cpp:367 ../src/event-log.cpp:370 ../src/verbs.cpp:2496 +#: ../src/event-log.cpp:371 ../src/event-log.cpp:374 ../src/verbs.cpp:2466 msgid "_Undo" msgstr "_Deshacer" -#: ../src/event-log.cpp:377 ../src/event-log.cpp:381 ../src/verbs.cpp:2498 +#: ../src/event-log.cpp:381 ../src/event-log.cpp:385 ../src/verbs.cpp:2468 msgid "_Redo" msgstr "_Rehacer" -#: ../src/extension/dependency.cpp:253 +#: ../src/extension/dependency.cpp:255 msgid "Dependency:" msgstr "Dependencia:" -#: ../src/extension/dependency.cpp:254 +#: ../src/extension/dependency.cpp:256 msgid " type: " msgstr " tipo: " -#: ../src/extension/dependency.cpp:255 +#: ../src/extension/dependency.cpp:257 msgid " location: " msgstr " localización: " -#: ../src/extension/dependency.cpp:256 +#: ../src/extension/dependency.cpp:258 msgid " string: " msgstr " cadena: " -#: ../src/extension/dependency.cpp:259 +#: ../src/extension/dependency.cpp:261 msgid " description: " msgstr " descripción: " -#: ../src/extension/effect.cpp:40 +#: ../src/extension/effect.cpp:41 msgid " (No preferences)" msgstr " (Sin preferencias)" -#: ../src/extension/effect.h:70 ../src/verbs.cpp:2270 +#: ../src/extension/effect.h:70 ../src/verbs.cpp:2240 msgid "Extensions" msgstr "Extensiones" @@ -4976,18 +4976,18 @@ msgstr "" "normalidad, pero esas extensiones no estarán disponibles. Para obtener más " "detalles para solucionar este problema, acuda al archivo de registro en: " -#: ../src/extension/error-file.cpp:63 +#: ../src/extension/error-file.cpp:67 msgid "Show dialog on startup" msgstr "Mostrar diálogo al inicio" -#: ../src/extension/execution-env.cpp:133 +#: ../src/extension/execution-env.cpp:136 #, c-format msgid "'%s' working, please wait..." msgstr "'%s' en proceso, espere, por favor..." #. static int i = 0; #. std::cout << "Checking module[" << i++ << "]: " << name << std::endl; -#: ../src/extension/extension.cpp:262 +#: ../src/extension/extension.cpp:267 msgid "" " This is caused by an improper .inx file for this extension. An improper ." "inx file could have been caused by a faulty installation of Inkscape." @@ -4996,72 +4996,72 @@ msgstr "" "archivo inx incorrecto puede ser el resultado de una instalación defectuosa " "de Inkscape." -#: ../src/extension/extension.cpp:272 +#: ../src/extension/extension.cpp:277 msgid "the extension is designed for Windows only." msgstr "la extensión está diseñada solo para Windows." -#: ../src/extension/extension.cpp:277 +#: ../src/extension/extension.cpp:282 msgid "an ID was not defined for it." msgstr "no se le definió un ID." -#: ../src/extension/extension.cpp:281 +#: ../src/extension/extension.cpp:286 msgid "there was no name defined for it." msgstr "no se le definió un nombre." -#: ../src/extension/extension.cpp:285 +#: ../src/extension/extension.cpp:290 msgid "the XML description of it got lost." msgstr "se perdió su descripción XML." -#: ../src/extension/extension.cpp:289 +#: ../src/extension/extension.cpp:294 msgid "no implementation was defined for the extension." msgstr "no se definió una implementación correcta para la extensión." #. std::cout << "Failed: " << *(_deps[i]) << std::endl; -#: ../src/extension/extension.cpp:296 +#: ../src/extension/extension.cpp:301 msgid "a dependency was not met." msgstr "no se cumplió una dependencia." -#: ../src/extension/extension.cpp:316 +#: ../src/extension/extension.cpp:321 msgid "Extension \"" msgstr "La extensión «" -#: ../src/extension/extension.cpp:316 +#: ../src/extension/extension.cpp:321 msgid "\" failed to load because " msgstr "» no se ha cargado porque " -#: ../src/extension/extension.cpp:665 +#: ../src/extension/extension.cpp:670 #, c-format msgid "Could not create extension error log file '%s'" msgstr "" "No se ha podido crear el archivo de registro de errores de las extensiones " "«%s»" -#: ../src/extension/extension.cpp:769 +#: ../src/extension/extension.cpp:778 #: ../share/extensions/webslicer_create_rect.inx.h:2 msgid "Name:" msgstr "Nombre:" -#: ../src/extension/extension.cpp:770 +#: ../src/extension/extension.cpp:779 msgid "ID:" msgstr "ID:" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:780 msgid "State:" msgstr "Estado:" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:780 msgid "Loaded" msgstr "Cargado" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:780 msgid "Unloaded" msgstr "Descargado" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:780 msgid "Deactivated" msgstr "Desactivado" -#: ../src/extension/extension.cpp:802 +#: ../src/extension/extension.cpp:820 msgid "" "Currently there is no help available for this Extension. Please look on the " "Inkscape website or ask on the mailing lists if you have questions regarding " @@ -5071,7 +5071,7 @@ msgstr "" "tiene alguna pregunta acerca de ella, consulte la página web de Inkscape o " "pregunte en las listas de correo." -#: ../src/extension/implementation/script.cpp:1107 +#: ../src/extension/implementation/script.cpp:1111 msgid "" "Inkscape has received additional data from the script executed. The script " "did not return an error, but this may indicate the results will not be as " @@ -5104,12 +5104,12 @@ msgstr "Umbral adaptativo" #: ../src/extension/internal/bitmap/raise.cpp:42 #: ../src/extension/internal/bitmap/sample.cpp:41 #: ../src/extension/internal/bluredge.cpp:134 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:55 -#: ../src/ui/dialog/object-attributes.cpp:65 -#: ../src/ui/dialog/object-attributes.cpp:74 -#: ../src/ui/widget/page-sizer.cpp:232 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:66 +#: ../src/ui/dialog/object-attributes.cpp:68 +#: ../src/ui/dialog/object-attributes.cpp:77 +#: ../src/ui/widget/page-sizer.cpp:249 #: ../src/widgets/calligraphy-toolbar.cpp:430 -#: ../src/widgets/eraser-toolbar.cpp:185 ../src/widgets/spray-toolbar.cpp:297 +#: ../src/widgets/eraser-toolbar.cpp:154 ../src/widgets/spray-toolbar.cpp:297 #: ../src/widgets/tweak-toolbar.cpp:128 ../share/extensions/foldablebox.inx.h:2 msgid "Width:" msgstr "Ancho:" @@ -5117,9 +5117,9 @@ msgstr "Ancho:" #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:42 #: ../src/extension/internal/bitmap/raise.cpp:43 #: ../src/extension/internal/bitmap/sample.cpp:42 -#: ../src/ui/dialog/object-attributes.cpp:66 -#: ../src/ui/dialog/object-attributes.cpp:75 -#: ../src/ui/widget/page-sizer.cpp:233 ../share/extensions/foldablebox.inx.h:3 +#: ../src/ui/dialog/object-attributes.cpp:69 +#: ../src/ui/dialog/object-attributes.cpp:78 +#: ../src/ui/widget/page-sizer.cpp:250 ../share/extensions/foldablebox.inx.h:3 msgid "Height:" msgstr "Alto:" @@ -5182,9 +5182,9 @@ msgstr "Añadir ruido" #: ../src/extension/internal/filter/color.h:1660 #: ../src/extension/internal/filter/distort.h:69 #: ../src/extension/internal/filter/morphology.h:60 ../src/rdf.cpp:244 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2743 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2823 -#: ../src/ui/dialog/object-attributes.cpp:46 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2882 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2956 +#: ../src/ui/dialog/object-attributes.cpp:49 #: ../share/extensions/jessyInk_effects.inx.h:5 #: ../share/extensions/jessyInk_export.inx.h:3 #: ../share/extensions/jessyInk_transitions.inx.h:5 @@ -5235,7 +5235,7 @@ msgstr "Desenfoque" #: ../src/extension/internal/bitmap/oilPaint.cpp:39 #: ../src/extension/internal/bitmap/sharpen.cpp:40 #: ../src/extension/internal/bitmap/unsharpmask.cpp:43 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2795 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2934 msgid "Radius:" msgstr "Radio:" @@ -5561,15 +5561,15 @@ msgstr "" #: ../src/extension/internal/bitmap/opacity.cpp:38 #: ../src/extension/internal/filter/blurs.h:333 #: ../src/extension/internal/filter/transparency.h:279 -#: ../src/ui/dialog/clonetiler.cpp:792 ../src/ui/dialog/clonetiler.cpp:923 +#: ../src/ui/dialog/clonetiler.cpp:836 ../src/ui/dialog/clonetiler.cpp:989 #: ../src/widgets/tweak-toolbar.cpp:334 #: ../share/extensions/interp_att_g.inx.h:18 msgid "Opacity" msgstr "Opacidad" #: ../src/extension/internal/bitmap/opacity.cpp:40 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2785 -#: ../src/ui/dialog/objects.cpp:1629 ../src/widgets/dropper-toolbar.cpp:83 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2924 +#: ../src/ui/dialog/objects.cpp:1661 ../src/widgets/dropper-toolbar.cpp:83 msgid "Opacity:" msgstr "Opacidad:" @@ -5599,7 +5599,7 @@ msgstr "Reducir ruido" #. Paint order #. TRANSLATORS: Paint order determines the order the 'fill', 'stroke', and 'markers are painted. #: ../src/extension/internal/bitmap/reduceNoise.cpp:42 -#: ../src/widgets/stroke-style.cpp:343 +#: ../src/widgets/stroke-style.cpp:384 #: ../share/extensions/jessyInk_effects.inx.h:3 #: ../share/extensions/jessyInk_view.inx.h:3 #: ../share/extensions/lindenmayer.inx.h:5 @@ -5690,7 +5690,7 @@ msgstr "Umbral" #: ../src/extension/internal/bitmap/threshold.cpp:40 #: ../src/extension/internal/bitmap/unsharpmask.cpp:46 -#: ../src/widgets/paintbucket-toolbar.cpp:146 +#: ../src/widgets/paintbucket-toolbar.cpp:148 msgid "Threshold:" msgstr "Umbral:" @@ -5885,141 +5885,148 @@ msgid "Page Selector" msgstr "Selector de página" #. Labels -#: ../src/extension/internal/cdr-input.cpp:123 -#: ../src/extension/internal/pdfinput/pdf-input.cpp:90 -#: ../src/extension/internal/vsd-input.cpp:125 +#: ../src/extension/internal/cdr-input.cpp:127 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:92 +#: ../src/extension/internal/vsd-input.cpp:130 msgid "Select page:" msgstr "Seleccionar página" #. Display total number of pages -#: ../src/extension/internal/cdr-input.cpp:131 -#: ../src/extension/internal/pdfinput/pdf-input.cpp:103 -#: ../src/extension/internal/vsd-input.cpp:133 +#: ../src/extension/internal/cdr-input.cpp:135 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:111 +#: ../src/extension/internal/vsd-input.cpp:138 #, c-format msgid "out of %i" msgstr "fuera de %i" -#: ../src/extension/internal/cdr-input.cpp:284 +#. Fill in the template +#: ../src/extension/internal/cdr-input.cpp:225 +#: ../src/extension/internal/vsd-input.cpp:228 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:427 +msgid "No preview" +msgstr "Sin vista preliminar" + +#: ../src/extension/internal/cdr-input.cpp:315 msgid "Corel DRAW Input" msgstr "Entrada Corel DRAW" -#: ../src/extension/internal/cdr-input.cpp:289 +#: ../src/extension/internal/cdr-input.cpp:320 msgid "Corel DRAW 7-X4 files (*.cdr)" msgstr "Archivos Corel DRAW 7-X4 (*.cdr)" -#: ../src/extension/internal/cdr-input.cpp:290 +#: ../src/extension/internal/cdr-input.cpp:321 msgid "Open files saved in Corel DRAW 7-X4" msgstr "Abrir archivos guardados con Corel DRAW 7-X4" -#: ../src/extension/internal/cdr-input.cpp:297 +#: ../src/extension/internal/cdr-input.cpp:328 msgid "Corel DRAW templates input" msgstr "Entrada de plantillas Corel DRAW" -#: ../src/extension/internal/cdr-input.cpp:302 +#: ../src/extension/internal/cdr-input.cpp:333 msgid "Corel DRAW 7-13 template files (*.cdt)" msgstr "Archivos de plantillas Corel DRAW 7-13 (.cdt)" -#: ../src/extension/internal/cdr-input.cpp:303 +#: ../src/extension/internal/cdr-input.cpp:334 msgid "Open files saved in Corel DRAW 7-13" msgstr "Abrir archivos guardados con Corel DRAW 7-13" -#: ../src/extension/internal/cdr-input.cpp:310 +#: ../src/extension/internal/cdr-input.cpp:341 msgid "Corel DRAW Compressed Exchange files input" msgstr "Entrada de archivos de intercambio comprimidos de Corel DRAW" -#: ../src/extension/internal/cdr-input.cpp:315 +#: ../src/extension/internal/cdr-input.cpp:346 msgid "Corel DRAW Compressed Exchange files (*.ccx)" msgstr "Archivos de intercambio comprimidos de Corel DRAW (.ccx)" -#: ../src/extension/internal/cdr-input.cpp:316 +#: ../src/extension/internal/cdr-input.cpp:347 msgid "Open compressed exchange files saved in Corel DRAW" msgstr "Abrir archivos de intercambio comprimidos de Corel DRAW" -#: ../src/extension/internal/cdr-input.cpp:323 +#: ../src/extension/internal/cdr-input.cpp:354 msgid "Corel DRAW Presentation Exchange files input" msgstr "Entrada de archivos Corel DRAW Presentation Exchange" -#: ../src/extension/internal/cdr-input.cpp:328 +#: ../src/extension/internal/cdr-input.cpp:359 msgid "Corel DRAW Presentation Exchange files (*.cmx)" msgstr "Archivos Corel DRAW Presentation Exchange (.cmx)" -#: ../src/extension/internal/cdr-input.cpp:329 +#: ../src/extension/internal/cdr-input.cpp:360 msgid "Open presentation exchange files saved in Corel DRAW" msgstr "Abrir archivos de presentation exchange guardados en Corel DRAW" -#: ../src/extension/internal/emf-inout.cpp:3601 +#: ../src/extension/internal/emf-inout.cpp:3617 msgid "EMF Input" msgstr "Entrada EMF" -#: ../src/extension/internal/emf-inout.cpp:3606 +#: ../src/extension/internal/emf-inout.cpp:3622 msgid "Enhanced Metafiles (*.emf)" msgstr "Metaarchivos realzados (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3607 +#: ../src/extension/internal/emf-inout.cpp:3623 msgid "Enhanced Metafiles" msgstr "Metaarchivos realzados" -#: ../src/extension/internal/emf-inout.cpp:3615 +#: ../src/extension/internal/emf-inout.cpp:3631 msgid "EMF Output" msgstr "Salida EMF" -#: ../src/extension/internal/emf-inout.cpp:3617 -#: ../src/extension/internal/wmf-inout.cpp:3196 +#: ../src/extension/internal/emf-inout.cpp:3633 +#: ../src/extension/internal/wmf-inout.cpp:3212 msgid "Convert texts to paths" msgstr "Convertir textos en trayectos" -#: ../src/extension/internal/emf-inout.cpp:3618 -#: ../src/extension/internal/wmf-inout.cpp:3197 +#: ../src/extension/internal/emf-inout.cpp:3634 +#: ../src/extension/internal/wmf-inout.cpp:3213 msgid "Map Unicode to Symbol font" msgstr "Mapear fuente Unicode a Symbol" -#: ../src/extension/internal/emf-inout.cpp:3619 -#: ../src/extension/internal/wmf-inout.cpp:3198 +#: ../src/extension/internal/emf-inout.cpp:3635 +#: ../src/extension/internal/wmf-inout.cpp:3214 msgid "Map Unicode to Wingdings" msgstr "Mapear Unicode a Wingdings" -#: ../src/extension/internal/emf-inout.cpp:3620 -#: ../src/extension/internal/wmf-inout.cpp:3199 +#: ../src/extension/internal/emf-inout.cpp:3636 +#: ../src/extension/internal/wmf-inout.cpp:3215 msgid "Map Unicode to Zapf Dingbats" msgstr "Mapear Unicode a Zapf Dingbats" -#: ../src/extension/internal/emf-inout.cpp:3621 -#: ../src/extension/internal/wmf-inout.cpp:3200 +#: ../src/extension/internal/emf-inout.cpp:3637 +#: ../src/extension/internal/wmf-inout.cpp:3216 msgid "Use MS Unicode PUA (0xF020-0xF0FF) for converted characters" msgstr "Usar MS Unicode PUA (0xF020-0xF0FF) para caracteres convertidos" -#: ../src/extension/internal/emf-inout.cpp:3622 -#: ../src/extension/internal/wmf-inout.cpp:3201 +#: ../src/extension/internal/emf-inout.cpp:3638 +#: ../src/extension/internal/wmf-inout.cpp:3217 msgid "Compensate for PPT font bug" msgstr "Compensar errata de tipografías PPT" -#: ../src/extension/internal/emf-inout.cpp:3623 -#: ../src/extension/internal/wmf-inout.cpp:3202 +#: ../src/extension/internal/emf-inout.cpp:3639 +#: ../src/extension/internal/wmf-inout.cpp:3218 msgid "Convert dashed/dotted lines to single lines" msgstr "Convertir líneas de rayas/punto a líneas simples" -#: ../src/extension/internal/emf-inout.cpp:3624 -#: ../src/extension/internal/wmf-inout.cpp:3203 +#: ../src/extension/internal/emf-inout.cpp:3640 +#: ../src/extension/internal/wmf-inout.cpp:3219 msgid "Convert gradients to colored polygon series" msgstr "Convertir degradados a series de polígonos coloreados" -#: ../src/extension/internal/emf-inout.cpp:3625 +#: ../src/extension/internal/emf-inout.cpp:3641 msgid "Use native rectangular linear gradients" msgstr "Usar degradados lineares rectangulares nativos" -#: ../src/extension/internal/emf-inout.cpp:3626 +#: ../src/extension/internal/emf-inout.cpp:3642 msgid "Map all fill patterns to standard EMF hatches" msgstr "Mapear todos los patrones de relleno a trazados EMF estándar" -#: ../src/extension/internal/emf-inout.cpp:3627 +#: ../src/extension/internal/emf-inout.cpp:3643 msgid "Ignore image rotations" msgstr "Ignorar rotaciones de imágenes" -#: ../src/extension/internal/emf-inout.cpp:3631 +#: ../src/extension/internal/emf-inout.cpp:3647 msgid "Enhanced Metafile (*.emf)" msgstr "Metaarchivo realzado (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3632 +#: ../src/extension/internal/emf-inout.cpp:3648 msgid "Enhanced Metafile" msgstr "Metaarchivo realzado" @@ -6105,7 +6112,7 @@ msgstr "Color de iluminación" #: ../src/extension/internal/filter/transparency.h:214 #: ../src/extension/internal/filter/transparency.h:287 #: ../src/extension/internal/filter/transparency.h:349 -#: ../src/ui/dialog/inkscape-preferences.cpp:1770 +#: ../src/ui/dialog/inkscape-preferences.cpp:1801 #, c-format msgid "Filters" msgstr "Filtros" @@ -6217,7 +6224,7 @@ msgstr "Oscurecer" #: ../src/extension/internal/filter/color.h:1669 #: ../src/extension/internal/filter/paint.h:703 #: ../src/extension/internal/filter/transparency.h:62 -#: ../src/filter-enums.cpp:54 ../src/ui/dialog/input.cpp:367 +#: ../src/filter-enums.cpp:54 ../src/ui/dialog/input.cpp:382 msgid "Screen" msgstr "Pantalla" @@ -6294,7 +6301,7 @@ msgstr "Erosión" #: ../src/extension/internal/filter/blurs.h:336 #: ../src/extension/internal/filter/color.h:1280 #: ../src/extension/internal/filter/color.h:1392 -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Background color" msgstr "Color de fondo" @@ -6318,7 +6325,7 @@ msgstr "Tipo de mezcla:" #: ../src/extension/internal/filter/paint.h:702 #: ../src/extension/internal/filter/textures.h:77 #: ../src/extension/internal/filter/transparency.h:61 -#: ../src/filter-enums.cpp:52 ../src/ui/dialog/inkscape-preferences.cpp:686 +#: ../src/filter-enums.cpp:52 ../src/ui/dialog/inkscape-preferences.cpp:693 msgid "Normal" msgstr "Normal" @@ -6355,9 +6362,9 @@ msgstr "Origen de bultos" #: ../src/extension/internal/filter/color.h:712 #: ../src/extension/internal/filter/color.h:896 #: ../src/extension/internal/filter/transparency.h:132 -#: ../src/filter-enums.cpp:128 ../src/ui/tools/flood-tool.cpp:81 -#: ../src/ui/widget/color-icc-selector.cpp:163 -#: ../src/ui/widget/color-scales.cpp:355 ../src/ui/widget/color-scales.cpp:356 +#: ../src/filter-enums.cpp:128 ../src/ui/tools/flood-tool.cpp:92 +#: ../src/ui/widget/color-icc-selector.cpp:176 +#: ../src/ui/widget/color-scales.cpp:385 ../src/ui/widget/color-scales.cpp:386 msgid "Red" msgstr "Rojo" @@ -6367,9 +6374,9 @@ msgstr "Rojo" #: ../src/extension/internal/filter/color.h:713 #: ../src/extension/internal/filter/color.h:897 #: ../src/extension/internal/filter/transparency.h:133 -#: ../src/filter-enums.cpp:129 ../src/ui/tools/flood-tool.cpp:82 -#: ../src/ui/widget/color-icc-selector.cpp:164 -#: ../src/ui/widget/color-scales.cpp:358 ../src/ui/widget/color-scales.cpp:359 +#: ../src/filter-enums.cpp:129 ../src/ui/tools/flood-tool.cpp:93 +#: ../src/ui/widget/color-icc-selector.cpp:177 +#: ../src/ui/widget/color-scales.cpp:388 ../src/ui/widget/color-scales.cpp:389 msgid "Green" msgstr "Verde" @@ -6379,9 +6386,9 @@ msgstr "Verde" #: ../src/extension/internal/filter/color.h:714 #: ../src/extension/internal/filter/color.h:898 #: ../src/extension/internal/filter/transparency.h:134 -#: ../src/filter-enums.cpp:130 ../src/ui/tools/flood-tool.cpp:83 -#: ../src/ui/widget/color-icc-selector.cpp:165 -#: ../src/ui/widget/color-scales.cpp:361 ../src/ui/widget/color-scales.cpp:362 +#: ../src/filter-enums.cpp:130 ../src/ui/tools/flood-tool.cpp:94 +#: ../src/ui/widget/color-icc-selector.cpp:178 +#: ../src/ui/widget/color-scales.cpp:391 ../src/ui/widget/color-scales.cpp:392 #: ../share/extensions/nicechart.inx.h:34 msgid "Blue" msgstr "Azul" @@ -6404,8 +6411,8 @@ msgstr "Difusa" #: ../src/extension/internal/filter/bumps.h:98 #: ../src/extension/internal/filter/bumps.h:329 -#: ../src/ui/tools/measure-tool.cpp:1212 ../src/ui/widget/page-sizer.cpp:233 -#: ../src/widgets/rect-toolbar.cpp:330 +#: ../src/libgdl/gdl-dock-placeholder.c:175 ../src/libgdl/gdl-dock.c:199 +#: ../src/ui/widget/page-sizer.cpp:250 ../src/widgets/rect-toolbar.cpp:334 #: ../share/extensions/interp_att_g.inx.h:13 msgid "Height" msgstr "Altura" @@ -6418,16 +6425,15 @@ msgstr "Altura" #: ../src/extension/internal/filter/paint.h:86 #: ../src/extension/internal/filter/paint.h:592 #: ../src/extension/internal/filter/paint.h:707 -#: ../src/ui/tools/flood-tool.cpp:86 -#: ../src/ui/widget/color-icc-selector.cpp:174 -#: ../src/ui/widget/color-scales.cpp:387 ../src/ui/widget/color-scales.cpp:388 +#: ../src/ui/tools/flood-tool.cpp:97 +#: ../src/ui/widget/color-icc-selector.cpp:187 +#: ../src/ui/widget/color-scales.cpp:417 ../src/ui/widget/color-scales.cpp:418 #: ../src/widgets/tweak-toolbar.cpp:318 msgid "Lightness" msgstr "Luminancia" #: ../src/extension/internal/filter/bumps.h:100 #: ../src/extension/internal/filter/bumps.h:331 -#: ../src/live_effects/lpe-measure-line.cpp:54 #: ../src/widgets/measure-toolbar.cpp:302 msgid "Precision" msgstr "Precisión" @@ -6445,7 +6451,7 @@ msgid "Distant" msgstr "Distante" #: ../src/extension/internal/filter/bumps.h:106 -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Point" msgstr "Punto" @@ -6459,13 +6465,13 @@ msgstr "Opciones de luz distante" #: ../src/extension/internal/filter/bumps.h:110 #: ../src/extension/internal/filter/bumps.h:332 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1196 msgid "Azimuth" msgstr "Acimut" #: ../src/extension/internal/filter/bumps.h:111 #: ../src/extension/internal/filter/bumps.h:333 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1174 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1197 msgid "Elevation" msgstr "Elevación" @@ -6534,7 +6540,7 @@ msgstr "Fondo:" #: ../src/extension/internal/filter/bumps.h:322 #: ../src/extension/internal/filter/transparency.h:57 -#: ../src/filter-enums.cpp:30 ../src/sp-image.cpp:506 +#: ../src/filter-enums.cpp:30 ../src/sp-image.cpp:509 msgid "Image" msgstr "Imagen" @@ -6616,18 +6622,18 @@ msgstr "Coloreado de canal" #: ../src/extension/internal/filter/color.h:157 #: ../src/extension/internal/filter/color.h:332 #: ../src/extension/internal/filter/paint.h:87 ../src/filter-enums.cpp:66 -#: ../src/ui/dialog/inkscape-preferences.cpp:978 -#: ../src/ui/tools/flood-tool.cpp:85 -#: ../src/ui/widget/color-icc-selector.cpp:170 -#: ../src/ui/widget/color-icc-selector.cpp:175 -#: ../src/ui/widget/color-scales.cpp:384 ../src/ui/widget/color-scales.cpp:385 +#: ../src/ui/dialog/inkscape-preferences.cpp:992 +#: ../src/ui/tools/flood-tool.cpp:96 +#: ../src/ui/widget/color-icc-selector.cpp:183 +#: ../src/ui/widget/color-icc-selector.cpp:188 +#: ../src/ui/widget/color-scales.cpp:414 ../src/ui/widget/color-scales.cpp:415 #: ../src/widgets/tweak-toolbar.cpp:302 msgid "Saturation" msgstr "Saturación" #: ../src/extension/internal/filter/color.h:161 #: ../src/extension/internal/filter/transparency.h:135 -#: ../src/filter-enums.cpp:131 ../src/ui/tools/flood-tool.cpp:87 +#: ../src/filter-enums.cpp:131 ../src/ui/tools/flood-tool.cpp:98 msgid "Alpha" msgstr "Alfa" @@ -6727,19 +6733,19 @@ msgstr "Identidad" #: ../src/extension/internal/filter/color.h:503 #: ../src/extension/internal/filter/paint.h:498 ../src/filter-enums.cpp:111 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1029 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1051 msgid "Table" msgstr "Tabla" #: ../src/extension/internal/filter/color.h:504 #: ../src/extension/internal/filter/paint.h:499 ../src/filter-enums.cpp:112 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1032 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1054 msgid "Discrete" msgstr "Discreto" #: ../src/extension/internal/filter/color.h:505 ../src/filter-enums.cpp:113 -#: ../src/live_effects/lpe-interpolate_points.cpp:24 -#: ../src/live_effects/lpe-powerstroke.cpp:122 +#: ../src/live_effects/lpe-interpolate_points.cpp:25 +#: ../src/live_effects/lpe-powerstroke.cpp:134 msgid "Linear" msgstr "Lineal" @@ -6796,23 +6802,23 @@ msgid "Extract Channel" msgstr "Extraer canal" #: ../src/extension/internal/filter/color.h:715 -#: ../src/ui/widget/color-icc-selector.cpp:177 -#: ../src/ui/widget/color-icc-selector.cpp:182 -#: ../src/ui/widget/color-scales.cpp:409 ../src/ui/widget/color-scales.cpp:410 +#: ../src/ui/widget/color-icc-selector.cpp:190 +#: ../src/ui/widget/color-icc-selector.cpp:195 +#: ../src/ui/widget/color-scales.cpp:439 ../src/ui/widget/color-scales.cpp:440 msgid "Cyan" msgstr "Cian" #: ../src/extension/internal/filter/color.h:716 -#: ../src/ui/widget/color-icc-selector.cpp:178 -#: ../src/ui/widget/color-icc-selector.cpp:183 -#: ../src/ui/widget/color-scales.cpp:412 ../src/ui/widget/color-scales.cpp:413 +#: ../src/ui/widget/color-icc-selector.cpp:191 +#: ../src/ui/widget/color-icc-selector.cpp:196 +#: ../src/ui/widget/color-scales.cpp:442 ../src/ui/widget/color-scales.cpp:443 msgid "Magenta" msgstr "Magenta" #: ../src/extension/internal/filter/color.h:717 -#: ../src/ui/widget/color-icc-selector.cpp:179 -#: ../src/ui/widget/color-icc-selector.cpp:184 -#: ../src/ui/widget/color-scales.cpp:415 ../src/ui/widget/color-scales.cpp:416 +#: ../src/ui/widget/color-icc-selector.cpp:192 +#: ../src/ui/widget/color-icc-selector.cpp:197 +#: ../src/ui/widget/color-scales.cpp:445 ../src/ui/widget/color-scales.cpp:446 msgid "Yellow" msgstr "Amarillo" @@ -6841,14 +6847,14 @@ msgid "Fade to:" msgstr "Fundir a:" #: ../src/extension/internal/filter/color.h:819 -#: ../src/ui/widget/color-icc-selector.cpp:180 -#: ../src/ui/widget/color-scales.cpp:418 ../src/ui/widget/color-scales.cpp:419 -#: ../src/ui/widget/selected-style.cpp:257 +#: ../src/ui/widget/color-icc-selector.cpp:193 +#: ../src/ui/widget/color-scales.cpp:448 ../src/ui/widget/color-scales.cpp:449 +#: ../src/ui/widget/selected-style.cpp:275 msgid "Black" msgstr "Negro" #: ../src/extension/internal/filter/color.h:820 -#: ../src/ui/widget/selected-style.cpp:253 +#: ../src/ui/widget/selected-style.cpp:271 msgid "White" msgstr "Blanco" @@ -6871,7 +6877,7 @@ msgid "Customize greyscale components" msgstr "Personalizar componentes de la escala de grises" #: ../src/extension/internal/filter/color.h:980 -#: ../src/ui/widget/selected-style.cpp:249 +#: ../src/ui/widget/selected-style.cpp:267 msgid "Invert" msgstr "Invertir" @@ -6925,10 +6931,10 @@ msgstr "Sombras" #: ../src/extension/internal/filter/color.h:1119 #: ../src/extension/internal/filter/paint.h:356 ../src/filter-enums.cpp:33 -#: ../src/live_effects/effect.cpp:92 -#: ../src/live_effects/lpe-transform_2pts.cpp:38 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1026 -#: ../src/widgets/gradient-toolbar.cpp:1160 +#: ../src/live_effects/effect.cpp:108 +#: ../src/live_effects/lpe-transform_2pts.cpp:40 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1048 +#: ../src/widgets/gradient-toolbar.cpp:1159 #: ../src/widgets/measure-toolbar.cpp:328 msgid "Offset" msgstr "Desvío" @@ -6959,22 +6965,18 @@ msgstr "Desvío rojo" #: ../src/extension/internal/filter/color.h:1382 #: ../src/extension/internal/filter/color.h:1385 #: ../src/extension/internal/filter/color.h:1388 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2799 -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/dialog/layers.cpp:913 -#: ../src/ui/widget/page-sizer.cpp:230 +#: ../src/ui/dialog/input.cpp:1616 ../src/ui/dialog/layers.cpp:925 +#: ../src/ui/widget/page-sizer.cpp:247 msgid "X" msgstr "X" -#. This commented because we want the default empty value of X or Y and couldent get it from SpinButton -#. _image_y = _settings->add_spinbutton(0, SP_ATTR_Y, _("Y:"), -DBL_MAX, DBL_MAX, 1, 1, 5, _("Y")); #: ../src/extension/internal/filter/color.h:1271 #: ../src/extension/internal/filter/color.h:1274 #: ../src/extension/internal/filter/color.h:1277 #: ../src/extension/internal/filter/color.h:1383 #: ../src/extension/internal/filter/color.h:1386 #: ../src/extension/internal/filter/color.h:1389 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2803 -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/widget/page-sizer.cpp:231 +#: ../src/ui/dialog/input.cpp:1616 ../src/ui/widget/page-sizer.cpp:248 msgid "Y" msgstr "Y" @@ -7019,7 +7021,7 @@ msgstr "" "fondo" #: ../src/extension/internal/filter/color.h:1483 -msgid "Quadritone fantasy" +msgid "Quadritone Fantasy" msgstr "Fantasía cuatritono" #: ../src/extension/internal/filter/color.h:1485 @@ -7110,8 +7112,8 @@ msgstr "Fuera" #: ../src/extension/internal/filter/distort.h:77 #: ../src/extension/internal/filter/textures.h:75 -#: ../src/ui/widget/selected-style.cpp:123 -#: ../src/ui/widget/style-swatch.cpp:116 +#: ../src/ui/widget/selected-style.cpp:132 +#: ../src/ui/widget/style-swatch.cpp:130 msgid "Stroke:" msgstr "Trazo:" @@ -7186,7 +7188,7 @@ msgid "Blur and displace edges of shapes and pictures" msgstr "Desenfocar y desplazar los bordes de formas e imágenes" #: ../src/extension/internal/filter/distort.h:190 -#: ../src/live_effects/effect.cpp:127 +#: ../src/live_effects/effect.cpp:143 msgid "Roughen" msgstr "Áspero" @@ -7223,8 +7225,8 @@ msgid "Detect:" msgstr "Detectar:" #: ../src/extension/internal/filter/image.h:52 -#: ../src/ui/dialog/template-load-tab.cpp:99 -#: ../src/ui/dialog/template-load-tab.cpp:136 +#: ../src/ui/dialog/template-load-tab.cpp:107 +#: ../src/ui/dialog/template-load-tab.cpp:144 msgid "All" msgstr "Todo" @@ -7263,9 +7265,9 @@ msgid "Open" msgstr "Abrir" #: ../src/extension/internal/filter/morphology.h:65 -#: ../src/ui/tools/measure-tool.cpp:1218 ../src/ui/widget/page-sizer.cpp:232 -#: ../src/widgets/rect-toolbar.cpp:313 ../src/widgets/spray-toolbar.cpp:297 -#: ../src/widgets/tweak-toolbar.cpp:128 +#: ../src/libgdl/gdl-dock-placeholder.c:167 ../src/libgdl/gdl-dock.c:191 +#: ../src/ui/widget/page-sizer.cpp:249 ../src/widgets/rect-toolbar.cpp:317 +#: ../src/widgets/spray-toolbar.cpp:297 ../src/widgets/tweak-toolbar.cpp:128 #: ../share/extensions/interp_att_g.inx.h:12 msgid "Width" msgstr "Ancho" @@ -7308,8 +7310,8 @@ msgid "XOR" msgstr "XOR" #: ../src/extension/internal/filter/morphology.h:179 -#: ../src/ui/dialog/layer-properties.cpp:166 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:48 +#: ../src/ui/dialog/layer-properties.cpp:185 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:59 #: ../share/extensions/measure.inx.h:5 msgid "Position:" msgstr "Posición:" @@ -7351,7 +7353,7 @@ msgid "Erosion 2" msgstr "Erosión 2" #: ../src/extension/internal/filter/morphology.h:191 -#: ../src/live_effects/lpe-roughen.cpp:39 +#: ../src/live_effects/lpe-roughen.cpp:42 msgid "Smooth" msgstr "Suave" @@ -7373,18 +7375,18 @@ msgstr "Relleno de ruido" #: ../src/extension/internal/filter/overlays.h:59 #: ../src/extension/internal/filter/paint.h:690 -#: ../src/extension/internal/filter/shadows.h:60 ../src/ui/dialog/find.cpp:81 -#: ../src/ui/dialog/tracedialog.cpp:746 +#: ../src/extension/internal/filter/shadows.h:60 ../src/ui/dialog/find.cpp:88 +#: ../src/ui/dialog/tracedialog.cpp:747 #: ../share/extensions/color_HSL_adjust.inx.h:2 #: ../share/extensions/color_custom.inx.h:2 #: ../share/extensions/color_randomize.inx.h:2 ../share/extensions/dots.inx.h:2 #: ../share/extensions/dxf_input.inx.h:2 #: ../share/extensions/dxf_outlines.inx.h:2 -#: ../share/extensions/gcodetools_area.inx.h:29 -#: ../share/extensions/gcodetools_engraving.inx.h:7 -#: ../share/extensions/gcodetools_graffiti.inx.h:21 -#: ../share/extensions/gcodetools_lathe.inx.h:22 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:11 +#: ../share/extensions/gcodetools_area.inx.h:45 +#: ../share/extensions/gcodetools_engraving.inx.h:15 +#: ../share/extensions/gcodetools_graffiti.inx.h:32 +#: ../share/extensions/gcodetools_lathe.inx.h:28 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:15 #: ../share/extensions/generate_voronoi.inx.h:2 #: ../share/extensions/gimp_xcf.inx.h:2 #: ../share/extensions/interp_att_g.inx.h:2 @@ -7489,7 +7491,7 @@ msgid "Clean-up" msgstr "Limpieza" #: ../src/extension/internal/filter/paint.h:238 -#: ../src/ui/tools/measure-tool.cpp:1189 ../share/extensions/measure.inx.h:17 +#: ../share/extensions/measure.inx.h:17 msgid "Length" msgstr "Longitud" @@ -7498,8 +7500,8 @@ msgid "Convert image to an engraving made of vertical and horizontal lines" msgstr "Convertir la imagen en un grabado de líneas verticales y horizontales" #: ../src/extension/internal/filter/paint.h:331 -#: ../src/ui/dialog/align-and-distribute.cpp:1060 -#: ../src/widgets/desktop-widget.cpp:1933 +#: ../src/ui/dialog/align-and-distribute.cpp:1090 +#: ../src/widgets/desktop-widget.cpp:2094 msgid "Drawing" msgstr "Dibujo" @@ -7508,7 +7510,7 @@ msgstr "Dibujo" #: ../src/extension/internal/filter/paint.h:496 #: ../src/extension/internal/filter/paint.h:590 #: ../src/extension/internal/filter/paint.h:976 -#: ../src/live_effects/effect.cpp:121 ../src/splivarot.cpp:2358 +#: ../src/live_effects/effect.cpp:137 ../src/splivarot.cpp:2209 msgid "Simplify" msgstr "Simplificar" @@ -7579,13 +7581,13 @@ msgid "Contrasted" msgstr "Contrastado" #: ../src/extension/internal/filter/paint.h:591 -#: ../src/live_effects/lpe-jointype.cpp:52 +#: ../src/live_effects/lpe-jointype.cpp:54 msgid "Line width" msgstr "Ancho de línea" #: ../src/extension/internal/filter/paint.h:593 #: ../src/extension/internal/filter/paint.h:861 -#: ../src/ui/widget/filter-effect-chooser.cpp:21 +#: ../src/ui/widget/filter-effect-chooser.cpp:25 msgid "Blend mode:" msgstr "Modo de mezcla:" @@ -7666,7 +7668,7 @@ msgid "Simple posterizing effect" msgstr "Efecto de posterizado sencillo" #: ../src/extension/internal/filter/protrusions.h:48 -msgid "Snow crest" +msgid "Snow Crest" msgstr "Pico nevado" #: ../src/extension/internal/filter/protrusions.h:50 @@ -7719,7 +7721,7 @@ msgstr "Usar color del objeto" #: ../src/extension/internal/filter/shadows.h:84 msgid "Colorizable Drop shadow" -msgstr "Sombra arrojada colorizable" +msgstr "Sombra paralela colorizable" #: ../src/extension/internal/filter/textures.h:62 msgid "Ink Blot" @@ -7785,14 +7787,14 @@ msgid "Source:" msgstr "Origen:" #: ../src/extension/internal/filter/transparency.h:56 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1541 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1603 msgid "Background" msgstr "Color de fondo" #: ../src/extension/internal/filter/transparency.h:59 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2740 -#: ../src/ui/dialog/input.cpp:959 ../src/widgets/eraser-toolbar.cpp:163 -#: ../src/widgets/pencil-toolbar.cpp:138 ../src/widgets/spray-toolbar.cpp:389 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2879 +#: ../src/ui/dialog/input.cpp:1088 ../src/widgets/eraser-toolbar.cpp:133 +#: ../src/widgets/pencil-toolbar.cpp:140 ../src/widgets/spray-toolbar.cpp:389 #: ../src/widgets/tweak-toolbar.cpp:254 ../share/extensions/extrude.inx.h:2 #: ../share/extensions/triangle.inx.h:8 msgid "Mode:" @@ -7839,17 +7841,17 @@ msgstr "Recortable" msgid "Repaint anything visible monochrome" msgstr "Repintar todo lo visible en monocromo" -#: ../src/extension/internal/gdkpixbuf-input.cpp:193 +#: ../src/extension/internal/gdkpixbuf-input.cpp:188 #, c-format msgid "%s bitmap image import" msgstr "%s importación de imagen de mapa de bits" -#: ../src/extension/internal/gdkpixbuf-input.cpp:200 +#: ../src/extension/internal/gdkpixbuf-input.cpp:195 #, c-format msgid "Image Import Type:" msgstr "Tipo de imagen importada:" -#: ../src/extension/internal/gdkpixbuf-input.cpp:200 +#: ../src/extension/internal/gdkpixbuf-input.cpp:195 #, c-format msgid "" "Embed results in stand-alone, larger SVG files. Link references a file " @@ -7859,24 +7861,24 @@ msgstr "" "referencias a archivos fuera del documento SVG y todos los documentos se " "deben mover juntos." -#: ../src/extension/internal/gdkpixbuf-input.cpp:201 -#: ../src/ui/dialog/inkscape-preferences.cpp:1487 +#: ../src/extension/internal/gdkpixbuf-input.cpp:196 +#: ../src/ui/dialog/inkscape-preferences.cpp:1506 #, c-format msgid "Embed" msgstr "Incrustar" -#: ../src/extension/internal/gdkpixbuf-input.cpp:202 ../src/sp-anchor.cpp:105 -#: ../src/ui/dialog/inkscape-preferences.cpp:1487 +#: ../src/extension/internal/gdkpixbuf-input.cpp:197 ../src/sp-anchor.cpp:105 +#: ../src/ui/dialog/inkscape-preferences.cpp:1506 #, c-format msgid "Link" msgstr "Enlazar" -#: ../src/extension/internal/gdkpixbuf-input.cpp:205 +#: ../src/extension/internal/gdkpixbuf-input.cpp:200 #, c-format msgid "Image DPI:" msgstr "PPP de la imagen:" -#: ../src/extension/internal/gdkpixbuf-input.cpp:205 +#: ../src/extension/internal/gdkpixbuf-input.cpp:200 #, c-format msgid "" "Take information from file or use default bitmap import resolution as " @@ -7885,22 +7887,22 @@ msgstr "" "Tomar información del archivo o usar la resolución del mapa de bits " "predeterminado tal como está definido en las preferencias." -#: ../src/extension/internal/gdkpixbuf-input.cpp:206 +#: ../src/extension/internal/gdkpixbuf-input.cpp:201 #, c-format msgid "From file" msgstr "Desde archivo" -#: ../src/extension/internal/gdkpixbuf-input.cpp:207 +#: ../src/extension/internal/gdkpixbuf-input.cpp:202 #, c-format msgid "Default import resolution" msgstr "Resolución de importación predeterminada" -#: ../src/extension/internal/gdkpixbuf-input.cpp:210 +#: ../src/extension/internal/gdkpixbuf-input.cpp:205 #, c-format msgid "Image Rendering Mode:" msgstr "Modo de renderizado de imagen:" -#: ../src/extension/internal/gdkpixbuf-input.cpp:210 +#: ../src/extension/internal/gdkpixbuf-input.cpp:205 #, c-format msgid "" "When an image is upscaled, apply smoothing or keep blocky (pixelated). (Will " @@ -7910,31 +7912,31 @@ msgstr "" "(pixelado). (No funcionará en todos los navegadores)" # File -#: ../src/extension/internal/gdkpixbuf-input.cpp:211 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/extension/internal/gdkpixbuf-input.cpp:206 +#: ../src/ui/dialog/inkscape-preferences.cpp:1513 #, c-format msgid "None (auto)" msgstr "Ninguno (auto)" -#: ../src/extension/internal/gdkpixbuf-input.cpp:212 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/extension/internal/gdkpixbuf-input.cpp:207 +#: ../src/ui/dialog/inkscape-preferences.cpp:1513 #, c-format msgid "Smooth (optimizeQuality)" msgstr "Suave (optimizeQuality)" -#: ../src/extension/internal/gdkpixbuf-input.cpp:213 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/extension/internal/gdkpixbuf-input.cpp:208 +#: ../src/ui/dialog/inkscape-preferences.cpp:1513 #, c-format msgid "Blocky (optimizeSpeed)" msgstr "Bloques (optimizeSpeed)" -#: ../src/extension/internal/gdkpixbuf-input.cpp:216 +#: ../src/extension/internal/gdkpixbuf-input.cpp:211 #, c-format msgid "Hide the dialog next time and always apply the same actions." msgstr "" "Ocultar el diálogo la próxima vez y aplicar siempre las mismas acciones." -#: ../src/extension/internal/gdkpixbuf-input.cpp:216 +#: ../src/extension/internal/gdkpixbuf-input.cpp:211 #, c-format msgid "Don't ask again" msgstr "No volver a preguntar" @@ -7951,7 +7953,7 @@ msgstr "Degradado de GIMP (*.ggr)" msgid "Gradients used in GIMP" msgstr "Degradados utilizados en GIMP" -#: ../src/extension/internal/grid.cpp:199 ../src/ui/widget/panel.cpp:113 +#: ../src/extension/internal/grid.cpp:199 ../src/ui/widget/panel.cpp:117 msgid "Grid" msgstr "Rejilla" @@ -7976,7 +7978,7 @@ msgid "Vertical Offset:" msgstr "Desvío vertical:" #: ../src/extension/internal/grid.cpp:209 -#: ../src/ui/dialog/inkscape-preferences.cpp:1508 +#: ../src/ui/dialog/inkscape-preferences.cpp:1527 #: ../share/extensions/draw_from_triangle.inx.h:58 #: ../share/extensions/eqtexsvg.inx.h:4 ../share/extensions/foldablebox.inx.h:9 #: ../share/extensions/funcplot.inx.h:38 @@ -8006,9 +8008,9 @@ msgid "Render" msgstr "Generar" #: ../src/extension/internal/grid.cpp:210 -#: ../src/ui/dialog/document-properties.cpp:151 -#: ../src/ui/dialog/inkscape-preferences.cpp:820 -#: ../src/widgets/toolbox.cpp:1865 +#: ../src/ui/dialog/document-properties.cpp:163 +#: ../src/ui/dialog/inkscape-preferences.cpp:827 +#: ../src/widgets/toolbox.cpp:1902 msgid "Grids" msgstr "Rejillas" @@ -8058,40 +8060,40 @@ msgstr "Archivo de dibujo OpenDocument" #. TRANSLATORS: The following are document crop settings for PDF import #. more info: http://www.acrobatusers.com/tech_corners/javascript_corner/tips/2006/page_bounds/ -#: ../src/extension/internal/pdfinput/pdf-input.cpp:75 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:77 msgid "media box" msgstr "media box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:76 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:78 msgid "crop box" msgstr "crop box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:77 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:79 msgid "trim box" msgstr "trim box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:78 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:80 msgid "bleed box" msgstr "bleed box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:79 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:81 msgid "art box" msgstr "art box" #. Crop settings -#: ../src/extension/internal/pdfinput/pdf-input.cpp:109 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:117 msgid "Clip to:" msgstr "Aplicar recorte a:" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:120 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:128 msgid "Page settings" msgstr "Ajustes de página" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:121 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:129 msgid "Precision of approximating gradient meshes:" msgstr "Precisión de las mallas de degradados aproximadas:" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:122 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:130 msgid "" "Note: setting the precision too high may result in a large SVG file " "and slow performance." @@ -8099,11 +8101,11 @@ msgstr "" "Nota: Ajustar la precisión a un valor demasiado alto puede dar como " "resultado archivos SVG muy grandes y afectar negativamente al rendimiento." -#: ../src/extension/internal/pdfinput/pdf-input.cpp:126 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:134 msgid "Poppler/Cairo import" msgstr "Importación Poppler/Cairo" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:127 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:135 msgid "" "Import via external library. Text consists of groups containing cloned " "glyphs where each glyph is a path. Images are stored internally. Meshes " @@ -8114,11 +8116,11 @@ msgstr "" "hacen que el documento sea renderizado al completo como una imagen " "rasterizada." -#: ../src/extension/internal/pdfinput/pdf-input.cpp:128 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:136 msgid "Internal import" msgstr "Importación interna" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:129 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:137 msgid "" "Import via internal (Poppler derived) library. Text is stored as text but " "white space is missing. Meshes are converted to tiles, the number depends on " @@ -8128,7 +8130,7 @@ msgstr "" "almacena como texto pero falta el espacio en blanco. Las mallas se importan " "como teselas, la cantidad depende de la precisión indicada más abajo." -#: ../src/extension/internal/pdfinput/pdf-input.cpp:135 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:148 msgid "rough" msgstr "bruto" @@ -8139,63 +8141,63 @@ msgstr "bruto" #. _textHandlingCombo->set_active_text(_("Import text as text")); #. hbox5 = Gtk::manage(new class Gtk::HBox(false, 4)); #. Font option -#: ../src/extension/internal/pdfinput/pdf-input.cpp:146 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:159 msgid "Replace PDF fonts by closest-named installed fonts" msgstr "Reemplazar tipografías PDF con las de nombre similar instaladas" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:148 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:161 msgid "Embed images" msgstr "Incrustar las imágenes" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:150 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:163 msgid "Import settings" msgstr "Ajustes de importación" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:272 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:291 msgid "PDF Import Settings" msgstr "Ajustes de importación de PDF" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:414 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:438 msgctxt "PDF input precision" msgid "rough" msgstr "bruto" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:415 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:439 msgctxt "PDF input precision" msgid "medium" msgstr "medio" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:416 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:440 msgctxt "PDF input precision" msgid "fine" msgstr "fino" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:417 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:441 msgctxt "PDF input precision" msgid "very fine" msgstr "muy fino" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:903 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:937 msgid "PDF Input" msgstr "Entrada PDF" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:908 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:942 msgid "Adobe PDF (*.pdf)" msgstr "Adobe PDF (*.pdf)" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:909 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:943 msgid "Adobe Portable Document Format" msgstr "Formato de documento portable de Adobe" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:916 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:950 msgid "AI Input" msgstr "Entrada AI" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:921 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:955 msgid "Adobe Illustrator 9.0 and above (*.ai)" msgstr "Adobe Illustrator 9.0 y superiores (*.ai)" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:922 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:956 msgid "Open files saved in Adobe Illustrator 9.0 and newer versions" msgstr "" "Abrir archivos guardados con Adobe Illustrator 9.0 y versiones superiores" @@ -8212,39 +8214,39 @@ msgstr "PovRay (*.pov) (solo trayectos y formas)" msgid "PovRay Raytracer File" msgstr "Archivo de trazado de rayos PovRay" -#: ../src/extension/internal/svg.cpp:122 +#: ../src/extension/internal/svg.cpp:100 msgid "SVG Input" msgstr "Entrada SVG" -#: ../src/extension/internal/svg.cpp:127 +#: ../src/extension/internal/svg.cpp:105 msgid "Scalable Vector Graphic (*.svg)" msgstr "Gráficos Vectoriales Escalables (*.svg)" -#: ../src/extension/internal/svg.cpp:128 +#: ../src/extension/internal/svg.cpp:106 msgid "Inkscape native file format and W3C standard" msgstr "El formato nativo de Inkscape y estándar W3C" -#: ../src/extension/internal/svg.cpp:136 +#: ../src/extension/internal/svg.cpp:114 msgid "SVG Output Inkscape" msgstr "Salida SVG Inkscape" -#: ../src/extension/internal/svg.cpp:141 +#: ../src/extension/internal/svg.cpp:119 msgid "Inkscape SVG (*.svg)" msgstr "SVG de Inkscape (*.svg)" -#: ../src/extension/internal/svg.cpp:142 +#: ../src/extension/internal/svg.cpp:120 msgid "SVG format with Inkscape extensions" msgstr "Formato SVG con extensiones de Inkscape" -#: ../src/extension/internal/svg.cpp:150 ../share/extensions/scour.inx.h:19 +#: ../src/extension/internal/svg.cpp:128 ../share/extensions/scour.inx.h:19 msgid "SVG Output" msgstr "Salida SVG" -#: ../src/extension/internal/svg.cpp:155 +#: ../src/extension/internal/svg.cpp:133 msgid "Plain SVG (*.svg)" msgstr "SVG plano (*.svg)" -#: ../src/extension/internal/svg.cpp:156 +#: ../src/extension/internal/svg.cpp:134 msgid "Scalable Vector Graphics format as defined by the W3C" msgstr "Formato de gráficos vectoriales escalables (SVG) definido por W3C" @@ -8276,216 +8278,260 @@ msgstr "SVG plano comprimido (*.svgz)" msgid "Scalable Vector Graphics format compressed with GZip" msgstr "Formato SVG comprimido con Gzip" -#: ../src/extension/internal/vsd-input.cpp:286 +#: ../src/extension/internal/vsd-input.cpp:318 msgid "VSD Input" msgstr "Entrada VSD" -#: ../src/extension/internal/vsd-input.cpp:291 +#: ../src/extension/internal/vsd-input.cpp:323 msgid "Microsoft Visio Diagram (*.vsd)" msgstr "Diagrama Visio de Microsoft (*.vsd)" -#: ../src/extension/internal/vsd-input.cpp:292 +#: ../src/extension/internal/vsd-input.cpp:324 msgid "File format used by Microsoft Visio 6 and later" msgstr "Format de archivo usado por Microsoft Visio 6 y posterior" -#: ../src/extension/internal/vsd-input.cpp:299 +#: ../src/extension/internal/vsd-input.cpp:331 msgid "VDX Input" msgstr "Entrada VDX" -#: ../src/extension/internal/vsd-input.cpp:304 +#: ../src/extension/internal/vsd-input.cpp:336 msgid "Microsoft Visio XML Diagram (*.vdx)" msgstr "Diagrama Microsoft Visio XML (*.vdx)" -#: ../src/extension/internal/vsd-input.cpp:305 +#: ../src/extension/internal/vsd-input.cpp:337 msgid "File format used by Microsoft Visio 2010 and later" msgstr "Format de archivo usado por Microsoft Visio 2010 y posterior" -#: ../src/extension/internal/vsd-input.cpp:312 +#: ../src/extension/internal/vsd-input.cpp:344 msgid "VSDM Input" msgstr "Entrada VSDM" -#: ../src/extension/internal/vsd-input.cpp:317 +#: ../src/extension/internal/vsd-input.cpp:349 msgid "Microsoft Visio 2013 drawing (*.vsdm)" msgstr "Dibujo Microsoft Visio 2013 (*.vsdm)" -#: ../src/extension/internal/vsd-input.cpp:318 -#: ../src/extension/internal/vsd-input.cpp:331 +#: ../src/extension/internal/vsd-input.cpp:350 +#: ../src/extension/internal/vsd-input.cpp:363 msgid "File format used by Microsoft Visio 2013 and later" msgstr "Format de archivo usado por Microsoft Visio 2013 y posterior" -#: ../src/extension/internal/vsd-input.cpp:325 +#: ../src/extension/internal/vsd-input.cpp:357 msgid "VSDX Input" msgstr "Entrada VSDX" -#: ../src/extension/internal/vsd-input.cpp:330 +#: ../src/extension/internal/vsd-input.cpp:362 msgid "Microsoft Visio 2013 drawing (*.vsdx)" msgstr "Dibujo Microsoft Visio 2013 (*.vsdx)" -#: ../src/extension/internal/wmf-inout.cpp:3180 +#: ../src/extension/internal/wmf-inout.cpp:3196 msgid "WMF Input" msgstr "Entrada WMF" -#: ../src/extension/internal/wmf-inout.cpp:3185 +#: ../src/extension/internal/wmf-inout.cpp:3201 msgid "Windows Metafiles (*.wmf)" msgstr "Metaarchivos de Windows (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3186 +#: ../src/extension/internal/wmf-inout.cpp:3202 msgid "Windows Metafiles" msgstr "Metaarchivos de Windows" -#: ../src/extension/internal/wmf-inout.cpp:3194 +#: ../src/extension/internal/wmf-inout.cpp:3210 msgid "WMF Output" msgstr "Salida WMF" -#: ../src/extension/internal/wmf-inout.cpp:3204 +#: ../src/extension/internal/wmf-inout.cpp:3220 msgid "Map all fill patterns to standard WMF hatches" msgstr "Mapear todos los patrones de relleno a trazados WMF estándar" -#: ../src/extension/internal/wmf-inout.cpp:3208 +#: ../src/extension/internal/wmf-inout.cpp:3224 #: ../share/extensions/wmf_input.inx.h:2 ../share/extensions/wmf_output.inx.h:2 msgid "Windows Metafile (*.wmf)" msgstr "Metaarchivo de Windows (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3209 +#: ../src/extension/internal/wmf-inout.cpp:3225 msgid "Windows Metafile" msgstr "Metaarchivo de Windows" -#: ../src/extension/internal/wpg-input.cpp:144 +#: ../src/extension/internal/wpg-input.cpp:154 msgid "WPG Input" msgstr "Entrada WPG" -#: ../src/extension/internal/wpg-input.cpp:149 +#: ../src/extension/internal/wpg-input.cpp:159 msgid "WordPerfect Graphics (*.wpg)" msgstr "Gráficos WordPerfect (*.wpg)" -#: ../src/extension/internal/wpg-input.cpp:150 +#: ../src/extension/internal/wpg-input.cpp:160 msgid "Vector graphics format used by Corel WordPerfect" msgstr "Formato de gráficos vectoriales utilizados por Corel WordPerfect" -#: ../src/extension/prefdialog.cpp:251 +#: ../src/extension/prefdialog.cpp:276 msgid "Live preview" msgstr "Vista en directo" -#: ../src/extension/prefdialog.cpp:251 +#: ../src/extension/prefdialog.cpp:276 msgid "Is the effect previewed live on canvas?" msgstr "¿Se previsualiza el el efecto en el lienzo?" -#: ../src/extension/system.cpp:125 ../src/extension/system.cpp:127 +#: ../src/extension/system.cpp:126 ../src/extension/system.cpp:128 msgid "Format autodetect failed. The file is being opened as SVG." msgstr "" "Ha fallado la detección automática de formato. Se abrirá el archivo como SVG." -#: ../src/file.cpp:173 -msgid "default.svg" -msgstr "default.es.svg" +#: ../src/file-update.cpp:314 +msgid "Convert legacy Inkscape file" +msgstr "Convertir archivo Inkscape antiguo" -#: ../src/file.cpp:414 +#: ../src/file-update.cpp:319 msgid "" -"Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" -"Drawing elements may be too small. This can be corrected by\n" -"either setting the SVG 'viewBox' to compensate or by scaling\n" -"all the elements in the drawing." +"was created in an older version of Inkscape (90 DPI) and we need to make it " +"compatible with newer versions (96 DPI). Tell us about this file:\n" msgstr "" -"Los archivos antiguos de Inkscape usan 1inch == 90px. CSS requiere 1inch == " -"96px.\n" -"Los elementos dibujados podrían ser demasiado pequeños. Esto se puede " -"corregir tanto\n" -"ajustando el 'viewBox' de SVG para compensarlo o escalando todos los " -"elementos en\n" -"el dibujo." +"fue creado con una versión anterior de Inkscape (90 ppp) y necesita ser " +"compatible con versiones más nuevas (96 ppp). Cuéntenos lo siguiente:\n" -#: ../src/file.cpp:418 ../src/file.cpp:535 -msgid "Old Inkscape file detected (90 DPI)" -msgstr "Se ha detectado un archivo de Inkscape antiguo (90 PPP)" +#: ../src/file-update.cpp:327 +msgid "" +"This file contains digital artwork for screen display. (Choose if " +"unsure.)" +msgstr "" +"Este archivo contiene arte digital para ser mostrado en pantalla. " +"(Seleccione si no está seguro)" -#: ../src/file.cpp:425 ../src/file.cpp:542 -msgid "Create backup file (in same directory)." -msgstr "Crear archivo de copia (en el mismo directorio)." +#: ../src/file-update.cpp:330 +msgid "This file is intended for physical output, such as paper or 3D prints." +msgstr "" +"Este archivo está destinado a impresión física, por ejemplo en papel o como " +"impresión 3D." -#: ../src/file.cpp:431 ../src/file.cpp:548 ../src/ui/widget/page-sizer.cpp:898 -msgid "Set 'viewBox'" -msgstr "Fijar 'viewBox'" +#: ../src/file-update.cpp:332 +msgid "" +"The appearance of elements such as clips, masks, filters, and clones\n" +"is most important. (Choose if unsure.)" +msgstr "" +"La apariencia de elementos como clips, máscaras, filtros y clones\n" +"es lo más importante. (Seleccione si no está seguro)" -#: ../src/file.cpp:432 ../src/file.cpp:549 -msgid "Scale elements" -msgstr "Escalar elementos" +#: ../src/file-update.cpp:336 +msgid "" +"The accuracy of the physical unit size and position values of objects\n" +"in the file is most important. (Experimental.)" +msgstr "" +"La exactitud del tamaño de las unidades físicas y valores de posición de " +"objetos\n" +"en el archivo es lo más importante. (Experimental)" -#: ../src/file.cpp:433 ../src/file.cpp:550 -#: ../src/widgets/connector-toolbar.cpp:316 -msgid "Ignore" -msgstr "Ignorar" +#: ../src/file-update.cpp:338 +msgid "Create a backup file in same directory." +msgstr "Crear copia de seguridad en el mismo directorio." -#: ../src/file.cpp:530 +#: ../src/file-update.cpp:339 +msgid "More details..." +msgstr "Más detalles…" + +#: ../src/file-update.cpp:342 msgid "" -"Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" -"Drawings meant to match a physical size (e.g. Letter or A4)\n" -"will be too small. Scaling the drawing can correct for this.\n" -"Internal scaling can be handled either by setting the SVG 'viewBox'\n" -"attribute to compensate or by scaling all objects in the drawing." -msgstr "" -"Los archivos antiguos de Inkscape usan 1inch == 90px. CSS requiere 1inch == " -"96px.\n" -"Los dibujos que están hechos para corresponderse con un tamaño físico (p.ej. " -"A4, o Carta)\n" -"serán demasiado pequeños. Se podrá corregir escalando los elementos.\n" -"El escalado interno se puede gestionar ajustando el atributo 'viewBox' de " -"SVG para compensarlo\n" -"o escalando todos los objetos en el dibujo." +"We've updated Inkscape to follow the CSS standard of 96 DPI for " +"better browser compatibility; we used to use 90 DPI. Digital artwork for " +"screen display will be converted to 96 DPI without scaling and should be " +"unaffected. Artwork drawn at 90 DPI for a specific physical size will be too " +"small if converted to 96 DPI without any scaling. There are two scaling " +"methods:\n" +"\n" +"Scaling the whole document: The least error-prone method, this " +"preserves the appearance of the artwork, including filters and the position " +"of masks, etc. The scale of the artwork relative to the document size may " +"not be accurate.\n" +"\n" +"Scaling individual elements in the artwork: This method is less " +"reliable and can result in a changed appearance, but is better for physical " +"output that relies on accurate sizes and positions (for example, for 3D " +"printing.)\n" +"\n" +"More information about this change are available in the Inkscape FAQ" +msgstr "" +"Hemos actualizado Inkscape para que cumpla el estándar CSS de 96 PPP " +"para mejor compatibilidad con navegadores web; solíamos usar 90 PPP. El arte " +"digital para uso en pantallas se convertirá a 96 PPP sin escalado y no " +"debería verse afectado. Los diseños creados a 90 PPP para un tamaño físico " +"en concreto será demasiado pequeño si se convierte a 96 PPP sin escalado. " +"Hay dos métodos de escalado:\n" +"\n" +"Escalar el documento completo: Es el método con menor posibilidad de " +"fallo, preserva el aspecto del dibujo, inclusive filtros y posicionamiento " +"de máscaras, etc. La escala del dibujo con respecto al tamaño del documento " +"podría no ser correcto.\n" +"\n" +"Escalar elementos individuales en el dibujo: Este método es menos " +"fiable y puede resultar en un cambio de aspecto, pero es mejor para un medio " +"externo (soporte físico) que dependa de tamaños y posicionamientos exactos " +"(por ejemplo, para impresión 3D.)\n" +"\n" +"Hay más información disponible acerca de este cambio en Inkscape - Preguntas frecuentes" + +#: ../src/file-update.cpp:386 +msgid "OK" +msgstr "OK" #. Look for SPNamedView and SPDefs loop #. desktop->getDocument()->ensureUpToDate(); // Does not update box3d! -#: ../src/file.cpp:771 +#: ../src/file-update.cpp:569 msgid "Update Document" msgstr "Actualizar documento" -#: ../src/file.cpp:787 ../src/main-cmdlinexact.cpp:177 +#: ../src/file.cpp:171 +msgid "default.svg" +msgstr "default.es.svg" + +#: ../src/file.cpp:323 msgid "Broken links have been changed to point to existing files." msgstr "" "Los enlaces rotos han sido modificados para que apunten a archivos " "existentes." -#: ../src/file.cpp:798 ../src/file.cpp:1754 +#: ../src/file.cpp:334 ../src/file.cpp:1283 #, c-format msgid "Failed to load the requested file %s" msgstr "Error al cargar el archivo pedido %s" -#: ../src/file.cpp:824 +#: ../src/file.cpp:360 msgid "Document not saved yet. Cannot revert." msgstr "Todavía no se ha guardado el documento. No se puede revertir." -#: ../src/file.cpp:830 +#: ../src/file.cpp:366 msgid "Changes will be lost! Are you sure you want to reload document %1?" msgstr "" "Se perderán los cambios. ¿Está seguro de querer recargar el documento %1?" -#: ../src/file.cpp:856 +#: ../src/file.cpp:392 msgid "Document reverted." msgstr "Documento revertido." -#: ../src/file.cpp:858 +#: ../src/file.cpp:394 msgid "Document not reverted." msgstr "No se ha revertido el documento." -#: ../src/file.cpp:1008 +#: ../src/file.cpp:544 msgid "Select file to open" msgstr "Seleccione el archivo que desea abrir" -#: ../src/file.cpp:1090 +#: ../src/file.cpp:626 msgid "Clean up document" msgstr "Limpiar documento" -#: ../src/file.cpp:1097 +#: ../src/file.cpp:633 #, c-format msgid "Removed %i unused definition in <defs>." msgid_plural "Removed %i unused definitions in <defs>." msgstr[0] "Se ha eliminado %i definición no usada en <defs>." msgstr[1] "Se han eliminado %i definiciones no usadas en <defs>." -#: ../src/file.cpp:1102 +#: ../src/file.cpp:638 msgid "No unused definitions in <defs>." msgstr "No hay definiciones sin usar en <defs>." -#: ../src/file.cpp:1136 +#: ../src/file.cpp:672 #, c-format msgid "" "No Inkscape extension found to save document (%s). This may have been " @@ -8494,12 +8540,12 @@ msgstr "" "No se ha encontrado una extensión de inkscape para guardar el documento " "(%s). Esto pudo ser causado por una extensión de archivo desconocida." -#: ../src/file.cpp:1137 ../src/file.cpp:1147 ../src/file.cpp:1156 -#: ../src/file.cpp:1163 ../src/file.cpp:1169 +#: ../src/file.cpp:673 ../src/file.cpp:683 ../src/file.cpp:692 +#: ../src/file.cpp:699 ../src/file.cpp:705 msgid "Document not saved." msgstr "No se ha guardado el documento." -#: ../src/file.cpp:1146 +#: ../src/file.cpp:682 #, c-format msgid "" "File %s is write protected. Please remove write protection and try again." @@ -8507,54 +8553,54 @@ msgstr "" "El archivo %s está protegido contra escritura. Retire la protección contra " "escritura e inténtelo de nuevo." -#: ../src/file.cpp:1155 +#: ../src/file.cpp:691 #, c-format msgid "File %s could not be saved." msgstr "No se ha podido guardar el archivo %s." -#: ../src/file.cpp:1188 ../src/file.cpp:1190 +#: ../src/file.cpp:724 ../src/file.cpp:726 msgid "Document saved." msgstr "Documento guardado." #. We are saving for the first time; create a unique default filename -#: ../src/file.cpp:1333 ../src/file.cpp:1913 +#: ../src/file.cpp:869 ../src/file.cpp:1442 msgid "drawing" msgstr "dibujo" -#: ../src/file.cpp:1338 +#: ../src/file.cpp:874 msgid "drawing-%1" msgstr "dibujo-%1" -#: ../src/file.cpp:1355 +#: ../src/file.cpp:891 msgid "Select file to save a copy to" msgstr "Seleccione el archivo en el que se guardará una copia" -#: ../src/file.cpp:1357 +#: ../src/file.cpp:893 msgid "Select file to save to" msgstr "Seleccione el archivo en el que se guardará" -#: ../src/file.cpp:1462 ../src/file.cpp:1464 +#: ../src/file.cpp:998 ../src/file.cpp:1000 msgid "No changes need to be saved." msgstr "No hay cambios que necesiten ser guardados." -#: ../src/file.cpp:1483 +#: ../src/file.cpp:1019 msgid "Saving document..." msgstr "Guardando documento..." -#: ../src/file.cpp:1751 ../src/ui/dialog/inkscape-preferences.cpp:1481 -#: ../src/ui/dialog/ocaldialogs.cpp:1091 +#: ../src/file.cpp:1280 ../src/ui/dialog/inkscape-preferences.cpp:1500 +#: ../src/ui/dialog/ocaldialogs.cpp:1244 msgid "Import" msgstr "Importar" -#: ../src/file.cpp:1801 +#: ../src/file.cpp:1330 msgid "Select file to import" msgstr "Seleccionar el archivo a importar" -#: ../src/file.cpp:1934 +#: ../src/file.cpp:1463 msgid "Select file to export to" msgstr "Seleccionar el archivo de exportación" -#: ../src/file.cpp:2187 +#: ../src/file.cpp:1716 msgid "Import Clip Art" msgstr "Importar clipart" @@ -8639,18 +8685,18 @@ msgstr "Luz fuerte" msgid "Soft Light" msgstr "Luz suave" -#: ../src/filter-enums.cpp:63 ../src/splivarot.cpp:72 +#: ../src/filter-enums.cpp:63 ../src/splivarot.cpp:89 ../src/splivarot.cpp:95 msgid "Difference" msgstr "Diferencia" -#: ../src/filter-enums.cpp:64 ../src/splivarot.cpp:79 +#: ../src/filter-enums.cpp:64 ../src/splivarot.cpp:101 msgid "Exclusion" msgstr "Exclusión" -#: ../src/filter-enums.cpp:65 ../src/ui/tools/flood-tool.cpp:84 -#: ../src/ui/widget/color-icc-selector.cpp:169 -#: ../src/ui/widget/color-icc-selector.cpp:173 -#: ../src/ui/widget/color-scales.cpp:381 ../src/ui/widget/color-scales.cpp:382 +#: ../src/filter-enums.cpp:65 ../src/ui/tools/flood-tool.cpp:95 +#: ../src/ui/widget/color-icc-selector.cpp:182 +#: ../src/ui/widget/color-icc-selector.cpp:186 +#: ../src/ui/widget/color-scales.cpp:411 ../src/ui/widget/color-scales.cpp:412 #: ../src/widgets/tweak-toolbar.cpp:286 msgid "Hue" msgstr "Tono" @@ -8691,7 +8737,7 @@ msgstr "Limpiar" msgid "Copy" msgstr "Copiar" -#: ../src/filter-enums.cpp:97 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1561 +#: ../src/filter-enums.cpp:97 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1623 msgid "Destination" msgstr "Destino" @@ -8719,8 +8765,8 @@ msgstr "Aclarar" msgid "Arithmetic" msgstr "Aritmético" -#: ../src/filter-enums.cpp:120 ../src/selection-chemistry.cpp:542 -#: ../src/ui/dialog/objects.cpp:1880 +#: ../src/filter-enums.cpp:120 ../src/selection-chemistry.cpp:545 +#: ../src/ui/dialog/objects.cpp:1927 msgid "Duplicate" msgstr "Duplicar" @@ -8757,86 +8803,86 @@ msgstr "Luz puntual" msgid "Spot Light" msgstr "Luz de foco" -#: ../src/gradient-chemistry.cpp:1613 +#: ../src/gradient-chemistry.cpp:1617 msgid "Invert gradient colors" msgstr "Invertir colores del degradado" -#: ../src/gradient-chemistry.cpp:1640 +#: ../src/gradient-chemistry.cpp:1644 msgid "Reverse gradient" msgstr "Revertir degradado" -#: ../src/gradient-chemistry.cpp:1654 ../src/widgets/gradient-selector.cpp:208 +#: ../src/gradient-chemistry.cpp:1658 ../src/widgets/gradient-selector.cpp:222 msgid "Delete swatch" msgstr "Borrar muestra" -#: ../src/gradient-drag.cpp:94 ../src/ui/tools/gradient-tool.cpp:86 -#: ../src/ui/tools/mesh-tool.cpp:103 +#: ../src/gradient-drag.cpp:97 ../src/ui/tools/gradient-tool.cpp:93 +#: ../src/ui/tools/mesh-tool.cpp:104 msgid "Linear gradient start" msgstr "Inicio del degradado lineal" #. POINT_LG_BEGIN -#: ../src/gradient-drag.cpp:95 ../src/ui/tools/gradient-tool.cpp:87 -#: ../src/ui/tools/mesh-tool.cpp:104 +#: ../src/gradient-drag.cpp:98 ../src/ui/tools/gradient-tool.cpp:94 +#: ../src/ui/tools/mesh-tool.cpp:105 msgid "Linear gradient end" msgstr "Fin del degradado lineal" -#: ../src/gradient-drag.cpp:96 ../src/ui/tools/gradient-tool.cpp:88 -#: ../src/ui/tools/mesh-tool.cpp:105 +#: ../src/gradient-drag.cpp:99 ../src/ui/tools/gradient-tool.cpp:95 +#: ../src/ui/tools/mesh-tool.cpp:106 msgid "Linear gradient mid stop" msgstr "Punto medio del degradado lineal" -#: ../src/gradient-drag.cpp:97 ../src/ui/tools/gradient-tool.cpp:89 -#: ../src/ui/tools/mesh-tool.cpp:106 +#: ../src/gradient-drag.cpp:100 ../src/ui/tools/gradient-tool.cpp:96 +#: ../src/ui/tools/mesh-tool.cpp:107 msgid "Radial gradient center" msgstr "Centro del degradado radial" -#: ../src/gradient-drag.cpp:98 ../src/gradient-drag.cpp:99 -#: ../src/ui/tools/gradient-tool.cpp:90 ../src/ui/tools/gradient-tool.cpp:91 -#: ../src/ui/tools/mesh-tool.cpp:107 ../src/ui/tools/mesh-tool.cpp:108 +#: ../src/gradient-drag.cpp:101 ../src/gradient-drag.cpp:102 +#: ../src/ui/tools/gradient-tool.cpp:97 ../src/ui/tools/gradient-tool.cpp:98 +#: ../src/ui/tools/mesh-tool.cpp:108 ../src/ui/tools/mesh-tool.cpp:109 msgid "Radial gradient radius" msgstr "Radio del degradado radial" -#: ../src/gradient-drag.cpp:100 ../src/ui/tools/gradient-tool.cpp:92 -#: ../src/ui/tools/mesh-tool.cpp:109 +#: ../src/gradient-drag.cpp:103 ../src/ui/tools/gradient-tool.cpp:99 +#: ../src/ui/tools/mesh-tool.cpp:110 msgid "Radial gradient focus" msgstr "Foco del degradado radial" #. POINT_RG_FOCUS -#: ../src/gradient-drag.cpp:101 ../src/gradient-drag.cpp:102 -#: ../src/ui/tools/gradient-tool.cpp:93 ../src/ui/tools/gradient-tool.cpp:94 -#: ../src/ui/tools/mesh-tool.cpp:110 ../src/ui/tools/mesh-tool.cpp:111 +#: ../src/gradient-drag.cpp:104 ../src/gradient-drag.cpp:105 +#: ../src/ui/tools/gradient-tool.cpp:100 ../src/ui/tools/gradient-tool.cpp:101 +#: ../src/ui/tools/mesh-tool.cpp:111 ../src/ui/tools/mesh-tool.cpp:112 msgid "Radial gradient mid stop" msgstr "Punto medio del degradado radial" -#: ../src/gradient-drag.cpp:103 ../src/ui/tools/gradient-tool.cpp:95 -#: ../src/ui/tools/mesh-tool.cpp:112 +#: ../src/gradient-drag.cpp:106 ../src/ui/tools/gradient-tool.cpp:102 +#: ../src/ui/tools/mesh-tool.cpp:113 msgid "Mesh gradient corner" msgstr "Esquina del degradado de malla" -#: ../src/gradient-drag.cpp:104 ../src/ui/tools/gradient-tool.cpp:96 -#: ../src/ui/tools/mesh-tool.cpp:113 +#: ../src/gradient-drag.cpp:107 ../src/ui/tools/gradient-tool.cpp:103 +#: ../src/ui/tools/mesh-tool.cpp:114 msgid "Mesh gradient handle" msgstr "Tirador de degradado de malla" -#: ../src/gradient-drag.cpp:105 ../src/ui/tools/gradient-tool.cpp:97 -#: ../src/ui/tools/mesh-tool.cpp:114 +#: ../src/gradient-drag.cpp:108 ../src/ui/tools/gradient-tool.cpp:104 +#: ../src/ui/tools/mesh-tool.cpp:115 msgid "Mesh gradient tensor" msgstr "Tensor de degradado de malla" -#: ../src/gradient-drag.cpp:563 +#: ../src/gradient-drag.cpp:566 msgid "Added patch row or column" msgstr "Añadida fila o columna de parches" -#: ../src/gradient-drag.cpp:806 +#: ../src/gradient-drag.cpp:809 msgid "Merge gradient handles" msgstr "Fusionar tiradores de degradado" #. we did an undoable action -#: ../src/gradient-drag.cpp:1123 +#: ../src/gradient-drag.cpp:1126 msgid "Move gradient handle" msgstr "Mover el tirador de degradado" -#: ../src/gradient-drag.cpp:1182 ../src/widgets/gradient-vector.cpp:798 +#: ../src/gradient-drag.cpp:1185 ../src/widgets/gradient-vector.cpp:834 msgid "Delete gradient stop" msgstr "Borrar parada de degradado" @@ -8906,46 +8952,46 @@ msgstr "Mover parada(s) de degradado" msgid "Delete gradient stop(s)" msgstr "Borrar parada(s) de degradado" -#: ../src/inkscape.cpp:238 +#: ../src/inkscape.cpp:242 msgid "Autosave failed! Cannot create directory %1." msgstr "" "Ha fallado el guardado automático. No se ha podido crear el directorio %1." -#: ../src/inkscape.cpp:247 +#: ../src/inkscape.cpp:251 msgid "Autosave failed! Cannot open directory %1." msgstr "" "Ha fallado el guardado automático. No se ha podido abrir el directorio %1." -#: ../src/inkscape.cpp:263 +#: ../src/inkscape.cpp:267 msgid "Autosaving documents..." msgstr "Guardando documento..." -#: ../src/inkscape.cpp:331 +#: ../src/inkscape.cpp:335 msgid "Autosave failed! Could not find inkscape extension to save document." msgstr "" "Ha fallado el guardado automático. No se ha encontrado ninguna extensión de " "Inkscape con la que guardar el documento." -#: ../src/inkscape.cpp:334 ../src/inkscape.cpp:341 +#: ../src/inkscape.cpp:338 ../src/inkscape.cpp:345 #, c-format msgid "Autosave failed! File %s could not be saved." msgstr "" "Ha fallado el guardado automático. No se ha podido guardar el archivo %s." -#: ../src/inkscape.cpp:356 +#: ../src/inkscape.cpp:360 msgid "Autosave complete." msgstr "Autoguardado completado." -#: ../src/inkscape.cpp:714 +#: ../src/inkscape.cpp:618 msgid "Untitled document" msgstr "Documento sin nombre" #. Show nice dialog box -#: ../src/inkscape.cpp:746 +#: ../src/inkscape.cpp:650 msgid "Inkscape encountered an internal error and will close now.\n" msgstr "Inkscape ha encontrado un error interno y se cerrará.\n" -#: ../src/inkscape.cpp:747 +#: ../src/inkscape.cpp:651 msgid "" "Automatic backups of unsaved documents were done to the following " "locations:\n" @@ -8953,262 +8999,639 @@ msgstr "" "Las copias de seguridad automáticas se realizaron en los siguientes " "lugares:\n" -#: ../src/inkscape.cpp:748 +#: ../src/inkscape.cpp:652 msgid "Automatic backup of the following documents failed:\n" msgstr "Ha fallado la copia de seguridad de los siguientes documentos:\n" -#: ../src/inkview.cpp:225 -msgid "Inkscape Options" -msgstr "Opciones de Inkscape" - -#: ../src/inkview.cpp:226 -msgid "Default program options" -msgstr "Opciones predeterminadas del programa" - -#: ../src/inkview.cpp:233 -msgid "NUM" -msgstr "NUM" - -#: ../src/inkview.cpp:239 -msgid "FILES..." -msgstr "ARCHIVOS..." - -#: ../src/inkview.cpp:251 -msgid "Open SVG files" -msgstr "Abrir archivos SVG" - -#: ../src/knot.cpp:329 +#: ../src/knot.cpp:348 msgid "Node or handle drag canceled." msgstr "Se ha cancelado el arrastre de nodo o tirador." -#: ../src/knotholder.cpp:167 +#: ../src/knotholder.cpp:171 msgid "Change handle" msgstr "Cambiar tirador" -#: ../src/knotholder.cpp:254 +#: ../src/knotholder.cpp:258 msgid "Move handle" msgstr "Mover el tirador" #. TRANSLATORS: This refers to the pattern that's inside the object -#: ../src/knotholder.cpp:273 ../src/knotholder.cpp:295 +#: ../src/knotholder.cpp:277 ../src/knotholder.cpp:299 msgid "Move the pattern fill inside the object" msgstr "Mover el relleno de mosaico dentro del objeto" -#: ../src/knotholder.cpp:277 ../src/knotholder.cpp:299 +#: ../src/knotholder.cpp:281 ../src/knotholder.cpp:303 msgid "Scale the pattern fill; uniformly if with Ctrl" msgstr "Escalar el relleno de mosaico; uniformemente con Ctrl" -#: ../src/knotholder.cpp:281 ../src/knotholder.cpp:303 +#: ../src/knotholder.cpp:285 ../src/knotholder.cpp:307 msgid "Rotate the pattern fill; with Ctrl to snap angle" msgstr "" "Rotar el relleno de mosaico; con Ctrl para ajustar el ángulo" -#: ../src/libnrtype/FontFactory.cpp:646 +#: ../src/libgdl/gdl-dock-bar.c:105 +msgid "Master" +msgstr "Maestro" + +#: ../src/libgdl/gdl-dock-bar.c:106 +msgid "GdlDockMaster object which the dockbar widget is attached to" +msgstr "Objeto GdlDockMaster al que está unido el widget de la barra acoplable" + +#: ../src/libgdl/gdl-dock-bar.c:113 +msgid "Dockbar style" +msgstr "Estilo de la barra acoplable" + +#: ../src/libgdl/gdl-dock-bar.c:114 +msgid "Dockbar style to show items on it" +msgstr "Estilo de la barra acoplable para mostrar elementos en ella" + +#: ../src/libgdl/gdl-dock-item-grip.c:402 +msgid "Iconify this dock" +msgstr "Minimizar este acoplable" + +#: ../src/libgdl/gdl-dock-item-grip.c:404 +msgid "Close this dock" +msgstr "Cerrar este acoplable" + +#: ../src/libgdl/gdl-dock-item-grip.c:723 ../src/libgdl/gdl-dock-tablabel.c:125 +msgid "Controlling dock item" +msgstr "Elemento acoplable controlador" + +#: ../src/libgdl/gdl-dock-item-grip.c:724 +msgid "Dockitem which 'owns' this grip" +msgstr "Dockitem que «posee» este agarre" + +#: ../src/libgdl/gdl-dock-item.c:298 ../src/widgets/ruler.cpp:201 +#: ../share/extensions/gcodetools_graffiti.inx.h:9 +#: ../share/extensions/gcodetools_orientation_points.inx.h:2 +msgid "Orientation" +msgstr "Orientación" + +#: ../src/libgdl/gdl-dock-item.c:299 +msgid "Orientation of the docking item" +msgstr "Orientación del elemento acoplable" + +#: ../src/libgdl/gdl-dock-item.c:314 +msgid "Resizable" +msgstr "Redimensionable" + +#: ../src/libgdl/gdl-dock-item.c:315 +msgid "If set, the dock item can be resized when docked in a GtkPanel widget" +msgstr "" +"Si se marca, el elemento acoplable se puede redimensionar si está acoplado a " +"un widget GtkPanel" + +#: ../src/libgdl/gdl-dock-item.c:322 +msgid "Item behavior" +msgstr "Comportamiento del elemento" + +#: ../src/libgdl/gdl-dock-item.c:323 +msgid "" +"General behavior for the dock item (i.e. whether it can float, if it's " +"locked, etc.)" +msgstr "" +"Comportamiento general del elemento acoplable (p.ej. si puede flotar, si " +"está bloqueado, etc.)" + +#: ../src/libgdl/gdl-dock-item.c:331 ../src/libgdl/gdl-dock-master.c:148 +msgid "Locked" +msgstr "Bloqueado" + +#: ../src/libgdl/gdl-dock-item.c:332 +msgid "" +"If set, the dock item cannot be dragged around and it doesn't show a grip" +msgstr "" +"Si se marca, el elemento acoplable no se puede arrastrar y no muestra un " +"agarre" + +#: ../src/libgdl/gdl-dock-item.c:340 +msgid "Preferred width" +msgstr "Anchura preferida" + +#: ../src/libgdl/gdl-dock-item.c:341 +msgid "Preferred width for the dock item" +msgstr "Anchura preferida para el elemento acoplable" + +#: ../src/libgdl/gdl-dock-item.c:347 +msgid "Preferred height" +msgstr "Altura preferida" + +#: ../src/libgdl/gdl-dock-item.c:348 +msgid "Preferred height for the dock item" +msgstr "Altura preferida del elemento acoplable" + +#: ../src/libgdl/gdl-dock-item.c:716 +#, c-format +msgid "" +"You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or " +"some other compound dock object." +msgstr "" +"No se puede añadir un objeto acoplable (%p de tipo %s) a un %s. Utilice un " +"GdlDock u otro objeto acoplable compuesto." + +#: ../src/libgdl/gdl-dock-item.c:723 +#, c-format +msgid "" +"Attempting to add a widget with type %s to a %s, but it can only contain one " +"widget at a time; it already contains a widget of type %s" +msgstr "" +"Intentando añadir un widget de tipo %s a un %s pero solamente puede contener " +"uno a la vez y ya contiene un widget de tipo %s" + +#: ../src/libgdl/gdl-dock-item.c:1474 ../src/libgdl/gdl-dock-item.c:1524 +#, c-format +msgid "Unsupported docking strategy %s in dock object of type %s" +msgstr "Estrategia de acople no soportada, %s en objeto acoplable de tipo %s" + +#. UnLock menuitem +#: ../src/libgdl/gdl-dock-item.c:1632 +msgid "UnLock" +msgstr "Desbloquear" + +#. Hide menuitem. +#: ../src/libgdl/gdl-dock-item.c:1639 +msgid "Hide" +msgstr "Ocultar" + +#. Lock menuitem +#: ../src/libgdl/gdl-dock-item.c:1644 +msgid "Lock" +msgstr "Bloquear" + +#: ../src/libgdl/gdl-dock-item.c:1907 +#, c-format +msgid "Attempt to bind an unbound item %p" +msgstr "Intentado unir un elemento no unible %p" + +#: ../src/libgdl/gdl-dock-master.c:141 ../src/libgdl/gdl-dock.c:184 +msgid "Default title" +msgstr "Título predeterminado" + +#: ../src/libgdl/gdl-dock-master.c:142 +msgid "Default title for newly created floating docks" +msgstr "Título predeterminado para acoples flotantes nuevos" + +#: ../src/libgdl/gdl-dock-master.c:149 +msgid "" +"If is set to 1, all the dock items bound to the master are locked; if it's " +"0, all are unlocked; -1 indicates inconsistency among the items" +msgstr "" +"Si está a 1 se bloquean todos los elementos acoplables unidos al maestro; si " +"está a 0, todos están desbloqueados; -1 indica inconsistencia entre los " +"elementos" + +#: ../src/libgdl/gdl-dock-master.c:157 ../src/libgdl/gdl-switcher.c:737 +msgid "Switcher Style" +msgstr "Estilo del intercambiador" + +#: ../src/libgdl/gdl-dock-master.c:158 ../src/libgdl/gdl-switcher.c:738 +msgid "Switcher buttons style" +msgstr "Estilo de los botones del intercambiador" + +#: ../src/libgdl/gdl-dock-master.c:783 +#, c-format +msgid "" +"master %p: unable to add object %p[%s] to the hash. There already is an " +"item with that name (%p)." +msgstr "" +"maestro %p: no se pueda añadir el objeto %p[%s] al conjunto. Ya hay un " +"elemento con ese nombre (%p)." + +#: ../src/libgdl/gdl-dock-master.c:955 +#, c-format +msgid "" +"The new dock controller %p is automatic. Only manual dock objects should be " +"named controller." +msgstr "" +"El controlador de acople %p es automático. Solamente se debería nombrar " +"controlador a los objetos acoplables manuales." + +#: ../src/libgdl/gdl-dock-notebook.c:132 +#: ../src/ui/dialog/align-and-distribute.cpp:1089 +#: ../src/ui/dialog/document-properties.cpp:161 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1549 +#: ../src/widgets/desktop-widget.cpp:2090 +#: ../share/extensions/empty_page.inx.h:1 +#: ../share/extensions/voronoi2svg.inx.h:10 +msgid "Page" +msgstr "Página" + +#: ../src/libgdl/gdl-dock-notebook.c:133 +msgid "The index of the current page" +msgstr "El índice de la página actual" + +#: ../src/libgdl/gdl-dock-object.c:125 +#: ../src/live_effects/parameter/originalpatharray.cpp:82 +#: ../src/ui/dialog/inkscape-preferences.cpp:1561 +#: ../src/ui/widget/page-sizer.cpp:285 ../src/widgets/gradient-selector.cpp:150 +#: ../src/widgets/sp-xmlview-attr-list.cpp:49 +msgid "Name" +msgstr "Nombre" + +#: ../src/libgdl/gdl-dock-object.c:126 +msgid "Unique name for identifying the dock object" +msgstr "Nombre único para identificar el objeto acoplable" + +#: ../src/libgdl/gdl-dock-object.c:133 +msgid "Long name" +msgstr "Nombre largo" + +#: ../src/libgdl/gdl-dock-object.c:134 +msgid "Human readable name for the dock object" +msgstr "Nombre legible para el objeto acoplable" + +#: ../src/libgdl/gdl-dock-object.c:140 +msgid "Stock Icon" +msgstr "Icono estándar" + +#: ../src/libgdl/gdl-dock-object.c:141 +msgid "Stock icon for the dock object" +msgstr "Icono estándar para el objeto acoplable" + +#: ../src/libgdl/gdl-dock-object.c:147 +msgid "Pixbuf Icon" +msgstr "Icono pixbuf" + +#: ../src/libgdl/gdl-dock-object.c:148 +msgid "Pixbuf icon for the dock object" +msgstr "Icono pixbuf para el objeto acoplable" + +#: ../src/libgdl/gdl-dock-object.c:153 +msgid "Dock master" +msgstr "Maestro de acople" + +#: ../src/libgdl/gdl-dock-object.c:154 +msgid "Dock master this dock object is bound to" +msgstr "Maestro de acople al que está unido este objeto acoplable" + +#: ../src/libgdl/gdl-dock-object.c:463 +#, c-format +msgid "" +"Call to gdl_dock_object_dock in a dock object %p (object type is %s) which " +"hasn't implemented this method" +msgstr "" +"Llamada a gdl_dock_object_dock en un objeto acoplable %p (tipo de objeto es " +"%s) que no ha implementado este método" + +#: ../src/libgdl/gdl-dock-object.c:602 +#, c-format +msgid "" +"Dock operation requested in a non-bound object %p. The application might " +"crash" +msgstr "" +"Se ha solicitado una operación de acople en un objeto no unido %p. La " +"aplicación podría detenerse" + +#: ../src/libgdl/gdl-dock-object.c:609 +#, c-format +msgid "Cannot dock %p to %p because they belong to different masters" +msgstr "No se puede acoplar %p a %p porque pertenecen a diferentes maestros" + +#: ../src/libgdl/gdl-dock-object.c:651 +#, c-format +msgid "" +"Attempt to bind to %p an already bound dock object %p (current master: %p)" +msgstr "" +"Intento de unir a %p un objeto acoplable ya unido %p (maestro actual %p)" + +#: ../src/libgdl/gdl-dock-paned.c:130 ../src/widgets/ruler.cpp:239 +msgid "Position" +msgstr "Posición" + +#: ../src/libgdl/gdl-dock-paned.c:131 +msgid "Position of the divider in pixels" +msgstr "Posición del divisor en píxeles" + +#: ../src/libgdl/gdl-dock-placeholder.c:141 +msgid "Sticky" +msgstr "Pegajoso" + +#: ../src/libgdl/gdl-dock-placeholder.c:142 +msgid "" +"Whether the placeholder will stick to its host or move up the hierarchy when " +"the host is redocked" +msgstr "" +"Indica si el sustituto se pega a su host o si se mueve hacia arriba en la " +"jerarquía cuando se reacopla el host" + +#: ../src/libgdl/gdl-dock-placeholder.c:149 +msgid "Host" +msgstr "Host" + +#: ../src/libgdl/gdl-dock-placeholder.c:150 +msgid "The dock object this placeholder is attached to" +msgstr "El objeto acoplable al que está sujeto este sustituto" + +#: ../src/libgdl/gdl-dock-placeholder.c:157 +msgid "Next placement" +msgstr "Siguiente posición" + +#: ../src/libgdl/gdl-dock-placeholder.c:158 +msgid "" +"The position an item will be docked to our host if a request is made to dock " +"to us" +msgstr "" +"La posición en la que se acoplará un elemento a nuestro host si se realiza " +"una petición para acoplarse a nosotros" + +#: ../src/libgdl/gdl-dock-placeholder.c:168 +msgid "Width for the widget when it's attached to the placeholder" +msgstr "Anchura del widget cuando está sujeto al sustituto" + +#: ../src/libgdl/gdl-dock-placeholder.c:176 +msgid "Height for the widget when it's attached to the placeholder" +msgstr "Altura del widget cuando está sujeto al sustituto" + +#: ../src/libgdl/gdl-dock-placeholder.c:182 +msgid "Floating Toplevel" +msgstr "Nivel superior flotante" + +#: ../src/libgdl/gdl-dock-placeholder.c:183 +msgid "Whether the placeholder is standing in for a floating toplevel dock" +msgstr "" +"Indica si el sustituto sustituye a un acople flotante de nivel superior" + +#: ../src/libgdl/gdl-dock-placeholder.c:189 +msgid "X Coordinate" +msgstr "Coordenada X" + +#: ../src/libgdl/gdl-dock-placeholder.c:190 +msgid "X coordinate for dock when floating" +msgstr "Coordenada X para el acople cuando flota" + +#: ../src/libgdl/gdl-dock-placeholder.c:196 +msgid "Y Coordinate" +msgstr "Coordenada Y" + +#: ../src/libgdl/gdl-dock-placeholder.c:197 +msgid "Y coordinate for dock when floating" +msgstr "Coordenada Y para el acople cuando flota" + +#: ../src/libgdl/gdl-dock-placeholder.c:499 +msgid "Attempt to dock a dock object to an unbound placeholder" +msgstr "Intento de acoplar un objeto acoplable a un sustituto no ligado" + +#: ../src/libgdl/gdl-dock-placeholder.c:611 +#, c-format +msgid "Got a detach signal from an object (%p) who is not our host %p" +msgstr "" +"Se ha recibido una señal de separación de un objeto (%p) que no es nuestro " +"host %p" + +#: ../src/libgdl/gdl-dock-placeholder.c:636 +#, c-format +msgid "" +"Something weird happened while getting the child placement for %p from " +"parent %p" +msgstr "" +"Ha ocurrido algo raro al obtener el lugar del hijo para %p del padre %p" + +#: ../src/libgdl/gdl-dock-tablabel.c:126 +msgid "Dockitem which 'owns' this tablabel" +msgstr "Elemento acoplable que es «dueño» de esta etiqueta de pestaña" + +#: ../src/libgdl/gdl-dock.c:176 ../src/ui/dialog/inkscape-preferences.cpp:682 +#: ../src/ui/dialog/inkscape-preferences.cpp:725 +msgid "Floating" +msgstr "Flotante" + +#: ../src/libgdl/gdl-dock.c:177 +msgid "Whether the dock is floating in its own window" +msgstr "Indica si el acoplable flota en su propia ventana" + +#: ../src/libgdl/gdl-dock.c:185 +msgid "Default title for the newly created floating docks" +msgstr "Título predeterminado para acoplables flotantes nuevos" + +#: ../src/libgdl/gdl-dock.c:192 +msgid "Width for the dock when it's of floating type" +msgstr "Anchura para el acoplable si es de tipo flotante" + +#: ../src/libgdl/gdl-dock.c:200 +msgid "Height for the dock when it's of floating type" +msgstr "Altura para el acoplable si es de tipo flotante" + +#: ../src/libgdl/gdl-dock.c:207 +msgid "Float X" +msgstr "Flotante X" + +#: ../src/libgdl/gdl-dock.c:208 +msgid "X coordinate for a floating dock" +msgstr "Coordenada X de un acoplable flotante" + +#: ../src/libgdl/gdl-dock.c:215 +msgid "Float Y" +msgstr "Flotante X" + +#: ../src/libgdl/gdl-dock.c:216 +msgid "Y coordinate for a floating dock" +msgstr "Coordenada Y de un acoplable flotante" + +#: ../src/libgdl/gdl-dock.c:476 +#, c-format +msgid "Dock #%d" +msgstr "Acoplable nº %d" + +#: ../src/libnrtype/FontFactory.cpp:648 msgid "Ignoring font without family that will crash Pango" msgstr "Se ignorará una familia de tipografías que detendría a Pango." -#: ../src/live_effects/effect.cpp:84 +#: ../src/live_effects/effect.cpp:100 msgid "doEffect stack test" msgstr "test de pila doEffect" -#: ../src/live_effects/effect.cpp:85 +#: ../src/live_effects/effect.cpp:101 msgid "Angle bisector" msgstr "Bisector de ángulo" -#: ../src/live_effects/effect.cpp:86 +#: ../src/live_effects/effect.cpp:102 msgid "Circle (by center and radius)" msgstr "Círculo (por centro y radio)" -#: ../src/live_effects/effect.cpp:87 +#: ../src/live_effects/effect.cpp:103 msgid "Circle by 3 points" msgstr "Círculo por tres puntos" -#: ../src/live_effects/effect.cpp:88 +#: ../src/live_effects/effect.cpp:104 msgid "Dynamic stroke" msgstr "Trazo dinámico" -#: ../src/live_effects/effect.cpp:89 ../share/extensions/extrude.inx.h:1 +#: ../src/live_effects/effect.cpp:105 ../share/extensions/extrude.inx.h:1 msgid "Extrude" msgstr "Extrusionar" -#: ../src/live_effects/effect.cpp:90 +#: ../src/live_effects/effect.cpp:106 msgid "Lattice Deformation" msgstr "Deformación de celosía" -#: ../src/live_effects/effect.cpp:91 +#: ../src/live_effects/effect.cpp:107 msgid "Line Segment" msgstr "Segmento de línea" -#: ../src/live_effects/effect.cpp:93 -#: ../src/live_effects/lpe-measure-line.cpp:44 +#: ../src/live_effects/effect.cpp:109 msgid "Parallel" msgstr "Paralelo" -#: ../src/live_effects/effect.cpp:94 +#: ../src/live_effects/effect.cpp:110 msgid "Path length" msgstr "Longitud de trayecto" -#: ../src/live_effects/effect.cpp:95 +#: ../src/live_effects/effect.cpp:111 msgid "Perpendicular bisector" msgstr "Bisector perpendicular" -#: ../src/live_effects/effect.cpp:96 +#: ../src/live_effects/effect.cpp:112 msgid "Perspective path" msgstr "Trayecto de perspectiva" -#: ../src/live_effects/effect.cpp:97 +#: ../src/live_effects/effect.cpp:113 msgid "Recursive skeleton" msgstr "Esqueleto recursivo" -#: ../src/live_effects/effect.cpp:98 +#: ../src/live_effects/effect.cpp:114 msgid "Tangent to curve" msgstr "Tangente a curva" -#: ../src/live_effects/effect.cpp:99 +#: ../src/live_effects/effect.cpp:115 msgid "Text label" msgstr "Etiqueta de texto" -#: ../src/live_effects/effect.cpp:100 +#: ../src/live_effects/effect.cpp:116 msgid "Fillet/Chamfer" msgstr "Filete/Chaflán" #. 0.46 -#: ../src/live_effects/effect.cpp:103 +#: ../src/live_effects/effect.cpp:119 msgid "Bend" msgstr "Curvar" -#: ../src/live_effects/effect.cpp:104 +#: ../src/live_effects/effect.cpp:120 msgid "Gears" msgstr "Engranajes" -#: ../src/live_effects/effect.cpp:105 +#: ../src/live_effects/effect.cpp:121 msgid "Pattern Along Path" msgstr "Patrón a lo largo de trayecto" #. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG -#: ../src/live_effects/effect.cpp:106 +#: ../src/live_effects/effect.cpp:122 msgid "Stitch Sub-Paths" msgstr "Coser subtrayectos" #. 0.47 -#: ../src/live_effects/effect.cpp:108 +#: ../src/live_effects/effect.cpp:124 msgid "VonKoch" msgstr "VonKoch" -#: ../src/live_effects/effect.cpp:109 +#: ../src/live_effects/effect.cpp:125 msgid "Knot" msgstr "Nudo" -#: ../src/live_effects/effect.cpp:110 +#: ../src/live_effects/effect.cpp:126 msgid "Construct grid" msgstr "Construir rejilla" -#: ../src/live_effects/effect.cpp:111 +#: ../src/live_effects/effect.cpp:127 msgid "Spiro spline" msgstr "Spiro spline" -#: ../src/live_effects/effect.cpp:112 +#: ../src/live_effects/effect.cpp:128 msgid "Envelope Deformation" msgstr "Deformación por envoltura" -#: ../src/live_effects/effect.cpp:113 +#: ../src/live_effects/effect.cpp:129 msgid "Interpolate Sub-Paths" msgstr "Interpolar subtrayectos" -#: ../src/live_effects/effect.cpp:114 +#: ../src/live_effects/effect.cpp:130 msgid "Hatches (rough)" msgstr "Tramados (bruscos)" -#: ../src/live_effects/effect.cpp:115 +#: ../src/live_effects/effect.cpp:131 msgid "Sketch" msgstr "Boceto" -#: ../src/live_effects/effect.cpp:116 +#: ../src/live_effects/effect.cpp:132 msgid "Ruler" msgstr "Regla" #. 0.91 -#: ../src/live_effects/effect.cpp:118 +#: ../src/live_effects/effect.cpp:134 msgid "Power stroke" msgstr "Power stroke" -#: ../src/live_effects/effect.cpp:119 +#: ../src/live_effects/effect.cpp:135 msgid "Clone original path" msgstr "Clonar trayecto original" -#: ../src/live_effects/effect.cpp:122 +#: ../src/live_effects/effect.cpp:138 msgid "Lattice Deformation 2" msgstr "Deformación de celosía 2" -#: ../src/live_effects/effect.cpp:123 +#: ../src/live_effects/effect.cpp:139 msgid "Perspective/Envelope" msgstr "Perspectiva/Sobre" -#: ../src/live_effects/effect.cpp:124 +#: ../src/live_effects/effect.cpp:140 msgid "Interpolate points" msgstr "Interpolar puntos" -#: ../src/live_effects/effect.cpp:125 +#: ../src/live_effects/effect.cpp:141 msgid "Transform by 2 points" msgstr "Transformar por 2 puntos" -#: ../src/live_effects/effect.cpp:126 -#: ../src/live_effects/lpe-show_handles.cpp:27 -#: ../src/widgets/mesh-toolbar.cpp:505 +#: ../src/live_effects/effect.cpp:142 +#: ../src/live_effects/lpe-show_handles.cpp:26 +#: ../src/widgets/mesh-toolbar.cpp:514 msgid "Show handles" msgstr "Mostrar tiradores" -#: ../src/live_effects/effect.cpp:128 ../src/widgets/pencil-toolbar.cpp:115 +#: ../src/live_effects/effect.cpp:144 ../src/widgets/pencil-toolbar.cpp:117 msgid "BSpline" msgstr "BSpline" -#: ../src/live_effects/effect.cpp:129 +#: ../src/live_effects/effect.cpp:145 msgid "Join type" msgstr "Tipo de unión" -#: ../src/live_effects/effect.cpp:130 +#: ../src/live_effects/effect.cpp:146 msgid "Taper stroke" msgstr "Afilar trazo" -#: ../src/live_effects/effect.cpp:131 +#: ../src/live_effects/effect.cpp:147 msgid "Mirror symmetry" msgstr "Simetría de espejo" -#: ../src/live_effects/effect.cpp:132 +#: ../src/live_effects/effect.cpp:148 msgid "Rotate copies" msgstr "Rotar copias" #. Ponyscape -> Inkscape 0.92 -#: ../src/live_effects/effect.cpp:134 +#: ../src/live_effects/effect.cpp:150 msgid "Attach path" msgstr "Añadir trayecto" -#: ../src/live_effects/effect.cpp:135 +#: ../src/live_effects/effect.cpp:151 msgid "Fill between strokes" msgstr "Rellenar entre trazos" -#: ../src/live_effects/effect.cpp:136 ../src/selection-chemistry.cpp:2917 +#: ../src/live_effects/effect.cpp:152 ../src/selection-chemistry.cpp:2963 msgid "Fill between many" msgstr "Rellenar entre muchos" -#: ../src/live_effects/effect.cpp:137 +#: ../src/live_effects/effect.cpp:153 msgid "Ellipse by 5 points" msgstr "Elipse por 5 puntos" -#: ../src/live_effects/effect.cpp:138 +#: ../src/live_effects/effect.cpp:154 msgid "Bounding Box" msgstr "Caja de contorno" -#. 9.93 -#: ../src/live_effects/effect.cpp:140 -msgid "Measure Line" -msgstr "Medir línea" - -#: ../src/live_effects/effect.cpp:351 +#: ../src/live_effects/effect.cpp:362 msgid "Is visible?" msgstr "¿Es visible?" -#: ../src/live_effects/effect.cpp:351 +#: ../src/live_effects/effect.cpp:362 msgid "" "If unchecked, the effect remains applied to the object but is temporarily " "disabled on canvas" @@ -9216,11 +9639,11 @@ msgstr "" "Si se desmarca, el efecto sigue aplicado pero se desactiva temporalmente en " "el lienzo" -#: ../src/live_effects/effect.cpp:378 +#: ../src/live_effects/effect.cpp:387 msgid "No effect" msgstr "Sin efectos" -#: ../src/live_effects/effect.cpp:493 +#: ../src/live_effects/effect.cpp:500 #, c-format msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks" msgstr "" @@ -9230,138 +9653,138 @@ msgstr "" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/live_effects/effect.cpp:768 +#: ../src/live_effects/effect.cpp:783 #, c-format msgid "Editing parameter %s." msgstr "Editando el parámetro %s." -#: ../src/live_effects/effect.cpp:773 +#: ../src/live_effects/effect.cpp:788 msgid "None of the applied path effect's parameters can be edited on-canvas." msgstr "" "Ninguno de los parámetros de efectos de trayecto aplicados se puede editar " "el en lienzo." -#: ../src/live_effects/lpe-attach-path.cpp:21 +#: ../src/live_effects/lpe-attach-path.cpp:29 msgid "Start path:" msgstr "Trayecto de inicio:" -#: ../src/live_effects/lpe-attach-path.cpp:21 +#: ../src/live_effects/lpe-attach-path.cpp:29 msgid "Path to attach to the start of this path" msgstr "Trazo que se añadira al inicio de este trayecto" -#: ../src/live_effects/lpe-attach-path.cpp:22 +#: ../src/live_effects/lpe-attach-path.cpp:30 msgid "Start path position:" msgstr "Posición inicial del trayecto:" -#: ../src/live_effects/lpe-attach-path.cpp:22 +#: ../src/live_effects/lpe-attach-path.cpp:30 msgid "Position to attach path start to" msgstr "Posición a la que se añadira el trayecto inicial" -#: ../src/live_effects/lpe-attach-path.cpp:23 +#: ../src/live_effects/lpe-attach-path.cpp:31 msgid "Start path curve start:" msgstr "Inicio de la curva del trayecto inicial:" -#: ../src/live_effects/lpe-attach-path.cpp:23 -#: ../src/live_effects/lpe-attach-path.cpp:27 +#: ../src/live_effects/lpe-attach-path.cpp:31 +#: ../src/live_effects/lpe-attach-path.cpp:35 msgid "Starting curve" msgstr "Curva inicial" #. , true -#: ../src/live_effects/lpe-attach-path.cpp:24 +#: ../src/live_effects/lpe-attach-path.cpp:32 msgid "Start path curve end:" msgstr "Fin de la curva del trayecto inicial:" -#: ../src/live_effects/lpe-attach-path.cpp:24 -#: ../src/live_effects/lpe-attach-path.cpp:28 +#: ../src/live_effects/lpe-attach-path.cpp:32 +#: ../src/live_effects/lpe-attach-path.cpp:36 msgid "Ending curve" msgstr "Curva final" #. , true -#: ../src/live_effects/lpe-attach-path.cpp:25 +#: ../src/live_effects/lpe-attach-path.cpp:33 msgid "End path:" msgstr "Trayecto final:" -#: ../src/live_effects/lpe-attach-path.cpp:25 +#: ../src/live_effects/lpe-attach-path.cpp:33 msgid "Path to attach to the end of this path" msgstr "Trayecto que se añadirá al final de este trayecto" -#: ../src/live_effects/lpe-attach-path.cpp:26 +#: ../src/live_effects/lpe-attach-path.cpp:34 msgid "End path position:" msgstr "Posición del trayecto final:" -#: ../src/live_effects/lpe-attach-path.cpp:26 +#: ../src/live_effects/lpe-attach-path.cpp:34 msgid "Position to attach path end to" msgstr "Posición a la que se añadirá el trayecto final" -#: ../src/live_effects/lpe-attach-path.cpp:27 +#: ../src/live_effects/lpe-attach-path.cpp:35 msgid "End path curve start:" msgstr "Inicio de la curva del trayecto final:" #. , true -#: ../src/live_effects/lpe-attach-path.cpp:28 +#: ../src/live_effects/lpe-attach-path.cpp:36 msgid "End path curve end:" msgstr "Final de la curva final:" -#: ../src/live_effects/lpe-bendpath.cpp:54 +#: ../src/live_effects/lpe-bendpath.cpp:69 msgid "Bend path:" msgstr "Trayecto de curva:" -#: ../src/live_effects/lpe-bendpath.cpp:54 +#: ../src/live_effects/lpe-bendpath.cpp:69 msgid "Path along which to bend the original path" msgstr "Trayecto a lo largo del cual se curvará el trayecto original" -#: ../src/live_effects/lpe-bendpath.cpp:56 -#: ../src/live_effects/lpe-patternalongpath.cpp:67 -#: ../src/ui/dialog/export.cpp:257 ../src/ui/dialog/transformation.cpp:69 -#: ../src/ui/widget/page-sizer.cpp:220 +#: ../src/live_effects/lpe-bendpath.cpp:71 +#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/ui/dialog/export.cpp:285 ../src/ui/dialog/transformation.cpp:73 +#: ../src/ui/widget/page-sizer.cpp:237 msgid "_Width:" msgstr "A_ncho:" -#: ../src/live_effects/lpe-bendpath.cpp:56 +#: ../src/live_effects/lpe-bendpath.cpp:71 msgid "Width of the path" msgstr "Anchura del trayecto" -#: ../src/live_effects/lpe-bendpath.cpp:57 +#: ../src/live_effects/lpe-bendpath.cpp:72 msgid "W_idth in units of length" msgstr "Anchura en unidades de long_itud" -#: ../src/live_effects/lpe-bendpath.cpp:57 +#: ../src/live_effects/lpe-bendpath.cpp:72 msgid "Scale the width of the path in units of its length" msgstr "Escalar la anchura del trayecto en unidades de su longitud" -#: ../src/live_effects/lpe-bendpath.cpp:58 +#: ../src/live_effects/lpe-bendpath.cpp:73 msgid "_Original path is vertical" msgstr "El trayecto _original es vertical" -#: ../src/live_effects/lpe-bendpath.cpp:58 +#: ../src/live_effects/lpe-bendpath.cpp:73 msgid "Rotates the original 90 degrees, before bending it along the bend path" msgstr "" "Rota el original 90 grados antes de torcerlo a lo largo del trayecto de " "torsión" -#: ../src/live_effects/lpe-bendpath.cpp:163 +#: ../src/live_effects/lpe-bendpath.cpp:178 #: ../src/live_effects/lpe-patternalongpath.cpp:281 msgid "Change the width" msgstr "Cambiar el ancho" -#: ../src/live_effects/lpe-bounding-box.cpp:20 -#: ../src/live_effects/lpe-clone-original.cpp:17 -#: ../src/live_effects/lpe-fill-between-many.cpp:22 -#: ../src/live_effects/lpe-fill-between-strokes.cpp:19 +#: ../src/live_effects/lpe-bounding-box.cpp:24 +#: ../src/live_effects/lpe-clone-original.cpp:18 +#: ../src/live_effects/lpe-fill-between-many.cpp:25 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:23 msgid "Linked path:" msgstr "Trayecto enlazado:" -#: ../src/live_effects/lpe-bounding-box.cpp:20 -#: ../src/live_effects/lpe-clone-original.cpp:17 -#: ../src/live_effects/lpe-fill-between-strokes.cpp:19 +#: ../src/live_effects/lpe-bounding-box.cpp:24 +#: ../src/live_effects/lpe-clone-original.cpp:18 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:23 msgid "Path from which to take the original path data" msgstr "Trayecto del cual se obtendrán los datos del trayecto original" -#: ../src/live_effects/lpe-bounding-box.cpp:21 +#: ../src/live_effects/lpe-bounding-box.cpp:25 msgid "Visual Bounds" msgstr "Límites visuales" -#: ../src/live_effects/lpe-bounding-box.cpp:21 +#: ../src/live_effects/lpe-bounding-box.cpp:25 msgid "Uses the visual bounding box" msgstr "Utiliza la caja de contorno visual" @@ -9374,13 +9797,13 @@ msgid "Change number of steps with CTRL pressed" msgstr "Cambia la cantidad de pasos con CTRL pulsado" #: ../src/live_effects/lpe-bspline.cpp:31 -#: ../src/live_effects/lpe-simplify.cpp:25 -#: ../src/live_effects/lpe-transform_2pts.cpp:41 +#: ../src/live_effects/lpe-simplify.cpp:33 +#: ../src/live_effects/lpe-transform_2pts.cpp:43 msgid "Helper size:" msgstr "Tamaño del ayudante:" #: ../src/live_effects/lpe-bspline.cpp:31 -#: ../src/live_effects/lpe-simplify.cpp:25 +#: ../src/live_effects/lpe-simplify.cpp:33 msgid "Helper size" msgstr "Tamaño del ayudante" @@ -9393,7 +9816,7 @@ msgid "Apply changes if weight > 0%" msgstr "Aplicar cambios si el peso > 0%" #: ../src/live_effects/lpe-bspline.cpp:34 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:51 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 msgid "Change only selected nodes" msgstr "Cambiar solo los nodos seleccionados" @@ -9422,25 +9845,25 @@ msgid "Change to 0 weight" msgstr "Cambiar a peso 0" #: ../src/live_effects/lpe-bspline.cpp:160 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:235 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:257 -#: ../src/live_effects/parameter/parameter.cpp:177 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:240 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:262 +#: ../src/live_effects/parameter/parameter.cpp:170 msgid "Change scalar parameter" msgstr "Cambiar parámetro escalar" -#: ../src/live_effects/lpe-constructgrid.cpp:24 +#: ../src/live_effects/lpe-constructgrid.cpp:27 msgid "Size _X:" msgstr "Tamaño _X:" -#: ../src/live_effects/lpe-constructgrid.cpp:24 +#: ../src/live_effects/lpe-constructgrid.cpp:27 msgid "The size of the grid in X direction." msgstr "El tamaño de la rejilla en la dirección X." -#: ../src/live_effects/lpe-constructgrid.cpp:25 +#: ../src/live_effects/lpe-constructgrid.cpp:28 msgid "Size _Y:" msgstr "Tamaño _Y:" -#: ../src/live_effects/lpe-constructgrid.cpp:25 +#: ../src/live_effects/lpe-constructgrid.cpp:28 msgid "The size of the grid in Y direction." msgstr "El tamaño de la rejilla en la dirección Y." @@ -9449,11 +9872,15 @@ msgid "Origin" msgstr "Origen" #: ../src/live_effects/lpe-copy_rotate.cpp:42 -msgid "Adjust origin of the rotation" +msgid "Origin of the rotation" +msgstr "Origen de la rotación" + +#: ../src/live_effects/lpe-copy_rotate.cpp:42 +msgid "Adjust origin of rotation" msgstr "Ajustar origen de la rotación" #: ../src/live_effects/lpe-copy_rotate.cpp:43 -#: ../src/live_effects/lpe-transform_2pts.cpp:35 +#: ../src/live_effects/lpe-transform_2pts.cpp:37 msgid "Start point" msgstr "Punto inicial" @@ -9466,24 +9893,24 @@ msgid "Adjust starting point to define start angle" msgstr "Ajustar el punto inicial para definir el ángulo de inicio" #: ../src/live_effects/lpe-copy_rotate.cpp:44 -msgid "Starting angle" -msgstr "Ángulo de inicio" +msgid "Starting:" +msgstr "Inicio:" #: ../src/live_effects/lpe-copy_rotate.cpp:44 msgid "Angle of the first copy" msgstr "Ángulo de la primera copia" #: ../src/live_effects/lpe-copy_rotate.cpp:45 -msgid "Rotation angle" -msgstr "Ángulo de rotación" +msgid "Rotation angle:" +msgstr "Ángulo de rotación:" #: ../src/live_effects/lpe-copy_rotate.cpp:45 msgid "Angle between two successive copies" msgstr "Ángulo entre dos copias sucesivas" #: ../src/live_effects/lpe-copy_rotate.cpp:46 -msgid "Number of copies" -msgstr "Número de copias" +msgid "Number of copies:" +msgstr "Número de copias:" #: ../src/live_effects/lpe-copy_rotate.cpp:46 msgid "Number of copies of the original path" @@ -9498,7 +9925,7 @@ msgid "No rotation angle, fixed to 360º" msgstr "Sin ángulo de rotación, fijado a 360º" #: ../src/live_effects/lpe-copy_rotate.cpp:48 -#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 msgid "Fuse paths" msgstr "Fundir trayectos" @@ -9508,27 +9935,27 @@ msgstr "" "Fundir los trayector por la línea de ayuda, utilice \"fill-rule: evenodd\" " "para obtener mejores resultados" -#: ../src/live_effects/lpe-curvestitch.cpp:34 +#: ../src/live_effects/lpe-curvestitch.cpp:41 msgid "Stitch path:" msgstr "Trayecto de cosido:" -#: ../src/live_effects/lpe-curvestitch.cpp:34 +#: ../src/live_effects/lpe-curvestitch.cpp:41 msgid "The path that will be used as stitch." msgstr "El trayecto que se usará como hilo de unión." -#: ../src/live_effects/lpe-curvestitch.cpp:35 +#: ../src/live_effects/lpe-curvestitch.cpp:42 msgid "N_umber of paths:" msgstr "Can_tidad de trayectos:" -#: ../src/live_effects/lpe-curvestitch.cpp:35 +#: ../src/live_effects/lpe-curvestitch.cpp:42 msgid "The number of paths that will be generated." msgstr "El número de trayectos que se generará" -#: ../src/live_effects/lpe-curvestitch.cpp:36 +#: ../src/live_effects/lpe-curvestitch.cpp:43 msgid "Sta_rt edge variance:" msgstr "Va_rianza del borde inicial:" -#: ../src/live_effects/lpe-curvestitch.cpp:36 +#: ../src/live_effects/lpe-curvestitch.cpp:43 msgid "" "The amount of random jitter to move the start points of the stitches inside " "& outside the guide path" @@ -9536,11 +9963,11 @@ msgstr "" "La cantidad de variación aleatoria que se aplicará a los puntos iniciales de " "las puntadas dentro y fuera del trazado guía" -#: ../src/live_effects/lpe-curvestitch.cpp:37 +#: ../src/live_effects/lpe-curvestitch.cpp:44 msgid "Sta_rt spacing variance:" msgstr "Va_rianza del espaciado inicial:" -#: ../src/live_effects/lpe-curvestitch.cpp:37 +#: ../src/live_effects/lpe-curvestitch.cpp:44 msgid "" "The amount of random shifting to move the start points of the stitches back " "& forth along the guide path" @@ -9548,11 +9975,11 @@ msgstr "" "La cantidad de variación aleatoria que se aplicará a los puntos iniciales de " "las puntadas a lo largo del trazado guía" -#: ../src/live_effects/lpe-curvestitch.cpp:38 +#: ../src/live_effects/lpe-curvestitch.cpp:45 msgid "End ed_ge variance:" msgstr "Varian_za del borde final:" -#: ../src/live_effects/lpe-curvestitch.cpp:38 +#: ../src/live_effects/lpe-curvestitch.cpp:45 msgid "" "The amount of randomness that moves the end points of the stitches inside & " "outside the guide path" @@ -9560,11 +9987,11 @@ msgstr "" "La cantidad de aleatoriedad que mueve los puntos finales de las puntadas " "dentro y fuera del trazado guía" -#: ../src/live_effects/lpe-curvestitch.cpp:39 +#: ../src/live_effects/lpe-curvestitch.cpp:46 msgid "End spa_cing variance:" msgstr "Varianza del espa_ciado final:" -#: ../src/live_effects/lpe-curvestitch.cpp:39 +#: ../src/live_effects/lpe-curvestitch.cpp:46 msgid "" "The amount of random shifting to move the end points of the stitches back & " "forth along the guide path" @@ -9572,230 +9999,230 @@ msgstr "" "La cantidad de variación aleatoria que se aplicará para mover los puntos " "finales de las puntadas a lo largo del trazado guía" -#: ../src/live_effects/lpe-curvestitch.cpp:40 +#: ../src/live_effects/lpe-curvestitch.cpp:47 msgid "Scale _width:" msgstr "Escalar an_chura:" -#: ../src/live_effects/lpe-curvestitch.cpp:40 +#: ../src/live_effects/lpe-curvestitch.cpp:47 msgid "Scale the width of the stitch path" msgstr "Escalar la anchura del trayecto de cosido" -#: ../src/live_effects/lpe-curvestitch.cpp:41 +#: ../src/live_effects/lpe-curvestitch.cpp:48 msgid "Scale _width relative to length" msgstr "Escalar la _anchura con relación a la longitud" -#: ../src/live_effects/lpe-curvestitch.cpp:41 +#: ../src/live_effects/lpe-curvestitch.cpp:48 msgid "Scale the width of the stitch path relative to its length" msgstr "Escalar la anchura del trayecto de cosido en relación con su longitud" -#: ../src/live_effects/lpe-ellipse_5pts.cpp:75 +#: ../src/live_effects/lpe-ellipse_5pts.cpp:77 msgid "Five points required for constructing an ellipse" msgstr "Cinco puntos necesarios para crear una elipse" -#: ../src/live_effects/lpe-ellipse_5pts.cpp:160 +#: ../src/live_effects/lpe-ellipse_5pts.cpp:162 msgid "No ellipse found for specified points" msgstr "No se ha encontrado elipse para los cinco puntos indicados" -#: ../src/live_effects/lpe-envelope.cpp:19 +#: ../src/live_effects/lpe-envelope.cpp:31 msgid "Top bend path:" msgstr "Trayecto de torsión superior:" -#: ../src/live_effects/lpe-envelope.cpp:19 +#: ../src/live_effects/lpe-envelope.cpp:31 msgid "Top path along which to bend the original path" msgstr "Trayecto superior a lo largo del cual se torcerá el trayecto original" -#: ../src/live_effects/lpe-envelope.cpp:20 +#: ../src/live_effects/lpe-envelope.cpp:32 msgid "Right bend path:" msgstr "Trayecto de torsión derecho:" -#: ../src/live_effects/lpe-envelope.cpp:20 +#: ../src/live_effects/lpe-envelope.cpp:32 msgid "Right path along which to bend the original path" msgstr "Trayecto derecho a lo largo del cual se torcerá el trayecto original" -#: ../src/live_effects/lpe-envelope.cpp:21 +#: ../src/live_effects/lpe-envelope.cpp:33 msgid "Bottom bend path:" msgstr "Trayecto de torsión inferior:" -#: ../src/live_effects/lpe-envelope.cpp:21 +#: ../src/live_effects/lpe-envelope.cpp:33 msgid "Bottom path along which to bend the original path" msgstr "Trayecto inferior a lo largo del cual se torcerá el trayecto original" -#: ../src/live_effects/lpe-envelope.cpp:22 +#: ../src/live_effects/lpe-envelope.cpp:34 msgid "Left bend path:" msgstr "Trayecto de torsión izquierdo:" -#: ../src/live_effects/lpe-envelope.cpp:22 +#: ../src/live_effects/lpe-envelope.cpp:34 msgid "Left path along which to bend the original path" msgstr "Trayecto izquierdo a lo largo del cual se torcerá el trayecto original" -#: ../src/live_effects/lpe-envelope.cpp:23 +#: ../src/live_effects/lpe-envelope.cpp:35 msgid "_Enable left & right paths" msgstr "A_ctivar trayectos derecho e izquierdo" -#: ../src/live_effects/lpe-envelope.cpp:23 +#: ../src/live_effects/lpe-envelope.cpp:35 msgid "Enable the left and right deformation paths" msgstr "Activar los trayectos de deformación de la derecha y la izquierda" -#: ../src/live_effects/lpe-envelope.cpp:24 +#: ../src/live_effects/lpe-envelope.cpp:36 msgid "_Enable top & bottom paths" msgstr "Activar tray_ectos superior e inferior" -#: ../src/live_effects/lpe-envelope.cpp:24 +#: ../src/live_effects/lpe-envelope.cpp:36 msgid "Enable the top and bottom deformation paths" msgstr "Activar los trayectos de deformación superior e inferior" -#: ../src/live_effects/lpe-extrude.cpp:25 +#: ../src/live_effects/lpe-extrude.cpp:30 msgid "Direction" msgstr "Dirección" -#: ../src/live_effects/lpe-extrude.cpp:25 +#: ../src/live_effects/lpe-extrude.cpp:30 msgid "Defines the direction and magnitude of the extrusion" msgstr "Defina la dirección y magnitud de la extrusión" -#: ../src/live_effects/lpe-fill-between-many.cpp:22 +#: ../src/live_effects/lpe-fill-between-many.cpp:25 msgid "Paths from which to take the original path data" msgstr "Trayectos de los cuales se obtendrán los datos del trayecto original" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:24 msgid "Second path:" msgstr "Segundo trayecto:" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:24 msgid "Second path from which to take the original path data" msgstr "Segundo trayecto del cual se obtendrán los datos del trayecto original" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:25 msgid "Reverse Second" msgstr "Revertir segundo" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:25 msgid "Reverses the second path order" msgstr "Revertir el orden del segundo trayecto" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:36 -#: ../src/widgets/text-toolbar.cpp:1884 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:41 +#: ../src/widgets/text-toolbar.cpp:1905 #: ../share/extensions/render_barcode_qrcode.inx.h:5 msgid "Auto" msgstr "Auto" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:37 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:42 msgid "Force arc" msgstr "Forzar arco" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:38 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:43 msgid "Force bezier" msgstr "Forzar bezier" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:48 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:53 msgid "Fillet point" msgstr "Punto de filete" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:49 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 msgid "Hide knots" msgstr "Ocultar nudos" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:50 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:55 msgid "Ignore 0 radius knots" msgstr "Ignorar nudos de radio 0" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:52 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:57 msgid "Flexible radius size (%)" msgstr "Tamaño de radio flexible (%)" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:53 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:58 msgid "Use knots distance instead radius" msgstr "Usar la distancia de los nudos en lugar del radio" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:59 msgid "Method:" msgstr "Método:" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:59 msgid "Fillets methods" msgstr "Método de filetes" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:55 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:60 msgid "Radius (unit or %):" msgstr "Radio (unidad o %):" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:55 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:60 msgid "Radius, in unit or %" msgstr "Radio, en unidades o %" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:61 msgid "Chamfer steps:" msgstr "Pasos del chaflán:" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:61 msgid "Chamfer steps" msgstr "Pasos del chaflán" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:58 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:63 msgid "Helper size with direction:" msgstr "Tamaño del ayudante con dirección:" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:58 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:63 msgid "Helper size with direction" msgstr "Tamaño del ayudante con dirección" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:98 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:103 msgid "IMPORTANT! New version soon..." msgstr "¡ATENCIÓN! Próximamente nueva versión... " -#: ../src/live_effects/lpe-fillet-chamfer.cpp:102 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:107 msgid "Not compatible. Convert to path after." msgstr "No es compatible. Convertir a trayecto después." -#: ../src/live_effects/lpe-fillet-chamfer.cpp:160 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:62 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:165 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:72 msgid "Fillet" msgstr "Filete" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:164 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:64 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:169 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:74 msgid "Inverse fillet" msgstr "Filete inverso" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:169 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:66 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:174 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:76 msgid "Chamfer" msgstr "Chaflán" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:173 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:68 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:178 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:78 msgid "Inverse chamfer" msgstr "Chaflán inverso" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:242 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:247 msgid "Convert to fillet" msgstr "Convertir en filete" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:249 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:273 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:254 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:278 msgid "Convert to inverse fillet" msgstr "Convertir en filete inverso" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:265 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:270 msgid "Convert to chamfer" msgstr "Convertir en chaflán" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:285 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:290 msgid "Knots and helper paths refreshed" msgstr "Nudos y trayectos de ayuda refrescados" -#: ../src/live_effects/lpe-gears.cpp:208 +#: ../src/live_effects/lpe-gears.cpp:214 msgid "_Teeth:" msgstr "Dien_tes:" -#: ../src/live_effects/lpe-gears.cpp:208 +#: ../src/live_effects/lpe-gears.cpp:214 msgid "The number of teeth" msgstr "Número de dientes" -#: ../src/live_effects/lpe-gears.cpp:209 +#: ../src/live_effects/lpe-gears.cpp:215 msgid "_Phi:" msgstr "_Phi:" -#: ../src/live_effects/lpe-gears.cpp:209 +#: ../src/live_effects/lpe-gears.cpp:215 msgid "" "Tooth pressure angle (typically 20-25 deg). The ratio of teeth not in " "contact." @@ -9803,35 +10230,35 @@ msgstr "" "Ángulo de presión de dientes (normalmente entre 20-25º). El ratio de dientes " "que no están en contacto." -#: ../src/live_effects/lpe-gears.cpp:210 +#: ../src/live_effects/lpe-gears.cpp:216 msgid "Min Radius:" msgstr "Radio mín:" -#: ../src/live_effects/lpe-gears.cpp:210 -msgid "Minimun radius, low balues can slow" +#: ../src/live_effects/lpe-gears.cpp:216 +msgid "Minimum radius, low values can be slow" msgstr "Radio mínimo, valores bajos pueden ralentizar" -#: ../src/live_effects/lpe-interpolate.cpp:27 +#: ../src/live_effects/lpe-interpolate.cpp:30 msgid "Trajectory:" msgstr "Trayectoria:" -#: ../src/live_effects/lpe-interpolate.cpp:27 +#: ../src/live_effects/lpe-interpolate.cpp:30 msgid "Path along which intermediate steps are created." msgstr "Trayecto a lo largo del cual crearán pasos intermedios." -#: ../src/live_effects/lpe-interpolate.cpp:28 +#: ../src/live_effects/lpe-interpolate.cpp:31 msgid "Steps_:" msgstr "Pasos_:" -#: ../src/live_effects/lpe-interpolate.cpp:28 +#: ../src/live_effects/lpe-interpolate.cpp:31 msgid "Determines the number of steps from start to end path." msgstr "Determina el número de pasos desde el inicio hasta el fin." -#: ../src/live_effects/lpe-interpolate.cpp:29 +#: ../src/live_effects/lpe-interpolate.cpp:32 msgid "E_quidistant spacing" msgstr "Espaciado e_quidistante" -#: ../src/live_effects/lpe-interpolate.cpp:29 +#: ../src/live_effects/lpe-interpolate.cpp:32 msgid "" "If true, the spacing between intermediates is constant along the length of " "the path. If false, the distance depends on the location of the nodes of the " @@ -9841,33 +10268,33 @@ msgstr "" "largo del trayecto. Si no, la distancia depende de la localización de los " "nodos de la ruta de la trayectoria." -#: ../src/live_effects/lpe-interpolate_points.cpp:25 -#: ../src/live_effects/lpe-powerstroke.cpp:123 +#: ../src/live_effects/lpe-interpolate_points.cpp:26 +#: ../src/live_effects/lpe-powerstroke.cpp:135 msgid "CubicBezierFit" msgstr "CubicBezierFit" -#: ../src/live_effects/lpe-interpolate_points.cpp:26 -#: ../src/live_effects/lpe-powerstroke.cpp:124 +#: ../src/live_effects/lpe-interpolate_points.cpp:27 +#: ../src/live_effects/lpe-powerstroke.cpp:136 msgid "CubicBezierJohan" msgstr "CubicBezierJohan" -#: ../src/live_effects/lpe-interpolate_points.cpp:27 -#: ../src/live_effects/lpe-powerstroke.cpp:125 +#: ../src/live_effects/lpe-interpolate_points.cpp:28 +#: ../src/live_effects/lpe-powerstroke.cpp:137 msgid "SpiroInterpolator" msgstr "SpiroInterpolator" -#: ../src/live_effects/lpe-interpolate_points.cpp:28 -#: ../src/live_effects/lpe-powerstroke.cpp:126 +#: ../src/live_effects/lpe-interpolate_points.cpp:29 +#: ../src/live_effects/lpe-powerstroke.cpp:138 msgid "Centripetal Catmull-Rom" msgstr "Catmull-Rom centrípeto" -#: ../src/live_effects/lpe-interpolate_points.cpp:36 -#: ../src/live_effects/lpe-powerstroke.cpp:168 +#: ../src/live_effects/lpe-interpolate_points.cpp:37 +#: ../src/live_effects/lpe-powerstroke.cpp:180 msgid "Interpolator type:" msgstr "Tipo de interpolador:" -#: ../src/live_effects/lpe-interpolate_points.cpp:37 -#: ../src/live_effects/lpe-powerstroke.cpp:168 +#: ../src/live_effects/lpe-interpolate_points.cpp:38 +#: ../src/live_effects/lpe-powerstroke.cpp:180 msgid "" "Determines which kind of interpolator will be used to interpolate between " "stroke width along the path" @@ -9875,434 +10302,434 @@ msgstr "" "Determina qué tipo de interpolador se usará para interpolar entre el ancho " "del trazo a lo largo del trayecto" -#: ../src/live_effects/lpe-jointype.cpp:29 -#: ../src/live_effects/lpe-powerstroke.cpp:155 -#: ../src/live_effects/lpe-taperstroke.cpp:57 +#: ../src/live_effects/lpe-jointype.cpp:31 +#: ../src/live_effects/lpe-powerstroke.cpp:167 +#: ../src/live_effects/lpe-taperstroke.cpp:63 msgid "Beveled" msgstr "Biselado" -#: ../src/live_effects/lpe-jointype.cpp:30 -#: ../src/live_effects/lpe-jointype.cpp:41 -#: ../src/live_effects/lpe-powerstroke.cpp:156 -#: ../src/live_effects/lpe-taperstroke.cpp:58 -#: ../src/widgets/star-toolbar.cpp:532 +#: ../src/live_effects/lpe-jointype.cpp:32 +#: ../src/live_effects/lpe-jointype.cpp:43 +#: ../src/live_effects/lpe-powerstroke.cpp:168 +#: ../src/live_effects/lpe-taperstroke.cpp:64 +#: ../src/widgets/star-toolbar.cpp:534 msgid "Rounded" msgstr "Redondeado" -#: ../src/live_effects/lpe-jointype.cpp:31 -#: ../src/live_effects/lpe-powerstroke.cpp:159 -#: ../src/live_effects/lpe-taperstroke.cpp:59 +#: ../src/live_effects/lpe-jointype.cpp:33 +#: ../src/live_effects/lpe-powerstroke.cpp:171 +#: ../src/live_effects/lpe-taperstroke.cpp:65 msgid "Miter" msgstr "Inglete" -#: ../src/live_effects/lpe-jointype.cpp:32 +#: ../src/live_effects/lpe-jointype.cpp:34 msgid "Miter Clip" msgstr "Clip de inglete" #. {LINEJOIN_EXTRP_MITER, N_("Extrapolated"), "extrapolated"}, // disabled because doesn't work well -#: ../src/live_effects/lpe-jointype.cpp:33 -#: ../src/live_effects/lpe-powerstroke.cpp:158 +#: ../src/live_effects/lpe-jointype.cpp:35 +#: ../src/live_effects/lpe-powerstroke.cpp:170 msgid "Extrapolated arc" msgstr "Arco extrapolado" -#: ../src/live_effects/lpe-jointype.cpp:34 +#: ../src/live_effects/lpe-jointype.cpp:36 msgid "Extrapolated arc Alt1" msgstr "Arco extrapolado Alt1" -#: ../src/live_effects/lpe-jointype.cpp:35 +#: ../src/live_effects/lpe-jointype.cpp:37 msgid "Extrapolated arc Alt2" msgstr "Arco extrapolado Alt2" -#: ../src/live_effects/lpe-jointype.cpp:36 +#: ../src/live_effects/lpe-jointype.cpp:38 msgid "Extrapolated arc Alt3" msgstr "Arco extrapolado Alt3" -#: ../src/live_effects/lpe-jointype.cpp:40 -#: ../src/live_effects/lpe-powerstroke.cpp:138 +#: ../src/live_effects/lpe-jointype.cpp:42 +#: ../src/live_effects/lpe-powerstroke.cpp:150 msgid "Butt" msgstr "Extremo" -#: ../src/live_effects/lpe-jointype.cpp:42 -#: ../src/live_effects/lpe-powerstroke.cpp:139 +#: ../src/live_effects/lpe-jointype.cpp:44 +#: ../src/live_effects/lpe-powerstroke.cpp:151 msgid "Square" msgstr "Cuadrado" -#: ../src/live_effects/lpe-jointype.cpp:43 -#: ../src/live_effects/lpe-powerstroke.cpp:141 +#: ../src/live_effects/lpe-jointype.cpp:45 +#: ../src/live_effects/lpe-powerstroke.cpp:153 msgid "Peak" msgstr "Pico" -#: ../src/live_effects/lpe-jointype.cpp:52 +#: ../src/live_effects/lpe-jointype.cpp:54 msgid "Thickness of the stroke" msgstr "El grosor del trazo" -#: ../src/live_effects/lpe-jointype.cpp:53 +#: ../src/live_effects/lpe-jointype.cpp:55 msgid "Line cap" msgstr "Tope de línea" -#: ../src/live_effects/lpe-jointype.cpp:53 +#: ../src/live_effects/lpe-jointype.cpp:55 msgid "The end shape of the stroke" msgstr "La forma final del trazo" #. Join type #. TRANSLATORS: The line join style specifies the shape to be used at the #. corners of paths. It can be "miter", "round" or "bevel". -#: ../src/live_effects/lpe-jointype.cpp:54 -#: ../src/live_effects/lpe-powerstroke.cpp:171 -#: ../src/widgets/stroke-style.cpp:261 +#: ../src/live_effects/lpe-jointype.cpp:56 +#: ../src/live_effects/lpe-powerstroke.cpp:183 +#: ../src/widgets/stroke-style.cpp:288 msgid "Join:" msgstr "Unión:" -#: ../src/live_effects/lpe-jointype.cpp:54 -#: ../src/live_effects/lpe-powerstroke.cpp:171 +#: ../src/live_effects/lpe-jointype.cpp:56 +#: ../src/live_effects/lpe-powerstroke.cpp:183 msgid "Determines the shape of the path's corners" msgstr "Determina la forma de las esquinas del trayecto" #. start_lean(_("Start path lean"), _("Start path lean"), "start_lean", &wr, this, 0.), #. end_lean(_("End path lean"), _("End path lean"), "end_lean", &wr, this, 0.), -#: ../src/live_effects/lpe-jointype.cpp:57 -#: ../src/live_effects/lpe-powerstroke.cpp:172 -#: ../src/live_effects/lpe-taperstroke.cpp:72 +#: ../src/live_effects/lpe-jointype.cpp:59 +#: ../src/live_effects/lpe-powerstroke.cpp:184 +#: ../src/live_effects/lpe-taperstroke.cpp:78 msgid "Miter limit:" msgstr "Límite de inglete:" -#: ../src/live_effects/lpe-jointype.cpp:57 +#: ../src/live_effects/lpe-jointype.cpp:59 msgid "Maximum length of the miter join (in units of stroke width)" msgstr "Longitud máxima del inglete (en unidades de ancho de trazo)" -#: ../src/live_effects/lpe-jointype.cpp:58 +#: ../src/live_effects/lpe-jointype.cpp:60 msgid "Force miter" msgstr "Forzar inglete" -#: ../src/live_effects/lpe-jointype.cpp:58 +#: ../src/live_effects/lpe-jointype.cpp:60 msgid "Overrides the miter limit and forces a join." msgstr "Sobrescribe el línite del inglete y fuerza una unión." #. initialise your parameters here: -#: ../src/live_effects/lpe-knot.cpp:346 +#: ../src/live_effects/lpe-knot.cpp:351 msgid "Fi_xed width:" msgstr "Anchura fi:ja:" -#: ../src/live_effects/lpe-knot.cpp:346 +#: ../src/live_effects/lpe-knot.cpp:351 msgid "Size of hidden region of lower string" msgstr "Tamaño de la región oculta de la cadena inferior" -#: ../src/live_effects/lpe-knot.cpp:347 +#: ../src/live_effects/lpe-knot.cpp:352 msgid "_In units of stroke width" msgstr "En un_idades de ancho de trazo" -#: ../src/live_effects/lpe-knot.cpp:347 +#: ../src/live_effects/lpe-knot.cpp:352 msgid "Consider 'Interruption width' as a ratio of stroke width" msgstr "Considerar «Anchura de hueco» como ratio de anchura de trazo" -#: ../src/live_effects/lpe-knot.cpp:348 +#: ../src/live_effects/lpe-knot.cpp:353 msgid "St_roke width" msgstr "Ancho de t_razo" -#: ../src/live_effects/lpe-knot.cpp:348 +#: ../src/live_effects/lpe-knot.cpp:353 msgid "Add the stroke width to the interruption size" msgstr "Añadir la anchura del trazo al tamaño del hueco" -#: ../src/live_effects/lpe-knot.cpp:349 +#: ../src/live_effects/lpe-knot.cpp:354 msgid "_Crossing path stroke width" msgstr "An_cho de trazo del trayecto cruzado" -#: ../src/live_effects/lpe-knot.cpp:349 +#: ../src/live_effects/lpe-knot.cpp:354 msgid "Add crossed stroke width to the interruption size" msgstr "Añadir la anchura del trazo cruzado al tamaño del hueco" -#: ../src/live_effects/lpe-knot.cpp:350 +#: ../src/live_effects/lpe-knot.cpp:355 msgid "S_witcher size:" msgstr "Ta_maño del intercambiador:" -#: ../src/live_effects/lpe-knot.cpp:350 +#: ../src/live_effects/lpe-knot.cpp:355 msgid "Orientation indicator/switcher size" msgstr "Indicador de orientación/tamaño de intercambiador" -#: ../src/live_effects/lpe-knot.cpp:351 +#: ../src/live_effects/lpe-knot.cpp:356 msgid "Crossing Signs" msgstr "Signos de cruce" -#: ../src/live_effects/lpe-knot.cpp:351 +#: ../src/live_effects/lpe-knot.cpp:356 msgid "Crossings signs" msgstr "Signos de cruce" -#: ../src/live_effects/lpe-knot.cpp:622 +#: ../src/live_effects/lpe-knot.cpp:627 msgid "Drag to select a crossing, click to flip it" msgstr "Arrastre para seleccionar un cruce, pulse para invertirlo" #. / @todo Is this the right verb? -#: ../src/live_effects/lpe-knot.cpp:660 +#: ../src/live_effects/lpe-knot.cpp:665 msgid "Change knot crossing" msgstr "Cambiar cruce de nudos" -#: ../src/live_effects/lpe-lattice2.cpp:36 +#: ../src/live_effects/lpe-lattice2.cpp:47 #: ../src/live_effects/lpe-perspective-envelope.cpp:45 msgid "Mirror movements in horizontal" msgstr "Reflejar los movimientos horizontalmente" -#: ../src/live_effects/lpe-lattice2.cpp:37 +#: ../src/live_effects/lpe-lattice2.cpp:48 #: ../src/live_effects/lpe-perspective-envelope.cpp:46 msgid "Mirror movements in vertical" msgstr "Reflejar los movimientos verticalmente" -#: ../src/live_effects/lpe-lattice2.cpp:38 +#: ../src/live_effects/lpe-lattice2.cpp:49 msgid "Update while moving knots (maybe slow)" msgstr "Actualizar mientras se mueven los nudos (más lento)" -#: ../src/live_effects/lpe-lattice2.cpp:39 +#: ../src/live_effects/lpe-lattice2.cpp:50 msgid "Control 0:" msgstr "Control 0:" -#: ../src/live_effects/lpe-lattice2.cpp:39 +#: ../src/live_effects/lpe-lattice2.cpp:50 msgid "Control 0 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 0 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:40 +#: ../src/live_effects/lpe-lattice2.cpp:51 msgid "Control 1:" msgstr "Control 1:" -#: ../src/live_effects/lpe-lattice2.cpp:40 +#: ../src/live_effects/lpe-lattice2.cpp:51 msgid "Control 1 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 1 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:41 +#: ../src/live_effects/lpe-lattice2.cpp:52 msgid "Control 2:" msgstr "Control 2:" -#: ../src/live_effects/lpe-lattice2.cpp:41 +#: ../src/live_effects/lpe-lattice2.cpp:52 msgid "Control 2 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 2 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:42 +#: ../src/live_effects/lpe-lattice2.cpp:53 msgid "Control 3:" msgstr "Control 3:" -#: ../src/live_effects/lpe-lattice2.cpp:42 +#: ../src/live_effects/lpe-lattice2.cpp:53 msgid "Control 3 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 3 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:43 +#: ../src/live_effects/lpe-lattice2.cpp:54 msgid "Control 4:" msgstr "Control 4:" -#: ../src/live_effects/lpe-lattice2.cpp:43 +#: ../src/live_effects/lpe-lattice2.cpp:54 msgid "Control 4 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 4 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:44 +#: ../src/live_effects/lpe-lattice2.cpp:55 msgid "Control 5:" msgstr "Control 5:" -#: ../src/live_effects/lpe-lattice2.cpp:44 +#: ../src/live_effects/lpe-lattice2.cpp:55 msgid "Control 5 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 5 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:45 +#: ../src/live_effects/lpe-lattice2.cpp:56 msgid "Control 6:" msgstr "Control 6:" -#: ../src/live_effects/lpe-lattice2.cpp:45 +#: ../src/live_effects/lpe-lattice2.cpp:56 msgid "Control 6 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 6 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:46 +#: ../src/live_effects/lpe-lattice2.cpp:57 msgid "Control 7:" msgstr "Control 7:" -#: ../src/live_effects/lpe-lattice2.cpp:46 +#: ../src/live_effects/lpe-lattice2.cpp:57 msgid "Control 7 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 7 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:47 +#: ../src/live_effects/lpe-lattice2.cpp:58 msgid "Control 8x9:" msgstr "Control 8x9:" -#: ../src/live_effects/lpe-lattice2.cpp:47 +#: ../src/live_effects/lpe-lattice2.cpp:58 msgid "" "Control 8x9 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 8x9 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:48 +#: ../src/live_effects/lpe-lattice2.cpp:59 msgid "Control 10x11:" msgstr "Control 10x11:" -#: ../src/live_effects/lpe-lattice2.cpp:48 +#: ../src/live_effects/lpe-lattice2.cpp:59 msgid "" "Control 10x11 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 10x10 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:49 +#: ../src/live_effects/lpe-lattice2.cpp:60 msgid "Control 12:" msgstr "Control 12:" -#: ../src/live_effects/lpe-lattice2.cpp:49 +#: ../src/live_effects/lpe-lattice2.cpp:60 msgid "Control 12 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 12 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:50 +#: ../src/live_effects/lpe-lattice2.cpp:61 msgid "Control 13:" msgstr "Control 13:" -#: ../src/live_effects/lpe-lattice2.cpp:50 +#: ../src/live_effects/lpe-lattice2.cpp:61 msgid "Control 13 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 13 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:51 +#: ../src/live_effects/lpe-lattice2.cpp:62 msgid "Control 14:" msgstr "Control 14:" -#: ../src/live_effects/lpe-lattice2.cpp:51 +#: ../src/live_effects/lpe-lattice2.cpp:62 msgid "Control 14 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 14 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:52 +#: ../src/live_effects/lpe-lattice2.cpp:63 msgid "Control 15:" msgstr "Control 15:" -#: ../src/live_effects/lpe-lattice2.cpp:52 +#: ../src/live_effects/lpe-lattice2.cpp:63 msgid "Control 15 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 15 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:53 +#: ../src/live_effects/lpe-lattice2.cpp:64 msgid "Control 16:" msgstr "Control 16:" -#: ../src/live_effects/lpe-lattice2.cpp:53 +#: ../src/live_effects/lpe-lattice2.cpp:64 msgid "Control 16 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 16 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:54 +#: ../src/live_effects/lpe-lattice2.cpp:65 msgid "Control 17:" msgstr "Control 17:" -#: ../src/live_effects/lpe-lattice2.cpp:54 +#: ../src/live_effects/lpe-lattice2.cpp:65 msgid "Control 17 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 17 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:55 +#: ../src/live_effects/lpe-lattice2.cpp:66 msgid "Control 18:" msgstr "Control 18:" -#: ../src/live_effects/lpe-lattice2.cpp:55 +#: ../src/live_effects/lpe-lattice2.cpp:66 msgid "Control 18 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 18 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:56 +#: ../src/live_effects/lpe-lattice2.cpp:67 msgid "Control 19:" msgstr "Control 19:" -#: ../src/live_effects/lpe-lattice2.cpp:56 +#: ../src/live_effects/lpe-lattice2.cpp:67 msgid "Control 19 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 19 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo largo " "de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:57 +#: ../src/live_effects/lpe-lattice2.cpp:68 msgid "Control 20x21:" msgstr "Control 20x21:" -#: ../src/live_effects/lpe-lattice2.cpp:57 +#: ../src/live_effects/lpe-lattice2.cpp:68 msgid "" "Control 20x21 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 20x21 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:58 +#: ../src/live_effects/lpe-lattice2.cpp:69 msgid "Control 22x23:" msgstr "Control 22x23:" -#: ../src/live_effects/lpe-lattice2.cpp:58 +#: ../src/live_effects/lpe-lattice2.cpp:69 msgid "" "Control 22x23 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 22x23 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:59 +#: ../src/live_effects/lpe-lattice2.cpp:70 msgid "Control 24x26:" msgstr "Control 24x26:" -#: ../src/live_effects/lpe-lattice2.cpp:59 +#: ../src/live_effects/lpe-lattice2.cpp:70 msgid "" "Control 24x26 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 24x26 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:60 +#: ../src/live_effects/lpe-lattice2.cpp:71 msgid "Control 25x27:" msgstr "Control 25x27:" -#: ../src/live_effects/lpe-lattice2.cpp:60 +#: ../src/live_effects/lpe-lattice2.cpp:71 msgid "" "Control 25x27 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 25x27 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:61 +#: ../src/live_effects/lpe-lattice2.cpp:72 msgid "Control 28x30:" msgstr "Control 28x30:" -#: ../src/live_effects/lpe-lattice2.cpp:61 +#: ../src/live_effects/lpe-lattice2.cpp:72 msgid "" "Control 28x30 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 28x30 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:62 +#: ../src/live_effects/lpe-lattice2.cpp:73 msgid "Control 29x31:" msgstr "Control 29x31:" -#: ../src/live_effects/lpe-lattice2.cpp:62 +#: ../src/live_effects/lpe-lattice2.cpp:73 msgid "" "Control 29x31 - Ctrl+Alt+Click: reset, Ctrl: move along axes" msgstr "" "Control 29x31 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a lo " "largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:63 +#: ../src/live_effects/lpe-lattice2.cpp:74 msgid "Control 32x33x34x35:" msgstr "Control 32x33x34x35:" -#: ../src/live_effects/lpe-lattice2.cpp:63 +#: ../src/live_effects/lpe-lattice2.cpp:74 msgid "" "Control 32x33x34x35 - Ctrl+Alt+Click: reset, Ctrl: move along " "axes" @@ -10310,357 +10737,145 @@ msgstr "" "Control 32x33x34x35 - Ctrl+Alt+Click: reiniciar, Ctrl: mover a " "lo largo de los ejes" -#: ../src/live_effects/lpe-lattice2.cpp:228 +#: ../src/live_effects/lpe-lattice2.cpp:239 msgid "Reset grid" msgstr "Reiniciar rejilla" -#: ../src/live_effects/lpe-lattice2.cpp:260 -#: ../src/live_effects/lpe-lattice2.cpp:275 +#: ../src/live_effects/lpe-lattice2.cpp:271 +#: ../src/live_effects/lpe-lattice2.cpp:286 msgid "Show Points" msgstr "Mostrar puntos" -#: ../src/live_effects/lpe-lattice2.cpp:273 +#: ../src/live_effects/lpe-lattice2.cpp:284 msgid "Hide Points" msgstr "Ocultar puntos" -#: ../src/live_effects/lpe-measure-line.cpp:42 -#: ../src/widgets/text-toolbar.cpp:1835 -msgid "Horizontal" -msgstr "Horizontal" - -#: ../src/live_effects/lpe-measure-line.cpp:43 -msgid "Vertical" -msgstr "Vertical" - -#: ../src/live_effects/lpe-measure-line.cpp:50 -msgid "Unit*" -msgstr "Unidad*" - -#: ../src/live_effects/lpe-measure-line.cpp:50 -#: ../src/live_effects/lpe-ruler.cpp:39 ../src/widgets/gimp/ruler.cpp:193 -msgid "Unit" -msgstr "Unidad" - -#: ../src/live_effects/lpe-measure-line.cpp:51 -msgid "Font*" -msgstr "Tipografía*" - -#: ../src/live_effects/lpe-measure-line.cpp:51 -msgid "Font Selector" -msgstr "Selector de tipografía" - -#: ../src/live_effects/lpe-measure-line.cpp:52 -#: ../src/widgets/gimp/ruler.cpp:183 -#: ../share/extensions/gcodetools_graffiti.inx.h:9 -#: ../share/extensions/gcodetools_orientation_points.inx.h:2 -msgid "Orientation" -msgstr "Orientación" - -#: ../src/live_effects/lpe-measure-line.cpp:52 -msgid "Orientation method" -msgstr "Método de orientación" - -#: ../src/live_effects/lpe-measure-line.cpp:53 -msgid "Curve on origin" -msgstr "Curva en origen" - -#: ../src/live_effects/lpe-measure-line.cpp:53 -msgid "Curve on origin, set 0 to start/end" -msgstr "Curva en origen, use 0 para inicio/fin" - -#: ../src/live_effects/lpe-measure-line.cpp:54 -msgid "Precision*" -msgstr "Precisión*" - -#: ../src/live_effects/lpe-measure-line.cpp:55 -msgid "Positon*" -msgstr "Positón*" - -#: ../src/live_effects/lpe-measure-line.cpp:55 -msgid "Positon" -msgstr "Positón" - -#: ../src/live_effects/lpe-measure-line.cpp:56 -msgid "Text top/bottom*" -msgstr "Texto arriba/abajo*" - -#: ../src/live_effects/lpe-measure-line.cpp:56 -msgid "Text top/bottom" -msgstr "Texto arriba/abajo" - -#: ../src/live_effects/lpe-measure-line.cpp:57 -msgid "Text right/left*" -msgstr "Texto derecha/izquierda*" - -#: ../src/live_effects/lpe-measure-line.cpp:57 -msgid "Text right/left" -msgstr "Texto derecha/izquierda" - -#: ../src/live_effects/lpe-measure-line.cpp:58 -msgid "Helpline distance*" -msgstr "Distancia de línea auxiliar*" - -#: ../src/live_effects/lpe-measure-line.cpp:58 -msgid "Helpline distance" -msgstr "Distancia de línea auxiliar" - -#: ../src/live_effects/lpe-measure-line.cpp:59 -msgid "Helpline overlap*" -msgstr "Solapamiento de línea auxiliar*" - -#: ../src/live_effects/lpe-measure-line.cpp:59 -msgid "Helpline overlap" -msgstr "Solapamiento de línea auxiliar" - -#: ../src/live_effects/lpe-measure-line.cpp:60 -msgid "Scale*" -msgstr "Escala*" - -#: ../src/live_effects/lpe-measure-line.cpp:60 -msgid "Scaling factor" -msgstr "Factor de escala" - -#: ../src/live_effects/lpe-measure-line.cpp:61 -msgid "Format*" -msgstr "Formato*" - -#: ../src/live_effects/lpe-measure-line.cpp:61 -msgid "Format the number ex:{measure} {unit}, return to save" -msgstr "Formatear el número, p.ej.{medida} {unidad}, \"Enter\" para guardar" - -#: ../src/live_effects/lpe-measure-line.cpp:63 -msgid "Arrows outside" -msgstr "Flechas fuera" - -#: ../src/live_effects/lpe-measure-line.cpp:64 -msgid "Flip side*" -msgstr "Envés*" - -#: ../src/live_effects/lpe-measure-line.cpp:64 -msgid "Flip side" -msgstr "Envés" - -#: ../src/live_effects/lpe-measure-line.cpp:65 -msgid "Scale sensitive*" -msgstr "Sensible a escala*" - -#: ../src/live_effects/lpe-measure-line.cpp:65 -msgid "Costrained scale sensitive to transformed containers" -msgstr "Escala constreñida, sensible a contenedores transformados" - -#: ../src/live_effects/lpe-measure-line.cpp:66 -msgid "Local Number Format*" -msgstr "Formato local de número*" - -#: ../src/live_effects/lpe-measure-line.cpp:66 -msgid "Local number format" -msgstr "Formato local de número" - -#: ../src/live_effects/lpe-measure-line.cpp:67 -msgid "Line Group 0.5*" -msgstr "Grupo de líneas 0.5*" - -#: ../src/live_effects/lpe-measure-line.cpp:67 -msgid "Line Group 0.5, from 0.7" -msgstr "Grupo de líneas 0.5, de 0.7" - -#: ../src/live_effects/lpe-measure-line.cpp:68 -msgid "Rotate Anotation*" -msgstr "Rotar anotación*" - -#: ../src/live_effects/lpe-measure-line.cpp:68 -msgid "Rotate Anotation" -msgstr "Rotar anotación" - -#: ../src/live_effects/lpe-measure-line.cpp:69 -msgid "Hide if label over*" -msgstr "Ocultar si etiqueta por encima de*" - -#: ../src/live_effects/lpe-measure-line.cpp:69 -msgid "Hide DIN line if label over" -msgstr "Ocultar línea DIN si la etiqueta por encima de" - -#: ../src/live_effects/lpe-measure-line.cpp:70 -msgid "CSS DIN line*" -msgstr "Línea DIN CSS*" - -#: ../src/live_effects/lpe-measure-line.cpp:70 -msgid "Override CSS to DIN line, return to save, empty to reset to DIM" -msgstr "" -"Sobrescribir CSS a línea DIN, enter para guardar, vacío para volver a DIM" - -#: ../src/live_effects/lpe-measure-line.cpp:71 -msgid "CSS helpers*" -msgstr "Ayudantes CSS*" - -#: ../src/live_effects/lpe-measure-line.cpp:71 -msgid "Override CSS to helper lines, return to save, empty to reset to DIM" -msgstr "" -"Sobrescribir CSS a líneas ayudantes, enter para guardar, vacío para volver a " -"DIM" - -#: ../src/live_effects/lpe-measure-line.cpp:72 -msgid "CSS anotation*" -msgstr "Anotación CSS*" - -#: ../src/live_effects/lpe-measure-line.cpp:72 -msgid "Override CSS to anotation text, return to save, empty to reset to DIM" -msgstr "" -"Sobrescribir CSS a texto de anotación, enter para guardar, vacío para volver " -"a DIM" - -#: ../src/live_effects/lpe-measure-line.cpp:73 -msgid "CSS arrows*" -msgstr "Flechas CSS*" - -#: ../src/live_effects/lpe-measure-line.cpp:73 -msgid "Override CSS to arrows, return to save, empty to reset DIM" -msgstr "" -"Sobrescribir CSS a flechas, enter para guardar, vacío para volver a DIM" - -#: ../src/live_effects/lpe-measure-line.cpp:349 -msgid "Non Uniform Scale" -msgstr "Escala no uniforme" - -#: ../src/live_effects/lpe-measure-line.cpp:777 -msgid "Save '*' as default" -msgstr "Guardar «*» como predeterminado" - -#: ../src/live_effects/lpe-measure-line.cpp:780 -#: ../src/live_effects/lpe-measure-line.cpp:796 -msgid "Show DIM CSS style override" -msgstr "Mostrar sobrescritura DIM estilo CSS" - -#: ../src/live_effects/lpe-measure-line.cpp:794 -msgid "Hide DIM CSS style override" -msgstr "Ocultar sobrescritura DIM estilo CSS" - -#: ../src/live_effects/lpe-mirror_symmetry.cpp:31 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:30 msgid "Vertical Page Center" msgstr "Centro de página vertical" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:32 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:31 msgid "Horizontal Page Center" msgstr "Centro de página horizontal" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:33 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:32 msgid "Free from reflection line" msgstr "Liberar de la línea de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:34 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:33 msgid "X from middle knot" msgstr "X desde el nudo central" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:35 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:34 msgid "Y from middle knot" msgstr "Y desde el nudo central" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:41 #: ../src/widgets/spray-toolbar.cpp:388 ../src/widgets/tweak-toolbar.cpp:253 msgid "Mode" msgstr "Modo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:41 msgid "Symmetry move mode" msgstr "Modo movimiento simétrico" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 -msgid "Discard original path" -msgstr "Eliminar trayecto original" +#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 +msgid "Discard original path?" +msgstr "¿Eliminar trayecto original?" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 msgid "Check this to only keep the mirrored part of the path" msgstr "Marque esto para mantener solamente la parte reflejada del trayecto" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 msgid "Fuse original and the reflection into a single path" msgstr "Fundir el original y el reflejo en un solo trayecto" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 msgid "Opposite fuse" msgstr "Fusión opuesta" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 msgid "Picks the other side of the mirror as the original" msgstr "Elije el otro lado del reflejo como original" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 msgid "Start mirror line" msgstr "Inicio de línea de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 msgid "Adjust start of mirroring" msgstr "Ajustar inicio de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 msgid "End mirror line" msgstr "Fin de línea de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 msgid "Adjust end of mirroring" msgstr "Ajustar fin de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:48 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 msgid "Center mirror line" msgstr "Centrar línea de reflejo" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:48 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 msgid "Adjust center of mirroring" msgstr "Ajustar centro de reflejo" -#: ../src/live_effects/lpe-patternalongpath.cpp:56 +#: ../src/live_effects/lpe-patternalongpath.cpp:54 #: ../share/extensions/pathalongpath.inx.h:10 msgid "Single" msgstr "Sencillo" -#: ../src/live_effects/lpe-patternalongpath.cpp:57 +#: ../src/live_effects/lpe-patternalongpath.cpp:55 #: ../share/extensions/pathalongpath.inx.h:11 msgid "Single, stretched" msgstr "Sencillo, estirado" -#: ../src/live_effects/lpe-patternalongpath.cpp:58 +#: ../src/live_effects/lpe-patternalongpath.cpp:56 #: ../share/extensions/pathalongpath.inx.h:12 msgid "Repeated" msgstr "Repetido" -#: ../src/live_effects/lpe-patternalongpath.cpp:59 +#: ../src/live_effects/lpe-patternalongpath.cpp:57 #: ../share/extensions/pathalongpath.inx.h:13 msgid "Repeated, stretched" msgstr "Repetido, estirado" -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-patternalongpath.cpp:63 msgid "Pattern source:" msgstr "Origen del patrón:" -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-patternalongpath.cpp:63 msgid "Path to put along the skeleton path" msgstr "Trazo que se pondrá en el trayecto esqueleto" -#: ../src/live_effects/lpe-patternalongpath.cpp:67 +#: ../src/live_effects/lpe-patternalongpath.cpp:65 msgid "Width of the pattern" msgstr "Anchura del patrón" -#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/live_effects/lpe-patternalongpath.cpp:66 msgid "Pattern copies:" msgstr "Copias del patrón:" -#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/live_effects/lpe-patternalongpath.cpp:66 msgid "How many pattern copies to place along the skeleton path" msgstr "Cuántas copias del patrón se colocarán en el trayecto esqueleto" -#: ../src/live_effects/lpe-patternalongpath.cpp:70 +#: ../src/live_effects/lpe-patternalongpath.cpp:68 msgid "Wid_th in units of length" msgstr "Anchura en unidades de longi_tud" -#: ../src/live_effects/lpe-patternalongpath.cpp:71 +#: ../src/live_effects/lpe-patternalongpath.cpp:69 msgid "Scale the width of the pattern in units of its length" msgstr "Escalar la anchura del patrón en unidades de su longitud" -#: ../src/live_effects/lpe-patternalongpath.cpp:73 +#: ../src/live_effects/lpe-patternalongpath.cpp:71 msgid "Spa_cing:" msgstr "Espa_ciado:" -#: ../src/live_effects/lpe-patternalongpath.cpp:75 +#: ../src/live_effects/lpe-patternalongpath.cpp:73 #, no-c-format msgid "" "Space between copies of the pattern. Negative values allowed, but are " @@ -10669,19 +10884,19 @@ msgstr "" "Espacio entre las copias del patrón. Se permiten valores negativos, pero " "limitados al -90% del ancho del patrón." -#: ../src/live_effects/lpe-patternalongpath.cpp:77 +#: ../src/live_effects/lpe-patternalongpath.cpp:75 msgid "No_rmal offset:" msgstr "Desvío no_rmal:" -#: ../src/live_effects/lpe-patternalongpath.cpp:78 +#: ../src/live_effects/lpe-patternalongpath.cpp:76 msgid "Tan_gential offset:" msgstr "Desvío tan_gencial:" -#: ../src/live_effects/lpe-patternalongpath.cpp:79 +#: ../src/live_effects/lpe-patternalongpath.cpp:77 msgid "Offsets in _unit of pattern size" msgstr "Desvíos en _unidades del tamaño del patrón:" -#: ../src/live_effects/lpe-patternalongpath.cpp:80 +#: ../src/live_effects/lpe-patternalongpath.cpp:78 msgid "" "Spacing, tangential and normal offset are expressed as a ratio of width/" "height" @@ -10689,19 +10904,19 @@ msgstr "" "El espaciado y los desvíos tangencial y normal se expresan como un ratio de " "ancho/alto" -#: ../src/live_effects/lpe-patternalongpath.cpp:82 +#: ../src/live_effects/lpe-patternalongpath.cpp:80 msgid "Pattern is _vertical" msgstr "El patrón es _vertical" -#: ../src/live_effects/lpe-patternalongpath.cpp:82 +#: ../src/live_effects/lpe-patternalongpath.cpp:80 msgid "Rotate pattern 90 deg before applying" msgstr "Rotar el patrón 90 grados antes de aplicar" -#: ../src/live_effects/lpe-patternalongpath.cpp:84 +#: ../src/live_effects/lpe-patternalongpath.cpp:82 msgid "_Fuse nearby ends:" msgstr "_Fundir finales cercanos:" -#: ../src/live_effects/lpe-patternalongpath.cpp:84 +#: ../src/live_effects/lpe-patternalongpath.cpp:82 msgid "Fuse ends closer than this number. 0 means don't fuse." msgstr "Fundir tramos más cercanos que este número. 0 significa no fundir." @@ -10770,43 +10985,43 @@ msgstr "" msgid "Handles:" msgstr "Tiradores:" -#: ../src/live_effects/lpe-powerstroke.cpp:121 +#: ../src/live_effects/lpe-powerstroke.cpp:133 msgid "CubicBezierSmooth" msgstr "CubicBezierSmooth" -#: ../src/live_effects/lpe-powerstroke.cpp:140 +#: ../src/live_effects/lpe-powerstroke.cpp:152 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:13 msgid "Round" msgstr "Redondo" -#: ../src/live_effects/lpe-powerstroke.cpp:142 +#: ../src/live_effects/lpe-powerstroke.cpp:154 msgid "Zero width" msgstr "Ancho cero" -#: ../src/live_effects/lpe-powerstroke.cpp:160 -#: ../src/widgets/pencil-toolbar.cpp:109 +#: ../src/live_effects/lpe-powerstroke.cpp:172 +#: ../src/widgets/pencil-toolbar.cpp:111 msgid "Spiro" msgstr "Spiro" -#: ../src/live_effects/lpe-powerstroke.cpp:166 +#: ../src/live_effects/lpe-powerstroke.cpp:178 msgid "Offset points" msgstr "Puntos de desvío" -#: ../src/live_effects/lpe-powerstroke.cpp:167 +#: ../src/live_effects/lpe-powerstroke.cpp:179 msgid "Sort points" msgstr "Ordenar puntos" -#: ../src/live_effects/lpe-powerstroke.cpp:167 +#: ../src/live_effects/lpe-powerstroke.cpp:179 msgid "Sort offset points according to their time value along the curve" msgstr "" "Ordenar los puntos de desvío según su valor temporal a lo largo de la curva" -#: ../src/live_effects/lpe-powerstroke.cpp:169 +#: ../src/live_effects/lpe-powerstroke.cpp:181 #: ../share/extensions/fractalize.inx.h:3 msgid "Smoothness:" msgstr "Suavidad:" -#: ../src/live_effects/lpe-powerstroke.cpp:169 +#: ../src/live_effects/lpe-powerstroke.cpp:181 msgid "" "Sets the smoothness for the CubicBezierJohan interpolator; 0 = linear " "interpolation, 1 = smooth" @@ -10814,49 +11029,49 @@ msgstr "" "Fija la suavidad del interpolador CubicBezierJohan; 0 = interpolación " "lineal, 1 = suave" -#: ../src/live_effects/lpe-powerstroke.cpp:170 +#: ../src/live_effects/lpe-powerstroke.cpp:182 msgid "Start cap:" msgstr "Tope inicial:" -#: ../src/live_effects/lpe-powerstroke.cpp:170 +#: ../src/live_effects/lpe-powerstroke.cpp:182 msgid "Determines the shape of the path's start" msgstr "Determina la forma del inicio del trayecto" -#: ../src/live_effects/lpe-powerstroke.cpp:172 -#: ../src/widgets/stroke-style.cpp:301 +#: ../src/live_effects/lpe-powerstroke.cpp:184 +#: ../src/widgets/stroke-style.cpp:335 msgid "Maximum length of the miter (in units of stroke width)" msgstr "Longitud máxima del inglete (en unidades de ancho de trazo)" -#: ../src/live_effects/lpe-powerstroke.cpp:173 +#: ../src/live_effects/lpe-powerstroke.cpp:185 msgid "End cap:" msgstr "Tope final:" -#: ../src/live_effects/lpe-powerstroke.cpp:173 +#: ../src/live_effects/lpe-powerstroke.cpp:185 msgid "Determines the shape of the path's end" msgstr "Determina la forma del final del trayecto" -#: ../src/live_effects/lpe-rough-hatches.cpp:218 +#: ../src/live_effects/lpe-rough-hatches.cpp:225 msgid "Frequency randomness:" msgstr "Aleatoriedad de la frecuencia:" -#: ../src/live_effects/lpe-rough-hatches.cpp:218 +#: ../src/live_effects/lpe-rough-hatches.cpp:225 msgid "Variation of distance between hatches, in %." msgstr "Variación de la distancia entre tramados, en %." -#: ../src/live_effects/lpe-rough-hatches.cpp:219 +#: ../src/live_effects/lpe-rough-hatches.cpp:226 msgid "Growth:" msgstr "Crecimiento:" -#: ../src/live_effects/lpe-rough-hatches.cpp:219 +#: ../src/live_effects/lpe-rough-hatches.cpp:226 msgid "Growth of distance between hatches." msgstr "Crecimiento de distancia entre tramados." #. FIXME: top/bottom names are inverted in the UI/svg and in the code!! -#: ../src/live_effects/lpe-rough-hatches.cpp:221 +#: ../src/live_effects/lpe-rough-hatches.cpp:228 msgid "Half-turns smoothness: 1st side, in:" msgstr "Suavidad de vueltas: 1er lado, dentro:" -#: ../src/live_effects/lpe-rough-hatches.cpp:221 +#: ../src/live_effects/lpe-rough-hatches.cpp:228 msgid "" "Set smoothness/sharpness of path when reaching a 'bottom' half-turn. " "0=sharp, 1=default" @@ -10864,11 +11079,11 @@ msgstr "" "Fijar la suavidad/dureza de un trayecto al llegar a una curva «inferior». " "0=agudo, 1=predet." -#: ../src/live_effects/lpe-rough-hatches.cpp:222 +#: ../src/live_effects/lpe-rough-hatches.cpp:229 msgid "1st side, out:" msgstr "1er lado, fuera:" -#: ../src/live_effects/lpe-rough-hatches.cpp:222 +#: ../src/live_effects/lpe-rough-hatches.cpp:229 msgid "" "Set smoothness/sharpness of path when leaving a 'bottom' half-turn. 0=sharp, " "1=default" @@ -10876,11 +11091,11 @@ msgstr "" "Fijar la suavidad/dureza de un trayecto al salir de una vuelta «inferior». " "0=agudo, 1=predet." -#: ../src/live_effects/lpe-rough-hatches.cpp:223 +#: ../src/live_effects/lpe-rough-hatches.cpp:230 msgid "2nd side, in:" msgstr "2º lado, dentro:" -#: ../src/live_effects/lpe-rough-hatches.cpp:223 +#: ../src/live_effects/lpe-rough-hatches.cpp:230 msgid "" "Set smoothness/sharpness of path when reaching a 'top' half-turn. 0=sharp, " "1=default" @@ -10888,11 +11103,11 @@ msgstr "" "Fijar la suavidad/dureza de un trayecto al llegar a una vuelta «superior». " "0=agudo, 1=predet." -#: ../src/live_effects/lpe-rough-hatches.cpp:224 +#: ../src/live_effects/lpe-rough-hatches.cpp:231 msgid "2nd side, out:" msgstr "2º lado, fuera:" -#: ../src/live_effects/lpe-rough-hatches.cpp:224 +#: ../src/live_effects/lpe-rough-hatches.cpp:231 msgid "" "Set smoothness/sharpness of path when leaving a 'top' half-turn. 0=sharp, " "1=default" @@ -10900,33 +11115,33 @@ msgstr "" "Fijar la suavidad/dureza de un trayecto al salir de una vuelta «superior». " "0=agudo, 1=predet." -#: ../src/live_effects/lpe-rough-hatches.cpp:225 +#: ../src/live_effects/lpe-rough-hatches.cpp:232 msgid "Magnitude jitter: 1st side:" msgstr "Variación de magnitud: 1er lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:225 +#: ../src/live_effects/lpe-rough-hatches.cpp:232 msgid "Randomly moves 'bottom' half-turns to produce magnitude variations." msgstr "" "Mueve las vueltas «inferiores» de forma aleatoria para producir variaciones " "de magnitud" -#: ../src/live_effects/lpe-rough-hatches.cpp:226 -#: ../src/live_effects/lpe-rough-hatches.cpp:228 -#: ../src/live_effects/lpe-rough-hatches.cpp:230 +#: ../src/live_effects/lpe-rough-hatches.cpp:233 +#: ../src/live_effects/lpe-rough-hatches.cpp:235 +#: ../src/live_effects/lpe-rough-hatches.cpp:237 msgid "2nd side:" msgstr "2º lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:226 +#: ../src/live_effects/lpe-rough-hatches.cpp:233 msgid "Randomly moves 'top' half-turns to produce magnitude variations." msgstr "" "Mueve las vueltas «superiores» aleatoriamente para producir variaciones de " "magnitud." -#: ../src/live_effects/lpe-rough-hatches.cpp:227 +#: ../src/live_effects/lpe-rough-hatches.cpp:234 msgid "Parallelism jitter: 1st side:" msgstr "Variación de paralelismo: 1er lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:227 +#: ../src/live_effects/lpe-rough-hatches.cpp:234 msgid "" "Add direction randomness by moving 'bottom' half-turns tangentially to the " "boundary." @@ -10934,7 +11149,7 @@ msgstr "" "Añade aleatoriedad de dirección al mover las vueltas «inferiores» " "tangencialmente hacia el límite." -#: ../src/live_effects/lpe-rough-hatches.cpp:228 +#: ../src/live_effects/lpe-rough-hatches.cpp:235 msgid "" "Add direction randomness by randomly moving 'top' half-turns tangentially to " "the boundary." @@ -10942,82 +11157,82 @@ msgstr "" "Añade aleatoriedad de dirección al mover las vueltas «superiores» " "tangencialmente hacia el límite." -#: ../src/live_effects/lpe-rough-hatches.cpp:229 +#: ../src/live_effects/lpe-rough-hatches.cpp:236 msgid "Variance: 1st side:" msgstr "Variación: 1er lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:229 +#: ../src/live_effects/lpe-rough-hatches.cpp:236 msgid "Randomness of 'bottom' half-turns smoothness" msgstr "Aleatoriedad de las suavidad de las vueltas «inferiores»" -#: ../src/live_effects/lpe-rough-hatches.cpp:230 +#: ../src/live_effects/lpe-rough-hatches.cpp:237 msgid "Randomness of 'top' half-turns smoothness" msgstr "Aleatoriedad de las suavidad de las vueltas «superiores»" #. -#: ../src/live_effects/lpe-rough-hatches.cpp:232 +#: ../src/live_effects/lpe-rough-hatches.cpp:239 msgid "Generate thick/thin path" msgstr "Generar un trayecto grueso/fino" -#: ../src/live_effects/lpe-rough-hatches.cpp:232 +#: ../src/live_effects/lpe-rough-hatches.cpp:239 msgid "Simulate a stroke of varying width" msgstr "Simular un trazo de anchura variable" -#: ../src/live_effects/lpe-rough-hatches.cpp:233 +#: ../src/live_effects/lpe-rough-hatches.cpp:240 msgid "Bend hatches" msgstr "Torcer tramados" -#: ../src/live_effects/lpe-rough-hatches.cpp:233 +#: ../src/live_effects/lpe-rough-hatches.cpp:240 msgid "Add a global bend to the hatches (slower)" msgstr "Añadir una torsión global a los tramados (más lento)" -#: ../src/live_effects/lpe-rough-hatches.cpp:234 +#: ../src/live_effects/lpe-rough-hatches.cpp:241 msgid "Thickness: at 1st side:" msgstr "Grosor: en el primer lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:234 +#: ../src/live_effects/lpe-rough-hatches.cpp:241 msgid "Width at 'bottom' half-turns" msgstr "Grosor en las vueltas «inferiores»" -#: ../src/live_effects/lpe-rough-hatches.cpp:235 +#: ../src/live_effects/lpe-rough-hatches.cpp:242 msgid "At 2nd side:" msgstr "En el 2º lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:235 +#: ../src/live_effects/lpe-rough-hatches.cpp:242 msgid "Width at 'top' half-turns" msgstr "Grosor en vueltas «superiores»" #. -#: ../src/live_effects/lpe-rough-hatches.cpp:237 +#: ../src/live_effects/lpe-rough-hatches.cpp:244 msgid "From 2nd to 1st side:" msgstr "Del 2º al primer lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:237 +#: ../src/live_effects/lpe-rough-hatches.cpp:244 msgid "Width from 'top' to 'bottom'" msgstr "Anchura de «arriba» a «abajo»" -#: ../src/live_effects/lpe-rough-hatches.cpp:238 +#: ../src/live_effects/lpe-rough-hatches.cpp:245 msgid "From 1st to 2nd side:" msgstr "Del primer al 2º lado:" -#: ../src/live_effects/lpe-rough-hatches.cpp:238 +#: ../src/live_effects/lpe-rough-hatches.cpp:245 msgid "Width from 'bottom' to 'top'" msgstr "Anchura de «abajo» a «arriba»" -#: ../src/live_effects/lpe-rough-hatches.cpp:240 +#: ../src/live_effects/lpe-rough-hatches.cpp:247 msgid "Hatches width and dir" msgstr "Anchura y dirección de los tramados" -#: ../src/live_effects/lpe-rough-hatches.cpp:240 +#: ../src/live_effects/lpe-rough-hatches.cpp:247 msgid "Defines hatches frequency and direction" msgstr "Definde la frecuencia y la dirección del tramado" #. -#: ../src/live_effects/lpe-rough-hatches.cpp:242 +#: ../src/live_effects/lpe-rough-hatches.cpp:249 msgid "Global bending" msgstr "Torsión global" -#: ../src/live_effects/lpe-rough-hatches.cpp:242 +#: ../src/live_effects/lpe-rough-hatches.cpp:249 msgid "" "Relative position to a reference point defines global bending direction and " "amount" @@ -11025,224 +11240,224 @@ msgstr "" "La posición relativa al punto de referencia define la dirección y cantidad " "de torsión global" -#: ../src/live_effects/lpe-roughen.cpp:29 ../share/extensions/addnodes.inx.h:4 +#: ../src/live_effects/lpe-roughen.cpp:32 ../share/extensions/addnodes.inx.h:4 msgid "By number of segments" msgstr "Por número de segmentos" -#: ../src/live_effects/lpe-roughen.cpp:30 +#: ../src/live_effects/lpe-roughen.cpp:33 msgid "By max. segment size" msgstr "Por longitud máx. de segmento" -#: ../src/live_effects/lpe-roughen.cpp:36 +#: ../src/live_effects/lpe-roughen.cpp:39 msgid "Along nodes" msgstr "A lo largo de los nodos" -#: ../src/live_effects/lpe-roughen.cpp:37 +#: ../src/live_effects/lpe-roughen.cpp:40 msgid "Rand" msgstr "Al azar" -#: ../src/live_effects/lpe-roughen.cpp:38 +#: ../src/live_effects/lpe-roughen.cpp:41 msgid "Retract" msgstr "Retraer" #. initialise your parameters here: -#: ../src/live_effects/lpe-roughen.cpp:47 +#: ../src/live_effects/lpe-roughen.cpp:50 msgid "Method" msgstr "Método" -#: ../src/live_effects/lpe-roughen.cpp:47 +#: ../src/live_effects/lpe-roughen.cpp:50 msgid "Division method" msgstr "Método de división" -#: ../src/live_effects/lpe-roughen.cpp:49 +#: ../src/live_effects/lpe-roughen.cpp:52 msgid "Max. segment size" msgstr "Por longitud máx. de segmento" -#: ../src/live_effects/lpe-roughen.cpp:51 +#: ../src/live_effects/lpe-roughen.cpp:54 msgid "Number of segments" msgstr "Número de segmentos" -#: ../src/live_effects/lpe-roughen.cpp:53 +#: ../src/live_effects/lpe-roughen.cpp:56 msgid "Max. displacement in X" msgstr "Desplazamiento máximo en X" -#: ../src/live_effects/lpe-roughen.cpp:55 +#: ../src/live_effects/lpe-roughen.cpp:58 msgid "Max. displacement in Y" msgstr "Desplazamiento máximo en Y" -#: ../src/live_effects/lpe-roughen.cpp:57 +#: ../src/live_effects/lpe-roughen.cpp:60 msgid "Global randomize" msgstr "Aleatorizar globalmente" -#: ../src/live_effects/lpe-roughen.cpp:59 +#: ../src/live_effects/lpe-roughen.cpp:62 msgid "Handles" msgstr "Tiradores" -#: ../src/live_effects/lpe-roughen.cpp:59 +#: ../src/live_effects/lpe-roughen.cpp:62 msgid "Handles options" msgstr "Opciones de tiradores" -#: ../src/live_effects/lpe-roughen.cpp:61 +#: ../src/live_effects/lpe-roughen.cpp:64 #: ../share/extensions/jitternodes.inx.h:5 msgid "Shift nodes" msgstr "Mover nodos" -#: ../src/live_effects/lpe-roughen.cpp:63 +#: ../src/live_effects/lpe-roughen.cpp:66 msgid "Fixed displacement" msgstr "Desplazamiento fijo" -#: ../src/live_effects/lpe-roughen.cpp:63 +#: ../src/live_effects/lpe-roughen.cpp:66 msgid "Fixed displacement, 1/3 of segment length" msgstr "Desplazamiento fijo, 1/3 de longitud de segmento" -#: ../src/live_effects/lpe-roughen.cpp:65 +#: ../src/live_effects/lpe-roughen.cpp:68 msgid "Spray Tool friendly" msgstr "Compatible con la herramienta Spray" -#: ../src/live_effects/lpe-roughen.cpp:65 +#: ../src/live_effects/lpe-roughen.cpp:68 msgid "For use with spray tool in copy mode" msgstr "Para usar on la herramienta Spray en modo copia" -#: ../src/live_effects/lpe-roughen.cpp:119 +#: ../src/live_effects/lpe-roughen.cpp:122 msgid "Add nodes Subdivide each segment" msgstr "Añadir nodos subdividir cada segmento" -#: ../src/live_effects/lpe-roughen.cpp:128 +#: ../src/live_effects/lpe-roughen.cpp:131 msgid "Jitter nodes Move nodes/handles" msgstr "Agitar nodos Mover nodos/tiradores" -#: ../src/live_effects/lpe-roughen.cpp:137 +#: ../src/live_effects/lpe-roughen.cpp:140 msgid "Extra roughen Add a extra layer of rough" msgstr "Extra áspero Añadir una capa extra de aspereza" -#: ../src/live_effects/lpe-roughen.cpp:146 +#: ../src/live_effects/lpe-roughen.cpp:149 msgid "Options Modify options to rough" msgstr "Opciones Modificar opciones de aspereza" -#: ../src/live_effects/lpe-ruler.cpp:22 ../share/extensions/measure.inx.h:27 +#: ../src/live_effects/lpe-ruler.cpp:25 ../share/extensions/measure.inx.h:27 #: ../share/extensions/restack.inx.h:16 #: ../share/extensions/text_extract.inx.h:8 #: ../share/extensions/text_merge.inx.h:8 msgid "Left" msgstr "Izquierda" -#: ../src/live_effects/lpe-ruler.cpp:23 ../share/extensions/measure.inx.h:29 +#: ../src/live_effects/lpe-ruler.cpp:26 ../share/extensions/measure.inx.h:29 #: ../share/extensions/restack.inx.h:18 #: ../share/extensions/text_extract.inx.h:10 #: ../share/extensions/text_merge.inx.h:10 msgid "Right" msgstr "Derecha" -#: ../src/live_effects/lpe-ruler.cpp:24 ../src/live_effects/lpe-ruler.cpp:32 +#: ../src/live_effects/lpe-ruler.cpp:27 ../src/live_effects/lpe-ruler.cpp:35 msgid "Both" msgstr "Ambos" -#: ../src/live_effects/lpe-ruler.cpp:29 +#: ../src/live_effects/lpe-ruler.cpp:32 msgctxt "Border mark" msgid "None" msgstr "Ninguno" -#: ../src/live_effects/lpe-ruler.cpp:30 -#: ../src/live_effects/lpe-transform_2pts.cpp:35 -#: ../src/ui/tools/measure-tool.cpp:749 ../src/widgets/arc-toolbar.cpp:318 +#: ../src/live_effects/lpe-ruler.cpp:33 +#: ../src/live_effects/lpe-transform_2pts.cpp:37 +#: ../src/ui/tools/measure-tool.cpp:755 ../src/widgets/arc-toolbar.cpp:319 msgid "Start" msgstr "Inicio" -#: ../src/live_effects/lpe-ruler.cpp:31 -#: ../src/live_effects/lpe-transform_2pts.cpp:36 -#: ../src/ui/tools/measure-tool.cpp:750 ../src/widgets/arc-toolbar.cpp:331 +#: ../src/live_effects/lpe-ruler.cpp:34 +#: ../src/live_effects/lpe-transform_2pts.cpp:38 +#: ../src/ui/tools/measure-tool.cpp:756 ../src/widgets/arc-toolbar.cpp:332 msgid "End" msgstr "Fin" -#: ../src/live_effects/lpe-ruler.cpp:38 +#: ../src/live_effects/lpe-ruler.cpp:41 msgid "_Mark distance:" msgstr "Distancia de _marca" -#: ../src/live_effects/lpe-ruler.cpp:38 +#: ../src/live_effects/lpe-ruler.cpp:41 msgid "Distance between successive ruler marks" msgstr "Distancia entre las marcas de regla sucesivas" -#: ../src/live_effects/lpe-ruler.cpp:39 ../share/extensions/foldablebox.inx.h:7 +#: ../src/live_effects/lpe-ruler.cpp:42 ../share/extensions/foldablebox.inx.h:7 #: ../share/extensions/interp_att_g.inx.h:9 #: ../share/extensions/layout_nup.inx.h:3 #: ../share/extensions/printing_marks.inx.h:11 msgid "Unit:" msgstr "Unidad:" -#: ../src/live_effects/lpe-ruler.cpp:40 +#: ../src/live_effects/lpe-ruler.cpp:42 ../src/widgets/ruler.cpp:211 +msgid "Unit" +msgstr "Unidad" + +#: ../src/live_effects/lpe-ruler.cpp:43 msgid "Ma_jor length:" msgstr "Longitud p_rincipal:" -#: ../src/live_effects/lpe-ruler.cpp:40 +#: ../src/live_effects/lpe-ruler.cpp:43 msgid "Length of major ruler marks" msgstr "Longitud de las marcas de regla mayores" -#: ../src/live_effects/lpe-ruler.cpp:41 +#: ../src/live_effects/lpe-ruler.cpp:44 msgid "Mino_r length:" msgstr "Longitud meno_r:" -#: ../src/live_effects/lpe-ruler.cpp:41 +#: ../src/live_effects/lpe-ruler.cpp:44 msgid "Length of minor ruler marks" msgstr "Longitud de las marcas de regla menores" -#: ../src/live_effects/lpe-ruler.cpp:42 +#: ../src/live_effects/lpe-ruler.cpp:45 msgid "Major steps_:" msgstr "Divi_sión principal:" -#: ../src/live_effects/lpe-ruler.cpp:42 +#: ../src/live_effects/lpe-ruler.cpp:45 msgid "Draw a major mark every ... steps" msgstr "Dibujar una marca principal cada ... pasos" -#: ../src/live_effects/lpe-ruler.cpp:43 +#: ../src/live_effects/lpe-ruler.cpp:46 msgid "Shift marks _by:" msgstr "Desplazamiento de _marcas:" -#: ../src/live_effects/lpe-ruler.cpp:43 +#: ../src/live_effects/lpe-ruler.cpp:46 msgid "Shift marks by this many steps" msgstr "Desplazar las marcas esta cantidad de pasos" -#: ../src/live_effects/lpe-ruler.cpp:44 +#: ../src/live_effects/lpe-ruler.cpp:47 msgid "Mark direction:" msgstr "Dirección de marcas:" -#: ../src/live_effects/lpe-ruler.cpp:44 +#: ../src/live_effects/lpe-ruler.cpp:47 msgid "Direction of marks (when viewing along the path from start to end)" msgstr "" "Dirección de las marcas (al verlas a lo largo del trayecto del inicio al fin)" -#: ../src/live_effects/lpe-ruler.cpp:45 +#: ../src/live_effects/lpe-ruler.cpp:48 msgid "_Offset:" msgstr "Desví_o:" -#: ../src/live_effects/lpe-ruler.cpp:45 +#: ../src/live_effects/lpe-ruler.cpp:48 msgid "Offset of first mark" msgstr "Desvío de la primera marca" -#: ../src/live_effects/lpe-ruler.cpp:46 +#: ../src/live_effects/lpe-ruler.cpp:49 msgid "Border marks:" msgstr "Marcas del borde:" -#: ../src/live_effects/lpe-ruler.cpp:46 +#: ../src/live_effects/lpe-ruler.cpp:49 msgid "Choose whether to draw marks at the beginning and end of the path" msgstr "Elija si dibujar marcas al inicio y al fin del trayecto" -#: ../src/live_effects/lpe-show_handles.cpp:26 +#: ../src/live_effects/lpe-show_handles.cpp:25 msgid "Show nodes" msgstr "Mostrar nodos" -#: ../src/live_effects/lpe-show_handles.cpp:28 +#: ../src/live_effects/lpe-show_handles.cpp:27 msgid "Show path" msgstr "Mostrar trayecto" -#: ../src/live_effects/lpe-show_handles.cpp:29 -msgid "Show center of node" -msgstr "Mostrar centro de nodo" - -#: ../src/live_effects/lpe-show_handles.cpp:30 +#: ../src/live_effects/lpe-show_handles.cpp:28 msgid "Scale nodes and handles" msgstr "Escalar nodos y tiradores" -#: ../src/live_effects/lpe-show_handles.cpp:53 +#: ../src/live_effects/lpe-show_handles.cpp:50 msgid "" "The \"show handles\" path effect will remove any custom style on the object " "you are applying it to. If this is not what you want, click Cancel." @@ -11251,91 +11466,91 @@ msgstr "" "personal en el objeto al que lo aplique. Pulse Cancelar si esto no es lo que " "desea." -#: ../src/live_effects/lpe-simplify.cpp:22 +#: ../src/live_effects/lpe-simplify.cpp:30 msgid "Steps:" msgstr "Pasos:" -#: ../src/live_effects/lpe-simplify.cpp:22 +#: ../src/live_effects/lpe-simplify.cpp:30 msgid "Change number of simplify steps " msgstr "Cambiar el número de pasos de «simplificar»" -#: ../src/live_effects/lpe-simplify.cpp:23 +#: ../src/live_effects/lpe-simplify.cpp:31 msgid "Roughly threshold:" msgstr "Umbral aproximado:" -#: ../src/live_effects/lpe-simplify.cpp:24 +#: ../src/live_effects/lpe-simplify.cpp:32 msgid "Smooth angles:" msgstr "Suavizar ángulos:" -#: ../src/live_effects/lpe-simplify.cpp:24 +#: ../src/live_effects/lpe-simplify.cpp:32 msgid "Max degree difference on handles to perform a smooth" msgstr "Máxima diferencia entre ángulos de tiradores al realizar un suavizado" -#: ../src/live_effects/lpe-simplify.cpp:26 +#: ../src/live_effects/lpe-simplify.cpp:34 msgid "Paths separately" msgstr "Rutas por separado" -#: ../src/live_effects/lpe-simplify.cpp:26 +#: ../src/live_effects/lpe-simplify.cpp:34 msgid "Simplifying paths (separately)" msgstr "Simplificando trayectos (por separado)" -#: ../src/live_effects/lpe-simplify.cpp:28 +#: ../src/live_effects/lpe-simplify.cpp:36 msgid "Just coalesce" msgstr "Solo juntar" -#: ../src/live_effects/lpe-simplify.cpp:28 +#: ../src/live_effects/lpe-simplify.cpp:36 msgid "Simplify just coalesce" msgstr "Simplificar solo juntar" #. initialise your parameters here: #. testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this, Geom::Point(100,100)), -#: ../src/live_effects/lpe-sketch.cpp:31 +#: ../src/live_effects/lpe-sketch.cpp:38 msgid "Strokes:" msgstr "Trazos:" -#: ../src/live_effects/lpe-sketch.cpp:31 +#: ../src/live_effects/lpe-sketch.cpp:38 msgid "Draw that many approximating strokes" msgstr "Dibujar esa cantidad de trazos aproximados" -#: ../src/live_effects/lpe-sketch.cpp:32 +#: ../src/live_effects/lpe-sketch.cpp:39 msgid "Max stroke length:" msgstr "Longitud máxima de trazo:" -#: ../src/live_effects/lpe-sketch.cpp:33 +#: ../src/live_effects/lpe-sketch.cpp:40 msgid "Maximum length of approximating strokes" msgstr "Longitud máxima de los trazos aproximados" -#: ../src/live_effects/lpe-sketch.cpp:34 +#: ../src/live_effects/lpe-sketch.cpp:41 msgid "Stroke length variation:" msgstr "Varianza de la longitud de trazo:" -#: ../src/live_effects/lpe-sketch.cpp:35 +#: ../src/live_effects/lpe-sketch.cpp:42 msgid "Random variation of stroke length (relative to maximum length)" msgstr "" "Variación aleatoria de la longitud del trazo (relativa a la longitud máxima)" -#: ../src/live_effects/lpe-sketch.cpp:36 +#: ../src/live_effects/lpe-sketch.cpp:43 msgid "Max. overlap:" msgstr "Solapamiento máx.:" -#: ../src/live_effects/lpe-sketch.cpp:37 +#: ../src/live_effects/lpe-sketch.cpp:44 msgid "How much successive strokes should overlap (relative to maximum length)" msgstr "" "Cuánto se deberían solapar trazos sucesivos (relativo a la longitud máxima)" -#: ../src/live_effects/lpe-sketch.cpp:38 +#: ../src/live_effects/lpe-sketch.cpp:45 msgid "Overlap variation:" msgstr "Variación de solapamiento:" -#: ../src/live_effects/lpe-sketch.cpp:39 +#: ../src/live_effects/lpe-sketch.cpp:46 msgid "Random variation of overlap (relative to maximum overlap)" msgstr "Variación aleatoria del solapamiento (relativa al solapamiento máximo)" -#: ../src/live_effects/lpe-sketch.cpp:40 +#: ../src/live_effects/lpe-sketch.cpp:47 msgid "Max. end tolerance:" msgstr "Tolerancia final máx.:" -#: ../src/live_effects/lpe-sketch.cpp:41 +#: ../src/live_effects/lpe-sketch.cpp:48 msgid "" "Maximum distance between ends of original and approximating paths (relative " "to maximum length)" @@ -11343,45 +11558,45 @@ msgstr "" "Distancia máxima entre finales de los trazos original y aproximados " "(relativa a la longitud máxima)" -#: ../src/live_effects/lpe-sketch.cpp:42 +#: ../src/live_effects/lpe-sketch.cpp:49 msgid "Average offset:" msgstr "Desvío medio:" -#: ../src/live_effects/lpe-sketch.cpp:43 +#: ../src/live_effects/lpe-sketch.cpp:50 msgid "Average distance each stroke is away from the original path" msgstr "Distancia media entre cada trazo y el trayecto original" -#: ../src/live_effects/lpe-sketch.cpp:44 +#: ../src/live_effects/lpe-sketch.cpp:51 msgid "Max. tremble:" msgstr "Temblor máximo:" -#: ../src/live_effects/lpe-sketch.cpp:45 +#: ../src/live_effects/lpe-sketch.cpp:52 msgid "Maximum tremble magnitude" msgstr "Magnitud máxima de temblor" -#: ../src/live_effects/lpe-sketch.cpp:46 +#: ../src/live_effects/lpe-sketch.cpp:53 msgid "Tremble frequency:" msgstr "Frecuencia de temblor:" -#: ../src/live_effects/lpe-sketch.cpp:47 +#: ../src/live_effects/lpe-sketch.cpp:54 msgid "Average number of tremble periods in a stroke" msgstr "Cantidad media de períodos de temblor en un trayecto" -#: ../src/live_effects/lpe-sketch.cpp:49 +#: ../src/live_effects/lpe-sketch.cpp:56 msgid "Construction lines:" msgstr "Líneas de construcción:" -#: ../src/live_effects/lpe-sketch.cpp:50 +#: ../src/live_effects/lpe-sketch.cpp:57 msgid "How many construction lines (tangents) to draw" msgstr "Cuántas líneas de construcción (tangentes) se dibujarán" -#: ../src/live_effects/lpe-sketch.cpp:51 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/live_effects/lpe-sketch.cpp:58 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2918 #: ../share/extensions/render_alphabetsoup.inx.h:3 msgid "Scale:" msgstr "Escala:" -#: ../src/live_effects/lpe-sketch.cpp:52 +#: ../src/live_effects/lpe-sketch.cpp:59 msgid "" "Scale factor relating curvature and length of construction lines (try " "5*offset)" @@ -11389,198 +11604,198 @@ msgstr "" "Factor de escala relativa a la curvatura y longitud de las líneas de " "construcción (intente 5*desvío)" -#: ../src/live_effects/lpe-sketch.cpp:53 +#: ../src/live_effects/lpe-sketch.cpp:60 msgid "Max. length:" msgstr "Longitud máxima:" -#: ../src/live_effects/lpe-sketch.cpp:53 +#: ../src/live_effects/lpe-sketch.cpp:60 msgid "Maximum length of construction lines" msgstr "Longitud máxima de líneas de construcción" -#: ../src/live_effects/lpe-sketch.cpp:54 +#: ../src/live_effects/lpe-sketch.cpp:61 msgid "Length variation:" msgstr "Variación de longitud:" -#: ../src/live_effects/lpe-sketch.cpp:54 +#: ../src/live_effects/lpe-sketch.cpp:61 msgid "Random variation of the length of construction lines" msgstr "Variación aleatoria de la longitud de las líneas de construcción" -#: ../src/live_effects/lpe-sketch.cpp:55 +#: ../src/live_effects/lpe-sketch.cpp:62 msgid "Placement randomness:" msgstr "Aleatoriedad de la colocación:" -#: ../src/live_effects/lpe-sketch.cpp:55 +#: ../src/live_effects/lpe-sketch.cpp:62 msgid "0: evenly distributed construction lines, 1: purely random placement" msgstr "" "0: líneas de construcción distribuidas uniformemente, 1: colocación aleatoria" -#: ../src/live_effects/lpe-sketch.cpp:57 +#: ../src/live_effects/lpe-sketch.cpp:64 msgid "k_min:" msgstr "k_min:" -#: ../src/live_effects/lpe-sketch.cpp:57 +#: ../src/live_effects/lpe-sketch.cpp:64 msgid "min curvature" msgstr "curvatura mínima" -#: ../src/live_effects/lpe-sketch.cpp:58 +#: ../src/live_effects/lpe-sketch.cpp:65 msgid "k_max:" msgstr "k_max:" -#: ../src/live_effects/lpe-sketch.cpp:58 +#: ../src/live_effects/lpe-sketch.cpp:65 msgid "max curvature" msgstr "curvatura máxima" -#: ../src/live_effects/lpe-taperstroke.cpp:60 +#: ../src/live_effects/lpe-taperstroke.cpp:66 msgid "Extrapolated" msgstr "Extrapolado" -#: ../src/live_effects/lpe-taperstroke.cpp:67 +#: ../src/live_effects/lpe-taperstroke.cpp:73 #: ../share/extensions/edge3d.inx.h:5 ../share/extensions/nicechart.inx.h:25 msgid "Stroke width:" msgstr "Ancho de trazo:" -#: ../src/live_effects/lpe-taperstroke.cpp:67 +#: ../src/live_effects/lpe-taperstroke.cpp:73 msgid "The (non-tapered) width of the path" msgstr "La anchura (no afilada) del trayecto" -#: ../src/live_effects/lpe-taperstroke.cpp:68 +#: ../src/live_effects/lpe-taperstroke.cpp:74 msgid "Start offset:" msgstr "Desvío inicial:" -#: ../src/live_effects/lpe-taperstroke.cpp:68 +#: ../src/live_effects/lpe-taperstroke.cpp:74 msgid "Taper distance from path start" msgstr "Distancia del afilado al inicio del trayecto" -#: ../src/live_effects/lpe-taperstroke.cpp:69 +#: ../src/live_effects/lpe-taperstroke.cpp:75 msgid "End offset:" msgstr "Desvío final:" -#: ../src/live_effects/lpe-taperstroke.cpp:69 +#: ../src/live_effects/lpe-taperstroke.cpp:75 msgid "The ending position of the taper" msgstr "La posición final del afilado" -#: ../src/live_effects/lpe-taperstroke.cpp:70 +#: ../src/live_effects/lpe-taperstroke.cpp:76 msgid "Taper smoothing:" msgstr "Suavizado de afilado" -#: ../src/live_effects/lpe-taperstroke.cpp:70 +#: ../src/live_effects/lpe-taperstroke.cpp:76 msgid "Amount of smoothing to apply to the tapers" msgstr "Cantidad de suavizado que se aplicará a los afilados" -#: ../src/live_effects/lpe-taperstroke.cpp:71 +#: ../src/live_effects/lpe-taperstroke.cpp:77 msgid "Join type:" msgstr "Tipo de unión:" -#: ../src/live_effects/lpe-taperstroke.cpp:71 +#: ../src/live_effects/lpe-taperstroke.cpp:77 msgid "Join type for non-smooth nodes" msgstr "Tipo de unión de nodos sin suavizado" -#: ../src/live_effects/lpe-taperstroke.cpp:72 +#: ../src/live_effects/lpe-taperstroke.cpp:78 msgid "Limit for miter joins" msgstr "Limite para uniones de inglete" -#: ../src/live_effects/lpe-taperstroke.cpp:441 +#: ../src/live_effects/lpe-taperstroke.cpp:447 msgid "Start point of the taper" msgstr "Punto inicial del afilado" -#: ../src/live_effects/lpe-taperstroke.cpp:445 +#: ../src/live_effects/lpe-taperstroke.cpp:451 msgid "End point of the taper" msgstr "Punto final del afilado" -#: ../src/live_effects/lpe-transform_2pts.cpp:29 +#: ../src/live_effects/lpe-transform_2pts.cpp:31 msgid "Elastic" msgstr "Elástico" -#: ../src/live_effects/lpe-transform_2pts.cpp:29 +#: ../src/live_effects/lpe-transform_2pts.cpp:31 msgid "Elastic transform mode" msgstr "Modo de transformación elástico" -#: ../src/live_effects/lpe-transform_2pts.cpp:30 +#: ../src/live_effects/lpe-transform_2pts.cpp:32 msgid "From original width" msgstr "De anchura original" -#: ../src/live_effects/lpe-transform_2pts.cpp:31 +#: ../src/live_effects/lpe-transform_2pts.cpp:33 msgid "Lock length" msgstr "Bloquear longitud" -#: ../src/live_effects/lpe-transform_2pts.cpp:31 +#: ../src/live_effects/lpe-transform_2pts.cpp:33 msgid "Lock length to current distance" msgstr "Bloquear la longitud a la distancia actual" -#: ../src/live_effects/lpe-transform_2pts.cpp:32 +#: ../src/live_effects/lpe-transform_2pts.cpp:34 msgid "Lock angle" msgstr "Bloquear ángulo" -#: ../src/live_effects/lpe-transform_2pts.cpp:33 +#: ../src/live_effects/lpe-transform_2pts.cpp:35 msgid "Flip horizontal" msgstr "Reflejo horizontal" -#: ../src/live_effects/lpe-transform_2pts.cpp:34 +#: ../src/live_effects/lpe-transform_2pts.cpp:36 msgid "Flip vertical" msgstr "Reflejo vertical" -#: ../src/live_effects/lpe-transform_2pts.cpp:36 +#: ../src/live_effects/lpe-transform_2pts.cpp:38 msgid "End point" msgstr "Punto final" -#: ../src/live_effects/lpe-transform_2pts.cpp:37 +#: ../src/live_effects/lpe-transform_2pts.cpp:39 msgid "Stretch" msgstr "Estirar" -#: ../src/live_effects/lpe-transform_2pts.cpp:37 +#: ../src/live_effects/lpe-transform_2pts.cpp:39 msgid "Stretch the result" msgstr "Estirar el resultado" -#: ../src/live_effects/lpe-transform_2pts.cpp:38 +#: ../src/live_effects/lpe-transform_2pts.cpp:40 msgid "Offset from knots" msgstr "Desvío desde nudos" -#: ../src/live_effects/lpe-transform_2pts.cpp:39 +#: ../src/live_effects/lpe-transform_2pts.cpp:41 msgid "First Knot" msgstr "Primer nudo" -#: ../src/live_effects/lpe-transform_2pts.cpp:40 +#: ../src/live_effects/lpe-transform_2pts.cpp:42 msgid "Last Knot" msgstr "Último nudo" -#: ../src/live_effects/lpe-transform_2pts.cpp:41 +#: ../src/live_effects/lpe-transform_2pts.cpp:43 msgid "Rotation helper size" msgstr "Tamaño del ayudante de rotación" -#: ../src/live_effects/lpe-transform_2pts.cpp:193 +#: ../src/live_effects/lpe-transform_2pts.cpp:196 msgid "Change index of knot" msgstr "Cambiar índice del nudo" -#: ../src/live_effects/lpe-transform_2pts.cpp:346 -#: ../src/ui/dialog/inkscape-preferences.cpp:1587 -#: ../src/ui/dialog/pixelartdialog.cpp:290 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:796 -#: ../src/ui/dialog/tracedialog.cpp:812 -#: ../src/ui/widget/preferences-widget.cpp:662 +#: ../src/live_effects/lpe-transform_2pts.cpp:349 +#: ../src/ui/dialog/inkscape-preferences.cpp:1618 +#: ../src/ui/dialog/pixelartdialog.cpp:296 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:697 +#: ../src/ui/dialog/tracedialog.cpp:813 +#: ../src/ui/widget/preferences-widget.cpp:742 msgid "Reset" msgstr "Reiniciar" -#: ../src/live_effects/lpe-vonkoch.cpp:44 +#: ../src/live_effects/lpe-vonkoch.cpp:46 msgid "N_r of generations:" msgstr "Nº de generaciones:" -#: ../src/live_effects/lpe-vonkoch.cpp:44 +#: ../src/live_effects/lpe-vonkoch.cpp:46 msgid "Depth of the recursion --- keep low!!" msgstr "Profundidad de recursión (¡Manténgalo bajo!)" -#: ../src/live_effects/lpe-vonkoch.cpp:45 +#: ../src/live_effects/lpe-vonkoch.cpp:47 msgid "Generating path:" msgstr "Trazo generador:" -#: ../src/live_effects/lpe-vonkoch.cpp:45 +#: ../src/live_effects/lpe-vonkoch.cpp:47 msgid "Path whose segments define the iterated transforms" msgstr "Trayecto cuyos segmentos definen las transformaciones iteradas" -#: ../src/live_effects/lpe-vonkoch.cpp:46 +#: ../src/live_effects/lpe-vonkoch.cpp:48 msgid "_Use uniform transforms only" msgstr "Solamente usar transformaciones _uniformes" -#: ../src/live_effects/lpe-vonkoch.cpp:46 +#: ../src/live_effects/lpe-vonkoch.cpp:48 msgid "" "2 consecutive segments are used to reverse/preserve orientation only " "(otherwise, they define a general transform)." @@ -11588,20 +11803,20 @@ msgstr "" "Se utilizan dos segmentos consecutivos para invertir/preservar solamente la " "orientación (de lo contrario definen una transformación general)" -#: ../src/live_effects/lpe-vonkoch.cpp:47 +#: ../src/live_effects/lpe-vonkoch.cpp:49 msgid "Dra_w all generations" msgstr "Di_bujar todas las generaciones" -#: ../src/live_effects/lpe-vonkoch.cpp:47 +#: ../src/live_effects/lpe-vonkoch.cpp:49 msgid "If unchecked, draw only the last generation" msgstr "Si no se marca solamente dibuja la última generación" #. ,draw_boxes(_("Display boxes"), _("Display boxes instead of paths only"), "draw_boxes", &wr, this, true) -#: ../src/live_effects/lpe-vonkoch.cpp:49 +#: ../src/live_effects/lpe-vonkoch.cpp:51 msgid "Reference segment:" msgstr "Segmento de referencia:" -#: ../src/live_effects/lpe-vonkoch.cpp:49 +#: ../src/live_effects/lpe-vonkoch.cpp:51 msgid "The reference segment. Defaults to the horizontal midline of the bbox." msgstr "" "El segmento de referencia. Por defecto es la mediana horizontal de la caja " @@ -11610,24 +11825,24 @@ msgstr "" #. refA(_("Ref Start"), _("Left side middle of the reference box"), "refA", &wr, this), #. refB(_("Ref End"), _("Right side middle of the reference box"), "refB", &wr, this), #. FIXME: a path is used here instead of 2 points to work around path/point param incompatibility bug. -#: ../src/live_effects/lpe-vonkoch.cpp:53 +#: ../src/live_effects/lpe-vonkoch.cpp:55 msgid "_Max complexity:" msgstr "Complejidad _máxima:" -#: ../src/live_effects/lpe-vonkoch.cpp:53 +#: ../src/live_effects/lpe-vonkoch.cpp:55 msgid "Disable effect if the output is too complex" msgstr "Desactiva el efecto si el resultado es demasiado complejo" -#: ../src/live_effects/parameter/bool.cpp:74 +#: ../src/live_effects/parameter/bool.cpp:68 msgid "Change bool parameter" msgstr "Cambiar parámetro bool" -#: ../src/live_effects/parameter/enum.h:49 +#: ../src/live_effects/parameter/enum.h:47 msgid "Change enumeration parameter" msgstr "Cambiar parámetro de enumeración" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:777 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:835 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:778 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:839 msgid "" "Chamfer: Ctrl+Click toggle type, Shift+Click open " "dialog, Ctrl+Alt+Click reset" @@ -11635,8 +11850,8 @@ msgstr "" "Chaflán: Ctrl+Clic conmuta tipo, Mayús+Clic abre " "diálogo, Mayús+Alt+Clic reinicia" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:781 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:839 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:782 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:843 msgid "" "Inverse Chamfer: Ctrl+Click toggle type, Shift+Click " "open dialog, Ctrl+Alt+Click reset" @@ -11644,8 +11859,8 @@ msgstr "" "Chaflán invertido: Ctrl+Clic conmuta tipo, Mayús+Clic " "abre diálogo, Mayús+Alt+Clic reinicia" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:785 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:843 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:786 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:847 msgid "" "Inverse Fillet: Ctrl+Click toggle type, Shift+Click " "open dialog, Ctrl+Alt+Click reset" @@ -11653,8 +11868,8 @@ msgstr "" "Filete invertido: Ctrl+Clic conmuta tipo, Mayús+Clic " "abre diálogo, Mayús+Alt+Clic reinicia" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:789 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:847 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:790 +#: ../src/live_effects/parameter/filletchamferpointarray.cpp:851 msgid "" "Fillet: Ctrl+Click toggle type, Shift+Click open " "dialog, Ctrl+Alt+Click reset" @@ -11662,10 +11877,6 @@ msgstr "" "Filete: Ctrl+Clic conmuta tipo, Mayús+Clic abre " "diálogo, Mayús+Alt+Clic reinicia" -#: ../src/live_effects/parameter/fontbutton.cpp:68 -msgid "Change font button parameter" -msgstr "Cambiar parámetro de botón de tipos" - #: ../src/live_effects/parameter/originalpath.cpp:67 #: ../src/live_effects/parameter/originalpatharray.cpp:155 msgid "Link to path" @@ -11675,21 +11886,14 @@ msgstr "Asociar a trayecto" msgid "Select original" msgstr "Seleccionar original" -#: ../src/live_effects/parameter/originalpatharray.cpp:82 -#: ../src/ui/dialog/inkscape-preferences.cpp:1542 -#: ../src/ui/widget/page-sizer.cpp:268 ../src/widgets/gradient-selector.cpp:141 -#: ../src/widgets/sp-xmlview-attr-list.cpp:45 -msgid "Name" -msgstr "Nombre" - #: ../src/live_effects/parameter/originalpatharray.cpp:90 -#: ../src/widgets/gradient-toolbar.cpp:1206 +#: ../src/widgets/gradient-toolbar.cpp:1205 msgid "Reverse" msgstr "Revertir" #: ../src/live_effects/parameter/originalpatharray.cpp:130 #: ../src/live_effects/parameter/originalpatharray.cpp:315 -#: ../src/live_effects/parameter/path.cpp:508 +#: ../src/live_effects/parameter/path.cpp:509 msgid "Link path parameter to path" msgstr "Asociar el parámetro de trayecto al trayecto" @@ -11698,12 +11902,12 @@ msgid "Remove Path" msgstr "Retirar trayecto" #: ../src/live_effects/parameter/originalpatharray.cpp:179 -#: ../src/ui/dialog/objects.cpp:1841 +#: ../src/ui/dialog/objects.cpp:1888 msgid "Move Down" msgstr "Mover hacia abajo" #: ../src/live_effects/parameter/originalpatharray.cpp:191 -#: ../src/ui/dialog/objects.cpp:1849 +#: ../src/ui/dialog/objects.cpp:1896 msgid "Move Up" msgstr "Mover hacia arriba" @@ -11735,11 +11939,11 @@ msgstr "Pegar trayecto" msgid "Link to path on clipboard" msgstr "Enlazar al trayecto en el portapapeles" -#: ../src/live_effects/parameter/path.cpp:476 +#: ../src/live_effects/parameter/path.cpp:477 msgid "Paste path parameter" msgstr "Pegar parámetro de trayecto" -#: ../src/live_effects/parameter/point.cpp:131 +#: ../src/live_effects/parameter/point.cpp:132 msgid "Change point parameter" msgstr "Cambiar parámetro de punto" @@ -11758,77 +11962,69 @@ msgstr "" msgid "Change random parameter" msgstr "Cambiar parámetro al azar" -#: ../src/live_effects/parameter/text.cpp:127 +#: ../src/live_effects/parameter/text.cpp:101 msgid "Change text parameter" msgstr "Cambiar parámetro de texto" -#: ../src/live_effects/parameter/togglebutton.cpp:112 +#: ../src/live_effects/parameter/togglebutton.cpp:114 msgid "Change togglebutton parameter" msgstr "Cambiar parámetro de togglebutton" #: ../src/live_effects/parameter/transformedpoint.cpp:98 -#: ../src/live_effects/parameter/vector.cpp:98 +#: ../src/live_effects/parameter/vector.cpp:99 msgid "Change vector parameter" msgstr "Cambiar parámetro de vector" -#: ../src/live_effects/parameter/unit.cpp:86 +#: ../src/live_effects/parameter/unit.cpp:80 msgid "Change unit parameter" msgstr "Cambiar parámetro de unidad" -#: ../src/main-cmdlineact.cpp:66 +#: ../src/main-cmdlineact.cpp:49 #, c-format msgid "Unable to find verb ID '%s' specified on the command line.\n" msgstr "" "No se ha podido encontrar el ID de verbo '%s' indicado en la línea de " "comandos.\n" -#: ../src/main-cmdlineact.cpp:77 ../src/main-cmdlinexact.cpp:255 +#: ../src/main-cmdlineact.cpp:60 #, c-format msgid "Unable to find node ID: '%s'\n" msgstr "No se puede encontrar el ID de nodo: '%s'\n" -#: ../src/main.cpp:294 +#: ../src/main.cpp:304 msgid "Print the Inkscape version number" msgstr "Mostrar el número de versión de Inkscape" -#: ../src/main.cpp:299 +#: ../src/main.cpp:309 msgid "Do not use X server (only process files from console)" msgstr "No utilizar el servidor X (sólo procesa archivos desde la consola)" -#: ../src/main.cpp:304 +#: ../src/main.cpp:314 msgid "Try to use X server (even if $DISPLAY is not set)" msgstr "Intentar utilizar el servidor X aunque no se haya definido $DISPLAY" -#: ../src/main.cpp:309 +#: ../src/main.cpp:319 msgid "Open specified document(s) (option string may be excluded)" msgstr "" "Abrir los documentos especificados (se pueden excluir las opciones de cadena)" -#: ../src/main.cpp:310 ../src/main.cpp:320 ../src/main.cpp:325 -#: ../src/main.cpp:397 ../src/main.cpp:402 ../src/main.cpp:407 -#: ../src/main.cpp:418 ../src/main.cpp:434 ../src/main.cpp:439 +#: ../src/main.cpp:320 ../src/main.cpp:325 ../src/main.cpp:330 +#: ../src/main.cpp:402 ../src/main.cpp:407 ../src/main.cpp:412 +#: ../src/main.cpp:423 ../src/main.cpp:439 ../src/main.cpp:444 msgid "FILENAME" msgstr "NOMBRE DE ARCHIVO" -#: ../src/main.cpp:314 -msgid "xverbs command" -msgstr "comando xverbs" - -#: ../src/main.cpp:315 -msgid "XVERBS_FILENAME" -msgstr "NOMBRE_DE_ARCHIVO_XVERBS" - -#: ../src/main.cpp:319 +#: ../src/main.cpp:324 msgid "Print document(s) to specified output file (use '| program' for pipe)" msgstr "" "Imprimir documentos en el archivo de salida especificado (utilice «| " "programa» para el filtro)" -#: ../src/main.cpp:324 +#: ../src/main.cpp:329 msgid "Export document to a PNG file" msgstr "Exportar el documento como archivo png" -#: ../src/main.cpp:329 +#: ../src/main.cpp:334 msgid "" "Resolution for exporting to bitmap and for rasterization of filters in PS/" "EPS/PDF (default 96)" @@ -11836,11 +12032,11 @@ msgstr "" "Resolución para la exportación a mapa de bits y rasterización de filtros en " "PS/EPS/PDF (predet. 96)" -#: ../src/main.cpp:330 ../src/ui/widget/rendering-options.cpp:37 +#: ../src/main.cpp:335 ../src/ui/widget/rendering-options.cpp:37 msgid "DPI" msgstr "PPP" -#: ../src/main.cpp:334 +#: ../src/main.cpp:339 msgid "" "Exported area in SVG user units (default is the page; 0,0 is lower-left " "corner)" @@ -11848,29 +12044,29 @@ msgstr "" "El área exportada en unidades de usuario SVG (por defecto es el lienzo " "completo, 0,0 es la esquina inferior izquierda)" -#: ../src/main.cpp:335 +#: ../src/main.cpp:340 msgid "x0:y0:x1:y1" msgstr "x0:y0:x1:y1" -#: ../src/main.cpp:339 +#: ../src/main.cpp:344 msgid "Exported area is the entire drawing (not page)" msgstr "El área exportada es el dibujo completo (no el lienzo)" -#: ../src/main.cpp:344 +#: ../src/main.cpp:349 msgid "Exported area is the entire page" msgstr "El área exportada es el lienzo completo" -#: ../src/main.cpp:349 +#: ../src/main.cpp:354 msgid "Only for PS/EPS/PDF, sets margin in mm around exported area (default 0)" msgstr "" "Solo para PS/EPS/PDF, fija un margen en mm alrededor del área exportada " "(predeterminado: 0)" -#: ../src/main.cpp:350 ../src/main.cpp:392 +#: ../src/main.cpp:355 ../src/main.cpp:397 msgid "VALUE" msgstr "VALOR" -#: ../src/main.cpp:354 +#: ../src/main.cpp:359 msgid "" "Snap the bitmap export area outwards to the nearest integer values (in SVG " "user units)" @@ -11878,81 +12074,81 @@ msgstr "" "Ajustar el área de exportación del mapa de bits hacia afuera hasta los " "valores enteros más próximos (en unidades de usuario SVG)" -#: ../src/main.cpp:359 +#: ../src/main.cpp:364 msgid "The width of exported bitmap in pixels (overrides export-dpi)" msgstr "" "El ancho del mapa de bits generado en píxeles (sobreescribe ppp de " "exportación)" -#: ../src/main.cpp:360 +#: ../src/main.cpp:365 msgid "WIDTH" msgstr "ANCHO" -#: ../src/main.cpp:364 +#: ../src/main.cpp:369 msgid "The height of exported bitmap in pixels (overrides export-dpi)" msgstr "" "La altura del mapa de bits generado en píxeles (sobreescribe ppp de " "exportación)" -#: ../src/main.cpp:365 +#: ../src/main.cpp:370 msgid "HEIGHT" msgstr "ALTO" -#: ../src/main.cpp:369 +#: ../src/main.cpp:374 msgid "The ID of the object to export" msgstr "El ID del objeto que se exportará" -#: ../src/main.cpp:370 ../src/main.cpp:483 -#: ../src/ui/dialog/inkscape-preferences.cpp:1545 +#: ../src/main.cpp:375 ../src/main.cpp:488 +#: ../src/ui/dialog/inkscape-preferences.cpp:1564 msgid "ID" msgstr "ID" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. -#: ../src/main.cpp:376 +#: ../src/main.cpp:381 msgid "" "Export just the object with export-id, hide all others (only with export-id)" msgstr "" "Exportar solamente el objeto con el export-id, ocultar todos los demás " "(solamente con export-id)" -#: ../src/main.cpp:381 +#: ../src/main.cpp:386 msgid "Use stored filename and DPI hints when exporting (only with export-id)" msgstr "" "Usar el nombre del archivo y pistas de DPI al exportar (solamente con export-" "id)" -#: ../src/main.cpp:386 +#: ../src/main.cpp:391 msgid "Background color of exported bitmap (any SVG-supported color string)" msgstr "" "Color de fondo del mapa de bits exportado (cualquier cadena de color " "admitida por SVG)" -#: ../src/main.cpp:387 +#: ../src/main.cpp:392 msgid "COLOR" msgstr "COLOR" -#: ../src/main.cpp:391 +#: ../src/main.cpp:396 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" msgstr "" "Opacidad de fondo del mapa de bits exportado (entre 0.0 y 1.0, ó entre 1 y " "255)" -#: ../src/main.cpp:396 +#: ../src/main.cpp:401 msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)" msgstr "" "Exportar el documento a un archivo SVG plano (sin nombre de espacio sodipodi " "o inkscape)" -#: ../src/main.cpp:401 +#: ../src/main.cpp:406 msgid "Export document to a PS file" msgstr "Exportar el documento a un archivo PS" -#: ../src/main.cpp:406 +#: ../src/main.cpp:411 msgid "Export document to an EPS file" msgstr "Exportar el documento a un archivo EPS" -#: ../src/main.cpp:411 +#: ../src/main.cpp:416 msgid "" "Choose the PostScript Level used to export. Possible choices are 2 and 3 " "(the default)" @@ -11960,29 +12156,29 @@ msgstr "" "Elige el nivel PostScript para la exportación. Las opciones posibles son 2 y " "3 (el predeterminado)." -#: ../src/main.cpp:413 +#: ../src/main.cpp:418 msgid "PS Level" msgstr "Nivel PS" -#: ../src/main.cpp:417 +#: ../src/main.cpp:422 msgid "Export document to a PDF file" msgstr "Exportar el documento a un archivo PDF" #. TRANSLATORS: "--export-pdf-version" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:423 +#: ../src/main.cpp:428 msgid "" "Export PDF to given version. (hint: make sure to input the exact string " -"found in the PDF export dialog, e.g. \"PDF 1.4\" which is PDF-a conformant)" +"found in the PDF export dialog, e.g. \"1.4\" which is PDF-a conformant)" msgstr "" "Exportar PDF en la versión indicada. (Pista: asegúrate de indicar la cadena " "exacta encontrada en el diálogo de exportación de PDF, por ejemplo «PDF " "1.4», que es conforme a PDF-a)" -#: ../src/main.cpp:424 +#: ../src/main.cpp:429 msgid "PDF_VERSION" msgstr "PDF_VERSION" -#: ../src/main.cpp:428 +#: ../src/main.cpp:433 msgid "" "Export PDF/PS/EPS without text. Besides the PDF/PS/EPS, a LaTeX file is " "exported, putting the text on top of the PDF/PS/EPS file. Include the result " @@ -11992,19 +12188,19 @@ msgstr "" "archivo LaTeX, que superpondrá en texto encima del PDF/PS/EPS file. Incluya " "en resultado el LaTeX así: \\input{latexfile.tex}" -#: ../src/main.cpp:433 +#: ../src/main.cpp:438 msgid "Export document to an Enhanced Metafile (EMF) File" msgstr "Exportar el documento a un Metaarchivo mejorado (EMF)" -#: ../src/main.cpp:438 +#: ../src/main.cpp:443 msgid "Export document to a Windows Metafile (WMF) File" msgstr "Exportar el documento a un Metaarchivo Windows (WMF)" -#: ../src/main.cpp:443 +#: ../src/main.cpp:448 msgid "Convert text object to paths on export (PS, EPS, PDF, SVG)" msgstr "Convertir el texto a trayectos al exportar (PS, EPS, PDF, SVG)" -#: ../src/main.cpp:448 +#: ../src/main.cpp:453 msgid "" "Render filtered objects without filters, instead of rasterizing (PS, EPS, " "PDF)" @@ -12012,7 +12208,7 @@ msgstr "" "Generar objetos filtrados sin filtros, en vez de rasterizar (PS, EPS, PDF)" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:454 +#: ../src/main.cpp:459 msgid "" "Query the X coordinate of the drawing or, if specified, of the object with --" "query-id" @@ -12021,7 +12217,7 @@ msgstr "" "query-id»" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:460 +#: ../src/main.cpp:465 msgid "" "Query the Y coordinate of the drawing or, if specified, of the object with --" "query-id" @@ -12030,7 +12226,7 @@ msgstr "" "query-id»" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:466 +#: ../src/main.cpp:471 msgid "" "Query the width of the drawing or, if specified, of the object with --query-" "id" @@ -12038,36 +12234,36 @@ msgstr "" "Consultar la anchura del dibujo o, si se indica, del objeto con «--query-id»" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:472 +#: ../src/main.cpp:477 msgid "" "Query the height of the drawing or, if specified, of the object with --query-" "id" msgstr "" "Consultar la altura del dibujo o, si se indica, del objeto con «--query-id»" -#: ../src/main.cpp:477 +#: ../src/main.cpp:482 msgid "List id,x,y,w,h for all objects" msgstr "Listar id,x,y,w,h de todos los objetos" -#: ../src/main.cpp:482 +#: ../src/main.cpp:487 msgid "The ID of the object whose dimensions are queried" msgstr "El ID del objeto cuyas dimensiones se consultan" #. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory -#: ../src/main.cpp:488 +#: ../src/main.cpp:493 msgid "Print out the extension directory and exit" msgstr "Mostrar el directorio de extensiones y terminar" -#: ../src/main.cpp:493 +#: ../src/main.cpp:498 msgid "Remove unused definitions from the defs section(s) of the document" msgstr "" "Eliminar definiciones no utilizadas de las secciones «defs» del documento" -#: ../src/main.cpp:499 +#: ../src/main.cpp:504 msgid "Enter a listening loop for D-Bus messages in console mode" msgstr "Introducir un bucle de escuha para mensajes D-BUS en modo consola" -#: ../src/main.cpp:504 +#: ../src/main.cpp:509 msgid "" "Specify the D-Bus bus name to listen for messages on (default is org." "inkscape)" @@ -12075,35 +12271,45 @@ msgstr "" "Indica el nombre del bus D-Bus en el que escuchar mensajes (el " "predeterminado es org.inkscape)" -#: ../src/main.cpp:505 +#: ../src/main.cpp:510 msgid "BUS-NAME" msgstr "BUS-NAME" -#: ../src/main.cpp:510 +#: ../src/main.cpp:515 msgid "List the IDs of all the verbs in Inkscape" msgstr "Listar los IDs de todos los verbos en Inkscape" -#: ../src/main.cpp:515 +#: ../src/main.cpp:520 msgid "Verb to call when Inkscape opens." msgstr "Verbo que se llamará al abrir Inkscape" -#: ../src/main.cpp:516 +#: ../src/main.cpp:521 msgid "VERB-ID" msgstr "VERB-ID" -#: ../src/main.cpp:520 +#: ../src/main.cpp:525 msgid "Object ID to select when Inkscape opens." msgstr "ID del objeto que se llamará al abrir Inkscape." -#: ../src/main.cpp:521 +#: ../src/main.cpp:526 msgid "OBJECT-ID" msgstr "OBJECT-ID" -#: ../src/main.cpp:525 +#: ../src/main.cpp:530 msgid "Start Inkscape in interactive shell mode." msgstr "Iniciar Inkscape en modo de línea de comandos interactiva." -#: ../src/main.cpp:875 ../src/main.cpp:1259 +#: ../src/main.cpp:535 +msgid "Do not fix legacy (pre-0.92) files' text baseline spacing on opening." +msgstr "No arreglar el espaciado de base de línea (pre-0.92) al abrir." + +#: ../src/main.cpp:540 +msgid "Method used to convert pre-.92 document dpi, if needed." +msgstr "" +"Método utilizado para convertir los ppp de documentos pre-0.92, si fuera " +"necesario." + +#: ../src/main.cpp:890 ../src/main.cpp:1363 msgid "" "[OPTIONS...] [FILE...]\n" "\n" @@ -12114,98 +12320,97 @@ msgstr "" "Opciones disponibles:" #. ## Add a menu for clear() -#: ../src/menus-skeleton.h:18 ../src/ui/dialog/debug.cpp:73 +#: ../src/menus-skeleton.h:18 ../src/ui/dialog/debug.cpp:79 msgid "_File" msgstr "_Archivo" -#. " \n" #. " \n" -#: ../src/menus-skeleton.h:43 ../src/verbs.cpp:2767 ../src/verbs.cpp:2775 +#: ../src/menus-skeleton.h:45 ../src/verbs.cpp:2729 ../src/verbs.cpp:2737 msgid "_Edit" msgstr "_Edición" -#: ../src/menus-skeleton.h:53 ../src/verbs.cpp:2508 +#: ../src/menus-skeleton.h:55 ../src/verbs.cpp:2478 msgid "Paste Si_ze" msgstr "Pegar ta_maño" -#: ../src/menus-skeleton.h:65 +#: ../src/menus-skeleton.h:67 msgid "Clo_ne" msgstr "Clo_nar" -#: ../src/menus-skeleton.h:80 +#: ../src/menus-skeleton.h:81 msgid "Select Sa_me" msgstr "Seleccionar m_ismo" -#: ../src/menus-skeleton.h:101 +#: ../src/menus-skeleton.h:102 msgid "_View" msgstr "_Ver" -#: ../src/menus-skeleton.h:102 +#: ../src/menus-skeleton.h:103 msgid "_Zoom" msgstr "_Zoom" -#: ../src/menus-skeleton.h:118 +#: ../src/menus-skeleton.h:119 msgid "_Display mode" msgstr "Mo_do de visualización" #. Better location in menu needs to be found #. " \n" #. " \n" -#: ../src/menus-skeleton.h:127 +#: ../src/menus-skeleton.h:128 msgid "_Color display mode" msgstr "Modo de visualización de _color" #. Better location in menu needs to be found #. " \n" #. " \n" -#: ../src/menus-skeleton.h:140 +#: ../src/menus-skeleton.h:141 msgid "Sh_ow/Hide" msgstr "M_ostrar/ocultar" #. Not quite ready to be in the menus. #. " \n" -#: ../src/menus-skeleton.h:160 +#: ../src/menus-skeleton.h:161 msgid "_Layer" msgstr "_Capa" -#: ../src/menus-skeleton.h:184 +#: ../src/menus-skeleton.h:185 msgid "_Object" msgstr "_Objeto" -#: ../src/menus-skeleton.h:196 +#: ../src/menus-skeleton.h:197 msgid "Cli_p" msgstr "_Recorte" -#: ../src/menus-skeleton.h:200 +#: ../src/menus-skeleton.h:201 msgid "Mas_k" msgstr "Más_cara" -#: ../src/menus-skeleton.h:204 +#: ../src/menus-skeleton.h:205 msgid "Patter_n" msgstr "Patró_n" -#: ../src/menus-skeleton.h:228 +#: ../src/menus-skeleton.h:229 msgid "_Path" msgstr "_Trayecto" -#: ../src/menus-skeleton.h:260 ../src/ui/dialog/find.cpp:71 -#: ../src/ui/dialog/text-edit.cpp:64 +#: ../src/menus-skeleton.h:261 ../src/ui/dialog/find.cpp:78 +#: ../src/ui/dialog/text-edit.cpp:71 msgid "_Text" msgstr "_Texto" -#: ../src/menus-skeleton.h:278 +#: ../src/menus-skeleton.h:279 msgid "Filter_s" msgstr "Filtro_s" -#: ../src/menus-skeleton.h:284 +#: ../src/menus-skeleton.h:285 msgid "Exte_nsions" msgstr "Exte_nsiones" -#: ../src/menus-skeleton.h:290 +#: ../src/menus-skeleton.h:291 msgid "_Help" msgstr "A_yuda" -#: ../src/menus-skeleton.h:294 +#: ../src/menus-skeleton.h:295 msgid "Tutorials" msgstr "Tutoriales" @@ -12213,72 +12418,72 @@ msgstr "Tutoriales" msgid "Select object(s) to combine." msgstr "Seleccione los objetos para combinar." -#: ../src/path-chemistry.cpp:68 +#: ../src/path-chemistry.cpp:67 msgid "Combining paths..." msgstr "Combinando trayectos..." -#: ../src/path-chemistry.cpp:179 +#: ../src/path-chemistry.cpp:177 msgid "Combine" msgstr "Combinar" -#: ../src/path-chemistry.cpp:187 +#: ../src/path-chemistry.cpp:184 msgid "No path(s) to combine in the selection." msgstr "No hay trayectos combinables en la selección." -#: ../src/path-chemistry.cpp:199 +#: ../src/path-chemistry.cpp:196 msgid "Select path(s) to break apart." msgstr "Seleccione lostrayectos que desea descombinar." -#: ../src/path-chemistry.cpp:203 +#: ../src/path-chemistry.cpp:200 msgid "Breaking apart paths..." msgstr "Descombinando trayectos..." -#: ../src/path-chemistry.cpp:288 +#: ../src/path-chemistry.cpp:283 msgid "Break apart" msgstr "Descombinar" -#: ../src/path-chemistry.cpp:292 +#: ../src/path-chemistry.cpp:286 msgid "No path(s) to break apart in the selection." msgstr "No hay trayectos descombinables en la selección." -#: ../src/path-chemistry.cpp:300 +#: ../src/path-chemistry.cpp:296 msgid "Select object(s) to convert to path." msgstr "Seleccione los objetos que desea convertir en trayectos." -#: ../src/path-chemistry.cpp:306 +#: ../src/path-chemistry.cpp:302 msgid "Converting objects to paths..." msgstr "Convirtiendo objetos en trayectos..." -#: ../src/path-chemistry.cpp:326 +#: ../src/path-chemistry.cpp:321 msgid "Object to path" msgstr "Objeto a trayecto" -#: ../src/path-chemistry.cpp:329 +#: ../src/path-chemistry.cpp:323 msgid "No objects to convert to path in the selection." msgstr "" "No hay objetos que se puedan convertir en trayectos en la selección." -#: ../src/path-chemistry.cpp:613 +#: ../src/path-chemistry.cpp:610 msgid "Select path(s) to reverse." msgstr "Seleccione los trayectos que desea revertir." -#: ../src/path-chemistry.cpp:621 +#: ../src/path-chemistry.cpp:619 msgid "Reversing paths..." msgstr "Revirtiendo trayectos..." -#: ../src/path-chemistry.cpp:659 +#: ../src/path-chemistry.cpp:654 msgid "Reverse path" msgstr "Revertir trayecto" -#: ../src/path-chemistry.cpp:662 +#: ../src/path-chemistry.cpp:656 msgid "No paths to reverse in the selection." msgstr "No hay trayectos reversibles en la selección." -#: ../src/persp3d.cpp:322 +#: ../src/persp3d.cpp:323 msgid "Toggle vanishing point" msgstr "Conmutar punto de fuga" -#: ../src/persp3d.cpp:333 +#: ../src/persp3d.cpp:334 msgid "Toggle multiple vanishing points" msgstr "Conmutar varios puntos de fuga" @@ -12396,8 +12601,8 @@ msgstr "Licencia abierta de tipografias (Open Font License)" #. Create the Title label and edit control #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkTitleAttribute -#: ../src/rdf.cpp:235 ../src/ui/dialog/filedialogimpl-win32.cpp:1956 -#: ../src/ui/dialog/object-attributes.cpp:54 +#: ../src/rdf.cpp:235 ../src/ui/dialog/filedialogimpl-win32.cpp:1885 +#: ../src/ui/dialog/object-attributes.cpp:57 msgid "Title:" msgstr "Título:" @@ -12473,7 +12678,7 @@ msgstr "Relación:" msgid "A related resource" msgstr "Un recurso relacionado:" -#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1889 +#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1924 msgid "Language:" msgstr "Idioma:" @@ -12540,294 +12745,324 @@ msgstr "Fragmento:" msgid "XML fragment for the RDF 'License' section" msgstr "Fragmento XML para la sección RDF «Licencia»" -#: ../src/resource-manager.cpp:334 +#: ../src/resource-manager.cpp:340 msgid "Fixup broken links" msgstr "Arreglar enlaces rotos" -#: ../src/selection-chemistry.cpp:383 +#: ../src/selection-chemistry.cpp:401 msgid "Delete text" msgstr "Borrar texto" -#: ../src/selection-chemistry.cpp:389 +#: ../src/selection-chemistry.cpp:409 msgid "Nothing was deleted." msgstr "No se ha borrado nada." -#: ../src/selection-chemistry.cpp:408 -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:54 -#: ../src/ui/dialog/swatches.cpp:268 ../src/ui/tools/text-tool.cpp:961 -#: ../src/widgets/eraser-toolbar.cpp:143 -#: ../src/widgets/gradient-toolbar.cpp:1182 -#: ../src/widgets/gradient-toolbar.cpp:1196 -#: ../src/widgets/gradient-toolbar.cpp:1210 ../src/widgets/node-toolbar.cpp:399 +#: ../src/selection-chemistry.cpp:426 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:75 +#: ../src/ui/dialog/swatches.cpp:277 ../src/ui/tools/text-tool.cpp:965 +#: ../src/widgets/eraser-toolbar.cpp:120 +#: ../src/widgets/gradient-toolbar.cpp:1181 +#: ../src/widgets/gradient-toolbar.cpp:1195 +#: ../src/widgets/gradient-toolbar.cpp:1209 ../src/widgets/node-toolbar.cpp:401 msgid "Delete" msgstr "Borrar" -#: ../src/selection-chemistry.cpp:443 +#: ../src/selection-chemistry.cpp:454 msgid "Select object(s) to duplicate." msgstr "Seleccione los objetos para duplicar." -#: ../src/selection-chemistry.cpp:548 +#: ../src/selection-chemistry.cpp:551 #, c-format msgid "%s copy" msgstr "%s copia" -#: ../src/selection-chemistry.cpp:571 +#: ../src/selection-chemistry.cpp:574 msgid "Delete all" msgstr "Borrar todo" -#: ../src/selection-chemistry.cpp:695 +#: ../src/selection-chemistry.cpp:762 msgid "Select some objects to group." msgstr "Seleccione varios objetos para agrupar." -#: ../src/selection-chemistry.cpp:763 +#: ../src/selection-chemistry.cpp:775 msgctxt "Verb" msgid "Group" msgstr "Agrupar" -#: ../src/selection-chemistry.cpp:785 +#: ../src/selection-chemistry.cpp:798 msgid "No objects selected to pop out of group." msgstr "No se han seleccionado objetos para extraer del grupo." -#: ../src/selection-chemistry.cpp:794 +#: ../src/selection-chemistry.cpp:808 msgid "Selection not in a group." msgstr "La selección no está en un grupo." -#: ../src/selection-chemistry.cpp:809 +#: ../src/selection-chemistry.cpp:822 msgid "Pop selection from group" msgstr "Extraer selección del grupo" -#: ../src/selection-chemistry.cpp:873 +#: ../src/selection-chemistry.cpp:830 msgid "Select a group to ungroup." msgstr "Seleccione un grupo para desagrupar." -#: ../src/selection-chemistry.cpp:879 +#: ../src/selection-chemistry.cpp:845 msgid "No groups to ungroup in the selection." msgstr "No hay grupos desagrupables en la selección." -#: ../src/selection-chemistry.cpp:886 ../src/sp-item-group.cpp:655 -#: ../src/ui/dialog/objects.cpp:1903 +#: ../src/selection-chemistry.cpp:901 ../src/sp-item-group.cpp:660 +#: ../src/ui/dialog/objects.cpp:1950 msgid "Ungroup" msgstr "Desagrupar" -#: ../src/selection-chemistry.cpp:973 ../src/selection-chemistry.cpp:1025 +#: ../src/selection-chemistry.cpp:988 msgid "Select object(s) to raise." msgstr "Seleccione los objetos para elevar." -#: ../src/selection-chemistry.cpp:980 ../src/selection-chemistry.cpp:1031 -#: ../src/selection-chemistry.cpp:1057 ../src/selection-chemistry.cpp:1114 +#: ../src/selection-chemistry.cpp:994 ../src/selection-chemistry.cpp:1047 +#: ../src/selection-chemistry.cpp:1073 ../src/selection-chemistry.cpp:1188 msgid "" "You cannot raise/lower objects from different groups or layers." msgstr "" "No puede elevar/bajar objetos de diferentes grupos o capas." #. TRANSLATORS: "Raise" means "to raise an object" in the undo history -#: ../src/selection-chemistry.cpp:1019 +#: ../src/selection-chemistry.cpp:1031 msgctxt "Undo action" msgid "Raise" msgstr "Elevar" -#: ../src/selection-chemistry.cpp:1045 +#: ../src/selection-chemistry.cpp:1039 +msgid "Select object(s) to raise to top." +msgstr "Seleccione los objetos que desea traer al frente." + +#: ../src/selection-chemistry.cpp:1060 msgid "Raise to top" msgstr "Traer al frente" -#: ../src/selection-chemistry.cpp:1051 +#: ../src/selection-chemistry.cpp:1067 msgid "Select object(s) to lower." msgstr "Seleccione los objetos que desea enviar al fondo." #. TRANSLATORS: "Lower" means "to lower an object" in the undo history -#: ../src/selection-chemistry.cpp:1100 +#: ../src/selection-chemistry.cpp:1115 msgctxt "Undo action" msgid "Lower" msgstr "Bajar" -#: ../src/selection-chemistry.cpp:1108 +#: ../src/selection-chemistry.cpp:1124 +msgid "Select object(s) to stack down." +msgstr "Seleccione los objetos para enviar al fondo." + +#: ../src/selection-chemistry.cpp:1136 +msgid "We hit bottom." +msgstr "Estamos en el fondo." + +#. TRANSLATORS: "Lower" means "to lower an object" in the undo history +#: ../src/selection-chemistry.cpp:1143 +msgctxt "Undo action" +msgid "stack down" +msgstr "envío al fondo" + +#: ../src/selection-chemistry.cpp:1152 +msgid "Select object(s) to stack up." +msgstr "Seleccione los objetos que desea traer al frente." + +#: ../src/selection-chemistry.cpp:1165 +msgid "We hit top." +msgstr "Estamos arriba." + +#. TRANSLATORS: "Lower" means "to lower an object" in the undo history +#: ../src/selection-chemistry.cpp:1172 +msgctxt "Undo action" +msgid "stack up" +msgstr "enviar al frente" + +#: ../src/selection-chemistry.cpp:1180 msgid "Select object(s) to lower to bottom." msgstr "Seleccione los objetos para enviar al fondo." -#: ../src/selection-chemistry.cpp:1138 +#: ../src/selection-chemistry.cpp:1211 msgid "Lower to bottom" msgstr "Bajar al fondo" -#: ../src/selection-chemistry.cpp:1150 +#: ../src/selection-chemistry.cpp:1221 msgid "Nothing to undo." msgstr "Nada para deshacer." -#: ../src/selection-chemistry.cpp:1161 +#: ../src/selection-chemistry.cpp:1232 msgid "Nothing to redo." msgstr "Nada para rehacer." -#: ../src/selection-chemistry.cpp:1233 +#: ../src/selection-chemistry.cpp:1304 msgid "Paste" msgstr "Pegar" -#: ../src/selection-chemistry.cpp:1241 +#: ../src/selection-chemistry.cpp:1312 msgid "Paste style" msgstr "Pegar estilo" -#: ../src/selection-chemistry.cpp:1251 +#: ../src/selection-chemistry.cpp:1322 msgid "Paste live path effect" msgstr "Pegar efecto de trayecto vivo" -#: ../src/selection-chemistry.cpp:1271 +#: ../src/selection-chemistry.cpp:1344 msgid "Select object(s) to remove live path effects from." msgstr "" "Seleccione los objetos de los que retirar el efecto de trayecto vivo." -#: ../src/selection-chemistry.cpp:1284 +#: ../src/selection-chemistry.cpp:1356 msgid "Remove live path effect" msgstr "Retirar efecto de trayecto vivo" -#: ../src/selection-chemistry.cpp:1293 +#: ../src/selection-chemistry.cpp:1367 msgid "Select object(s) to remove filters from." msgstr "Seleccione los objetos de los que desea retirar los filtros." -#: ../src/selection-chemistry.cpp:1303 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1672 +#: ../src/selection-chemistry.cpp:1377 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1695 msgid "Remove filter" msgstr "Eliminar filtro" -#: ../src/selection-chemistry.cpp:1312 +#: ../src/selection-chemistry.cpp:1386 msgid "Paste size" msgstr "Pegar tamaño" -#: ../src/selection-chemistry.cpp:1321 +#: ../src/selection-chemistry.cpp:1395 msgid "Paste size separately" msgstr "Pegar los tamaños por separado" -#: ../src/selection-chemistry.cpp:1351 +#: ../src/selection-chemistry.cpp:1424 msgid "Select object(s) to move to the layer above." msgstr "Seleccione los objetos que desea mover a la capa superior." -#: ../src/selection-chemistry.cpp:1377 +#: ../src/selection-chemistry.cpp:1450 msgid "Raise to next layer" msgstr "Mover a la siguiente capa" -#: ../src/selection-chemistry.cpp:1384 +#: ../src/selection-chemistry.cpp:1457 msgid "No more layers above." msgstr "No hay capas superiores." -#: ../src/selection-chemistry.cpp:1397 +#: ../src/selection-chemistry.cpp:1468 msgid "Select object(s) to move to the layer below." msgstr "Seleccione los objetos que desea mover a la capa inferior." -#: ../src/selection-chemistry.cpp:1423 +#: ../src/selection-chemistry.cpp:1494 msgid "Lower to previous layer" msgstr "Bajar a la capa anterior" -#: ../src/selection-chemistry.cpp:1430 +#: ../src/selection-chemistry.cpp:1501 msgid "No more layers below." msgstr "No hay capas inferiores." -#: ../src/selection-chemistry.cpp:1443 +#: ../src/selection-chemistry.cpp:1511 msgid "Select object(s) to move." msgstr "Seleccione los objetos que desea mover." -#: ../src/selection-chemistry.cpp:1461 ../src/verbs.cpp:2710 +#: ../src/selection-chemistry.cpp:1529 ../src/verbs.cpp:2672 msgid "Move selection to layer" msgstr "Mover la selección a la capa" -#: ../src/selection-chemistry.cpp:1553 ../src/seltrans.cpp:385 +#. An SVG element cannot have a transform. We could change 'x' and 'y' in response +#. to a translation... but leave that for another day. +#: ../src/selection-chemistry.cpp:1618 ../src/seltrans.cpp:391 msgid "Cannot transform an embedded SVG." msgstr "No se puede transformar un SVG empotrado." -#: ../src/selection-chemistry.cpp:1719 +#: ../src/selection-chemistry.cpp:1788 msgid "Remove transform" msgstr "Eliminar transformación" -#: ../src/selection-chemistry.cpp:1818 +#: ../src/selection-chemistry.cpp:1895 msgid "Rotate 90° CCW" msgstr "Rotar 90° a la izquierda" -#: ../src/selection-chemistry.cpp:1818 +#: ../src/selection-chemistry.cpp:1895 msgid "Rotate 90° CW" msgstr "Rotar 90° a la derecha" -#: ../src/selection-chemistry.cpp:1837 ../src/seltrans.cpp:478 -#: ../src/ui/dialog/transformation.cpp:782 +#: ../src/selection-chemistry.cpp:1916 ../src/seltrans.cpp:484 +#: ../src/ui/dialog/transformation.cpp:890 msgid "Rotate" msgstr "Rotar" -#: ../src/selection-chemistry.cpp:2185 +#: ../src/selection-chemistry.cpp:2265 msgid "Rotate by pixels" msgstr "Rotar por píxeles" -#: ../src/selection-chemistry.cpp:2214 ../src/seltrans.cpp:475 -#: ../src/ui/dialog/transformation.cpp:756 ../src/ui/widget/page-sizer.cpp:412 +#: ../src/selection-chemistry.cpp:2295 ../src/seltrans.cpp:481 +#: ../src/ui/dialog/transformation.cpp:864 ../src/ui/widget/page-sizer.cpp:450 #: ../share/extensions/interp_att_g.inx.h:14 msgid "Scale" msgstr "Escalar" -#: ../src/selection-chemistry.cpp:2238 +#: ../src/selection-chemistry.cpp:2320 msgid "Scale by whole factor" msgstr "Escalar por factor entero" -#: ../src/selection-chemistry.cpp:2252 +#: ../src/selection-chemistry.cpp:2335 msgid "Move vertically" msgstr "Mover verticalmente" -#: ../src/selection-chemistry.cpp:2255 +#: ../src/selection-chemistry.cpp:2338 msgid "Move horizontally" msgstr "Mover horizontalmente" -#: ../src/selection-chemistry.cpp:2258 ../src/selection-chemistry.cpp:2283 -#: ../src/seltrans.cpp:472 ../src/ui/dialog/transformation.cpp:693 +#: ../src/selection-chemistry.cpp:2341 ../src/selection-chemistry.cpp:2367 +#: ../src/seltrans.cpp:478 ../src/ui/dialog/transformation.cpp:801 msgid "Move" msgstr "Mover" -#: ../src/selection-chemistry.cpp:2277 +#: ../src/selection-chemistry.cpp:2361 msgid "Move vertically by pixels" msgstr "Mover verticalmente por píxeles" -#: ../src/selection-chemistry.cpp:2280 +#: ../src/selection-chemistry.cpp:2364 msgid "Move horizontally by pixels" msgstr "Mover horizontalmente por píxeles" -#: ../src/selection-chemistry.cpp:2484 +#: ../src/selection-chemistry.cpp:2567 msgid "The selection has no applied path effect." msgstr "La selección no tiene aplicado ningún efecto de trayecto." -#: ../src/selection-chemistry.cpp:2574 ../src/ui/dialog/clonetiler.cpp:2061 +#: ../src/selection-chemistry.cpp:2659 ../src/ui/dialog/clonetiler.cpp:2238 msgid "Select an object to clone." msgstr "Seleccione el objeto que desea clonar." -#: ../src/selection-chemistry.cpp:2609 +#: ../src/selection-chemistry.cpp:2694 msgctxt "Action" msgid "Clone" msgstr "Clonar" -#: ../src/selection-chemistry.cpp:2618 +#: ../src/selection-chemistry.cpp:2708 msgid "Select clones to relink." msgstr "Seleccione los clones que desea reconectar." -#: ../src/selection-chemistry.cpp:2626 +#: ../src/selection-chemistry.cpp:2715 msgid "Copy an object to clipboard to relink clones to." msgstr "Copie un objeto al portapapeles al que reconectar los clones." -#: ../src/selection-chemistry.cpp:2648 +#: ../src/selection-chemistry.cpp:2736 msgid "No clones to relink in the selection." msgstr "No hay clones reasociables en la selección." -#: ../src/selection-chemistry.cpp:2651 +#: ../src/selection-chemistry.cpp:2739 msgid "Relink clone" msgstr "Resconectar clon" -#: ../src/selection-chemistry.cpp:2660 ../src/selection-chemistry.cpp:2746 +#: ../src/selection-chemistry.cpp:2753 msgid "Select clones to unlink." msgstr "Seleccione los clones que desea desconectar." -#: ../src/selection-chemistry.cpp:2733 ../src/selection-chemistry.cpp:2764 +#: ../src/selection-chemistry.cpp:2806 msgid "No clones to unlink in the selection." msgstr "No hay clones desconectables en la selección." -#: ../src/selection-chemistry.cpp:2738 +#: ../src/selection-chemistry.cpp:2810 msgid "Unlink clone" msgstr "Desconectar clon" -#: ../src/selection-chemistry.cpp:2768 -msgid "Unlink clone recursively" -msgstr "Desconectar clon recursivamente" - -#: ../src/selection-chemistry.cpp:2778 +#: ../src/selection-chemistry.cpp:2823 msgid "" "Select a clone to go to its original. Select a linked offset " "to go to its source. Select a text on path to go to the path. Select " @@ -12837,7 +13072,7 @@ msgstr "" "enlazado para ir a su origen. Seleccione un texto en trayecto " "para ir al trayecto. Seleccione un texto fluido para ir a su marco." -#: ../src/selection-chemistry.cpp:2831 +#: ../src/selection-chemistry.cpp:2873 msgid "" "Cannot find the object to select (orphaned clone, offset, textpath, " "flowed text?)" @@ -12845,230 +13080,230 @@ msgstr "" "No se pudo encontrar el objeto que quiere seleccionar (¿clon " "huérfano, desvío, trayecto de un texto o texto fluido?)" -#: ../src/selection-chemistry.cpp:2838 +#: ../src/selection-chemistry.cpp:2879 msgid "" "The object you're trying to select is not visible (it is in <" "defs>)" msgstr "" "El objeto que desea seleccionar no es visible (está en <defs>)" -#: ../src/selection-chemistry.cpp:2924 +#: ../src/selection-chemistry.cpp:2969 msgid "Select path(s) to fill." msgstr "Seleccione trayecto(s) para llenar." -#: ../src/selection-chemistry.cpp:2941 +#: ../src/selection-chemistry.cpp:2987 msgid "Select object(s) to convert to marker." msgstr "Seleccione los objetos que desea convertir a marcador." -#: ../src/selection-chemistry.cpp:3013 +#: ../src/selection-chemistry.cpp:3061 msgid "Objects to marker" msgstr "Objetos a marcador" -#: ../src/selection-chemistry.cpp:3036 +#: ../src/selection-chemistry.cpp:3087 msgid "Select object(s) to convert to guides." msgstr "Seleccione los objetos que desea convertir a guías." -#: ../src/selection-chemistry.cpp:3057 +#: ../src/selection-chemistry.cpp:3108 msgid "Objects to guides" msgstr "Objetos a guías" -#: ../src/selection-chemistry.cpp:3089 +#: ../src/selection-chemistry.cpp:3144 msgid "Select objects to convert to symbol." msgstr "Seleccione los objetos que desea convertir a símbolo." -#: ../src/selection-chemistry.cpp:3190 +#: ../src/selection-chemistry.cpp:3248 msgid "Group to symbol" msgstr "Grupo a símbolo" -#: ../src/selection-chemistry.cpp:3204 +#: ../src/selection-chemistry.cpp:3267 msgid "Select a symbol to extract objects from." msgstr "Seleccione un símbolo del que extraer objetos." -#: ../src/selection-chemistry.cpp:3214 +#: ../src/selection-chemistry.cpp:3276 msgid "Select only one symbol in Symbol dialog to convert to group." msgstr "" "Seleccione un solo símbolo del diálogo Símbolos que desea convertir " "en grupo." -#: ../src/selection-chemistry.cpp:3270 +#: ../src/selection-chemistry.cpp:3332 msgid "Group from symbol" msgstr "Grupo de símbolo" -#: ../src/selection-chemistry.cpp:3285 +#: ../src/selection-chemistry.cpp:3350 msgid "Select object(s) to convert to pattern." msgstr "Seleccione los objetos que desea convertir en patrón." -#: ../src/selection-chemistry.cpp:3381 +#: ../src/selection-chemistry.cpp:3446 msgid "Objects to pattern" msgstr "Objetos a patrón" -#: ../src/selection-chemistry.cpp:3393 +#: ../src/selection-chemistry.cpp:3462 msgid "Select an object with pattern fill to extract objects from." msgstr "" "Seleccione un objeto con relleno de mosaico del que extraer objetos." -#: ../src/selection-chemistry.cpp:3453 +#: ../src/selection-chemistry.cpp:3521 msgid "No pattern fills in the selection." msgstr "No hay rellenos de mosaico en la selección." -#: ../src/selection-chemistry.cpp:3456 +#: ../src/selection-chemistry.cpp:3524 msgid "Pattern to objects" msgstr "Patrón a objetos" -#: ../src/selection-chemistry.cpp:3538 +#: ../src/selection-chemistry.cpp:3610 msgid "Select object(s) to make a bitmap copy." msgstr "" "Seleccione los objetos de los que desea hacer una copia en mapa de " "bits." -#: ../src/selection-chemistry.cpp:3542 +#: ../src/selection-chemistry.cpp:3614 msgid "Rendering bitmap..." msgstr "Generando mapa de bits..." -#: ../src/selection-chemistry.cpp:3729 +#: ../src/selection-chemistry.cpp:3799 msgid "Create bitmap" msgstr "Crear mapa de bits" -#: ../src/selection-chemistry.cpp:3751 ../src/selection-chemistry.cpp:3861 +#: ../src/selection-chemistry.cpp:3824 ../src/selection-chemistry.cpp:3936 msgid "Select object(s) to create clippath or mask from." msgstr "" "Seleccione los objetos de los que crear el trayecto o la máscara de " "recorte." -#: ../src/selection-chemistry.cpp:3837 ../src/ui/dialog/objects.cpp:1909 +#: ../src/selection-chemistry.cpp:3910 ../src/ui/dialog/objects.cpp:1956 msgid "Create Clip Group" msgstr "Crear grupo de recorte" -#: ../src/selection-chemistry.cpp:3865 +#: ../src/selection-chemistry.cpp:3939 msgid "Select mask object and object(s) to apply clippath or mask to." msgstr "" "Seleccione el objeto de máscara y los objetos a los que aplicar el " "trayecto o máscara de recorte." -#: ../src/selection-chemistry.cpp:4008 +#: ../src/selection-chemistry.cpp:4086 msgid "Set clipping path" msgstr "Crear trayecto de recorte" -#: ../src/selection-chemistry.cpp:4010 +#: ../src/selection-chemistry.cpp:4088 msgid "Set mask" msgstr "Crear máscara" -#: ../src/selection-chemistry.cpp:4022 +#: ../src/selection-chemistry.cpp:4103 msgid "Select object(s) to remove clippath or mask from." msgstr "" "Seleccione los objetos de los que desea eliminar el trayecto o la " "máscara de recorte." -#: ../src/selection-chemistry.cpp:4139 +#: ../src/selection-chemistry.cpp:4219 msgid "Release clipping path" msgstr "Liberar trayecto de recorte" -#: ../src/selection-chemistry.cpp:4141 +#: ../src/selection-chemistry.cpp:4221 msgid "Release mask" msgstr "Liberar máscara" -#: ../src/selection-chemistry.cpp:4157 +#: ../src/selection-chemistry.cpp:4240 msgid "Select object(s) to fit canvas to." msgstr "Seleccione los objetos a los que ajustar el lienzo." #. Fit Page -#: ../src/selection-chemistry.cpp:4165 ../src/verbs.cpp:3056 +#: ../src/selection-chemistry.cpp:4260 ../src/verbs.cpp:3018 msgid "Fit Page to Selection" msgstr "Ajustar la página a la selección" -#: ../src/selection-chemistry.cpp:4198 ../src/verbs.cpp:3058 +#: ../src/selection-chemistry.cpp:4289 ../src/verbs.cpp:3020 msgid "Fit Page to Drawing" msgstr "Ajustar el lienzo al dibujo" -#: ../src/selection-chemistry.cpp:4219 +#: ../src/selection-chemistry.cpp:4310 msgid "Fit Page to Selection or Drawing" msgstr "Ajustar el lienzo a la selección o el dibujo" -#: ../src/selection-describer.cpp:129 +#: ../src/selection-describer.cpp:138 msgid "root" msgstr "raíz" -#: ../src/selection-describer.cpp:131 ../src/widgets/ege-paint-def.cpp:66 +#: ../src/selection-describer.cpp:140 ../src/widgets/ege-paint-def.cpp:66 #: ../src/widgets/ege-paint-def.cpp:90 msgid "none" msgstr "ninguno" -#: ../src/selection-describer.cpp:143 +#: ../src/selection-describer.cpp:152 #, c-format msgid "layer %s" msgstr "capa %s" -#: ../src/selection-describer.cpp:145 +#: ../src/selection-describer.cpp:154 #, c-format msgid "layer %s" msgstr "capa %s" -#: ../src/selection-describer.cpp:156 +#: ../src/selection-describer.cpp:165 #, c-format msgid "%s" msgstr "%s" -#: ../src/selection-describer.cpp:166 +#: ../src/selection-describer.cpp:175 #, c-format msgid " in %s" msgstr " en %s" -#: ../src/selection-describer.cpp:168 +#: ../src/selection-describer.cpp:177 msgid " hidden in definitions" msgstr "oculto en definiciones" -#: ../src/selection-describer.cpp:170 +#: ../src/selection-describer.cpp:179 #, c-format msgid " in group %s (%s)" msgstr " en el grupo %s (%s)" -#: ../src/selection-describer.cpp:172 +#: ../src/selection-describer.cpp:181 #, c-format msgid " in unnamed group (%s)" msgstr " en el grupo sin nombre (%s)" -#: ../src/selection-describer.cpp:174 +#: ../src/selection-describer.cpp:183 #, c-format msgid " in %i parent (%s)" msgid_plural " in %i parents (%s)" msgstr[0] " en %i pariente (%s)" msgstr[1] " en %i parientes (%s)" -#: ../src/selection-describer.cpp:177 +#: ../src/selection-describer.cpp:186 #, c-format msgid " in %i layer" msgid_plural " in %i layers" msgstr[0] " en %i capa" msgstr[1] " en %i capas" -#: ../src/selection-describer.cpp:189 +#: ../src/selection-describer.cpp:198 msgid "Convert symbol to group to edit" msgstr "Convertir símbolo en grupo para editar" -#: ../src/selection-describer.cpp:193 +#: ../src/selection-describer.cpp:202 msgid "Remove from symbols tray to edit symbol" msgstr "Eliminar de la bandeja de símbolos para editar el símbolo" -#: ../src/selection-describer.cpp:199 +#: ../src/selection-describer.cpp:208 msgid "Use Shift+D to look up original" msgstr "Utilice Mayús+D para buscar el original." -#: ../src/selection-describer.cpp:205 +#: ../src/selection-describer.cpp:214 msgid "Use Shift+D to look up path" msgstr "Utilice Mayús+D para buscar el trayecto" -#: ../src/selection-describer.cpp:211 +#: ../src/selection-describer.cpp:220 msgid "Use Shift+D to look up frame" msgstr "Utilice Mayús+D para buscar el marco" -#: ../src/selection-describer.cpp:227 +#: ../src/selection-describer.cpp:236 #, c-format msgid "%1$i objects selected of type %2$s" msgid_plural "%1$i objects selected of types %2$s" msgstr[0] "%1$i objeto seleccionado de tipo %2$s" msgstr[1] "%1$i objetos seleccionados de tipo %2$s" -#: ../src/selection-describer.cpp:237 +#: ../src/selection-describer.cpp:246 #, c-format msgid "; %d filtered object " msgid_plural "; %d filtered objects " @@ -13117,23 +13352,23 @@ msgstr "" "Centro de rotación e inclinación: arrastre para reposicionar; escalar " "con Mayús también utiliza este centro" -#: ../src/seltrans.cpp:481 ../src/ui/dialog/transformation.cpp:871 +#: ../src/seltrans.cpp:487 ../src/ui/dialog/transformation.cpp:979 msgid "Skew" msgstr "Inclinar" -#: ../src/seltrans.cpp:495 +#: ../src/seltrans.cpp:503 msgid "Set center" msgstr "Fijar centro" -#: ../src/seltrans.cpp:568 +#: ../src/seltrans.cpp:576 msgid "Stamp" msgstr "Sellar" -#: ../src/seltrans.cpp:718 +#: ../src/seltrans.cpp:725 msgid "Reset center" msgstr "Restablecer centro" -#: ../src/seltrans.cpp:956 ../src/seltrans.cpp:1060 +#: ../src/seltrans.cpp:963 ../src/seltrans.cpp:1067 #, c-format msgid "Scale: %0.2f%% x %0.2f%%; with Ctrl to lock ratio" msgstr "" @@ -13141,24 +13376,24 @@ msgstr "" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1197 +#: ../src/seltrans.cpp:1204 #, c-format msgid "Skew: %0.2f°; with Ctrl to snap angle" msgstr "Inclinar: %0.2f°; con Ctrl para fijar el ángulo" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1273 +#: ../src/seltrans.cpp:1280 #, c-format msgid "Rotate: %0.2f°; with Ctrl to snap angle" msgstr "Rotar: %0.2f°; con Ctrl para fijar el ángulo" -#: ../src/seltrans.cpp:1310 +#: ../src/seltrans.cpp:1317 #, c-format msgid "Move center to %s, %s" msgstr "Mover el centro a %s, %s" -#: ../src/seltrans.cpp:1456 +#: ../src/seltrans.cpp:1463 #, c-format msgid "" "Move by %s, %s; with Ctrl to restrict to horizontal/vertical; " @@ -13167,17 +13402,21 @@ msgstr "" "Mover: %s, %s; con Ctrl para restringir a la horizontal/" "vertical; con Mayús para desactivar el ajuste" -#: ../src/shortcuts.cpp:224 +#: ../src/shortcuts.cpp:232 #, c-format msgid "Keyboard directory (%s) is unavailable." msgstr "El directorio de teclados (%s) no está disponible." -#: ../src/shortcuts.cpp:335 ../src/ui/dialog/export.cpp:1289 -#: ../src/ui/dialog/export.cpp:1323 +#: ../src/shortcuts.cpp:343 ../src/ui/dialog/export.cpp:1305 +#: ../src/ui/dialog/export.cpp:1339 msgid "Select a filename for exporting" msgstr "Seleccione un nombre de archivo para exportar" -#: ../src/shortcuts.cpp:368 +#: ../src/shortcuts.cpp:348 +msgid "Inkscape shortcuts (*.xml)" +msgstr "Atajos de Inkscape (*.xml)" + +#: ../src/shortcuts.cpp:377 msgid "Select a file to import" msgstr "Seleccione un archivo para importar" @@ -13190,18 +13429,18 @@ msgstr "a %s" msgid "without URI" msgstr "sin URI" -#: ../src/sp-ellipse.cpp:354 +#: ../src/sp-ellipse.cpp:357 msgid "Segment" msgstr "Segmento" -#: ../src/sp-ellipse.cpp:356 +#: ../src/sp-ellipse.cpp:359 msgid "Arc" msgstr "Arco" #. Ellipse -#: ../src/sp-ellipse.cpp:359 ../src/sp-ellipse.cpp:366 -#: ../src/ui/dialog/inkscape-preferences.cpp:409 -#: ../src/widgets/pencil-toolbar.cpp:176 +#: ../src/sp-ellipse.cpp:362 ../src/sp-ellipse.cpp:369 +#: ../src/ui/dialog/inkscape-preferences.cpp:421 +#: ../src/widgets/pencil-toolbar.cpp:178 msgid "Ellipse" msgstr "Elipse" @@ -13209,12 +13448,12 @@ msgstr "Elipse" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/sp-ellipse.cpp:363 +#: ../src/sp-ellipse.cpp:366 msgid "Circle" msgstr "Círculo" #. TRANSLATORS: "Flow region" is an area where text is allowed to flow -#: ../src/sp-flowregion.cpp:178 +#: ../src/sp-flowregion.cpp:181 msgid "Flow Region" msgstr "Área de flujo" @@ -13222,44 +13461,44 @@ msgstr "Área de flujo" #. * flow excluded region. flowRegionExclude in SVG 1.2: see #. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegion-elem and #. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegionExclude-elem. -#: ../src/sp-flowregion.cpp:331 +#: ../src/sp-flowregion.cpp:334 msgid "Flow Excluded Region" msgstr "Área excluida de flujo" -#: ../src/sp-flowtext.cpp:279 +#: ../src/sp-flowtext.cpp:284 msgid "Flowed Text" msgstr "Texto fluido" -#: ../src/sp-flowtext.cpp:281 +#: ../src/sp-flowtext.cpp:286 msgid "Linked Flowed Text" msgstr "Texto fluido enlazado" -#: ../src/sp-flowtext.cpp:287 ../src/sp-text.cpp:368 -#: ../src/ui/tools/text-tool.cpp:1552 +#: ../src/sp-flowtext.cpp:292 ../src/sp-text.cpp:373 +#: ../src/ui/tools/text-tool.cpp:1556 msgid " [truncated]" msgstr " [truncado]" -#: ../src/sp-flowtext.cpp:289 +#: ../src/sp-flowtext.cpp:294 #, c-format msgid "(%d character%s)" msgid_plural "(%d characters%s)" msgstr[0] "(%d caracter%s)" msgstr[1] "(%d caracteres%s)" -#: ../src/sp-guide.cpp:258 +#: ../src/sp-guide.cpp:262 msgid "Create Guides Around the Page" msgstr "Crear guías alrededor de la página" -#: ../src/sp-guide.cpp:271 ../src/verbs.cpp:2582 +#: ../src/sp-guide.cpp:275 ../src/verbs.cpp:2550 msgid "Delete All Guides" msgstr "Borrar todas las guías" #. Guide has probably been deleted and no longer has an attached namedview. -#: ../src/sp-guide.cpp:482 +#: ../src/sp-guide.cpp:486 msgid "Deleted" msgstr "Borradas" -#: ../src/sp-guide.cpp:491 +#: ../src/sp-guide.cpp:495 msgid "" "Shift+drag to rotate, Ctrl+drag to move origin, Del to " "delete" @@ -13267,167 +13506,167 @@ msgstr "" "Mayús + arrastrar para rotar, Ctrl + arrastrar para mover el " "origen. Supr para eliminar." -#: ../src/sp-guide.cpp:495 +#: ../src/sp-guide.cpp:499 #, c-format msgid "vertical, at %s" msgstr "vertical en %s" -#: ../src/sp-guide.cpp:498 +#: ../src/sp-guide.cpp:502 #, c-format msgid "horizontal, at %s" msgstr "horizontal en %s" -#: ../src/sp-guide.cpp:503 +#: ../src/sp-guide.cpp:507 #, c-format msgid "at %d degrees, through (%s,%s)" msgstr "a %d grados, atravesando (%s,%s)" -#: ../src/sp-image.cpp:514 +#: ../src/sp-image.cpp:517 msgid "embedded" msgstr "incrustado" -#: ../src/sp-image.cpp:522 +#: ../src/sp-image.cpp:525 #, c-format msgid "[bad reference]: %s" msgstr "[referencia errónea]: %s" -#: ../src/sp-image.cpp:523 +#: ../src/sp-image.cpp:526 #, c-format msgid "%d × %d: %s" msgstr "%d × %d: %s" -#: ../src/sp-item-group.cpp:312 ../src/ui/dialog/objects.cpp:1902 +#: ../src/sp-item-group.cpp:318 ../src/ui/dialog/objects.cpp:1949 msgid "Group" msgstr "Grupo" -#: ../src/sp-item-group.cpp:318 ../src/sp-switch.cpp:69 +#: ../src/sp-item-group.cpp:324 ../src/sp-switch.cpp:69 #, c-format msgid "of %d object" msgstr "de %d objeto" -#: ../src/sp-item-group.cpp:318 ../src/sp-switch.cpp:69 +#: ../src/sp-item-group.cpp:324 ../src/sp-switch.cpp:69 #, c-format msgid "of %d objects" msgstr "de %d objetos" -#: ../src/sp-item.cpp:1026 ../src/verbs.cpp:207 +#: ../src/sp-item.cpp:1040 ../src/verbs.cpp:213 msgid "Object" msgstr "Objeto" -#: ../src/sp-item.cpp:1038 +#: ../src/sp-item.cpp:1052 #, c-format msgid "%s; clipped" msgstr "%s; recortado" -#: ../src/sp-item.cpp:1044 +#: ../src/sp-item.cpp:1058 #, c-format msgid "%s; masked" msgstr "%s; enmascarado" -#: ../src/sp-item.cpp:1054 +#: ../src/sp-item.cpp:1068 #, c-format msgid "%s; filtered (%s)" msgstr "%s; filtrado (%s)" -#: ../src/sp-item.cpp:1056 +#: ../src/sp-item.cpp:1070 #, c-format msgid "%s; filtered" msgstr "%s; filtrado" -#: ../src/sp-line.cpp:112 +#: ../src/sp-line.cpp:113 msgid "Line" msgstr "Línea" -#: ../src/sp-lpe-item.cpp:255 ../src/sp-lpe-item.cpp:707 +#: ../src/sp-lpe-item.cpp:255 ../src/sp-lpe-item.cpp:686 msgid "An exception occurred during execution of the Path Effect." msgstr "Ha ocurrido una excepción durante la ejecución del efecto de trayecto." -#: ../src/sp-offset.cpp:326 +#: ../src/sp-offset.cpp:331 msgid "Linked Offset" msgstr "Desvío enlazado" -#: ../src/sp-offset.cpp:328 +#: ../src/sp-offset.cpp:333 msgid "Dynamic Offset" msgstr "Desvío dinámico" #. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign -#: ../src/sp-offset.cpp:334 +#: ../src/sp-offset.cpp:339 #, c-format msgid "%s by %f pt" msgstr "%s por %f pt" -#: ../src/sp-offset.cpp:335 +#: ../src/sp-offset.cpp:340 msgid "outset" msgstr "ampliar" -#: ../src/sp-offset.cpp:335 +#: ../src/sp-offset.cpp:340 msgid "inset" msgstr "reducir" -#: ../src/sp-path.cpp:57 +#: ../src/sp-path.cpp:59 msgid "Path" msgstr "Trayecto" -#: ../src/sp-path.cpp:82 +#: ../src/sp-path.cpp:84 #, c-format msgid ", path effect: %s" msgstr ", efecto de trayecto: %s" -#: ../src/sp-path.cpp:85 +#: ../src/sp-path.cpp:87 #, c-format msgid "%i node%s" msgstr "%i nodo%s" -#: ../src/sp-path.cpp:85 +#: ../src/sp-path.cpp:87 #, c-format msgid "%i nodes%s" msgstr "%i nodos%s" -#: ../src/sp-polygon.cpp:171 +#: ../src/sp-polygon.cpp:172 msgid "Polygon" msgstr "Polígono" -#: ../src/sp-polyline.cpp:119 +#: ../src/sp-polyline.cpp:121 msgid "Polyline" msgstr "Polilínea" #. Rectangle -#: ../src/sp-rect.cpp:194 ../src/ui/dialog/inkscape-preferences.cpp:399 +#: ../src/sp-rect.cpp:197 ../src/ui/dialog/inkscape-preferences.cpp:411 msgid "Rectangle" msgstr "Rectángulo" #. Spiral -#: ../src/sp-spiral.cpp:218 ../src/ui/dialog/inkscape-preferences.cpp:417 -#: ../share/extensions/gcodetools_area.inx.h:11 +#: ../src/sp-spiral.cpp:220 ../src/ui/dialog/inkscape-preferences.cpp:429 +#: ../share/extensions/gcodetools_area.inx.h:16 msgid "Spiral" msgstr "Espiral" #. TRANSLATORS: since turn count isn't an integer, please adjust the #. string as needed to deal with an localized plural forms. -#: ../src/sp-spiral.cpp:224 +#: ../src/sp-spiral.cpp:226 #, c-format msgid "with %3f turns" msgstr "con %3f vueltas" #. Star -#: ../src/sp-star.cpp:245 ../src/ui/dialog/inkscape-preferences.cpp:413 -#: ../src/widgets/star-toolbar.cpp:467 +#: ../src/sp-star.cpp:247 ../src/ui/dialog/inkscape-preferences.cpp:425 +#: ../src/widgets/star-toolbar.cpp:469 msgid "Star" msgstr "Estrella" -#: ../src/sp-star.cpp:246 ../src/widgets/star-toolbar.cpp:460 +#: ../src/sp-star.cpp:248 ../src/widgets/star-toolbar.cpp:462 msgid "Polygon" msgstr "Polígono" #. while there will never be less than 3 vertices, we still need to #. make calls to ngettext because the pluralization may be different #. for various numbers >=3. The singular form is used as the index. -#: ../src/sp-star.cpp:253 +#: ../src/sp-star.cpp:255 #, c-format msgid "with %d vertex" msgstr "con %d vértice" -#: ../src/sp-star.cpp:253 +#: ../src/sp-star.cpp:255 #, c-format msgid "with %d vertices" msgstr "con %d vértices" @@ -13436,7 +13675,7 @@ msgstr "con %d vértices" msgid "Conditional Group" msgstr "Grupo condicional" -#: ../src/sp-text.cpp:349 ../src/verbs.cpp:341 +#: ../src/sp-text.cpp:354 ../src/verbs.cpp:347 #: ../share/extensions/lorem_ipsum.inx.h:8 #: ../share/extensions/replace_font.inx.h:11 ../share/extensions/split.inx.h:10 #: ../share/extensions/text_braille.inx.h:2 @@ -13451,96 +13690,89 @@ msgstr "Grupo condicional" msgid "Text" msgstr "Texto" -#: ../src/sp-text.cpp:372 +#: ../src/sp-text.cpp:377 #, c-format msgid "on path%s (%s, %s)" msgstr "en trayecto%s (%s, %s)" -#: ../src/sp-text.cpp:373 +#: ../src/sp-text.cpp:378 #, c-format msgid "%s (%s, %s)" msgstr "%s (%s, %s)" -#: ../src/sp-tref.cpp:213 +#: ../src/sp-tref.cpp:218 msgid "Cloned Character Data" msgstr "Datos de carácter clonados" -#: ../src/sp-tref.cpp:229 +#: ../src/sp-tref.cpp:234 msgid " from " msgstr " de " -#: ../src/sp-tref.cpp:235 ../src/sp-use.cpp:270 +#: ../src/sp-tref.cpp:240 ../src/sp-use.cpp:271 msgid "[orphaned]" msgstr "[huérfano]" -#: ../src/sp-tspan.cpp:215 +#: ../src/sp-tspan.cpp:217 msgid "Text Span" msgstr "Amplitud del texto" -#: ../src/sp-use.cpp:233 +#: ../src/sp-use.cpp:234 msgid "Symbol" msgstr "Símbolo" -#: ../src/sp-use.cpp:235 +#: ../src/sp-use.cpp:236 msgid "Clone" msgstr "Clon" -#: ../src/sp-use.cpp:243 ../src/sp-use.cpp:245 ../src/sp-use.cpp:247 +#: ../src/sp-use.cpp:244 ../src/sp-use.cpp:246 ../src/sp-use.cpp:248 #, c-format msgid "called %s" msgstr "llamado %s" -#: ../src/sp-use.cpp:247 +#: ../src/sp-use.cpp:248 msgid "Unnamed Symbol" msgstr "Símbolo sin nombrar" #. TRANSLATORS: Used for statusbar description for long chains: #. * "Clone of: Clone of: ... in Layer 1". -#: ../src/sp-use.cpp:256 +#: ../src/sp-use.cpp:257 msgid "..." msgstr "..." -#: ../src/sp-use.cpp:265 +#: ../src/sp-use.cpp:266 #, c-format msgid "of: %s" msgstr "de: %s" -#: ../src/splivarot.cpp:58 +#: ../src/splivarot.cpp:71 ../src/splivarot.cpp:77 msgid "Union" msgstr "Unión" -#: ../src/splivarot.cpp:65 +#: ../src/splivarot.cpp:83 msgid "Intersection" msgstr "Intersección" -#: ../src/splivarot.cpp:86 +#: ../src/splivarot.cpp:106 ../src/splivarot.cpp:112 msgid "Division" msgstr "División" -#: ../src/splivarot.cpp:93 +#: ../src/splivarot.cpp:118 msgid "Cut path" msgstr "Cortar trayecto" -#: ../src/splivarot.cpp:317 -msgid "Select at least 1 path to perform a boolean union." -msgstr "" -"Debe seleccionar al menos un trayecto para realizar una unión " -"booleana." - -#: ../src/splivarot.cpp:320 +#: ../src/splivarot.cpp:342 msgid "Select at least 2 paths to perform a boolean operation." msgstr "" "Debe seleccionar al menos dos trayectos para realizar una operación " "booleana." -#: ../src/splivarot.cpp:323 -msgid "" -"One of the objects is not a path, cannot perform boolean operation." +#: ../src/splivarot.cpp:346 +msgid "Select at least 1 path to perform a boolean union." msgstr "" -"Uno de los objetos no es un trayecto, no se puede realizar una " -"operación booleana." +"Debe seleccionar al menos un trayecto para realizar una unión " +"booleana." -#: ../src/splivarot.cpp:326 +#: ../src/splivarot.cpp:363 ../src/splivarot.cpp:378 msgid "" "Unable to determine the z-order of the objects selected for " "difference, XOR, division, or path cut." @@ -13548,83 +13780,90 @@ msgstr "" "No se pudo determinar el orden-z de los objetos seleccionados para la " "diferencia, XOR, división o corte de trayecto." -#: ../src/splivarot.cpp:1644 +#: ../src/splivarot.cpp:408 +msgid "" +"One of the objects is not a path, cannot perform boolean operation." +msgstr "" +"Uno de los objetos no es un trayecto, no se puede realizar una " +"operación booleana." + +#: ../src/splivarot.cpp:1153 msgid "Select stroked path(s) to convert stroke to path." msgstr "" "Seleccione los trayectos rellenos para convertir el relleno en " "trayecto." -#: ../src/splivarot.cpp:1660 +#: ../src/splivarot.cpp:1511 msgid "Convert stroke to path" msgstr "Convertir pincelada en trayecto" #. TRANSLATORS: "to outline" means "to convert stroke to path" -#: ../src/splivarot.cpp:1663 +#: ../src/splivarot.cpp:1514 msgid "No stroked paths in the selection." msgstr "No hay trayectos rellenos en la selección." -#: ../src/splivarot.cpp:1734 +#: ../src/splivarot.cpp:1585 msgid "Selected object is not a path, cannot inset/outset." msgstr "" "El objeto seleccionado no es un trayecto, no se puede reducir/ampliar." -#: ../src/splivarot.cpp:1825 ../src/splivarot.cpp:1892 +#: ../src/splivarot.cpp:1676 ../src/splivarot.cpp:1743 msgid "Create linked offset" msgstr "Crear desvío enlazado" -#: ../src/splivarot.cpp:1826 ../src/splivarot.cpp:1893 +#: ../src/splivarot.cpp:1677 ../src/splivarot.cpp:1744 msgid "Create dynamic offset" msgstr "Crear desvió dinámico" -#: ../src/splivarot.cpp:1918 +#: ../src/splivarot.cpp:1769 msgid "Select path(s) to inset/outset." msgstr "Seleccione trayectos para reducir/ampliar." -#: ../src/splivarot.cpp:2114 +#: ../src/splivarot.cpp:1965 msgid "Outset path" msgstr "Trayecto de ampliación" -#: ../src/splivarot.cpp:2114 +#: ../src/splivarot.cpp:1965 msgid "Inset path" msgstr "Trayecto de reducción" -#: ../src/splivarot.cpp:2116 +#: ../src/splivarot.cpp:1967 msgid "No paths to inset/outset in the selection." msgstr "No hay trayectos para reducir/ampliar en la selección." -#: ../src/splivarot.cpp:2278 +#: ../src/splivarot.cpp:2129 msgid "Simplifying paths (separately):" msgstr "Simplificando trayectos (por separado):" -#: ../src/splivarot.cpp:2280 +#: ../src/splivarot.cpp:2131 msgid "Simplifying paths:" msgstr "Simplificando trayectos:" -#: ../src/splivarot.cpp:2317 +#: ../src/splivarot.cpp:2168 #, c-format msgid "%s %d of %d paths simplified..." msgstr "%s %d de %d trayectos simplificados..." -#: ../src/splivarot.cpp:2330 +#: ../src/splivarot.cpp:2181 #, c-format msgid "%d paths simplified." msgstr "%d trayectos simplificados." -#: ../src/splivarot.cpp:2344 +#: ../src/splivarot.cpp:2195 msgid "Select path(s) to simplify." msgstr "Seleccione trayectos para simplificar." -#: ../src/splivarot.cpp:2360 +#: ../src/splivarot.cpp:2211 msgid "No paths to simplify in the selection." msgstr "No hay trayectos simplificables en la selección." -#: ../src/text-chemistry.cpp:90 +#: ../src/text-chemistry.cpp:91 msgid "Select a text and a path to put text on path." msgstr "" "Debe seleccionar un texto y un trayecto para poner un texto en " "trayecto." -#: ../src/text-chemistry.cpp:95 +#: ../src/text-chemistry.cpp:96 msgid "" "This text object is already put on a path. Remove it from the path " "first. Use Shift+D to look up its path." @@ -13633,7 +13872,7 @@ msgstr "" "trayecto. Utilice Mayús+D para buscar su trayecto." #. rect is the only SPShape which is not yet, and thus SVG forbids us from putting text on it -#: ../src/text-chemistry.cpp:101 +#: ../src/text-chemistry.cpp:102 msgid "" "You cannot put text on a rectangle in this version. Convert rectangle to " "path first." @@ -13641,25 +13880,25 @@ msgstr "" "No puede poner texto en un rectángulo en esta versión. Primero convierta el " "rectángulo en trayecto." -#: ../src/text-chemistry.cpp:111 +#: ../src/text-chemistry.cpp:112 msgid "The flowed text(s) must be visible in order to be put on a path." msgstr "" "El texto fluido debe ser visible para que se pueda poner en un " "trayecto." -#: ../src/text-chemistry.cpp:181 ../src/verbs.cpp:2607 +#: ../src/text-chemistry.cpp:182 ../src/verbs.cpp:2583 msgid "Put text on path" msgstr "Poner texto en trayecto" -#: ../src/text-chemistry.cpp:193 +#: ../src/text-chemistry.cpp:194 msgid "Select a text on path to remove it from path." msgstr "Seleccione un texto en trayecto para quitarlo del trayecto." -#: ../src/text-chemistry.cpp:212 +#: ../src/text-chemistry.cpp:213 msgid "No texts-on-paths in the selection." msgstr "No hay trazos en trayecto en la selección." -#: ../src/text-chemistry.cpp:215 ../src/verbs.cpp:2609 +#: ../src/text-chemistry.cpp:216 ../src/verbs.cpp:2585 msgid "Remove text from path" msgstr "Retirar texto de trayecto" @@ -13708,7 +13947,7 @@ msgstr "Convertir texto fluido en texto" msgid "No flowed text(s) to convert in the selection." msgstr "No hay textos fluídos que se puedan convertir en la selección." -#: ../src/text-editing.cpp:42 +#: ../src/text-editing.cpp:44 msgid "You cannot edit cloned character data." msgstr "No se pueden editar los datos de carácter clonados." @@ -13719,8 +13958,8 @@ msgstr "Vectorizar: %1. %2 nodos" #: ../src/trace/trace.cpp:59 ../src/trace/trace.cpp:124 #: ../src/trace/trace.cpp:132 ../src/trace/trace.cpp:225 -#: ../src/ui/dialog/pixelartdialog.cpp:364 -#: ../src/ui/dialog/pixelartdialog.cpp:396 +#: ../src/ui/dialog/pixelartdialog.cpp:370 +#: ../src/ui/dialog/pixelartdialog.cpp:402 msgid "Select an image to trace" msgstr "Seleccione una imagen para vectorizar" @@ -13763,42 +14002,42 @@ msgid "Trace: Done. %ld nodes created" msgstr "Vectorizar: Terminado. Se han creado %ld nodos" #. check whether something is selected -#: ../src/ui/clipboard.cpp:249 +#: ../src/ui/clipboard.cpp:262 msgid "Nothing was copied." msgstr "No se ha copiado nada." -#: ../src/ui/clipboard.cpp:380 ../src/ui/clipboard.cpp:595 -#: ../src/ui/clipboard.cpp:624 +#: ../src/ui/clipboard.cpp:393 ../src/ui/clipboard.cpp:607 +#: ../src/ui/clipboard.cpp:636 msgid "Nothing on the clipboard." msgstr "No hay nada en el portapapeles." -#: ../src/ui/clipboard.cpp:437 +#: ../src/ui/clipboard.cpp:451 msgid "Select object(s) to paste style to." msgstr "Seleccione los objetos a los que pegar el estilo." -#: ../src/ui/clipboard.cpp:448 ../src/ui/clipboard.cpp:465 +#: ../src/ui/clipboard.cpp:462 ../src/ui/clipboard.cpp:479 msgid "No style on the clipboard." msgstr "No hay estilo en el portapapeles." -#: ../src/ui/clipboard.cpp:491 +#: ../src/ui/clipboard.cpp:504 msgid "Select object(s) to paste size to." msgstr "Seleccione los objetos a los que pegar el tamaño." -#: ../src/ui/clipboard.cpp:499 +#: ../src/ui/clipboard.cpp:511 msgid "No size on the clipboard." msgstr "No hay tamaño en el portapapeles." -#: ../src/ui/clipboard.cpp:556 +#: ../src/ui/clipboard.cpp:568 msgid "Select object(s) to paste live path effect to." msgstr "" "Seleccione los objetos a los que pegar el el efecto de trayecto vivo." #. no_effect: -#: ../src/ui/clipboard.cpp:582 +#: ../src/ui/clipboard.cpp:594 msgid "No effect on the clipboard." msgstr "No hay efecto en el portapapeles." -#: ../src/ui/clipboard.cpp:601 ../src/ui/clipboard.cpp:638 +#: ../src/ui/clipboard.cpp:613 ../src/ui/clipboard.cpp:650 msgid "Clipboard does not contain a path." msgstr "El portapapeles no contiene un trayecto" @@ -13829,232 +14068,229 @@ msgstr "_Licencia" #. the `screens' directory. Thus the translation of "about.svg" should be #. the filename of its translated version, e.g. about.zh.svg for Chinese. #. -#. N.B. about.svg changes once per release. (We should probably rename -#. the original to about-0.40.svg etc. as soon as we have a translation. -#. If we do so, then add an item to release-checklist saying that the -#. string here should be changed.) +#. Please don't translate the filename unless the translated picture exists. #. FIXME? INKSCAPE_SCREENSDIR and "about.svg" are in UTF-8, not the #. native filename encoding... and the filename passed to sp_document_new #. should be in UTF-*8.. -#: ../src/ui/dialog/aboutbox.cpp:167 +#: ../src/ui/dialog/aboutbox.cpp:175 msgid "about.svg" msgstr "about.es.svg" #. TRANSLATORS: Put here your name (and other national contributors') #. one per line in the form of: name surname (email). Use \n for newline. -#: ../src/ui/dialog/aboutbox.cpp:434 +#: ../src/ui/dialog/aboutbox.cpp:442 msgid "translator-credits" msgstr "" -"Lucas Vieites Fariña, 2003-2014\n" +"Lucas Vieites Fariña, 2003-2017\n" "Francisco Javier F. Serrador, 2003\n" "José Antonio Salgueiro Aquino, 2003" -#: ../src/ui/dialog/align-and-distribute.cpp:195 -#: ../src/ui/dialog/align-and-distribute.cpp:915 +#: ../src/ui/dialog/align-and-distribute.cpp:206 +#: ../src/ui/dialog/align-and-distribute.cpp:937 msgid "Align" msgstr "Alinear" -#: ../src/ui/dialog/align-and-distribute.cpp:371 -#: ../src/ui/dialog/align-and-distribute.cpp:916 +#: ../src/ui/dialog/align-and-distribute.cpp:382 +#: ../src/ui/dialog/align-and-distribute.cpp:938 msgid "Distribute" msgstr "Distribuir" -#: ../src/ui/dialog/align-and-distribute.cpp:446 +#: ../src/ui/dialog/align-and-distribute.cpp:461 msgid "Minimum horizontal gap (in px units) between bounding boxes" msgstr "Espacio horizontal mínimo (en unidades px) entre cajas de contorno" #. TRANSLATORS: "H:" stands for horizontal gap -#: ../src/ui/dialog/align-and-distribute.cpp:448 +#: ../src/ui/dialog/align-and-distribute.cpp:463 msgctxt "Gap" msgid "_H:" msgstr "_H:" -#: ../src/ui/dialog/align-and-distribute.cpp:456 +#: ../src/ui/dialog/align-and-distribute.cpp:471 msgid "Minimum vertical gap (in px units) between bounding boxes" msgstr "Espacio vertical mínimo (en unidades px) entre cajas de contorno" #. TRANSLATORS: Vertical gap -#: ../src/ui/dialog/align-and-distribute.cpp:458 +#: ../src/ui/dialog/align-and-distribute.cpp:473 msgctxt "Gap" msgid "_V:" msgstr "_V:" -#: ../src/ui/dialog/align-and-distribute.cpp:488 -#: ../src/ui/dialog/align-and-distribute.cpp:918 -#: ../src/widgets/connector-toolbar.cpp:404 +#: ../src/ui/dialog/align-and-distribute.cpp:508 +#: ../src/ui/dialog/align-and-distribute.cpp:940 +#: ../src/widgets/connector-toolbar.cpp:405 msgid "Remove overlaps" msgstr "Eliminar solapamientos" -#: ../src/ui/dialog/align-and-distribute.cpp:520 -#: ../src/widgets/connector-toolbar.cpp:233 +#: ../src/ui/dialog/align-and-distribute.cpp:539 +#: ../src/widgets/connector-toolbar.cpp:234 msgid "Arrange connector network" msgstr "Ordenar la red de conectores" -#: ../src/ui/dialog/align-and-distribute.cpp:613 +#: ../src/ui/dialog/align-and-distribute.cpp:632 msgid "Exchange Positions" msgstr "Intercambiar posiciones" -#: ../src/ui/dialog/align-and-distribute.cpp:648 +#: ../src/ui/dialog/align-and-distribute.cpp:666 msgid "Unclump" msgstr "Desaglomerar" -#: ../src/ui/dialog/align-and-distribute.cpp:719 +#: ../src/ui/dialog/align-and-distribute.cpp:737 msgid "Randomize positions" msgstr "Aleatorizar posiciones" -#: ../src/ui/dialog/align-and-distribute.cpp:816 +#: ../src/ui/dialog/align-and-distribute.cpp:838 msgid "Distribute text baselines" msgstr "Distribuir líneas base de textos" -#: ../src/ui/dialog/align-and-distribute.cpp:884 +#: ../src/ui/dialog/align-and-distribute.cpp:906 msgid "Align text baselines" msgstr "Alinear líneas base de textos " -#: ../src/ui/dialog/align-and-distribute.cpp:917 +#: ../src/ui/dialog/align-and-distribute.cpp:939 msgid "Rearrange" msgstr "Reordenar" -#: ../src/ui/dialog/align-and-distribute.cpp:919 -#: ../src/widgets/toolbox.cpp:1767 +#: ../src/ui/dialog/align-and-distribute.cpp:941 +#: ../src/widgets/toolbox.cpp:1804 msgid "Nodes" msgstr "Nodos" -#: ../src/ui/dialog/align-and-distribute.cpp:925 -#: ../src/ui/dialog/align-and-distribute.cpp:926 +#: ../src/ui/dialog/align-and-distribute.cpp:955 +#: ../src/ui/dialog/align-and-distribute.cpp:956 msgid "Relative to: " msgstr "Relativo a: " -#: ../src/ui/dialog/align-and-distribute.cpp:927 +#: ../src/ui/dialog/align-and-distribute.cpp:957 msgid "_Treat selection as group: " msgstr "_Tratar a la selección como grupo: " #. Align -#: ../src/ui/dialog/align-and-distribute.cpp:933 ../src/verbs.cpp:3088 -#: ../src/verbs.cpp:3089 +#: ../src/ui/dialog/align-and-distribute.cpp:963 ../src/verbs.cpp:3050 +#: ../src/verbs.cpp:3051 msgid "Align right edges of objects to the left edge of the anchor" msgstr "Alinear el lado derecho de los objetos al borde izquierdo del ancla" -#: ../src/ui/dialog/align-and-distribute.cpp:936 ../src/verbs.cpp:3090 -#: ../src/verbs.cpp:3091 +#: ../src/ui/dialog/align-and-distribute.cpp:966 ../src/verbs.cpp:3052 +#: ../src/verbs.cpp:3053 msgid "Align left edges" msgstr "Alinear bordes izquierdos" -#: ../src/ui/dialog/align-and-distribute.cpp:939 ../src/verbs.cpp:3092 -#: ../src/verbs.cpp:3093 +#: ../src/ui/dialog/align-and-distribute.cpp:969 ../src/verbs.cpp:3054 +#: ../src/verbs.cpp:3055 msgid "Center on vertical axis" msgstr "Centrar en el eje vertical" -#: ../src/ui/dialog/align-and-distribute.cpp:942 ../src/verbs.cpp:3094 -#: ../src/verbs.cpp:3095 +#: ../src/ui/dialog/align-and-distribute.cpp:972 ../src/verbs.cpp:3056 +#: ../src/verbs.cpp:3057 msgid "Align right sides" msgstr "Alinear lados derechos" -#: ../src/ui/dialog/align-and-distribute.cpp:945 ../src/verbs.cpp:3096 -#: ../src/verbs.cpp:3097 +#: ../src/ui/dialog/align-and-distribute.cpp:975 ../src/verbs.cpp:3058 +#: ../src/verbs.cpp:3059 msgid "Align left edges of objects to the right edge of the anchor" msgstr "Alinear el lado izquierdo de los objetos al borde derecho del ancla" -#: ../src/ui/dialog/align-and-distribute.cpp:948 ../src/verbs.cpp:3098 -#: ../src/verbs.cpp:3099 +#: ../src/ui/dialog/align-and-distribute.cpp:978 ../src/verbs.cpp:3060 +#: ../src/verbs.cpp:3061 msgid "Align bottom edges of objects to the top edge of the anchor" msgstr "Alinear el lado inferior de los objetos al borde superior del ancla" -#: ../src/ui/dialog/align-and-distribute.cpp:951 ../src/verbs.cpp:3100 -#: ../src/verbs.cpp:3101 +#: ../src/ui/dialog/align-and-distribute.cpp:981 ../src/verbs.cpp:3062 +#: ../src/verbs.cpp:3063 msgid "Align top edges" msgstr "Alinear los bordes superiores" -#: ../src/ui/dialog/align-and-distribute.cpp:954 ../src/verbs.cpp:3102 -#: ../src/verbs.cpp:3103 +#: ../src/ui/dialog/align-and-distribute.cpp:984 ../src/verbs.cpp:3064 +#: ../src/verbs.cpp:3065 msgid "Center on horizontal axis" msgstr "Centrar en el eje horizontal" -#: ../src/ui/dialog/align-and-distribute.cpp:957 ../src/verbs.cpp:3104 -#: ../src/verbs.cpp:3105 +#: ../src/ui/dialog/align-and-distribute.cpp:987 ../src/verbs.cpp:3066 +#: ../src/verbs.cpp:3067 msgid "Align bottom edges" msgstr "Alinear los bordes inferiores" -#: ../src/ui/dialog/align-and-distribute.cpp:960 ../src/verbs.cpp:3106 -#: ../src/verbs.cpp:3107 +#: ../src/ui/dialog/align-and-distribute.cpp:990 ../src/verbs.cpp:3068 +#: ../src/verbs.cpp:3069 msgid "Align top edges of objects to the bottom edge of the anchor" msgstr "Alinear el lado superior de los objetos al borde inferior del ancla" -#: ../src/ui/dialog/align-and-distribute.cpp:965 +#: ../src/ui/dialog/align-and-distribute.cpp:995 msgid "Align baseline anchors of texts horizontally" msgstr "Alinear las anclas de la línea base de los textos horizontalmente" -#: ../src/ui/dialog/align-and-distribute.cpp:968 +#: ../src/ui/dialog/align-and-distribute.cpp:998 msgid "Align baselines of texts" msgstr "Alinear las líneas base de los textos" -#: ../src/ui/dialog/align-and-distribute.cpp:973 +#: ../src/ui/dialog/align-and-distribute.cpp:1003 msgid "Make horizontal gaps between objects equal" msgstr "Igualar los huecos horizontales entre los objetos" -#: ../src/ui/dialog/align-and-distribute.cpp:977 +#: ../src/ui/dialog/align-and-distribute.cpp:1007 msgid "Distribute left edges equidistantly" msgstr "Distribuir los lados izquierdos a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:980 +#: ../src/ui/dialog/align-and-distribute.cpp:1010 msgid "Distribute centers equidistantly horizontally" msgstr "Distribuir los centros horizontalmente a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:983 +#: ../src/ui/dialog/align-and-distribute.cpp:1013 msgid "Distribute right edges equidistantly" msgstr "Distribuir los lados derechos a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:987 +#: ../src/ui/dialog/align-and-distribute.cpp:1017 msgid "Make vertical gaps between objects equal" msgstr "Igualar los huecos verticales entre los objetos" -#: ../src/ui/dialog/align-and-distribute.cpp:991 +#: ../src/ui/dialog/align-and-distribute.cpp:1021 msgid "Distribute top edges equidistantly" msgstr "Distribuir los bordes superiores a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:994 +#: ../src/ui/dialog/align-and-distribute.cpp:1024 msgid "Distribute centers equidistantly vertically" msgstr "Distribuir los centros verticalmente a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:997 +#: ../src/ui/dialog/align-and-distribute.cpp:1027 msgid "Distribute bottom edges equidistantly" msgstr "Distribuir los lados inferiores a distancias iguales" -#: ../src/ui/dialog/align-and-distribute.cpp:1002 +#: ../src/ui/dialog/align-and-distribute.cpp:1032 msgid "Distribute baseline anchors of texts horizontally" msgstr "Distribuir las anclas de la línea base de los textos horizontalmente" -#: ../src/ui/dialog/align-and-distribute.cpp:1005 +#: ../src/ui/dialog/align-and-distribute.cpp:1035 msgid "Distribute baselines of texts vertically" msgstr "Distribuir las líneas base de los textos verticalmente" -#: ../src/ui/dialog/align-and-distribute.cpp:1011 -#: ../src/widgets/connector-toolbar.cpp:366 +#: ../src/ui/dialog/align-and-distribute.cpp:1041 +#: ../src/widgets/connector-toolbar.cpp:367 msgid "Nicely arrange selected connector network" msgstr "Ordenar la red de conectores seleccionada" -#: ../src/ui/dialog/align-and-distribute.cpp:1014 +#: ../src/ui/dialog/align-and-distribute.cpp:1044 msgid "Exchange positions of selected objects - selection order" msgstr "Intercambiar posiciones de objetos seleccionados - orden de selección" -#: ../src/ui/dialog/align-and-distribute.cpp:1017 +#: ../src/ui/dialog/align-and-distribute.cpp:1047 msgid "Exchange positions of selected objects - stacking order" msgstr "" "Intercambiar posiciones de objetos seleccionados - orden de apilamiento" -#: ../src/ui/dialog/align-and-distribute.cpp:1020 +#: ../src/ui/dialog/align-and-distribute.cpp:1050 msgid "Exchange positions of selected objects - clockwise rotate" msgstr "" "Intercambiar posiciones de objetos seleccionados - rotar en sentido horario" -#: ../src/ui/dialog/align-and-distribute.cpp:1025 +#: ../src/ui/dialog/align-and-distribute.cpp:1055 msgid "Randomize centers in both dimensions" msgstr "Aleatorizar los centros en ambas dimensiones" -#: ../src/ui/dialog/align-and-distribute.cpp:1028 +#: ../src/ui/dialog/align-and-distribute.cpp:1058 msgid "Unclump objects: try to equalize edge-to-edge distances" msgstr "Desaglomerar objetos: intentar igualar las distancias entre bordes" -#: ../src/ui/dialog/align-and-distribute.cpp:1033 +#: ../src/ui/dialog/align-and-distribute.cpp:1063 msgid "" "Move objects as little as possible so that their bounding boxes do not " "overlap" @@ -14062,163 +14298,154 @@ msgstr "" "Mover los objetos lo mínimo posible para que sus cajas de controno no se " "solapen" -#: ../src/ui/dialog/align-and-distribute.cpp:1041 +#: ../src/ui/dialog/align-and-distribute.cpp:1071 msgid "Align selected nodes to a common horizontal line" msgstr "Alinear los nodos seleccionados a una línea común horizontal" -#: ../src/ui/dialog/align-and-distribute.cpp:1044 +#: ../src/ui/dialog/align-and-distribute.cpp:1074 msgid "Align selected nodes to a common vertical line" msgstr "Alinear los nodos seleccionados a una línea común vertical" -#: ../src/ui/dialog/align-and-distribute.cpp:1047 +#: ../src/ui/dialog/align-and-distribute.cpp:1077 msgid "Distribute selected nodes horizontally" msgstr "Distribuir los nodos seleccionados horizontalmente" -#: ../src/ui/dialog/align-and-distribute.cpp:1050 +#: ../src/ui/dialog/align-and-distribute.cpp:1080 msgid "Distribute selected nodes vertically" msgstr "Distribuir los nodos seleccionados verticalmente" #. Rest of the widgetry -#: ../src/ui/dialog/align-and-distribute.cpp:1055 -#: ../src/ui/dialog/align-and-distribute.cpp:1065 +#: ../src/ui/dialog/align-and-distribute.cpp:1085 +#: ../src/ui/dialog/align-and-distribute.cpp:1095 msgid "Last selected" msgstr "Último seleccionado" -#: ../src/ui/dialog/align-and-distribute.cpp:1056 -#: ../src/ui/dialog/align-and-distribute.cpp:1066 +#: ../src/ui/dialog/align-and-distribute.cpp:1086 +#: ../src/ui/dialog/align-and-distribute.cpp:1096 msgid "First selected" msgstr "Primero seleccionado" -#: ../src/ui/dialog/align-and-distribute.cpp:1057 +#: ../src/ui/dialog/align-and-distribute.cpp:1087 msgid "Biggest object" msgstr "Objeto mayor" -#: ../src/ui/dialog/align-and-distribute.cpp:1058 +#: ../src/ui/dialog/align-and-distribute.cpp:1088 msgid "Smallest object" msgstr "Objeto menor" -#: ../src/ui/dialog/align-and-distribute.cpp:1059 -#: ../src/ui/dialog/document-properties.cpp:149 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1487 -#: ../src/widgets/desktop-widget.cpp:1929 -#: ../share/extensions/empty_page.inx.h:1 -#: ../share/extensions/voronoi2svg.inx.h:10 -msgid "Page" -msgstr "Página" - -#: ../src/ui/dialog/align-and-distribute.cpp:1061 +#: ../src/ui/dialog/align-and-distribute.cpp:1091 msgid "Selection Area" msgstr "Área de selección" -#: ../src/ui/dialog/align-and-distribute.cpp:1067 +#: ../src/ui/dialog/align-and-distribute.cpp:1097 msgid "Middle of selection" msgstr "Centro de la selección" -#: ../src/ui/dialog/align-and-distribute.cpp:1068 +#: ../src/ui/dialog/align-and-distribute.cpp:1098 msgid "Min value" msgstr "Valor mín." -#: ../src/ui/dialog/align-and-distribute.cpp:1069 +#: ../src/ui/dialog/align-and-distribute.cpp:1099 msgid "Max value" msgstr "Valor máx." -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:31 -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:117 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:40 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:138 msgid "Edit profile" msgstr "Editar perfil" -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:39 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:53 msgid "Profile name:" msgstr "Nombre de perfil:" -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:59 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:80 msgid "Save" msgstr "Guardar" -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:113 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:134 msgid "Add profile" msgstr "Añadir perfil" -#: ../src/ui/dialog/clonetiler.cpp:95 +#: ../src/ui/dialog/clonetiler.cpp:110 msgid "_Symmetry" msgstr "_Simetría" #. TRANSLATORS: "translation" means "shift" / "displacement" here. -#: ../src/ui/dialog/clonetiler.cpp:107 +#: ../src/ui/dialog/clonetiler.cpp:122 msgid "P1: simple translation" msgstr "P1: traslación simple" -#: ../src/ui/dialog/clonetiler.cpp:108 +#: ../src/ui/dialog/clonetiler.cpp:123 msgid "P2: 180° rotation" msgstr "P2: rotación de 180°" -#: ../src/ui/dialog/clonetiler.cpp:109 +#: ../src/ui/dialog/clonetiler.cpp:124 msgid "PM: reflection" msgstr "PM: reflexión" #. TRANSLATORS: "glide reflection" is a reflection and a translation combined. #. For more info, see http://mathforum.org/sum95/suzanne/symsusan.html -#: ../src/ui/dialog/clonetiler.cpp:112 +#: ../src/ui/dialog/clonetiler.cpp:127 msgid "PG: glide reflection" msgstr "PG: reflexión por deslizamiento" -#: ../src/ui/dialog/clonetiler.cpp:113 +#: ../src/ui/dialog/clonetiler.cpp:128 msgid "CM: reflection + glide reflection" msgstr "CM: reflexión + reflexión por deslizamiento" -#: ../src/ui/dialog/clonetiler.cpp:114 +#: ../src/ui/dialog/clonetiler.cpp:129 msgid "PMM: reflection + reflection" msgstr "PMM: reflexión + reflexión" -#: ../src/ui/dialog/clonetiler.cpp:115 +#: ../src/ui/dialog/clonetiler.cpp:130 msgid "PMG: reflection + 180° rotation" msgstr "PMG: reflexión + rotación de 180°" -#: ../src/ui/dialog/clonetiler.cpp:116 +#: ../src/ui/dialog/clonetiler.cpp:131 msgid "PGG: glide reflection + 180° rotation" msgstr "PGG: reflexión por desplazamiento + rotación de 180°" -#: ../src/ui/dialog/clonetiler.cpp:117 +#: ../src/ui/dialog/clonetiler.cpp:132 msgid "CMM: reflection + reflection + 180° rotation" msgstr "CMM: reflexión + reflexión + rotación de 180°" -#: ../src/ui/dialog/clonetiler.cpp:118 +#: ../src/ui/dialog/clonetiler.cpp:133 msgid "P4: 90° rotation" msgstr "P4: rotación de 90°" -#: ../src/ui/dialog/clonetiler.cpp:119 +#: ../src/ui/dialog/clonetiler.cpp:134 msgid "P4M: 90° rotation + 45° reflection" msgstr "P4M: rotación de 90° + reflexión de 45°" -#: ../src/ui/dialog/clonetiler.cpp:120 +#: ../src/ui/dialog/clonetiler.cpp:135 msgid "P4G: 90° rotation + 90° reflection" msgstr "P4G: rotación de 90° + reflexión de 90°" -#: ../src/ui/dialog/clonetiler.cpp:121 +#: ../src/ui/dialog/clonetiler.cpp:136 msgid "P3: 120° rotation" msgstr "P3: rotación de 120°" -#: ../src/ui/dialog/clonetiler.cpp:122 +#: ../src/ui/dialog/clonetiler.cpp:137 msgid "P31M: reflection + 120° rotation, dense" msgstr "P31M: reflexión + rotación de 120°, densa" -#: ../src/ui/dialog/clonetiler.cpp:123 +#: ../src/ui/dialog/clonetiler.cpp:138 msgid "P3M1: reflection + 120° rotation, sparse" msgstr "P3M1: reflexión + rotación de 120°, escasa" -#: ../src/ui/dialog/clonetiler.cpp:124 +#: ../src/ui/dialog/clonetiler.cpp:139 msgid "P6: 60° rotation" msgstr "P6: rotación de 60°" -#: ../src/ui/dialog/clonetiler.cpp:125 +#: ../src/ui/dialog/clonetiler.cpp:140 msgid "P6M: reflection + 60° rotation" msgstr "P6M: reflexión + rotación de 60°" -#: ../src/ui/dialog/clonetiler.cpp:132 +#: ../src/ui/dialog/clonetiler.cpp:160 msgid "Select one of the 17 symmetry groups for the tiling" msgstr "Seleccione uno de los 17 grupos de simetría para el mosaico" -#: ../src/ui/dialog/clonetiler.cpp:157 +#: ../src/ui/dialog/clonetiler.cpp:178 msgid "S_hift" msgstr "Des_plazamiento" @@ -14227,23 +14454,23 @@ msgstr "Des_plazamiento" # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) horizontally by this amount -#: ../src/ui/dialog/clonetiler.cpp:167 +#: ../src/ui/dialog/clonetiler.cpp:188 #, no-c-format msgid "Shift X:" msgstr "Desplazar X:" -#: ../src/ui/dialog/clonetiler.cpp:175 +#: ../src/ui/dialog/clonetiler.cpp:196 #, no-c-format msgid "Horizontal shift per row (in % of tile width)" msgstr "Desplazamiento horizontal por cada fila (en % del ancho de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:183 +#: ../src/ui/dialog/clonetiler.cpp:204 #, no-c-format msgid "Horizontal shift per column (in % of tile width)" msgstr "" "Desplazamiento horizontal por cada columna (en % del ancho de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:189 +#: ../src/ui/dialog/clonetiler.cpp:210 msgid "Randomize the horizontal shift by this percentage" msgstr "Aleatorizar el desplazamiento horizontal este porcentaje" @@ -14252,23 +14479,23 @@ msgstr "Aleatorizar el desplazamiento horizontal este porcentaje" # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) vertically by this amount -#: ../src/ui/dialog/clonetiler.cpp:199 +#: ../src/ui/dialog/clonetiler.cpp:220 #, no-c-format msgid "Shift Y:" msgstr "Desplazar Y:" -#: ../src/ui/dialog/clonetiler.cpp:207 +#: ../src/ui/dialog/clonetiler.cpp:228 #, no-c-format msgid "Vertical shift per row (in % of tile height)" msgstr "Desplazamiento vertical por cada fila (en % de la altura de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:215 +#: ../src/ui/dialog/clonetiler.cpp:236 #, no-c-format msgid "Vertical shift per column (in % of tile height)" msgstr "" "Desplazamiento vertical por cada columna (en % de la altura de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:222 +#: ../src/ui/dialog/clonetiler.cpp:243 msgid "Randomize the vertical shift by this percentage" msgstr "Aleatorizar el desplazamiento vertical este porcentaje" @@ -14276,65 +14503,65 @@ msgstr "Aleatorizar el desplazamiento vertical este porcentaje" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/clonetiler.cpp:230 ../src/ui/dialog/clonetiler.cpp:376 +#: ../src/ui/dialog/clonetiler.cpp:251 ../src/ui/dialog/clonetiler.cpp:397 msgid "Exponent:" msgstr "Exponente:" -#: ../src/ui/dialog/clonetiler.cpp:237 +#: ../src/ui/dialog/clonetiler.cpp:258 msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "" "Indica si las filas mantienen su distancia (1), convergen (<1) o divergen " "(>1)" -#: ../src/ui/dialog/clonetiler.cpp:244 +#: ../src/ui/dialog/clonetiler.cpp:265 msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "" "Indica si las columnas mantienen su distancia (1), convergen (<1) o divergen " "(>1)" #. TRANSLATORS: "Alternate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:252 ../src/ui/dialog/clonetiler.cpp:416 -#: ../src/ui/dialog/clonetiler.cpp:492 ../src/ui/dialog/clonetiler.cpp:565 -#: ../src/ui/dialog/clonetiler.cpp:611 ../src/ui/dialog/clonetiler.cpp:734 +#: ../src/ui/dialog/clonetiler.cpp:273 ../src/ui/dialog/clonetiler.cpp:437 +#: ../src/ui/dialog/clonetiler.cpp:513 ../src/ui/dialog/clonetiler.cpp:586 +#: ../src/ui/dialog/clonetiler.cpp:632 ../src/ui/dialog/clonetiler.cpp:759 msgid "Alternate:" msgstr "Alternar:" -#: ../src/ui/dialog/clonetiler.cpp:258 +#: ../src/ui/dialog/clonetiler.cpp:279 msgid "Alternate the sign of shifts for each row" msgstr "Alternar el signo de los desplazamientos para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:263 +#: ../src/ui/dialog/clonetiler.cpp:284 msgid "Alternate the sign of shifts for each column" msgstr "Alternar el signo de los desplazamientos para cada columna" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:270 ../src/ui/dialog/clonetiler.cpp:434 -#: ../src/ui/dialog/clonetiler.cpp:510 +#: ../src/ui/dialog/clonetiler.cpp:291 ../src/ui/dialog/clonetiler.cpp:455 +#: ../src/ui/dialog/clonetiler.cpp:531 msgid "Cumulate:" msgstr "Acumular:" -#: ../src/ui/dialog/clonetiler.cpp:276 +#: ../src/ui/dialog/clonetiler.cpp:297 msgid "Cumulate the shifts for each row" msgstr "Acumular el desplazamiento para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:281 +#: ../src/ui/dialog/clonetiler.cpp:302 msgid "Cumulate the shifts for each column" msgstr "Acumular el desplazamiento para cada columna" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:288 +#: ../src/ui/dialog/clonetiler.cpp:309 msgid "Exclude tile:" msgstr "Excluir tesela:" -#: ../src/ui/dialog/clonetiler.cpp:294 +#: ../src/ui/dialog/clonetiler.cpp:315 msgid "Exclude tile height in shift" msgstr "Excluir la altura de la tesela en el desplazamiento" -#: ../src/ui/dialog/clonetiler.cpp:299 +#: ../src/ui/dialog/clonetiler.cpp:320 msgid "Exclude tile width in shift" msgstr "Excluir la anchura de la tesela en el desplazamiento" -#: ../src/ui/dialog/clonetiler.cpp:308 +#: ../src/ui/dialog/clonetiler.cpp:329 msgid "Sc_ale" msgstr "Esc_ala" @@ -14342,21 +14569,21 @@ msgstr "Esc_ala" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/clonetiler.cpp:316 +#: ../src/ui/dialog/clonetiler.cpp:337 msgid "Scale X:" msgstr "Escalar X:" -#: ../src/ui/dialog/clonetiler.cpp:324 +#: ../src/ui/dialog/clonetiler.cpp:345 #, no-c-format msgid "Horizontal scale per row (in % of tile width)" msgstr "Escala horizontal por cada fila (en % del ancho de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:332 +#: ../src/ui/dialog/clonetiler.cpp:353 #, no-c-format msgid "Horizontal scale per column (in % of tile width)" msgstr "Escala horizontal por cada columna (en % del ancho de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:338 +#: ../src/ui/dialog/clonetiler.cpp:359 msgid "Randomize the horizontal scale by this percentage" msgstr "Aleatorizar la escala horizontal este porcentaje" @@ -14364,64 +14591,64 @@ msgstr "Aleatorizar la escala horizontal este porcentaje" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/clonetiler.cpp:346 +#: ../src/ui/dialog/clonetiler.cpp:367 msgid "Scale Y:" msgstr "Escalar Y:" -#: ../src/ui/dialog/clonetiler.cpp:354 +#: ../src/ui/dialog/clonetiler.cpp:375 #, no-c-format msgid "Vertical scale per row (in % of tile height)" msgstr "Escala vertical por cada fila (en % de la altura de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:362 +#: ../src/ui/dialog/clonetiler.cpp:383 #, no-c-format msgid "Vertical scale per column (in % of tile height)" msgstr "Escala vertical por cada columna (en % de la altura de la tesela)" -#: ../src/ui/dialog/clonetiler.cpp:368 +#: ../src/ui/dialog/clonetiler.cpp:389 msgid "Randomize the vertical scale by this percentage" msgstr "Aleatorizar la escala vertical este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:382 +#: ../src/ui/dialog/clonetiler.cpp:403 msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "" "Indica si el escalado de filas es uniforme (1), convergente (<1) o " "divergente (>1)" -#: ../src/ui/dialog/clonetiler.cpp:388 +#: ../src/ui/dialog/clonetiler.cpp:409 msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "" "Indica si el escalado de columnas es uniforme (1), convergente (<1) o " "divergente (>1)" -#: ../src/ui/dialog/clonetiler.cpp:396 +#: ../src/ui/dialog/clonetiler.cpp:417 msgid "Base:" msgstr "Base:" -#: ../src/ui/dialog/clonetiler.cpp:402 ../src/ui/dialog/clonetiler.cpp:408 +#: ../src/ui/dialog/clonetiler.cpp:423 ../src/ui/dialog/clonetiler.cpp:429 msgid "" "Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" msgstr "" "Base para una espiral logarítmica: no usado (1), convergente (<1) o " "divergente (>1)" -#: ../src/ui/dialog/clonetiler.cpp:422 +#: ../src/ui/dialog/clonetiler.cpp:443 msgid "Alternate the sign of scales for each row" msgstr "Alternar el signo de la escala para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:427 +#: ../src/ui/dialog/clonetiler.cpp:448 msgid "Alternate the sign of scales for each column" msgstr "Alternar el signo de la escala para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:440 +#: ../src/ui/dialog/clonetiler.cpp:461 msgid "Cumulate the scales for each row" msgstr "Acumular la escala para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:445 +#: ../src/ui/dialog/clonetiler.cpp:466 msgid "Cumulate the scales for each column" msgstr "Acumular la escala para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:454 +#: ../src/ui/dialog/clonetiler.cpp:475 msgid "_Rotation" msgstr "_Rotación" @@ -14429,105 +14656,105 @@ msgstr "_Rotación" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/clonetiler.cpp:462 +#: ../src/ui/dialog/clonetiler.cpp:483 msgid "Angle:" msgstr "Ángulo:" -#: ../src/ui/dialog/clonetiler.cpp:470 +#: ../src/ui/dialog/clonetiler.cpp:491 #, no-c-format msgid "Rotate tiles by this angle for each row" msgstr "Rotar las teselas por este ángulo para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:478 +#: ../src/ui/dialog/clonetiler.cpp:499 #, no-c-format msgid "Rotate tiles by this angle for each column" msgstr "Rotar las teselas por este ángulo para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:484 +#: ../src/ui/dialog/clonetiler.cpp:505 msgid "Randomize the rotation angle by this percentage" msgstr "Aleatorizar el ángulo de rotación este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:498 +#: ../src/ui/dialog/clonetiler.cpp:519 msgid "Alternate the rotation direction for each row" msgstr "Alternar la dirección de la rotación para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:503 +#: ../src/ui/dialog/clonetiler.cpp:524 msgid "Alternate the rotation direction for each column" msgstr "Alternar la dirección de la rotación para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:516 +#: ../src/ui/dialog/clonetiler.cpp:537 msgid "Cumulate the rotation for each row" msgstr "Acumular la rotación para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:521 +#: ../src/ui/dialog/clonetiler.cpp:542 msgid "Cumulate the rotation for each column" msgstr "Acumular la rotación para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:530 +#: ../src/ui/dialog/clonetiler.cpp:551 msgid "_Blur & opacity" msgstr "_Desenfoque y opacidad" -#: ../src/ui/dialog/clonetiler.cpp:539 +#: ../src/ui/dialog/clonetiler.cpp:560 msgid "Blur:" msgstr "Desenfoque:" -#: ../src/ui/dialog/clonetiler.cpp:545 +#: ../src/ui/dialog/clonetiler.cpp:566 msgid "Blur tiles by this percentage for each row" msgstr "Desenfocar la tesela este porcentaje para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:551 +#: ../src/ui/dialog/clonetiler.cpp:572 msgid "Blur tiles by this percentage for each column" msgstr "Desenfocar de la tesela este porcentaje para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:557 +#: ../src/ui/dialog/clonetiler.cpp:578 msgid "Randomize the tile blur by this percentage" msgstr "Aleatorizar el desenfoque de la tesela este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:571 +#: ../src/ui/dialog/clonetiler.cpp:592 msgid "Alternate the sign of blur change for each row" msgstr "Alternar el signo del desenfoque para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:576 +#: ../src/ui/dialog/clonetiler.cpp:597 msgid "Alternate the sign of blur change for each column" msgstr "Alternar el signo del desenfoque para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:585 +#: ../src/ui/dialog/clonetiler.cpp:606 msgid "Opacity:" msgstr "Opacidad:" -#: ../src/ui/dialog/clonetiler.cpp:591 +#: ../src/ui/dialog/clonetiler.cpp:612 msgid "Decrease tile opacity by this percentage for each row" msgstr "Disminuir la opacidad de la tesela este porcentaje para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:597 +#: ../src/ui/dialog/clonetiler.cpp:618 msgid "Decrease tile opacity by this percentage for each column" msgstr "Disminuir la opacidad de la tesela este porcentaje para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:603 +#: ../src/ui/dialog/clonetiler.cpp:624 msgid "Randomize the tile opacity by this percentage" msgstr "Aleatorizar la opacidad de la tesela este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:617 +#: ../src/ui/dialog/clonetiler.cpp:638 msgid "Alternate the sign of opacity change for each row" msgstr "Alternar el signo de los cambios de opacidad para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:622 +#: ../src/ui/dialog/clonetiler.cpp:643 msgid "Alternate the sign of opacity change for each column" msgstr "Alternar el signo de los cambios de opacidad para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:630 +#: ../src/ui/dialog/clonetiler.cpp:651 msgid "Co_lor" msgstr "Co_lor" -#: ../src/ui/dialog/clonetiler.cpp:636 +#: ../src/ui/dialog/clonetiler.cpp:661 msgid "Initial color: " msgstr "Color inicial: " -#: ../src/ui/dialog/clonetiler.cpp:640 +#: ../src/ui/dialog/clonetiler.cpp:665 msgid "Initial color of tiled clones" msgstr "Color inicial de los clones en mosaico" -#: ../src/ui/dialog/clonetiler.cpp:640 +#: ../src/ui/dialog/clonetiler.cpp:665 msgid "" "Initial color for clones (works only if the original has unset fill or " "stroke or on spray tool in copy mode)" @@ -14535,71 +14762,71 @@ msgstr "" "Color inicial para los clones (solamente funciona si el original no tiene " "definido color de relleno, color de trazo o spray en el modo de copia)" -#: ../src/ui/dialog/clonetiler.cpp:655 +#: ../src/ui/dialog/clonetiler.cpp:680 msgid "H:" msgstr "H:" -#: ../src/ui/dialog/clonetiler.cpp:661 +#: ../src/ui/dialog/clonetiler.cpp:686 msgid "Change the tile hue by this percentage for each row" msgstr "Cambiar el tono de la tesela este porcentaje para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:667 +#: ../src/ui/dialog/clonetiler.cpp:692 msgid "Change the tile hue by this percentage for each column" msgstr "Cambiar el tono de la tesela este porcentaje para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:673 +#: ../src/ui/dialog/clonetiler.cpp:698 msgid "Randomize the tile hue by this percentage" msgstr "Aleatorizar el tono de la tesela este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:682 +#: ../src/ui/dialog/clonetiler.cpp:707 msgid "S:" msgstr "S:" -#: ../src/ui/dialog/clonetiler.cpp:688 +#: ../src/ui/dialog/clonetiler.cpp:713 msgid "Change the color saturation by this percentage for each row" msgstr "Cambiar la saturación de color este porcentaje para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:694 +#: ../src/ui/dialog/clonetiler.cpp:719 msgid "Change the color saturation by this percentage for each column" msgstr "Cambiar la saturación de color este porcentaje para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:700 +#: ../src/ui/dialog/clonetiler.cpp:725 msgid "Randomize the color saturation by this percentage" msgstr "Aleatorizar la saturación de color este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:708 +#: ../src/ui/dialog/clonetiler.cpp:733 msgid "L:" msgstr "L:" -#: ../src/ui/dialog/clonetiler.cpp:714 +#: ../src/ui/dialog/clonetiler.cpp:739 msgid "Change the color lightness by this percentage for each row" msgstr "Cambiar la luminancia del color este porcentaje para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:720 +#: ../src/ui/dialog/clonetiler.cpp:745 msgid "Change the color lightness by this percentage for each column" msgstr "Cambiar la luminancia de color este porcentaje para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:726 +#: ../src/ui/dialog/clonetiler.cpp:751 msgid "Randomize the color lightness by this percentage" msgstr "Aleatorizar la luminancia del color este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:740 +#: ../src/ui/dialog/clonetiler.cpp:765 msgid "Alternate the sign of color changes for each row" msgstr "Alternar el signo de los cambios de color para cada fila" -#: ../src/ui/dialog/clonetiler.cpp:745 +#: ../src/ui/dialog/clonetiler.cpp:770 msgid "Alternate the sign of color changes for each column" msgstr "Alternar el signo de los cambios de color para cada columna" -#: ../src/ui/dialog/clonetiler.cpp:753 +#: ../src/ui/dialog/clonetiler.cpp:778 msgid "_Trace" msgstr "Vec_torizar" -#: ../src/ui/dialog/clonetiler.cpp:759 +#: ../src/ui/dialog/clonetiler.cpp:788 msgid "Trace the drawing under the clones/sprayed items" msgstr "Vectorizar el dibujo debajo de los clones/elementos de spray" -#: ../src/ui/dialog/clonetiler.cpp:763 +#: ../src/ui/dialog/clonetiler.cpp:792 msgid "" "For each clone/sprayed item, pick a value from the drawing in its location " "and apply it" @@ -14607,108 +14834,108 @@ msgstr "" "Para cada clon/elemento de spray, seleccionar un valor del dibujo en su " "localización y aplicarlo" -#: ../src/ui/dialog/clonetiler.cpp:775 +#: ../src/ui/dialog/clonetiler.cpp:811 msgid "1. Pick from the drawing:" msgstr "1. Seleccionar del dibujo:" -#: ../src/ui/dialog/clonetiler.cpp:786 +#: ../src/ui/dialog/clonetiler.cpp:829 msgid "Pick the visible color and opacity" msgstr "Seleccionar el color y la opacidad visibles" -#: ../src/ui/dialog/clonetiler.cpp:793 +#: ../src/ui/dialog/clonetiler.cpp:837 msgid "Pick the total accumulated opacity" msgstr "Seleccionar la opacidad total acumulada" -#: ../src/ui/dialog/clonetiler.cpp:799 +#: ../src/ui/dialog/clonetiler.cpp:844 msgid "R" msgstr "R" -#: ../src/ui/dialog/clonetiler.cpp:800 +#: ../src/ui/dialog/clonetiler.cpp:845 msgid "Pick the Red component of the color" msgstr "Seleccionar el componente rojo del color" -#: ../src/ui/dialog/clonetiler.cpp:806 +#: ../src/ui/dialog/clonetiler.cpp:852 msgid "G" msgstr "G" -#: ../src/ui/dialog/clonetiler.cpp:807 +#: ../src/ui/dialog/clonetiler.cpp:853 msgid "Pick the Green component of the color" msgstr "Seleccionar el componente verde del color" -#: ../src/ui/dialog/clonetiler.cpp:813 +#: ../src/ui/dialog/clonetiler.cpp:860 msgid "B" msgstr "B" -#: ../src/ui/dialog/clonetiler.cpp:814 +#: ../src/ui/dialog/clonetiler.cpp:861 msgid "Pick the Blue component of the color" msgstr "Seleccionar el componente azul del color" -#: ../src/ui/dialog/clonetiler.cpp:820 +#: ../src/ui/dialog/clonetiler.cpp:868 msgctxt "Clonetiler color hue" msgid "H" msgstr "T" -#: ../src/ui/dialog/clonetiler.cpp:821 +#: ../src/ui/dialog/clonetiler.cpp:869 msgid "Pick the hue of the color" msgstr "Seleccionar el tono del color" -#: ../src/ui/dialog/clonetiler.cpp:827 +#: ../src/ui/dialog/clonetiler.cpp:876 msgctxt "Clonetiler color saturation" msgid "S" msgstr "S" -#: ../src/ui/dialog/clonetiler.cpp:828 +#: ../src/ui/dialog/clonetiler.cpp:877 msgid "Pick the saturation of the color" msgstr "Seleccionar la saturación del color" -#: ../src/ui/dialog/clonetiler.cpp:834 +#: ../src/ui/dialog/clonetiler.cpp:884 msgctxt "Clonetiler color lightness" msgid "L" msgstr "C" -#: ../src/ui/dialog/clonetiler.cpp:835 +#: ../src/ui/dialog/clonetiler.cpp:885 msgid "Pick the lightness of the color" msgstr "Seleccionar la luminancia del color" -#: ../src/ui/dialog/clonetiler.cpp:844 +#: ../src/ui/dialog/clonetiler.cpp:895 msgid "2. Tweak the picked value:" msgstr "2. Ajustar el valor seleccionado:" -#: ../src/ui/dialog/clonetiler.cpp:855 +#: ../src/ui/dialog/clonetiler.cpp:912 msgid "Gamma-correct:" msgstr "Corrección de gamma:" -#: ../src/ui/dialog/clonetiler.cpp:859 +#: ../src/ui/dialog/clonetiler.cpp:916 msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)" msgstr "" "Mover el rango medio del valor seleccionado hacia arriba (>0) o hacia abajo " "(<0)" -#: ../src/ui/dialog/clonetiler.cpp:866 +#: ../src/ui/dialog/clonetiler.cpp:923 msgid "Randomize:" msgstr "Aleatorizar:" -#: ../src/ui/dialog/clonetiler.cpp:870 +#: ../src/ui/dialog/clonetiler.cpp:927 msgid "Randomize the picked value by this percentage" msgstr "Aleatorizar el valor seleccionado este porcentaje" -#: ../src/ui/dialog/clonetiler.cpp:877 +#: ../src/ui/dialog/clonetiler.cpp:934 msgid "Invert:" msgstr "Invertir:" -#: ../src/ui/dialog/clonetiler.cpp:881 +#: ../src/ui/dialog/clonetiler.cpp:938 msgid "Invert the picked value" msgstr "Invertir el valor seleccionado" -#: ../src/ui/dialog/clonetiler.cpp:887 +#: ../src/ui/dialog/clonetiler.cpp:944 msgid "3. Apply the value to the clones':" msgstr "3. Aplicar el valor a esta característica de los clones:" -#: ../src/ui/dialog/clonetiler.cpp:896 +#: ../src/ui/dialog/clonetiler.cpp:959 msgid "Presence" msgstr "Presencia" -#: ../src/ui/dialog/clonetiler.cpp:899 +#: ../src/ui/dialog/clonetiler.cpp:962 msgid "" "Each clone is created with the probability determined by the picked value in " "that point" @@ -14716,16 +14943,16 @@ msgstr "" "Se crea a cada clon con la probabilidad determinada por el valor " "seleccionado en ese punto" -#: ../src/ui/dialog/clonetiler.cpp:905 +#: ../src/ui/dialog/clonetiler.cpp:969 msgid "Size" msgstr "Tamaño" -#: ../src/ui/dialog/clonetiler.cpp:908 +#: ../src/ui/dialog/clonetiler.cpp:972 msgid "Each clone's size is determined by the picked value in that point" msgstr "" "Se determina el tamaño de cada clon por el valor seleccionado en ese punto" -#: ../src/ui/dialog/clonetiler.cpp:917 +#: ../src/ui/dialog/clonetiler.cpp:982 msgid "" "Each clone is painted by the picked color (the original must have unset fill " "or stroke)" @@ -14733,52 +14960,52 @@ msgstr "" "Se pinta cada clon con el color seleccionado (el original debe carecer de " "relleno y borde)" -#: ../src/ui/dialog/clonetiler.cpp:926 +#: ../src/ui/dialog/clonetiler.cpp:992 msgid "Each clone's opacity is determined by the picked value in that point" msgstr "" "Se determina la opacidad de cada clon por el valor seleccionado en ese punto" -#: ../src/ui/dialog/clonetiler.cpp:940 +#: ../src/ui/dialog/clonetiler.cpp:1011 msgid "Apply to tiled clones:" msgstr "Aplicar a clones en mosaico:" -#: ../src/ui/dialog/clonetiler.cpp:961 +#: ../src/ui/dialog/clonetiler.cpp:1052 msgid "How many rows in the tiling" msgstr "La cantidad de filas en el mosaico" -#: ../src/ui/dialog/clonetiler.cpp:981 +#: ../src/ui/dialog/clonetiler.cpp:1086 msgid "How many columns in the tiling" msgstr "La cantidad de columnas en el mosaico" -#: ../src/ui/dialog/clonetiler.cpp:1010 +#: ../src/ui/dialog/clonetiler.cpp:1131 msgid "Width of the rectangle to be filled" msgstr "Anchura del rectángulo que se rellenará" -#: ../src/ui/dialog/clonetiler.cpp:1033 +#: ../src/ui/dialog/clonetiler.cpp:1168 msgid "Height of the rectangle to be filled" msgstr "Altura del rectángulo que se rellenará" -#: ../src/ui/dialog/clonetiler.cpp:1048 +#: ../src/ui/dialog/clonetiler.cpp:1185 msgid "Rows, columns: " msgstr "Filas, columnas: " -#: ../src/ui/dialog/clonetiler.cpp:1049 +#: ../src/ui/dialog/clonetiler.cpp:1186 msgid "Create the specified number of rows and columns" msgstr "Crear el número de filas y columnas indicado" -#: ../src/ui/dialog/clonetiler.cpp:1058 +#: ../src/ui/dialog/clonetiler.cpp:1195 msgid "Width, height: " msgstr "Anchura, altura: " -#: ../src/ui/dialog/clonetiler.cpp:1059 +#: ../src/ui/dialog/clonetiler.cpp:1196 msgid "Fill the specified width and height with the tiling" msgstr "Rellenar la anchura y altura indicada con las teselas" -#: ../src/ui/dialog/clonetiler.cpp:1075 +#: ../src/ui/dialog/clonetiler.cpp:1217 msgid "Use saved size and position of the tile" msgstr "Usar el tamaño y posición de la tesela previamente guardados" -#: ../src/ui/dialog/clonetiler.cpp:1078 +#: ../src/ui/dialog/clonetiler.cpp:1220 msgid "" "Pretend that the size and position of the tile are the same as the last time " "you tiled it (if any), instead of using the current size" @@ -14790,11 +15017,11 @@ msgstr "" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/clonetiler.cpp:1104 +#: ../src/ui/dialog/clonetiler.cpp:1254 msgid " _Create " msgstr " _Crear " -#: ../src/ui/dialog/clonetiler.cpp:1106 +#: ../src/ui/dialog/clonetiler.cpp:1256 msgid "Create and tile the clones of the selection" msgstr "Crear y colocar los clones de la selección" @@ -14803,30 +15030,30 @@ msgstr "Crear y colocar los clones de la selección" #. diagrams on the left in the following screenshot: #. http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png #. So unclumping is the process of spreading a number of objects out more evenly. -#: ../src/ui/dialog/clonetiler.cpp:1122 +#: ../src/ui/dialog/clonetiler.cpp:1276 msgid " _Unclump " msgstr " Des_aglomerar " -#: ../src/ui/dialog/clonetiler.cpp:1123 +#: ../src/ui/dialog/clonetiler.cpp:1277 msgid "Spread out clones to reduce clumping; can be applied repeatedly" msgstr "" "Esparcir los clones para reducir la aglomeración; se puede aplicar " "repetidamente" -#: ../src/ui/dialog/clonetiler.cpp:1129 +#: ../src/ui/dialog/clonetiler.cpp:1283 msgid " Re_move " msgstr " El_minar " -#: ../src/ui/dialog/clonetiler.cpp:1130 +#: ../src/ui/dialog/clonetiler.cpp:1284 msgid "Remove existing tiled clones of the selected object (siblings only)" msgstr "Eliminar las teselas clonadas del objeto seleccionado (solo hermanos)" -#: ../src/ui/dialog/clonetiler.cpp:1145 +#: ../src/ui/dialog/clonetiler.cpp:1301 msgid " R_eset " msgstr " R_einiciar " #. TRANSLATORS: "change" is a noun here -#: ../src/ui/dialog/clonetiler.cpp:1147 +#: ../src/ui/dialog/clonetiler.cpp:1303 msgid "" "Reset all shifts, scales, rotates, opacity and color changes in the dialog " "to zero" @@ -14834,68 +15061,67 @@ msgstr "" "Reiniciar todos los cambios de movimiento, escala, rotación, opacidad y " "color del diálogo a cero" -#: ../src/ui/dialog/clonetiler.cpp:1207 +#: ../src/ui/dialog/clonetiler.cpp:1375 msgid "Nothing selected." msgstr "No se ha seleccionado nada." -#: ../src/ui/dialog/clonetiler.cpp:1213 +#: ../src/ui/dialog/clonetiler.cpp:1381 msgid "More than one object selected." msgstr "Ha seleccionado más de un objeto." -#: ../src/ui/dialog/clonetiler.cpp:1220 +#: ../src/ui/dialog/clonetiler.cpp:1388 #, c-format msgid "Object has %d tiled clones." msgstr "El objeto tiene %d clones en mosaico." -#: ../src/ui/dialog/clonetiler.cpp:1225 +#: ../src/ui/dialog/clonetiler.cpp:1393 msgid "Object has no tiled clones." msgstr "El objeto no tiene clones en mosaico." -#: ../src/ui/dialog/clonetiler.cpp:1940 +#: ../src/ui/dialog/clonetiler.cpp:2117 msgid "Select one object whose tiled clones to unclump." msgstr "Seleccione un objeto cuyos clones desea desaglomerar." -#: ../src/ui/dialog/clonetiler.cpp:1960 +#: ../src/ui/dialog/clonetiler.cpp:2137 msgid "Unclump tiled clones" msgstr "Desaglomerar clones en mosaico" -#: ../src/ui/dialog/clonetiler.cpp:1989 +#: ../src/ui/dialog/clonetiler.cpp:2166 msgid "Select one object whose tiled clones to remove." msgstr "Seleccione el objeto cuyos clones desea eliminar." -#: ../src/ui/dialog/clonetiler.cpp:2014 +#: ../src/ui/dialog/clonetiler.cpp:2191 msgid "Delete tiled clones" msgstr "Suprimir clones en mosaico" -#: ../src/ui/dialog/clonetiler.cpp:2067 +#: ../src/ui/dialog/clonetiler.cpp:2244 msgid "" "If you want to clone several objects, group them and clone the " "group." msgstr "" "Si quiere clonar varios objetos, agrúpelos y clone el grupo." -#. set statusbar text -#: ../src/ui/dialog/clonetiler.cpp:2075 +#: ../src/ui/dialog/clonetiler.cpp:2253 msgid "Creating tiled clones..." msgstr "Creando clones en mosaico..." -#: ../src/ui/dialog/clonetiler.cpp:2492 +#: ../src/ui/dialog/clonetiler.cpp:2670 msgid "Create tiled clones" msgstr "Crear clones en mosaico" -#: ../src/ui/dialog/clonetiler.cpp:2685 +#: ../src/ui/dialog/clonetiler.cpp:2907 msgid "Per row:" msgstr "Por fila:" -#: ../src/ui/dialog/clonetiler.cpp:2699 +#: ../src/ui/dialog/clonetiler.cpp:2925 msgid "Per column:" msgstr "Por columna:" -#: ../src/ui/dialog/clonetiler.cpp:2707 +#: ../src/ui/dialog/clonetiler.cpp:2933 msgid "Randomize:" msgstr "Aleatorizar:" -#: ../src/ui/dialog/color-item.cpp:119 +#: ../src/ui/dialog/color-item.cpp:127 #, c-format msgid "" "Color: %s; Click to set fill, Shift+click to set stroke" @@ -14903,84 +15129,84 @@ msgstr "" "Color: %s; Pulse para fijar el relleno, Mayús+clic para " "fijar trazo" -#: ../src/ui/dialog/color-item.cpp:497 +#: ../src/ui/dialog/color-item.cpp:505 msgid "Change color definition" msgstr "Cambiar definición de color" -#: ../src/ui/dialog/color-item.cpp:669 +#: ../src/ui/dialog/color-item.cpp:677 msgid "Remove stroke color" msgstr "Eliminar color de trazo" -#: ../src/ui/dialog/color-item.cpp:669 +#: ../src/ui/dialog/color-item.cpp:677 msgid "Remove fill color" msgstr "Eliminar color de relleno" -#: ../src/ui/dialog/color-item.cpp:674 +#: ../src/ui/dialog/color-item.cpp:682 msgid "Set stroke color to none" msgstr "Fijar color del trazo a ninguno" -#: ../src/ui/dialog/color-item.cpp:674 +#: ../src/ui/dialog/color-item.cpp:682 msgid "Set fill color to none" msgstr "Fijar color del relleno a ninguno" -#: ../src/ui/dialog/color-item.cpp:692 +#: ../src/ui/dialog/color-item.cpp:700 msgid "Set stroke color from swatch" msgstr "Aplicar color de trazo desde muestras" -#: ../src/ui/dialog/color-item.cpp:692 +#: ../src/ui/dialog/color-item.cpp:700 msgid "Set fill color from swatch" msgstr "Aplicar color de relleno desde muestras" -#: ../src/ui/dialog/debug.cpp:68 +#: ../src/ui/dialog/debug.cpp:69 msgid "Messages" msgstr "Mensajes" -#: ../src/ui/dialog/debug.cpp:77 ../src/ui/dialog/messages.cpp:47 +#: ../src/ui/dialog/debug.cpp:83 ../src/ui/dialog/messages.cpp:47 msgid "_Clear" msgstr "_Limpiar" -#: ../src/ui/dialog/debug.cpp:81 ../src/ui/dialog/messages.cpp:48 +#: ../src/ui/dialog/debug.cpp:87 ../src/ui/dialog/messages.cpp:48 msgid "Capture log messages" msgstr "Capturar los mensajes de registro" -#: ../src/ui/dialog/debug.cpp:85 +#: ../src/ui/dialog/debug.cpp:91 msgid "Release log messages" msgstr "Dejar de capturar los mensajes de registro" -#: ../src/ui/dialog/document-metadata.cpp:77 -#: ../src/ui/dialog/document-properties.cpp:155 +#: ../src/ui/dialog/document-metadata.cpp:88 +#: ../src/ui/dialog/document-properties.cpp:167 msgid "Metadata" msgstr "Metadatos" -#: ../src/ui/dialog/document-metadata.cpp:78 -#: ../src/ui/dialog/document-properties.cpp:156 +#: ../src/ui/dialog/document-metadata.cpp:89 +#: ../src/ui/dialog/document-properties.cpp:168 msgid "License" msgstr "Licencia" -#: ../src/ui/dialog/document-metadata.cpp:115 -#: ../src/ui/dialog/document-properties.cpp:922 +#: ../src/ui/dialog/document-metadata.cpp:126 +#: ../src/ui/dialog/document-properties.cpp:1037 msgid "Dublin Core Entities" msgstr "Entidades Dublin Core" -#: ../src/ui/dialog/document-metadata.cpp:147 -#: ../src/ui/dialog/document-properties.cpp:969 +#: ../src/ui/dialog/document-metadata.cpp:168 +#: ../src/ui/dialog/document-properties.cpp:1099 msgid "License" msgstr "Licencia" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "Use antialiasing" msgstr "Usar antialiasing" -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "If unset, no antialiasing will be done on the drawing" msgstr "Si se desmarca no se aplicará antialias en el dibujo" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:119 msgid "Checkerboard background" msgstr "Fondo de damero" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:119 msgid "" "If set, use checkerboard for background, otherwise use background color at " "full opacity." @@ -14988,36 +15214,36 @@ msgstr "" "Is se marca se usará un fondo de damero, si no, se usara un color de fondo " "con opacidad total." -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:120 msgid "Show page _border" msgstr "Mostrar _borde del papel" -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:120 msgid "If set, rectangular page border is shown" msgstr "Muestra el borde rectangular del papel" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:121 msgid "Border on _top of drawing" msgstr "Borde en_cima del dibujo" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:121 msgid "If set, border is always on top of the drawing" msgstr "Muestra el borde siempre encima del dibujo" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "_Show border shadow" msgstr "Mo_strar sombra del papel" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "If set, page border shows a shadow on its right and lower side" msgstr "" "Si está marcado el borde muestra una sombra a sus lados derecho e inferior" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Back_ground color:" msgstr "C_olor de fondo:" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "" "Color of the page background. Note: transparency setting ignored while " "editing if 'Checkerboard background' unset (but used when exporting to " @@ -15027,80 +15253,80 @@ msgstr "" "edición si «Fondo de damero» está desmarcado (pero se usará al exportar a " "mapa de bits)." -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:124 msgid "Border _color:" msgstr "_Color del borde:" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:124 msgid "Page border color" msgstr "Color del borde del papel" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:124 msgid "Color of the page border" msgstr "Color del borde del papel" -#: ../src/ui/dialog/document-properties.cpp:113 +#: ../src/ui/dialog/document-properties.cpp:125 msgid "Display _units:" msgstr "_Unidad de visualización:" #. --------------------------------------------------------------- #. General snap options -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:129 msgid "Show _guides" msgstr "Mostrar las _guías" -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:129 msgid "Show or hide guides" msgstr "Mostrar/ocultar las guías" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:130 msgid "Guide co_lor:" msgstr "Co_lor de la guía:" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:130 msgid "Guideline color" msgstr "Color de las líneas guía" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:130 msgid "Color of guidelines" msgstr "Color de las líneas guía" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:131 msgid "_Highlight color:" msgstr "Color del _resaltado:" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:131 msgid "Highlighted guideline color" msgstr "Color de resaltado de las líneas guías" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:131 msgid "Color of a guideline when it is under mouse" msgstr "Color de la guía cuando está debajo del ratón" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:121 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "Snap _distance" msgstr "_Distancia de ajuste" -#: ../src/ui/dialog/document-properties.cpp:121 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "Snap only when _closer than:" msgstr "Ajustar solo si está más _cerca que:" -#: ../src/ui/dialog/document-properties.cpp:121 -#: ../src/ui/dialog/document-properties.cpp:126 -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:133 +#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:143 msgid "Always snap" msgstr "Ajustar siempre" -#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "Snapping distance, in screen pixels, for snapping to objects" msgstr "Distancia de ajuste, en píxeles de pantalla, para ajustarse a objetos" -#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "Always snap to objects, regardless of their distance" msgstr "Ajustar siempre a objetos, sin importar su distancia" -#: ../src/ui/dialog/document-properties.cpp:123 +#: ../src/ui/dialog/document-properties.cpp:135 msgid "" "If set, objects only snap to another object when it's within the range " "specified below" @@ -15109,23 +15335,23 @@ msgstr "" "al alcance indicado más abajo." #. Options for snapping to grids -#: ../src/ui/dialog/document-properties.cpp:126 +#: ../src/ui/dialog/document-properties.cpp:138 msgid "Snap d_istance" msgstr "D_istancia de ajuste" -#: ../src/ui/dialog/document-properties.cpp:126 +#: ../src/ui/dialog/document-properties.cpp:138 msgid "Snap only when c_loser than:" msgstr "Ajustar solo si está más _cerca que:" -#: ../src/ui/dialog/document-properties.cpp:127 +#: ../src/ui/dialog/document-properties.cpp:139 msgid "Snapping distance, in screen pixels, for snapping to grid" msgstr "Distancia de ajuste, en píxeles de pantalla, para ajustar a la rejilla" -#: ../src/ui/dialog/document-properties.cpp:127 +#: ../src/ui/dialog/document-properties.cpp:139 msgid "Always snap to grids, regardless of the distance" msgstr "Ajustar siempre a rejillas, sin importar su distancia" -#: ../src/ui/dialog/document-properties.cpp:128 +#: ../src/ui/dialog/document-properties.cpp:140 msgid "" "If set, objects only snap to a grid line when it's within the range " "specified below" @@ -15134,23 +15360,23 @@ msgstr "" "cuando estén al alcance indicado más abajo." #. Options for snapping to guides -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:143 msgid "Snap dist_ance" msgstr "Dist_ancia de ajuste" -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:143 msgid "Snap only when close_r than:" msgstr "Ajustar solo si está más ce_rca que:" -#: ../src/ui/dialog/document-properties.cpp:132 +#: ../src/ui/dialog/document-properties.cpp:144 msgid "Snapping distance, in screen pixels, for snapping to guides" msgstr "Distancia de ajuste, en píxeles de pantalla, para ajustar a las guías" -#: ../src/ui/dialog/document-properties.cpp:132 +#: ../src/ui/dialog/document-properties.cpp:144 msgid "Always snap to guides, regardless of the distance" msgstr "Ajustar siempre a guías, sin importar su distancia" -#: ../src/ui/dialog/document-properties.cpp:133 +#: ../src/ui/dialog/document-properties.cpp:145 msgid "" "If set, objects only snap to a guide when it's within the range specified " "below" @@ -15159,109 +15385,109 @@ msgstr "" "alcance indicado más abajo." #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:148 msgid "Snap to clip paths" msgstr "Ajustar a trayectos de recorte" -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:148 msgid "When snapping to paths, then also try snapping to clip paths" msgstr "Al ajustar a trayectos, también intentar ajustar a trayecto de recorte" -#: ../src/ui/dialog/document-properties.cpp:137 +#: ../src/ui/dialog/document-properties.cpp:149 msgid "Snap to mask paths" msgstr "Ajustar a trayectos de máscara" -#: ../src/ui/dialog/document-properties.cpp:137 +#: ../src/ui/dialog/document-properties.cpp:149 msgid "When snapping to paths, then also try snapping to mask paths" msgstr "" "Al ajustar a trayectos, también intentar ajustar a trayectos de máscara" -#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:150 msgid "Snap perpendicularly" msgstr "Ajuste perpendicular" -#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:150 msgid "" "When snapping to paths or guides, then also try snapping perpendicularly" msgstr "" "Al ajustar a trayectos o guías, también intentar ajustar perpendicularmente" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:151 msgid "Snap tangentially" msgstr "Ajuste tangencial" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:151 msgid "When snapping to paths or guides, then also try snapping tangentially" msgstr "" "Al ajustar a trayectos o guías, también intentar ajustar tangencialmente" -#: ../src/ui/dialog/document-properties.cpp:142 +#: ../src/ui/dialog/document-properties.cpp:154 msgctxt "Grid" msgid "_New" msgstr "_Nueva" -#: ../src/ui/dialog/document-properties.cpp:142 +#: ../src/ui/dialog/document-properties.cpp:154 msgid "Create new grid." msgstr "Crear rejilla nueva" -#: ../src/ui/dialog/document-properties.cpp:143 +#: ../src/ui/dialog/document-properties.cpp:155 msgctxt "Grid" msgid "_Remove" msgstr "Elimina_r" -#: ../src/ui/dialog/document-properties.cpp:143 +#: ../src/ui/dialog/document-properties.cpp:155 msgid "Remove selected grid." msgstr "Eliminar rejilla seleccionada" -#: ../src/ui/dialog/document-properties.cpp:150 ../src/widgets/toolbox.cpp:1874 +#: ../src/ui/dialog/document-properties.cpp:162 ../src/widgets/toolbox.cpp:1911 msgid "Guides" msgstr "Guías" -#: ../src/ui/dialog/document-properties.cpp:152 ../src/verbs.cpp:2889 +#: ../src/ui/dialog/document-properties.cpp:164 ../src/verbs.cpp:2851 msgid "Snap" msgstr "Ajustar" -#: ../src/ui/dialog/document-properties.cpp:154 +#: ../src/ui/dialog/document-properties.cpp:166 msgid "Scripting" msgstr "Scripting" -#: ../src/ui/dialog/document-properties.cpp:289 +#: ../src/ui/dialog/document-properties.cpp:330 msgid "General" msgstr "General" -#: ../src/ui/dialog/document-properties.cpp:292 +#: ../src/ui/dialog/document-properties.cpp:333 msgid "Page Size" msgstr "Tamaño de página" -#: ../src/ui/dialog/document-properties.cpp:295 +#: ../src/ui/dialog/document-properties.cpp:336 msgid "Background" msgstr "Color de fondo" -#: ../src/ui/dialog/document-properties.cpp:298 +#: ../src/ui/dialog/document-properties.cpp:339 msgid "Border" msgstr "Borde" -#: ../src/ui/dialog/document-properties.cpp:301 +#: ../src/ui/dialog/document-properties.cpp:342 msgid "Display" msgstr "Mostrar" -#: ../src/ui/dialog/document-properties.cpp:340 +#: ../src/ui/dialog/document-properties.cpp:381 msgid "Guides" msgstr "Guías" -#: ../src/ui/dialog/document-properties.cpp:358 +#: ../src/ui/dialog/document-properties.cpp:399 msgid "Snap to objects" msgstr "Ajustar a objetos" -#: ../src/ui/dialog/document-properties.cpp:360 +#: ../src/ui/dialog/document-properties.cpp:401 msgid "Snap to grids" msgstr "Ajustar a rejillas" -#: ../src/ui/dialog/document-properties.cpp:362 +#: ../src/ui/dialog/document-properties.cpp:403 msgid "Snap to guides" msgstr "Ajustar a guías" -#: ../src/ui/dialog/document-properties.cpp:364 +#: ../src/ui/dialog/document-properties.cpp:405 msgid "Miscellaneous" msgstr "Varios" @@ -15269,70 +15495,70 @@ msgstr "Varios" #. Inkscape::GC::release(defsRepr); #. inform the document, so we can undo #. Color Management -#: ../src/ui/dialog/document-properties.cpp:501 ../src/verbs.cpp:3072 +#: ../src/ui/dialog/document-properties.cpp:542 ../src/verbs.cpp:3034 msgid "Link Color Profile" msgstr "Asociar perfil de color" -#: ../src/ui/dialog/document-properties.cpp:613 +#: ../src/ui/dialog/document-properties.cpp:654 msgid "Remove linked color profile" msgstr "Quitar perfil de color asociado" -#: ../src/ui/dialog/document-properties.cpp:632 +#: ../src/ui/dialog/document-properties.cpp:673 msgid "Linked Color Profiles:" msgstr "Perfiles de color asociados" -#: ../src/ui/dialog/document-properties.cpp:634 +#: ../src/ui/dialog/document-properties.cpp:675 msgid "Available Color Profiles:" msgstr "Perfiles de color disponibles:" -#: ../src/ui/dialog/document-properties.cpp:636 +#: ../src/ui/dialog/document-properties.cpp:677 msgid "Link Profile" msgstr "Asociar perfil" -#: ../src/ui/dialog/document-properties.cpp:639 +#: ../src/ui/dialog/document-properties.cpp:680 msgid "Unlink Profile" msgstr "Desenlazar perfil" -#: ../src/ui/dialog/document-properties.cpp:701 +#: ../src/ui/dialog/document-properties.cpp:764 msgid "Profile Name" msgstr "Nombre de perfil" -#: ../src/ui/dialog/document-properties.cpp:737 +#: ../src/ui/dialog/document-properties.cpp:800 msgid "External scripts" msgstr "Scripts externos" -#: ../src/ui/dialog/document-properties.cpp:738 +#: ../src/ui/dialog/document-properties.cpp:801 msgid "Embedded scripts" msgstr "Script incrustados" -#: ../src/ui/dialog/document-properties.cpp:743 +#: ../src/ui/dialog/document-properties.cpp:806 msgid "External script files:" msgstr "Archivos de script externos:" -#: ../src/ui/dialog/document-properties.cpp:745 +#: ../src/ui/dialog/document-properties.cpp:808 msgid "Add the current file name or browse for a file" msgstr "Añadir el nombre de archivo actual o buscar un archivo" -#: ../src/ui/dialog/document-properties.cpp:748 -#: ../src/ui/dialog/document-properties.cpp:806 -#: ../src/ui/widget/selected-style.cpp:339 +#: ../src/ui/dialog/document-properties.cpp:811 +#: ../src/ui/dialog/document-properties.cpp:888 +#: ../src/ui/widget/selected-style.cpp:357 msgid "Remove" msgstr "Eliminar" -#: ../src/ui/dialog/document-properties.cpp:793 +#: ../src/ui/dialog/document-properties.cpp:875 msgid "Filename" msgstr "Nombre de archivo" -#: ../src/ui/dialog/document-properties.cpp:801 +#: ../src/ui/dialog/document-properties.cpp:883 msgid "Embedded script files:" msgstr "Archivos de script incrustados:" -#: ../src/ui/dialog/document-properties.cpp:803 -#: ../src/ui/dialog/objects.cpp:1881 +#: ../src/ui/dialog/document-properties.cpp:885 +#: ../src/ui/dialog/objects.cpp:1928 msgid "New" msgstr "Nuevo" -#: ../src/ui/dialog/document-properties.cpp:846 +#: ../src/ui/dialog/document-properties.cpp:952 msgid "Script id" msgstr "Id de script" @@ -15340,53 +15566,53 @@ msgstr "Id de script" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/document-properties.cpp:852 +#: ../src/ui/dialog/document-properties.cpp:958 msgid "Content:" msgstr "Contenido:" -#: ../src/ui/dialog/document-properties.cpp:949 +#: ../src/ui/dialog/document-properties.cpp:1075 msgid "_Save as default" msgstr "G_uardar como predeterminado" -#: ../src/ui/dialog/document-properties.cpp:950 +#: ../src/ui/dialog/document-properties.cpp:1076 msgid "Save this metadata as the default metadata" msgstr "Guardar estos metadatos como metadatos predeterminados" -#: ../src/ui/dialog/document-properties.cpp:951 +#: ../src/ui/dialog/document-properties.cpp:1077 msgid "Use _default" msgstr "Usar p_redeterminados" -#: ../src/ui/dialog/document-properties.cpp:952 +#: ../src/ui/dialog/document-properties.cpp:1078 msgid "Use the previously saved default metadata here" msgstr "Usar los metadatos guardados previamente" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1012 +#: ../src/ui/dialog/document-properties.cpp:1151 msgid "Add external script..." msgstr "Añadir script externo..." -#: ../src/ui/dialog/document-properties.cpp:1051 +#: ../src/ui/dialog/document-properties.cpp:1190 msgid "Select a script to load" msgstr "Seleccione un script para cargar" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1079 +#: ../src/ui/dialog/document-properties.cpp:1218 msgid "Add embedded script..." msgstr "Añadir script incrustado..." #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1110 +#: ../src/ui/dialog/document-properties.cpp:1249 msgid "Remove external script" msgstr "Retirar script externo" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1139 +#: ../src/ui/dialog/document-properties.cpp:1278 msgid "Remove embedded script" msgstr "Eliminar script incrustado" #. TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text()); #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1233 +#: ../src/ui/dialog/document-properties.cpp:1374 msgid "Edit embedded script" msgstr "Editar script incrustado" @@ -15394,53 +15620,53 @@ msgstr "Editar script incrustado" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/document-properties.cpp:1317 +#: ../src/ui/dialog/document-properties.cpp:1458 msgid "Creation" msgstr "Creación " -#: ../src/ui/dialog/document-properties.cpp:1318 +#: ../src/ui/dialog/document-properties.cpp:1459 msgid "Defined grids" msgstr "Rejillas definidas" -#: ../src/ui/dialog/document-properties.cpp:1562 +#: ../src/ui/dialog/document-properties.cpp:1703 msgid "Remove grid" msgstr "Eliminar rejilla" -#: ../src/ui/dialog/document-properties.cpp:1654 +#: ../src/ui/dialog/document-properties.cpp:1795 msgid "Changed default display unit" msgstr "Se ha cambiado la unidad de visualización predeterminada" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2939 +#: ../src/ui/dialog/export.cpp:147 ../src/verbs.cpp:2901 msgid "_Page" msgstr "_Página" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2943 +#: ../src/ui/dialog/export.cpp:147 ../src/verbs.cpp:2905 msgid "_Drawing" msgstr "_Dibujo" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2945 +#: ../src/ui/dialog/export.cpp:147 ../src/verbs.cpp:2907 msgid "_Selection" msgstr "_Selección" -#: ../src/ui/dialog/export.cpp:124 +#: ../src/ui/dialog/export.cpp:147 msgid "_Custom" msgstr "_Personalizado" -#: ../src/ui/dialog/export.cpp:142 ../src/widgets/measure-toolbar.cpp:286 +#: ../src/ui/dialog/export.cpp:165 ../src/widgets/measure-toolbar.cpp:286 #: ../src/widgets/measure-toolbar.cpp:294 #: ../share/extensions/render_gears.inx.h:6 msgid "Units:" msgstr "Unidades:" -#: ../src/ui/dialog/export.cpp:144 +#: ../src/ui/dialog/export.cpp:167 msgid "_Export As..." msgstr "_Exportar como..." -#: ../src/ui/dialog/export.cpp:147 +#: ../src/ui/dialog/export.cpp:170 msgid "B_atch export all selected objects" msgstr "Export_ar por lotes todos los objetos seleccionados" -#: ../src/ui/dialog/export.cpp:147 +#: ../src/ui/dialog/export.cpp:170 msgid "" "Export each selected object into its own PNG file, using export hints if any " "(caution, overwrites without asking!)" @@ -15448,193 +15674,155 @@ msgstr "" "Exportar cada objeto seleccionado en su propio archivo PNG utilizando pistas " "de exportación, si existen (¡Atención, sobrescribe sin preguntar!)" -#: ../src/ui/dialog/export.cpp:148 -msgid "Use interlacing" -msgstr "Usar entrelazado" - -#: ../src/ui/dialog/export.cpp:148 -msgid "" -"Enables ADAM7 interlacing for PNG output. This results in slightly heavier " -"images, but big images will look better sooner when loading the file" -msgstr "" -"Activa entrelazado ADAM7 para salida PNG. Esto resultará en imágenes " -"ligeramente más pesadas pero las imágenes grandes tendrán mejor aspecto más " -"rápidamente mientras se cargan." - -#: ../src/ui/dialog/export.cpp:149 -msgid "Bit depth" -msgstr "Profundidad de bits" - -#: ../src/ui/dialog/export.cpp:151 -msgid "Compression" -msgstr "Compresión" - -#: ../src/ui/dialog/export.cpp:153 -msgid "pHYs dpi" -msgstr "ppp de pHYs" - -#: ../src/ui/dialog/export.cpp:156 +#: ../src/ui/dialog/export.cpp:172 msgid "Hide a_ll except selected" msgstr "Ocu_ltar todos excepto los seleccionados" -#: ../src/ui/dialog/export.cpp:156 +#: ../src/ui/dialog/export.cpp:172 msgid "In the exported image, hide all objects except those that are selected" msgstr "" "Ocultar todos los objetos, excepto los seleccionados, en la imagen exportada" -#: ../src/ui/dialog/export.cpp:157 +#: ../src/ui/dialog/export.cpp:173 msgid "Close when complete" msgstr "Cerrar al terminar" -#: ../src/ui/dialog/export.cpp:157 +#: ../src/ui/dialog/export.cpp:173 msgid "Once the export completes, close this dialog" msgstr "Cerrar este diálogo una vez termine la exportación" -#: ../src/ui/dialog/export.cpp:159 +#: ../src/ui/dialog/export.cpp:175 msgid "_Export" msgstr "_Exportar" -#: ../src/ui/dialog/export.cpp:177 +#: ../src/ui/dialog/export.cpp:193 msgid "Export area" msgstr "Área de exportación" -#: ../src/ui/dialog/export.cpp:210 +#: ../src/ui/dialog/export.cpp:232 msgid "_x0:" msgstr "_x0:" -#: ../src/ui/dialog/export.cpp:214 +#: ../src/ui/dialog/export.cpp:236 msgid "x_1:" msgstr "x_1:" -#: ../src/ui/dialog/export.cpp:218 +#: ../src/ui/dialog/export.cpp:240 msgid "Wid_th:" msgstr "Anc_ho:" -#: ../src/ui/dialog/export.cpp:222 +#: ../src/ui/dialog/export.cpp:244 msgid "_y0:" msgstr "_y0:" -#: ../src/ui/dialog/export.cpp:226 +#: ../src/ui/dialog/export.cpp:248 msgid "y_1:" msgstr "y_1:" -#: ../src/ui/dialog/export.cpp:230 +#: ../src/ui/dialog/export.cpp:252 msgid "Hei_ght:" msgstr "Al_to:" -#: ../src/ui/dialog/export.cpp:245 +#: ../src/ui/dialog/export.cpp:267 msgid "Image size" msgstr "Tamaño de imagen" -#: ../src/ui/dialog/export.cpp:257 ../src/ui/dialog/export.cpp:268 +#: ../src/ui/dialog/export.cpp:285 ../src/ui/dialog/export.cpp:296 msgid "pixels at" msgstr "píxeles a" -#: ../src/ui/dialog/export.cpp:263 +#: ../src/ui/dialog/export.cpp:291 msgid "dp_i" msgstr "_ppp" -#: ../src/ui/dialog/export.cpp:268 ../src/ui/dialog/transformation.cpp:71 -#: ../src/ui/widget/page-sizer.cpp:221 +#: ../src/ui/dialog/export.cpp:296 ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/widget/page-sizer.cpp:238 msgid "_Height:" msgstr "A_ltura:" -#: ../src/ui/dialog/export.cpp:276 -#: ../src/ui/dialog/inkscape-preferences.cpp:1474 -#: ../src/ui/dialog/inkscape-preferences.cpp:1478 -#: ../src/ui/dialog/inkscape-preferences.cpp:1502 +#: ../src/ui/dialog/export.cpp:304 +#: ../src/ui/dialog/inkscape-preferences.cpp:1493 +#: ../src/ui/dialog/inkscape-preferences.cpp:1497 +#: ../src/ui/dialog/inkscape-preferences.cpp:1521 msgid "dpi" msgstr "ppp" -#: ../src/ui/dialog/export.cpp:284 +#: ../src/ui/dialog/export.cpp:312 msgid "_Filename" msgstr "Nombre del _archivo" -#: ../src/ui/dialog/export.cpp:326 +#: ../src/ui/dialog/export.cpp:354 msgid "Export the bitmap file with these settings" msgstr "Exportar el archivo de mapa de bits con estos ajustes" -#. Advanced -#: ../src/ui/dialog/export.cpp:332 -msgid "Advanced" -msgstr "Avanzado" - -#: ../src/ui/dialog/export.cpp:346 -msgid "" -"Will force-set the physical dpi for the png file. Set this to 72 if you're " -"planning to work on your png with Photoshop" -msgstr "" -"Forzará los ppp físicos del archivo png. Ajuste esto a 72 si va a trabajar " -"con el png en Photoshop." - -#: ../src/ui/dialog/export.cpp:480 +#: ../src/ui/dialog/export.cpp:479 msgid "bitmap" msgstr "bitmap" -#: ../src/ui/dialog/export.cpp:585 +#: ../src/ui/dialog/export.cpp:614 #, c-format msgid "B_atch export %d selected object" msgid_plural "B_atch export %d selected objects" msgstr[0] "Export_ar por separado %d objeto seleccionado" msgstr[1] "Export_ar por separado %d objetos seleccionados" -#: ../src/ui/dialog/export.cpp:901 +#: ../src/ui/dialog/export.cpp:930 msgid "Export in progress" msgstr "Realizando exportación" -#: ../src/ui/dialog/export.cpp:1001 +#: ../src/ui/dialog/export.cpp:1022 msgid "No items selected." msgstr "No se han seleccionado elementos" -#: ../src/ui/dialog/export.cpp:1005 ../src/ui/dialog/export.cpp:1007 +#: ../src/ui/dialog/export.cpp:1026 ../src/ui/dialog/export.cpp:1028 msgid "Exporting %1 files" msgstr "Exportando %d archivos" -#: ../src/ui/dialog/export.cpp:1049 ../src/ui/dialog/export.cpp:1051 +#: ../src/ui/dialog/export.cpp:1069 ../src/ui/dialog/export.cpp:1071 #, c-format msgid "Exporting file %s..." msgstr "Exportando archivo %s..." -#: ../src/ui/dialog/export.cpp:1062 ../src/ui/dialog/export.cpp:1157 +#: ../src/ui/dialog/export.cpp:1080 ../src/ui/dialog/export.cpp:1172 #, c-format msgid "Could not export to filename %s.\n" msgstr "No se ha podido exportar al archivo %s.\n" -#: ../src/ui/dialog/export.cpp:1065 +#: ../src/ui/dialog/export.cpp:1083 #, c-format msgid "Could not export to filename %s." msgstr "No se ha podido exportar al archivo %s." -#: ../src/ui/dialog/export.cpp:1080 +#: ../src/ui/dialog/export.cpp:1098 #, c-format msgid "Successfully exported %d files from %d selected items." msgstr "" "Se han exportado con éxito %d archivos a partir de %d " "elementos seleccionados." -#: ../src/ui/dialog/export.cpp:1091 +#: ../src/ui/dialog/export.cpp:1109 msgid "You have to enter a filename." msgstr "Debe indicar un nombre de archivo." -#: ../src/ui/dialog/export.cpp:1092 +#: ../src/ui/dialog/export.cpp:1110 msgid "You have to enter a filename" msgstr "Debe indicar un nombre de archivo" -#: ../src/ui/dialog/export.cpp:1107 +#: ../src/ui/dialog/export.cpp:1124 msgid "The chosen area to be exported is invalid." msgstr "El área seleccionada para exportación no es válida." -#: ../src/ui/dialog/export.cpp:1108 +#: ../src/ui/dialog/export.cpp:1125 msgid "The chosen area to be exported is invalid" msgstr "El área seleccionada para exportación no es válida" -#: ../src/ui/dialog/export.cpp:1123 +#: ../src/ui/dialog/export.cpp:1140 #, c-format msgid "Directory %s does not exist or is not a directory.\n" msgstr "El directorio %s no existe o no es un directorio.\n" #. TRANSLATORS: %1 will be the filename, %2 the width, and %3 the height of the image -#: ../src/ui/dialog/export.cpp:1137 ../src/ui/dialog/export.cpp:1139 +#: ../src/ui/dialog/export.cpp:1154 ../src/ui/dialog/export.cpp:1156 msgid "Exporting %1 (%2 x %3)" msgstr "Exportando %1 (%2 x %3)" @@ -15642,49 +15830,49 @@ msgstr "Exportando %1 (%2 x %3)" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/export.cpp:1168 +#: ../src/ui/dialog/export.cpp:1183 #, c-format msgid "Drawing exported to %s." msgstr "Dibujo exportado a %s." -#: ../src/ui/dialog/export.cpp:1172 +#: ../src/ui/dialog/export.cpp:1187 msgid "Export aborted." msgstr "Exportación cancelada." -#: ../src/ui/dialog/export.cpp:1292 ../src/ui/interface.cpp:1361 -#: ../src/widgets/desktop-widget.cpp:1047 -#: ../src/widgets/desktop-widget.cpp:1109 +#: ../src/ui/dialog/export.cpp:1308 ../src/ui/interface.cpp:1401 +#: ../src/widgets/desktop-widget.cpp:1201 +#: ../src/widgets/desktop-widget.cpp:1263 msgid "_Cancel" msgstr "_Cancelar" -#: ../src/ui/dialog/export.cpp:1293 ../src/ui/dialog/input.cpp:953 -#: ../src/verbs.cpp:2468 ../src/widgets/desktop-widget.cpp:1048 +#: ../src/ui/dialog/export.cpp:1309 ../src/ui/dialog/input.cpp:1082 +#: ../src/verbs.cpp:2438 ../src/widgets/desktop-widget.cpp:1202 msgid "_Save" msgstr "_Guardar" -#: ../src/ui/dialog/extension-editor.cpp:79 +#: ../src/ui/dialog/extension-editor.cpp:81 msgid "Information" msgstr "Información" -#: ../src/ui/dialog/extension-editor.cpp:80 ../src/verbs.cpp:303 -#: ../src/verbs.cpp:322 ../share/extensions/color_HSL_adjust.inx.h:11 +#: ../src/ui/dialog/extension-editor.cpp:82 ../src/verbs.cpp:309 +#: ../src/verbs.cpp:328 ../share/extensions/color_HSL_adjust.inx.h:11 #: ../share/extensions/color_custom.inx.h:7 #: ../share/extensions/color_randomize.inx.h:11 #: ../share/extensions/dots.inx.h:7 #: ../share/extensions/draw_from_triangle.inx.h:35 #: ../share/extensions/dxf_input.inx.h:10 #: ../share/extensions/dxf_outlines.inx.h:24 -#: ../share/extensions/gcodetools_about.inx.h:3 -#: ../share/extensions/gcodetools_area.inx.h:53 +#: ../share/extensions/gcodetools_about.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:69 #: ../share/extensions/gcodetools_check_for_updates.inx.h:3 -#: ../share/extensions/gcodetools_dxf_points.inx.h:25 -#: ../share/extensions/gcodetools_engraving.inx.h:31 -#: ../share/extensions/gcodetools_graffiti.inx.h:42 -#: ../share/extensions/gcodetools_lathe.inx.h:46 -#: ../share/extensions/gcodetools_orientation_points.inx.h:14 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:35 +#: ../share/extensions/gcodetools_dxf_points.inx.h:30 +#: ../share/extensions/gcodetools_engraving.inx.h:39 +#: ../share/extensions/gcodetools_graffiti.inx.h:53 +#: ../share/extensions/gcodetools_lathe.inx.h:52 +#: ../share/extensions/gcodetools_orientation_points.inx.h:25 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:39 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:17 -#: ../share/extensions/gcodetools_tools_library.inx.h:12 +#: ../share/extensions/gcodetools_tools_library.inx.h:18 #: ../share/extensions/generate_voronoi.inx.h:5 #: ../share/extensions/gimp_xcf.inx.h:7 #: ../share/extensions/interp_att_g.inx.h:29 @@ -15715,15 +15903,10 @@ msgstr "Información" msgid "Help" msgstr "Ayuda" -#: ../src/ui/dialog/extension-editor.cpp:81 +#: ../src/ui/dialog/extension-editor.cpp:83 msgid "Parameters" msgstr "Parámetros" -#. Fill in the template -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:427 -msgid "No preview" -msgstr "Sin vista preliminar" - #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:531 msgid "too large for preview" msgstr "demasiado grande" @@ -15732,85 +15915,91 @@ msgstr "demasiado grande" msgid "Enable preview" msgstr "Activar vista preliminar" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:760 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:772 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:774 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:781 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:767 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:780 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:784 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:787 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:795 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:282 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:413 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:811 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:826 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:271 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:402 msgid "All Files" msgstr "Todos los archivos" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:778 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:792 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:283 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:808 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:823 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:272 msgid "All Inkscape Files" msgstr "Todos los archivos Inkscape" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:785 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:798 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:284 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:799 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:815 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:829 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:273 msgid "All Images" msgstr "Todas las imágenes" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:788 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:801 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:285 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:802 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:818 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:832 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:274 msgid "All Vectors" msgstr "Todos los vectores" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:791 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:804 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:286 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:805 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:821 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:835 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:275 msgid "All Bitmaps" msgstr "Todos los mapas de bits" #. ###### File options #. ###### Do we want the .xxx extension automatically added? -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:997 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1550 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1054 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1612 msgid "Append filename extension automatically" msgstr "Añadir extensión de archivo automáticamente" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1165 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1418 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1227 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1480 msgid "Guess from extension" msgstr "Adivinar por la extensión" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1437 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1499 msgid "Left edge of source" msgstr "Borde izquierdo del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1438 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1500 msgid "Top edge of source" msgstr "Borde superior del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1439 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1501 msgid "Right edge of source" msgstr "Borde derecho del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1440 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1502 msgid "Bottom edge of source" msgstr "Borde inferior del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1441 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1503 msgid "Source width" msgstr "Anchura del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1442 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1504 msgid "Source height" msgstr "Altura del origen" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1443 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1505 msgid "Destination width" msgstr "Anchura del destino" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1444 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1506 msgid "Destination height" msgstr "Altura del destino" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1445 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1507 msgid "Resolution (dots per inch)" msgstr "Resolución (ppp)" @@ -15818,61 +16007,61 @@ msgstr "Resolución (ppp)" #. ## EXTRA WIDGET -- SOURCE SIDE #. ######################################### #. ##### Export options buttons/spinners, etc -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1483 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1545 #: ../share/extensions/docinfo.inx.h:4 ../share/extensions/dpi90to96.inx.h:2 #: ../share/extensions/dpi96to90.inx.h:2 msgid "Document" msgstr "Documento" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1491 ../src/verbs.cpp:169 -#: ../src/widgets/desktop-widget.cpp:1937 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1553 ../src/verbs.cpp:175 +#: ../src/widgets/desktop-widget.cpp:2098 #: ../share/extensions/printing_marks.inx.h:18 msgid "Selection" msgstr "Selección" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1495 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1557 msgctxt "Export dialog" msgid "Custom" msgstr "Personalizado" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1515 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1577 msgid "Source" msgstr "Fuente" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1535 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1597 msgid "Cairo" msgstr "Cairo" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1538 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1600 msgid "Antialias" msgstr "Antialias" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:414 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:403 msgid "All Executable Files" msgstr "Todos los archivos ejecutables" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:606 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:595 msgid "Show Preview" msgstr "Vista preliminar" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:744 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:733 msgid "No file selected" msgstr "No se ha seleccionado ningún archivo" -#: ../src/ui/dialog/fill-and-stroke.cpp:58 +#: ../src/ui/dialog/fill-and-stroke.cpp:62 msgid "_Fill" msgstr "_Relleno" -#: ../src/ui/dialog/fill-and-stroke.cpp:59 +#: ../src/ui/dialog/fill-and-stroke.cpp:63 msgid "Stroke _paint" msgstr "Color de _trazo" -#: ../src/ui/dialog/fill-and-stroke.cpp:60 +#: ../src/ui/dialog/fill-and-stroke.cpp:64 msgid "Stroke st_yle" msgstr "Est_ilo de trazo" #. TRANSLATORS: this dialog is accessible via menu Filters - Filter editor -#: ../src/ui/dialog/filter-effects-dialog.cpp:514 +#: ../src/ui/dialog/filter-effects-dialog.cpp:547 msgid "" "This matrix determines a linear transform on color space. Each line affects " "one of the color components. Each column determines how much of each color " @@ -15885,109 +16074,109 @@ msgstr "" "última columna no depende de colores de entrada, por lo que se puede usar " "para ajustar un valor de componente constante." -#: ../src/ui/dialog/filter-effects-dialog.cpp:517 +#: ../src/ui/dialog/filter-effects-dialog.cpp:550 #: ../share/extensions/grid_polar.inx.h:4 msgctxt "Label" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/filter-effects-dialog.cpp:624 +#: ../src/ui/dialog/filter-effects-dialog.cpp:657 msgid "Image File" msgstr "Archivo de Imagen" -#: ../src/ui/dialog/filter-effects-dialog.cpp:627 +#: ../src/ui/dialog/filter-effects-dialog.cpp:660 msgid "Selected SVG Element" msgstr "Elemento SVG seleccionado" #. TODO: any image, not just svg -#: ../src/ui/dialog/filter-effects-dialog.cpp:697 +#: ../src/ui/dialog/filter-effects-dialog.cpp:730 msgid "Select an image to be used as feImage input" msgstr "Seleccione una imagen para ser usada como entrada «felmage»" -#: ../src/ui/dialog/filter-effects-dialog.cpp:789 +#: ../src/ui/dialog/filter-effects-dialog.cpp:822 msgid "This SVG filter effect does not require any parameters." msgstr "Este efecto de filtro SVG no necesita ningún parámetro." -#: ../src/ui/dialog/filter-effects-dialog.cpp:795 +#: ../src/ui/dialog/filter-effects-dialog.cpp:828 msgid "This SVG filter effect is not yet implemented in Inkscape." msgstr "Este efecto de filtro SVG no ha sido implementado todavía en Inkscape." -#: ../src/ui/dialog/filter-effects-dialog.cpp:1020 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1042 msgid "Slope" msgstr "Pendiente" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1021 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1043 msgid "Intercept" msgstr "Interceptar" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1024 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1046 msgid "Amplitude" msgstr "Amplitud" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1025 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1047 msgid "Exponent" msgstr "Exponente" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1121 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1144 msgid "New transfer function type" msgstr "Nuevo tipo de función de transferencia" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1156 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1179 msgid "Light Source:" msgstr "Fuente de luz:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1196 msgid "Direction angle for the light source on the XY plane, in degrees" msgstr "Ángulo de la dirección de la fuente de luz en el plano XY, en grados" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1174 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1197 msgid "Direction angle for the light source on the YZ plane, in degrees" msgstr "Ángulo de la dirección de la fuente de luz en el plano YZ, en grados" #. default x: #. default y: #. default z: -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1200 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1203 msgid "Location:" msgstr "Localización:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1200 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1203 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1206 msgid "X coordinate" msgstr "Coordenada X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1200 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1203 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1206 msgid "Y coordinate" msgstr "Coordenada Y" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1200 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1203 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1206 msgid "Z coordinate" msgstr "Coordenada Z" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1206 msgid "Points At" msgstr "Apunta a" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1184 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1207 msgid "Specular Exponent" msgstr "Exponente especular" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1184 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1207 msgid "Exponent value controlling the focus for the light source" msgstr "Valor de exponente que controla el foco para la fuente de luz" #. TODO: here I have used 100 degrees as default value. But spec says that if not specified, no limiting cone is applied. So, there should be a way for the user to set a "no limiting cone" option. -#: ../src/ui/dialog/filter-effects-dialog.cpp:1186 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1209 msgid "Cone Angle" msgstr "Ángulo cónico" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1186 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1209 msgid "" "This is the angle between the spot light axis (i.e. the axis between the " "light source and the point to which it is pointing at) and the spot light " @@ -15997,71 +16186,71 @@ msgstr "" "de luz y el punto al que apunta) y el cono de luz. No se proyecta luza fuera " "de este núcleo." -#: ../src/ui/dialog/filter-effects-dialog.cpp:1252 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1275 msgid "New light source" msgstr "Nueva fuente de luz" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1303 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1326 msgid "_Duplicate" msgstr "_Duplicar" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1337 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1360 msgid "_Filter" msgstr "_Filtrar" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1365 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1388 msgid "R_ename" msgstr "R_enombrar" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1499 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1522 msgid "Rename filter" msgstr "Renombrar filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1551 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1574 msgid "Apply filter" msgstr "Aplicar filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1631 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1654 msgid "filter" msgstr "filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1638 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1661 msgid "Add filter" msgstr "Añadir filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1688 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1711 msgid "Duplicate filter" msgstr "Duplicar filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1760 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1810 msgid "_Effect" msgstr "_Efecto" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1770 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1820 msgid "Connections" msgstr "Conexiones" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1907 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1958 msgid "Remove filter primitive" msgstr "Eliminar primitiva de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2434 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2545 msgid "Remove merge node" msgstr "Eliminar nodo de fusión" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2556 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2665 msgid "Reorder filter primitive" msgstr "Reordenar primitiva de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2611 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2745 msgid "Add Effect:" msgstr "Añadir efecto" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2612 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2746 msgid "No effect selected" msgstr "No se ha seleccionado ningún efecto" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2613 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2747 msgid "No filter selected" msgstr "No se ha seleccionado ningún filtro" @@ -16069,45 +16258,45 @@ msgstr "No se ha seleccionado ningún filtro" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/ui/dialog/filter-effects-dialog.cpp:2675 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2814 msgid "Effect parameters" msgstr "Parámetros de efectos" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2815 msgid "Filter General Settings" msgstr "Ajustes generales de filtros" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2875 msgid "Coordinates:" msgstr "Coordenadas:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2875 msgid "X coordinate of the left corners of filter effects region" msgstr "" "Coordenada X de las esquinas izquierdas de la región de los efectos de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2875 msgid "Y coordinate of the upper corners of filter effects region" msgstr "" "Coordenada X de las esquinas superiores de la región de los efectos de filtro" #. default width: #. default height: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2876 msgid "Dimensions:" msgstr "Dimensiones:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2876 msgid "Width of filter effects region" msgstr "Ancho de la región de efectos de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2876 msgid "Height of filter effects region" msgstr "Altura de la región de efectos de filtrro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2743 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2882 msgid "" "Indicates the type of matrix operation. The keyword 'matrix' indicates that " "a full 5x4 matrix of values will be provided. The other keywords represent " @@ -16119,40 +16308,40 @@ msgstr "" "representan atajos convenientes para permitir el uso de operaciones de color " "frecuentes sin especificar la matriz completa." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2744 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2883 msgid "Value(s):" msgstr "Valor(es):" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2748 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2887 msgid "R:" msgstr "R:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2749 -#: ../src/ui/widget/color-icc-selector.cpp:167 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2888 +#: ../src/ui/widget/color-icc-selector.cpp:180 msgid "G:" msgstr "G:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2750 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2889 msgid "B:" msgstr "B:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2751 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2890 msgid "A:" msgstr "A:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2754 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2794 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2893 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2933 msgid "Operator:" msgstr "Operador:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2755 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2894 msgid "K1:" msgstr "K1:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2755 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2757 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2758 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2894 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2895 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2896 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2897 msgid "" "If the arithmetic operation is chosen, each result pixel is computed using " "the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel " @@ -16162,38 +16351,38 @@ msgstr "" "la fórmula «k1*i1*i2 + k2*i1 + k3*i2 + k4» donde «i1» e «i2» son los valores " "de pixel de las entradas primera y segunda respectivamente." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2895 msgid "K2:" msgstr "K2:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2757 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2896 msgid "K3:" msgstr "K3:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2758 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2897 msgid "K4:" msgstr "K4:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2900 msgid "Size:" msgstr "Tamaño:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2900 msgid "width of the convolve matrix" msgstr "anchura de la matriz de convolución" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2900 msgid "height of the convolve matrix" msgstr "altura de la matriz de convolución" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 -#: ../src/ui/dialog/object-attributes.cpp:45 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2901 +#: ../src/ui/dialog/object-attributes.cpp:48 msgid "Target:" msgstr "Objetivo:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2901 msgid "" "X coordinate of the target point in the convolve matrix. The convolution is " "applied to pixels around this point." @@ -16201,7 +16390,7 @@ msgstr "" "Coordenada X del punto objetivo en la matriz de convolución. Se aplica la " "convolución a los píxeles alrededor de este punto." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2901 msgid "" "Y coordinate of the target point in the convolve matrix. The convolution is " "applied to pixels around this point." @@ -16210,11 +16399,11 @@ msgstr "" "convolución a los píxeles alrededor de este punto." #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) -#: ../src/ui/dialog/filter-effects-dialog.cpp:2764 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2903 msgid "Kernel:" msgstr "Núcleo:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2764 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2903 msgid "" "This matrix describes the convolve operation that is applied to the input " "image in order to calculate the pixel colors at the output. Different " @@ -16231,11 +16420,11 @@ msgstr "" "valores constantes distintos de cero llevará a un efecto de desenfoque " "normal." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2905 msgid "Divisor:" msgstr "Divisor:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2905 msgid "" "After applying the kernelMatrix to the input image to yield a number, that " "number is divided by divisor to yield the final destination color value. A " @@ -16247,11 +16436,11 @@ msgstr "" "destino final. Un divisor que es la suma de todos los valores de la matriz " "tiende a tener un efecto igualador en la intensidad general del resultado." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2906 msgid "Bias:" msgstr "Tendencia:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2906 msgid "" "This value is added to each component. This is useful to define a constant " "value as the zero response of the filter." @@ -16259,11 +16448,11 @@ msgstr "" "Este valor se añade a cada componente. Es útil para definir un valor " "constante como la respuesta cero del filtro." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2768 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2907 msgid "Edge Mode:" msgstr "Modo de borde:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2768 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2907 msgid "" "Determines how to extend the input image as necessary with color values so " "that the matrix operations can be applied when the kernel is positioned at " @@ -16273,34 +16462,32 @@ msgstr "" "color de modo que las operaciones de matriz se puedan aplicar cuando el " "núcleo esté posicionado en o cerca de la imagen de entrada." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2806 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2908 msgid "Preserve Alpha" msgstr "Conservar alfa" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2806 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2908 msgid "If set, the alpha channel won't be altered by this filter primitive." msgstr "" "Si está marcado, el canal alfa no se alterará con esta primitiva de filtro." #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2911 msgid "Diffuse Color:" msgstr "Color difuso:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2911 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2944 msgid "Defines the color of the light source" msgstr "Define el color de la fuente de luz" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2912 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2945 msgid "Surface Scale:" msgstr "Escala de superficie:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2912 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2945 msgid "" "This value amplifies the heights of the bump map defined by the input alpha " "channel" @@ -16308,59 +16495,59 @@ msgstr "" "Este valor amplía las alturas del mapa de relieve definidas por el canal " "alfa de entrada" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2913 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2946 msgid "Constant:" msgstr "Constante:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2913 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2946 msgid "This constant affects the Phong lighting model." msgstr "Esta constante afeca al modelo lumínico Phong" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2775 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2815 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2914 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2948 msgid "Kernel Unit Length:" msgstr "Longitud de la unidad nuclear:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2918 msgid "This defines the intensity of the displacement effect." msgstr "Esto define la intensidad del efecto de desplazamieto" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2919 msgid "X displacement:" msgstr "Desplazamiento X:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2919 msgid "Color component that controls the displacement in the X direction" msgstr "Componente de color que controla el desplazamiento en la dirección X" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2781 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2920 msgid "Y displacement:" msgstr "Desplazamiento Y:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2781 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2920 msgid "Color component that controls the displacement in the Y direction" msgstr "Componente de color que controla el desplazamiento en la dirección Y" #. default: black -#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2923 msgid "Flood Color:" msgstr "Color de relleno:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2923 msgid "The whole filter region will be filled with this color." msgstr "Toda la región del filtro de rellenará con este color." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2788 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2927 msgid "Standard Deviation:" msgstr "Desviación estándar:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2788 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2927 msgid "The standard deviation for the blur operation." msgstr "La desviación estándar para la operación de desenfoque." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2794 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2933 msgid "" "Erode: performs \"thinning\" of input image.\n" "Dilate: performs \"fattenning\" of input image." @@ -16368,41 +16555,41 @@ msgstr "" "Erosión: realiza un «estrechamiento» de la imagen de entrada.\n" "Dilatación: realiza un «engorde» de la imagen de entrada." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2798 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2937 msgid "Source of Image:" msgstr "Origen de la imagen:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2807 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2940 msgid "Delta X:" msgstr "Delta X:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2807 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2940 msgid "This is how far the input image gets shifted to the right" msgstr "Esto es cuánto se desplaza la imagen de entrada hacia la derecha" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2808 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2941 msgid "Delta Y:" msgstr "Delta Y:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2808 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2941 msgid "This is how far the input image gets shifted downwards" msgstr "Esto es cuánto se desplaza la imagen de entrada hacia abajo" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2944 msgid "Specular Color:" msgstr "Color especular:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2814 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2947 #: ../share/extensions/interp.inx.h:2 msgid "Exponent:" msgstr "Exponente:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2814 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2947 msgid "Exponent for specular term, larger is more \"shiny\"." msgstr "Exponente para el término especular, más grande es más «brillante»." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2823 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2956 msgid "" "Indicates whether the filter primitive should perform a noise or turbulence " "function." @@ -16410,27 +16597,27 @@ msgstr "" "Indica si la primitiva de filtro debería realizar una función de ruido o " "turbulencia." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2824 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2957 msgid "Base Frequency:" msgstr "Frecuencia de base:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2825 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2958 msgid "Octaves:" msgstr "Octavas:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2826 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2959 msgid "Seed:" msgstr "Semilla:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2826 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2959 msgid "The starting number for the pseudo random number generator." msgstr "El número de inicio para el generador de números pseudo aleatorios." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2838 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2971 msgid "Add filter primitive" msgstr "Añadir primitiva de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2853 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2986 msgid "" "The feBlend filter primitive provides 4 image blending modes: screen, " "multiply, darken and lighten." @@ -16438,7 +16625,7 @@ msgstr "" "La primitiva de filtro feBlend proporciona 4 modos de mezcla: " "pantalla, multiplicar, oscurecer y aclarar." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2857 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2990 msgid "" "The feColorMatrix filter primitive applies a matrix transformation to " "color of each rendered pixel. This allows for effects like turning object to " @@ -16449,7 +16636,7 @@ msgstr "" "efectos como convertir un objeto a escala de grises, modificar la saturación " "de colores y cambiar el matiz de los colores." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2861 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2994 msgid "" "The feComponentTransfer filter primitive manipulates the input's " "color components (red, green, blue, and alpha) according to particular " @@ -16461,7 +16648,7 @@ msgstr "" "de transferencia concretas, permitiendo operaciones como ajuste de brillo y " "contraste, balance y umbral de color." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2865 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2998 msgid "" "The feComposite filter primitive composites two images using one of " "the Porter-Duff blending modes or the arithmetic mode described in SVG " @@ -16473,7 +16660,7 @@ msgstr "" "estándar SVG. Los modos de mezcla Porter-Duff son, en esencia, operaciones " "lógicas entre los valores de pixel correspondientes de las imágenes." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2869 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3002 msgid "" "The feConvolveMatrix lets you specify a Convolution to be applied on " "the image. Common effects created using convolution matrices are blur, " @@ -16488,7 +16675,7 @@ msgstr "" "mediante esta primitiva de filtro, la primitiva especial de desenfoque " "gaussiano es más rápida y ne depende de la resolución." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2873 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3006 msgid "" "The feDiffuseLighting and feSpecularLighting filter primitives create " "\"embossed\" shadings. The input's alpha channel is used to provide depth " @@ -16501,7 +16688,7 @@ msgstr "" "más alta son elevadas hacia el espectador y las áreas de opacidad más baja " "se alejan de él." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2877 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3010 msgid "" "The feDisplacementMap filter primitive displaces the pixels in the " "first input using the second input as a displacement map, that shows from " @@ -16513,7 +16700,7 @@ msgstr "" "que muestra la lejanía desde la que deberá venir el pixel. Los efectos de " "«Remolino» y «Encoger» son ejemplos clásicos de esto." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2881 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3014 msgid "" "The feFlood filter primitive fills the region with a given color and " "opacity. It is usually used as an input to other filters to apply color to " @@ -16523,16 +16710,16 @@ msgstr "" "opacidad dados. Normalmente se utiliza como entrada a otros filtros para " "aplicar color a un gráfico." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2885 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3018 msgid "" "The feGaussianBlur filter primitive uniformly blurs its input. It is " "commonly used together with feOffset to create a drop shadow effect." msgstr "" "La primitiva de filtro feGaussianBlur desenfoca su entrada " "uniformemente. Normalmente se utiliza junto con feOffset para crear un " -"efecto de sombra arrojada." +"efecto de sombra paralela." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2889 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3022 msgid "" "The feImage filter primitive fills the region with an external image " "or another part of the document." @@ -16540,7 +16727,7 @@ msgstr "" "La primitiva de filtro feImage rellena la región con una imagen " "externa o con otra parte del documento." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2893 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3026 msgid "" "The feMerge filter primitive composites several temporary images " "inside the filter primitive to a single image. It uses normal alpha " @@ -16552,7 +16739,7 @@ msgstr "" "alfa normal. Es el equivalente de usar varias primitivas feBlend en modo " "«normal» o varias primitivas feCompositve en modo «over»." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2897 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3030 msgid "" "The feMorphology filter primitive provides erode and dilate effects. " "For single-color objects erode makes the object thinner and dilate makes it " @@ -16562,7 +16749,7 @@ msgstr "" "dilatación. En objetos de un solo color la erosión «adelgaza» el objeto y la " "dilatación lo «engorda»." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2901 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3034 msgid "" "The feOffset filter primitive offsets the image by an user-defined " "amount. For example, this is useful for drop shadows, where the shadow is in " @@ -16573,7 +16760,7 @@ msgstr "" "en las que la sombra está en una posición ligeramente diferente que el " "objeto en sí." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2905 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3038 msgid "" "The feDiffuseLighting and feSpecularLighting filter primitives " "create \"embossed\" shadings. The input's alpha channel is used to provide " @@ -16586,7 +16773,7 @@ msgstr "" "más alta son elevadas hacia el espectador y las áreas de opacidad más baja " "se alejan de él." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2909 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3042 msgid "" "The feTile filter primitive tiles a region with an input graphic. The " "source tile is defined by the filter primitive subregion of the input." @@ -16595,7 +16782,7 @@ msgstr "" "entrada. La tesela de origen la define la subregion de la primitiva del " "filtro de entrada." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2913 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3046 msgid "" "The feTurbulence filter primitive renders Perlin noise. This kind of " "noise is useful in simulating several nature phenomena like clouds, fire and " @@ -16605,324 +16792,324 @@ msgstr "" "ruido es útil para simular algunos fenómenos naturales como nubes, fuego y " "humo además de para generar texturas complejas como mármol y granito." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2933 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3066 msgid "Duplicate filter primitive" msgstr "Duplicar primitiva de filtro" -#: ../src/ui/dialog/filter-effects-dialog.cpp:3013 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3119 msgid "Set filter primitive attribute" msgstr "Fijar atributo de la primitiva de filtro" -#: ../src/ui/dialog/find.cpp:65 +#: ../src/ui/dialog/find.cpp:72 msgid "F_ind:" msgstr "B_uscar:" -#: ../src/ui/dialog/find.cpp:65 +#: ../src/ui/dialog/find.cpp:72 msgid "Find objects by their content or properties (exact or partial match)" msgstr "" "Buscar objetos por su contenido o propiedades (coincidencia exacta o parcial)" -#: ../src/ui/dialog/find.cpp:66 +#: ../src/ui/dialog/find.cpp:73 msgid "R_eplace:" msgstr "R_eemplazar:" -#: ../src/ui/dialog/find.cpp:66 +#: ../src/ui/dialog/find.cpp:73 msgid "Replace match with this value" msgstr "Reemplazar la coincidencia por este valor" -#: ../src/ui/dialog/find.cpp:68 +#: ../src/ui/dialog/find.cpp:75 msgid "_All" msgstr "T_odo" -#: ../src/ui/dialog/find.cpp:68 +#: ../src/ui/dialog/find.cpp:75 msgid "Search in all layers" msgstr "Buscar en todas las capas" -#: ../src/ui/dialog/find.cpp:69 +#: ../src/ui/dialog/find.cpp:76 msgid "Current _layer" msgstr "Capa actua_l" -#: ../src/ui/dialog/find.cpp:69 +#: ../src/ui/dialog/find.cpp:76 msgid "Limit search to the current layer" msgstr "Limitar la búsqueda a la capa actual" -#: ../src/ui/dialog/find.cpp:70 +#: ../src/ui/dialog/find.cpp:77 msgid "Sele_ction" msgstr "Sele_cción" -#: ../src/ui/dialog/find.cpp:70 +#: ../src/ui/dialog/find.cpp:77 msgid "Limit search to the current selection" msgstr "Limitar la búsqueda a la selección actual" -#: ../src/ui/dialog/find.cpp:71 +#: ../src/ui/dialog/find.cpp:78 msgid "Search in text objects" msgstr "Buscar en objetos de texto" -#: ../src/ui/dialog/find.cpp:72 +#: ../src/ui/dialog/find.cpp:79 msgid "_Properties" msgstr "_Propiedades" -#: ../src/ui/dialog/find.cpp:72 +#: ../src/ui/dialog/find.cpp:79 msgid "Search in object properties, styles, attributes and IDs" msgstr "Buscar en propiedades, estilos, atributos e IDs de objetos" -#: ../src/ui/dialog/find.cpp:74 +#: ../src/ui/dialog/find.cpp:81 msgid "Search in" msgstr "Buscar en" -#: ../src/ui/dialog/find.cpp:75 +#: ../src/ui/dialog/find.cpp:82 msgid "Scope" msgstr "Ámbito" -#: ../src/ui/dialog/find.cpp:77 +#: ../src/ui/dialog/find.cpp:84 msgid "Case sensiti_ve" msgstr "Distinguir mayús./minús." -#: ../src/ui/dialog/find.cpp:77 +#: ../src/ui/dialog/find.cpp:84 msgid "Match upper/lower case" msgstr "Coincidir mayús./minús." -#: ../src/ui/dialog/find.cpp:78 +#: ../src/ui/dialog/find.cpp:85 msgid "E_xact match" msgstr "Coincidencia e_xacta" -#: ../src/ui/dialog/find.cpp:78 +#: ../src/ui/dialog/find.cpp:85 msgid "Match whole objects only" msgstr "Coincidencia con objetos enteros" -#: ../src/ui/dialog/find.cpp:79 +#: ../src/ui/dialog/find.cpp:86 msgid "Include _hidden" msgstr "Incluir _ocultas" -#: ../src/ui/dialog/find.cpp:79 +#: ../src/ui/dialog/find.cpp:86 msgid "Include hidden objects in search" msgstr "Incluir objetos ocultos en la búsqueda" -#: ../src/ui/dialog/find.cpp:80 +#: ../src/ui/dialog/find.cpp:87 msgid "Include loc_ked" msgstr "Incluir b_loqueados" -#: ../src/ui/dialog/find.cpp:80 +#: ../src/ui/dialog/find.cpp:87 msgid "Include locked objects in search" msgstr "Incluir objetos bloqueados en la búsqueda" -#: ../src/ui/dialog/find.cpp:82 +#: ../src/ui/dialog/find.cpp:89 msgid "General" msgstr "General" -#: ../src/ui/dialog/find.cpp:84 +#: ../src/ui/dialog/find.cpp:91 msgid "_ID" msgstr "_ID" -#: ../src/ui/dialog/find.cpp:84 +#: ../src/ui/dialog/find.cpp:91 msgid "Search id name" msgstr "Buscar en nombre de ID" -#: ../src/ui/dialog/find.cpp:85 +#: ../src/ui/dialog/find.cpp:92 msgid "Attribute _name" msgstr "_Nombre de atributo" -#: ../src/ui/dialog/find.cpp:85 +#: ../src/ui/dialog/find.cpp:92 msgid "Search attribute name" msgstr "Buscar nombre de atributo" -#: ../src/ui/dialog/find.cpp:86 +#: ../src/ui/dialog/find.cpp:93 msgid "Attri_bute value" msgstr "Valor del atri_buto" -#: ../src/ui/dialog/find.cpp:86 +#: ../src/ui/dialog/find.cpp:93 msgid "Search attribute value" msgstr "Buscar en valor del atributo" -#: ../src/ui/dialog/find.cpp:87 +#: ../src/ui/dialog/find.cpp:94 msgid "_Style" msgstr "E_stilo" -#: ../src/ui/dialog/find.cpp:87 +#: ../src/ui/dialog/find.cpp:94 msgid "Search style" msgstr "Buscar en estilo" -#: ../src/ui/dialog/find.cpp:88 +#: ../src/ui/dialog/find.cpp:95 msgid "F_ont" msgstr "Tip_ografía" -#: ../src/ui/dialog/find.cpp:88 +#: ../src/ui/dialog/find.cpp:95 msgid "Search fonts" msgstr "Buscar en tipografías" -#: ../src/ui/dialog/find.cpp:89 +#: ../src/ui/dialog/find.cpp:96 msgid "Properties" msgstr "Propiedades" -#: ../src/ui/dialog/find.cpp:91 +#: ../src/ui/dialog/find.cpp:98 msgid "All types" msgstr "Todos los tipos" -#: ../src/ui/dialog/find.cpp:91 +#: ../src/ui/dialog/find.cpp:98 msgid "Search all object types" msgstr "Buscar en todos los tipos de objeto" -#: ../src/ui/dialog/find.cpp:92 +#: ../src/ui/dialog/find.cpp:99 msgid "Rectangles" msgstr "Rectángulos" -#: ../src/ui/dialog/find.cpp:92 +#: ../src/ui/dialog/find.cpp:99 msgid "Search rectangles" msgstr "Buscar rectángulos" -#: ../src/ui/dialog/find.cpp:93 +#: ../src/ui/dialog/find.cpp:100 msgid "Ellipses" msgstr "Elipses" -#: ../src/ui/dialog/find.cpp:93 +#: ../src/ui/dialog/find.cpp:100 msgid "Search ellipses, arcs, circles" msgstr "Buscar en elipses, arcos, círculos" -#: ../src/ui/dialog/find.cpp:94 +#: ../src/ui/dialog/find.cpp:101 msgid "Stars" msgstr "Estrellas" -#: ../src/ui/dialog/find.cpp:94 +#: ../src/ui/dialog/find.cpp:101 msgid "Search stars and polygons" msgstr "Buscar estrellas y polígonos" -#: ../src/ui/dialog/find.cpp:95 +#: ../src/ui/dialog/find.cpp:102 msgid "Spirals" msgstr "Espirales" -#: ../src/ui/dialog/find.cpp:95 +#: ../src/ui/dialog/find.cpp:102 msgid "Search spirals" msgstr "Buscar espirales" -#: ../src/ui/dialog/find.cpp:96 ../src/widgets/toolbox.cpp:1775 +#: ../src/ui/dialog/find.cpp:103 ../src/widgets/toolbox.cpp:1812 msgid "Paths" msgstr "Trayectos" -#: ../src/ui/dialog/find.cpp:96 +#: ../src/ui/dialog/find.cpp:103 msgid "Search paths, lines, polylines" msgstr "Buscar en trayectos, líneas, polilíneas" -#: ../src/ui/dialog/find.cpp:97 +#: ../src/ui/dialog/find.cpp:104 msgid "Texts" msgstr "Textos" -#: ../src/ui/dialog/find.cpp:97 +#: ../src/ui/dialog/find.cpp:104 msgid "Search text objects" msgstr "Buscar objetos de texto" -#: ../src/ui/dialog/find.cpp:98 +#: ../src/ui/dialog/find.cpp:105 msgid "Groups" msgstr "Grupos" -#: ../src/ui/dialog/find.cpp:98 +#: ../src/ui/dialog/find.cpp:105 msgid "Search groups" msgstr "Buscar en grupos" #. TRANSLATORS: "Clones" is a noun indicating type of object to find -#: ../src/ui/dialog/find.cpp:101 +#: ../src/ui/dialog/find.cpp:108 msgctxt "Find dialog" msgid "Clones" msgstr "Clones" -#: ../src/ui/dialog/find.cpp:101 +#: ../src/ui/dialog/find.cpp:108 msgid "Search clones" msgstr "Buscar en clones" -#: ../src/ui/dialog/find.cpp:103 ../share/extensions/embedimage.inx.h:3 +#: ../src/ui/dialog/find.cpp:110 ../share/extensions/embedimage.inx.h:3 #: ../share/extensions/extractimage.inx.h:5 #: ../share/extensions/image_attributes.inx.h:29 msgid "Images" msgstr "Imágenes" -#: ../src/ui/dialog/find.cpp:103 +#: ../src/ui/dialog/find.cpp:110 msgid "Search images" msgstr "Buscar en imágenes" -#: ../src/ui/dialog/find.cpp:104 +#: ../src/ui/dialog/find.cpp:111 msgid "Offsets" msgstr "Desvíos" -#: ../src/ui/dialog/find.cpp:104 +#: ../src/ui/dialog/find.cpp:111 msgid "Search offset objects" msgstr "Buscar objetos desviados" -#: ../src/ui/dialog/find.cpp:105 +#: ../src/ui/dialog/find.cpp:112 msgid "Object types" msgstr "Tipos de objeto" -#: ../src/ui/dialog/find.cpp:108 +#: ../src/ui/dialog/find.cpp:115 msgid "_Find" msgstr "_Buscar" -#: ../src/ui/dialog/find.cpp:108 +#: ../src/ui/dialog/find.cpp:115 msgid "Select all objects matching the selection criteria" msgstr "" "Seleccionar todos los objetos que coincidan con todos los criterios de " "selección" -#: ../src/ui/dialog/find.cpp:109 +#: ../src/ui/dialog/find.cpp:116 msgid "_Replace All" msgstr "_Reemplazar todos" -#: ../src/ui/dialog/find.cpp:109 +#: ../src/ui/dialog/find.cpp:116 msgid "Replace all matches" msgstr "Reemplazar todas las coincidencias" -#: ../src/ui/dialog/find.cpp:794 +#: ../src/ui/dialog/find.cpp:801 msgid "Nothing to replace" msgstr "Nada para reemplazar" #. TRANSLATORS: "%s" is replaced with "exact" or "partial" when this string is displayed -#: ../src/ui/dialog/find.cpp:835 +#: ../src/ui/dialog/find.cpp:842 #, c-format msgid "%d object found (out of %d), %s match." msgid_plural "%d objects found (out of %d), %s match." msgstr[0] "%d objeto encontrado (de %d), coincidencia %s." msgstr[1] "%d objetos encontrados (de %d), coincidencia %s." -#: ../src/ui/dialog/find.cpp:838 +#: ../src/ui/dialog/find.cpp:845 msgid "exact" msgstr "exacta" -#: ../src/ui/dialog/find.cpp:838 +#: ../src/ui/dialog/find.cpp:845 msgid "partial" msgstr "parcial" #. TRANSLATORS: "%1" is replaced with the number of matches -#: ../src/ui/dialog/find.cpp:841 +#: ../src/ui/dialog/find.cpp:848 msgid "%1 match replaced" msgid_plural "%1 matches replaced" msgstr[0] "%1 coincidencia reemplazada" msgstr[1] "%1 coincidencias reemplazadas" #. TRANSLATORS: "%1" is replaced with the number of matches -#: ../src/ui/dialog/find.cpp:845 +#: ../src/ui/dialog/find.cpp:852 msgid "%1 object found" msgid_plural "%1 objects found" msgstr[0] "Se ha encontrado %1 objeto" msgstr[1] "Se han encontrado %1 objetos" -#: ../src/ui/dialog/find.cpp:859 +#: ../src/ui/dialog/find.cpp:866 msgid "Replace text or property" msgstr "Reemplazar texto o propiedad" -#: ../src/ui/dialog/find.cpp:863 +#: ../src/ui/dialog/find.cpp:870 msgid "Nothing found" msgstr "No se han encontrado coincidencias" -#: ../src/ui/dialog/find.cpp:868 +#: ../src/ui/dialog/find.cpp:875 msgid "No objects found" msgstr "No se han encontrado objetos" -#: ../src/ui/dialog/find.cpp:889 +#: ../src/ui/dialog/find.cpp:896 msgid "Select an object type" msgstr "Seleccione un tipo de objeto" -#: ../src/ui/dialog/find.cpp:907 +#: ../src/ui/dialog/find.cpp:914 msgid "Select a property" msgstr "Seleccione una propiedad" -#: ../src/ui/dialog/font-substitution.cpp:74 +#: ../src/ui/dialog/font-substitution.cpp:79 msgid "" "\n" "Some fonts are not available and have been substituted." @@ -16930,788 +17117,788 @@ msgstr "" "\n" "Algunas tipografías no están disponibles y han sido sustituidas." -#: ../src/ui/dialog/font-substitution.cpp:77 +#: ../src/ui/dialog/font-substitution.cpp:82 msgid "Font substitution" msgstr "Sustitución de tipografías" -#: ../src/ui/dialog/font-substitution.cpp:96 +#: ../src/ui/dialog/font-substitution.cpp:101 msgid "Select all the affected items" msgstr "Seleccionar todos los elementos afectados" -#: ../src/ui/dialog/font-substitution.cpp:101 +#: ../src/ui/dialog/font-substitution.cpp:106 msgid "Don't show this warning again" msgstr "No volver a mostrar este aviso" -#: ../src/ui/dialog/font-substitution.cpp:236 +#: ../src/ui/dialog/font-substitution.cpp:245 msgid "Font '%1' substituted with '%2'" msgstr "Tipografía «%1» sustituida por «%2»" -#: ../src/ui/dialog/glyphs.cpp:50 ../src/ui/dialog/glyphs.cpp:142 +#: ../src/ui/dialog/glyphs.cpp:60 ../src/ui/dialog/glyphs.cpp:152 msgid "all" msgstr "todos" -#: ../src/ui/dialog/glyphs.cpp:51 +#: ../src/ui/dialog/glyphs.cpp:61 msgid "common" msgstr "normal" -#: ../src/ui/dialog/glyphs.cpp:52 +#: ../src/ui/dialog/glyphs.cpp:62 msgid "inherited" msgstr "heredado" -#: ../src/ui/dialog/glyphs.cpp:53 ../src/ui/dialog/glyphs.cpp:155 +#: ../src/ui/dialog/glyphs.cpp:63 ../src/ui/dialog/glyphs.cpp:165 msgid "Arabic" msgstr "Árabe" -#: ../src/ui/dialog/glyphs.cpp:54 ../src/ui/dialog/glyphs.cpp:153 +#: ../src/ui/dialog/glyphs.cpp:64 ../src/ui/dialog/glyphs.cpp:163 msgid "Armenian" msgstr "Armenio" -#: ../src/ui/dialog/glyphs.cpp:55 ../src/ui/dialog/glyphs.cpp:162 +#: ../src/ui/dialog/glyphs.cpp:65 ../src/ui/dialog/glyphs.cpp:172 msgid "Bengali" msgstr "Bengalí" -#: ../src/ui/dialog/glyphs.cpp:56 ../src/ui/dialog/glyphs.cpp:244 +#: ../src/ui/dialog/glyphs.cpp:66 ../src/ui/dialog/glyphs.cpp:254 msgid "Bopomofo" msgstr "Bopomofo" -#: ../src/ui/dialog/glyphs.cpp:57 ../src/ui/dialog/glyphs.cpp:179 +#: ../src/ui/dialog/glyphs.cpp:67 ../src/ui/dialog/glyphs.cpp:189 msgid "Cherokee" msgstr "Cherokee" -#: ../src/ui/dialog/glyphs.cpp:58 ../src/ui/dialog/glyphs.cpp:232 +#: ../src/ui/dialog/glyphs.cpp:68 ../src/ui/dialog/glyphs.cpp:242 msgid "Coptic" msgstr "Copto" -#: ../src/ui/dialog/glyphs.cpp:59 ../src/ui/dialog/glyphs.cpp:151 +#: ../src/ui/dialog/glyphs.cpp:69 ../src/ui/dialog/glyphs.cpp:161 #: ../share/extensions/hershey.inx.h:22 msgid "Cyrillic" msgstr "Cirílico" -#: ../src/ui/dialog/glyphs.cpp:60 +#: ../src/ui/dialog/glyphs.cpp:70 msgid "Deseret" msgstr "Deseret" -#: ../src/ui/dialog/glyphs.cpp:61 ../src/ui/dialog/glyphs.cpp:161 +#: ../src/ui/dialog/glyphs.cpp:71 ../src/ui/dialog/glyphs.cpp:171 msgid "Devanagari" msgstr "Devanagari" -#: ../src/ui/dialog/glyphs.cpp:62 ../src/ui/dialog/glyphs.cpp:177 +#: ../src/ui/dialog/glyphs.cpp:72 ../src/ui/dialog/glyphs.cpp:187 msgid "Ethiopic" msgstr "Etíope" -#: ../src/ui/dialog/glyphs.cpp:63 ../src/ui/dialog/glyphs.cpp:175 +#: ../src/ui/dialog/glyphs.cpp:73 ../src/ui/dialog/glyphs.cpp:185 msgid "Georgian" msgstr "Georgiano" -#: ../src/ui/dialog/glyphs.cpp:64 +#: ../src/ui/dialog/glyphs.cpp:74 msgid "Gothic" msgstr "Gótico" -#: ../src/ui/dialog/glyphs.cpp:65 +#: ../src/ui/dialog/glyphs.cpp:75 msgid "Greek" msgstr "Griego" -#: ../src/ui/dialog/glyphs.cpp:66 ../src/ui/dialog/glyphs.cpp:164 +#: ../src/ui/dialog/glyphs.cpp:76 ../src/ui/dialog/glyphs.cpp:174 msgid "Gujarati" msgstr "Gujarati" -#: ../src/ui/dialog/glyphs.cpp:67 ../src/ui/dialog/glyphs.cpp:163 +#: ../src/ui/dialog/glyphs.cpp:77 ../src/ui/dialog/glyphs.cpp:173 msgid "Gurmukhi" msgstr "Gurmují" -#: ../src/ui/dialog/glyphs.cpp:68 +#: ../src/ui/dialog/glyphs.cpp:78 msgid "Han" msgstr "Han" -#: ../src/ui/dialog/glyphs.cpp:69 +#: ../src/ui/dialog/glyphs.cpp:79 msgid "Hangul" msgstr "Hangul" -#: ../src/ui/dialog/glyphs.cpp:70 ../src/ui/dialog/glyphs.cpp:154 +#: ../src/ui/dialog/glyphs.cpp:80 ../src/ui/dialog/glyphs.cpp:164 msgid "Hebrew" msgstr "Hebreo" -#: ../src/ui/dialog/glyphs.cpp:71 ../src/ui/dialog/glyphs.cpp:242 +#: ../src/ui/dialog/glyphs.cpp:81 ../src/ui/dialog/glyphs.cpp:252 msgid "Hiragana" msgstr "Hiragana" -#: ../src/ui/dialog/glyphs.cpp:72 ../src/ui/dialog/glyphs.cpp:168 +#: ../src/ui/dialog/glyphs.cpp:82 ../src/ui/dialog/glyphs.cpp:178 msgid "Kannada" msgstr "Kannada" -#: ../src/ui/dialog/glyphs.cpp:73 ../src/ui/dialog/glyphs.cpp:243 +#: ../src/ui/dialog/glyphs.cpp:83 ../src/ui/dialog/glyphs.cpp:253 msgid "Katakana" msgstr "Katakana" -#: ../src/ui/dialog/glyphs.cpp:74 ../src/ui/dialog/glyphs.cpp:187 +#: ../src/ui/dialog/glyphs.cpp:84 ../src/ui/dialog/glyphs.cpp:197 msgid "Khmer" msgstr "Jemer" -#: ../src/ui/dialog/glyphs.cpp:75 ../src/ui/dialog/glyphs.cpp:172 +#: ../src/ui/dialog/glyphs.cpp:85 ../src/ui/dialog/glyphs.cpp:182 msgid "Lao" msgstr "Lao" -#: ../src/ui/dialog/glyphs.cpp:76 +#: ../src/ui/dialog/glyphs.cpp:86 msgid "Latin" msgstr "Latino" -#: ../src/ui/dialog/glyphs.cpp:77 ../src/ui/dialog/glyphs.cpp:169 +#: ../src/ui/dialog/glyphs.cpp:87 ../src/ui/dialog/glyphs.cpp:179 msgid "Malayalam" msgstr "Malayalam" -#: ../src/ui/dialog/glyphs.cpp:78 ../src/ui/dialog/glyphs.cpp:188 +#: ../src/ui/dialog/glyphs.cpp:88 ../src/ui/dialog/glyphs.cpp:198 msgid "Mongolian" msgstr "Mongol" -#: ../src/ui/dialog/glyphs.cpp:79 ../src/ui/dialog/glyphs.cpp:174 +#: ../src/ui/dialog/glyphs.cpp:89 ../src/ui/dialog/glyphs.cpp:184 msgid "Myanmar" msgstr "Myanmar" -#: ../src/ui/dialog/glyphs.cpp:80 ../src/ui/dialog/glyphs.cpp:181 +#: ../src/ui/dialog/glyphs.cpp:90 ../src/ui/dialog/glyphs.cpp:191 msgid "Ogham" msgstr "Ogham" -#: ../src/ui/dialog/glyphs.cpp:81 +#: ../src/ui/dialog/glyphs.cpp:91 msgid "Old Italic" msgstr "Itálica antigua" -#: ../src/ui/dialog/glyphs.cpp:82 ../src/ui/dialog/glyphs.cpp:165 +#: ../src/ui/dialog/glyphs.cpp:92 ../src/ui/dialog/glyphs.cpp:175 msgid "Oriya" msgstr "Oriya" -#: ../src/ui/dialog/glyphs.cpp:83 ../src/ui/dialog/glyphs.cpp:182 +#: ../src/ui/dialog/glyphs.cpp:93 ../src/ui/dialog/glyphs.cpp:192 msgid "Runic" msgstr "Rúnico" -#: ../src/ui/dialog/glyphs.cpp:84 ../src/ui/dialog/glyphs.cpp:170 +#: ../src/ui/dialog/glyphs.cpp:94 ../src/ui/dialog/glyphs.cpp:180 msgid "Sinhala" msgstr "Sinhala" -#: ../src/ui/dialog/glyphs.cpp:85 ../src/ui/dialog/glyphs.cpp:156 +#: ../src/ui/dialog/glyphs.cpp:95 ../src/ui/dialog/glyphs.cpp:166 msgid "Syriac" msgstr "Syriaco" -#: ../src/ui/dialog/glyphs.cpp:86 ../src/ui/dialog/glyphs.cpp:166 +#: ../src/ui/dialog/glyphs.cpp:96 ../src/ui/dialog/glyphs.cpp:176 msgid "Tamil" msgstr "Tamil" -#: ../src/ui/dialog/glyphs.cpp:87 ../src/ui/dialog/glyphs.cpp:167 +#: ../src/ui/dialog/glyphs.cpp:97 ../src/ui/dialog/glyphs.cpp:177 msgid "Telugu" msgstr "Telugu" -#: ../src/ui/dialog/glyphs.cpp:88 ../src/ui/dialog/glyphs.cpp:158 +#: ../src/ui/dialog/glyphs.cpp:98 ../src/ui/dialog/glyphs.cpp:168 msgid "Thaana" msgstr "Thaana" -#: ../src/ui/dialog/glyphs.cpp:89 ../src/ui/dialog/glyphs.cpp:171 +#: ../src/ui/dialog/glyphs.cpp:99 ../src/ui/dialog/glyphs.cpp:181 msgid "Thai" msgstr "Thai" -#: ../src/ui/dialog/glyphs.cpp:90 ../src/ui/dialog/glyphs.cpp:173 +#: ../src/ui/dialog/glyphs.cpp:100 ../src/ui/dialog/glyphs.cpp:183 msgid "Tibetan" msgstr "Tibetano" -#: ../src/ui/dialog/glyphs.cpp:91 +#: ../src/ui/dialog/glyphs.cpp:101 msgid "Canadian Aboriginal" msgstr "Aborigen canadiense" -#: ../src/ui/dialog/glyphs.cpp:92 +#: ../src/ui/dialog/glyphs.cpp:102 msgid "Yi" msgstr "Yi" -#: ../src/ui/dialog/glyphs.cpp:93 ../src/ui/dialog/glyphs.cpp:183 +#: ../src/ui/dialog/glyphs.cpp:103 ../src/ui/dialog/glyphs.cpp:193 msgid "Tagalog" msgstr "Tagalog" -#: ../src/ui/dialog/glyphs.cpp:94 ../src/ui/dialog/glyphs.cpp:184 +#: ../src/ui/dialog/glyphs.cpp:104 ../src/ui/dialog/glyphs.cpp:194 msgid "Hanunoo" msgstr "Hanunoo" -#: ../src/ui/dialog/glyphs.cpp:95 ../src/ui/dialog/glyphs.cpp:185 +#: ../src/ui/dialog/glyphs.cpp:105 ../src/ui/dialog/glyphs.cpp:195 msgid "Buhid" msgstr "Buhid" -#: ../src/ui/dialog/glyphs.cpp:96 ../src/ui/dialog/glyphs.cpp:186 +#: ../src/ui/dialog/glyphs.cpp:106 ../src/ui/dialog/glyphs.cpp:196 msgid "Tagbanwa" msgstr "Tagbanwa" -#: ../src/ui/dialog/glyphs.cpp:97 +#: ../src/ui/dialog/glyphs.cpp:107 msgid "Braille" msgstr "Braille" -#: ../src/ui/dialog/glyphs.cpp:98 +#: ../src/ui/dialog/glyphs.cpp:108 msgid "Cypriot" msgstr "Chipriota" -#: ../src/ui/dialog/glyphs.cpp:99 ../src/ui/dialog/glyphs.cpp:190 +#: ../src/ui/dialog/glyphs.cpp:109 ../src/ui/dialog/glyphs.cpp:200 msgid "Limbu" msgstr "Limbu" -#: ../src/ui/dialog/glyphs.cpp:100 +#: ../src/ui/dialog/glyphs.cpp:110 msgid "Osmanya" msgstr "Osmanya" -#: ../src/ui/dialog/glyphs.cpp:101 +#: ../src/ui/dialog/glyphs.cpp:111 msgid "Shavian" msgstr "Shavian" -#: ../src/ui/dialog/glyphs.cpp:102 +#: ../src/ui/dialog/glyphs.cpp:112 msgid "Linear B" msgstr "Lineal B" -#: ../src/ui/dialog/glyphs.cpp:103 ../src/ui/dialog/glyphs.cpp:191 +#: ../src/ui/dialog/glyphs.cpp:113 ../src/ui/dialog/glyphs.cpp:201 msgid "Tai Le" msgstr "Tai Le" -#: ../src/ui/dialog/glyphs.cpp:104 +#: ../src/ui/dialog/glyphs.cpp:114 msgid "Ugaritic" msgstr "Ugaritic" -#: ../src/ui/dialog/glyphs.cpp:105 ../src/ui/dialog/glyphs.cpp:192 +#: ../src/ui/dialog/glyphs.cpp:115 ../src/ui/dialog/glyphs.cpp:202 msgid "New Tai Lue" msgstr "Nuevo Tai Lue" -#: ../src/ui/dialog/glyphs.cpp:106 ../src/ui/dialog/glyphs.cpp:194 +#: ../src/ui/dialog/glyphs.cpp:116 ../src/ui/dialog/glyphs.cpp:204 msgid "Buginese" msgstr "Buginés" -#: ../src/ui/dialog/glyphs.cpp:107 ../src/ui/dialog/glyphs.cpp:230 +#: ../src/ui/dialog/glyphs.cpp:117 ../src/ui/dialog/glyphs.cpp:240 msgid "Glagolitic" msgstr "Glagolítico" -#: ../src/ui/dialog/glyphs.cpp:108 ../src/ui/dialog/glyphs.cpp:234 +#: ../src/ui/dialog/glyphs.cpp:118 ../src/ui/dialog/glyphs.cpp:244 msgid "Tifinagh" msgstr "Tifinagh" -#: ../src/ui/dialog/glyphs.cpp:109 ../src/ui/dialog/glyphs.cpp:263 +#: ../src/ui/dialog/glyphs.cpp:119 ../src/ui/dialog/glyphs.cpp:273 msgid "Syloti Nagri" msgstr "Syloti Nagri" -#: ../src/ui/dialog/glyphs.cpp:110 +#: ../src/ui/dialog/glyphs.cpp:120 msgid "Old Persian" msgstr "Persa antiguo" -#: ../src/ui/dialog/glyphs.cpp:111 +#: ../src/ui/dialog/glyphs.cpp:121 msgid "Kharoshthi" msgstr "Kharoshthi" -#: ../src/ui/dialog/glyphs.cpp:112 +#: ../src/ui/dialog/glyphs.cpp:122 msgid "unassigned" msgstr "sin asignar" -#: ../src/ui/dialog/glyphs.cpp:113 ../src/ui/dialog/glyphs.cpp:196 +#: ../src/ui/dialog/glyphs.cpp:123 ../src/ui/dialog/glyphs.cpp:206 msgid "Balinese" msgstr "Balinés" -#: ../src/ui/dialog/glyphs.cpp:114 +#: ../src/ui/dialog/glyphs.cpp:124 msgid "Cuneiform" msgstr "Cuneiforme" -#: ../src/ui/dialog/glyphs.cpp:115 +#: ../src/ui/dialog/glyphs.cpp:125 msgid "Phoenician" msgstr "Fenicio" -#: ../src/ui/dialog/glyphs.cpp:116 ../src/ui/dialog/glyphs.cpp:265 +#: ../src/ui/dialog/glyphs.cpp:126 ../src/ui/dialog/glyphs.cpp:275 msgid "Phags-pa" msgstr "Phags-pa" -#: ../src/ui/dialog/glyphs.cpp:117 +#: ../src/ui/dialog/glyphs.cpp:127 msgid "N'Ko" msgstr "N'Ko" -#: ../src/ui/dialog/glyphs.cpp:118 ../src/ui/dialog/glyphs.cpp:268 +#: ../src/ui/dialog/glyphs.cpp:128 ../src/ui/dialog/glyphs.cpp:278 msgid "Kayah Li" msgstr "Kayah Li" -#: ../src/ui/dialog/glyphs.cpp:119 ../src/ui/dialog/glyphs.cpp:198 +#: ../src/ui/dialog/glyphs.cpp:129 ../src/ui/dialog/glyphs.cpp:208 msgid "Lepcha" msgstr "Lepcha" -#: ../src/ui/dialog/glyphs.cpp:120 ../src/ui/dialog/glyphs.cpp:269 +#: ../src/ui/dialog/glyphs.cpp:130 ../src/ui/dialog/glyphs.cpp:279 msgid "Rejang" msgstr "Rejang" -#: ../src/ui/dialog/glyphs.cpp:121 ../src/ui/dialog/glyphs.cpp:197 +#: ../src/ui/dialog/glyphs.cpp:131 ../src/ui/dialog/glyphs.cpp:207 msgid "Sundanese" msgstr "Sundanés" -#: ../src/ui/dialog/glyphs.cpp:122 ../src/ui/dialog/glyphs.cpp:266 +#: ../src/ui/dialog/glyphs.cpp:132 ../src/ui/dialog/glyphs.cpp:276 msgid "Saurashtra" msgstr "Saurashtra" -#: ../src/ui/dialog/glyphs.cpp:123 ../src/ui/dialog/glyphs.cpp:272 +#: ../src/ui/dialog/glyphs.cpp:133 ../src/ui/dialog/glyphs.cpp:282 msgid "Cham" msgstr "Cham" -#: ../src/ui/dialog/glyphs.cpp:124 ../src/ui/dialog/glyphs.cpp:199 +#: ../src/ui/dialog/glyphs.cpp:134 ../src/ui/dialog/glyphs.cpp:209 msgid "Ol Chiki" msgstr "Ol Chiki" -#: ../src/ui/dialog/glyphs.cpp:125 ../src/ui/dialog/glyphs.cpp:258 +#: ../src/ui/dialog/glyphs.cpp:135 ../src/ui/dialog/glyphs.cpp:268 msgid "Vai" msgstr "Vai" -#: ../src/ui/dialog/glyphs.cpp:126 +#: ../src/ui/dialog/glyphs.cpp:136 msgid "Carian" msgstr "Carian" -#: ../src/ui/dialog/glyphs.cpp:127 +#: ../src/ui/dialog/glyphs.cpp:137 msgid "Lycian" msgstr "Lycian" -#: ../src/ui/dialog/glyphs.cpp:128 +#: ../src/ui/dialog/glyphs.cpp:138 msgid "Lydian" msgstr "Lydian" -#: ../src/ui/dialog/glyphs.cpp:143 +#: ../src/ui/dialog/glyphs.cpp:153 msgid "Basic Latin" msgstr "Latino básico" -#: ../src/ui/dialog/glyphs.cpp:144 +#: ../src/ui/dialog/glyphs.cpp:154 msgid "Latin-1 Supplement" msgstr "Suplemento de Latin-1" -#: ../src/ui/dialog/glyphs.cpp:145 +#: ../src/ui/dialog/glyphs.cpp:155 msgid "Latin Extended-A" msgstr "Latin Extended-A" -#: ../src/ui/dialog/glyphs.cpp:146 +#: ../src/ui/dialog/glyphs.cpp:156 msgid "Latin Extended-B" msgstr "Latin Extended-B" -#: ../src/ui/dialog/glyphs.cpp:147 +#: ../src/ui/dialog/glyphs.cpp:157 msgid "IPA Extensions" msgstr "Extensiones IPA" -#: ../src/ui/dialog/glyphs.cpp:148 +#: ../src/ui/dialog/glyphs.cpp:158 msgid "Spacing Modifier Letters" msgstr "Espaciar letras modificadoras" -#: ../src/ui/dialog/glyphs.cpp:149 +#: ../src/ui/dialog/glyphs.cpp:159 msgid "Combining Diacritical Marks" msgstr "Combinar marcas diacríticas" -#: ../src/ui/dialog/glyphs.cpp:150 +#: ../src/ui/dialog/glyphs.cpp:160 msgid "Greek and Coptic" msgstr "Griego y cóptico" -#: ../src/ui/dialog/glyphs.cpp:152 +#: ../src/ui/dialog/glyphs.cpp:162 msgid "Cyrillic Supplement" msgstr "Suplemento cirílico" -#: ../src/ui/dialog/glyphs.cpp:157 +#: ../src/ui/dialog/glyphs.cpp:167 msgid "Arabic Supplement" msgstr "Suplemento árabe" -#: ../src/ui/dialog/glyphs.cpp:159 +#: ../src/ui/dialog/glyphs.cpp:169 msgid "NKo" msgstr "NKo" -#: ../src/ui/dialog/glyphs.cpp:160 +#: ../src/ui/dialog/glyphs.cpp:170 msgid "Samaritan" msgstr "Samaritano" -#: ../src/ui/dialog/glyphs.cpp:176 +#: ../src/ui/dialog/glyphs.cpp:186 msgid "Hangul Jamo" msgstr "Hangul Jamo" -#: ../src/ui/dialog/glyphs.cpp:178 +#: ../src/ui/dialog/glyphs.cpp:188 msgid "Ethiopic Supplement" msgstr "Suplemento etíope" -#: ../src/ui/dialog/glyphs.cpp:180 +#: ../src/ui/dialog/glyphs.cpp:190 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Silábico unificado aborigen canadiense" -#: ../src/ui/dialog/glyphs.cpp:189 +#: ../src/ui/dialog/glyphs.cpp:199 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Silábico unificado aborigen canadiense extendido" -#: ../src/ui/dialog/glyphs.cpp:193 +#: ../src/ui/dialog/glyphs.cpp:203 msgid "Khmer Symbols" msgstr "Símbolos Jemeres" -#: ../src/ui/dialog/glyphs.cpp:195 +#: ../src/ui/dialog/glyphs.cpp:205 msgid "Tai Tham" msgstr "Tai Tham" -#: ../src/ui/dialog/glyphs.cpp:200 +#: ../src/ui/dialog/glyphs.cpp:210 msgid "Vedic Extensions" msgstr "Extensiones védicas" -#: ../src/ui/dialog/glyphs.cpp:201 +#: ../src/ui/dialog/glyphs.cpp:211 msgid "Phonetic Extensions" msgstr "Extensiones fonéticas" -#: ../src/ui/dialog/glyphs.cpp:202 +#: ../src/ui/dialog/glyphs.cpp:212 msgid "Phonetic Extensions Supplement" msgstr "Suplemento de extensiones fonéticas" -#: ../src/ui/dialog/glyphs.cpp:203 +#: ../src/ui/dialog/glyphs.cpp:213 msgid "Combining Diacritical Marks Supplement" msgstr "Suplemento de combinación de marcas diacríticas" -#: ../src/ui/dialog/glyphs.cpp:204 +#: ../src/ui/dialog/glyphs.cpp:214 msgid "Latin Extended Additional" msgstr "Latino extendido adicional" -#: ../src/ui/dialog/glyphs.cpp:205 +#: ../src/ui/dialog/glyphs.cpp:215 msgid "Greek Extended" msgstr "Griego extendido" -#: ../src/ui/dialog/glyphs.cpp:206 +#: ../src/ui/dialog/glyphs.cpp:216 msgid "General Punctuation" msgstr "Puntuación general" -#: ../src/ui/dialog/glyphs.cpp:207 +#: ../src/ui/dialog/glyphs.cpp:217 msgid "Superscripts and Subscripts" msgstr "Superscripts y Subscripts" -#: ../src/ui/dialog/glyphs.cpp:208 +#: ../src/ui/dialog/glyphs.cpp:218 msgid "Currency Symbols" msgstr "Símbolos de monedas" -#: ../src/ui/dialog/glyphs.cpp:209 +#: ../src/ui/dialog/glyphs.cpp:219 msgid "Combining Diacritical Marks for Symbols" msgstr "Marcas diacríticas combinadas para símbolos" -#: ../src/ui/dialog/glyphs.cpp:210 +#: ../src/ui/dialog/glyphs.cpp:220 msgid "Letterlike Symbols" msgstr "Símbolos similares a letras" -#: ../src/ui/dialog/glyphs.cpp:211 +#: ../src/ui/dialog/glyphs.cpp:221 msgid "Number Forms" msgstr "Formas de números" -#: ../src/ui/dialog/glyphs.cpp:212 +#: ../src/ui/dialog/glyphs.cpp:222 msgid "Arrows" msgstr "Flechas" -#: ../src/ui/dialog/glyphs.cpp:213 +#: ../src/ui/dialog/glyphs.cpp:223 msgid "Mathematical Operators" msgstr "Operadores matemáticos" -#: ../src/ui/dialog/glyphs.cpp:214 +#: ../src/ui/dialog/glyphs.cpp:224 msgid "Miscellaneous Technical" msgstr "Varios técnicos" -#: ../src/ui/dialog/glyphs.cpp:215 +#: ../src/ui/dialog/glyphs.cpp:225 msgid "Control Pictures" msgstr "Imágenes de control" -#: ../src/ui/dialog/glyphs.cpp:216 +#: ../src/ui/dialog/glyphs.cpp:226 msgid "Optical Character Recognition" msgstr "Reconocimiento óptico de caracteres" -#: ../src/ui/dialog/glyphs.cpp:217 +#: ../src/ui/dialog/glyphs.cpp:227 msgid "Enclosed Alphanumerics" msgstr "Alfanuméricos incluidos" -#: ../src/ui/dialog/glyphs.cpp:218 +#: ../src/ui/dialog/glyphs.cpp:228 msgid "Box Drawing" msgstr "Dibujos de cajas" -#: ../src/ui/dialog/glyphs.cpp:219 +#: ../src/ui/dialog/glyphs.cpp:229 msgid "Block Elements" msgstr "Elementos de bloque" -#: ../src/ui/dialog/glyphs.cpp:220 +#: ../src/ui/dialog/glyphs.cpp:230 msgid "Geometric Shapes" msgstr "Figuras geométricas" -#: ../src/ui/dialog/glyphs.cpp:221 +#: ../src/ui/dialog/glyphs.cpp:231 msgid "Miscellaneous Symbols" msgstr "Símbolos varios" -#: ../src/ui/dialog/glyphs.cpp:222 +#: ../src/ui/dialog/glyphs.cpp:232 msgid "Dingbats" msgstr "Dingbats" -#: ../src/ui/dialog/glyphs.cpp:223 +#: ../src/ui/dialog/glyphs.cpp:233 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Símbolos matemáticos varios-A" -#: ../src/ui/dialog/glyphs.cpp:224 +#: ../src/ui/dialog/glyphs.cpp:234 msgid "Supplemental Arrows-A" msgstr "Flechas adicionales-A" -#: ../src/ui/dialog/glyphs.cpp:225 +#: ../src/ui/dialog/glyphs.cpp:235 msgid "Braille Patterns" msgstr "Patrones Braille" -#: ../src/ui/dialog/glyphs.cpp:226 +#: ../src/ui/dialog/glyphs.cpp:236 msgid "Supplemental Arrows-B" msgstr "Flechas adicionales-B" -#: ../src/ui/dialog/glyphs.cpp:227 +#: ../src/ui/dialog/glyphs.cpp:237 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Símbolos matemáticos varios-B" -#: ../src/ui/dialog/glyphs.cpp:228 +#: ../src/ui/dialog/glyphs.cpp:238 msgid "Supplemental Mathematical Operators" msgstr "Operadores matemáticos adicionales" -#: ../src/ui/dialog/glyphs.cpp:229 +#: ../src/ui/dialog/glyphs.cpp:239 msgid "Miscellaneous Symbols and Arrows" msgstr "Símbolos y flechas variados" -#: ../src/ui/dialog/glyphs.cpp:231 +#: ../src/ui/dialog/glyphs.cpp:241 msgid "Latin Extended-C" msgstr "Latino extendido-C" -#: ../src/ui/dialog/glyphs.cpp:233 +#: ../src/ui/dialog/glyphs.cpp:243 msgid "Georgian Supplement" msgstr "Suplemento georgiano" -#: ../src/ui/dialog/glyphs.cpp:235 +#: ../src/ui/dialog/glyphs.cpp:245 msgid "Ethiopic Extended" msgstr "Etíope extendido" -#: ../src/ui/dialog/glyphs.cpp:236 +#: ../src/ui/dialog/glyphs.cpp:246 msgid "Cyrillic Extended-A" msgstr "Cirílico extendido-A" -#: ../src/ui/dialog/glyphs.cpp:237 +#: ../src/ui/dialog/glyphs.cpp:247 msgid "Supplemental Punctuation" msgstr "Puntuación adicional" -#: ../src/ui/dialog/glyphs.cpp:238 +#: ../src/ui/dialog/glyphs.cpp:248 msgid "CJK Radicals Supplement" msgstr "Suplemento de radicales CJK" -#: ../src/ui/dialog/glyphs.cpp:239 +#: ../src/ui/dialog/glyphs.cpp:249 msgid "Kangxi Radicals" msgstr "Radicales Kangxi" -#: ../src/ui/dialog/glyphs.cpp:240 +#: ../src/ui/dialog/glyphs.cpp:250 msgid "Ideographic Description Characters" msgstr "Caracteres de descripción de ideogramas" -#: ../src/ui/dialog/glyphs.cpp:241 +#: ../src/ui/dialog/glyphs.cpp:251 msgid "CJK Symbols and Punctuation" msgstr "Símbolos y puntuación CJK" -#: ../src/ui/dialog/glyphs.cpp:245 +#: ../src/ui/dialog/glyphs.cpp:255 msgid "Hangul Compatibility Jamo" msgstr "Jamo de compatibilidad Hangul" -#: ../src/ui/dialog/glyphs.cpp:246 +#: ../src/ui/dialog/glyphs.cpp:256 msgid "Kanbun" msgstr "Kanbun" -#: ../src/ui/dialog/glyphs.cpp:247 +#: ../src/ui/dialog/glyphs.cpp:257 msgid "Bopomofo Extended" msgstr "Bopomofo Extendido" -#: ../src/ui/dialog/glyphs.cpp:248 +#: ../src/ui/dialog/glyphs.cpp:258 msgid "CJK Strokes" msgstr "Trazos CJK" -#: ../src/ui/dialog/glyphs.cpp:249 +#: ../src/ui/dialog/glyphs.cpp:259 msgid "Katakana Phonetic Extensions" msgstr "Extensiones fonéticas Katakana" -#: ../src/ui/dialog/glyphs.cpp:250 +#: ../src/ui/dialog/glyphs.cpp:260 msgid "Enclosed CJK Letters and Months" msgstr "Letras y meses incluidas CJK" -#: ../src/ui/dialog/glyphs.cpp:251 +#: ../src/ui/dialog/glyphs.cpp:261 msgid "CJK Compatibility" msgstr "Compatibilidad CJK" -#: ../src/ui/dialog/glyphs.cpp:252 +#: ../src/ui/dialog/glyphs.cpp:262 msgid "CJK Unified Ideographs Extension A" msgstr "Extensión A de ideogramas unificados CJK" -#: ../src/ui/dialog/glyphs.cpp:253 +#: ../src/ui/dialog/glyphs.cpp:263 msgid "Yijing Hexagram Symbols" msgstr "Símbolos hexagramas Yijing" -#: ../src/ui/dialog/glyphs.cpp:254 +#: ../src/ui/dialog/glyphs.cpp:264 msgid "CJK Unified Ideographs" msgstr "Ideogramas unificados CJK" -#: ../src/ui/dialog/glyphs.cpp:255 +#: ../src/ui/dialog/glyphs.cpp:265 msgid "Yi Syllables" msgstr "Sílabas Yi" -#: ../src/ui/dialog/glyphs.cpp:256 +#: ../src/ui/dialog/glyphs.cpp:266 msgid "Yi Radicals" msgstr "Radicales Yi" -#: ../src/ui/dialog/glyphs.cpp:257 +#: ../src/ui/dialog/glyphs.cpp:267 msgid "Lisu" msgstr "Lisu" -#: ../src/ui/dialog/glyphs.cpp:259 +#: ../src/ui/dialog/glyphs.cpp:269 msgid "Cyrillic Extended-B" msgstr "Cirílico extendido-B" -#: ../src/ui/dialog/glyphs.cpp:260 +#: ../src/ui/dialog/glyphs.cpp:270 msgid "Bamum" msgstr "Bamum" -#: ../src/ui/dialog/glyphs.cpp:261 +#: ../src/ui/dialog/glyphs.cpp:271 msgid "Modifier Tone Letters" msgstr "Letras de modificación de tono" -#: ../src/ui/dialog/glyphs.cpp:262 +#: ../src/ui/dialog/glyphs.cpp:272 msgid "Latin Extended-D" msgstr "Latino extendido D" -#: ../src/ui/dialog/glyphs.cpp:264 +#: ../src/ui/dialog/glyphs.cpp:274 msgid "Common Indic Number Forms" msgstr "Formas numéricas indias comunes" -#: ../src/ui/dialog/glyphs.cpp:267 +#: ../src/ui/dialog/glyphs.cpp:277 msgid "Devanagari Extended" msgstr "Devanagari extendido" -#: ../src/ui/dialog/glyphs.cpp:270 +#: ../src/ui/dialog/glyphs.cpp:280 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo extendido-A" -#: ../src/ui/dialog/glyphs.cpp:271 +#: ../src/ui/dialog/glyphs.cpp:281 msgid "Javanese" msgstr "Javanés" -#: ../src/ui/dialog/glyphs.cpp:273 +#: ../src/ui/dialog/glyphs.cpp:283 msgid "Myanmar Extended-A" msgstr "Myanmar extendido-A" -#: ../src/ui/dialog/glyphs.cpp:274 +#: ../src/ui/dialog/glyphs.cpp:284 msgid "Tai Viet" msgstr "Tai Viet" -#: ../src/ui/dialog/glyphs.cpp:275 +#: ../src/ui/dialog/glyphs.cpp:285 msgid "Meetei Mayek" msgstr "Meitei-mayek" -#: ../src/ui/dialog/glyphs.cpp:276 +#: ../src/ui/dialog/glyphs.cpp:286 msgid "Hangul Syllables" msgstr "Sílabas Hangul" -#: ../src/ui/dialog/glyphs.cpp:277 +#: ../src/ui/dialog/glyphs.cpp:287 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo extendido-B" -#: ../src/ui/dialog/glyphs.cpp:278 +#: ../src/ui/dialog/glyphs.cpp:288 msgid "High Surrogates" msgstr "Sustitutos altos" -#: ../src/ui/dialog/glyphs.cpp:279 +#: ../src/ui/dialog/glyphs.cpp:289 msgid "High Private Use Surrogates" msgstr "Sustitutos altos de uso privado" -#: ../src/ui/dialog/glyphs.cpp:280 +#: ../src/ui/dialog/glyphs.cpp:290 msgid "Low Surrogates" msgstr "Sustitutos bajos" -#: ../src/ui/dialog/glyphs.cpp:281 +#: ../src/ui/dialog/glyphs.cpp:291 msgid "Private Use Area" msgstr "Área de uso privado" -#: ../src/ui/dialog/glyphs.cpp:282 +#: ../src/ui/dialog/glyphs.cpp:292 msgid "CJK Compatibility Ideographs" msgstr "Ideogramas de compatibilidad CJK" -#: ../src/ui/dialog/glyphs.cpp:283 +#: ../src/ui/dialog/glyphs.cpp:293 msgid "Alphabetic Presentation Forms" msgstr "Formas de presentación alfabética" -#: ../src/ui/dialog/glyphs.cpp:284 +#: ../src/ui/dialog/glyphs.cpp:294 msgid "Arabic Presentation Forms-A" msgstr "Forma de presentación árabe-A" -#: ../src/ui/dialog/glyphs.cpp:285 +#: ../src/ui/dialog/glyphs.cpp:295 msgid "Variation Selectors" msgstr "Selectores de variación" -#: ../src/ui/dialog/glyphs.cpp:286 +#: ../src/ui/dialog/glyphs.cpp:296 msgid "Vertical Forms" msgstr "Formas verticales" -#: ../src/ui/dialog/glyphs.cpp:287 +#: ../src/ui/dialog/glyphs.cpp:297 msgid "Combining Half Marks" msgstr "Combinación de marcas medias" -#: ../src/ui/dialog/glyphs.cpp:288 +#: ../src/ui/dialog/glyphs.cpp:298 msgid "CJK Compatibility Forms" msgstr "Formas de compatibilidad CJK" -#: ../src/ui/dialog/glyphs.cpp:289 +#: ../src/ui/dialog/glyphs.cpp:299 msgid "Small Form Variants" msgstr "Variantes de forma pequeña" -#: ../src/ui/dialog/glyphs.cpp:290 +#: ../src/ui/dialog/glyphs.cpp:300 msgid "Arabic Presentation Forms-B" msgstr "Forma de presentación árabe-B" -#: ../src/ui/dialog/glyphs.cpp:291 +#: ../src/ui/dialog/glyphs.cpp:301 msgid "Halfwidth and Fullwidth Forms" msgstr "Formas de media anchura y de ancho total" -#: ../src/ui/dialog/glyphs.cpp:292 +#: ../src/ui/dialog/glyphs.cpp:302 msgid "Specials" msgstr "Especiales" -#: ../src/ui/dialog/glyphs.cpp:355 +#: ../src/ui/dialog/glyphs.cpp:377 msgid "Script: " msgstr "Escritura:" -#: ../src/ui/dialog/glyphs.cpp:380 +#: ../src/ui/dialog/glyphs.cpp:414 msgid "Range: " msgstr "Rango: " -#: ../src/ui/dialog/glyphs.cpp:442 +#: ../src/ui/dialog/glyphs.cpp:497 msgid "Append" msgstr "Agregar" -#: ../src/ui/dialog/glyphs.cpp:552 +#: ../src/ui/dialog/glyphs.cpp:619 msgid "Append text" msgstr "Agregar texto" -#: ../src/ui/dialog/grid-arrange-tab.cpp:342 +#: ../src/ui/dialog/grid-arrange-tab.cpp:345 msgid "Arrange in a grid" msgstr "Ordenar en una rejilla" -#: ../src/ui/dialog/grid-arrange-tab.cpp:570 -#: ../src/ui/dialog/object-attributes.cpp:63 -#: ../src/ui/dialog/object-attributes.cpp:72 -#: ../src/ui/widget/page-sizer.cpp:230 ../src/widgets/desktop-widget.cpp:609 -#: ../src/widgets/node-toolbar.cpp:579 +#: ../src/ui/dialog/grid-arrange-tab.cpp:571 +#: ../src/ui/dialog/object-attributes.cpp:66 +#: ../src/ui/dialog/object-attributes.cpp:75 +#: ../src/ui/widget/page-sizer.cpp:247 ../src/widgets/desktop-widget.cpp:744 +#: ../src/widgets/node-toolbar.cpp:581 msgid "X:" msgstr "X:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:570 +#: ../src/ui/dialog/grid-arrange-tab.cpp:571 msgid "Horizontal spacing between columns." msgstr "Espacio horizontal entre columnas." -#: ../src/ui/dialog/grid-arrange-tab.cpp:571 -#: ../src/ui/dialog/object-attributes.cpp:64 -#: ../src/ui/dialog/object-attributes.cpp:73 -#: ../src/ui/widget/page-sizer.cpp:231 ../src/widgets/desktop-widget.cpp:610 -#: ../src/widgets/node-toolbar.cpp:597 +#: ../src/ui/dialog/grid-arrange-tab.cpp:572 +#: ../src/ui/dialog/object-attributes.cpp:67 +#: ../src/ui/dialog/object-attributes.cpp:76 +#: ../src/ui/widget/page-sizer.cpp:248 ../src/widgets/desktop-widget.cpp:745 +#: ../src/widgets/node-toolbar.cpp:599 msgid "Y:" msgstr "Y:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:571 +#: ../src/ui/dialog/grid-arrange-tab.cpp:572 msgid "Vertical spacing between rows." msgstr "Espaciado vertical entre líneas." -#: ../src/ui/dialog/grid-arrange-tab.cpp:613 +#: ../src/ui/dialog/grid-arrange-tab.cpp:618 msgid "_Rows:" msgstr "_Filas:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:622 +#: ../src/ui/dialog/grid-arrange-tab.cpp:627 msgid "Number of rows" msgstr "Número de filas" -#: ../src/ui/dialog/grid-arrange-tab.cpp:626 +#: ../src/ui/dialog/grid-arrange-tab.cpp:631 msgid "Equal _height" msgstr "_Altura igual" -#: ../src/ui/dialog/grid-arrange-tab.cpp:637 +#: ../src/ui/dialog/grid-arrange-tab.cpp:642 msgid "If not set, each row has the height of the tallest object in it" msgstr "Si no se indica, cada fila tendrá la altura del objeto más alto" @@ -17720,141 +17907,141 @@ msgstr "Si no se indica, cada fila tendrá la altura del objeto más alto" # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); #. #### Number of columns #### -#: ../src/ui/dialog/grid-arrange-tab.cpp:653 +#: ../src/ui/dialog/grid-arrange-tab.cpp:658 msgid "_Columns:" msgstr "_Columnas:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:662 +#: ../src/ui/dialog/grid-arrange-tab.cpp:667 msgid "Number of columns" msgstr "Número de columnas" -#: ../src/ui/dialog/grid-arrange-tab.cpp:666 +#: ../src/ui/dialog/grid-arrange-tab.cpp:671 msgid "Equal _width" msgstr "An_chura igual" -#: ../src/ui/dialog/grid-arrange-tab.cpp:676 +#: ../src/ui/dialog/grid-arrange-tab.cpp:681 msgid "If not set, each column has the width of the widest object in it" msgstr "Si no se indica, cada fila tendrá la anchura del objeto más ancho" #. Anchor selection widget -#: ../src/ui/dialog/grid-arrange-tab.cpp:687 +#: ../src/ui/dialog/grid-arrange-tab.cpp:692 msgid "Alignment:" msgstr "Alineación:" #. #### Radio buttons to control spacing manually or to fit selection bbox #### -#: ../src/ui/dialog/grid-arrange-tab.cpp:696 +#: ../src/ui/dialog/grid-arrange-tab.cpp:701 msgid "_Fit into selection box" msgstr "_Encajar en la caja de selección" -#: ../src/ui/dialog/grid-arrange-tab.cpp:703 +#: ../src/ui/dialog/grid-arrange-tab.cpp:708 msgid "_Set spacing:" msgstr "Fijar e_spaciado:" -#: ../src/ui/dialog/guides.cpp:43 +#: ../src/ui/dialog/guides.cpp:47 msgid "Lo_cked" msgstr "Blo_queado" -#: ../src/ui/dialog/guides.cpp:43 +#: ../src/ui/dialog/guides.cpp:47 msgid "Lock the movement of guides" msgstr "Bloquear el movimiento de las guías" -#: ../src/ui/dialog/guides.cpp:44 +#: ../src/ui/dialog/guides.cpp:48 msgid "Rela_tive change" msgstr "Cambio rela_tivo" -#: ../src/ui/dialog/guides.cpp:44 +#: ../src/ui/dialog/guides.cpp:48 msgid "Move and/or rotate the guide relative to current settings" msgstr "Mover o rotar la guía con relación a los ajustes actuales" -#: ../src/ui/dialog/guides.cpp:45 +#: ../src/ui/dialog/guides.cpp:49 msgctxt "Guides" msgid "_X:" msgstr "_X:" -#: ../src/ui/dialog/guides.cpp:46 +#: ../src/ui/dialog/guides.cpp:50 msgctxt "Guides" msgid "_Y:" msgstr "_Y:" -#: ../src/ui/dialog/guides.cpp:47 ../src/ui/dialog/object-properties.cpp:51 +#: ../src/ui/dialog/guides.cpp:51 ../src/ui/dialog/object-properties.cpp:59 msgid "_Label:" msgstr "_Etiqueta:" -#: ../src/ui/dialog/guides.cpp:47 +#: ../src/ui/dialog/guides.cpp:51 msgid "Optionally give this guideline a name" msgstr "Opcional: nombrar esta línea guía" -#: ../src/ui/dialog/guides.cpp:48 +#: ../src/ui/dialog/guides.cpp:52 msgid "_Angle:" msgstr "_Ángulo:" -#: ../src/ui/dialog/guides.cpp:130 +#: ../src/ui/dialog/guides.cpp:139 msgid "Set guide properties" msgstr "Ajustar propiedades de guías" -#: ../src/ui/dialog/guides.cpp:160 +#: ../src/ui/dialog/guides.cpp:169 msgid "Guideline" msgstr "Línea guía" # create dialog -#: ../src/ui/dialog/guides.cpp:284 +#: ../src/ui/dialog/guides.cpp:336 #, c-format msgid "Guideline ID: %s" msgstr "ID de línea guía: %s" -#: ../src/ui/dialog/guides.cpp:290 +#: ../src/ui/dialog/guides.cpp:342 #, c-format msgid "Current: %s" msgstr "Actual: %s" -#: ../src/ui/dialog/icon-preview.cpp:152 +#: ../src/ui/dialog/icon-preview.cpp:155 #, c-format msgid "%d x %d" msgstr "%d x %d" -#: ../src/ui/dialog/icon-preview.cpp:164 +#: ../src/ui/dialog/icon-preview.cpp:167 msgid "Magnified:" msgstr "Ampliado:" -#: ../src/ui/dialog/icon-preview.cpp:233 +#: ../src/ui/dialog/icon-preview.cpp:236 msgid "Actual Size:" msgstr "Tamaño real:" -#: ../src/ui/dialog/icon-preview.cpp:238 +#: ../src/ui/dialog/icon-preview.cpp:241 msgctxt "Icon preview window" msgid "Sele_ction" msgstr "Sele_cción" -#: ../src/ui/dialog/icon-preview.cpp:240 +#: ../src/ui/dialog/icon-preview.cpp:243 msgid "Selection only or whole document" msgstr "Solamente la selección o el documento entero" -#: ../src/ui/dialog/inkscape-preferences.cpp:171 +#: ../src/ui/dialog/inkscape-preferences.cpp:183 msgid "Show selection cue" msgstr "Mostrar marca de selección" -#: ../src/ui/dialog/inkscape-preferences.cpp:172 +#: ../src/ui/dialog/inkscape-preferences.cpp:184 msgid "" "Whether selected objects display a selection cue (the same as in selector)" msgstr "" "Indica si los objetos seleccionados muestran una marca de selección (igual " "que en el selector)" -#: ../src/ui/dialog/inkscape-preferences.cpp:178 +#: ../src/ui/dialog/inkscape-preferences.cpp:190 msgid "Enable gradient editing" msgstr "Activar edición de degradados" -#: ../src/ui/dialog/inkscape-preferences.cpp:179 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 msgid "Whether selected objects display gradient editing controls" msgstr "" "Indica si los objetos seleccionados muestran los controles de edición de " "degradados" -#: ../src/ui/dialog/inkscape-preferences.cpp:184 +#: ../src/ui/dialog/inkscape-preferences.cpp:196 msgid "Conversion to guides uses edges instead of bounding box" msgstr "Conversión a guías utiliza bordes en vez de cajas de contorno" -#: ../src/ui/dialog/inkscape-preferences.cpp:185 +#: ../src/ui/dialog/inkscape-preferences.cpp:197 msgid "" "Converting an object to guides places these along the object's true edges " "(imitating the object's shape), not along the bounding box" @@ -17862,37 +18049,37 @@ msgstr "" "Convertir un objeto a guías las coloca a lo largo de los bordes reales del " "objeto (imitando su forma) y no a lo largo de la caja de contorno." -#: ../src/ui/dialog/inkscape-preferences.cpp:192 +#: ../src/ui/dialog/inkscape-preferences.cpp:204 msgid "Ctrl+click _dot size:" msgstr "Tamaño _de punto de ctrl+clic:" -#: ../src/ui/dialog/inkscape-preferences.cpp:192 +#: ../src/ui/dialog/inkscape-preferences.cpp:204 msgid "times current stroke width" msgstr "veces el ancho de trazo actual" -#: ../src/ui/dialog/inkscape-preferences.cpp:193 +#: ../src/ui/dialog/inkscape-preferences.cpp:205 msgid "Size of dots created with Ctrl+click (relative to current stroke width)" msgstr "" "Tamaño de los puntos creados con Ctrl + clic (relativo a la anchura actual " "del trazo)" -#: ../src/ui/dialog/inkscape-preferences.cpp:201 +#: ../src/ui/dialog/inkscape-preferences.cpp:213 msgid "Base simplify:" msgstr "Simplificar base:" -#: ../src/ui/dialog/inkscape-preferences.cpp:201 +#: ../src/ui/dialog/inkscape-preferences.cpp:213 msgid "on dynamic LPE simplify" msgstr "en simplificación dinámica LPE" -#: ../src/ui/dialog/inkscape-preferences.cpp:202 +#: ../src/ui/dialog/inkscape-preferences.cpp:214 msgid "Base simplify of dynamic LPE based simplify" msgstr "Simplificación base de simplificación dinámica basada en LPE" -#: ../src/ui/dialog/inkscape-preferences.cpp:217 +#: ../src/ui/dialog/inkscape-preferences.cpp:229 msgid "No objects selected to take the style from." msgstr "No se han seleccionado objetos de los que tomar el estilo." -#: ../src/ui/dialog/inkscape-preferences.cpp:226 +#: ../src/ui/dialog/inkscape-preferences.cpp:238 msgid "" "More than one object selected. Cannot take style from multiple " "objects." @@ -17900,23 +18087,23 @@ msgstr "" "Ha seleccionado más de un objeto. No se puede tomar el estilo de " "varios objetos." -#: ../src/ui/dialog/inkscape-preferences.cpp:262 +#: ../src/ui/dialog/inkscape-preferences.cpp:274 msgid "Style of new objects" msgstr "Estilo de objetos nuevos" -#: ../src/ui/dialog/inkscape-preferences.cpp:264 +#: ../src/ui/dialog/inkscape-preferences.cpp:276 msgid "Last used style" msgstr "Último estilo utilizado" -#: ../src/ui/dialog/inkscape-preferences.cpp:266 +#: ../src/ui/dialog/inkscape-preferences.cpp:278 msgid "Apply the style you last set on an object" msgstr "Aplica el último estilo que ha utilizado en un objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:271 +#: ../src/ui/dialog/inkscape-preferences.cpp:283 msgid "This tool's own style:" msgstr "El estilo propio de esta herramienta:" -#: ../src/ui/dialog/inkscape-preferences.cpp:275 +#: ../src/ui/dialog/inkscape-preferences.cpp:287 msgid "" "Each tool may store its own style to apply to the newly created objects. Use " "the button below to set it." @@ -17925,66 +18112,66 @@ msgstr "" "objetos creados. Utilice el botón inferior para ajustarlo." #. style swatch -#: ../src/ui/dialog/inkscape-preferences.cpp:279 +#: ../src/ui/dialog/inkscape-preferences.cpp:291 msgid "Take from selection" msgstr "Tomar de la selección" -#: ../src/ui/dialog/inkscape-preferences.cpp:288 +#: ../src/ui/dialog/inkscape-preferences.cpp:300 msgid "This tool's style of new objects" msgstr "El estilo de esta herramienta para objetos nuevos" -#: ../src/ui/dialog/inkscape-preferences.cpp:295 +#: ../src/ui/dialog/inkscape-preferences.cpp:307 msgid "Remember the style of the (first) selected object as this tool's style" msgstr "" "Recordar el estilo del (primer) objeto seleccionado como el estilo de esta " "herramienta" -#: ../src/ui/dialog/inkscape-preferences.cpp:300 +#: ../src/ui/dialog/inkscape-preferences.cpp:312 msgid "Tools" msgstr "Herramientas" -#: ../src/ui/dialog/inkscape-preferences.cpp:303 +#: ../src/ui/dialog/inkscape-preferences.cpp:315 msgid "Bounding box to use" msgstr "Caja de contorno que se usará" -#: ../src/ui/dialog/inkscape-preferences.cpp:304 +#: ../src/ui/dialog/inkscape-preferences.cpp:316 msgid "Visual bounding box" msgstr "Caja de contorno visual" -#: ../src/ui/dialog/inkscape-preferences.cpp:306 +#: ../src/ui/dialog/inkscape-preferences.cpp:318 msgid "This bounding box includes stroke width, markers, filter margins, etc." msgstr "" "Esta caja de contorno incluye anchura de trazo, marcadores, márgenes de " "filtro, etc." -#: ../src/ui/dialog/inkscape-preferences.cpp:307 +#: ../src/ui/dialog/inkscape-preferences.cpp:319 msgid "Geometric bounding box" msgstr "Caja del contorno geométrica" -#: ../src/ui/dialog/inkscape-preferences.cpp:309 +#: ../src/ui/dialog/inkscape-preferences.cpp:321 msgid "This bounding box includes only the bare path" msgstr "Esta caja de contorno solamente incluye el trazado" -#: ../src/ui/dialog/inkscape-preferences.cpp:311 +#: ../src/ui/dialog/inkscape-preferences.cpp:323 msgid "Conversion to guides" msgstr "Conversión a guías" -#: ../src/ui/dialog/inkscape-preferences.cpp:312 +#: ../src/ui/dialog/inkscape-preferences.cpp:324 msgid "Keep objects after conversion to guides" msgstr "Mantener los objetos después de la conversión a guías" -#: ../src/ui/dialog/inkscape-preferences.cpp:314 +#: ../src/ui/dialog/inkscape-preferences.cpp:326 msgid "" "When converting an object to guides, don't delete the object after the " "conversion" msgstr "" "Al convertir un objeto a guías, no borrar el objeto después de la conversión." -#: ../src/ui/dialog/inkscape-preferences.cpp:315 +#: ../src/ui/dialog/inkscape-preferences.cpp:327 msgid "Treat groups as a single object" msgstr "Tratar grupos como un solo objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:317 +#: ../src/ui/dialog/inkscape-preferences.cpp:329 msgid "" "Treat groups as a single object during conversion to guides rather than " "converting each child separately" @@ -17992,109 +18179,109 @@ msgstr "" "Tratar a los grupos como un solo objeto durante la conversión a guías más " "que convertir a cada hijo por separado." -#: ../src/ui/dialog/inkscape-preferences.cpp:319 +#: ../src/ui/dialog/inkscape-preferences.cpp:331 msgid "Average all sketches" msgstr "Igualar todos los bocetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:320 +#: ../src/ui/dialog/inkscape-preferences.cpp:332 msgid "Width is in absolute units" msgstr "El ancho está en unidades absolutas" -#: ../src/ui/dialog/inkscape-preferences.cpp:321 +#: ../src/ui/dialog/inkscape-preferences.cpp:333 msgid "Select new path" msgstr "Seleccionar siguiente trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:322 +#: ../src/ui/dialog/inkscape-preferences.cpp:334 msgid "Don't attach connectors to text objects" msgstr "No fijar conectores a objetos de texto" #. Selector -#: ../src/ui/dialog/inkscape-preferences.cpp:325 +#: ../src/ui/dialog/inkscape-preferences.cpp:337 msgid "Selector" msgstr "Selector" -#: ../src/ui/dialog/inkscape-preferences.cpp:330 +#: ../src/ui/dialog/inkscape-preferences.cpp:342 msgid "When transforming, show" msgstr "Al transformar mostrar" -#: ../src/ui/dialog/inkscape-preferences.cpp:331 +#: ../src/ui/dialog/inkscape-preferences.cpp:343 msgid "Objects" msgstr "Objetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:333 +#: ../src/ui/dialog/inkscape-preferences.cpp:345 msgid "Show the actual objects when moving or transforming" msgstr "Mostrar los objetos al mover o transformar" -#: ../src/ui/dialog/inkscape-preferences.cpp:334 +#: ../src/ui/dialog/inkscape-preferences.cpp:346 msgid "Box outline" msgstr "Caja de contorno" -#: ../src/ui/dialog/inkscape-preferences.cpp:336 +#: ../src/ui/dialog/inkscape-preferences.cpp:348 msgid "Show only a box outline of the objects when moving or transforming" msgstr "" "Solamente mostrar una caja de contorno del objeto al mover o transformar" -#: ../src/ui/dialog/inkscape-preferences.cpp:337 +#: ../src/ui/dialog/inkscape-preferences.cpp:349 msgid "Per-object selection cue" msgstr "Marca de de selección por cada objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:338 +#: ../src/ui/dialog/inkscape-preferences.cpp:350 msgctxt "Selection cue" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/inkscape-preferences.cpp:340 +#: ../src/ui/dialog/inkscape-preferences.cpp:352 msgid "No per-object selection indication" msgstr "Sin indicación de selección por objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:341 +#: ../src/ui/dialog/inkscape-preferences.cpp:353 msgid "Mark" msgstr "Marca" -#: ../src/ui/dialog/inkscape-preferences.cpp:343 +#: ../src/ui/dialog/inkscape-preferences.cpp:355 msgid "Each selected object has a diamond mark in the top left corner" msgstr "" "Cada objeto seleccionado tiene una marca en forma de rombo en su esquina " "superior izquierda" -#: ../src/ui/dialog/inkscape-preferences.cpp:344 +#: ../src/ui/dialog/inkscape-preferences.cpp:356 msgid "Box" msgstr "Caja" -#: ../src/ui/dialog/inkscape-preferences.cpp:346 +#: ../src/ui/dialog/inkscape-preferences.cpp:358 msgid "Each selected object displays its bounding box" msgstr "Cada objeto seleccionado muestra su caja de contorno" #. Node -#: ../src/ui/dialog/inkscape-preferences.cpp:349 +#: ../src/ui/dialog/inkscape-preferences.cpp:361 msgid "Node" msgstr "Nodo" -#: ../src/ui/dialog/inkscape-preferences.cpp:352 +#: ../src/ui/dialog/inkscape-preferences.cpp:364 msgid "Path outline" msgstr "Contorno del trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:353 +#: ../src/ui/dialog/inkscape-preferences.cpp:365 msgid "Path outline color" msgstr "Color del contorno del trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:354 +#: ../src/ui/dialog/inkscape-preferences.cpp:366 msgid "Selects the color used for showing the path outline" msgstr "Selecciona el color utilizado para mostrar el contorno del trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:355 +#: ../src/ui/dialog/inkscape-preferences.cpp:367 msgid "Always show outline" msgstr "Siempre mostrar contorno" -#: ../src/ui/dialog/inkscape-preferences.cpp:356 +#: ../src/ui/dialog/inkscape-preferences.cpp:368 msgid "Show outlines for all paths, not only invisible paths" msgstr "Mostrar contornos de todos los trayectos, no solo los invisibles" -#: ../src/ui/dialog/inkscape-preferences.cpp:357 +#: ../src/ui/dialog/inkscape-preferences.cpp:369 msgid "Update outline when dragging nodes" msgstr "Actualizar contorno al arrastrar nodos" -#: ../src/ui/dialog/inkscape-preferences.cpp:358 +#: ../src/ui/dialog/inkscape-preferences.cpp:370 msgid "" "Update the outline when dragging or transforming nodes; if this is off, the " "outline will only update when completing a drag" @@ -18103,11 +18290,11 @@ msgstr "" "esta'desactivado, el contorno solamente se actualizará al terminar el " "arrastre" -#: ../src/ui/dialog/inkscape-preferences.cpp:359 +#: ../src/ui/dialog/inkscape-preferences.cpp:371 msgid "Update paths when dragging nodes" msgstr "Actualizar trayectos al arrastrar nodos" -#: ../src/ui/dialog/inkscape-preferences.cpp:360 +#: ../src/ui/dialog/inkscape-preferences.cpp:372 msgid "" "Update paths when dragging or transforming nodes; if this is off, paths will " "only be updated when completing a drag" @@ -18116,11 +18303,11 @@ msgstr "" "esta'desactivado, el trayecto solamente se actualizará al terminar el " "arrastre" -#: ../src/ui/dialog/inkscape-preferences.cpp:361 +#: ../src/ui/dialog/inkscape-preferences.cpp:373 msgid "Show path direction on outlines" msgstr "Mostrar dirección del trayecto en los contornos" -#: ../src/ui/dialog/inkscape-preferences.cpp:362 +#: ../src/ui/dialog/inkscape-preferences.cpp:374 msgid "" "Visualize the direction of selected paths by drawing small arrows in the " "middle of each outline segment" @@ -18128,29 +18315,29 @@ msgstr "" "Mostrar la dirección de los trayectos seleccionados mediante pequeñas " "flechas en el medio de cada segmento" -#: ../src/ui/dialog/inkscape-preferences.cpp:363 +#: ../src/ui/dialog/inkscape-preferences.cpp:375 msgid "Show temporary path outline" msgstr "Mostrar contorno del trayecto temporalmente" -#: ../src/ui/dialog/inkscape-preferences.cpp:364 +#: ../src/ui/dialog/inkscape-preferences.cpp:376 msgid "When hovering over a path, briefly flash its outline" msgstr "Parpadear brevemente el contorno al pasar por encima de un trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:365 +#: ../src/ui/dialog/inkscape-preferences.cpp:377 msgid "Show temporary outline for selected paths" msgstr "Mostrar contorno de trayectos seleccionados temporalmente" -#: ../src/ui/dialog/inkscape-preferences.cpp:366 +#: ../src/ui/dialog/inkscape-preferences.cpp:378 msgid "Show temporary outline even when a path is selected for editing" msgstr "" "Mostrar el contorno temporalmente aún cuando un trayecto está seleccionado " "para edición" -#: ../src/ui/dialog/inkscape-preferences.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:380 msgid "_Flash time:" msgstr "Tiempo de _parpadeo:" -#: ../src/ui/dialog/inkscape-preferences.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:380 msgid "" "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 " @@ -18160,25 +18347,25 @@ msgstr "" "de pasar el ratón (en milisegundos). Escriba 0 para que se muestre el " "contorno hasta que el ratón abandone el trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:369 +#: ../src/ui/dialog/inkscape-preferences.cpp:381 msgid "Editing preferences" msgstr "Preferencias de edición" -#: ../src/ui/dialog/inkscape-preferences.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:382 msgid "Show transform handles for single nodes" msgstr "Mostrar tiradores de transformación de nodos simples" -#: ../src/ui/dialog/inkscape-preferences.cpp:371 +#: ../src/ui/dialog/inkscape-preferences.cpp:383 msgid "Show transform handles even when only a single node is selected" msgstr "" "Mostrar los tiradores de transformación aún cuando se ha seleccionado un " "solo nodos" -#: ../src/ui/dialog/inkscape-preferences.cpp:372 +#: ../src/ui/dialog/inkscape-preferences.cpp:384 msgid "Deleting nodes preserves shape" msgstr "Borrar nodos conserva la forma" -#: ../src/ui/dialog/inkscape-preferences.cpp:373 +#: ../src/ui/dialog/inkscape-preferences.cpp:385 msgid "" "Move handles next to deleted nodes to resemble original shape; hold Ctrl to " "get the other behavior" @@ -18187,31 +18374,31 @@ msgstr "" "parezca a la original; pulse Ctrl para obtener el otro comportamiento" #. Tweak -#: ../src/ui/dialog/inkscape-preferences.cpp:376 +#: ../src/ui/dialog/inkscape-preferences.cpp:388 msgid "Tweak" msgstr "Retoques" -#: ../src/ui/dialog/inkscape-preferences.cpp:377 +#: ../src/ui/dialog/inkscape-preferences.cpp:389 msgid "Object paint style" msgstr "Estilo de relleno de objetos" #. Zoom -#: ../src/ui/dialog/inkscape-preferences.cpp:382 -#: ../src/widgets/desktop-widget.cpp:584 +#: ../src/ui/dialog/inkscape-preferences.cpp:394 +#: ../src/widgets/desktop-widget.cpp:709 msgid "Zoom" msgstr "Zoom" #. Measure -#: ../src/ui/dialog/inkscape-preferences.cpp:387 ../src/verbs.cpp:2815 +#: ../src/ui/dialog/inkscape-preferences.cpp:399 ../src/verbs.cpp:2777 msgctxt "ContextVerb" msgid "Measure" msgstr "Medir" -#: ../src/ui/dialog/inkscape-preferences.cpp:389 +#: ../src/ui/dialog/inkscape-preferences.cpp:401 msgid "Ignore first and last points" msgstr "Ignorar el primer y el último punto" -#: ../src/ui/dialog/inkscape-preferences.cpp:390 +#: ../src/ui/dialog/inkscape-preferences.cpp:402 msgid "" "The start and end of the measurement tool's control line will not be " "considered for calculating lengths. Only lengths between actual curve " @@ -18222,15 +18409,15 @@ msgstr "" "las longitudes entre intersecciones de curva." #. Shapes -#: ../src/ui/dialog/inkscape-preferences.cpp:393 +#: ../src/ui/dialog/inkscape-preferences.cpp:405 msgid "Shapes" msgstr "Formas" -#: ../src/ui/dialog/inkscape-preferences.cpp:426 +#: ../src/ui/dialog/inkscape-preferences.cpp:438 msgid "Sketch mode" msgstr "Modo boceto" -#: ../src/ui/dialog/inkscape-preferences.cpp:428 +#: ../src/ui/dialog/inkscape-preferences.cpp:440 msgid "" "If on, the sketch result will be the normal average of all sketches made, " "instead of averaging the old result with the new sketch" @@ -18239,17 +18426,17 @@ msgstr "" "bocetos en lugar de la media del antiguo resultado con el boceto nuevo." #. Pen -#: ../src/ui/dialog/inkscape-preferences.cpp:431 -#: ../src/ui/dialog/input.cpp:1351 +#: ../src/ui/dialog/inkscape-preferences.cpp:443 +#: ../src/ui/dialog/input.cpp:1485 msgid "Pen" msgstr "Pluma" #. Calligraphy -#: ../src/ui/dialog/inkscape-preferences.cpp:437 +#: ../src/ui/dialog/inkscape-preferences.cpp:449 msgid "Calligraphy" msgstr "Caligrafía" -#: ../src/ui/dialog/inkscape-preferences.cpp:441 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "" "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" @@ -18258,7 +18445,7 @@ msgstr "" "independientemente del zoom, si no la anchura de la pluma depende del zoom, " "de modo que se muestra igual a cualquier zoom." -#: ../src/ui/dialog/inkscape-preferences.cpp:443 +#: ../src/ui/dialog/inkscape-preferences.cpp:455 msgid "" "If on, each newly created object will be selected (deselecting previous " "selection)" @@ -18267,27 +18454,27 @@ msgstr "" "selección previa)" #. Text -#: ../src/ui/dialog/inkscape-preferences.cpp:446 ../src/verbs.cpp:2807 +#: ../src/ui/dialog/inkscape-preferences.cpp:458 ../src/verbs.cpp:2769 msgctxt "ContextVerb" msgid "Text" msgstr "Texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:463 msgid "Show font samples in the drop-down list" msgstr "Mostrar ejemplos de las tipografías en la lista de selección" -#: ../src/ui/dialog/inkscape-preferences.cpp:452 +#: ../src/ui/dialog/inkscape-preferences.cpp:464 msgid "" "Show font samples alongside font names in the drop-down list in Text bar" msgstr "" "Muestra ejemplos de las tipografías además de su nombre en la lista de " "selección en la barra de texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:454 +#: ../src/ui/dialog/inkscape-preferences.cpp:466 msgid "Show font substitution warning dialog" msgstr "Mostrar el diálogo de aviso de sustitución de tipografías" -#: ../src/ui/dialog/inkscape-preferences.cpp:455 +#: ../src/ui/dialog/inkscape-preferences.cpp:467 msgid "" "Show font substitution warning dialog when requested fonts are not available " "on the system" @@ -18295,76 +18482,76 @@ msgstr "" "Mostrar el diálogo de aviso de sustitución de tipografías cuando los tipos " "solicitados no están disponibles en el sistema" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Pixel" msgstr "Pixel" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Pica" msgstr "Pica" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Millimeter" msgstr "Milímetro" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Centimeter" msgstr "Centímetro" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Inch" msgstr "Pulgadas" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:470 msgid "Em square" msgstr "Em cuadrado" #. , _("Ex square"), _("Percent") #. , SP_CSS_UNIT_EX, SP_CSS_UNIT_PERCENT -#: ../src/ui/dialog/inkscape-preferences.cpp:461 +#: ../src/ui/dialog/inkscape-preferences.cpp:473 msgid "Text units" msgstr "Unidades de texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:463 +#: ../src/ui/dialog/inkscape-preferences.cpp:475 msgid "Text size unit type:" msgstr "Tipo de unidades de tamaño de texto:" -#: ../src/ui/dialog/inkscape-preferences.cpp:464 +#: ../src/ui/dialog/inkscape-preferences.cpp:476 msgid "Set the type of unit used in the text toolbar and text dialogs" msgstr "" "Fijar el tipo de unidad usado en la barra de herramienta y diálogos de texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:465 +#: ../src/ui/dialog/inkscape-preferences.cpp:477 msgid "Always output text size in pixels (px)" msgstr "Siempre exportar el tamaño de texto en píxeles (px)" #. Spray -#: ../src/ui/dialog/inkscape-preferences.cpp:471 +#: ../src/ui/dialog/inkscape-preferences.cpp:483 msgid "Spray" msgstr "Spray" #. Eraser -#: ../src/ui/dialog/inkscape-preferences.cpp:476 +#: ../src/ui/dialog/inkscape-preferences.cpp:488 msgid "Eraser" msgstr "Goma de borrar" #. Paint Bucket -#: ../src/ui/dialog/inkscape-preferences.cpp:481 +#: ../src/ui/dialog/inkscape-preferences.cpp:493 msgid "Paint Bucket" msgstr "Cubo de pintura" #. Gradient -#: ../src/ui/dialog/inkscape-preferences.cpp:487 -#: ../src/widgets/gradient-selector.cpp:135 -#: ../src/widgets/gradient-selector.cpp:281 +#: ../src/ui/dialog/inkscape-preferences.cpp:499 +#: ../src/widgets/gradient-selector.cpp:144 +#: ../src/widgets/gradient-selector.cpp:295 msgid "Gradient" msgstr "Degradado" -#: ../src/ui/dialog/inkscape-preferences.cpp:489 +#: ../src/ui/dialog/inkscape-preferences.cpp:501 msgid "Prevent sharing of gradient definitions" msgstr "Prevenir el intercambio de definiciones de degradado" -#: ../src/ui/dialog/inkscape-preferences.cpp:491 +#: ../src/ui/dialog/inkscape-preferences.cpp:503 msgid "" "When on, shared gradient definitions are automatically forked on change; " "uncheck to allow sharing of gradient definitions so that editing one object " @@ -18375,11 +18562,11 @@ msgstr "" "degradados de modo que la edición de un objeto pueda afectar a otros objetos " "que usen el mismo degradado." -#: ../src/ui/dialog/inkscape-preferences.cpp:492 +#: ../src/ui/dialog/inkscape-preferences.cpp:504 msgid "Use legacy Gradient Editor" msgstr "Usar el editor de degradados antiguo" -#: ../src/ui/dialog/inkscape-preferences.cpp:494 +#: ../src/ui/dialog/inkscape-preferences.cpp:506 msgid "" "When on, the Gradient Edit button in the Fill & Stroke dialog will show the " "legacy Gradient Editor dialog, when off the Gradient Tool will be used" @@ -18388,11 +18575,11 @@ msgstr "" "borde» mostrará el editor de degradados antiguo, si no se usará la " "Herramienta de Degradados" -#: ../src/ui/dialog/inkscape-preferences.cpp:497 +#: ../src/ui/dialog/inkscape-preferences.cpp:509 msgid "Linear gradient _angle:" msgstr "Ángulo del degr_adado lineal:" -#: ../src/ui/dialog/inkscape-preferences.cpp:498 +#: ../src/ui/dialog/inkscape-preferences.cpp:510 msgid "" "Default angle of new linear gradients in degrees (clockwise from horizontal)" msgstr "" @@ -18400,16 +18587,16 @@ msgstr "" "horario desde la horizontal)" #. Dropper -#: ../src/ui/dialog/inkscape-preferences.cpp:502 +#: ../src/ui/dialog/inkscape-preferences.cpp:514 msgid "Dropper" msgstr "Cuentagotas" #. Connector -#: ../src/ui/dialog/inkscape-preferences.cpp:507 +#: ../src/ui/dialog/inkscape-preferences.cpp:519 msgid "Connector" msgstr "Conector" -#: ../src/ui/dialog/inkscape-preferences.cpp:510 +#: ../src/ui/dialog/inkscape-preferences.cpp:522 msgid "If on, connector attachment points will not be shown for text objects" msgstr "" "Si se marca, no se mostrarán puntos de conexión de conectores para los " @@ -18417,444 +18604,444 @@ msgstr "" #. LPETool #. disabled, because the LPETool is not finished yet. -#: ../src/ui/dialog/inkscape-preferences.cpp:515 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "LPE Tool" msgstr "Herramienta LPE" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:534 msgid "Interface" msgstr "Interfaz" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "System default" msgstr "Predeterminado del sistema" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Albanian (sq)" msgstr "Albanés (sq)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Amharic (am)" msgstr "Amárico (am)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Arabic (ar)" msgstr "Árabe (ar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Armenian (hy)" msgstr "Armenio (hy)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Assamese (as)" msgstr "Asamés (as)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Azerbaijani (az)" msgstr "Azerbayano (az)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Basque (eu)" msgstr "Euskera (eu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Belarusian (be)" msgstr "Bielorruso (be) " -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Bulgarian (bg)" msgstr "Búlgaro (bg)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Bengali (bn)" msgstr "Bengalí (bn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Bengali/Bangladesh (bn_BD)" msgstr "Bengalí/Bangladesh (bn_BD)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Bodo (brx)" msgstr "Bodo (brx)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Breton (br)" msgstr "Bretón (br)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Catalan (ca)" msgstr "Catalán (ca)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Valencian Catalan (ca@valencia)" msgstr "Valenciano (ca@valencia)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Chinese/China (zh_CN)" msgstr "Chino/China (zh_CN)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Chinese/Taiwan (zh_TW)" msgstr "Chino/Taiwán (zh_TW)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Croatian (hr)" msgstr "Croata (hr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Czech (cs)" msgstr "Checo (cs)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Danish (da)" msgstr "Danés (da)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Dogri (doi)" msgstr "Dogri (doi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Dutch (nl)" msgstr "Holandés (nl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Dzongkha (dz)" msgstr "Dzongkha (dz)" -#: ../src/ui/dialog/inkscape-preferences.cpp:530 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "German (de)" msgstr "Alemán (de)" -#: ../src/ui/dialog/inkscape-preferences.cpp:530 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Greek (el)" msgstr "Griego (el)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "English (en)" msgstr "Inglés (en)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "English/Australia (en_AU)" msgstr "Inglés/Australia (en_AU)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "English/Canada (en_CA)" msgstr "Inglés/Canada (en_CA)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "English/Great Britain (en_GB)" msgstr "Inglés/Gran Bretaña (en_GB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Pig Latin (en_US@piglatin)" msgstr "Galimatías - Pig Latin (en_US@piglatin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Esperanto (eo)" msgstr "Esperanto (eo)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Estonian (et)" msgstr "Estonio (et)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Farsi (fa)" msgstr "Farsi (fa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Finnish (fi)" msgstr "Finés (fi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "French (fr)" msgstr "Francés (fr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:533 +#: ../src/ui/dialog/inkscape-preferences.cpp:545 msgid "Galician (gl)" msgstr "Gallego (gl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:533 +#: ../src/ui/dialog/inkscape-preferences.cpp:545 msgid "Gujarati (gu)" msgstr "Gujarati (gu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:546 msgid "Hebrew (he)" msgstr "Hebreo (he)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:546 msgid "Hindi (hi)" msgstr "Hindi (hi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:546 msgid "Hungarian (hu)" msgstr "Húngaro (hu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:547 msgid "Icelandic (is)" msgstr "Islandés (is)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:547 msgid "Indonesian (id)" msgstr "Indonesio (id)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:547 msgid "Irish (ga)" msgstr "Irlandés (ga)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:547 msgid "Italian (it)" msgstr "Italiano (it)" -#: ../src/ui/dialog/inkscape-preferences.cpp:536 +#: ../src/ui/dialog/inkscape-preferences.cpp:548 msgid "Japanese (ja)" msgstr "Japonés (ja)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Kannada (kn)" msgstr "Kannada (kn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Kashmiri in Perso-Arabic script (ks@aran)" msgstr "Cachemiro en escritura Perso-Arábica (ks@aran)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Kashmiri in Devanagari script (ks@deva)" msgstr "Cachemiro en escritura Devanagari (ks@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Khmer (km)" msgstr "Jemer (km)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Kinyarwanda (rw)" msgstr "Kinyarwanda (rw)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Konkani (kok)" msgstr "Konkani (kok)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Konkani in Latin script (kok@latin)" msgstr "Konkani en escritura latina (kok@latin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:549 msgid "Korean (ko)" msgstr "Coreano (ko)" -#: ../src/ui/dialog/inkscape-preferences.cpp:538 +#: ../src/ui/dialog/inkscape-preferences.cpp:550 msgid "Latvian (lv)" msgstr "Letón (lv)" -#: ../src/ui/dialog/inkscape-preferences.cpp:538 +#: ../src/ui/dialog/inkscape-preferences.cpp:550 msgid "Lithuanian (lt)" msgstr "Lituano (lt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Macedonian (mk)" msgstr "Macedonio (mk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Maithili (mai)" msgstr "Maithili (mai)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Malayalam (ml)" msgstr "Malayalam (ml)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Manipuri (mni)" msgstr "Manipuri (mni)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Manipuri in Bengali script (mni@beng)" msgstr "Manipuri en escritura Bengalí (mni@beng)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Marathi (mr)" msgstr "Marathi (mr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:551 msgid "Mongolian (mn)" msgstr "Mongol (mn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:552 msgid "Nepali (ne)" msgstr "Nepalí (ne)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:552 msgid "Norwegian Bokmål (nb)" msgstr "Noruego Bokmål (nb)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:552 msgid "Norwegian Nynorsk (nn)" msgstr "Noruego Nynorsk (nn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:541 +#: ../src/ui/dialog/inkscape-preferences.cpp:553 msgid "Odia (or)" msgstr "Odia (or)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:554 msgid "Panjabi (pa)" msgstr "Panjabí (pa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:554 msgid "Polish (pl)" msgstr "Polaco (pl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:554 msgid "Portuguese (pt)" msgstr "Portugués (pt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:554 msgid "Portuguese/Brazil (pt_BR)" msgstr "Portugués brasileño (pt_BR)" -#: ../src/ui/dialog/inkscape-preferences.cpp:543 +#: ../src/ui/dialog/inkscape-preferences.cpp:555 msgid "Romanian (ro)" msgstr "Rumano (ro)" -#: ../src/ui/dialog/inkscape-preferences.cpp:543 +#: ../src/ui/dialog/inkscape-preferences.cpp:555 msgid "Russian (ru)" msgstr "Ruso (ru)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Sanskrit (sa)" msgstr "Sánscrito (sa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Santali (sat)" msgstr "Santali (sat)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Santali in Devanagari script (sat@deva)" msgstr "Santali en escritura Devanagari (sat@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Serbian (sr)" msgstr "Serbio (sr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:556 msgid "Serbian in Latin script (sr@latin)" msgstr "Serbio en escritura latina (sr@latin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Sindhi (sd)" msgstr "Sindhi (sd)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Sindhi in Devanagari script (sd@deva)" msgstr "Sindhi en escritura Devanagari (sd@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Slovak (sk)" msgstr "Eslovaco (sk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Slovenian (sl)" msgstr "Esloveno (sl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Spanish (es)" msgstr "Español (es)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Spanish/Mexico (es_MX)" msgstr "Español/México (es_MX)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:557 msgid "Swedish (sv)" msgstr "Sueco (sv)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:558 msgid "Tamil (ta)" msgstr "Tamil (ta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:558 msgid "Telugu (te)" msgstr "Telugu (te)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:558 msgid "Thai (th)" msgstr "Thai (th)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:558 msgid "Turkish (tr)" msgstr "Turco (tr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:547 +#: ../src/ui/dialog/inkscape-preferences.cpp:559 msgid "Ukrainian (uk)" msgstr "Ukranio (uk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:547 +#: ../src/ui/dialog/inkscape-preferences.cpp:559 msgid "Urdu (ur)" msgstr "Urdu (ur)" -#: ../src/ui/dialog/inkscape-preferences.cpp:548 +#: ../src/ui/dialog/inkscape-preferences.cpp:560 msgid "Vietnamese (vi)" msgstr "Vietnamita (vi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:600 +#: ../src/ui/dialog/inkscape-preferences.cpp:612 msgid "Language (requires restart):" msgstr "Idioma (necesita reiniciar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:601 +#: ../src/ui/dialog/inkscape-preferences.cpp:613 msgid "Set the language for menus and number formats" msgstr "Fija el idioma para los menús y formatos numéricos" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:616 msgctxt "Icon size" msgid "Larger" msgstr "Más grande" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:616 msgctxt "Icon size" msgid "Large" msgstr "Grande" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:616 msgctxt "Icon size" msgid "Small" msgstr "Pequeño" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:616 msgctxt "Icon size" msgid "Smaller" msgstr "Más pequeño" -#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/ui/dialog/inkscape-preferences.cpp:621 msgid "Toolbox icon size:" msgstr "Tamaño de los iconos de la barra de herramientas:" -#: ../src/ui/dialog/inkscape-preferences.cpp:610 +#: ../src/ui/dialog/inkscape-preferences.cpp:622 msgid "Set the size for the tool icons (requires restart)" msgstr "" "Fija el tamaño de iconos de la barra de herramientas (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:613 +#: ../src/ui/dialog/inkscape-preferences.cpp:625 msgid "Control bar icon size:" msgstr "Tamaño de los iconos de la barra de controles:" -#: ../src/ui/dialog/inkscape-preferences.cpp:614 +#: ../src/ui/dialog/inkscape-preferences.cpp:626 msgid "" "Set the size for the icons in tools' control bars to use (requires restart)" msgstr "Fija el tamaño de la barra de comandos (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:617 +#: ../src/ui/dialog/inkscape-preferences.cpp:629 msgid "Secondary toolbar icon size:" msgstr "Tamaño de los iconos de la barra de herramientas secundaria:" -#: ../src/ui/dialog/inkscape-preferences.cpp:618 +#: ../src/ui/dialog/inkscape-preferences.cpp:630 msgid "" "Set the size for the icons in secondary toolbars to use (requires restart)" msgstr "" "Fija el tamaño de los iconos de la barra de herramientas secundaria " "(necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:621 +#: ../src/ui/dialog/inkscape-preferences.cpp:633 msgid "Work-around color sliders not drawing" msgstr "Solución temporal para deslizadores de color que no se dibujan" -#: ../src/ui/dialog/inkscape-preferences.cpp:623 +#: ../src/ui/dialog/inkscape-preferences.cpp:635 msgid "" "When on, will attempt to work around bugs in certain GTK themes drawing " "color sliders" @@ -18862,15 +19049,15 @@ msgstr "" "Al activarlo se intentará remediar una errata en ciertos temas GTK con los " "deslizadores de color" -#: ../src/ui/dialog/inkscape-preferences.cpp:628 +#: ../src/ui/dialog/inkscape-preferences.cpp:640 msgid "Clear list" msgstr "Limpiar lista" -#: ../src/ui/dialog/inkscape-preferences.cpp:631 +#: ../src/ui/dialog/inkscape-preferences.cpp:643 msgid "Maximum documents in Open _Recent:" msgstr "Número máximo de documentos _recientes:" -#: ../src/ui/dialog/inkscape-preferences.cpp:632 +#: ../src/ui/dialog/inkscape-preferences.cpp:644 msgid "" "Set the maximum length of the Open Recent list in the File menu, or clear " "the list" @@ -18878,11 +19065,11 @@ msgstr "" "Fija la longitud máxima de la lista de «Abrir recientes» en el menú " "«Archivo» o limpiar la lista" -#: ../src/ui/dialog/inkscape-preferences.cpp:635 +#: ../src/ui/dialog/inkscape-preferences.cpp:647 msgid "_Zoom correction factor (in %):" msgstr "Corrección del factor de _zoom (en %):" -#: ../src/ui/dialog/inkscape-preferences.cpp:636 +#: ../src/ui/dialog/inkscape-preferences.cpp:648 msgid "" "Adjust the slider until the length of the ruler on your screen matches its " "real length. This information is used when zooming to 1:1, 1:2, etc., to " @@ -18892,25 +19079,13 @@ msgstr "" "coincida con su longitud real. Esta información se utilizará al realizar el " "zoom a 1:1, 1:2, etc., para mostrar los objetos a su tamaño real." -#: ../src/ui/dialog/inkscape-preferences.cpp:639 -msgid "Enable dynamic relayout for incomplete sections" -msgstr "Activar redisposición dinámica para secciones incompletas" - -#: ../src/ui/dialog/inkscape-preferences.cpp:641 -msgid "" -"When on, will allow dynamic layout of components that are not completely " -"finished being refactored" -msgstr "" -"Si se activa permitirá la disposición dinámica de componentes que no han " -"sido refactorizados completamente" - #. show infobox -#: ../src/ui/dialog/inkscape-preferences.cpp:644 +#: ../src/ui/dialog/inkscape-preferences.cpp:651 msgid "Show filter primitives infobox (requires restart)" msgstr "" "Mostra la caja de info de las primitivas de filtro (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:646 +#: ../src/ui/dialog/inkscape-preferences.cpp:653 msgid "" "Show icons and descriptions for the filter primitives available at the " "filter effects dialog" @@ -18918,26 +19093,26 @@ msgstr "" "Mostrar iconos y descripciones para las primitivas de filtro disponibles en " "el diálogo de efectos de filtro." -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:656 +#: ../src/ui/dialog/inkscape-preferences.cpp:664 msgid "Icons only" msgstr "Solo iconos" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:656 +#: ../src/ui/dialog/inkscape-preferences.cpp:664 msgid "Text only" msgstr "Solo texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:656 +#: ../src/ui/dialog/inkscape-preferences.cpp:664 msgid "Icons and text" msgstr "Icono y texto" -#: ../src/ui/dialog/inkscape-preferences.cpp:654 +#: ../src/ui/dialog/inkscape-preferences.cpp:661 msgid "Dockbar style (requires restart):" msgstr "Estilo de la barra acoplable (necesita reiniciar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:655 +#: ../src/ui/dialog/inkscape-preferences.cpp:662 msgid "" "Selects whether the vertical bars on the dockbar will show text labels, " "icons, or both" @@ -18945,11 +19120,11 @@ msgstr "" "Selecciona si las barras verticales de la barra aclopable muestras etiquetas " "de texto, iconos, o ambos" -#: ../src/ui/dialog/inkscape-preferences.cpp:662 +#: ../src/ui/dialog/inkscape-preferences.cpp:669 msgid "Switcher style (requires restart):" msgstr "Estilo del intercambiador (necesita reiniciar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:663 +#: ../src/ui/dialog/inkscape-preferences.cpp:670 msgid "" "Selects whether the dockbar switcher will show text labels, icons, or both" msgstr "" @@ -18957,103 +19132,98 @@ msgstr "" "texto, iconos, o ambos" #. Windows -#: ../src/ui/dialog/inkscape-preferences.cpp:667 +#: ../src/ui/dialog/inkscape-preferences.cpp:674 msgid "Save and restore window geometry for each document" msgstr "Guardar y restaurar la geometría de las ventanas para cada documento" -#: ../src/ui/dialog/inkscape-preferences.cpp:668 +#: ../src/ui/dialog/inkscape-preferences.cpp:675 msgid "Remember and use last window's geometry" msgstr "Recordar y usar la geometría de la última ventana" -#: ../src/ui/dialog/inkscape-preferences.cpp:669 +#: ../src/ui/dialog/inkscape-preferences.cpp:676 msgid "Don't save window geometry" msgstr "No guardar la geometría de las ventanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:671 +#: ../src/ui/dialog/inkscape-preferences.cpp:678 msgid "Save and restore dialogs status" msgstr "Guardar y restaurar estado de los diálogos" -#: ../src/ui/dialog/inkscape-preferences.cpp:672 -#: ../src/ui/dialog/inkscape-preferences.cpp:708 +#: ../src/ui/dialog/inkscape-preferences.cpp:679 +#: ../src/ui/dialog/inkscape-preferences.cpp:715 msgid "Don't save dialogs status" msgstr "No guardar el estado de los diálogos" -#: ../src/ui/dialog/inkscape-preferences.cpp:674 -#: ../src/ui/dialog/inkscape-preferences.cpp:716 +#: ../src/ui/dialog/inkscape-preferences.cpp:681 +#: ../src/ui/dialog/inkscape-preferences.cpp:723 msgid "Dockable" msgstr "Acoplable" -#: ../src/ui/dialog/inkscape-preferences.cpp:675 -#: ../src/ui/dialog/inkscape-preferences.cpp:718 -msgid "Floating" -msgstr "Flotante" - -#: ../src/ui/dialog/inkscape-preferences.cpp:678 +#: ../src/ui/dialog/inkscape-preferences.cpp:685 msgid "Native open/save dialogs" msgstr "Diálogos de abrir/guardar nativos" -#: ../src/ui/dialog/inkscape-preferences.cpp:679 +#: ../src/ui/dialog/inkscape-preferences.cpp:686 msgid "GTK open/save dialogs" msgstr "Diálogos de abrir/guardar de GTK" -#: ../src/ui/dialog/inkscape-preferences.cpp:681 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgid "Dialogs are hidden in taskbar" msgstr "Ocultar los diálogos en la barra de tareas" -#: ../src/ui/dialog/inkscape-preferences.cpp:682 +#: ../src/ui/dialog/inkscape-preferences.cpp:689 msgid "Save and restore documents viewport" msgstr "Guardar y restaurar la vista en ventana del documento" -#: ../src/ui/dialog/inkscape-preferences.cpp:683 +#: ../src/ui/dialog/inkscape-preferences.cpp:690 msgid "Zoom when window is resized" msgstr "Ajustar el dibujo si cambia el tamaño de la ventana" -#: ../src/ui/dialog/inkscape-preferences.cpp:684 +#: ../src/ui/dialog/inkscape-preferences.cpp:691 msgid "Show close button on dialogs" msgstr "Mostrar un botón de cierre en los diálogos" -#: ../src/ui/dialog/inkscape-preferences.cpp:685 +#: ../src/ui/dialog/inkscape-preferences.cpp:692 msgctxt "Dialog on top" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/inkscape-preferences.cpp:687 +#: ../src/ui/dialog/inkscape-preferences.cpp:694 msgid "Aggressive" msgstr "Agresivo" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:697 msgctxt "Window size" msgid "Small" msgstr "Pequeño" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:697 msgctxt "Window size" msgid "Large" msgstr "Grande" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:697 msgctxt "Window size" msgid "Maximized" msgstr "Maximizado" -#: ../src/ui/dialog/inkscape-preferences.cpp:694 +#: ../src/ui/dialog/inkscape-preferences.cpp:701 msgid "Default window size:" msgstr "Tamaño predeterminado de ventana:" -#: ../src/ui/dialog/inkscape-preferences.cpp:695 +#: ../src/ui/dialog/inkscape-preferences.cpp:702 msgid "Set the default window size" msgstr "Fijar el tamaño predeterminado de la ventana" -#: ../src/ui/dialog/inkscape-preferences.cpp:698 +#: ../src/ui/dialog/inkscape-preferences.cpp:705 msgid "Saving window geometry (size and position)" msgstr "Guardando geometría de las ventanas (tamaño y posición)" -#: ../src/ui/dialog/inkscape-preferences.cpp:700 +#: ../src/ui/dialog/inkscape-preferences.cpp:707 msgid "Let the window manager determine placement of all windows" msgstr "" "Dejar que el gestor de ventanas determine la colocación de todas las ventanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:702 +#: ../src/ui/dialog/inkscape-preferences.cpp:709 msgid "" "Remember and use the last window's geometry (saves geometry to user " "preferences)" @@ -19061,7 +19231,7 @@ msgstr "" "Recordar y usar la geometría de la última ventana (guarda la geometría en " "las preferencias del usuario)" -#: ../src/ui/dialog/inkscape-preferences.cpp:704 +#: ../src/ui/dialog/inkscape-preferences.cpp:711 msgid "" "Save and restore window geometry for each document (saves geometry in the " "document)" @@ -19069,11 +19239,11 @@ msgstr "" "Guardar y restaurar la geometría de las ventanas para cada documento (guarda " "la geometría en el documento)" -#: ../src/ui/dialog/inkscape-preferences.cpp:706 +#: ../src/ui/dialog/inkscape-preferences.cpp:713 msgid "Saving dialogs status" msgstr "Guardando estado de diálogos" -#: ../src/ui/dialog/inkscape-preferences.cpp:710 +#: ../src/ui/dialog/inkscape-preferences.cpp:717 msgid "" "Save and restore dialogs status (the last open windows dialogs are saved " "when it closes)" @@ -19081,67 +19251,67 @@ msgstr "" "Guardar y restaurar estado de los diálogos (se guardarán los diálogos al " "cerrar la última ventana abierta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:714 +#: ../src/ui/dialog/inkscape-preferences.cpp:721 msgid "Dialog behavior (requires restart)" msgstr "Comportamiento de los diálogos (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:720 +#: ../src/ui/dialog/inkscape-preferences.cpp:727 msgid "Desktop integration" msgstr "Integración del escritorio" -#: ../src/ui/dialog/inkscape-preferences.cpp:722 +#: ../src/ui/dialog/inkscape-preferences.cpp:729 msgid "Use Windows like open and save dialogs" msgstr "Usar diálogos de abrir/guardar estilo Windows" -#: ../src/ui/dialog/inkscape-preferences.cpp:724 +#: ../src/ui/dialog/inkscape-preferences.cpp:731 msgid "Use GTK open and save dialogs " msgstr "Usar diálogos de abrir/guardar estilo GTK" -#: ../src/ui/dialog/inkscape-preferences.cpp:728 +#: ../src/ui/dialog/inkscape-preferences.cpp:735 msgid "Dialogs on top:" msgstr "Diálogos encima:" -#: ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/ui/dialog/inkscape-preferences.cpp:738 msgid "Dialogs are treated as regular windows" msgstr "Se trata a los diálogos como a ventanas normales" -#: ../src/ui/dialog/inkscape-preferences.cpp:733 +#: ../src/ui/dialog/inkscape-preferences.cpp:740 msgid "Dialogs stay on top of document windows" msgstr "Los diálogos permanecen encima de las ventanas de documento" -#: ../src/ui/dialog/inkscape-preferences.cpp:735 +#: ../src/ui/dialog/inkscape-preferences.cpp:742 msgid "Same as Normal but may work better with some window managers" msgstr "" "Igual que «Normal», pero puede funcionar mejor con algunos gestores de " "ventanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:738 +#: ../src/ui/dialog/inkscape-preferences.cpp:745 msgid "Dialog Transparency" msgstr "Transparencia de diálogos" -#: ../src/ui/dialog/inkscape-preferences.cpp:740 +#: ../src/ui/dialog/inkscape-preferences.cpp:747 msgid "_Opacity when focused:" msgstr "_Opacidad con foco:" -#: ../src/ui/dialog/inkscape-preferences.cpp:742 +#: ../src/ui/dialog/inkscape-preferences.cpp:749 msgid "Opacity when _unfocused:" msgstr "Opacidad sin _foco:" -#: ../src/ui/dialog/inkscape-preferences.cpp:744 +#: ../src/ui/dialog/inkscape-preferences.cpp:751 msgid "_Time of opacity change animation:" msgstr "_Tiempo de animación del cambio de opacidad:" -#: ../src/ui/dialog/inkscape-preferences.cpp:747 +#: ../src/ui/dialog/inkscape-preferences.cpp:754 msgid "Miscellaneous" msgstr "Varios" -#: ../src/ui/dialog/inkscape-preferences.cpp:750 +#: ../src/ui/dialog/inkscape-preferences.cpp:757 msgid "Whether dialog windows are to be hidden in the window manager taskbar" msgstr "" "Indica si se muestran o no las ventanas de diálogo en la barra de tareas del " "gestor de ventanas" -#: ../src/ui/dialog/inkscape-preferences.cpp:753 +#: ../src/ui/dialog/inkscape-preferences.cpp:760 msgid "" "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 " @@ -19152,7 +19322,7 @@ msgstr "" "modificar en cualquier ventana con el botón encima de la barra de " "desplazamiento de la derecha)" -#: ../src/ui/dialog/inkscape-preferences.cpp:755 +#: ../src/ui/dialog/inkscape-preferences.cpp:762 msgid "" "Save documents viewport (zoom and panning position). Useful to turn off when " "sharing version controlled files." @@ -19160,104 +19330,104 @@ msgstr "" "Guardar vista del documento (posición de zoom y navegación). Desactivar si " "se comparten documentos con control de versión." -#: ../src/ui/dialog/inkscape-preferences.cpp:757 +#: ../src/ui/dialog/inkscape-preferences.cpp:764 msgid "Whether dialog windows have a close button (requires restart)" msgstr "" "Indica si las ventanas de diálogo disponen de un botón para cerrarlas " "(necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:758 +#: ../src/ui/dialog/inkscape-preferences.cpp:765 msgid "Windows" msgstr "Ventanas" #. Grids -#: ../src/ui/dialog/inkscape-preferences.cpp:761 +#: ../src/ui/dialog/inkscape-preferences.cpp:768 msgid "Line color when zooming out" msgstr "Color de línea al alejar zoom" -#: ../src/ui/dialog/inkscape-preferences.cpp:764 +#: ../src/ui/dialog/inkscape-preferences.cpp:771 msgid "The gridlines will be shown in minor grid line color" msgstr "" "Las líneas de rejilla se mostrarán en el color de las líneas secundarias" -#: ../src/ui/dialog/inkscape-preferences.cpp:766 +#: ../src/ui/dialog/inkscape-preferences.cpp:773 msgid "The gridlines will be shown in major grid line color" msgstr "Las líneas de rejilla se mostrarán en el color de las líneas primarias" -#: ../src/ui/dialog/inkscape-preferences.cpp:768 +#: ../src/ui/dialog/inkscape-preferences.cpp:775 msgid "Default grid settings" msgstr "Ajustes predeterminado de rejilla" -#: ../src/ui/dialog/inkscape-preferences.cpp:774 -#: ../src/ui/dialog/inkscape-preferences.cpp:799 +#: ../src/ui/dialog/inkscape-preferences.cpp:781 +#: ../src/ui/dialog/inkscape-preferences.cpp:806 msgid "Grid units:" msgstr "Unidades de rejilla:" -#: ../src/ui/dialog/inkscape-preferences.cpp:779 -#: ../src/ui/dialog/inkscape-preferences.cpp:804 +#: ../src/ui/dialog/inkscape-preferences.cpp:786 +#: ../src/ui/dialog/inkscape-preferences.cpp:811 msgid "Origin X:" msgstr "Origen X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:780 -#: ../src/ui/dialog/inkscape-preferences.cpp:805 +#: ../src/ui/dialog/inkscape-preferences.cpp:787 +#: ../src/ui/dialog/inkscape-preferences.cpp:812 msgid "Origin Y:" msgstr "Origen Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:785 +#: ../src/ui/dialog/inkscape-preferences.cpp:792 msgid "Spacing X:" msgstr "Espaciado X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:786 -#: ../src/ui/dialog/inkscape-preferences.cpp:808 +#: ../src/ui/dialog/inkscape-preferences.cpp:793 +#: ../src/ui/dialog/inkscape-preferences.cpp:815 msgid "Spacing Y:" msgstr "Espaciado Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:788 -#: ../src/ui/dialog/inkscape-preferences.cpp:789 -#: ../src/ui/dialog/inkscape-preferences.cpp:813 -#: ../src/ui/dialog/inkscape-preferences.cpp:814 +#: ../src/ui/dialog/inkscape-preferences.cpp:795 +#: ../src/ui/dialog/inkscape-preferences.cpp:796 +#: ../src/ui/dialog/inkscape-preferences.cpp:820 +#: ../src/ui/dialog/inkscape-preferences.cpp:821 msgid "Minor grid line color:" msgstr "Color de las líneas secundarias:" -#: ../src/ui/dialog/inkscape-preferences.cpp:789 -#: ../src/ui/dialog/inkscape-preferences.cpp:814 +#: ../src/ui/dialog/inkscape-preferences.cpp:796 +#: ../src/ui/dialog/inkscape-preferences.cpp:821 msgid "Color used for normal grid lines" msgstr "Color utilizado para las líneas normales de la rejilla" -#: ../src/ui/dialog/inkscape-preferences.cpp:790 -#: ../src/ui/dialog/inkscape-preferences.cpp:791 -#: ../src/ui/dialog/inkscape-preferences.cpp:815 -#: ../src/ui/dialog/inkscape-preferences.cpp:816 +#: ../src/ui/dialog/inkscape-preferences.cpp:797 +#: ../src/ui/dialog/inkscape-preferences.cpp:798 +#: ../src/ui/dialog/inkscape-preferences.cpp:822 +#: ../src/ui/dialog/inkscape-preferences.cpp:823 msgid "Major grid line color:" msgstr "Color de las líneas primarias:" -#: ../src/ui/dialog/inkscape-preferences.cpp:791 -#: ../src/ui/dialog/inkscape-preferences.cpp:816 +#: ../src/ui/dialog/inkscape-preferences.cpp:798 +#: ../src/ui/dialog/inkscape-preferences.cpp:823 msgid "Color used for major (highlighted) grid lines" msgstr "Color utilizado para las líneas primarias (resaltadas) de la rejilla" -#: ../src/ui/dialog/inkscape-preferences.cpp:793 -#: ../src/ui/dialog/inkscape-preferences.cpp:818 +#: ../src/ui/dialog/inkscape-preferences.cpp:800 +#: ../src/ui/dialog/inkscape-preferences.cpp:825 msgid "Major grid line every:" msgstr "Línea primaria cada:" -#: ../src/ui/dialog/inkscape-preferences.cpp:794 +#: ../src/ui/dialog/inkscape-preferences.cpp:801 msgid "Show dots instead of lines" msgstr "Mostrar puntos en vez de líneas" -#: ../src/ui/dialog/inkscape-preferences.cpp:795 +#: ../src/ui/dialog/inkscape-preferences.cpp:802 msgid "If set, display dots at gridpoints instead of gridlines" msgstr "Si está activo, muestra puntos en lugar de líneas en la rejilla" -#: ../src/ui/dialog/inkscape-preferences.cpp:869 +#: ../src/ui/dialog/inkscape-preferences.cpp:883 msgid "Input/Output" msgstr "Entrada/Salida" -#: ../src/ui/dialog/inkscape-preferences.cpp:872 +#: ../src/ui/dialog/inkscape-preferences.cpp:886 msgid "Use current directory for \"Save As ...\"" msgstr "Usar la carpeta actual para «Guardar como...»" -#: ../src/ui/dialog/inkscape-preferences.cpp:874 +#: ../src/ui/dialog/inkscape-preferences.cpp:888 msgid "" "When this option is on, the \"Save as...\" and \"Save a Copy...\" dialogs " "will always open in the directory where the currently open document is; when " @@ -19269,11 +19439,11 @@ msgstr "" "abierto. Si está desactivado, se abrirá en el directorio en el que ha " "guardado un archivo la última vez con ese diálogo" -#: ../src/ui/dialog/inkscape-preferences.cpp:876 +#: ../src/ui/dialog/inkscape-preferences.cpp:890 msgid "Add label comments to printing output" msgstr "Añadir comentarios de etiqueta a la salida de impresión" -#: ../src/ui/dialog/inkscape-preferences.cpp:878 +#: ../src/ui/dialog/inkscape-preferences.cpp:892 msgid "" "When on, a comment will be added to the raw print output, marking the " "rendered output for an object with its label" @@ -19281,11 +19451,11 @@ msgstr "" "Si se activa, se añadirá un comentario a la salida de impresión, marcando la " "salida generada para un objeto con su etiqueta" -#: ../src/ui/dialog/inkscape-preferences.cpp:880 +#: ../src/ui/dialog/inkscape-preferences.cpp:894 msgid "Add default metadata to new documents" msgstr "Añadir metadatos predeterminados a documentos nuevos" -#: ../src/ui/dialog/inkscape-preferences.cpp:882 +#: ../src/ui/dialog/inkscape-preferences.cpp:896 msgid "" "Add default metadata to new documents. Default metadata can be set from " "Document Properties->Metadata." @@ -19293,15 +19463,15 @@ msgstr "" "Añadir metadatos predeterminados a documentos nuevos. Los metadatos " "predeterminados se configuran en «Propiedades del documento->Metadatos»." -#: ../src/ui/dialog/inkscape-preferences.cpp:886 +#: ../src/ui/dialog/inkscape-preferences.cpp:900 msgid "_Grab sensitivity:" msgstr "Sensibilidad de a_garre:" -#: ../src/ui/dialog/inkscape-preferences.cpp:886 +#: ../src/ui/dialog/inkscape-preferences.cpp:900 msgid "pixels (requires restart)" msgstr "píxeles (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:887 +#: ../src/ui/dialog/inkscape-preferences.cpp:901 msgid "" "How close on the screen you need to be to an object to be able to grab it " "with mouse (in screen pixels)" @@ -19309,37 +19479,37 @@ msgstr "" "Lo cerca que hay que estar de un objeto en pantalla para poder agarrarlo con " "el ratón (en píxeles de pantalla)" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 +#: ../src/ui/dialog/inkscape-preferences.cpp:903 msgid "_Click/drag threshold:" msgstr "Umbral de _clic/arrastre:" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 -#: ../src/ui/dialog/inkscape-preferences.cpp:1226 -#: ../src/ui/dialog/inkscape-preferences.cpp:1230 -#: ../src/ui/dialog/inkscape-preferences.cpp:1240 +#: ../src/ui/dialog/inkscape-preferences.cpp:903 +#: ../src/ui/dialog/inkscape-preferences.cpp:1245 +#: ../src/ui/dialog/inkscape-preferences.cpp:1249 +#: ../src/ui/dialog/inkscape-preferences.cpp:1259 msgid "pixels" msgstr "píxeles" -#: ../src/ui/dialog/inkscape-preferences.cpp:890 +#: ../src/ui/dialog/inkscape-preferences.cpp:904 msgid "" "Maximum mouse drag (in screen pixels) which is considered a click, not a drag" msgstr "" "Arrastre máximo de ratón (en píxeles) que se considera un clic y no un " "arrastre" -#: ../src/ui/dialog/inkscape-preferences.cpp:893 +#: ../src/ui/dialog/inkscape-preferences.cpp:907 msgid "_Handle size:" msgstr "Tamaño del _tirador:" -#: ../src/ui/dialog/inkscape-preferences.cpp:894 +#: ../src/ui/dialog/inkscape-preferences.cpp:908 msgid "Set the relative size of node handles" msgstr "Fijar el tamaño relativo de los nodos de los tiradores" -#: ../src/ui/dialog/inkscape-preferences.cpp:896 +#: ../src/ui/dialog/inkscape-preferences.cpp:910 msgid "Use pressure-sensitive tablet (requires restart)" msgstr "Utilizar una tableta sensible a la presión (necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:898 +#: ../src/ui/dialog/inkscape-preferences.cpp:912 msgid "" "Use the capabilities of a tablet or other pressure-sensitive device. Disable " "this only if you have problems with the tablet (you can still use it as a " @@ -19349,29 +19519,29 @@ msgstr "" "presión. Desactive esta opción solamente si tiene problemas con la tableta " "(la podrá seguir usando como ratón)." -#: ../src/ui/dialog/inkscape-preferences.cpp:900 +#: ../src/ui/dialog/inkscape-preferences.cpp:914 msgid "Switch tool based on tablet device (requires restart)" msgstr "" "Herramienta de intercambio basada en dispositivo de tableta (necesita " "reiniciar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:902 +#: ../src/ui/dialog/inkscape-preferences.cpp:916 msgid "" "Change tool as different devices are used on the tablet (pen, eraser, mouse)" msgstr "" "Cambiar la herramienta en la medida en que se utilicen diferentes " "dispositivos en la tableta (puntero, borrador, ratón)" -#: ../src/ui/dialog/inkscape-preferences.cpp:903 +#: ../src/ui/dialog/inkscape-preferences.cpp:917 msgid "Input devices" msgstr "Dispositivos de entrada" #. SVG output options -#: ../src/ui/dialog/inkscape-preferences.cpp:906 +#: ../src/ui/dialog/inkscape-preferences.cpp:920 msgid "Use named colors" msgstr "Usar colores por nombre" -#: ../src/ui/dialog/inkscape-preferences.cpp:907 +#: ../src/ui/dialog/inkscape-preferences.cpp:921 msgid "" "If set, write the CSS name of the color when available (e.g. 'red' or " "'magenta') instead of the numeric value" @@ -19379,23 +19549,23 @@ msgstr "" "Si está activo, escribe el nombre CSS del color si éste está disponible (p." "ej. «red» o «magenta») en vez del valor numérico" -#: ../src/ui/dialog/inkscape-preferences.cpp:909 +#: ../src/ui/dialog/inkscape-preferences.cpp:923 msgid "XML formatting" msgstr "Formateo XML" -#: ../src/ui/dialog/inkscape-preferences.cpp:911 +#: ../src/ui/dialog/inkscape-preferences.cpp:925 msgid "Inline attributes" msgstr "Atributos en línea" -#: ../src/ui/dialog/inkscape-preferences.cpp:912 +#: ../src/ui/dialog/inkscape-preferences.cpp:926 msgid "Put attributes on the same line as the element tag" msgstr "Poner los atributos en la misma línea que la etiqueta «element»" -#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:929 msgid "_Indent, spaces:" msgstr "Sangría, espac_ios:" -#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:929 msgid "" "The number of spaces to use for indenting nested elements; set to 0 for no " "indentation" @@ -19403,28 +19573,28 @@ msgstr "" "La cantidad de espacios utilizados para sangrar elementos anidados; use 0 " "para no sangrar" -#: ../src/ui/dialog/inkscape-preferences.cpp:917 +#: ../src/ui/dialog/inkscape-preferences.cpp:931 msgid "Path data" msgstr "Datos de trayecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 +#: ../src/ui/dialog/inkscape-preferences.cpp:934 msgid "Absolute" msgstr "Absoluto" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 +#: ../src/ui/dialog/inkscape-preferences.cpp:934 msgid "Relative" msgstr "Relativo" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 -#: ../src/ui/dialog/inkscape-preferences.cpp:1205 +#: ../src/ui/dialog/inkscape-preferences.cpp:934 +#: ../src/ui/dialog/inkscape-preferences.cpp:1224 msgid "Optimized" msgstr "Optimizado" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:938 msgid "Path string format:" msgstr "Formato de cadena de trayecto:" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:938 msgid "" "Path data should be written: only with absolute coordinates, only with " "relative coordinates, or optimized for string length (mixed absolute and " @@ -19434,11 +19604,11 @@ msgstr "" "coordenadas relativas, u optimizado para la longitud del texto (mezcla de " "coordenadas absolutas y relativas)" -#: ../src/ui/dialog/inkscape-preferences.cpp:926 +#: ../src/ui/dialog/inkscape-preferences.cpp:940 msgid "Force repeat commands" msgstr "Forzar comandos de repetición" -#: ../src/ui/dialog/inkscape-preferences.cpp:927 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 msgid "" "Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead " "of 'L 1,2 3,4')" @@ -19446,23 +19616,23 @@ msgstr "" "Forzar la repetición del mismo comando de trayecto (pr ejemplo, «L 1,2 L3,4» " "en vez de «L 1,2 3,4»)" -#: ../src/ui/dialog/inkscape-preferences.cpp:929 +#: ../src/ui/dialog/inkscape-preferences.cpp:943 msgid "Numbers" msgstr "Números" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:946 msgid "_Numeric precision:" msgstr "Precisión _numérica:" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:946 msgid "Significant figures of the values written to the SVG file" msgstr "Números significativos de los valores escritos en el archivo SVG" -#: ../src/ui/dialog/inkscape-preferences.cpp:935 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "Minimum _exponent:" msgstr "_Exponente mínimo:" -#: ../src/ui/dialog/inkscape-preferences.cpp:935 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "" "The smallest number written to SVG is 10 to the power of this exponent; " "anything smaller is written as zero" @@ -19472,17 +19642,17 @@ msgstr "" #. Code to add controls for attribute checking options #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:940 +#: ../src/ui/dialog/inkscape-preferences.cpp:954 msgid "Improper Attributes Actions" msgstr "Acciones de atributos impropios" -#: ../src/ui/dialog/inkscape-preferences.cpp:942 -#: ../src/ui/dialog/inkscape-preferences.cpp:950 -#: ../src/ui/dialog/inkscape-preferences.cpp:958 +#: ../src/ui/dialog/inkscape-preferences.cpp:956 +#: ../src/ui/dialog/inkscape-preferences.cpp:964 +#: ../src/ui/dialog/inkscape-preferences.cpp:972 msgid "Print warnings" msgstr "Mostrar avisos" -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:957 msgid "" "Print warning if invalid or non-useful attributes found. Database files " "located in inkscape_data_dir/attributes." @@ -19490,20 +19660,20 @@ msgstr "" "Mostrar aviso si se encuentran atributos inválidos o inútiles. Los archivos " "de la base de datos se encuentran en dir_datos_inkscape/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:944 +#: ../src/ui/dialog/inkscape-preferences.cpp:958 msgid "Remove attributes" msgstr "Eliminar atributos" -#: ../src/ui/dialog/inkscape-preferences.cpp:945 +#: ../src/ui/dialog/inkscape-preferences.cpp:959 msgid "Delete invalid or non-useful attributes from element tag" msgstr "Eliminar atributos inválidos o inútiles de la etiqueta de elemento" #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:948 +#: ../src/ui/dialog/inkscape-preferences.cpp:962 msgid "Inappropriate Style Properties Actions" msgstr "Acciones de propiedades de estilo inapropiadas" -#: ../src/ui/dialog/inkscape-preferences.cpp:951 +#: ../src/ui/dialog/inkscape-preferences.cpp:965 msgid "" "Print warning if inappropriate style properties found (i.e. 'font-family' " "set on a ). Database files located in inkscape_data_dir/attributes." @@ -19512,21 +19682,21 @@ msgstr "" "'font-family' en un ). Los archivos de la base de datos se encuentran " "en dir_datos_inkscape/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:952 -#: ../src/ui/dialog/inkscape-preferences.cpp:960 +#: ../src/ui/dialog/inkscape-preferences.cpp:966 +#: ../src/ui/dialog/inkscape-preferences.cpp:974 msgid "Remove style properties" msgstr "Eliminar propiedades de estilo" -#: ../src/ui/dialog/inkscape-preferences.cpp:953 +#: ../src/ui/dialog/inkscape-preferences.cpp:967 msgid "Delete inappropriate style properties" msgstr "Eliminar propiedades de estilo inapropiadas" #. Add default or inherited style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:956 +#: ../src/ui/dialog/inkscape-preferences.cpp:970 msgid "Non-useful Style Properties Actions" msgstr "Acciones de propiedades de estilo inútiles" -#: ../src/ui/dialog/inkscape-preferences.cpp:959 +#: ../src/ui/dialog/inkscape-preferences.cpp:973 msgid "" "Print warning if redundant style properties found (i.e. if a property has " "the default value and a different value is not inherited or if value is the " @@ -19538,19 +19708,19 @@ msgstr "" "diferente o si el valor es el mismo que el que se heredaría). Los archivos " "de la base de datos se encuentran en dir_datos_inkscape/attributes." -#: ../src/ui/dialog/inkscape-preferences.cpp:961 +#: ../src/ui/dialog/inkscape-preferences.cpp:975 msgid "Delete redundant style properties" msgstr "Eliminar propiedades de estilo redundantes" -#: ../src/ui/dialog/inkscape-preferences.cpp:963 +#: ../src/ui/dialog/inkscape-preferences.cpp:977 msgid "Check Attributes and Style Properties on" msgstr "Comprobar atributos y propiedades de estilo al" -#: ../src/ui/dialog/inkscape-preferences.cpp:965 +#: ../src/ui/dialog/inkscape-preferences.cpp:979 msgid "Reading" msgstr "Leer" -#: ../src/ui/dialog/inkscape-preferences.cpp:966 +#: ../src/ui/dialog/inkscape-preferences.cpp:980 msgid "" "Check attributes and style properties on reading in SVG files (including " "those internal to Inkscape which will slow down startup)" @@ -19558,11 +19728,11 @@ msgstr "" "Comprobar atributos y propiedades de estilo al leer archivos SVG (inclusive " "los internos de Inkscape, lo que ralentizará el arranque)" -#: ../src/ui/dialog/inkscape-preferences.cpp:967 +#: ../src/ui/dialog/inkscape-preferences.cpp:981 msgid "Editing" msgstr "Editar" -#: ../src/ui/dialog/inkscape-preferences.cpp:968 +#: ../src/ui/dialog/inkscape-preferences.cpp:982 msgid "" "Check attributes and style properties while editing SVG files (may slow down " "Inkscape, mostly useful for debugging)" @@ -19570,40 +19740,40 @@ msgstr "" "Comprobar atributos y propiedades de estilo al editar archivos SVG (podría " "ralentizar Inkscape, pero es útil para la depuración)" -#: ../src/ui/dialog/inkscape-preferences.cpp:969 +#: ../src/ui/dialog/inkscape-preferences.cpp:983 msgid "Writing" msgstr "Escribir" -#: ../src/ui/dialog/inkscape-preferences.cpp:970 +#: ../src/ui/dialog/inkscape-preferences.cpp:984 msgid "Check attributes and style properties on writing out SVG files" msgstr "Comprobar atributos y propiedades de estilo al escribir archivos SVG" -#: ../src/ui/dialog/inkscape-preferences.cpp:972 +#: ../src/ui/dialog/inkscape-preferences.cpp:986 msgid "SVG output" msgstr "Salida SVG" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:992 msgid "Perceptual" msgstr "Perceptual" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:992 msgid "Relative Colorimetric" msgstr "Colorimetría relativa" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:992 msgid "Absolute Colorimetric" msgstr "Colorimetría absoluta" -#: ../src/ui/dialog/inkscape-preferences.cpp:982 +#: ../src/ui/dialog/inkscape-preferences.cpp:996 msgid "(Note: Color management has been disabled in this build)" msgstr "(Nota: la gestión de color ha sido deshabilitada en esta versión)" -#: ../src/ui/dialog/inkscape-preferences.cpp:986 +#: ../src/ui/dialog/inkscape-preferences.cpp:1000 msgid "Display adjustment" msgstr "Ajuste de visualización" -#: ../src/ui/dialog/inkscape-preferences.cpp:996 +#: ../src/ui/dialog/inkscape-preferences.cpp:1010 #, c-format msgid "" "The ICC profile to use to calibrate display output.\n" @@ -19612,114 +19782,114 @@ msgstr "" "El perfil ICC utilizado para calibrar la salida a pantalla.\n" "Directorios buscados: %s" -#: ../src/ui/dialog/inkscape-preferences.cpp:997 +#: ../src/ui/dialog/inkscape-preferences.cpp:1011 msgid "Display profile:" msgstr "Perfil de visualización:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1002 +#: ../src/ui/dialog/inkscape-preferences.cpp:1016 msgid "Retrieve profile from display" msgstr "Obtener perfil de la pantalla" -#: ../src/ui/dialog/inkscape-preferences.cpp:1005 +#: ../src/ui/dialog/inkscape-preferences.cpp:1019 msgid "Retrieve profiles from those attached to displays via XICC" msgstr "Recuperar perfiles de los adjuntos a las pantallas mediante XICC" -#: ../src/ui/dialog/inkscape-preferences.cpp:1007 +#: ../src/ui/dialog/inkscape-preferences.cpp:1021 msgid "Retrieve profiles from those attached to displays" msgstr "Recuperar perfiles de los adjuntos a las pantallas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1012 +#: ../src/ui/dialog/inkscape-preferences.cpp:1026 msgid "Display rendering intent:" msgstr "Mostrar propósito de conversión:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1013 +#: ../src/ui/dialog/inkscape-preferences.cpp:1027 msgid "The rendering intent to use to calibrate display output" msgstr "" "El propósito de conversión que se utilizará para calibrar la salida a " "pantalla" -#: ../src/ui/dialog/inkscape-preferences.cpp:1015 +#: ../src/ui/dialog/inkscape-preferences.cpp:1029 msgid "Proofing" msgstr "Comprobación" -#: ../src/ui/dialog/inkscape-preferences.cpp:1017 +#: ../src/ui/dialog/inkscape-preferences.cpp:1031 msgid "Simulate output on screen" msgstr "Simular salida en pantalla" -#: ../src/ui/dialog/inkscape-preferences.cpp:1019 +#: ../src/ui/dialog/inkscape-preferences.cpp:1033 msgid "Simulates output of target device" msgstr "Simula la salida del dispositivo de destino" -#: ../src/ui/dialog/inkscape-preferences.cpp:1021 +#: ../src/ui/dialog/inkscape-preferences.cpp:1035 msgid "Mark out of gamut colors" msgstr "Marcar colores fuera del gamut" -#: ../src/ui/dialog/inkscape-preferences.cpp:1023 +#: ../src/ui/dialog/inkscape-preferences.cpp:1037 msgid "Highlights colors that are out of gamut for the target device" msgstr "Marca los colores que están fuera del gamut del dispositivo de destino" -#: ../src/ui/dialog/inkscape-preferences.cpp:1030 +#: ../src/ui/dialog/inkscape-preferences.cpp:1049 msgid "Out of gamut warning color:" msgstr "Color de aviso de exceso de gamut:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1031 +#: ../src/ui/dialog/inkscape-preferences.cpp:1050 msgid "Selects the color used for out of gamut warning" msgstr "Selecciona el color utilizado para indicar los colores fuera de gamut" -#: ../src/ui/dialog/inkscape-preferences.cpp:1033 +#: ../src/ui/dialog/inkscape-preferences.cpp:1052 msgid "Device profile:" msgstr "Perfil de dispositivo:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1034 +#: ../src/ui/dialog/inkscape-preferences.cpp:1053 msgid "The ICC profile to use to simulate device output" msgstr "El perfil ICC que se usará para simular la salida del dispositivo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1037 +#: ../src/ui/dialog/inkscape-preferences.cpp:1056 msgid "Device rendering intent:" msgstr "Propósito de conversión del dispositivo:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1038 +#: ../src/ui/dialog/inkscape-preferences.cpp:1057 msgid "The rendering intent to use to calibrate device output" msgstr "" "El propósito de conversión que se utilizará para calibrar la salida a " "pantalla" -#: ../src/ui/dialog/inkscape-preferences.cpp:1040 +#: ../src/ui/dialog/inkscape-preferences.cpp:1059 msgid "Black point compensation" msgstr "Compensación de punto negro" -#: ../src/ui/dialog/inkscape-preferences.cpp:1042 +#: ../src/ui/dialog/inkscape-preferences.cpp:1061 msgid "Enables black point compensation" msgstr "Activa la compensación de punto negro" -#: ../src/ui/dialog/inkscape-preferences.cpp:1044 +#: ../src/ui/dialog/inkscape-preferences.cpp:1063 msgid "Preserve black" msgstr "Conservar negro" -#: ../src/ui/dialog/inkscape-preferences.cpp:1051 +#: ../src/ui/dialog/inkscape-preferences.cpp:1070 msgid "(LittleCMS 1.15 or later required)" msgstr "(requiere LittleCMS 1.15 o superior)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1053 +#: ../src/ui/dialog/inkscape-preferences.cpp:1072 msgid "Preserve K channel in CMYK -> CMYK transforms" msgstr "Conservar canal K en transformaciones CMYK -> CMYK" -#: ../src/ui/dialog/inkscape-preferences.cpp:1067 -#: ../src/ui/widget/color-icc-selector.cpp:381 -#: ../src/ui/widget/color-icc-selector.cpp:677 +#: ../src/ui/dialog/inkscape-preferences.cpp:1086 +#: ../src/ui/widget/color-icc-selector.cpp:394 +#: ../src/ui/widget/color-icc-selector.cpp:700 msgid "" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1112 +#: ../src/ui/dialog/inkscape-preferences.cpp:1131 msgid "Color management" msgstr "Gestión de color" #. Autosave options -#: ../src/ui/dialog/inkscape-preferences.cpp:1115 +#: ../src/ui/dialog/inkscape-preferences.cpp:1134 msgid "Enable autosave (requires restart)" msgstr "Activar autoguardado (necesita reiniciar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1116 +#: ../src/ui/dialog/inkscape-preferences.cpp:1135 msgid "" "Automatically save the current document(s) at a given interval, thus " "minimizing loss in case of a crash" @@ -19727,12 +19897,12 @@ msgstr "" "Guardar los documentos automáticamente cada intervalo dado, minimizando la " "pérdida de trabajo en caso de un cuelgue." -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1141 msgctxt "Filesystem" msgid "Autosave _directory:" msgstr "_Directorio de autoguardado:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1141 msgid "" "The directory where autosaves will be written. This should be an absolute " "path (starts with / on UNIX or a drive letter such as C: on Windows). " @@ -19741,19 +19911,19 @@ msgstr "" "debería ser una ruta absoluta (comienza con / en UNIX o unak letra de " "unidad, como C:, en Windows)." -#: ../src/ui/dialog/inkscape-preferences.cpp:1124 +#: ../src/ui/dialog/inkscape-preferences.cpp:1143 msgid "_Interval (in minutes):" msgstr "_Intervalo (en minutos):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1124 +#: ../src/ui/dialog/inkscape-preferences.cpp:1143 msgid "Interval (in minutes) at which document will be autosaved" msgstr "Intervalo (en minutos) entre guardados automáticos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1126 +#: ../src/ui/dialog/inkscape-preferences.cpp:1145 msgid "_Maximum number of autosaves:" msgstr "Número _máximo de autoguardados:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1126 +#: ../src/ui/dialog/inkscape-preferences.cpp:1145 msgid "" "Maximum number of autosaved files; use this to limit the storage space used" msgstr "" @@ -19772,15 +19942,15 @@ msgstr "" #. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); #. #. ----------- -#: ../src/ui/dialog/inkscape-preferences.cpp:1141 +#: ../src/ui/dialog/inkscape-preferences.cpp:1160 msgid "Autosave" msgstr "Autoguardado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1145 +#: ../src/ui/dialog/inkscape-preferences.cpp:1164 msgid "Open Clip Art Library _Server Name:" msgstr "Nombre del _servidor de la librería Open Clip Art:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1146 +#: ../src/ui/dialog/inkscape-preferences.cpp:1165 msgid "" "The server name of the Open Clip Art Library webdav server; it's used by the " "Import and Export to OCAL function" @@ -19788,36 +19958,36 @@ msgstr "" "El nombre del servidor webdav de la librería Open Clip Art. Se utiliza en la " "función de Importar y Exportar a OCAL." -#: ../src/ui/dialog/inkscape-preferences.cpp:1148 +#: ../src/ui/dialog/inkscape-preferences.cpp:1167 msgid "Open Clip Art Library _Username:" msgstr "_Usuario de la librería Open Clip Art:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1149 +#: ../src/ui/dialog/inkscape-preferences.cpp:1168 msgid "The username used to log into Open Clip Art Library" msgstr "" "El nombre de usuario utilizado para acceder a la librería Open Clip Art." -#: ../src/ui/dialog/inkscape-preferences.cpp:1151 +#: ../src/ui/dialog/inkscape-preferences.cpp:1170 msgid "Open Clip Art Library _Password:" msgstr "Contraseña _para la librería Open Clip Art:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1152 +#: ../src/ui/dialog/inkscape-preferences.cpp:1171 msgid "The password used to log into Open Clip Art Library" msgstr "La contraseña utilizada para acceder a la librería Open Clip Art." -#: ../src/ui/dialog/inkscape-preferences.cpp:1153 +#: ../src/ui/dialog/inkscape-preferences.cpp:1172 msgid "Open Clip Art" msgstr "Open Clip Art" -#: ../src/ui/dialog/inkscape-preferences.cpp:1158 +#: ../src/ui/dialog/inkscape-preferences.cpp:1177 msgid "Behavior" msgstr "Comportamiento" -#: ../src/ui/dialog/inkscape-preferences.cpp:1162 +#: ../src/ui/dialog/inkscape-preferences.cpp:1181 msgid "_Simplification threshold:" msgstr "Umbral de _simplificación:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1163 +#: ../src/ui/dialog/inkscape-preferences.cpp:1182 msgid "" "How strong is the Node tool's Simplify command by default. If you invoke " "this command several times in quick succession, it will act more and more " @@ -19827,45 +19997,45 @@ msgstr "" "varias veces sucesivas rápidamente, actuará más y más agresivamente; al " "ejecutarlo después de una pausa volverá al umbral predeterminado." -#: ../src/ui/dialog/inkscape-preferences.cpp:1165 +#: ../src/ui/dialog/inkscape-preferences.cpp:1184 msgid "Color stock markers the same color as object" msgstr "Colorear los marcadores incluidos del mismo color que el objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:1166 +#: ../src/ui/dialog/inkscape-preferences.cpp:1185 msgid "Color custom markers the same color as object" msgstr "Colorear los marcadores personalizados del mismo color que el objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:1167 -#: ../src/ui/dialog/inkscape-preferences.cpp:1387 +#: ../src/ui/dialog/inkscape-preferences.cpp:1186 +#: ../src/ui/dialog/inkscape-preferences.cpp:1406 msgid "Update marker color when object color changes" msgstr "Actualizar el color del marcador cuando cambia el color del objeto" #. Selecting options -#: ../src/ui/dialog/inkscape-preferences.cpp:1170 +#: ../src/ui/dialog/inkscape-preferences.cpp:1189 msgid "Select in all layers" msgstr "Seleccionar en todas las capas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1171 +#: ../src/ui/dialog/inkscape-preferences.cpp:1190 msgid "Select only within current layer" msgstr "Solamente seleccionar dentro de la capa actual" -#: ../src/ui/dialog/inkscape-preferences.cpp:1172 +#: ../src/ui/dialog/inkscape-preferences.cpp:1191 msgid "Select in current layer and sublayers" msgstr "Seleccionar en la capa actual e inferiores" -#: ../src/ui/dialog/inkscape-preferences.cpp:1173 +#: ../src/ui/dialog/inkscape-preferences.cpp:1192 msgid "Ignore hidden objects and layers" msgstr "Ignorar objetos y capas ocultos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1174 +#: ../src/ui/dialog/inkscape-preferences.cpp:1193 msgid "Ignore locked objects and layers" msgstr "Ignorar objetos y capas bloqueados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1175 +#: ../src/ui/dialog/inkscape-preferences.cpp:1194 msgid "Deselect upon layer change" msgstr "Deseleccionar al cambiar de capa" -#: ../src/ui/dialog/inkscape-preferences.cpp:1178 +#: ../src/ui/dialog/inkscape-preferences.cpp:1197 msgid "" "Uncheck this to be able to keep the current objects selected when the " "current layer changes" @@ -19873,23 +20043,23 @@ msgstr "" "Desmarque esto para poder mantener los objetos seleccionados cuando cambie " "de capa" -#: ../src/ui/dialog/inkscape-preferences.cpp:1180 +#: ../src/ui/dialog/inkscape-preferences.cpp:1199 msgid "Ctrl+A, Tab, Shift+Tab" msgstr "Ctrl+A, Tab, Mayús+Tab" -#: ../src/ui/dialog/inkscape-preferences.cpp:1182 +#: ../src/ui/dialog/inkscape-preferences.cpp:1201 msgid "Make keyboard selection commands work on objects in all layers" msgstr "" "Hacer que los comandos de selección del teclado funcionen en los objetos de " "todas las capas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1184 +#: ../src/ui/dialog/inkscape-preferences.cpp:1203 msgid "Make keyboard selection commands work on objects in current layer only" msgstr "" "Hacer que los comandos de selección del teclado funcionen solamente en los " "objetos de la capa actual" -#: ../src/ui/dialog/inkscape-preferences.cpp:1186 +#: ../src/ui/dialog/inkscape-preferences.cpp:1205 msgid "" "Make keyboard selection commands work on objects in current layer and all " "its sublayers" @@ -19897,7 +20067,7 @@ msgstr "" "Hacer que los comandos de selección del teclado funcionen en los objetos de " "la capa actual y sus inferiores" -#: ../src/ui/dialog/inkscape-preferences.cpp:1188 +#: ../src/ui/dialog/inkscape-preferences.cpp:1207 msgid "" "Uncheck this to be able to select objects that are hidden (either by " "themselves or by being in a hidden layer)" @@ -19905,7 +20075,7 @@ msgstr "" "Desmarque esto para poder seleccionar objetos ocultos (tanto por sí mismos " "como por estar en una capa oculta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1190 +#: ../src/ui/dialog/inkscape-preferences.cpp:1209 msgid "" "Uncheck this to be able to select objects that are locked (either by " "themselves or by being in a locked layer)" @@ -19913,69 +20083,69 @@ msgstr "" "Desmarque esto para poder seleccionar objetos bloqueados (tanto por sí " "mismos como por estar en una capa bloqueada)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1192 +#: ../src/ui/dialog/inkscape-preferences.cpp:1211 msgid "Wrap when cycling objects in z-order" msgstr "Seguir desde el inicio al recorrer los objetos en orden-z" -#: ../src/ui/dialog/inkscape-preferences.cpp:1194 +#: ../src/ui/dialog/inkscape-preferences.cpp:1213 msgid "Alt+Scroll Wheel" msgstr "Alt+Girar rueda" -#: ../src/ui/dialog/inkscape-preferences.cpp:1196 +#: ../src/ui/dialog/inkscape-preferences.cpp:1215 msgid "Wrap around at start and end when cycling objects in z-order" msgstr "Seguir desde el inicio o el final al recorrer los objetos en orden-z" -#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1217 msgid "Selecting" msgstr "Selección" #. Transforms options -#: ../src/ui/dialog/inkscape-preferences.cpp:1201 -#: ../src/widgets/select-toolbar.cpp:557 +#: ../src/ui/dialog/inkscape-preferences.cpp:1220 +#: ../src/widgets/select-toolbar.cpp:564 msgid "Scale stroke width" msgstr "Escalar ancho de trazo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1202 +#: ../src/ui/dialog/inkscape-preferences.cpp:1221 msgid "Scale rounded corners in rectangles" msgstr "Escalar los ángulos redondeados en los rectángulos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1203 +#: ../src/ui/dialog/inkscape-preferences.cpp:1222 msgid "Transform gradients" msgstr "Transformar degradados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1204 +#: ../src/ui/dialog/inkscape-preferences.cpp:1223 msgid "Transform patterns" msgstr "Transformar patrones" -#: ../src/ui/dialog/inkscape-preferences.cpp:1206 +#: ../src/ui/dialog/inkscape-preferences.cpp:1225 msgid "Preserved" msgstr "Conservado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1209 -#: ../src/widgets/select-toolbar.cpp:558 +#: ../src/ui/dialog/inkscape-preferences.cpp:1228 +#: ../src/widgets/select-toolbar.cpp:565 msgid "When scaling objects, scale the stroke width by the same proportion" msgstr "Al escalar objetos, escalar el ancho del trazo en la misma proporción" -#: ../src/ui/dialog/inkscape-preferences.cpp:1211 -#: ../src/widgets/select-toolbar.cpp:569 +#: ../src/ui/dialog/inkscape-preferences.cpp:1230 +#: ../src/widgets/select-toolbar.cpp:576 msgid "When scaling rectangles, scale the radii of rounded corners" msgstr "Al escalar rectángulos, escalar los radios de los ángulos redondeados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1213 -#: ../src/widgets/select-toolbar.cpp:580 +#: ../src/ui/dialog/inkscape-preferences.cpp:1232 +#: ../src/widgets/select-toolbar.cpp:587 msgid "Move gradients (in fill or stroke) along with the objects" msgstr "Mover los degradados (en relleno o borde) junto con los objetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1215 -#: ../src/widgets/select-toolbar.cpp:591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1234 +#: ../src/widgets/select-toolbar.cpp:598 msgid "Move patterns (in fill or stroke) along with the objects" msgstr "Mover los patrones (en relleno o borde) junto con los objetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1216 +#: ../src/ui/dialog/inkscape-preferences.cpp:1235 msgid "Store transformation" msgstr "Guardar transformación" -#: ../src/ui/dialog/inkscape-preferences.cpp:1218 +#: ../src/ui/dialog/inkscape-preferences.cpp:1237 msgid "" "If possible, apply transformation to objects without adding a transform= " "attribute" @@ -19983,21 +20153,21 @@ msgstr "" "Aplicar la transformación a los objetos sin añadir un atributo «transform=» " "cuando sea posible" -#: ../src/ui/dialog/inkscape-preferences.cpp:1220 +#: ../src/ui/dialog/inkscape-preferences.cpp:1239 msgid "Always store transformation as a transform= attribute on objects" msgstr "" "Siempre guardar una transformación como un atributo «transform=» en los " "objetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1222 +#: ../src/ui/dialog/inkscape-preferences.cpp:1241 msgid "Transforms" msgstr "Transformaciones" -#: ../src/ui/dialog/inkscape-preferences.cpp:1226 +#: ../src/ui/dialog/inkscape-preferences.cpp:1245 msgid "Mouse _wheel scrolls by:" msgstr "La _rueda del ratón desplaza:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1227 +#: ../src/ui/dialog/inkscape-preferences.cpp:1246 msgid "" "One mouse wheel notch scrolls by this distance in screen pixels " "(horizontally with Shift)" @@ -20005,24 +20175,24 @@ msgstr "" "Un punto de la rueda desplaza esta distancia en píxeles (en horizontal con " "Mayús)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1228 +#: ../src/ui/dialog/inkscape-preferences.cpp:1247 msgid "Ctrl+arrows" msgstr "Ctrl+flechas" -#: ../src/ui/dialog/inkscape-preferences.cpp:1230 +#: ../src/ui/dialog/inkscape-preferences.cpp:1249 msgid "Sc_roll by:" msgstr "Desplaza_r:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1231 +#: ../src/ui/dialog/inkscape-preferences.cpp:1250 msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)" msgstr "" "Pulsación de Ctrl+flecha desplaza esta distancia (en píxeles de pantalla)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1233 +#: ../src/ui/dialog/inkscape-preferences.cpp:1252 msgid "_Acceleration:" msgstr "_Aceleración:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1234 +#: ../src/ui/dialog/inkscape-preferences.cpp:1253 msgid "" "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no " "acceleration)" @@ -20030,15 +20200,15 @@ msgstr "" "Al mantener pulsado Ctrl+flecha gradualmente de incrementará la velocidad de " "desplazamiento (0 = sin aceleración)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1235 +#: ../src/ui/dialog/inkscape-preferences.cpp:1254 msgid "Autoscrolling" msgstr "Autodesplazamiento" -#: ../src/ui/dialog/inkscape-preferences.cpp:1237 +#: ../src/ui/dialog/inkscape-preferences.cpp:1256 msgid "_Speed:" msgstr "_Velocidad:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1238 +#: ../src/ui/dialog/inkscape-preferences.cpp:1257 msgid "" "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn " "autoscroll off)" @@ -20046,12 +20216,12 @@ msgstr "" "La velocidad con la que el lienzo se desplaza cuando arrastra más allá del " "borde (0 desactiva el autodesplazamiento)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1240 -#: ../src/ui/dialog/tracedialog.cpp:521 ../src/ui/dialog/tracedialog.cpp:720 +#: ../src/ui/dialog/inkscape-preferences.cpp:1259 +#: ../src/ui/dialog/tracedialog.cpp:522 ../src/ui/dialog/tracedialog.cpp:721 msgid "_Threshold:" msgstr "_Umbral:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1241 +#: ../src/ui/dialog/inkscape-preferences.cpp:1260 msgid "" "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" @@ -20060,21 +20230,21 @@ msgstr "" "lienzo para activar el autodesplazamiento; positivo es fuera del lienzo, " "negativo es dentro del lienzo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1242 +#: ../src/ui/dialog/inkscape-preferences.cpp:1261 msgid "Mouse move pans when Space is pressed" msgstr "Al pulsar Espacio, el movimiento de ratón mueve la vista" -#: ../src/ui/dialog/inkscape-preferences.cpp:1244 +#: ../src/ui/dialog/inkscape-preferences.cpp:1263 msgid "When on, pressing and holding Space and dragging pans canvas" msgstr "" "Si se activa, mantener pulsada la barra espaciadora hace que el movimiento " "de ratón mueva el lienzo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1245 +#: ../src/ui/dialog/inkscape-preferences.cpp:1264 msgid "Mouse wheel zooms by default" msgstr "La rueda del ratón aumenta por defecto" -#: ../src/ui/dialog/inkscape-preferences.cpp:1247 +#: ../src/ui/dialog/inkscape-preferences.cpp:1266 msgid "" "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when " "off, it zooms with Ctrl and scrolls without Ctrl" @@ -20082,53 +20252,53 @@ msgstr "" "Si está activo, la rueda del ratón hace zoom sin Ctrl y mueve el lienzo con " "Ctrl. Si está desactivado hace zoom con Ctrl y mueve el lienzo sin Ctrl." -#: ../src/ui/dialog/inkscape-preferences.cpp:1248 +#: ../src/ui/dialog/inkscape-preferences.cpp:1267 msgid "Scrolling" msgstr "Desplazamiento" #. Snapping options -#: ../src/ui/dialog/inkscape-preferences.cpp:1251 +#: ../src/ui/dialog/inkscape-preferences.cpp:1270 msgid "Snap indicator" msgstr "Indicador de ajuste" -#: ../src/ui/dialog/inkscape-preferences.cpp:1253 +#: ../src/ui/dialog/inkscape-preferences.cpp:1272 msgid "Enable snap indicator" msgstr "Activar indicador de ajuste" -#: ../src/ui/dialog/inkscape-preferences.cpp:1255 +#: ../src/ui/dialog/inkscape-preferences.cpp:1274 msgid "After snapping, a symbol is drawn at the point that has snapped" msgstr "Después de ajustar se dibuja un símbolo en el punto que ha ajustado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1260 +#: ../src/ui/dialog/inkscape-preferences.cpp:1279 msgid "Snap indicator persistence (in seconds):" msgstr "Persistencia del indicador de ajuste (en segundos):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1261 +#: ../src/ui/dialog/inkscape-preferences.cpp:1280 msgid "" "Controls how long the snap indicator message will be shown, before it " "disappears" msgstr "Controla cuánto tiempo se muestra el mensaje del indicador de ajuste" -#: ../src/ui/dialog/inkscape-preferences.cpp:1263 +#: ../src/ui/dialog/inkscape-preferences.cpp:1282 msgid "What should snap" msgstr "Qué debe ajustarse" -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 +#: ../src/ui/dialog/inkscape-preferences.cpp:1284 msgid "Only snap the node closest to the pointer" msgstr "Solo ajustar el nodo más próximo al puntero." -#: ../src/ui/dialog/inkscape-preferences.cpp:1267 +#: ../src/ui/dialog/inkscape-preferences.cpp:1286 msgid "" "Only try to snap the node that is initially closest to the mouse pointer" msgstr "" "Solo intentar ajustar el nodo que, inicialmente, está más próximo al puntero " "del ratón." -#: ../src/ui/dialog/inkscape-preferences.cpp:1270 +#: ../src/ui/dialog/inkscape-preferences.cpp:1289 msgid "_Weight factor:" msgstr "Factor de _peso:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1271 +#: ../src/ui/dialog/inkscape-preferences.cpp:1290 msgid "" "When multiple snap solutions are found, then Inkscape can either prefer the " "closest transformation (when set to 0), or prefer the node that was " @@ -20138,11 +20308,11 @@ msgstr "" "transformación más cercana (si está a 0) o el nodo que originalmente estaba " "más cercano al puntero (si está a 1)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1273 +#: ../src/ui/dialog/inkscape-preferences.cpp:1292 msgid "Snap the mouse pointer when dragging a constrained knot" msgstr "Ajustar el puntero del ratón al arrastrar un nudo restringido" -#: ../src/ui/dialog/inkscape-preferences.cpp:1275 +#: ../src/ui/dialog/inkscape-preferences.cpp:1294 msgid "" "When dragging a knot along a constraint line, then snap the position of the " "mouse pointer instead of snapping the projection of the knot onto the " @@ -20152,15 +20322,15 @@ msgstr "" "posición del ratón en vez de ajustar la proyección del nudo sobre la línea " "de restricción" -#: ../src/ui/dialog/inkscape-preferences.cpp:1277 +#: ../src/ui/dialog/inkscape-preferences.cpp:1296 msgid "Delayed snap" msgstr "Ajuste retardado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1280 +#: ../src/ui/dialog/inkscape-preferences.cpp:1299 msgid "Delay (in seconds):" msgstr "Retardo (en segundos):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1281 +#: ../src/ui/dialog/inkscape-preferences.cpp:1300 msgid "" "Postpone snapping as long as the mouse is moving, and then wait an " "additional fraction of a second. This additional delay is specified here. " @@ -20170,16 +20340,16 @@ msgstr "" "de segundo adicional. Este retardo adicional se indica aquí. Si es cero o un " "número muy bajo, el ajuste será inmediato." -#: ../src/ui/dialog/inkscape-preferences.cpp:1283 +#: ../src/ui/dialog/inkscape-preferences.cpp:1302 msgid "Snapping" msgstr "Ajuste" #. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1288 +#: ../src/ui/dialog/inkscape-preferences.cpp:1307 msgid "_Arrow keys move by:" msgstr "Las flech_as mueven:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1289 +#: ../src/ui/dialog/inkscape-preferences.cpp:1308 msgid "" "Pressing an arrow key moves selected object(s) or node(s) by this distance" msgstr "" @@ -20187,28 +20357,28 @@ msgstr "" "esta distancia" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1292 +#: ../src/ui/dialog/inkscape-preferences.cpp:1311 msgid "> and < _scale by:" msgstr "> y < e_scalan:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1293 +#: ../src/ui/dialog/inkscape-preferences.cpp:1312 msgid "Pressing > or < scales selection up or down by this increment" msgstr "Al pulsar > ó < se aumenta o disminuye la selección en esta cantidad" -#: ../src/ui/dialog/inkscape-preferences.cpp:1295 +#: ../src/ui/dialog/inkscape-preferences.cpp:1314 msgid "_Inset/Outset by:" msgstr "Reduc_ir/ampliar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1296 +#: ../src/ui/dialog/inkscape-preferences.cpp:1315 msgid "Inset and Outset commands displace the path by this distance" msgstr "" "Los comandos «Reducir» y «Ampliar» desplazan el trayecto esta distancia" -#: ../src/ui/dialog/inkscape-preferences.cpp:1297 +#: ../src/ui/dialog/inkscape-preferences.cpp:1316 msgid "Compass-like display of angles" msgstr "Mostrar los ángulos como en una brújula" -#: ../src/ui/dialog/inkscape-preferences.cpp:1299 +#: ../src/ui/dialog/inkscape-preferences.cpp:1318 msgid "" "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 " @@ -20218,20 +20388,20 @@ msgstr "" "360, positivo hacia la derecha, de lo contrario el 0 está en oeste, con " "rango de -180 hasta 180, positivo hacia la izquierda" -#: ../src/ui/dialog/inkscape-preferences.cpp:1301 +#: ../src/ui/dialog/inkscape-preferences.cpp:1320 msgctxt "Rotation angle" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/inkscape-preferences.cpp:1305 +#: ../src/ui/dialog/inkscape-preferences.cpp:1324 msgid "_Rotation snaps every:" msgstr "_Rotación se ajusta cada:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1305 +#: ../src/ui/dialog/inkscape-preferences.cpp:1324 msgid "degrees" msgstr "grados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1306 +#: ../src/ui/dialog/inkscape-preferences.cpp:1325 msgid "" "Rotating with Ctrl pressed snaps every that much degrees; also, pressing " "[ or ] rotates by this amount" @@ -20239,11 +20409,11 @@ msgstr "" "Rotar con Ctrl pulsado ajusta cada tantos grados; pulsando «[» ó «]» también " "rota esta cantidad" -#: ../src/ui/dialog/inkscape-preferences.cpp:1307 +#: ../src/ui/dialog/inkscape-preferences.cpp:1326 msgid "Relative snapping of guideline angles" msgstr "Ajuste relativo de ángulo de líneas guía" -#: ../src/ui/dialog/inkscape-preferences.cpp:1309 +#: ../src/ui/dialog/inkscape-preferences.cpp:1328 msgid "" "When on, the snap angles when rotating a guideline will be relative to the " "original angle" @@ -20251,17 +20421,17 @@ msgstr "" "Si está activo, los ángulos de ajuste al rotar una línea guía serán " "relativos al ángulo original" -#: ../src/ui/dialog/inkscape-preferences.cpp:1311 +#: ../src/ui/dialog/inkscape-preferences.cpp:1330 msgid "_Zoom in/out by:" msgstr "_Alejar/acercar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1311 -#: ../src/ui/dialog/objects.cpp:1630 -#: ../src/ui/widget/filter-effect-chooser.cpp:23 +#: ../src/ui/dialog/inkscape-preferences.cpp:1330 +#: ../src/ui/dialog/objects.cpp:1662 +#: ../src/ui/widget/filter-effect-chooser.cpp:27 msgid "%" msgstr "%" -#: ../src/ui/dialog/inkscape-preferences.cpp:1312 +#: ../src/ui/dialog/inkscape-preferences.cpp:1331 msgid "" "Zoom tool click, +/- keys, and middle click zoom in and out by this " "multiplier" @@ -20269,44 +20439,44 @@ msgstr "" "Un clic de la herramienta Zoom, teclas +/-, y clic central amplían y reducen " "por este múltiplo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1313 +#: ../src/ui/dialog/inkscape-preferences.cpp:1332 msgid "Steps" msgstr "Pasos" #. Clones options -#: ../src/ui/dialog/inkscape-preferences.cpp:1316 +#: ../src/ui/dialog/inkscape-preferences.cpp:1335 msgid "Move in parallel" msgstr "Se mueven en paralelo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1318 +#: ../src/ui/dialog/inkscape-preferences.cpp:1337 msgid "Stay unmoved" msgstr "Permanecen inmóviles" -#: ../src/ui/dialog/inkscape-preferences.cpp:1320 +#: ../src/ui/dialog/inkscape-preferences.cpp:1339 msgid "Move according to transform" msgstr "Se mueven de acuerdo con la transformación" -#: ../src/ui/dialog/inkscape-preferences.cpp:1322 +#: ../src/ui/dialog/inkscape-preferences.cpp:1341 msgid "Are unlinked" msgstr "Se desconectan" -#: ../src/ui/dialog/inkscape-preferences.cpp:1324 +#: ../src/ui/dialog/inkscape-preferences.cpp:1343 msgid "Are deleted" msgstr "Se borran" -#: ../src/ui/dialog/inkscape-preferences.cpp:1327 +#: ../src/ui/dialog/inkscape-preferences.cpp:1346 msgid "Moving original: clones and linked offsets" msgstr "Mover original: clones y desvíos enlazados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1329 +#: ../src/ui/dialog/inkscape-preferences.cpp:1348 msgid "Clones are translated by the same vector as their original" msgstr "Los clones se trasladan por el mismo vector que su original." -#: ../src/ui/dialog/inkscape-preferences.cpp:1331 +#: ../src/ui/dialog/inkscape-preferences.cpp:1350 msgid "Clones preserve their positions when their original is moved" msgstr "Los clones conservan sus posiciones cuando se mueve su original." -#: ../src/ui/dialog/inkscape-preferences.cpp:1333 +#: ../src/ui/dialog/inkscape-preferences.cpp:1352 msgid "" "Each clone moves according to the value of its transform= attribute; for " "example, a rotated clone will move in a different direction than its original" @@ -20314,27 +20484,27 @@ msgstr "" "Cada clon se mueve de acuerdo con el valor de su atributo «transform=». Por " "ejemplo, un clon rotado se moverá en una dirección distinta a su original." -#: ../src/ui/dialog/inkscape-preferences.cpp:1334 +#: ../src/ui/dialog/inkscape-preferences.cpp:1353 msgid "Deleting original: clones" msgstr "Eliminar original: clones" -#: ../src/ui/dialog/inkscape-preferences.cpp:1336 +#: ../src/ui/dialog/inkscape-preferences.cpp:1355 msgid "Orphaned clones are converted to regular objects" msgstr "Los clones huérfanos se convierten en objetos normales." -#: ../src/ui/dialog/inkscape-preferences.cpp:1338 +#: ../src/ui/dialog/inkscape-preferences.cpp:1357 msgid "Orphaned clones are deleted along with their original" msgstr "Los clones huérfanos se borran junto con su original." -#: ../src/ui/dialog/inkscape-preferences.cpp:1340 +#: ../src/ui/dialog/inkscape-preferences.cpp:1359 msgid "Duplicating original+clones/linked offset" msgstr "Duplicar original+clones/desvíos enlazados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1342 +#: ../src/ui/dialog/inkscape-preferences.cpp:1361 msgid "Relink duplicated clones" msgstr "Reconectar clones duplicados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1344 +#: ../src/ui/dialog/inkscape-preferences.cpp:1363 msgid "" "When duplicating a selection containing both a clone and its original " "(possibly in groups), relink the duplicated clone to the duplicated original " @@ -20345,29 +20515,29 @@ msgstr "" "en vez de al original anterior." #. TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page -#: ../src/ui/dialog/inkscape-preferences.cpp:1347 +#: ../src/ui/dialog/inkscape-preferences.cpp:1366 msgid "Clones" msgstr "Clones" #. Clip paths and masks options -#: ../src/ui/dialog/inkscape-preferences.cpp:1350 +#: ../src/ui/dialog/inkscape-preferences.cpp:1369 msgid "When applying, use the topmost selected object as clippath/mask" msgstr "" "Al aplicar: utilizar el objeto seleccionado superior como trazo de recorte o " "máscara" -#: ../src/ui/dialog/inkscape-preferences.cpp:1352 +#: ../src/ui/dialog/inkscape-preferences.cpp:1371 msgid "" "Uncheck this to use the bottom selected object as the clipping path or mask" msgstr "" "Desmarque esto para utilizar el objeto seleccionado inferior como trayecto " "de recorte o máscara" -#: ../src/ui/dialog/inkscape-preferences.cpp:1353 +#: ../src/ui/dialog/inkscape-preferences.cpp:1372 msgid "Remove clippath/mask object after applying" msgstr "Eliminar el objeto de trazo de recorte o máscara después de aplicar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1355 +#: ../src/ui/dialog/inkscape-preferences.cpp:1374 msgid "" "After applying, remove the object used as the clipping path or mask from the " "drawing" @@ -20375,58 +20545,58 @@ msgstr "" "Elimina el objeto utilizado como trayecto de recorte o máscara del dibujo " "después de aplicarlo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1357 +#: ../src/ui/dialog/inkscape-preferences.cpp:1376 msgid "Before applying" msgstr "Antes de aplicar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1359 +#: ../src/ui/dialog/inkscape-preferences.cpp:1378 msgid "Do not group clipped/masked objects" msgstr "No agrupe objetos recortados/enmascarados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1360 +#: ../src/ui/dialog/inkscape-preferences.cpp:1379 msgid "Put every clipped/masked object in its own group" msgstr "Poner a cada objeto recortado/enmascarado en su propio grupo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1361 +#: ../src/ui/dialog/inkscape-preferences.cpp:1380 msgid "Put all clipped/masked objects into one group" msgstr "Poner todos los objetos recortados/enmascarados en un grupo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1364 +#: ../src/ui/dialog/inkscape-preferences.cpp:1383 msgid "Apply clippath/mask to every object" msgstr "Aplicar trayecto de recorte/máscara a cada objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:1367 +#: ../src/ui/dialog/inkscape-preferences.cpp:1386 msgid "Apply clippath/mask to groups containing single object" msgstr "" "Aplicar trayecto de recorte/máscara a grupos que contienen un solo objeto" -#: ../src/ui/dialog/inkscape-preferences.cpp:1370 +#: ../src/ui/dialog/inkscape-preferences.cpp:1389 msgid "Apply clippath/mask to group containing all objects" msgstr "" "Aplicar trayecto de recorte/máscara al grupo que contiene todos los objetos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1372 +#: ../src/ui/dialog/inkscape-preferences.cpp:1391 msgid "After releasing" msgstr "Después de liberar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1374 +#: ../src/ui/dialog/inkscape-preferences.cpp:1393 msgid "Ungroup automatically created groups" msgstr "Desagrupar grupos creados automáticamente" -#: ../src/ui/dialog/inkscape-preferences.cpp:1376 +#: ../src/ui/dialog/inkscape-preferences.cpp:1395 msgid "Ungroup groups created when setting clip/mask" msgstr "Desagrupar grupos creados al fijar recorte/máscara" -#: ../src/ui/dialog/inkscape-preferences.cpp:1378 +#: ../src/ui/dialog/inkscape-preferences.cpp:1397 msgid "Clippaths and masks" msgstr "Trazos de recorte y máscaras" -#: ../src/ui/dialog/inkscape-preferences.cpp:1381 +#: ../src/ui/dialog/inkscape-preferences.cpp:1400 msgid "Stroke Style Markers" msgstr "Marcadores de estilo de trazo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1383 -#: ../src/ui/dialog/inkscape-preferences.cpp:1385 +#: ../src/ui/dialog/inkscape-preferences.cpp:1402 +#: ../src/ui/dialog/inkscape-preferences.cpp:1404 msgid "" "Stroke color same as object, fill color either object fill color or marker " "fill color" @@ -20434,51 +20604,51 @@ msgstr "" "Color del trazo igual que el objeto, color de relleno es relleno del objeto " "o relleno del marcador" -#: ../src/ui/dialog/inkscape-preferences.cpp:1389 +#: ../src/ui/dialog/inkscape-preferences.cpp:1408 #: ../share/extensions/hershey.inx.h:27 msgid "Markers" msgstr "Marcadores" -#: ../src/ui/dialog/inkscape-preferences.cpp:1392 +#: ../src/ui/dialog/inkscape-preferences.cpp:1411 msgid "Document cleanup" msgstr "Limpieza de documento" -#: ../src/ui/dialog/inkscape-preferences.cpp:1393 -#: ../src/ui/dialog/inkscape-preferences.cpp:1395 +#: ../src/ui/dialog/inkscape-preferences.cpp:1412 +#: ../src/ui/dialog/inkscape-preferences.cpp:1414 msgid "Remove unused swatches when doing a document cleanup" msgstr "" "Eliminar cartas de colores sin utilizar al realizar una limpieza de documento" #. tooltip -#: ../src/ui/dialog/inkscape-preferences.cpp:1396 +#: ../src/ui/dialog/inkscape-preferences.cpp:1415 msgid "Cleanup" msgstr "Limpieza" -#: ../src/ui/dialog/inkscape-preferences.cpp:1404 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 msgid "Number of _Threads:" msgstr "Número de _hilos:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1404 -#: ../src/ui/dialog/inkscape-preferences.cpp:1928 +#: ../src/ui/dialog/inkscape-preferences.cpp:1423 +#: ../src/ui/dialog/inkscape-preferences.cpp:1963 msgid "(requires restart)" msgstr "(necesita reiniciar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1405 +#: ../src/ui/dialog/inkscape-preferences.cpp:1424 msgid "Configure number of processors/threads to use when rendering filters" msgstr "" "Configura la cantidad de procesadores/hilos que se utilizarán en filtros de " "renderizado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1409 +#: ../src/ui/dialog/inkscape-preferences.cpp:1428 msgid "Rendering _cache size:" msgstr "Tamaño de _cache de renderizado:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1409 +#: ../src/ui/dialog/inkscape-preferences.cpp:1428 msgctxt "mebibyte (2^20 bytes) abbreviation" msgid "MiB" msgstr "MiB" -#: ../src/ui/dialog/inkscape-preferences.cpp:1409 +#: ../src/ui/dialog/inkscape-preferences.cpp:1428 msgid "" "Set the amount of memory per document which can be used to store rendered " "parts of the drawing for later reuse; set to zero to disable caching" @@ -20489,37 +20659,37 @@ msgstr "" #. blur quality #. filter quality -#: ../src/ui/dialog/inkscape-preferences.cpp:1412 -#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1431 +#: ../src/ui/dialog/inkscape-preferences.cpp:1455 msgid "Best quality (slowest)" msgstr "Calidad óptima (la más lenta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1414 -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1433 +#: ../src/ui/dialog/inkscape-preferences.cpp:1457 msgid "Better quality (slower)" msgstr "Mejor calidad (más lenta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1416 -#: ../src/ui/dialog/inkscape-preferences.cpp:1440 +#: ../src/ui/dialog/inkscape-preferences.cpp:1435 +#: ../src/ui/dialog/inkscape-preferences.cpp:1459 msgid "Average quality" msgstr "Calidad media" -#: ../src/ui/dialog/inkscape-preferences.cpp:1418 -#: ../src/ui/dialog/inkscape-preferences.cpp:1442 +#: ../src/ui/dialog/inkscape-preferences.cpp:1437 +#: ../src/ui/dialog/inkscape-preferences.cpp:1461 msgid "Lower quality (faster)" msgstr "Calidad inferior (más rápida)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1420 -#: ../src/ui/dialog/inkscape-preferences.cpp:1444 +#: ../src/ui/dialog/inkscape-preferences.cpp:1439 +#: ../src/ui/dialog/inkscape-preferences.cpp:1463 msgid "Lowest quality (fastest)" msgstr "Calidad ínfima (la más rápida)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1423 +#: ../src/ui/dialog/inkscape-preferences.cpp:1442 msgid "Gaussian blur quality for display" msgstr "Calidad del desenfoque gaussiano para la visualización" -#: ../src/ui/dialog/inkscape-preferences.cpp:1425 -#: ../src/ui/dialog/inkscape-preferences.cpp:1449 +#: ../src/ui/dialog/inkscape-preferences.cpp:1444 +#: ../src/ui/dialog/inkscape-preferences.cpp:1468 msgid "" "Best quality, but display may be very slow at high zooms (bitmap export " "always uses best quality)" @@ -20527,128 +20697,128 @@ msgstr "" "Mejor calidad, pero la visualización podría ralentizarse a zooms altos (la " "exportación a mapa de bits siempre utiliza la mejor calidad)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1427 -#: ../src/ui/dialog/inkscape-preferences.cpp:1451 +#: ../src/ui/dialog/inkscape-preferences.cpp:1446 +#: ../src/ui/dialog/inkscape-preferences.cpp:1470 msgid "Better quality, but slower display" msgstr "Mejor calidad pero visualización más lenta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1429 -#: ../src/ui/dialog/inkscape-preferences.cpp:1453 +#: ../src/ui/dialog/inkscape-preferences.cpp:1448 +#: ../src/ui/dialog/inkscape-preferences.cpp:1472 msgid "Average quality, acceptable display speed" msgstr "Calidad media, velocidad de visualización aceptable" -#: ../src/ui/dialog/inkscape-preferences.cpp:1431 -#: ../src/ui/dialog/inkscape-preferences.cpp:1455 +#: ../src/ui/dialog/inkscape-preferences.cpp:1450 +#: ../src/ui/dialog/inkscape-preferences.cpp:1474 msgid "Lower quality (some artifacts), but display is faster" msgstr "Calidad baja (algunos objetos), pero la visualización es más rápida" -#: ../src/ui/dialog/inkscape-preferences.cpp:1433 -#: ../src/ui/dialog/inkscape-preferences.cpp:1457 +#: ../src/ui/dialog/inkscape-preferences.cpp:1452 +#: ../src/ui/dialog/inkscape-preferences.cpp:1476 msgid "Lowest quality (considerable artifacts), but display is fastest" msgstr "" "Peor calidad (bastantes objetos), pero la visualización es la más rápida" -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/inkscape-preferences.cpp:1466 msgid "Filter effects quality for display" msgstr "Calidad de efectos de filtro para visualización" #. build custom preferences tab -#: ../src/ui/dialog/inkscape-preferences.cpp:1459 -#: ../src/ui/dialog/print.cpp:214 +#: ../src/ui/dialog/inkscape-preferences.cpp:1478 +#: ../src/ui/dialog/print.cpp:215 msgid "Rendering" msgstr "Renderizar" #. Note: /options/bitmapoversample removed with Cairo renderer -#: ../src/ui/dialog/inkscape-preferences.cpp:1465 ../src/verbs.cpp:150 +#: ../src/ui/dialog/inkscape-preferences.cpp:1484 ../src/verbs.cpp:156 #: ../src/widgets/calligraphy-toolbar.cpp:626 msgid "Edit" msgstr "Editar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1466 +#: ../src/ui/dialog/inkscape-preferences.cpp:1485 msgid "Automatically reload bitmaps" msgstr "Recargar mapas de bits automáticamente" -#: ../src/ui/dialog/inkscape-preferences.cpp:1468 +#: ../src/ui/dialog/inkscape-preferences.cpp:1487 msgid "Automatically reload linked images when file is changed on disk" msgstr "" "Recargar las imágenes enlazadas automáticamente cuando el archivo cambie en " "el disco" -#: ../src/ui/dialog/inkscape-preferences.cpp:1470 +#: ../src/ui/dialog/inkscape-preferences.cpp:1489 msgid "_Bitmap editor:" msgstr "Editor de mapa de _bits:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1472 +#: ../src/ui/dialog/inkscape-preferences.cpp:1491 #: ../share/extensions/guillotine.inx.h:5 ../share/extensions/plotter.inx.h:65 #: ../share/extensions/print_win32_vector.inx.h:2 msgid "Export" msgstr "Exportar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1474 +#: ../src/ui/dialog/inkscape-preferences.cpp:1493 msgid "Default export _resolution:" msgstr "_Resolución de exportación predeterminada:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1475 +#: ../src/ui/dialog/inkscape-preferences.cpp:1494 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" msgstr "" "Resolución predeterminada (en puntos por pulgada) de mapa de bits en el " "diálogo de exportación" -#: ../src/ui/dialog/inkscape-preferences.cpp:1476 -#: ../src/ui/dialog/xml-tree.cpp:898 +#: ../src/ui/dialog/inkscape-preferences.cpp:1495 +#: ../src/ui/dialog/xml-tree.cpp:921 msgid "Create" msgstr "Crear" -#: ../src/ui/dialog/inkscape-preferences.cpp:1478 +#: ../src/ui/dialog/inkscape-preferences.cpp:1497 msgid "Resolution for Create Bitmap _Copy:" msgstr "Resolución para «Crear _copia del mapa de bits»:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1479 +#: ../src/ui/dialog/inkscape-preferences.cpp:1498 msgid "Resolution used by the Create Bitmap Copy command" msgstr "Resolución utilizada por el comando «Crear copia del mapa de bits»" -#: ../src/ui/dialog/inkscape-preferences.cpp:1482 +#: ../src/ui/dialog/inkscape-preferences.cpp:1501 msgid "Ask about linking and scaling when importing" msgstr "Preguntar acerca de enlaces y escalado al importar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1484 +#: ../src/ui/dialog/inkscape-preferences.cpp:1503 msgid "Pop-up linking and scaling dialog when importing bitmap image." msgstr "Mostrar el diálogo de enlazado y escalado al importar un mapa de bits." -#: ../src/ui/dialog/inkscape-preferences.cpp:1490 +#: ../src/ui/dialog/inkscape-preferences.cpp:1509 msgid "Bitmap link:" msgstr "Enlace mapa de bits:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1497 +#: ../src/ui/dialog/inkscape-preferences.cpp:1516 msgid "Bitmap scale (image-rendering):" msgstr "Escala mapa de bits (renderizado de imagen):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1502 +#: ../src/ui/dialog/inkscape-preferences.cpp:1521 msgid "Default _import resolution:" msgstr "Resolución de _importación predeterminada:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1503 +#: ../src/ui/dialog/inkscape-preferences.cpp:1522 msgid "Default bitmap resolution (in dots per inch) for bitmap import" msgstr "" "Resolución predeterminada de mapa de bits (en puntos por pulgada) para " "importación" -#: ../src/ui/dialog/inkscape-preferences.cpp:1504 +#: ../src/ui/dialog/inkscape-preferences.cpp:1523 msgid "Override file resolution" msgstr "Sobrescribir resolución del archivo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1506 +#: ../src/ui/dialog/inkscape-preferences.cpp:1525 msgid "Use default bitmap resolution in favor of information from file" msgstr "" "Usar la resolución predeterminada de mapa de bits en favor de la información " "del archivo" #. rendering outlines for pixmap image tags -#: ../src/ui/dialog/inkscape-preferences.cpp:1510 +#: ../src/ui/dialog/inkscape-preferences.cpp:1529 msgid "Images in Outline Mode" msgstr "Imágenes en modo contorno" -#: ../src/ui/dialog/inkscape-preferences.cpp:1511 +#: ../src/ui/dialog/inkscape-preferences.cpp:1530 msgid "" "When active will render images while in outline mode instead of a red box " "with an x. This is useful for manual tracing." @@ -20656,11 +20826,11 @@ msgstr "" "Mostrará las imágenes mientras se esté en modo contorno en lugar de un " "cuadrado rojo con una cruz. Esto es útil para el trazado manual." -#: ../src/ui/dialog/inkscape-preferences.cpp:1513 +#: ../src/ui/dialog/inkscape-preferences.cpp:1532 msgid "Bitmaps" msgstr "Mapas de bits" -#: ../src/ui/dialog/inkscape-preferences.cpp:1525 +#: ../src/ui/dialog/inkscape-preferences.cpp:1544 msgid "" "Select a file of predefined shortcuts to use. Any customized shortcuts you " "create will be added separately to " @@ -20668,25 +20838,25 @@ msgstr "" "Seleccione un archivo de atajos predefinidos. Cualquier atajo personalizado " "que cree será añadido por separado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1528 +#: ../src/ui/dialog/inkscape-preferences.cpp:1547 msgid "Shortcut file:" msgstr "Archivo de atajos:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1531 -#: ../src/ui/dialog/template-load-tab.cpp:41 +#: ../src/ui/dialog/inkscape-preferences.cpp:1550 +#: ../src/ui/dialog/template-load-tab.cpp:49 msgid "Search:" msgstr "Buscar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1543 +#: ../src/ui/dialog/inkscape-preferences.cpp:1562 msgid "Shortcut" msgstr "Atajo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1544 -#: ../src/ui/widget/page-sizer.cpp:270 +#: ../src/ui/dialog/inkscape-preferences.cpp:1563 +#: ../src/ui/widget/page-sizer.cpp:287 msgid "Description" msgstr "Descripción" -#: ../src/ui/dialog/inkscape-preferences.cpp:1587 +#: ../src/ui/dialog/inkscape-preferences.cpp:1618 msgid "" "Remove all your customized keyboard shortcuts, and revert to the shortcuts " "in the shortcut file listed above" @@ -20694,45 +20864,45 @@ msgstr "" "Eliminar todos sus atajos de teclado personalizados y revertir a los atajos " "del archivo indicado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1622 msgid "Import ..." msgstr "Importar..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1622 msgid "Import custom keyboard shortcuts from a file" msgstr "Importar atajos de teclado personalizados de un archivo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1594 +#: ../src/ui/dialog/inkscape-preferences.cpp:1625 msgid "Export ..." msgstr "Exportar..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1594 +#: ../src/ui/dialog/inkscape-preferences.cpp:1625 msgid "Export custom keyboard shortcuts to a file" msgstr "Exportar atajos de teclado personalizados a un archivo" -#: ../src/ui/dialog/inkscape-preferences.cpp:1604 +#: ../src/ui/dialog/inkscape-preferences.cpp:1635 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" #. Find this group in the tree -#: ../src/ui/dialog/inkscape-preferences.cpp:1767 +#: ../src/ui/dialog/inkscape-preferences.cpp:1798 msgid "Misc" msgstr "Misc" -#: ../src/ui/dialog/inkscape-preferences.cpp:1869 +#: ../src/ui/dialog/inkscape-preferences.cpp:1904 msgctxt "Spellchecker language" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/inkscape-preferences.cpp:1890 +#: ../src/ui/dialog/inkscape-preferences.cpp:1925 msgid "Set the main spell check language" msgstr "Fijar el idioma principal de comprobación ortográfica" -#: ../src/ui/dialog/inkscape-preferences.cpp:1893 +#: ../src/ui/dialog/inkscape-preferences.cpp:1928 msgid "Second language:" msgstr "Segundo idioma:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1894 +#: ../src/ui/dialog/inkscape-preferences.cpp:1929 msgid "" "Set the second spell check language; checking will only stop on words " "unknown in ALL chosen languages" @@ -20740,11 +20910,11 @@ msgstr "" "Fija el idioma secundario de la comprobación ortográfica; la comprobación " "solo se detendrá en palabras desconocidas en TODOS los idiomas elegidos." -#: ../src/ui/dialog/inkscape-preferences.cpp:1897 +#: ../src/ui/dialog/inkscape-preferences.cpp:1932 msgid "Third language:" msgstr "Tercer idioma:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1898 +#: ../src/ui/dialog/inkscape-preferences.cpp:1933 msgid "" "Set the third spell check language; checking will only stop on words unknown " "in ALL chosen languages" @@ -20752,32 +20922,32 @@ msgstr "" "Fija el idioma terciario de la comprobación ortográfica; la comprobación " "solo se detendrá en palabras desconocidas en TODOS los idiomas elegidos." -#: ../src/ui/dialog/inkscape-preferences.cpp:1900 +#: ../src/ui/dialog/inkscape-preferences.cpp:1935 msgid "Ignore words with digits" msgstr "Ignorar palabras con dígitos" -#: ../src/ui/dialog/inkscape-preferences.cpp:1902 +#: ../src/ui/dialog/inkscape-preferences.cpp:1937 msgid "Ignore words containing digits, such as \"R2D2\"" msgstr "Ignorar palabras con dígitos, por ejemplo: «R2D2»" -#: ../src/ui/dialog/inkscape-preferences.cpp:1904 +#: ../src/ui/dialog/inkscape-preferences.cpp:1939 msgid "Ignore words in ALL CAPITALS" msgstr "Ignorar palabras EN MAYÚSCULAS" -#: ../src/ui/dialog/inkscape-preferences.cpp:1906 +#: ../src/ui/dialog/inkscape-preferences.cpp:1941 msgid "Ignore words in all capitals, such as \"IUPAC\"" msgstr "" "Ignorar palabras que estén completamente en mayúsculas, por ejemplo: «UNED»" -#: ../src/ui/dialog/inkscape-preferences.cpp:1908 +#: ../src/ui/dialog/inkscape-preferences.cpp:1943 msgid "Spellcheck" msgstr "Comprobación ortográfica" -#: ../src/ui/dialog/inkscape-preferences.cpp:1928 +#: ../src/ui/dialog/inkscape-preferences.cpp:1963 msgid "Latency _skew:" msgstr "Inclinación de _latencia:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1929 +#: ../src/ui/dialog/inkscape-preferences.cpp:1964 msgid "" "Factor by which the event clock is skewed from the actual time (0.9766 on " "some systems)" @@ -20785,11 +20955,11 @@ msgstr "" "Factor por el que se desvía en reloj de eventos desde la hora actual (0.9766 " "en algunos sistemas)." -#: ../src/ui/dialog/inkscape-preferences.cpp:1931 +#: ../src/ui/dialog/inkscape-preferences.cpp:1966 msgid "Pre-render named icons" msgstr "Pregenerar iconos nombrados" -#: ../src/ui/dialog/inkscape-preferences.cpp:1933 +#: ../src/ui/dialog/inkscape-preferences.cpp:1968 msgid "" "When on, named icons will be rendered before displaying the ui. This is for " "working around bugs in GTK+ named icon notification" @@ -20797,159 +20967,159 @@ msgstr "" "Si está activo, los iconos nombrados se generarán antes de mostrar la UI. " "Esto es para evitar erratas en la notificación de iconos nombrados de GTK+." -#: ../src/ui/dialog/inkscape-preferences.cpp:1941 +#: ../src/ui/dialog/inkscape-preferences.cpp:1976 msgid "System info" msgstr "Información del sistema" -#: ../src/ui/dialog/inkscape-preferences.cpp:1945 +#: ../src/ui/dialog/inkscape-preferences.cpp:1980 msgid "User config: " msgstr "Configuración del usuario: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1945 +#: ../src/ui/dialog/inkscape-preferences.cpp:1980 msgid "Location of users configuration" msgstr "Localización de la configuración del usuario" -#: ../src/ui/dialog/inkscape-preferences.cpp:1949 +#: ../src/ui/dialog/inkscape-preferences.cpp:1984 msgid "User preferences: " msgstr "Preferencias del usuario:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1949 +#: ../src/ui/dialog/inkscape-preferences.cpp:1984 msgid "Location of the users preferences file" msgstr "Localización del archivo de preferencias del usuario" -#: ../src/ui/dialog/inkscape-preferences.cpp:1953 +#: ../src/ui/dialog/inkscape-preferences.cpp:1988 msgid "User extensions: " msgstr "Extensiones del usuario:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1953 +#: ../src/ui/dialog/inkscape-preferences.cpp:1988 msgid "Location of the users extensions" msgstr "Localización de las extensiones del usuario" -#: ../src/ui/dialog/inkscape-preferences.cpp:1957 +#: ../src/ui/dialog/inkscape-preferences.cpp:1992 msgid "User cache: " msgstr "Caché del usuario: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1957 +#: ../src/ui/dialog/inkscape-preferences.cpp:1992 msgid "Location of users cache" msgstr "Localización de la caché del usuario" -#: ../src/ui/dialog/inkscape-preferences.cpp:1965 +#: ../src/ui/dialog/inkscape-preferences.cpp:2000 msgid "Temporary files: " msgstr "Archivos temporales:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1965 +#: ../src/ui/dialog/inkscape-preferences.cpp:2000 msgid "Location of the temporary files used for autosave" msgstr "Localización de los archivos temporales usados para el autoguardado" -#: ../src/ui/dialog/inkscape-preferences.cpp:1969 +#: ../src/ui/dialog/inkscape-preferences.cpp:2004 msgid "Inkscape data: " msgstr "Datos de Inkscape:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1969 +#: ../src/ui/dialog/inkscape-preferences.cpp:2004 msgid "Location of Inkscape data" msgstr "Localización de los datos de Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1973 +#: ../src/ui/dialog/inkscape-preferences.cpp:2008 msgid "Inkscape extensions: " msgstr "Extensiones de Inkscape:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1973 +#: ../src/ui/dialog/inkscape-preferences.cpp:2008 msgid "Location of the Inkscape extensions" msgstr "Localización de las extensiones de Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1982 +#: ../src/ui/dialog/inkscape-preferences.cpp:2017 msgid "System data: " msgstr "Datos del sistema: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1982 +#: ../src/ui/dialog/inkscape-preferences.cpp:2017 msgid "Locations of system data" msgstr "Localizaciones de datos de sistema" -#: ../src/ui/dialog/inkscape-preferences.cpp:2006 +#: ../src/ui/dialog/inkscape-preferences.cpp:2041 msgid "Icon theme: " msgstr "Tema de iconos: " -#: ../src/ui/dialog/inkscape-preferences.cpp:2006 +#: ../src/ui/dialog/inkscape-preferences.cpp:2041 msgid "Locations of icon themes" msgstr "Localización de los temas de iconos" -#: ../src/ui/dialog/inkscape-preferences.cpp:2008 +#: ../src/ui/dialog/inkscape-preferences.cpp:2043 msgid "System" msgstr "Sistema" -#: ../src/ui/dialog/input.cpp:345 ../src/ui/dialog/input.cpp:366 -#: ../src/ui/dialog/input.cpp:1507 +#: ../src/ui/dialog/input.cpp:360 ../src/ui/dialog/input.cpp:381 +#: ../src/ui/dialog/input.cpp:1641 msgid "Disabled" msgstr "Desactivado" -#: ../src/ui/dialog/input.cpp:346 +#: ../src/ui/dialog/input.cpp:361 msgctxt "Input device" msgid "Screen" msgstr "Pantalla" -#: ../src/ui/dialog/input.cpp:347 ../src/ui/dialog/input.cpp:368 +#: ../src/ui/dialog/input.cpp:362 ../src/ui/dialog/input.cpp:383 msgid "Window" msgstr "Ventana" -#: ../src/ui/dialog/input.cpp:578 +#: ../src/ui/dialog/input.cpp:618 msgid "Test Area" msgstr "Área de pruebas" -#: ../src/ui/dialog/input.cpp:579 +#: ../src/ui/dialog/input.cpp:619 msgid "Axis" msgstr "Eje" -#: ../src/ui/dialog/input.cpp:642 ../share/extensions/svgcalendar.inx.h:2 +#: ../src/ui/dialog/input.cpp:708 ../share/extensions/svgcalendar.inx.h:2 msgid "Configuration" msgstr "Configuración" -#: ../src/ui/dialog/input.cpp:643 +#: ../src/ui/dialog/input.cpp:709 msgid "Hardware" msgstr "Hardware" -#: ../src/ui/dialog/input.cpp:666 +#: ../src/ui/dialog/input.cpp:732 msgid "Link:" msgstr "Enlace:" -#: ../src/ui/dialog/input.cpp:668 ../src/ui/dialog/input.cpp:669 -#: ../src/ui/dialog/input.cpp:1437 ../src/ui/widget/color-scales.cpp:43 +#: ../src/ui/dialog/input.cpp:742 ../src/ui/dialog/input.cpp:743 +#: ../src/ui/dialog/input.cpp:1571 ../src/ui/widget/color-scales.cpp:46 #: ../share/extensions/plotter.inx.h:24 msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/input.cpp:675 +#: ../src/ui/dialog/input.cpp:758 msgid "Axes count:" msgstr "Cantidad de ejes:" -#: ../src/ui/dialog/input.cpp:694 +#: ../src/ui/dialog/input.cpp:788 msgid "axis:" msgstr "eje:" -#: ../src/ui/dialog/input.cpp:707 +#: ../src/ui/dialog/input.cpp:812 msgid "Button count:" msgstr "Cantidad de botones:" -#: ../src/ui/dialog/input.cpp:881 +#: ../src/ui/dialog/input.cpp:1010 msgid "Tablet" msgstr "Tableta" -#: ../src/ui/dialog/input.cpp:910 ../src/ui/dialog/input.cpp:1794 +#: ../src/ui/dialog/input.cpp:1039 ../src/ui/dialog/input.cpp:1928 msgid "pad" msgstr "tableta" -#: ../src/ui/dialog/input.cpp:952 +#: ../src/ui/dialog/input.cpp:1081 msgid "_Use pressure-sensitive tablet (requires restart)" msgstr "_Utilizar una tableta sensible a la presión (necesita reiniciar)" -#: ../src/ui/dialog/input.cpp:957 +#: ../src/ui/dialog/input.cpp:1086 msgid "Axes" msgstr "Ejes" -#: ../src/ui/dialog/input.cpp:958 +#: ../src/ui/dialog/input.cpp:1087 msgid "Keys" msgstr "Teclas" -#: ../src/ui/dialog/input.cpp:1036 +#: ../src/ui/dialog/input.cpp:1170 msgid "" "A device can be 'Disabled', its co-ordinates mapped to the whole 'Screen', " "or to a single (usually focused) 'Window'" @@ -20957,315 +21127,315 @@ msgstr "" "Un dispositivo puede estar «Desactivado», sus coordenadas mapeadas a la " "«Pantalla» completa, o a una sola «Ventana» (normalmente enfocada)" -#: ../src/ui/dialog/input.cpp:1482 ../src/widgets/calligraphy-toolbar.cpp:578 +#: ../src/ui/dialog/input.cpp:1616 ../src/widgets/calligraphy-toolbar.cpp:578 #: ../src/widgets/spray-toolbar.cpp:311 ../src/widgets/spray-toolbar.cpp:427 #: ../src/widgets/spray-toolbar.cpp:476 ../src/widgets/tweak-toolbar.cpp:372 msgid "Pressure" msgstr "Presión" -#: ../src/ui/dialog/input.cpp:1482 +#: ../src/ui/dialog/input.cpp:1616 msgid "X tilt" msgstr "Inclinación X" -#: ../src/ui/dialog/input.cpp:1482 +#: ../src/ui/dialog/input.cpp:1616 msgid "Y tilt" msgstr "Inclinación Y" -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/widget/color-wheel-selector.cpp:25 +#: ../src/ui/dialog/input.cpp:1616 ../src/ui/widget/color-wheel-selector.cpp:29 msgid "Wheel" msgstr "Rueda" -#: ../src/ui/dialog/input.cpp:1491 +#: ../src/ui/dialog/input.cpp:1625 msgctxt "Input device axe" msgid "None" msgstr "Ninguno" -#: ../src/ui/dialog/knot-properties.cpp:50 +#: ../src/ui/dialog/knot-properties.cpp:59 msgid "Position X:" msgstr "Posición X:" -#: ../src/ui/dialog/knot-properties.cpp:57 +#: ../src/ui/dialog/knot-properties.cpp:66 msgid "Position Y:" msgstr "Posición Y:" -#: ../src/ui/dialog/knot-properties.cpp:111 +#: ../src/ui/dialog/knot-properties.cpp:120 msgid "Modify Knot Position" msgstr "Modificar posición del nudo" -#: ../src/ui/dialog/knot-properties.cpp:112 -#: ../src/ui/dialog/layer-properties.cpp:380 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:112 -#: ../src/ui/dialog/transformation.cpp:103 +#: ../src/ui/dialog/knot-properties.cpp:121 +#: ../src/ui/dialog/layer-properties.cpp:411 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:123 +#: ../src/ui/dialog/transformation.cpp:107 msgid "_Move" msgstr "_Mover" -#: ../src/ui/dialog/knot-properties.cpp:171 +#: ../src/ui/dialog/knot-properties.cpp:180 #, c-format msgid "Position X (%s):" msgstr "Posición X (%s):" -#: ../src/ui/dialog/knot-properties.cpp:172 +#: ../src/ui/dialog/knot-properties.cpp:181 #, c-format msgid "Position Y (%s):" msgstr "Posición Y (%s):" -#: ../src/ui/dialog/layer-properties.cpp:47 +#: ../src/ui/dialog/layer-properties.cpp:55 msgid "Layer name:" msgstr "Nombre de la capa:" -#: ../src/ui/dialog/layer-properties.cpp:121 +#: ../src/ui/dialog/layer-properties.cpp:136 msgid "Add layer" msgstr "Añadir capa" -#: ../src/ui/dialog/layer-properties.cpp:157 +#: ../src/ui/dialog/layer-properties.cpp:176 msgid "Above current" msgstr "Encima de la actual" -#: ../src/ui/dialog/layer-properties.cpp:161 +#: ../src/ui/dialog/layer-properties.cpp:180 msgid "Below current" msgstr "Debajo de la actual" -#: ../src/ui/dialog/layer-properties.cpp:164 +#: ../src/ui/dialog/layer-properties.cpp:183 msgid "As sublayer of current" msgstr "Como subcapa de la actual" -#: ../src/ui/dialog/layer-properties.cpp:321 +#: ../src/ui/dialog/layer-properties.cpp:352 msgid "Rename Layer" msgstr "Renombrar capa" #. TODO: find an unused layer number, forming name from _("Layer ") + "%d" -#: ../src/ui/dialog/layer-properties.cpp:323 -#: ../src/ui/dialog/layer-properties.cpp:379 ../src/verbs.cpp:188 -#: ../src/verbs.cpp:2399 +#: ../src/ui/dialog/layer-properties.cpp:354 +#: ../src/ui/dialog/layer-properties.cpp:410 ../src/verbs.cpp:194 +#: ../src/verbs.cpp:2369 msgid "Layer" msgstr "Capa" -#: ../src/ui/dialog/layer-properties.cpp:324 +#: ../src/ui/dialog/layer-properties.cpp:355 msgid "_Rename" msgstr "_Renombrar" -#: ../src/ui/dialog/layer-properties.cpp:337 ../src/ui/dialog/layers.cpp:750 +#: ../src/ui/dialog/layer-properties.cpp:368 ../src/ui/dialog/layers.cpp:758 msgid "Rename layer" msgstr "Renombrar capa" #. TRANSLATORS: This means "The layer has been renamed" -#: ../src/ui/dialog/layer-properties.cpp:339 +#: ../src/ui/dialog/layer-properties.cpp:370 msgid "Renamed layer" msgstr "Capa renombrada" -#: ../src/ui/dialog/layer-properties.cpp:343 +#: ../src/ui/dialog/layer-properties.cpp:374 msgid "Add Layer" msgstr "Añadir capa" -#: ../src/ui/dialog/layer-properties.cpp:349 +#: ../src/ui/dialog/layer-properties.cpp:380 msgid "_Add" msgstr "_Añadir" -#: ../src/ui/dialog/layer-properties.cpp:373 +#: ../src/ui/dialog/layer-properties.cpp:404 msgid "New layer created." msgstr "Se ha creado una capa nueva." -#: ../src/ui/dialog/layer-properties.cpp:377 +#: ../src/ui/dialog/layer-properties.cpp:408 msgid "Move to Layer" msgstr "Mover a capa" -#: ../src/ui/dialog/layers.cpp:517 ../src/ui/widget/layer-selector.cpp:602 +#: ../src/ui/dialog/layers.cpp:525 ../src/ui/widget/layer-selector.cpp:612 msgid "Unhide layer" msgstr "Mostrar capa" -#: ../src/ui/dialog/layers.cpp:517 ../src/ui/widget/layer-selector.cpp:602 +#: ../src/ui/dialog/layers.cpp:525 ../src/ui/widget/layer-selector.cpp:612 msgid "Hide layer" msgstr "Ocultar capa" -#: ../src/ui/dialog/layers.cpp:528 ../src/ui/widget/layer-selector.cpp:594 +#: ../src/ui/dialog/layers.cpp:536 ../src/ui/widget/layer-selector.cpp:604 msgid "Lock layer" msgstr "Bloquear capa" -#: ../src/ui/dialog/layers.cpp:528 ../src/ui/widget/layer-selector.cpp:594 +#: ../src/ui/dialog/layers.cpp:536 ../src/ui/widget/layer-selector.cpp:604 msgid "Unlock layer" msgstr "Desbloquear capa" -#: ../src/ui/dialog/layers.cpp:616 ../src/ui/dialog/objects.cpp:831 -#: ../src/verbs.cpp:1458 +#: ../src/ui/dialog/layers.cpp:624 ../src/ui/dialog/objects.cpp:869 +#: ../src/verbs.cpp:1429 msgid "Toggle layer solo" msgstr "Conmutar solo esta capa" -#: ../src/ui/dialog/layers.cpp:619 ../src/ui/dialog/objects.cpp:834 -#: ../src/verbs.cpp:1482 +#: ../src/ui/dialog/layers.cpp:627 ../src/ui/dialog/objects.cpp:872 +#: ../src/verbs.cpp:1453 msgid "Lock other layers" msgstr "Bloquear otras capas" -#: ../src/ui/dialog/layers.cpp:722 +#: ../src/ui/dialog/layers.cpp:730 msgid "Move layer" msgstr "Mover capa" -#: ../src/ui/dialog/layers.cpp:880 +#: ../src/ui/dialog/layers.cpp:892 msgctxt "Layers" msgid "New" msgstr "Nueva" -#: ../src/ui/dialog/layers.cpp:885 +#: ../src/ui/dialog/layers.cpp:897 msgctxt "Layers" msgid "Bot" msgstr "Inf" -#: ../src/ui/dialog/layers.cpp:891 +#: ../src/ui/dialog/layers.cpp:903 msgctxt "Layers" msgid "Dn" msgstr "Abj" -#: ../src/ui/dialog/layers.cpp:897 +#: ../src/ui/dialog/layers.cpp:909 msgctxt "Layers" msgid "Up" msgstr "Arr" -#: ../src/ui/dialog/layers.cpp:903 +#: ../src/ui/dialog/layers.cpp:915 msgctxt "Layers" msgid "Top" msgstr "Sup" -#: ../src/ui/dialog/livepatheffect-add.cpp:31 +#: ../src/ui/dialog/livepatheffect-add.cpp:32 msgid "Add Path Effect" msgstr "Añadir efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:111 +#: ../src/ui/dialog/livepatheffect-editor.cpp:119 msgid "Add path effect" msgstr "Añadir efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:115 +#: ../src/ui/dialog/livepatheffect-editor.cpp:123 msgid "Delete current path effect" msgstr "Borrar efecto de trayecto actual" -#: ../src/ui/dialog/livepatheffect-editor.cpp:119 +#: ../src/ui/dialog/livepatheffect-editor.cpp:127 msgid "Raise the current path effect" msgstr "Elevar el efecto de trayecto actual" -#: ../src/ui/dialog/livepatheffect-editor.cpp:123 +#: ../src/ui/dialog/livepatheffect-editor.cpp:131 msgid "Lower the current path effect" msgstr "Bajar el efecto de trayecto actual" -#: ../src/ui/dialog/livepatheffect-editor.cpp:289 +#: ../src/ui/dialog/livepatheffect-editor.cpp:298 msgid "Unknown effect is applied" msgstr "Se ha aplicado un efecto desconocido" -#: ../src/ui/dialog/livepatheffect-editor.cpp:292 +#: ../src/ui/dialog/livepatheffect-editor.cpp:301 msgid "Click button to add an effect" msgstr "Pulse el botón para añadir un efecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:307 +#: ../src/ui/dialog/livepatheffect-editor.cpp:316 msgid "Click add button to convert clone" msgstr "Pulse el botón «Añadir» para convertir el clon" -#: ../src/ui/dialog/livepatheffect-editor.cpp:312 -#: ../src/ui/dialog/livepatheffect-editor.cpp:316 +#: ../src/ui/dialog/livepatheffect-editor.cpp:321 #: ../src/ui/dialog/livepatheffect-editor.cpp:325 +#: ../src/ui/dialog/livepatheffect-editor.cpp:334 msgid "Select a path or shape" msgstr "Seleccione un trayecto o una forma" -#: ../src/ui/dialog/livepatheffect-editor.cpp:321 +#: ../src/ui/dialog/livepatheffect-editor.cpp:330 msgid "Only one item can be selected" msgstr "Solamente debe estar seleccionado un elemento" -#: ../src/ui/dialog/livepatheffect-editor.cpp:353 +#: ../src/ui/dialog/livepatheffect-editor.cpp:362 msgid "Unknown effect" msgstr "Efecto desconocido" -#: ../src/ui/dialog/livepatheffect-editor.cpp:429 +#: ../src/ui/dialog/livepatheffect-editor.cpp:438 msgid "Create and apply path effect" msgstr "Crear y aplicar un efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:469 +#: ../src/ui/dialog/livepatheffect-editor.cpp:478 msgid "Create and apply Clone original path effect" msgstr "Crear y aplicar el efecto de «Clonar trayecto original»" -#: ../src/ui/dialog/livepatheffect-editor.cpp:497 +#: ../src/ui/dialog/livepatheffect-editor.cpp:500 msgid "Remove path effect" msgstr "Eliminar efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:515 +#: ../src/ui/dialog/livepatheffect-editor.cpp:518 msgid "Move path effect up" msgstr "Elevar el efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:532 +#: ../src/ui/dialog/livepatheffect-editor.cpp:535 msgid "Move path effect down" msgstr "Bajar el efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:587 +#: ../src/ui/dialog/livepatheffect-editor.cpp:574 msgid "Activate path effect" msgstr "Activar el efecto de trayecto" -#: ../src/ui/dialog/livepatheffect-editor.cpp:587 +#: ../src/ui/dialog/livepatheffect-editor.cpp:574 msgid "Deactivate path effect" msgstr "Desactivar el efecto de trayecto" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:43 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:53 msgid "Radius (pixels):" msgstr "Radio (píxeles):" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:55 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:65 msgid "Chamfer subdivisions:" msgstr "Subdivisiones del chaflán:" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:126 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:136 msgid "Modify Fillet-Chamfer" msgstr "Modificar filete-chaflán" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:127 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:137 msgid "_Modify" msgstr "_Modificar" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:191 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:201 msgid "Radius" msgstr "Radio" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:193 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:203 msgid "Radius approximated" msgstr "Radio aproximado" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:196 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:206 msgid "Knot distance" msgstr "_Distancia de nudo" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:203 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:213 msgid "Position (%):" msgstr "Posición (%):" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:206 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:216 msgid "%1:" msgstr "%1:" -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:111 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:122 msgid "Modify Node Position" msgstr "Modificar posición de nodo" -#: ../src/ui/dialog/memory.cpp:97 +#: ../src/ui/dialog/memory.cpp:96 msgid "Heap" msgstr "Montón" -#: ../src/ui/dialog/memory.cpp:98 +#: ../src/ui/dialog/memory.cpp:97 msgid "In Use" msgstr "En uso" #. TRANSLATORS: "Slack" refers to memory which is in the heap but currently unused. #. More typical usage is to call this memory "free" rather than "slack". -#: ../src/ui/dialog/memory.cpp:101 +#: ../src/ui/dialog/memory.cpp:100 msgid "Slack" msgstr "Slack" -#: ../src/ui/dialog/memory.cpp:102 +#: ../src/ui/dialog/memory.cpp:101 msgid "Total" msgstr "Total" -#: ../src/ui/dialog/memory.cpp:142 ../src/ui/dialog/memory.cpp:148 -#: ../src/ui/dialog/memory.cpp:155 ../src/ui/dialog/memory.cpp:187 +#: ../src/ui/dialog/memory.cpp:141 ../src/ui/dialog/memory.cpp:147 +#: ../src/ui/dialog/memory.cpp:154 ../src/ui/dialog/memory.cpp:186 msgid "Unknown" msgstr "Desconocido" -#: ../src/ui/dialog/memory.cpp:168 +#: ../src/ui/dialog/memory.cpp:167 msgid "Combined" msgstr "Combinada" -#: ../src/ui/dialog/memory.cpp:210 +#: ../src/ui/dialog/memory.cpp:209 msgid "Recalculate" msgstr "Recalcular" @@ -21285,73 +21455,73 @@ msgstr "Iniciada la captura de registro" msgid "Log capture stopped." msgstr "Detenida la captrua de registro" -#: ../src/ui/dialog/new-from-template.cpp:26 +#: ../src/ui/dialog/new-from-template.cpp:27 msgid "Create from template" msgstr "Crear desde plantilla" -#: ../src/ui/dialog/new-from-template.cpp:28 +#: ../src/ui/dialog/new-from-template.cpp:29 msgid "New From Template" msgstr "Nuevo desde plantilla" -#: ../src/ui/dialog/object-attributes.cpp:44 +#: ../src/ui/dialog/object-attributes.cpp:47 msgid "Href:" msgstr "Href:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkRoleAttribute #. Identifies the type of the related resource with an absolute URI -#: ../src/ui/dialog/object-attributes.cpp:49 +#: ../src/ui/dialog/object-attributes.cpp:52 msgid "Role:" msgstr "Role:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkArcRoleAttribute #. For situations where the nature/role alone isn't enough, this offers an additional URI defining the purpose of the link. -#: ../src/ui/dialog/object-attributes.cpp:52 +#: ../src/ui/dialog/object-attributes.cpp:55 msgid "Arcrole:" msgstr "Arcrole:" -#: ../src/ui/dialog/object-attributes.cpp:55 +#: ../src/ui/dialog/object-attributes.cpp:58 #: ../share/extensions/polyhedron_3d.inx.h:47 msgid "Show:" msgstr "Mostrar:" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkActuateAttribute -#: ../src/ui/dialog/object-attributes.cpp:57 +#: ../src/ui/dialog/object-attributes.cpp:60 msgid "Actuate:" msgstr "Actuar:" -#: ../src/ui/dialog/object-attributes.cpp:62 +#: ../src/ui/dialog/object-attributes.cpp:65 msgid "URL:" msgstr "URL:" -#: ../src/ui/dialog/object-attributes.cpp:67 +#: ../src/ui/dialog/object-attributes.cpp:70 msgid "Image Rendering:" msgstr "Renderizado de imagen:" -#: ../src/ui/dialog/object-properties.cpp:50 -#: ../src/ui/dialog/object-properties.cpp:308 -#: ../src/ui/dialog/object-properties.cpp:379 -#: ../src/ui/dialog/object-properties.cpp:386 +#: ../src/ui/dialog/object-properties.cpp:58 +#: ../src/ui/dialog/object-properties.cpp:399 +#: ../src/ui/dialog/object-properties.cpp:470 +#: ../src/ui/dialog/object-properties.cpp:477 msgid "_ID:" msgstr "_ID:" -#: ../src/ui/dialog/object-properties.cpp:52 +#: ../src/ui/dialog/object-properties.cpp:60 msgid "_Title:" msgstr "_Título:" -#: ../src/ui/dialog/object-properties.cpp:53 +#: ../src/ui/dialog/object-properties.cpp:61 msgid "_Image Rendering:" msgstr "Renderizado de _imagen:" -#: ../src/ui/dialog/object-properties.cpp:54 +#: ../src/ui/dialog/object-properties.cpp:62 msgid "_Hide" msgstr "_Ocultar" -#: ../src/ui/dialog/object-properties.cpp:55 +#: ../src/ui/dialog/object-properties.cpp:63 msgid "L_ock" msgstr "B_loquear" #. Create the entry box for the object id -#: ../src/ui/dialog/object-properties.cpp:116 +#: ../src/ui/dialog/object-properties.cpp:139 msgid "" "The id= attribute (only letters, digits, and the characters .-_: allowed)" msgstr "" @@ -21359,16 +21529,16 @@ msgstr "" "_:»)" #. Create the entry box for the object label -#: ../src/ui/dialog/object-properties.cpp:137 +#: ../src/ui/dialog/object-properties.cpp:174 msgid "A freeform label for the object" msgstr "Una etiqueta libre para el objeto" #. Create the frame for the object description -#: ../src/ui/dialog/object-properties.cpp:170 +#: ../src/ui/dialog/object-properties.cpp:225 msgid "_Description:" msgstr "_Descripción:" -#: ../src/ui/dialog/object-properties.cpp:199 +#: ../src/ui/dialog/object-properties.cpp:260 msgid "" "The 'image-rendering' property can influence how a bitmap is up-scaled:\n" "\t'auto' no preference;\n" @@ -21386,165 +21556,165 @@ msgstr "" "1.1 y no todos los navegadores se adaptan a esta interpretación." #. Hide -#: ../src/ui/dialog/object-properties.cpp:222 +#: ../src/ui/dialog/object-properties.cpp:293 msgid "Check to make the object invisible" msgstr "Marcar para hacer el objeto invisible" #. Lock #. TRANSLATORS: "Lock" is a verb here -#: ../src/ui/dialog/object-properties.cpp:231 +#: ../src/ui/dialog/object-properties.cpp:309 msgid "Check to make the object insensitive (not selectable by mouse)" msgstr "" "Marcar para hacer el objeto insensible (no se puedo seleccionar con el ratón)" #. Button for setting the object's id, label, title and description. -#: ../src/ui/dialog/object-properties.cpp:240 ../src/verbs.cpp:2765 -#: ../src/verbs.cpp:2771 +#: ../src/ui/dialog/object-properties.cpp:325 ../src/verbs.cpp:2727 +#: ../src/verbs.cpp:2733 msgid "_Set" msgstr "_Aplicar" #. Create the frame for interactivity options -#: ../src/ui/dialog/object-properties.cpp:248 +#: ../src/ui/dialog/object-properties.cpp:339 msgid "_Interactivity" msgstr "_Interactividad" -#: ../src/ui/dialog/object-properties.cpp:295 -#: ../src/ui/dialog/object-properties.cpp:300 +#: ../src/ui/dialog/object-properties.cpp:386 +#: ../src/ui/dialog/object-properties.cpp:391 msgid "Ref" msgstr "Ref" -#: ../src/ui/dialog/object-properties.cpp:381 +#: ../src/ui/dialog/object-properties.cpp:472 msgid "Id invalid! " msgstr "ID no válido " -#: ../src/ui/dialog/object-properties.cpp:383 +#: ../src/ui/dialog/object-properties.cpp:474 msgid "Id exists! " msgstr "El ID existe " -#: ../src/ui/dialog/object-properties.cpp:389 +#: ../src/ui/dialog/object-properties.cpp:480 msgid "Set object ID" msgstr "Fijar ID del objeto" -#: ../src/ui/dialog/object-properties.cpp:403 +#: ../src/ui/dialog/object-properties.cpp:494 msgid "Set object label" msgstr "Fijar etiqueta del objeto" -#: ../src/ui/dialog/object-properties.cpp:409 +#: ../src/ui/dialog/object-properties.cpp:500 msgid "Set object title" msgstr "Fijar título del objeto" -#: ../src/ui/dialog/object-properties.cpp:418 +#: ../src/ui/dialog/object-properties.cpp:509 msgid "Set object description" msgstr "Fijar descripción del objeto" -#: ../src/ui/dialog/object-properties.cpp:444 +#: ../src/ui/dialog/object-properties.cpp:535 msgid "Set image rendering option" msgstr "Ajustar opción de renderizado de imágenes" -#: ../src/ui/dialog/object-properties.cpp:463 +#: ../src/ui/dialog/object-properties.cpp:554 msgid "Lock object" msgstr "Bloquear objeto" -#: ../src/ui/dialog/object-properties.cpp:463 +#: ../src/ui/dialog/object-properties.cpp:554 msgid "Unlock object" msgstr "Desbloquear objeto" -#: ../src/ui/dialog/object-properties.cpp:479 +#: ../src/ui/dialog/object-properties.cpp:570 msgid "Hide object" msgstr "Ocultar objeto" -#: ../src/ui/dialog/object-properties.cpp:479 +#: ../src/ui/dialog/object-properties.cpp:570 msgid "Unhide object" msgstr "Mostrar objeto" -#: ../src/ui/dialog/objects.cpp:861 +#: ../src/ui/dialog/objects.cpp:899 msgid "Unhide objects" msgstr "Mostrar objetos" -#: ../src/ui/dialog/objects.cpp:861 +#: ../src/ui/dialog/objects.cpp:899 msgid "Hide objects" msgstr "Ocultar objetos" -#: ../src/ui/dialog/objects.cpp:881 +#: ../src/ui/dialog/objects.cpp:919 msgid "Lock objects" msgstr "Bloquear objetos" -#: ../src/ui/dialog/objects.cpp:881 +#: ../src/ui/dialog/objects.cpp:919 msgid "Unlock objects" msgstr "Desbloquear objetos" -#: ../src/ui/dialog/objects.cpp:893 +#: ../src/ui/dialog/objects.cpp:931 msgid "Layer to group" msgstr "Capa a grupo" -#: ../src/ui/dialog/objects.cpp:893 +#: ../src/ui/dialog/objects.cpp:931 msgid "Group to layer" msgstr "Grupo a capa" -#: ../src/ui/dialog/objects.cpp:1091 +#: ../src/ui/dialog/objects.cpp:1129 msgid "Moved objects" msgstr "Objetos movidos" -#: ../src/ui/dialog/objects.cpp:1340 ../src/ui/dialog/tags.cpp:839 -#: ../src/ui/dialog/tags.cpp:846 +#: ../src/ui/dialog/objects.cpp:1378 ../src/ui/dialog/tags.cpp:853 +#: ../src/ui/dialog/tags.cpp:860 msgid "Rename object" msgstr "Renombrar objeto" -#: ../src/ui/dialog/objects.cpp:1447 +#: ../src/ui/dialog/objects.cpp:1484 msgid "Set object highlight color" msgstr "Fijar color de realce de objetos" -#: ../src/ui/dialog/objects.cpp:1457 +#: ../src/ui/dialog/objects.cpp:1494 msgid "Set object opacity" msgstr "Fijar opacidad de objetos" -#: ../src/ui/dialog/objects.cpp:1486 +#: ../src/ui/dialog/objects.cpp:1527 msgid "Set object blend mode" msgstr "Fijar modo de mezcla de objetos" -#: ../src/ui/dialog/objects.cpp:1555 +#: ../src/ui/dialog/objects.cpp:1590 msgid "Set object blur" msgstr "Fijar difuminado de objetos" -#: ../src/ui/dialog/objects.cpp:1621 +#: ../src/ui/dialog/objects.cpp:1653 msgctxt "Visibility" msgid "V" msgstr "V" -#: ../src/ui/dialog/objects.cpp:1622 +#: ../src/ui/dialog/objects.cpp:1654 msgctxt "Lock" msgid "L" msgstr "B" -#: ../src/ui/dialog/objects.cpp:1623 +#: ../src/ui/dialog/objects.cpp:1655 msgctxt "Type" msgid "T" msgstr "T" -#: ../src/ui/dialog/objects.cpp:1624 +#: ../src/ui/dialog/objects.cpp:1656 msgctxt "Clip and mask" msgid "CM" msgstr "CM" -#: ../src/ui/dialog/objects.cpp:1625 +#: ../src/ui/dialog/objects.cpp:1657 msgctxt "Highlight" msgid "HL" msgstr "HL" -#: ../src/ui/dialog/objects.cpp:1626 +#: ../src/ui/dialog/objects.cpp:1658 msgid "Label" msgstr "Etiqueta" #. In order to get tooltips on header, we must create our own label. -#: ../src/ui/dialog/objects.cpp:1664 +#: ../src/ui/dialog/objects.cpp:1700 msgid "Toggle visibility of Layer, Group, or Object." msgstr "Conmutar visibilidad de capa, grupo u objeto." -#: ../src/ui/dialog/objects.cpp:1677 +#: ../src/ui/dialog/objects.cpp:1713 msgid "Toggle lock of Layer, Group, or Object." msgstr "Conmutar bloqueo de capa, grupo u objeto." -#: ../src/ui/dialog/objects.cpp:1689 +#: ../src/ui/dialog/objects.cpp:1725 msgid "" "Type: Layer, Group, or Object. Clicking on Layer or Group icon, toggles " "between the two types." @@ -21552,11 +21722,11 @@ msgstr "" "Tipo: capa, grupo u objeto. Pulsar sobre los iconos de capa o grupo conmuta " "entre los dos tipos." -#: ../src/ui/dialog/objects.cpp:1708 +#: ../src/ui/dialog/objects.cpp:1744 msgid "Is object clipped and/or masked?" msgstr "¿El objeto está recortado o enmascarado?" -#: ../src/ui/dialog/objects.cpp:1719 +#: ../src/ui/dialog/objects.cpp:1755 msgid "" "Highlight color of outline in Node tool. Click to set. If alpha is zero, use " "inherited color." @@ -21564,7 +21734,7 @@ msgstr "" "Color de realce del contorno en la herramienta Nodo. Pulsar para activar. Si " "alpha es cero se usará el color heredado." -#: ../src/ui/dialog/objects.cpp:1730 +#: ../src/ui/dialog/objects.cpp:1766 msgid "" "Layer/Group/Object label (inkscape:label). Double-click to set. Default " "value is object 'id'." @@ -21572,127 +21742,127 @@ msgstr "" "Etiqueta de capa/grupo/objeto (inkscape:label). Doble-clic para fijar. Valor " "predeterminado es el 'id' del objeto." -#: ../src/ui/dialog/objects.cpp:1818 +#: ../src/ui/dialog/objects.cpp:1865 msgid "Add layer..." msgstr "Añadir capa..." -#: ../src/ui/dialog/objects.cpp:1825 +#: ../src/ui/dialog/objects.cpp:1872 msgid "Remove object" msgstr "Eliminar objeto" -#: ../src/ui/dialog/objects.cpp:1833 +#: ../src/ui/dialog/objects.cpp:1880 msgid "Move To Bottom" msgstr "Bajar al fondo" -#: ../src/ui/dialog/objects.cpp:1857 +#: ../src/ui/dialog/objects.cpp:1904 msgid "Move To Top" msgstr "Mover a superior" -#: ../src/ui/dialog/objects.cpp:1865 +#: ../src/ui/dialog/objects.cpp:1912 msgid "Collapse All" msgstr "Colapsar todo" -#: ../src/ui/dialog/objects.cpp:1879 +#: ../src/ui/dialog/objects.cpp:1926 msgid "Rename" msgstr "Renombrar" -#: ../src/ui/dialog/objects.cpp:1885 +#: ../src/ui/dialog/objects.cpp:1932 msgid "Solo" msgstr "Solo" -#: ../src/ui/dialog/objects.cpp:1886 +#: ../src/ui/dialog/objects.cpp:1933 msgid "Show All" msgstr "Mostrar todo" -#: ../src/ui/dialog/objects.cpp:1887 +#: ../src/ui/dialog/objects.cpp:1934 msgid "Hide All" msgstr "Ocultar todo" -#: ../src/ui/dialog/objects.cpp:1891 +#: ../src/ui/dialog/objects.cpp:1938 msgid "Lock Others" msgstr "Bloquear otras" -#: ../src/ui/dialog/objects.cpp:1892 +#: ../src/ui/dialog/objects.cpp:1939 msgid "Lock All" msgstr "Bloquear todo" #. LockAndHide -#: ../src/ui/dialog/objects.cpp:1893 ../src/verbs.cpp:3063 +#: ../src/ui/dialog/objects.cpp:1940 ../src/verbs.cpp:3025 msgid "Unlock All" msgstr "Desbloquear todo" -#: ../src/ui/dialog/objects.cpp:1897 +#: ../src/ui/dialog/objects.cpp:1944 msgid "Up" msgstr "Arriba" -#: ../src/ui/dialog/objects.cpp:1898 +#: ../src/ui/dialog/objects.cpp:1945 msgid "Down" msgstr "Abajo" -#: ../src/ui/dialog/objects.cpp:1907 +#: ../src/ui/dialog/objects.cpp:1954 msgid "Set Clip" msgstr "Aplicar recorte" #. will never be implemented #. _watching.push_back( &_addPopupItem( targetDesktop, SP_VERB_OBJECT_SET_INVERSE_CLIPPATH, 0, "Set Inverse Clip", (int)BUTTON_SETINVCLIP ) ); -#: ../src/ui/dialog/objects.cpp:1913 +#: ../src/ui/dialog/objects.cpp:1960 msgid "Unset Clip" msgstr "Soltar recorte" #. Set mask -#: ../src/ui/dialog/objects.cpp:1917 ../src/ui/interface.cpp:1714 +#: ../src/ui/dialog/objects.cpp:1964 ../src/ui/interface.cpp:1754 msgid "Set Mask" msgstr "Aplicar máscara" -#: ../src/ui/dialog/objects.cpp:1918 +#: ../src/ui/dialog/objects.cpp:1965 msgid "Unset Mask" msgstr "Soltar máscara" -#: ../src/ui/dialog/objects.cpp:1940 +#: ../src/ui/dialog/objects.cpp:1987 msgid "Select Highlight Color" msgstr "Seleccionar color de realce" -#: ../src/ui/dialog/ocaldialogs.cpp:585 +#: ../src/ui/dialog/ocaldialogs.cpp:715 msgid "Clipart found" msgstr "Se ha encontrado Clipart" -#: ../src/ui/dialog/ocaldialogs.cpp:634 +#: ../src/ui/dialog/ocaldialogs.cpp:764 msgid "Downloading image..." msgstr "Descargando imagen..." -#: ../src/ui/dialog/ocaldialogs.cpp:782 +#: ../src/ui/dialog/ocaldialogs.cpp:912 msgid "Could not download image" msgstr "No se ha podido descargar la imagen" -#: ../src/ui/dialog/ocaldialogs.cpp:792 +#: ../src/ui/dialog/ocaldialogs.cpp:922 msgid "Clipart downloaded successfully" msgstr "Se ha descargado el clipart con éxito" -#: ../src/ui/dialog/ocaldialogs.cpp:806 +#: ../src/ui/dialog/ocaldialogs.cpp:936 msgid "Could not download thumbnail file" msgstr "No se ha podido descargar la miniatura" -#: ../src/ui/dialog/ocaldialogs.cpp:881 +#: ../src/ui/dialog/ocaldialogs.cpp:1011 msgid "No description" msgstr "Sin descripción" -#: ../src/ui/dialog/ocaldialogs.cpp:949 +#: ../src/ui/dialog/ocaldialogs.cpp:1079 msgid "Searching clipart..." msgstr "Buscando clipart..." -#: ../src/ui/dialog/ocaldialogs.cpp:969 ../src/ui/dialog/ocaldialogs.cpp:990 +#: ../src/ui/dialog/ocaldialogs.cpp:1099 ../src/ui/dialog/ocaldialogs.cpp:1120 msgid "Could not connect to the Open Clip Art Library" msgstr "No se ha podido conectar a la librería Open Clip Art" -#: ../src/ui/dialog/ocaldialogs.cpp:1015 +#: ../src/ui/dialog/ocaldialogs.cpp:1145 msgid "Could not parse search results" msgstr "No se pudieron interpretar los resultdos de la búsqueda" -#: ../src/ui/dialog/ocaldialogs.cpp:1047 +#: ../src/ui/dialog/ocaldialogs.cpp:1177 msgid "No clipart named %1 was found." msgstr "No se ha encontrado ningún clipart llamado %1." -#: ../src/ui/dialog/ocaldialogs.cpp:1049 +#: ../src/ui/dialog/ocaldialogs.cpp:1179 msgid "" "Please make sure all keywords are spelled correctly, or try again with " "different keywords." @@ -21700,100 +21870,100 @@ msgstr "" "Asegúrese de que todas las palabras clave están bien escritas o inténtelo " "otra vez con otras palabras clave." -#: ../src/ui/dialog/ocaldialogs.cpp:1082 +#: ../src/ui/dialog/ocaldialogs.cpp:1231 msgid "Search" msgstr "Buscar" -#: ../src/ui/dialog/ocaldialogs.cpp:1090 +#: ../src/ui/dialog/ocaldialogs.cpp:1243 msgid "Close" msgstr "Cerrar" -#: ../src/ui/dialog/pixelartdialog.cpp:184 +#: ../src/ui/dialog/pixelartdialog.cpp:190 msgid "_Curves (multiplier):" msgstr "_Curvas (multiplicador):" -#: ../src/ui/dialog/pixelartdialog.cpp:187 +#: ../src/ui/dialog/pixelartdialog.cpp:193 msgid "Favors connections that are part of a long curve" msgstr "Favorece las conexiones que son parte de una curva larga" -#: ../src/ui/dialog/pixelartdialog.cpp:198 +#: ../src/ui/dialog/pixelartdialog.cpp:204 msgid "_Islands (weight):" msgstr "_Islas (peso):" -#: ../src/ui/dialog/pixelartdialog.cpp:201 +#: ../src/ui/dialog/pixelartdialog.cpp:207 msgid "Avoid single disconnected pixels" msgstr "Evitar píxeles sueltos desconectados" -#: ../src/ui/dialog/pixelartdialog.cpp:203 +#: ../src/ui/dialog/pixelartdialog.cpp:209 msgid "A constant vote value" msgstr "Un valor de voto constance" -#: ../src/ui/dialog/pixelartdialog.cpp:213 +#: ../src/ui/dialog/pixelartdialog.cpp:219 msgid "Sparse pixels (window _radius):" msgstr "Píxeles dispersos (_radio de ventana):" -#: ../src/ui/dialog/pixelartdialog.cpp:222 +#: ../src/ui/dialog/pixelartdialog.cpp:228 msgid "The radius of the window analyzed" msgstr "El radio de la ventana analizada" -#: ../src/ui/dialog/pixelartdialog.cpp:223 +#: ../src/ui/dialog/pixelartdialog.cpp:229 msgid "Sparse pixels (_multiplier):" msgstr "Píxeles dispersos (_multiplicador):" -#: ../src/ui/dialog/pixelartdialog.cpp:234 +#: ../src/ui/dialog/pixelartdialog.cpp:240 msgid "Favors connections that are part of foreground color" msgstr "Favorece a las conexiones que forman parte del color de primer plano" -#: ../src/ui/dialog/pixelartdialog.cpp:240 +#: ../src/ui/dialog/pixelartdialog.cpp:246 msgid "The heuristic computed vote will be multiplied by this value" msgstr "El voto heurístico computado se multiplicará por este valor" -#: ../src/ui/dialog/pixelartdialog.cpp:253 +#: ../src/ui/dialog/pixelartdialog.cpp:259 msgid "Heuristics" msgstr "Heurística" -#: ../src/ui/dialog/pixelartdialog.cpp:260 +#: ../src/ui/dialog/pixelartdialog.cpp:266 msgid "_Voronoi diagram" msgstr "Diagrama _Voronoi" -#: ../src/ui/dialog/pixelartdialog.cpp:261 +#: ../src/ui/dialog/pixelartdialog.cpp:267 msgid "Output composed of straight lines" msgstr "Salida compuesta por líneas rectas" -#: ../src/ui/dialog/pixelartdialog.cpp:267 +#: ../src/ui/dialog/pixelartdialog.cpp:273 msgid "Convert to _B-spline curves" msgstr "Convertir a curvas _B-spline" -#: ../src/ui/dialog/pixelartdialog.cpp:268 +#: ../src/ui/dialog/pixelartdialog.cpp:274 msgid "Preserve staircasing artifacts" msgstr "Conservar artefactos escalonados" -#: ../src/ui/dialog/pixelartdialog.cpp:275 +#: ../src/ui/dialog/pixelartdialog.cpp:281 msgid "_Smooth curves" msgstr "Curvas _suaves" -#: ../src/ui/dialog/pixelartdialog.cpp:276 +#: ../src/ui/dialog/pixelartdialog.cpp:282 msgid "The Kopf-Lischinski algorithm" msgstr "El algoritmo Kopf-Lischinski" -#: ../src/ui/dialog/pixelartdialog.cpp:283 +#: ../src/ui/dialog/pixelartdialog.cpp:289 msgid "Output" msgstr "Salida" -#: ../src/ui/dialog/pixelartdialog.cpp:291 ../src/ui/dialog/tracedialog.cpp:813 +#: ../src/ui/dialog/pixelartdialog.cpp:297 ../src/ui/dialog/tracedialog.cpp:814 msgid "Reset all settings to defaults" msgstr "Restablecer todos los valores a predeterminados" -#: ../src/ui/dialog/pixelartdialog.cpp:296 ../src/ui/dialog/tracedialog.cpp:818 +#: ../src/ui/dialog/pixelartdialog.cpp:302 ../src/ui/dialog/tracedialog.cpp:819 msgid "Abort a trace in progress" msgstr "Detener una vectorización en progreso" -#: ../src/ui/dialog/pixelartdialog.cpp:300 ../src/ui/dialog/tracedialog.cpp:822 +#: ../src/ui/dialog/pixelartdialog.cpp:306 ../src/ui/dialog/tracedialog.cpp:823 msgid "Execute the trace" msgstr "Ejecutar la vectorización" -#: ../src/ui/dialog/pixelartdialog.cpp:382 -#: ../src/ui/dialog/pixelartdialog.cpp:416 +#: ../src/ui/dialog/pixelartdialog.cpp:388 +#: ../src/ui/dialog/pixelartdialog.cpp:422 msgid "" "Image looks too big. Process may take a while and it is wise to save your " "document before continuing.\n" @@ -21805,572 +21975,527 @@ msgstr "" "\n" "¿Desea continuar sin guardar?" -#: ../src/ui/dialog/pixelartdialog.cpp:493 +#: ../src/ui/dialog/pixelartdialog.cpp:499 msgid "Trace pixel art" msgstr "Vectorizar arte píxel" -#: ../src/ui/dialog/polar-arrange-tab.cpp:35 +#: ../src/ui/dialog/polar-arrange-tab.cpp:41 msgctxt "Polar arrange tab" msgid "Y coordinate of the center" msgstr "Coordenada Y del centro" -#: ../src/ui/dialog/polar-arrange-tab.cpp:36 +#: ../src/ui/dialog/polar-arrange-tab.cpp:42 msgctxt "Polar arrange tab" msgid "X coordinate of the center" msgstr "Coordenada X del centro" -#: ../src/ui/dialog/polar-arrange-tab.cpp:37 +#: ../src/ui/dialog/polar-arrange-tab.cpp:43 msgctxt "Polar arrange tab" msgid "Y coordinate of the radius" msgstr "Coordenada Y del radio" -#: ../src/ui/dialog/polar-arrange-tab.cpp:38 +#: ../src/ui/dialog/polar-arrange-tab.cpp:44 msgctxt "Polar arrange tab" msgid "X coordinate of the radius" msgstr "Coordenada X del radio" -#: ../src/ui/dialog/polar-arrange-tab.cpp:39 +#: ../src/ui/dialog/polar-arrange-tab.cpp:45 msgctxt "Polar arrange tab" msgid "Starting angle" msgstr "Ángulo de inicio" -#: ../src/ui/dialog/polar-arrange-tab.cpp:40 +#: ../src/ui/dialog/polar-arrange-tab.cpp:46 msgctxt "Polar arrange tab" msgid "End angle" msgstr "Ángulo final" -#: ../src/ui/dialog/polar-arrange-tab.cpp:42 +#: ../src/ui/dialog/polar-arrange-tab.cpp:48 msgctxt "Polar arrange tab" msgid "Anchor point:" msgstr "Punto ancla:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:46 +#: ../src/ui/dialog/polar-arrange-tab.cpp:52 msgctxt "Polar arrange tab" -msgid "Object's bounding box:" -msgstr "Caja de contorno del objeto:" +msgid "Objects' bounding boxes:" +msgstr "Caja(s) de contorno del objeto:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:53 +#: ../src/ui/dialog/polar-arrange-tab.cpp:59 msgctxt "Polar arrange tab" -msgid "Object's rotational center" -msgstr "Centro de rotación del objeto" +msgid "Objects' rotational centers" +msgstr "Centro(s) de rotación del objeto" -#: ../src/ui/dialog/polar-arrange-tab.cpp:58 +#: ../src/ui/dialog/polar-arrange-tab.cpp:64 msgctxt "Polar arrange tab" msgid "Arrange on:" msgstr "Ordenar por:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:62 +#: ../src/ui/dialog/polar-arrange-tab.cpp:68 msgctxt "Polar arrange tab" msgid "First selected circle/ellipse/arc" msgstr "Círculo/elipses/arco primer seleccionado" -#: ../src/ui/dialog/polar-arrange-tab.cpp:67 +#: ../src/ui/dialog/polar-arrange-tab.cpp:73 msgctxt "Polar arrange tab" msgid "Last selected circle/ellipse/arc" msgstr "Círculo/elipses/arco último seleccionado" -#: ../src/ui/dialog/polar-arrange-tab.cpp:72 +#: ../src/ui/dialog/polar-arrange-tab.cpp:78 msgctxt "Polar arrange tab" msgid "Parameterized:" msgstr "Parametrizado:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:77 +#: ../src/ui/dialog/polar-arrange-tab.cpp:83 msgctxt "Polar arrange tab" msgid "Center X/Y:" msgstr "Centro X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:90 +#: ../src/ui/dialog/polar-arrange-tab.cpp:105 msgctxt "Polar arrange tab" msgid "Radius X/Y:" msgstr "Radio X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:103 +#: ../src/ui/dialog/polar-arrange-tab.cpp:127 msgid "Angle X/Y:" msgstr "Ángulo X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:117 +#: ../src/ui/dialog/polar-arrange-tab.cpp:150 msgid "Rotate objects" msgstr "Rotar objetos" -#: ../src/ui/dialog/polar-arrange-tab.cpp:303 +#: ../src/ui/dialog/polar-arrange-tab.cpp:336 msgid "Couldn't find an ellipse in selection" msgstr "No se ha encontrado una elipse en esta selección" -#: ../src/ui/dialog/polar-arrange-tab.cpp:366 +#: ../src/ui/dialog/polar-arrange-tab.cpp:399 msgid "Arrange on ellipse" msgstr "Ordenar en elipse" -#: ../src/ui/dialog/print.cpp:110 +#: ../src/ui/dialog/print.cpp:111 msgid "Could not open temporary PNG for bitmap printing" msgstr "" "No se ha podido abrir un archivo PNG temporal para la impresión de mapa de " "bits" -#: ../src/ui/dialog/print.cpp:137 +#: ../src/ui/dialog/print.cpp:138 msgid "Could not set up Document" msgstr "No se ha podido configurar el documento" -#: ../src/ui/dialog/print.cpp:141 +#: ../src/ui/dialog/print.cpp:142 msgid "Failed to set CairoRenderContext" msgstr "Error al fijar CairoRenderContext" #. set up dialog title, based on document name -#: ../src/ui/dialog/print.cpp:179 +#: ../src/ui/dialog/print.cpp:180 msgid "SVG Document" msgstr "Documento SVG" -#: ../src/ui/dialog/print.cpp:180 +#: ../src/ui/dialog/print.cpp:181 msgid "Print" msgstr "Imprimir" -#: ../src/ui/dialog/spellcheck.cpp:66 +#: ../src/ui/dialog/spellcheck.cpp:73 msgid "_Accept" msgstr "_Aceptar" -#: ../src/ui/dialog/spellcheck.cpp:67 +#: ../src/ui/dialog/spellcheck.cpp:74 msgid "_Ignore once" msgstr "_Ignorar una vez" -#: ../src/ui/dialog/spellcheck.cpp:68 +#: ../src/ui/dialog/spellcheck.cpp:75 msgid "_Ignore" msgstr "_Ignorar" -#: ../src/ui/dialog/spellcheck.cpp:69 +#: ../src/ui/dialog/spellcheck.cpp:76 msgid "A_dd" msgstr "Aña_dir" -#: ../src/ui/dialog/spellcheck.cpp:71 +#: ../src/ui/dialog/spellcheck.cpp:78 msgid "_Stop" msgstr "_Parar" -#: ../src/ui/dialog/spellcheck.cpp:72 +#: ../src/ui/dialog/spellcheck.cpp:79 msgid "_Start" msgstr "_Iniciar" -#: ../src/ui/dialog/spellcheck.cpp:102 +#: ../src/ui/dialog/spellcheck.cpp:109 msgid "Suggestions:" msgstr "Sugerencias:" -#: ../src/ui/dialog/spellcheck.cpp:117 +#: ../src/ui/dialog/spellcheck.cpp:124 msgid "Accept the chosen suggestion" msgstr "Aceptar la sugerencia elegida" -#: ../src/ui/dialog/spellcheck.cpp:118 +#: ../src/ui/dialog/spellcheck.cpp:125 msgid "Ignore this word only once" msgstr "Ignorar esta palabra una sola vez" -#: ../src/ui/dialog/spellcheck.cpp:119 +#: ../src/ui/dialog/spellcheck.cpp:126 msgid "Ignore this word in this session" msgstr "Ignorar esta palabra en esta sesión" -#: ../src/ui/dialog/spellcheck.cpp:120 +#: ../src/ui/dialog/spellcheck.cpp:127 msgid "Add this word to the chosen dictionary" msgstr "Añadir esta palabra al diccionario elegido" -#: ../src/ui/dialog/spellcheck.cpp:134 +#: ../src/ui/dialog/spellcheck.cpp:141 msgid "Stop the check" msgstr "Detener la comprobación" -#: ../src/ui/dialog/spellcheck.cpp:135 +#: ../src/ui/dialog/spellcheck.cpp:142 msgid "Start the check" msgstr "Iniciar la comprobación" -#: ../src/ui/dialog/spellcheck.cpp:453 +#: ../src/ui/dialog/spellcheck.cpp:460 #, c-format msgid "Finished, %d words added to dictionary" msgstr "Terminado, %d palabras añadidas al diccionario" -#: ../src/ui/dialog/spellcheck.cpp:455 +#: ../src/ui/dialog/spellcheck.cpp:462 msgid "Finished, nothing suspicious found" msgstr "Terminado, no se ha encontrada nada sospechoso" -#: ../src/ui/dialog/spellcheck.cpp:571 +#: ../src/ui/dialog/spellcheck.cpp:578 #, c-format msgid "Not in dictionary (%s): %s" msgstr "No está en el diccionario (%s): %s" -#: ../src/ui/dialog/spellcheck.cpp:720 +#: ../src/ui/dialog/spellcheck.cpp:727 msgid "Checking..." msgstr "Comprobando..." -#: ../src/ui/dialog/spellcheck.cpp:789 +#: ../src/ui/dialog/spellcheck.cpp:796 msgid "Fix spelling" msgstr "Corregir ortografía" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:148 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:216 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:139 msgid "Set SVG Font attribute" msgstr "Definir atributo de fuente SVG" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:272 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:195 msgid "Adjust kerning value" msgstr "Ajustar valor de interletraje" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:455 -msgid "Font Attributes" -msgstr "Atributos de tipografía" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:456 -msgid "Horiz. Advance X" -msgstr "Avance horiz. X" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:457 -msgid "Horiz. Origin X " -msgstr "Origen horiz. X " - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:458 -msgid "Horiz. Origin Y " -msgstr "Origen horiz. Y " - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:459 -msgid "Font Face Attributes" -msgstr "Atributo de la cara del tipo" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:460 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:385 msgid "Family Name:" msgstr "Nombre de familia:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:461 -msgid "Units per em" -msgstr "Unidades por em" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:462 -msgid "Ascent:" -msgstr "Ascendencia:" +#: ../src/ui/dialog/svg-fonts-dialog.cpp:395 +msgid "Set width:" +msgstr "Fijar anchura:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:463 -msgid "Descent:" -msgstr "Descendencia:" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:464 -msgid "Cap Height:" -msgstr "Altura de cúspide:" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:465 -msgid "x Height:" -msgstr "Altura x:" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:538 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:454 msgid "glyph" msgstr "glifo" #. SPGlyph* glyph = -#: ../src/ui/dialog/svg-fonts-dialog.cpp:570 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:486 msgid "Add glyph" msgstr "Añadir glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:601 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:643 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:520 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:562 msgid "Select a path to define the curves of a glyph" msgstr "Seleccione un trayecto para definir las curvas de un glifo." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:609 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:651 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:528 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:570 msgid "The selected object does not have a path description." msgstr "El objeto seleccionado no tiene descripción de trayecto." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:616 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:535 msgid "No glyph selected in the SVGFonts dialog." msgstr "No hay glifos seleccionados en el diálogo de Fuentes SVG." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:627 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:665 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:546 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:585 msgid "Set glyph curves" msgstr "Fijar curvas de glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:684 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:605 msgid "Reset missing-glyph" msgstr "Restablecer glifo faltante" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:700 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:621 msgid "Edit glyph name" msgstr "Editar nombre de glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:714 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:635 msgid "Set glyph unicode" msgstr "Fijar unicode de glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:731 -msgid "Set glyph advance" -msgstr "Fijar avance de glifo" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:746 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:647 msgid "Remove font" msgstr "Eliminar fuente" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:763 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:664 msgid "Remove glyph" msgstr "Eliminar glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:780 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:681 msgid "Remove kerning pair" msgstr "Eliminar pareja de interletraje" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:790 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:691 msgid "Missing Glyph:" msgstr "Glifo faltante:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:794 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:695 msgid "From selection..." msgstr "De la selección..." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:807 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:708 msgid "Glyph name" msgstr "Nombre de glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:808 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:709 msgid "Matching string" msgstr "Cadena coincidente" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:809 -msgid "Advance" -msgstr "Avance" - -#: ../src/ui/dialog/svg-fonts-dialog.cpp:811 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:712 msgid "Add Glyph" msgstr "Añadir glifo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:818 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:719 msgid "Get curves from selection..." msgstr "Obtener curvas de la selección..." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:870 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:768 msgid "Add kerning pair" msgstr "Añadir pareja de interletraje" #. Kerning Setup: -#: ../src/ui/dialog/svg-fonts-dialog.cpp:878 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:776 msgid "Kerning Setup" msgstr "Configuración de interletraje" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:880 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:778 msgid "1st Glyph:" msgstr "1er glifo:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:882 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:780 msgid "2nd Glyph:" msgstr "2º glifo:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:885 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:783 msgid "Add pair" msgstr "Añadir pareja" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:897 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:795 msgid "First Unicode range" msgstr "Primer rango Unicode" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:898 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:796 msgid "Second Unicode range" msgstr "Segundo rango Unicode" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:905 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:803 msgid "Kerning value:" msgstr "Valor de interletraje:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:962 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:861 msgid "Set font family" msgstr "Fijar familia tipográfica" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:971 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:870 msgid "font" msgstr "tipografía" #. select_font(font); -#: ../src/ui/dialog/svg-fonts-dialog.cpp:985 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:885 msgid "Add font" msgstr "Añadir fuente" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1006 ../src/ui/dialog/text-edit.cpp:62 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:911 ../src/ui/dialog/text-edit.cpp:69 msgid "_Font" msgstr "Tipogra_fía" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1014 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:919 msgid "_Global Settings" msgstr "Ajustes _globales" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1015 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:920 msgid "_Glyphs" msgstr "_Glifos" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1016 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:921 msgid "_Kerning" msgstr "_Interletraje" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1023 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1024 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:928 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:929 msgid "Sample Text" msgstr "Texto de ejemplo" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1028 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:933 msgid "Preview Text:" msgstr "Vista preliminar:" -#: ../src/ui/dialog/swatches.cpp:193 ../src/ui/tools/gradient-tool.cpp:359 -#: ../src/ui/tools/gradient-tool.cpp:457 ../src/widgets/gradient-vector.cpp:765 +#: ../src/ui/dialog/swatches.cpp:202 ../src/ui/tools/gradient-tool.cpp:366 +#: ../src/ui/tools/gradient-tool.cpp:464 ../src/widgets/gradient-vector.cpp:801 msgid "Add gradient stop" msgstr "Añadir parada de degradado" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:248 +#: ../src/ui/dialog/swatches.cpp:257 msgid "Set fill" msgstr "Fijar relleno" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:256 +#: ../src/ui/dialog/swatches.cpp:265 msgid "Set stroke" msgstr "Fijar trazo" -#: ../src/ui/dialog/swatches.cpp:277 +#: ../src/ui/dialog/swatches.cpp:286 msgid "Edit..." msgstr "Editar..." -#: ../src/ui/dialog/swatches.cpp:289 +#: ../src/ui/dialog/swatches.cpp:298 msgid "Convert" msgstr "Convertir" -#: ../src/ui/dialog/swatches.cpp:534 +#: ../src/ui/dialog/swatches.cpp:543 #, c-format msgid "Palettes directory (%s) is unavailable." msgstr "No está disponible el directorio de paletas (%s)." #. ******************* Symbol Sets ************************ -#: ../src/ui/dialog/symbols.cpp:120 +#: ../src/ui/dialog/symbols.cpp:136 msgid "Symbol set: " msgstr "Conjunto de símbolos:" #. Fill in later -#: ../src/ui/dialog/symbols.cpp:123 ../src/ui/dialog/symbols.cpp:124 +#: ../src/ui/dialog/symbols.cpp:145 ../src/ui/dialog/symbols.cpp:146 msgid "Current Document" msgstr "Documento actual" -#: ../src/ui/dialog/symbols.cpp:176 +#: ../src/ui/dialog/symbols.cpp:213 msgid "Add Symbol from the current document." msgstr "Añadir símbolo del documento actual." -#: ../src/ui/dialog/symbols.cpp:185 +#: ../src/ui/dialog/symbols.cpp:222 msgid "Remove Symbol from the current document." msgstr "Eliminar símbolo del documento actual." -#: ../src/ui/dialog/symbols.cpp:199 +#: ../src/ui/dialog/symbols.cpp:236 msgid "Display more icons in row." msgstr "Mostrar más iconos en fila." -#: ../src/ui/dialog/symbols.cpp:208 +#: ../src/ui/dialog/symbols.cpp:245 msgid "Display fewer icons in row." msgstr "Mostrar menos iconos en fila." -#: ../src/ui/dialog/symbols.cpp:218 +#: ../src/ui/dialog/symbols.cpp:255 msgid "Toggle 'fit' symbols in icon space." msgstr "Conmutar ajuste de símbolos en espacio de icono." -#: ../src/ui/dialog/symbols.cpp:230 +#: ../src/ui/dialog/symbols.cpp:267 msgid "Make symbols smaller by zooming out." msgstr "Reducir símbolos al alejar zoom." -#: ../src/ui/dialog/symbols.cpp:240 +#: ../src/ui/dialog/symbols.cpp:277 msgid "Make symbols bigger by zooming in." msgstr "Aumentar de símbolos al alejar zoom." -#: ../src/ui/dialog/symbols.cpp:588 +#: ../src/ui/dialog/symbols.cpp:651 msgid "Unnamed Symbols" msgstr "Símbolos sin nombre" -#: ../src/ui/dialog/tags.cpp:257 ../src/ui/dialog/tags.cpp:555 -#: ../src/ui/dialog/tags.cpp:669 ../src/ui/dialog/tags.cpp:932 +#: ../src/ui/dialog/tags.cpp:270 ../src/ui/dialog/tags.cpp:569 +#: ../src/ui/dialog/tags.cpp:683 ../src/ui/dialog/tags.cpp:946 msgid "Remove from selection set" msgstr "Quitar del conjunto seleccionado" -#: ../src/ui/dialog/tags.cpp:414 +#: ../src/ui/dialog/tags.cpp:427 msgid "Items" msgstr "Elementos" -#: ../src/ui/dialog/tags.cpp:652 ../src/ui/dialog/tags.cpp:930 +#: ../src/ui/dialog/tags.cpp:666 ../src/ui/dialog/tags.cpp:944 msgid "Add selection to set" msgstr "Añadir selección al conjunto" -#: ../src/ui/dialog/tags.cpp:810 +#: ../src/ui/dialog/tags.cpp:824 msgid "Moved sets" msgstr "Conjuntos movidos" -#: ../src/ui/dialog/tags.cpp:986 +#: ../src/ui/dialog/tags.cpp:1004 msgid "Add a new selection set" msgstr "Añadir una nueva selección al conjunto" -#: ../src/ui/dialog/tags.cpp:995 +#: ../src/ui/dialog/tags.cpp:1013 msgid "Remove Item/Set" msgstr "Eliminar elemento/conjunto" -#: ../src/ui/dialog/template-widget.cpp:32 +#: ../src/ui/dialog/template-widget.cpp:37 msgid "More info" msgstr "Más información" -#: ../src/ui/dialog/template-widget.cpp:34 +#: ../src/ui/dialog/template-widget.cpp:39 msgid "no template selected" msgstr "no se ha seleccionado plantilla" -#: ../src/ui/dialog/template-widget.cpp:126 +#: ../src/ui/dialog/template-widget.cpp:131 msgid "Path: " msgstr "Trayecto: " -#: ../src/ui/dialog/template-widget.cpp:129 +#: ../src/ui/dialog/template-widget.cpp:134 msgid "Description: " msgstr "Descripción: " -#: ../src/ui/dialog/template-widget.cpp:131 +#: ../src/ui/dialog/template-widget.cpp:136 msgid "Keywords: " msgstr "Palabras clave: " -#: ../src/ui/dialog/template-widget.cpp:138 +#: ../src/ui/dialog/template-widget.cpp:143 msgid "By: " msgstr "Por: " -#: ../src/ui/dialog/text-edit.cpp:65 +#: ../src/ui/dialog/text-edit.cpp:72 msgid "_Variants" msgstr "_Variantes" -#: ../src/ui/dialog/text-edit.cpp:66 +#: ../src/ui/dialog/text-edit.cpp:73 msgid "Set as _default" msgstr "Definir como pre_determinado" -#: ../src/ui/dialog/text-edit.cpp:80 +#: ../src/ui/dialog/text-edit.cpp:87 msgid "AaBbCcIiPpQq12369$€¢?.;/()" msgstr "AaBbCcIiÁáÑñPpQq12368$€¿?.;/()" #. Align buttons -#: ../src/ui/dialog/text-edit.cpp:90 ../src/widgets/text-toolbar.cpp:1776 -#: ../src/widgets/text-toolbar.cpp:1777 +#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1797 +#: ../src/widgets/text-toolbar.cpp:1798 msgid "Align left" msgstr "Alinear izquierda" -#: ../src/ui/dialog/text-edit.cpp:91 ../src/widgets/text-toolbar.cpp:1784 -#: ../src/widgets/text-toolbar.cpp:1785 +#: ../src/ui/dialog/text-edit.cpp:98 ../src/widgets/text-toolbar.cpp:1805 +#: ../src/widgets/text-toolbar.cpp:1806 msgid "Align center" msgstr "Alinear centro" -#: ../src/ui/dialog/text-edit.cpp:92 ../src/widgets/text-toolbar.cpp:1792 -#: ../src/widgets/text-toolbar.cpp:1793 +#: ../src/ui/dialog/text-edit.cpp:99 ../src/widgets/text-toolbar.cpp:1813 +#: ../src/widgets/text-toolbar.cpp:1814 msgid "Align right" msgstr "Alinear derecha" -#: ../src/ui/dialog/text-edit.cpp:93 ../src/widgets/text-toolbar.cpp:1801 +#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1822 msgid "Justify (only flowed text)" msgstr "Justificar (solo texto fluido)" #. Direction buttons -#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1836 +#: ../src/ui/dialog/text-edit.cpp:109 ../src/widgets/text-toolbar.cpp:1857 msgid "Horizontal text" msgstr "Texto horizontal" -#: ../src/ui/dialog/text-edit.cpp:101 +#: ../src/ui/dialog/text-edit.cpp:110 msgid "Vertical text" msgstr "Texto vertical" -#: ../src/ui/dialog/text-edit.cpp:138 +#: ../src/ui/dialog/text-edit.cpp:154 msgid "Text path offset" msgstr "Desvío de trayecto de texto" -#: ../src/ui/dialog/text-edit.cpp:577 ../src/ui/dialog/text-edit.cpp:664 -#: ../src/ui/tools/text-tool.cpp:1442 +#: ../src/ui/dialog/text-edit.cpp:612 ../src/ui/dialog/text-edit.cpp:699 +#: ../src/ui/tools/text-tool.cpp:1446 msgid "Set text style" msgstr "Fijar estilo de texto" @@ -22398,38 +22523,38 @@ msgstr "Ordenar los objetos seleccionados" #. ## begin mode page #. # begin single scan #. brightness -#: ../src/ui/dialog/tracedialog.cpp:507 +#: ../src/ui/dialog/tracedialog.cpp:508 msgid "_Brightness cutoff" msgstr "Corte de _luminosidad" -#: ../src/ui/dialog/tracedialog.cpp:511 +#: ../src/ui/dialog/tracedialog.cpp:512 msgid "Trace by a given brightness level" msgstr "Vectorizar por un nivel de luminosidad dado" -#: ../src/ui/dialog/tracedialog.cpp:518 +#: ../src/ui/dialog/tracedialog.cpp:519 msgid "Brightness cutoff for black/white" msgstr "Límite de luminosidad para blanco/negro" -#: ../src/ui/dialog/tracedialog.cpp:528 +#: ../src/ui/dialog/tracedialog.cpp:529 msgid "Single scan: creates a path" msgstr "Pasada simple: crea un trayecto" #. canny edge detection #. TRANSLATORS: "Canny" is the name of the inventor of this edge detection method -#: ../src/ui/dialog/tracedialog.cpp:533 +#: ../src/ui/dialog/tracedialog.cpp:534 msgid "_Edge detection" msgstr "D_etección de bordes" -#: ../src/ui/dialog/tracedialog.cpp:537 +#: ../src/ui/dialog/tracedialog.cpp:538 msgid "Trace with optimal edge detection by J. Canny's algorithm" msgstr "Vectorizar con detección de bordes óptimo según J. Canny" -#: ../src/ui/dialog/tracedialog.cpp:555 +#: ../src/ui/dialog/tracedialog.cpp:556 msgid "Brightness cutoff for adjacent pixels (determines edge thickness)" msgstr "" "Límite de luminosidad para píxeles adyacentes (determina el grosor del borde)" -#: ../src/ui/dialog/tracedialog.cpp:558 +#: ../src/ui/dialog/tracedialog.cpp:559 msgid "T_hreshold:" msgstr "U_mbral:" @@ -22437,80 +22562,80 @@ msgstr "U_mbral:" #. TRANSLATORS: Color Quantization: the process of reducing the number #. of colors in an image by selecting an optimized set of representative #. colors and then re-applying this reduced set to the original image. -#: ../src/ui/dialog/tracedialog.cpp:570 +#: ../src/ui/dialog/tracedialog.cpp:571 msgid "Color _quantization" msgstr "_Cuantización de colores" -#: ../src/ui/dialog/tracedialog.cpp:574 +#: ../src/ui/dialog/tracedialog.cpp:575 msgid "Trace along the boundaries of reduced colors" msgstr "Vectorizar por los límites de colores reducidos" -#: ../src/ui/dialog/tracedialog.cpp:582 +#: ../src/ui/dialog/tracedialog.cpp:583 msgid "The number of reduced colors" msgstr "El número de colores reducidos" -#: ../src/ui/dialog/tracedialog.cpp:585 +#: ../src/ui/dialog/tracedialog.cpp:586 msgid "_Colors:" msgstr "_Colores:" #. swap black and white -#: ../src/ui/dialog/tracedialog.cpp:593 +#: ../src/ui/dialog/tracedialog.cpp:594 msgid "_Invert image" msgstr "_Invertir imagen" -#: ../src/ui/dialog/tracedialog.cpp:598 +#: ../src/ui/dialog/tracedialog.cpp:599 msgid "Invert black and white regions" msgstr "Invertir zonas blancas y negras" #. # end single scan #. # begin multiple scan -#: ../src/ui/dialog/tracedialog.cpp:608 +#: ../src/ui/dialog/tracedialog.cpp:609 msgid "B_rightness steps" msgstr "_Pasos de luminosidad" -#: ../src/ui/dialog/tracedialog.cpp:612 +#: ../src/ui/dialog/tracedialog.cpp:613 msgid "Trace the given number of brightness levels" msgstr "Vectorizar por el número de niveles de luminosidad datos" -#: ../src/ui/dialog/tracedialog.cpp:620 +#: ../src/ui/dialog/tracedialog.cpp:621 msgid "Sc_ans:" msgstr "P_asadas:" -#: ../src/ui/dialog/tracedialog.cpp:624 +#: ../src/ui/dialog/tracedialog.cpp:625 msgid "The desired number of scans" msgstr "El número de pasadas deseado" -#: ../src/ui/dialog/tracedialog.cpp:629 +#: ../src/ui/dialog/tracedialog.cpp:630 msgid "Co_lors" msgstr "Co_lores" -#: ../src/ui/dialog/tracedialog.cpp:633 +#: ../src/ui/dialog/tracedialog.cpp:634 msgid "Trace the given number of reduced colors" msgstr "Vectorizar el número de colores reducidos" -#: ../src/ui/dialog/tracedialog.cpp:638 +#: ../src/ui/dialog/tracedialog.cpp:639 msgid "_Grays" msgstr "_Grises" -#: ../src/ui/dialog/tracedialog.cpp:642 +#: ../src/ui/dialog/tracedialog.cpp:643 msgid "Same as Colors, but the result is converted to grayscale" msgstr "Igual que «Colores» pero convierte el resultado a escala de grises" #. TRANSLATORS: "Smooth" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:648 +#: ../src/ui/dialog/tracedialog.cpp:649 msgid "S_mooth" msgstr "Sua_ve" -#: ../src/ui/dialog/tracedialog.cpp:652 +#: ../src/ui/dialog/tracedialog.cpp:653 msgid "Apply Gaussian blur to the bitmap before tracing" msgstr "Aplicar un desenfoque gaussiano al mapa de bits antes de vectorizar" #. TRANSLATORS: "Stack" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:656 +#: ../src/ui/dialog/tracedialog.cpp:657 msgid "Stac_k scans" msgstr "Apilar pasa_das" -#: ../src/ui/dialog/tracedialog.cpp:660 +#: ../src/ui/dialog/tracedialog.cpp:661 msgid "" "Stack scans on top of one another (no gaps) instead of tiling (usually with " "gaps)" @@ -22518,65 +22643,65 @@ msgstr "" "Apilar las pasadas una encima de otra (sin separación) en lugar de mosaico " "(normalmente con separaciones)" -#: ../src/ui/dialog/tracedialog.cpp:664 +#: ../src/ui/dialog/tracedialog.cpp:665 msgid "Remo_ve background" msgstr "Eliminar color de _fondo" #. TRANSLATORS: "Layer" refers to one of the stacked paths in the multiscan -#: ../src/ui/dialog/tracedialog.cpp:669 +#: ../src/ui/dialog/tracedialog.cpp:670 msgid "Remove bottom (background) layer when done" msgstr "Eliminar la capa del fondo al terminar" -#: ../src/ui/dialog/tracedialog.cpp:674 +#: ../src/ui/dialog/tracedialog.cpp:675 msgid "Multiple scans: creates a group of paths" msgstr "Pasadas múltiples: crea un grupo de trayectos" #. # end multiple scan #. ## end mode page -#: ../src/ui/dialog/tracedialog.cpp:683 +#: ../src/ui/dialog/tracedialog.cpp:684 msgid "_Mode" msgstr "_Modo" #. ## begin option page #. # potrace parameters -#: ../src/ui/dialog/tracedialog.cpp:689 +#: ../src/ui/dialog/tracedialog.cpp:690 msgid "Suppress _speckles" msgstr "Eliminar mota_s" -#: ../src/ui/dialog/tracedialog.cpp:691 +#: ../src/ui/dialog/tracedialog.cpp:692 msgid "Ignore small spots (speckles) in the bitmap" msgstr "Desechar pequeños puntos (motas) en el mapa de bits" -#: ../src/ui/dialog/tracedialog.cpp:699 +#: ../src/ui/dialog/tracedialog.cpp:700 msgid "Speckles of up to this many pixels will be suppressed" msgstr "Las motas de hasta este tamaño serán eliminadas" -#: ../src/ui/dialog/tracedialog.cpp:702 +#: ../src/ui/dialog/tracedialog.cpp:703 msgid "S_ize:" msgstr "Ta_maño:" -#: ../src/ui/dialog/tracedialog.cpp:707 +#: ../src/ui/dialog/tracedialog.cpp:708 msgid "Smooth _corners" msgstr "S_uavizar bordes" -#: ../src/ui/dialog/tracedialog.cpp:709 +#: ../src/ui/dialog/tracedialog.cpp:710 msgid "Smooth out sharp corners of the trace" msgstr "Suavizar los bordes agudos del trazado" -#: ../src/ui/dialog/tracedialog.cpp:718 +#: ../src/ui/dialog/tracedialog.cpp:719 msgid "Increase this to smooth corners more" msgstr "Incremente el valor para redondear más los ángulos" -#: ../src/ui/dialog/tracedialog.cpp:725 +#: ../src/ui/dialog/tracedialog.cpp:726 msgid "Optimize p_aths" msgstr "Optimizar tr_ayectos" -#: ../src/ui/dialog/tracedialog.cpp:728 +#: ../src/ui/dialog/tracedialog.cpp:729 msgid "Try to optimize paths by joining adjacent Bezier curve segments" msgstr "" "Intentar optimizar trayectos juntando segmentos de curvas Bezier adyacentes" -#: ../src/ui/dialog/tracedialog.cpp:736 +#: ../src/ui/dialog/tracedialog.cpp:737 msgid "" "Increase this to reduce the number of nodes in the trace by more aggressive " "optimization" @@ -22584,17 +22709,17 @@ msgstr "" "Incremente esto para reducir el número de nodos del trazo mediante una " "optimización más agresiva" -#: ../src/ui/dialog/tracedialog.cpp:738 +#: ../src/ui/dialog/tracedialog.cpp:739 msgid "To_lerance:" msgstr "To_lerancia:" #. ## end option page -#: ../src/ui/dialog/tracedialog.cpp:752 +#: ../src/ui/dialog/tracedialog.cpp:753 msgid "O_ptions" msgstr "O_pciones" #. ### credits -#: ../src/ui/dialog/tracedialog.cpp:756 +#: ../src/ui/dialog/tracedialog.cpp:757 msgid "" "Inkscape bitmap tracing\n" "is based on Potrace,\n" @@ -22608,30 +22733,30 @@ msgstr "" "\n" "http://potrace.sourceforge.net" -#: ../src/ui/dialog/tracedialog.cpp:759 +#: ../src/ui/dialog/tracedialog.cpp:760 msgid "Credits" msgstr "Créditos" #. #### begin right panel #. ## SIOX -#: ../src/ui/dialog/tracedialog.cpp:773 +#: ../src/ui/dialog/tracedialog.cpp:774 msgid "SIOX _foreground selection" msgstr "Selección de _primer plano SIOX" -#: ../src/ui/dialog/tracedialog.cpp:776 +#: ../src/ui/dialog/tracedialog.cpp:777 msgid "Cover the area you want to select as the foreground" msgstr "Cubra el área que desee seleccionar como primer plano" -#: ../src/ui/dialog/tracedialog.cpp:781 +#: ../src/ui/dialog/tracedialog.cpp:782 msgid "Live Preview" msgstr "Vista en directo" -#: ../src/ui/dialog/tracedialog.cpp:787 +#: ../src/ui/dialog/tracedialog.cpp:788 msgid "_Update" msgstr "Act_ualizar" #. I guess it's correct to call the "intermediate bitmap" a preview of the trace -#: ../src/ui/dialog/tracedialog.cpp:795 +#: ../src/ui/dialog/tracedialog.cpp:796 msgid "" "Preview the intermediate bitmap with the current settings, without actual " "tracing" @@ -22639,46 +22764,46 @@ msgstr "" "Vista preliminar del mapa de bits intermedio con los ajustes actuales, sin " "vectorizar" -#: ../src/ui/dialog/tracedialog.cpp:799 +#: ../src/ui/dialog/tracedialog.cpp:800 msgid "Preview" msgstr "Vista preliminar" -#: ../src/ui/dialog/transformation.cpp:65 -#: ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/dialog/transformation.cpp:69 +#: ../src/ui/dialog/transformation.cpp:79 msgid "_Horizontal:" msgstr "_Horizontal:" -#: ../src/ui/dialog/transformation.cpp:65 +#: ../src/ui/dialog/transformation.cpp:69 msgid "Horizontal displacement (relative) or position (absolute)" msgstr "Desplazamiento (relativo) o posición (absoluta) horizontal" -#: ../src/ui/dialog/transformation.cpp:67 -#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:71 +#: ../src/ui/dialog/transformation.cpp:81 msgid "_Vertical:" msgstr "_Vertical:" -#: ../src/ui/dialog/transformation.cpp:67 +#: ../src/ui/dialog/transformation.cpp:71 msgid "Vertical displacement (relative) or position (absolute)" msgstr "Desplazamiento (relativo) o posición (absoluta) vertical" -#: ../src/ui/dialog/transformation.cpp:69 +#: ../src/ui/dialog/transformation.cpp:73 msgid "Horizontal size (absolute or percentage of current)" msgstr "Tamaño horizontal (absoluto o porcentaje dle actual)" -#: ../src/ui/dialog/transformation.cpp:71 +#: ../src/ui/dialog/transformation.cpp:75 msgid "Vertical size (absolute or percentage of current)" msgstr "Tamaño vertical (absoluto o porcentaje del actual)" -#: ../src/ui/dialog/transformation.cpp:73 +#: ../src/ui/dialog/transformation.cpp:77 msgid "A_ngle:" msgstr "Á_ngulo:" -#: ../src/ui/dialog/transformation.cpp:73 -#: ../src/ui/dialog/transformation.cpp:994 +#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:1102 msgid "Rotation angle (positive = counterclockwise)" msgstr "Ángulo de rotación (positivo = hacia la izquierda)" -#: ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/dialog/transformation.cpp:79 msgid "" "Horizontal skew angle (positive = counterclockwise), or absolute " "displacement, or percentage displacement" @@ -22686,7 +22811,7 @@ msgstr "" "Ángulo de inclinación horizontal (positivo = hacia la izquierda), o " "desplazamiento absoluto, o porcentaje de desplazamiento" -#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:81 msgid "" "Vertical skew angle (positive = counterclockwise), or absolute displacement, " "or percentage displacement" @@ -22694,35 +22819,35 @@ msgstr "" "Ángulo de inclinación vertical (positivo = hacia la izquierda), o " "desplazamiento absoluto, o porcentaje de desplazamiento" -#: ../src/ui/dialog/transformation.cpp:80 +#: ../src/ui/dialog/transformation.cpp:84 msgid "Transformation matrix element A" msgstr "Matriz de transformación elemento A" -#: ../src/ui/dialog/transformation.cpp:81 +#: ../src/ui/dialog/transformation.cpp:85 msgid "Transformation matrix element B" msgstr "Matriz de transformación elemento B" -#: ../src/ui/dialog/transformation.cpp:82 +#: ../src/ui/dialog/transformation.cpp:86 msgid "Transformation matrix element C" msgstr "Matriz de transformación elemento C" -#: ../src/ui/dialog/transformation.cpp:83 +#: ../src/ui/dialog/transformation.cpp:87 msgid "Transformation matrix element D" msgstr "Matriz de transformación elemento D" -#: ../src/ui/dialog/transformation.cpp:84 +#: ../src/ui/dialog/transformation.cpp:88 msgid "Transformation matrix element E" msgstr "Matriz de transformación elemento E" -#: ../src/ui/dialog/transformation.cpp:85 +#: ../src/ui/dialog/transformation.cpp:89 msgid "Transformation matrix element F" msgstr "Matriz de transformación elemento F" -#: ../src/ui/dialog/transformation.cpp:90 +#: ../src/ui/dialog/transformation.cpp:94 msgid "Rela_tive move" msgstr "Movimiento rela_tivo" -#: ../src/ui/dialog/transformation.cpp:90 +#: ../src/ui/dialog/transformation.cpp:94 msgid "" "Add the specified relative displacement to the current position; otherwise, " "edit the current absolute position directly" @@ -22730,19 +22855,19 @@ msgstr "" "Añadir el desplazamiento relativo a la posición actual; de lo contrario, " "editar directamente la posición actual" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:95 msgid "_Scale proportionally" msgstr "E_scalar proporcionalmente" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:95 msgid "Preserve the width/height ratio of the scaled objects" msgstr "Preservar la relación ancho/alto de los objetos escalados" -#: ../src/ui/dialog/transformation.cpp:92 +#: ../src/ui/dialog/transformation.cpp:96 msgid "Apply to each _object separately" msgstr "Aplicar a cada _objeto por separado" -#: ../src/ui/dialog/transformation.cpp:92 +#: ../src/ui/dialog/transformation.cpp:96 msgid "" "Apply the scale/rotate/skew to each selected object separately; otherwise, " "transform the selection as a whole" @@ -22750,11 +22875,11 @@ msgstr "" "Aplicar el escalado/rotación/inclinación a cada objeto seleccionado por " "separado; de lo contrario, transformar la selección como un solo objeto" -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:97 msgid "Edit c_urrent matrix" msgstr "Editar la matriz act_ual" -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:97 msgid "" "Edit the current transform= matrix; otherwise, post-multiply transform= by " "this matrix" @@ -22762,124 +22887,124 @@ msgstr "" "Editar la matriz «transform=» actual; de lo contrario, post-multiplicar " "«transform=» por esta matriz" -#: ../src/ui/dialog/transformation.cpp:106 +#: ../src/ui/dialog/transformation.cpp:110 msgid "_Scale" msgstr "E_scalar" -#: ../src/ui/dialog/transformation.cpp:109 +#: ../src/ui/dialog/transformation.cpp:113 msgid "_Rotate" msgstr "_Rotar" -#: ../src/ui/dialog/transformation.cpp:112 +#: ../src/ui/dialog/transformation.cpp:116 msgid "Ske_w" msgstr "In_clinar" -#: ../src/ui/dialog/transformation.cpp:115 +#: ../src/ui/dialog/transformation.cpp:119 msgid "Matri_x" msgstr "Matri_z" -#: ../src/ui/dialog/transformation.cpp:139 +#: ../src/ui/dialog/transformation.cpp:143 msgid "Reset the values on the current tab to defaults" msgstr "Restablecer los valores predeterminados de la solapa actual" -#: ../src/ui/dialog/transformation.cpp:146 +#: ../src/ui/dialog/transformation.cpp:150 msgid "Apply transformation to selection" msgstr "Aplicar la transformación a la selección" -#: ../src/ui/dialog/transformation.cpp:286 +#: ../src/ui/dialog/transformation.cpp:326 msgid "Rotate in a counterclockwise direction" msgstr "Girar hacia la izquierda" -#: ../src/ui/dialog/transformation.cpp:292 +#: ../src/ui/dialog/transformation.cpp:332 msgid "Rotate in a clockwise direction" msgstr "Girar hacia la derecha" -#: ../src/ui/dialog/transformation.cpp:797 -#: ../src/ui/dialog/transformation.cpp:808 -#: ../src/ui/dialog/transformation.cpp:822 -#: ../src/ui/dialog/transformation.cpp:841 -#: ../src/ui/dialog/transformation.cpp:852 -#: ../src/ui/dialog/transformation.cpp:862 -#: ../src/ui/dialog/transformation.cpp:886 +#: ../src/ui/dialog/transformation.cpp:905 +#: ../src/ui/dialog/transformation.cpp:916 +#: ../src/ui/dialog/transformation.cpp:930 +#: ../src/ui/dialog/transformation.cpp:949 +#: ../src/ui/dialog/transformation.cpp:960 +#: ../src/ui/dialog/transformation.cpp:970 +#: ../src/ui/dialog/transformation.cpp:994 msgid "Transform matrix is singular, not used." msgstr "La matriz de transformación es singular, no usado." -#: ../src/ui/dialog/transformation.cpp:902 +#: ../src/ui/dialog/transformation.cpp:1010 msgid "Edit transformation matrix" msgstr "Editar la matriz de transformación" -#: ../src/ui/dialog/transformation.cpp:1001 +#: ../src/ui/dialog/transformation.cpp:1109 msgid "Rotation angle (positive = clockwise)" msgstr "Ángulo de rotación (positivo = hacia la derecha)" -#: ../src/ui/dialog/xml-tree.cpp:65 ../src/ui/dialog/xml-tree.cpp:115 +#: ../src/ui/dialog/xml-tree.cpp:70 ../src/ui/dialog/xml-tree.cpp:126 msgid "New element node" msgstr "Nuevo nodo de elemento" -#: ../src/ui/dialog/xml-tree.cpp:66 ../src/ui/dialog/xml-tree.cpp:121 +#: ../src/ui/dialog/xml-tree.cpp:71 ../src/ui/dialog/xml-tree.cpp:132 msgid "New text node" msgstr "Nuevo nodo de texto" -#: ../src/ui/dialog/xml-tree.cpp:67 ../src/ui/dialog/xml-tree.cpp:135 +#: ../src/ui/dialog/xml-tree.cpp:72 ../src/ui/dialog/xml-tree.cpp:146 msgid "nodeAsInXMLdialogTooltip|Delete node" msgstr "Borrar nodo" -#: ../src/ui/dialog/xml-tree.cpp:68 ../src/ui/dialog/xml-tree.cpp:127 -#: ../src/ui/dialog/xml-tree.cpp:963 +#: ../src/ui/dialog/xml-tree.cpp:73 ../src/ui/dialog/xml-tree.cpp:138 +#: ../src/ui/dialog/xml-tree.cpp:986 msgid "Duplicate node" msgstr "Duplicar nodo" -#: ../src/ui/dialog/xml-tree.cpp:74 ../src/ui/dialog/xml-tree.cpp:188 -#: ../src/ui/dialog/xml-tree.cpp:999 +#: ../src/ui/dialog/xml-tree.cpp:79 ../src/ui/dialog/xml-tree.cpp:199 +#: ../src/ui/dialog/xml-tree.cpp:1022 msgid "Delete attribute" msgstr "Borrar atributo" -#: ../src/ui/dialog/xml-tree.cpp:78 +#: ../src/ui/dialog/xml-tree.cpp:87 msgid "Set" msgstr "Aceptar" -#: ../src/ui/dialog/xml-tree.cpp:110 +#: ../src/ui/dialog/xml-tree.cpp:121 msgid "Drag to reorder nodes" msgstr "Arrastrar para reordenar nodos" -#: ../src/ui/dialog/xml-tree.cpp:143 ../src/ui/dialog/xml-tree.cpp:144 -#: ../src/ui/dialog/xml-tree.cpp:1121 +#: ../src/ui/dialog/xml-tree.cpp:154 ../src/ui/dialog/xml-tree.cpp:155 +#: ../src/ui/dialog/xml-tree.cpp:1144 msgid "Unindent node" msgstr "Desangrar nodo" -#: ../src/ui/dialog/xml-tree.cpp:150 ../src/ui/dialog/xml-tree.cpp:151 -#: ../src/ui/dialog/xml-tree.cpp:1099 +#: ../src/ui/dialog/xml-tree.cpp:161 ../src/ui/dialog/xml-tree.cpp:162 +#: ../src/ui/dialog/xml-tree.cpp:1122 msgid "Indent node" msgstr "Sangrar nodo" -#: ../src/ui/dialog/xml-tree.cpp:157 ../src/ui/dialog/xml-tree.cpp:158 -#: ../src/ui/dialog/xml-tree.cpp:1050 +#: ../src/ui/dialog/xml-tree.cpp:168 ../src/ui/dialog/xml-tree.cpp:169 +#: ../src/ui/dialog/xml-tree.cpp:1073 msgid "Raise node" msgstr "Elevar nodo" -#: ../src/ui/dialog/xml-tree.cpp:164 ../src/ui/dialog/xml-tree.cpp:165 -#: ../src/ui/dialog/xml-tree.cpp:1068 +#: ../src/ui/dialog/xml-tree.cpp:175 ../src/ui/dialog/xml-tree.cpp:176 +#: ../src/ui/dialog/xml-tree.cpp:1091 msgid "Lower node" msgstr "Bajar nodo" -#: ../src/ui/dialog/xml-tree.cpp:205 +#: ../src/ui/dialog/xml-tree.cpp:216 msgid "Attribute name" msgstr "Nombre de atributo" -#: ../src/ui/dialog/xml-tree.cpp:220 +#: ../src/ui/dialog/xml-tree.cpp:231 msgid "Attribute value" msgstr "Valor del atributo" -#: ../src/ui/dialog/xml-tree.cpp:308 +#: ../src/ui/dialog/xml-tree.cpp:319 msgid "Click to select nodes, drag to rearrange." msgstr "" "Haga clic para seleccionar nodos, arrastre para reordenar." -#: ../src/ui/dialog/xml-tree.cpp:319 +#: ../src/ui/dialog/xml-tree.cpp:330 msgid "Click attribute to edit." msgstr "Haga clic en el atributo para editarlo." -#: ../src/ui/dialog/xml-tree.cpp:323 +#: ../src/ui/dialog/xml-tree.cpp:334 #, c-format msgid "" "Attribute %s selected. Press Ctrl+Enter when done editing to " @@ -22888,97 +23013,97 @@ msgstr "" "Ha seleccionado el atributo %s. Cuando termine, pulse Ctrl+Enter para guardar los cambios." -#: ../src/ui/dialog/xml-tree.cpp:563 +#: ../src/ui/dialog/xml-tree.cpp:574 msgid "Drag XML subtree" msgstr "Arrastrar subárbol XML" -#: ../src/ui/dialog/xml-tree.cpp:866 +#: ../src/ui/dialog/xml-tree.cpp:877 msgid "New element node..." msgstr "Nuevo nodo de elemento..." -#: ../src/ui/dialog/xml-tree.cpp:892 +#: ../src/ui/dialog/xml-tree.cpp:915 msgid "Cancel" msgstr "Cancelar" -#: ../src/ui/dialog/xml-tree.cpp:929 +#: ../src/ui/dialog/xml-tree.cpp:952 msgid "Create new element node" msgstr "Crear un nuevo nodo de elemento" -#: ../src/ui/dialog/xml-tree.cpp:945 +#: ../src/ui/dialog/xml-tree.cpp:968 msgid "Create new text node" msgstr "Crear un nuevo nodo de texto" -#: ../src/ui/dialog/xml-tree.cpp:980 +#: ../src/ui/dialog/xml-tree.cpp:1003 msgid "nodeAsInXMLinHistoryDialog|Delete node" msgstr "Borrar nodo" -#: ../src/ui/dialog/xml-tree.cpp:1024 +#: ../src/ui/dialog/xml-tree.cpp:1047 msgid "Change attribute" msgstr "Cambiar atributo" # File -#: ../src/ui/interface.cpp:727 +#: ../src/ui/interface.cpp:763 msgctxt "Interface setup" msgid "Default" msgstr "Predeterminada" -#: ../src/ui/interface.cpp:727 +#: ../src/ui/interface.cpp:763 msgid "Default interface setup" msgstr "Configuración predeterminada de la interfaz" -#: ../src/ui/interface.cpp:728 +#: ../src/ui/interface.cpp:764 msgctxt "Interface setup" msgid "Custom" msgstr "Personalizada" -#: ../src/ui/interface.cpp:728 +#: ../src/ui/interface.cpp:764 msgid "Setup for custom task" msgstr "Configuración de tarea personalizada" -#: ../src/ui/interface.cpp:729 +#: ../src/ui/interface.cpp:765 msgctxt "Interface setup" msgid "Wide" msgstr "Ancho" -#: ../src/ui/interface.cpp:729 +#: ../src/ui/interface.cpp:765 msgid "Setup for widescreen work" msgstr "Disposición para pantalla ancha" -#: ../src/ui/interface.cpp:835 +#: ../src/ui/interface.cpp:875 #, c-format msgid "Verb \"%s\" Unknown" msgstr "Verbo «%s» desconocido" -#: ../src/ui/interface.cpp:870 +#: ../src/ui/interface.cpp:910 msgid "Open _Recent" msgstr "Abrir _reciente" -#: ../src/ui/interface.cpp:978 ../src/ui/interface.cpp:1064 -#: ../src/ui/interface.cpp:1167 ../src/ui/widget/selected-style.cpp:509 +#: ../src/ui/interface.cpp:1018 ../src/ui/interface.cpp:1104 +#: ../src/ui/interface.cpp:1207 ../src/ui/widget/selected-style.cpp:543 msgid "Drop color" msgstr "Soltar color" -#: ../src/ui/interface.cpp:1017 ../src/ui/interface.cpp:1127 +#: ../src/ui/interface.cpp:1057 ../src/ui/interface.cpp:1167 msgid "Drop color on gradient" msgstr "Soltar color en degradado" -#: ../src/ui/interface.cpp:1180 +#: ../src/ui/interface.cpp:1220 msgid "Could not parse SVG data" msgstr "No se pudieron interpretar los datos SVG" -#: ../src/ui/interface.cpp:1219 +#: ../src/ui/interface.cpp:1259 msgid "Drop SVG" msgstr "Soltar SVG" -#: ../src/ui/interface.cpp:1232 +#: ../src/ui/interface.cpp:1272 msgid "Drop Symbol" msgstr "Soltar símbolo" -#: ../src/ui/interface.cpp:1263 +#: ../src/ui/interface.cpp:1303 msgid "Drop bitmap image" msgstr "Soltar mapa de bits" -#: ../src/ui/interface.cpp:1355 +#: ../src/ui/interface.cpp:1395 #, c-format msgid "" "A file named \"%s\" already exists. Do " @@ -22991,175 +23116,175 @@ msgstr "" "\n" "El archivo ya existe en «%s». Al reemplazarlo sobrescribirá su contenido." -#: ../src/ui/interface.cpp:1362 ../share/extensions/web-set-att.inx.h:21 +#: ../src/ui/interface.cpp:1402 ../share/extensions/web-set-att.inx.h:21 #: ../share/extensions/web-transmit-att.inx.h:19 msgid "Replace" msgstr "Reemplazar" -#: ../src/ui/interface.cpp:1433 +#: ../src/ui/interface.cpp:1473 msgid "Go to parent" msgstr "Ir al padre" #. TRANSLATORS: #%1 is the id of the group e.g. , not a number. -#: ../src/ui/interface.cpp:1474 +#: ../src/ui/interface.cpp:1514 msgid "Enter group #%1" msgstr "Entrar en el grupo #%1" #. Pop selection out of group -#: ../src/ui/interface.cpp:1488 +#: ../src/ui/interface.cpp:1528 msgid "_Pop selection out of group" msgstr "_Quitar a la selección del grupo" #. Item dialog -#: ../src/ui/interface.cpp:1616 ../src/verbs.cpp:2992 +#: ../src/ui/interface.cpp:1656 ../src/verbs.cpp:2954 msgid "_Object Properties..." msgstr "Propiedades del _objeto..." -#: ../src/ui/interface.cpp:1625 +#: ../src/ui/interface.cpp:1665 msgid "_Select This" msgstr "_Seleccionar esto" -#: ../src/ui/interface.cpp:1636 +#: ../src/ui/interface.cpp:1676 msgid "Select Same" msgstr "Seleccionar lo mismo" #. Select same fill and stroke -#: ../src/ui/interface.cpp:1646 +#: ../src/ui/interface.cpp:1686 msgid "Fill and Stroke" msgstr "Relleno y borde" #. Select same fill color -#: ../src/ui/interface.cpp:1653 +#: ../src/ui/interface.cpp:1693 msgid "Fill Color" msgstr "Color de relleno" #. Select same stroke color -#: ../src/ui/interface.cpp:1660 +#: ../src/ui/interface.cpp:1700 msgid "Stroke Color" msgstr "Color del trazo" #. Select same stroke style -#: ../src/ui/interface.cpp:1667 +#: ../src/ui/interface.cpp:1707 msgid "Stroke Style" msgstr "Estilo de trazo" #. Select same stroke style -#: ../src/ui/interface.cpp:1674 +#: ../src/ui/interface.cpp:1714 msgid "Object type" msgstr "Tipo de objeto" #. Move to layer -#: ../src/ui/interface.cpp:1681 +#: ../src/ui/interface.cpp:1721 msgid "_Move to layer ..." msgstr "_Mover a la capa..." #. Create link -#: ../src/ui/interface.cpp:1691 +#: ../src/ui/interface.cpp:1731 msgid "Create _Link" msgstr "Crear en_lace" #. Release mask -#: ../src/ui/interface.cpp:1725 +#: ../src/ui/interface.cpp:1765 msgid "Release Mask" msgstr "Liberar máscara" #. SSet Clip Group -#: ../src/ui/interface.cpp:1736 +#: ../src/ui/interface.cpp:1776 msgid "Create Clip G_roup" msgstr "Crear grupo de _recorte" #. Set Clip -#: ../src/ui/interface.cpp:1743 +#: ../src/ui/interface.cpp:1783 msgid "Set Cl_ip" msgstr "Apl_icar recorte" #. Release Clip -#: ../src/ui/interface.cpp:1754 +#: ../src/ui/interface.cpp:1794 msgid "Release C_lip" msgstr "_Liberar recorte" #. Group -#: ../src/ui/interface.cpp:1765 ../src/verbs.cpp:2599 +#: ../src/ui/interface.cpp:1805 ../src/verbs.cpp:2575 msgid "_Group" msgstr "A_grupar" -#: ../src/ui/interface.cpp:1836 +#: ../src/ui/interface.cpp:1876 msgid "Create link" msgstr "Crear enlace" #. Ungroup -#: ../src/ui/interface.cpp:1871 ../src/verbs.cpp:2601 +#: ../src/ui/interface.cpp:1911 ../src/verbs.cpp:2577 msgid "_Ungroup" msgstr "Desagr_upar" #. Link dialog -#: ../src/ui/interface.cpp:1901 +#: ../src/ui/interface.cpp:1941 msgid "Link _Properties..." msgstr "_Propiedades del enlace..." #. Select item -#: ../src/ui/interface.cpp:1907 +#: ../src/ui/interface.cpp:1947 msgid "_Follow Link" msgstr "Se_guir enlace" #. Reset transformations -#: ../src/ui/interface.cpp:1913 +#: ../src/ui/interface.cpp:1953 msgid "_Remove Link" msgstr "_Eliminar enlace" -#: ../src/ui/interface.cpp:1944 +#: ../src/ui/interface.cpp:1984 msgid "Remove link" msgstr "Eliminar enlace" #. Image properties -#: ../src/ui/interface.cpp:1954 +#: ../src/ui/interface.cpp:1994 msgid "Image _Properties..." msgstr "_Propiedades de la imagen..." #. Edit externally -#: ../src/ui/interface.cpp:1960 +#: ../src/ui/interface.cpp:2000 msgid "Edit Externally..." msgstr "Editar externamente..." #. Trace Bitmap #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/ui/interface.cpp:1969 ../src/verbs.cpp:2680 +#: ../src/ui/interface.cpp:2009 ../src/verbs.cpp:2642 msgid "_Trace Bitmap..." msgstr "Vec_torizar mapa de bits..." #. Trace Pixel Art -#: ../src/ui/interface.cpp:1978 +#: ../src/ui/interface.cpp:2018 msgid "Trace Pixel Art" msgstr "Trazar Pixel Art" -#: ../src/ui/interface.cpp:1988 +#: ../src/ui/interface.cpp:2028 msgctxt "Context menu" msgid "Embed Image" msgstr "Incrustar imagen" -#: ../src/ui/interface.cpp:1999 +#: ../src/ui/interface.cpp:2039 msgctxt "Context menu" msgid "Extract Image..." msgstr "Extraer imagen..." #. Item dialog #. Fill and Stroke dialog -#: ../src/ui/interface.cpp:2143 ../src/ui/interface.cpp:2163 -#: ../src/verbs.cpp:2955 +#: ../src/ui/interface.cpp:2183 ../src/ui/interface.cpp:2203 +#: ../src/verbs.cpp:2917 msgid "_Fill and Stroke..." msgstr "_Relleno y borde..." #. Edit Text dialog -#: ../src/ui/interface.cpp:2169 ../src/verbs.cpp:2974 +#: ../src/ui/interface.cpp:2209 ../src/verbs.cpp:2936 msgid "_Text and Font..." msgstr "_Texto y tipografía..." #. Spellcheck dialog -#: ../src/ui/interface.cpp:2175 ../src/verbs.cpp:2982 +#: ../src/ui/interface.cpp:2215 ../src/verbs.cpp:2944 msgid "Check Spellin_g..." msgstr "Comprobar orto_grafía..." -#: ../src/ui/object-edit.cpp:445 +#: ../src/ui/object-edit.cpp:484 msgid "" "Adjust the horizontal rounding radius; with Ctrl to make the " "vertical radius the same" @@ -23167,7 +23292,7 @@ msgstr "" "Ajustar el radio de redondeo horizontal; con Ctrl para " "coordinar con el radio vertical" -#: ../src/ui/object-edit.cpp:450 +#: ../src/ui/object-edit.cpp:489 msgid "" "Adjust the vertical rounding radius; with Ctrl to make the " "horizontal radius the same" @@ -23175,7 +23300,7 @@ msgstr "" "Ajustar el radio de redondeo vertical; con Ctrl para coordinar " "con el radio horizontal" -#: ../src/ui/object-edit.cpp:455 ../src/ui/object-edit.cpp:460 +#: ../src/ui/object-edit.cpp:494 ../src/ui/object-edit.cpp:499 msgid "" "Adjust the width and height of the rectangle; with Ctrl to " "lock ratio or stretch in one dimension only" @@ -23183,8 +23308,12 @@ msgstr "" "Ajustar la altura y anchura del rectángulo; con Ctrl para " "bloquear la proporción o estirar en una sola dirección" -#: ../src/ui/object-edit.cpp:707 ../src/ui/object-edit.cpp:711 -#: ../src/ui/object-edit.cpp:715 ../src/ui/object-edit.cpp:719 +#: ../src/ui/object-edit.cpp:504 +msgid "Drag to move the rectangle" +msgstr "Arrastre para mover el rectángulo" + +#: ../src/ui/object-edit.cpp:751 ../src/ui/object-edit.cpp:755 +#: ../src/ui/object-edit.cpp:759 ../src/ui/object-edit.cpp:763 msgid "" "Resize box in X/Y direction; with Shift along the Z axis; with " "Ctrl to constrain to the directions of edges or diagonals" @@ -23192,8 +23321,8 @@ msgstr "" "Redimensionar caja en dirección X/Y, con Mayús por el eje Z; con " "Ctrl para restringir a las direcciones de los bordes o diagonales" -#: ../src/ui/object-edit.cpp:723 ../src/ui/object-edit.cpp:727 -#: ../src/ui/object-edit.cpp:731 ../src/ui/object-edit.cpp:735 +#: ../src/ui/object-edit.cpp:767 ../src/ui/object-edit.cpp:771 +#: ../src/ui/object-edit.cpp:775 ../src/ui/object-edit.cpp:779 msgid "" "Resize box along the Z axis; with Shift in X/Y direction; with " "Ctrl to constrain to the directions of edges or diagonals" @@ -23201,22 +23330,22 @@ msgstr "" "Redimensionar caja por el eje Z, con Mayús en dirección X/Y; con " "Ctrl para restringir a las direcciones de los bordes o diagonales" -#: ../src/ui/object-edit.cpp:739 +#: ../src/ui/object-edit.cpp:783 msgid "Move the box in perspective" msgstr "Mover la caja en perspectiva" -#: ../src/ui/object-edit.cpp:991 +#: ../src/ui/object-edit.cpp:1066 msgid "Adjust ellipse width, with Ctrl to make circle" msgstr "" "Ajustar el ancho de la elipse; con Ctrl para hacer un círculo" -#: ../src/ui/object-edit.cpp:995 +#: ../src/ui/object-edit.cpp:1070 msgid "Adjust ellipse height, with Ctrl to make circle" msgstr "" "Ajustar el alto y el ancho del rectángulo; con Ctrl para " "bloquear la proporción" -#: ../src/ui/object-edit.cpp:999 +#: ../src/ui/object-edit.cpp:1074 msgid "" "Position the start point of the arc or segment; with Shift to " "move with end point; with Ctrl to snap angle; drag insideCtrl para fijar el ángulo; arrastre por dentro " "para obtener la elipse del arco, por fuera para obtener el segmento" -#: ../src/ui/object-edit.cpp:1005 +#: ../src/ui/object-edit.cpp:1080 msgid "" "Position the end point of the arc or segment; with Shift to " "move with start point; with Ctrl to snap angle; drag " @@ -23236,7 +23365,11 @@ msgstr "" "acompañar, con Ctrl para fijar el ángulo; arrastre por dentro " "para obtener la elipse del arco, por fuera para obtener el segmento." -#: ../src/ui/object-edit.cpp:1152 +#: ../src/ui/object-edit.cpp:1086 +msgid "Drag to move the ellipse" +msgstr "Arrastre para mover la elipse" + +#: ../src/ui/object-edit.cpp:1260 msgid "" "Adjust the tip radius of the star or polygon; with Shift to " "round; with Alt to randomize" @@ -23244,7 +23377,7 @@ msgstr "" "Ajusta el radio base de la estrella o polígono; con Ctrl para " "redondear; con Alt para aleatorizar" -#: ../src/ui/object-edit.cpp:1160 +#: ../src/ui/object-edit.cpp:1268 msgid "" "Adjust the base radius of the star; with Ctrl to keep star " "rays radial (no skew); with Shift to round; with Alt to " @@ -23254,8 +23387,12 @@ msgstr "" "los rayos de la estrella radiales (sin inclinación); con Mayús para " "redondear, con Alt para aleatorizar" +#: ../src/ui/object-edit.cpp:1275 +msgid "Drag to move the star" +msgstr "Arrastre para mover la estrella" + # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/object-edit.cpp:1355 +#: ../src/ui/object-edit.cpp:1469 msgid "" "Roll/unroll the spiral from inside; with Ctrl to snap angle; " "with Alt to converge/diverge" @@ -23264,7 +23401,7 @@ msgstr "" "ajustar al ángulo; con Alt para converger/divergir" # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/object-edit.cpp:1359 +#: ../src/ui/object-edit.cpp:1473 msgid "" "Roll/unroll the spiral from outside; with Ctrl to snap angle; " "with Shift to scale/rotate; with Alt to lock radius" @@ -23273,34 +23410,34 @@ msgstr "" "ajustar al ángulo; con Mayús para escalar/rotar, con Alt para " "bloquear radio" -#: ../src/ui/object-edit.cpp:1408 +#: ../src/ui/object-edit.cpp:1522 msgid "Adjust the offset distance" msgstr "Ajustar la distancia de desvío" -#: ../src/ui/object-edit.cpp:1445 +#: ../src/ui/object-edit.cpp:1559 msgid "Drag to resize the flowed text frame" msgstr "Arrastre para redimensionar el marco de texto fluido" -#: ../src/ui/tool/curve-drag-point.cpp:128 +#: ../src/ui/tool/curve-drag-point.cpp:131 msgid "Drag curve" msgstr "Arrastrar curva" -#: ../src/ui/tool/curve-drag-point.cpp:189 +#: ../src/ui/tool/curve-drag-point.cpp:192 msgctxt "Path segment tip" msgid "Shift: drag to open or move BSpline handles" msgstr "Mayús: arrastre para abrir o mover tiradores BSpline" -#: ../src/ui/tool/curve-drag-point.cpp:193 +#: ../src/ui/tool/curve-drag-point.cpp:196 msgctxt "Path segment tip" msgid "Shift: click to toggle segment selection" msgstr "Mayús: pulse para intercambiar la selección de segmento" -#: ../src/ui/tool/curve-drag-point.cpp:197 +#: ../src/ui/tool/curve-drag-point.cpp:200 msgctxt "Path segment tip" msgid "Ctrl+Alt: click to insert a node" msgstr "Ctrl+Alt: pulse para insertar un nodo" -#: ../src/ui/tool/curve-drag-point.cpp:201 +#: ../src/ui/tool/curve-drag-point.cpp:204 msgctxt "Path segment tip" msgid "" "BSpline segment: drag to shape the segment, doubleclick to insert " @@ -23310,7 +23447,7 @@ msgstr "" "pulsación para insertar un nodo, pulse para seleccionar (más: Mayús, Ctrl" "+Alt)" -#: ../src/ui/tool/curve-drag-point.cpp:206 +#: ../src/ui/tool/curve-drag-point.cpp:209 msgctxt "Path segment tip" msgid "" "Linear segment: drag to convert to a Bezier segment, doubleclick to " @@ -23320,7 +23457,7 @@ msgstr "" "pulsación para insertar un nodo, pulse para seleccionar (más: Mayús, Ctrl" "+Alt)" -#: ../src/ui/tool/curve-drag-point.cpp:210 +#: ../src/ui/tool/curve-drag-point.cpp:213 msgctxt "Path segment tip" msgid "" "Bezier segment: drag to shape the segment, doubleclick to insert " @@ -23329,131 +23466,131 @@ msgstr "" "Segmento Bézier: arrastre para dar forma al segmento, doble pulsación " "para insertar un nodo, pulse para seleccionar (más: Mayús, Ctrl+Alt)" -#: ../src/ui/tool/multi-path-manipulator.cpp:313 +#: ../src/ui/tool/multi-path-manipulator.cpp:315 msgid "Retract handles" msgstr "Retraer tiradores" -#: ../src/ui/tool/multi-path-manipulator.cpp:313 ../src/ui/tool/node.cpp:292 +#: ../src/ui/tool/multi-path-manipulator.cpp:315 ../src/ui/tool/node.cpp:297 msgid "Change node type" msgstr "Cambiar tipo de nodo" -#: ../src/ui/tool/multi-path-manipulator.cpp:321 +#: ../src/ui/tool/multi-path-manipulator.cpp:323 msgid "Straighten segments" msgstr "Enderezar segmentos" -#: ../src/ui/tool/multi-path-manipulator.cpp:323 +#: ../src/ui/tool/multi-path-manipulator.cpp:325 msgid "Make segments curves" msgstr "Convertir los segmentos seleccionados a curvas" -#: ../src/ui/tool/multi-path-manipulator.cpp:331 -#: ../src/ui/tool/multi-path-manipulator.cpp:345 +#: ../src/ui/tool/multi-path-manipulator.cpp:333 +#: ../src/ui/tool/multi-path-manipulator.cpp:347 msgid "Add nodes" msgstr "Añadir nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:337 +#: ../src/ui/tool/multi-path-manipulator.cpp:339 msgid "Add extremum nodes" msgstr "Añadir nodos extremos" -#: ../src/ui/tool/multi-path-manipulator.cpp:352 +#: ../src/ui/tool/multi-path-manipulator.cpp:354 msgid "Duplicate nodes" msgstr "Duplicar nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:415 -#: ../src/widgets/node-toolbar.cpp:406 +#: ../src/ui/tool/multi-path-manipulator.cpp:417 +#: ../src/widgets/node-toolbar.cpp:408 msgid "Join nodes" msgstr "Unir nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:422 -#: ../src/widgets/node-toolbar.cpp:417 +#: ../src/ui/tool/multi-path-manipulator.cpp:424 +#: ../src/widgets/node-toolbar.cpp:419 msgid "Break nodes" msgstr "Romper nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:429 +#: ../src/ui/tool/multi-path-manipulator.cpp:431 msgid "Delete nodes" msgstr "Borrar nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:775 +#: ../src/ui/tool/multi-path-manipulator.cpp:777 msgid "Move nodes" msgstr "Mover nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:778 +#: ../src/ui/tool/multi-path-manipulator.cpp:780 msgid "Move nodes horizontally" msgstr "Mover los nodos horizontalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:782 +#: ../src/ui/tool/multi-path-manipulator.cpp:784 msgid "Move nodes vertically" msgstr "Mover los nodos verticalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:786 -#: ../src/ui/tool/multi-path-manipulator.cpp:789 +#: ../src/ui/tool/multi-path-manipulator.cpp:788 +#: ../src/ui/tool/multi-path-manipulator.cpp:791 msgid "Rotate nodes" msgstr "Rotar nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:793 -#: ../src/ui/tool/multi-path-manipulator.cpp:799 +#: ../src/ui/tool/multi-path-manipulator.cpp:795 +#: ../src/ui/tool/multi-path-manipulator.cpp:801 msgid "Scale nodes uniformly" msgstr "Escalar nodos uniformemente" -#: ../src/ui/tool/multi-path-manipulator.cpp:796 +#: ../src/ui/tool/multi-path-manipulator.cpp:798 msgid "Scale nodes" msgstr "Escalar nodos" -#: ../src/ui/tool/multi-path-manipulator.cpp:803 +#: ../src/ui/tool/multi-path-manipulator.cpp:805 msgid "Scale nodes horizontally" msgstr "Escalar los nodos horizontalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:807 +#: ../src/ui/tool/multi-path-manipulator.cpp:809 msgid "Scale nodes vertically" msgstr "Escalar los nodos verticalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:811 +#: ../src/ui/tool/multi-path-manipulator.cpp:813 msgid "Skew nodes horizontally" msgstr "Inclinar los nodos horizontalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:815 +#: ../src/ui/tool/multi-path-manipulator.cpp:817 msgid "Skew nodes vertically" msgstr "Inclinar los nodos verticalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:819 +#: ../src/ui/tool/multi-path-manipulator.cpp:821 msgid "Flip nodes horizontally" msgstr "Reflejar los nodos horizontalmente" -#: ../src/ui/tool/multi-path-manipulator.cpp:822 +#: ../src/ui/tool/multi-path-manipulator.cpp:824 msgid "Flip nodes vertically" msgstr "Reflejar los nodos verticalmente" -#: ../src/ui/tool/node.cpp:267 +#: ../src/ui/tool/node.cpp:272 msgid "Cusp node handle" msgstr "Tirador del nodo vértice" -#: ../src/ui/tool/node.cpp:268 +#: ../src/ui/tool/node.cpp:273 msgid "Smooth node handle" msgstr "Tirador de nodo suave" -#: ../src/ui/tool/node.cpp:269 +#: ../src/ui/tool/node.cpp:274 msgid "Symmetric node handle" msgstr "Tirador de nodo simétrico" -#: ../src/ui/tool/node.cpp:270 +#: ../src/ui/tool/node.cpp:275 msgid "Auto-smooth node handle" msgstr "Tirador de nodo auto-suave" -#: ../src/ui/tool/node.cpp:486 +#: ../src/ui/tool/node.cpp:494 msgctxt "Path handle tip" msgid "more: Shift, Ctrl, Alt" msgstr "más: Mayús, Ctrl, Alt" -#: ../src/ui/tool/node.cpp:488 +#: ../src/ui/tool/node.cpp:496 msgctxt "Path handle tip" msgid "more: Ctrl" msgstr "más: Ctrl" -#: ../src/ui/tool/node.cpp:490 +#: ../src/ui/tool/node.cpp:498 msgctxt "Path handle tip" msgid "more: Ctrl, Alt" msgstr "más: Ctrl, Alt" -#: ../src/ui/tool/node.cpp:496 +#: ../src/ui/tool/node.cpp:504 #, c-format msgctxt "Path handle tip" msgid "" @@ -23463,7 +23600,7 @@ msgstr "" "Mayús+Ctrl+Alt: conserva la longitud y ajusta el ángulo de rotación a " "incrementos de %g° mientras rotan ambos tiradores" -#: ../src/ui/tool/node.cpp:501 +#: ../src/ui/tool/node.cpp:509 #, c-format msgctxt "Path handle tip" msgid "" @@ -23472,18 +23609,18 @@ msgstr "" "Ctrl+Alt: conserva longitud y ajusta el ángulo de rotación a " "incrementos de %g°" -#: ../src/ui/tool/node.cpp:507 +#: ../src/ui/tool/node.cpp:515 msgctxt "Path handle tip" msgid "Shift+Alt: preserve handle length and rotate both handles" msgstr "" "Mayús+Alt: conserva la longitud del tirador y rotar ambos tiradores" -#: ../src/ui/tool/node.cpp:510 +#: ../src/ui/tool/node.cpp:518 msgctxt "Path handle tip" msgid "Alt: preserve handle length while dragging" msgstr "Alt: conserva la longitud del tirador al arrastrar" -#: ../src/ui/tool/node.cpp:517 +#: ../src/ui/tool/node.cpp:525 #, c-format msgctxt "Path handle tip" msgid "" @@ -23493,14 +23630,14 @@ msgstr "" "Mayús+Ctrl: fijar ángulo de rotación a incrementos de %g° y rotar " "ambos tiradores" -#: ../src/ui/tool/node.cpp:521 +#: ../src/ui/tool/node.cpp:529 msgctxt "Path handle tip" msgid "Ctrl: Snap handle to steps defined in BSpline Live Path Effect" msgstr "" "Ctrl: Ajustar tirador a los pasos definidos en el efecto de trayecto " "vivo" -#: ../src/ui/tool/node.cpp:524 +#: ../src/ui/tool/node.cpp:532 #, c-format msgctxt "Path handle tip" msgid "Ctrl: snap rotation angle to %g° increments, click to retract" @@ -23508,23 +23645,23 @@ msgstr "" "Ctrl: fijar ángulo de rotación a incrementos de %g°, pulsar para " "replegar" -#: ../src/ui/tool/node.cpp:529 +#: ../src/ui/tool/node.cpp:537 msgctxt "Path hande tip" msgid "Shift: rotate both handles by the same angle" msgstr "Mayús: rotar ambos tirados por el mismo ángulo" -#: ../src/ui/tool/node.cpp:532 +#: ../src/ui/tool/node.cpp:540 msgctxt "Path hande tip" msgid "Shift: move handle" msgstr "Mayús: mover tirador" -#: ../src/ui/tool/node.cpp:539 ../src/ui/tool/node.cpp:543 +#: ../src/ui/tool/node.cpp:547 ../src/ui/tool/node.cpp:551 #, c-format msgctxt "Path handle tip" msgid "Auto node handle: drag to convert to smooth node (%s)" msgstr "Tirador auto nodo: arrastrar para convertir a nodo suave (%s)" -#: ../src/ui/tool/node.cpp:546 +#: ../src/ui/tool/node.cpp:554 #, c-format msgctxt "Path handle tip" msgid "" @@ -23534,49 +23671,49 @@ msgstr "" "Tirador de nodo BSpline: Mayús para arrastrar, doble pulsación para " "reiniciar (%s). Potencia %g" -#: ../src/ui/tool/node.cpp:566 +#: ../src/ui/tool/node.cpp:574 #, c-format msgctxt "Path handle tip" msgid "Move handle by %s, %s; angle %.2f°, length %s" msgstr "Mover el tirador %s, %s; ángulo %.2f°, longitud %s" -#: ../src/ui/tool/node.cpp:1414 +#: ../src/ui/tool/node.cpp:1425 msgctxt "Path node tip" msgid "Shift: drag out a handle, click to toggle selection" msgstr "Mayús: arrastrar un tirador, pulsar para conmutar la selección" -#: ../src/ui/tool/node.cpp:1416 +#: ../src/ui/tool/node.cpp:1427 msgctxt "Path node tip" msgid "Shift: click to toggle selection" msgstr "Mayús: pulsar para intercambiar selección" -#: ../src/ui/tool/node.cpp:1421 +#: ../src/ui/tool/node.cpp:1432 msgctxt "Path node tip" msgid "Ctrl+Alt: move along handle lines, click to delete node" msgstr "" "Ctrl+Alt: mover a lo largo de las líneas de los tiradores, pulsar " "para borrar un nodo" -#: ../src/ui/tool/node.cpp:1424 +#: ../src/ui/tool/node.cpp:1435 msgctxt "Path node tip" msgid "Ctrl: move along axes, click to change node type" msgstr "" "Ctrl: mover a lo largo de los ejes, pulsar para cambiar el tipo de " "nodo" -#: ../src/ui/tool/node.cpp:1428 +#: ../src/ui/tool/node.cpp:1439 msgctxt "Path node tip" msgid "Alt: sculpt nodes" msgstr "Alt: esculpir nodos" -#: ../src/ui/tool/node.cpp:1437 +#: ../src/ui/tool/node.cpp:1448 #, c-format msgctxt "Path node tip" msgid "%s: drag to shape the path (more: Shift, Ctrl, Alt)" msgstr "" "%s: arrastrar para dar forma al trayecto (más: Mayús, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1440 +#: ../src/ui/tool/node.cpp:1451 #, c-format msgctxt "Path node tip" msgid "" @@ -23586,7 +23723,7 @@ msgstr "" "Nodo BSpline: arrastrar para dar forma al trayecto (más: Mayús, Ctrl, " "Alt). Poder %g" -#: ../src/ui/tool/node.cpp:1443 +#: ../src/ui/tool/node.cpp:1454 #, c-format msgctxt "Path node tip" msgid "" @@ -23596,7 +23733,7 @@ msgstr "" "%s: arrastrar para dar forma al trayecto, pulsar para conmutar los " "tiradoes de escalado/rotación (más: Mayús, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1447 +#: ../src/ui/tool/node.cpp:1458 #, c-format msgctxt "Path node tip" msgid "" @@ -23606,7 +23743,7 @@ msgstr "" "%s: arrastrar para dar forma al trayecto, pulsar para seleccionar " "solo este nodo (más: Mayús, Ctrl, Alt)" -#: ../src/ui/tool/node.cpp:1450 +#: ../src/ui/tool/node.cpp:1461 #, c-format msgctxt "Path node tip" msgid "" @@ -23616,61 +23753,61 @@ msgstr "" "Nodo BSpline: arrastrar para dar forma al trayecto, pulsar para " "seleccionar solo este nodo (más: Mayús, Ctrl, Alt). Poder %g" -#: ../src/ui/tool/node.cpp:1463 +#: ../src/ui/tool/node.cpp:1474 #, c-format msgctxt "Path node tip" msgid "Move node by %s, %s" msgstr "Mover nodo %s, %s" -#: ../src/ui/tool/node.cpp:1474 +#: ../src/ui/tool/node.cpp:1485 msgid "Symmetric node" msgstr "Nodo simétrico" -#: ../src/ui/tool/node.cpp:1475 +#: ../src/ui/tool/node.cpp:1486 msgid "Auto-smooth node" msgstr "Nodo auto-suave" -#: ../src/ui/tool/path-manipulator.cpp:283 +#: ../src/ui/tool/path-manipulator.cpp:296 msgid "Add node" msgstr "Añadir nodo" -#: ../src/ui/tool/path-manipulator.cpp:848 +#: ../src/ui/tool/path-manipulator.cpp:861 msgid "Scale handle" msgstr "Tirador de escala" -#: ../src/ui/tool/path-manipulator.cpp:872 +#: ../src/ui/tool/path-manipulator.cpp:885 msgid "Rotate handle" msgstr "Tirador de rotación" #. We need to call MPM's method because it could have been our last node -#: ../src/ui/tool/path-manipulator.cpp:1545 ../src/widgets/node-toolbar.cpp:395 +#: ../src/ui/tool/path-manipulator.cpp:1558 ../src/widgets/node-toolbar.cpp:397 msgid "Delete node" msgstr "Borrar nodo" -#: ../src/ui/tool/path-manipulator.cpp:1553 +#: ../src/ui/tool/path-manipulator.cpp:1566 msgid "Cycle node type" msgstr "Ciclar tipo de nodo" -#: ../src/ui/tool/path-manipulator.cpp:1568 +#: ../src/ui/tool/path-manipulator.cpp:1581 msgid "Drag handle" msgstr "Tirador de arrastre" -#: ../src/ui/tool/path-manipulator.cpp:1577 +#: ../src/ui/tool/path-manipulator.cpp:1590 msgid "Retract handle" msgstr "Retraer tirador" -#: ../src/ui/tool/transform-handle-set.cpp:199 +#: ../src/ui/tool/transform-handle-set.cpp:203 msgctxt "Transform handle tip" msgid "Shift+Ctrl: scale uniformly about the rotation center" msgstr "" "Mayús+Ctrl: escalar uniformemente alrededor del centro de rotación" -#: ../src/ui/tool/transform-handle-set.cpp:201 +#: ../src/ui/tool/transform-handle-set.cpp:205 msgctxt "Transform handle tip" msgid "Ctrl: scale uniformly" msgstr "Ctrl: escalar uniformemente" -#: ../src/ui/tool/transform-handle-set.cpp:206 +#: ../src/ui/tool/transform-handle-set.cpp:210 msgctxt "Transform handle tip" msgid "" "Shift+Alt: scale using an integer ratio about the rotation center" @@ -23678,28 +23815,28 @@ msgstr "" "Mayús+Alt: escalar alrededor del centro de rotación usando un ratio " "entero" -#: ../src/ui/tool/transform-handle-set.cpp:208 +#: ../src/ui/tool/transform-handle-set.cpp:212 msgctxt "Transform handle tip" msgid "Shift: scale from the rotation center" msgstr "Mayús: escalar desde el centro de rotación" -#: ../src/ui/tool/transform-handle-set.cpp:211 +#: ../src/ui/tool/transform-handle-set.cpp:215 msgctxt "Transform handle tip" msgid "Alt: scale using an integer ratio" msgstr "Alt: escalar usando un ratio entero" -#: ../src/ui/tool/transform-handle-set.cpp:213 +#: ../src/ui/tool/transform-handle-set.cpp:217 msgctxt "Transform handle tip" msgid "Scale handle: drag to scale the selection" msgstr "Escalar tirador: arrastre para escalar la selección" -#: ../src/ui/tool/transform-handle-set.cpp:218 +#: ../src/ui/tool/transform-handle-set.cpp:222 #, c-format msgctxt "Transform handle tip" msgid "Scale by %.2f%% x %.2f%%" msgstr "Escalar %.2f%% x %.2f%%" -#: ../src/ui/tool/transform-handle-set.cpp:445 +#: ../src/ui/tool/transform-handle-set.cpp:449 #, c-format msgctxt "Transform handle tip" msgid "" @@ -23709,18 +23846,18 @@ msgstr "" "Mayús+Ctrl: rotar alrededor de la esquina opuesta y ajustar el ángulo " "a incrementos de %f°" -#: ../src/ui/tool/transform-handle-set.cpp:448 +#: ../src/ui/tool/transform-handle-set.cpp:452 msgctxt "Transform handle tip" msgid "Shift: rotate around the opposite corner" msgstr "Mayús: rotar alrededor de la esquina opuesta" -#: ../src/ui/tool/transform-handle-set.cpp:452 +#: ../src/ui/tool/transform-handle-set.cpp:456 #, c-format msgctxt "Transform handle tip" msgid "Ctrl: snap angle to %f° increments" msgstr "Ctrl: ajustar el ángulo a incrementos de %f" -#: ../src/ui/tool/transform-handle-set.cpp:454 +#: ../src/ui/tool/transform-handle-set.cpp:458 msgctxt "Transform handle tip" msgid "" "Rotation handle: drag to rotate the selection around the rotation " @@ -23730,13 +23867,13 @@ msgstr "" "centro de rotación" #. event -#: ../src/ui/tool/transform-handle-set.cpp:459 +#: ../src/ui/tool/transform-handle-set.cpp:463 #, c-format msgctxt "Transform handle tip" msgid "Rotate by %.2f°" msgstr "Rotar %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:584 +#: ../src/ui/tool/transform-handle-set.cpp:588 #, c-format msgctxt "Transform handle tip" msgid "" @@ -23746,18 +23883,18 @@ msgstr "" "Mayús+Ctrl: inclinar con respecto al centro de rotación ajustando a " "incrementos de %f°" -#: ../src/ui/tool/transform-handle-set.cpp:587 +#: ../src/ui/tool/transform-handle-set.cpp:591 msgctxt "Transform handle tip" msgid "Shift: skew about the rotation center" msgstr "Mayús: inclinar con respecto al centro de rotación" -#: ../src/ui/tool/transform-handle-set.cpp:591 +#: ../src/ui/tool/transform-handle-set.cpp:595 #, c-format msgctxt "Transform handle tip" msgid "Ctrl: snap skew angle to %f° increments" msgstr "Ctrl: fijar el ángulo de inclinación a incrementos de %f°" -#: ../src/ui/tool/transform-handle-set.cpp:594 +#: ../src/ui/tool/transform-handle-set.cpp:598 msgctxt "Transform handle tip" msgid "" "Skew handle: drag to skew (shear) selection about the opposite handle" @@ -23765,26 +23902,26 @@ msgstr "" "Tirador de inclinación: arrastrar para inclinar la selección con " "respecto al tirador opuesto" -#: ../src/ui/tool/transform-handle-set.cpp:600 +#: ../src/ui/tool/transform-handle-set.cpp:604 #, c-format msgctxt "Transform handle tip" msgid "Skew horizontally by %.2f°" msgstr "Inclinar horizontalmente %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:603 +#: ../src/ui/tool/transform-handle-set.cpp:607 #, c-format msgctxt "Transform handle tip" msgid "Skew vertically by %.2f°" msgstr "Inclinar verticalmente %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:662 +#: ../src/ui/tool/transform-handle-set.cpp:666 msgctxt "Transform handle tip" msgid "Rotation center: drag to change the origin of transforms" msgstr "" "Centro de rotación: arrastrar para cambiar el origen de las " "transformaciones" -#: ../src/ui/tools-switch.cpp:95 +#: ../src/ui/tools-switch.cpp:101 msgid "" "Click to Select and Transform objects, Drag to select many " "objects." @@ -23792,16 +23929,16 @@ msgstr "" "Haga clic para seleccionar y transformar objetos, arrastre " "para seleccionar varios objetos." -#: ../src/ui/tools-switch.cpp:96 +#: ../src/ui/tools-switch.cpp:102 msgid "Modify selected path points (nodes) directly." msgstr "Modifica puntos de trayecto seleccionados (nodos) directamente." -#: ../src/ui/tools-switch.cpp:97 +#: ../src/ui/tools-switch.cpp:103 msgid "To tweak a path by pushing, select it and drag over it." msgstr "" "Para retocar un trayecto empujándolo, selecciónelo y arrastre por encima." -#: ../src/ui/tools-switch.cpp:98 +#: ../src/ui/tools-switch.cpp:104 msgid "" "Drag, click or click and scroll to spray the selected " "objects." @@ -23809,7 +23946,7 @@ msgstr "" "Arrastre, pulse o gire la rueda para esparcir los " "objetos seleccionados." -#: ../src/ui/tools-switch.cpp:99 +#: ../src/ui/tools-switch.cpp:105 msgid "" "Drag to create a rectangle. Drag controls to round corners and " "resize. Click to select." @@ -23817,7 +23954,7 @@ msgstr "" "Arrastre para crear un rectángulo. Arrastre los controles para " "redondear las esquinas y redimensionar. Haga clic para seleccionar." -#: ../src/ui/tools-switch.cpp:100 +#: ../src/ui/tools-switch.cpp:106 msgid "" "Drag to create a 3D box. Drag controls to resize in " "perspective. Click to select (with Ctrl+Alt for single faces)." @@ -23826,7 +23963,7 @@ msgstr "" "redimensionar en perspectiva. Pulse para seleccionar (con Ctrl" "+Alt para una sola cara)." -#: ../src/ui/tools-switch.cpp:101 +#: ../src/ui/tools-switch.cpp:107 msgid "" "Drag to create an ellipse. Drag controls to make an arc or " "segment. Click to select." @@ -23834,7 +23971,7 @@ msgstr "" "Arrastre para crear una elipse. Arrastre los controles para " "crear un arco o un segmento. Haga clic para seleccionar." -#: ../src/ui/tools-switch.cpp:102 +#: ../src/ui/tools-switch.cpp:108 msgid "" "Drag to create a star. Drag controls to edit the star shape. " "Click to select." @@ -23842,7 +23979,7 @@ msgstr "" "Arrastre para crear una estrella. Arrastre los controles para " "editar la forma de la estrella. Haga clic para seleccionar." -#: ../src/ui/tools-switch.cpp:103 +#: ../src/ui/tools-switch.cpp:109 msgid "" "Drag to create a spiral. Drag controls to edit the spiral " "shape. Click to select." @@ -23850,7 +23987,7 @@ msgstr "" "Arrastre para crear una espiral. Arrastre los nodos para " "editar la forma de la espiral. Haga clic para seleccionar." -#: ../src/ui/tools-switch.cpp:104 +#: ../src/ui/tools-switch.cpp:110 msgid "" "Drag to create a freehand line. Shift appends to selected " "path, Alt activates sketch mode." @@ -23859,7 +23996,7 @@ msgstr "" "Mayús pulsado para añadir al trayecto seleccionado, Alt activa " "el modo boceto." -#: ../src/ui/tools-switch.cpp:105 +#: ../src/ui/tools-switch.cpp:111 msgid "" "Click or click and drag to start a path; with Shift to " "append to selected path. Ctrl+click to create single dots (straight " @@ -23869,7 +24006,7 @@ msgstr "" "Mayús pulsado para añadir al trayecto seleccionado. Use Ctrl+clic para crear puntos simples (solo en modo de línea recta)." -#: ../src/ui/tools-switch.cpp:106 +#: ../src/ui/tools-switch.cpp:112 msgid "" "Drag to draw a calligraphic stroke; with Ctrl to track a guide " "path. Arrow keys adjust width (left/right) and angle (up/down)." @@ -23878,7 +24015,7 @@ msgstr "" "seguir un trayecto guía. Las flechas ajustan anchura (izquierda/" "derecha) y ángulo (arriba/abajo)." -#: ../src/ui/tools-switch.cpp:107 ../src/ui/tools/text-tool.cpp:1579 +#: ../src/ui/tools-switch.cpp:113 ../src/ui/tools/text-tool.cpp:1583 msgid "" "Click to select or create text, drag to create flowed text; " "then type." @@ -23886,7 +24023,7 @@ msgstr "" "Haga clic para seleccionar o crear un texto, arrastre para " "crear un texto fluido; luego escriba." -#: ../src/ui/tools-switch.cpp:108 +#: ../src/ui/tools-switch.cpp:114 msgid "" "Drag or double click to create a gradient on selected objects, " "drag handles to adjust gradients." @@ -23895,7 +24032,7 @@ msgstr "" "objetos seleccionados, arrastre los tiradores para ajustar los " "degradados." -#: ../src/ui/tools-switch.cpp:109 +#: ../src/ui/tools-switch.cpp:115 msgid "" "Drag or double click to create a mesh on selected objects, " "drag handles to adjust meshes." @@ -23903,7 +24040,7 @@ msgstr "" "Arrastre o haga doble clic para crear una malla en los objetos " "seleccionados, arrastre los tiradores para ajustar las mallas." -#: ../src/ui/tools-switch.cpp:110 +#: ../src/ui/tools-switch.cpp:116 msgid "" "Click or drag around an area to zoom in, Shift+click to " "zoom out." @@ -23911,11 +24048,11 @@ msgstr "" "Haga clic o arrastre alrededor de un área para hacer zoom, " "Mayús+clic para alejar." -#: ../src/ui/tools-switch.cpp:111 +#: ../src/ui/tools-switch.cpp:117 msgid "Drag to measure the dimensions of objects." msgstr "Arrastre para medir las dimensiones de los objetos." -#: ../src/ui/tools-switch.cpp:112 ../src/ui/tools/dropper-tool.cpp:263 +#: ../src/ui/tools-switch.cpp:118 ../src/ui/tools/dropper-tool.cpp:274 msgid "" "Click to set fill, Shift+click to set stroke; drag to " "average color in area; with Alt to pick inverse color; Ctrl+C " @@ -23926,11 +24063,11 @@ msgstr "" "de un área., con Alt para el color inverso, Ctrl+C para copiar " "el color de debajo del ratón al portapapeles" -#: ../src/ui/tools-switch.cpp:113 +#: ../src/ui/tools-switch.cpp:119 msgid "Click and drag between shapes to create a connector." msgstr "Pulse y arrastre entre formas para crear un conector." -#: ../src/ui/tools-switch.cpp:115 +#: ../src/ui/tools-switch.cpp:121 msgid "" "Click to paint a bounded area, Shift+click to union the new " "fill with the current selection, Ctrl+click to change the clicked " @@ -23940,26 +24077,26 @@ msgstr "" "nuevo relleno con la selección actual, Ctrl+clic para cambiar el " "relleno y trazo del objeto pulsado al ajuste actual." -#: ../src/ui/tools-switch.cpp:117 +#: ../src/ui/tools-switch.cpp:123 msgid "Drag to erase." msgstr "Arrastre para borrar." -#: ../src/ui/tools-switch.cpp:118 +#: ../src/ui/tools-switch.cpp:124 msgid "Choose a subtool from the toolbar" msgstr "Seleccione una subherramienta de la barra" -#: ../src/ui/tools/arc-tool.cpp:241 +#: ../src/ui/tools/arc-tool.cpp:242 msgid "" "Ctrl: make circle or integer-ratio ellipse, snap arc/segment angle" msgstr "" "Ctrl: crear un círculo o elipse de proporción entera, ajustar el " "ángulo del arco/segmento" -#: ../src/ui/tools/arc-tool.cpp:242 ../src/ui/tools/rect-tool.cpp:273 +#: ../src/ui/tools/arc-tool.cpp:243 ../src/ui/tools/rect-tool.cpp:278 msgid "Shift: draw around the starting point" msgstr "Mayús: dibujar alrededor del punto inicial" -#: ../src/ui/tools/arc-tool.cpp:411 +#: ../src/ui/tools/arc-tool.cpp:412 #, c-format msgid "" "Ellipse: %s × %s (constrained to ratio %d:%d); with Shift " @@ -23968,7 +24105,7 @@ msgstr "" "Elipse: %s × %s (restringido al ratio %d:%d); use Mayús " "para dibujar a partir del punto inicial" -#: ../src/ui/tools/arc-tool.cpp:413 +#: ../src/ui/tools/arc-tool.cpp:414 #, c-format msgid "" "Ellipse: %s × %s; with Ctrl to make square or integer-" @@ -23977,154 +24114,154 @@ msgstr "" "Elipse: %s × %s; use Ctrl para crear una elipse cuadrada " "o con ratio entero; use Mayús para trazar desde el punto inicial" -#: ../src/ui/tools/arc-tool.cpp:436 +#: ../src/ui/tools/arc-tool.cpp:437 msgid "Create ellipse" msgstr "Crear elipse" -#: ../src/ui/tools/box3d-tool.cpp:351 ../src/ui/tools/box3d-tool.cpp:358 -#: ../src/ui/tools/box3d-tool.cpp:365 ../src/ui/tools/box3d-tool.cpp:372 -#: ../src/ui/tools/box3d-tool.cpp:379 ../src/ui/tools/box3d-tool.cpp:386 +#: ../src/ui/tools/box3d-tool.cpp:360 ../src/ui/tools/box3d-tool.cpp:367 +#: ../src/ui/tools/box3d-tool.cpp:374 ../src/ui/tools/box3d-tool.cpp:381 +#: ../src/ui/tools/box3d-tool.cpp:388 ../src/ui/tools/box3d-tool.cpp:395 msgid "Change perspective (angle of PLs)" msgstr "Cambiar perspectiva (ángulo de las LP)" #. status text -#: ../src/ui/tools/box3d-tool.cpp:564 +#: ../src/ui/tools/box3d-tool.cpp:573 msgid "3D Box; with Shift to extrude along the Z axis" msgstr "Caja 3D; use Mayús para extruir a lo largo del eje Z" -#: ../src/ui/tools/box3d-tool.cpp:590 +#: ../src/ui/tools/box3d-tool.cpp:599 msgid "Create 3D box" msgstr "Crear caja 3D" -#: ../src/ui/tools/calligraphic-tool.cpp:516 +#: ../src/ui/tools/calligraphic-tool.cpp:525 msgid "" "Guide path selected; start drawing along the guide with Ctrl" msgstr "" "Trayecto guía seleccionado; comience a dibujar a lo largo de la guía " "con Ctrl" -#: ../src/ui/tools/calligraphic-tool.cpp:518 +#: ../src/ui/tools/calligraphic-tool.cpp:527 msgid "Select a guide path to track with Ctrl" msgstr "Seleccione un trayecto guía al que rastrear con Ctrl" -#: ../src/ui/tools/calligraphic-tool.cpp:653 +#: ../src/ui/tools/calligraphic-tool.cpp:662 msgid "Tracking: connection to guide path lost!" msgstr "Rastreo: se ha perdido la conexión al trayecto guía." -#: ../src/ui/tools/calligraphic-tool.cpp:653 +#: ../src/ui/tools/calligraphic-tool.cpp:662 msgid "Tracking a guide path" msgstr "Rastrear un trayecto guía" -#: ../src/ui/tools/calligraphic-tool.cpp:656 +#: ../src/ui/tools/calligraphic-tool.cpp:665 msgid "Drawing a calligraphic stroke" msgstr "Dibujar un trazo caligráfico" -#: ../src/ui/tools/calligraphic-tool.cpp:957 +#: ../src/ui/tools/calligraphic-tool.cpp:966 msgid "Draw calligraphic stroke" msgstr "Dibujar línea caligráfica" -#: ../src/ui/tools/connector-tool.cpp:482 +#: ../src/ui/tools/connector-tool.cpp:489 msgid "Creating new connector" msgstr "Crear un conector nuevo" -#: ../src/ui/tools/connector-tool.cpp:723 +#: ../src/ui/tools/connector-tool.cpp:730 msgid "Connector endpoint drag cancelled." msgstr "Se ha cancelado el arrastre del punto final del conector" -#: ../src/ui/tools/connector-tool.cpp:766 +#: ../src/ui/tools/connector-tool.cpp:773 msgid "Reroute connector" msgstr "Reconducir conector" -#: ../src/ui/tools/connector-tool.cpp:919 +#: ../src/ui/tools/connector-tool.cpp:926 msgid "Create connector" msgstr "Crear conector" -#: ../src/ui/tools/connector-tool.cpp:936 +#: ../src/ui/tools/connector-tool.cpp:943 msgid "Finishing connector" msgstr "Conector final" -#: ../src/ui/tools/connector-tool.cpp:1174 +#: ../src/ui/tools/connector-tool.cpp:1181 msgid "Connector endpoint: drag to reroute or connect to new shapes" msgstr "" "Fin de conector: arrastre para redirigir o conectar a formas nuevas" -#: ../src/ui/tools/connector-tool.cpp:1317 +#: ../src/ui/tools/connector-tool.cpp:1324 msgid "Select at least one non-connector object." msgstr "Seleccione por lo menos un objeto que no sea un conector." -#: ../src/ui/tools/connector-tool.cpp:1322 -#: ../src/widgets/connector-toolbar.cpp:307 +#: ../src/ui/tools/connector-tool.cpp:1329 +#: ../src/widgets/connector-toolbar.cpp:308 msgid "Make connectors avoid selected objects" msgstr "Hacer que los conectores eviten los objetos seleccionados" -#: ../src/ui/tools/connector-tool.cpp:1323 -#: ../src/widgets/connector-toolbar.cpp:317 +#: ../src/ui/tools/connector-tool.cpp:1330 +#: ../src/widgets/connector-toolbar.cpp:318 msgid "Make connectors ignore selected objects" msgstr "Hacer que los conectores ignoren los objetos seleccionados" #. alpha of color under cursor, to show in the statusbar #. locale-sensitive printf is OK, since this goes to the UI, not into SVG -#: ../src/ui/tools/dropper-tool.cpp:259 +#: ../src/ui/tools/dropper-tool.cpp:270 #, c-format msgid " alpha %.3g" msgstr " alfa %.3g" #. where the color is picked, to show in the statusbar -#: ../src/ui/tools/dropper-tool.cpp:261 +#: ../src/ui/tools/dropper-tool.cpp:272 #, c-format msgid ", averaged with radius %d" msgstr ", media con radio %d" -#: ../src/ui/tools/dropper-tool.cpp:261 +#: ../src/ui/tools/dropper-tool.cpp:272 msgid " under cursor" msgstr " bajo el cursor" #. message, to show in the statusbar -#: ../src/ui/tools/dropper-tool.cpp:263 +#: ../src/ui/tools/dropper-tool.cpp:274 msgid "Release mouse to set color." msgstr "Suelte el ratón para fijar el color." -#: ../src/ui/tools/dropper-tool.cpp:311 +#: ../src/ui/tools/dropper-tool.cpp:322 msgid "Set picked color" msgstr "Fijar el color seleccionado" -#: ../src/ui/tools/eraser-tool.cpp:431 +#: ../src/ui/tools/eraser-tool.cpp:436 msgid "Drawing an eraser stroke" msgstr "Dibujando un trazo de borrado" -#: ../src/ui/tools/eraser-tool.cpp:862 +#: ../src/ui/tools/eraser-tool.cpp:797 msgid "Draw eraser stroke" msgstr "Dibujar trazo de borrado" -#: ../src/ui/tools/flood-tool.cpp:80 +#: ../src/ui/tools/flood-tool.cpp:91 msgid "Visible Colors" msgstr "Colores visibles" -#: ../src/ui/tools/flood-tool.cpp:92 +#: ../src/ui/tools/flood-tool.cpp:103 msgctxt "Flood autogap" msgid "None" msgstr "Ninguno" -#: ../src/ui/tools/flood-tool.cpp:93 +#: ../src/ui/tools/flood-tool.cpp:104 msgctxt "Flood autogap" msgid "Small" msgstr "Pequeño" -#: ../src/ui/tools/flood-tool.cpp:94 +#: ../src/ui/tools/flood-tool.cpp:105 msgctxt "Flood autogap" msgid "Medium" msgstr "Mediano" -#: ../src/ui/tools/flood-tool.cpp:95 +#: ../src/ui/tools/flood-tool.cpp:106 msgctxt "Flood autogap" msgid "Large" msgstr "Grande" -#: ../src/ui/tools/flood-tool.cpp:405 +#: ../src/ui/tools/flood-tool.cpp:438 msgid "Too much inset, the result is empty." msgstr "Too much inset, the result is empty." -#: ../src/ui/tools/flood-tool.cpp:446 +#: ../src/ui/tools/flood-tool.cpp:479 #, c-format msgid "" "Area filled, path with %d node created and unioned with selection." @@ -24135,18 +24272,18 @@ msgstr[0] "" msgstr[1] "" "Área rellena, creado trayecto con %d nodos y unido con la selección." -#: ../src/ui/tools/flood-tool.cpp:452 +#: ../src/ui/tools/flood-tool.cpp:485 #, c-format msgid "Area filled, path with %d node created." msgid_plural "Area filled, path with %d nodes created." msgstr[0] "Área rellena, creado trayecto con %d nodo." msgstr[1] "Área rellena, creado trayecto con %d nodos." -#: ../src/ui/tools/flood-tool.cpp:720 ../src/ui/tools/flood-tool.cpp:1030 +#: ../src/ui/tools/flood-tool.cpp:753 ../src/ui/tools/flood-tool.cpp:1063 msgid "Area is not bounded, cannot fill." msgstr "El área no está cerrada, no se puede rellenar." -#: ../src/ui/tools/flood-tool.cpp:1035 +#: ../src/ui/tools/flood-tool.cpp:1068 msgid "" "Only the visible part of the bounded area was filled. If you want to " "fill all of the area, undo, zoom out, and fill again." @@ -24154,50 +24291,50 @@ msgstr "" "Solamente se ha rellenado la parte visible del área cerrada. Si desea " "rellenar todo el área, aléjese y vuelva a rellenar." -#: ../src/ui/tools/flood-tool.cpp:1053 ../src/ui/tools/flood-tool.cpp:1204 +#: ../src/ui/tools/flood-tool.cpp:1086 ../src/ui/tools/flood-tool.cpp:1237 msgid "Fill bounded area" msgstr "Rellenar área cerrada" -#: ../src/ui/tools/flood-tool.cpp:1069 +#: ../src/ui/tools/flood-tool.cpp:1102 msgid "Set style on object" msgstr "Fijar estilo al objeto" -#: ../src/ui/tools/flood-tool.cpp:1129 +#: ../src/ui/tools/flood-tool.cpp:1162 msgid "Draw over areas to add to fill, hold Alt for touch fill" msgstr "" "Pinte por encima de las áreas para añadir al relleno, pulse Alt para relleno por contacto" #. We hit green anchor, closing Green-Blue-Red -#: ../src/ui/tools/freehand-base.cpp:660 ../src/ui/tools/freehand-base.cpp:742 +#: ../src/ui/tools/freehand-base.cpp:674 ../src/ui/tools/freehand-base.cpp:756 msgid "Path is closed." msgstr "El trayecto está cerrado." #. We hit bot start and end of single curve, closing paths -#: ../src/ui/tools/freehand-base.cpp:675 +#: ../src/ui/tools/freehand-base.cpp:689 msgid "Closing path." msgstr "Cerrar trayecto." -#: ../src/ui/tools/freehand-base.cpp:818 +#: ../src/ui/tools/freehand-base.cpp:833 msgid "Draw path" msgstr "Dibujar trayecto" -#: ../src/ui/tools/freehand-base.cpp:971 +#: ../src/ui/tools/freehand-base.cpp:986 msgid "Creating single dot" msgstr "Creando un punto simple" -#: ../src/ui/tools/freehand-base.cpp:972 +#: ../src/ui/tools/freehand-base.cpp:987 msgid "Create single dot" msgstr "Crear un punto simple" #. TRANSLATORS: %s will be substituted with the point name (see previous messages); This is part of a compound message -#: ../src/ui/tools/gradient-tool.cpp:120 ../src/ui/tools/mesh-tool.cpp:139 +#: ../src/ui/tools/gradient-tool.cpp:127 ../src/ui/tools/mesh-tool.cpp:140 #, c-format msgid "%s selected" msgstr "%s seleccionado" #. TRANSLATORS: Mind the space in front. This is part of a compound message -#: ../src/ui/tools/gradient-tool.cpp:122 ../src/ui/tools/gradient-tool.cpp:131 +#: ../src/ui/tools/gradient-tool.cpp:129 ../src/ui/tools/gradient-tool.cpp:138 #, c-format msgid " out of %d gradient handle" msgid_plural " out of %d gradient handles" @@ -24205,9 +24342,9 @@ msgstr[0] " de %d tirador de degradado" msgstr[1] " de %d tiradores de degradado" #. TRANSLATORS: Mind the space in front. (Refers to gradient handles selected). This is part of a compound message -#: ../src/ui/tools/gradient-tool.cpp:123 ../src/ui/tools/gradient-tool.cpp:132 -#: ../src/ui/tools/gradient-tool.cpp:139 ../src/ui/tools/mesh-tool.cpp:142 -#: ../src/ui/tools/mesh-tool.cpp:153 ../src/ui/tools/mesh-tool.cpp:161 +#: ../src/ui/tools/gradient-tool.cpp:130 ../src/ui/tools/gradient-tool.cpp:139 +#: ../src/ui/tools/gradient-tool.cpp:146 ../src/ui/tools/mesh-tool.cpp:143 +#: ../src/ui/tools/mesh-tool.cpp:154 ../src/ui/tools/mesh-tool.cpp:162 #, c-format msgid " on %d selected object" msgid_plural " on %d selected objects" @@ -24215,7 +24352,7 @@ msgstr[0] " en %d objeto seleccionado" msgstr[1] " en %d objetos seleccionados" #. TRANSLATORS: This is a part of a compound message (out of two more indicating: grandint handle count & object count) -#: ../src/ui/tools/gradient-tool.cpp:129 ../src/ui/tools/mesh-tool.cpp:149 +#: ../src/ui/tools/gradient-tool.cpp:136 ../src/ui/tools/mesh-tool.cpp:150 #, c-format msgid "" "One handle merging %d stop (drag with Shift to separate) selected" @@ -24229,7 +24366,7 @@ msgstr[1] "" "para separar)" #. TRANSLATORS: The plural refers to number of selected gradient handles. This is part of a compound message (part two indicates selected object count) -#: ../src/ui/tools/gradient-tool.cpp:137 +#: ../src/ui/tools/gradient-tool.cpp:144 #, c-format msgid "%d gradient handle selected out of %d" msgid_plural "%d gradient handles selected out of %d" @@ -24237,7 +24374,7 @@ msgstr[0] "%d tirador de degradado seleccionado de %d" msgstr[1] "%d tiradores de degradado seleccionados de %d" #. TRANSLATORS: The plural refers to number of selected objects -#: ../src/ui/tools/gradient-tool.cpp:144 +#: ../src/ui/tools/gradient-tool.cpp:151 #, c-format msgid "No gradient handles selected out of %d on %d selected object" msgid_plural "" @@ -24249,27 +24386,27 @@ msgstr[1] "" "Ningún tirador de degradado seleccionado de %d en %d objetos " "seleccionados" -#: ../src/ui/tools/gradient-tool.cpp:432 +#: ../src/ui/tools/gradient-tool.cpp:439 msgid "Simplify gradient" msgstr "Simplificar degradado" -#: ../src/ui/tools/gradient-tool.cpp:509 +#: ../src/ui/tools/gradient-tool.cpp:516 msgid "Create default gradient" msgstr "Crear degradado predeterminado" -#: ../src/ui/tools/gradient-tool.cpp:568 ../src/ui/tools/mesh-tool.cpp:731 +#: ../src/ui/tools/gradient-tool.cpp:575 ../src/ui/tools/mesh-tool.cpp:731 msgid "Draw around handles to select them" msgstr "Trace alrededor de los tiradores para seleccionarlos" -#: ../src/ui/tools/gradient-tool.cpp:689 +#: ../src/ui/tools/gradient-tool.cpp:696 msgid "Ctrl: snap gradient angle" msgstr "Ctrl: ajusta el ángulo del degradado" -#: ../src/ui/tools/gradient-tool.cpp:690 +#: ../src/ui/tools/gradient-tool.cpp:697 msgid "Shift: draw gradient around the starting point" msgstr "Mayús: dibuja el degradado alrededor del punto inicial" -#: ../src/ui/tools/gradient-tool.cpp:955 ../src/ui/tools/mesh-tool.cpp:1195 +#: ../src/ui/tools/gradient-tool.cpp:962 ../src/ui/tools/mesh-tool.cpp:1195 #, c-format msgid "Gradient for %d object; with Ctrl to snap angle" msgid_plural "Gradient for %d objects; with Ctrl to snap angle" @@ -24278,65 +24415,61 @@ msgstr[0] "" msgstr[1] "" "Degradado para %d objetos; con Ctrl para ajustar el ángulo" -#: ../src/ui/tools/gradient-tool.cpp:959 ../src/ui/tools/mesh-tool.cpp:1199 +#: ../src/ui/tools/gradient-tool.cpp:966 ../src/ui/tools/mesh-tool.cpp:1199 msgid "Select objects on which to create gradient." msgstr "Seleccione los objetos en los que crear un degradado." -#: ../src/ui/tools/lpe-tool.cpp:192 +#: ../src/ui/tools/lpe-tool.cpp:195 msgid "Choose a construction tool from the toolbar." msgstr "Seleccione una herramienta de construcción de la barra." #. create the knots -#: ../src/ui/tools/measure-tool.cpp:333 +#: ../src/ui/tools/measure-tool.cpp:349 msgid "Measure start, Shift+Click for position dialog" msgstr "Inicio de medida, Mayús+clic para posicionar el diálogo" -#: ../src/ui/tools/measure-tool.cpp:339 +#: ../src/ui/tools/measure-tool.cpp:355 msgid "Measure end, Shift+Click for position dialog" msgstr "Fin de medida, Mayús+clic para posicionar el diálogo" -#: ../src/ui/tools/measure-tool.cpp:740 ../share/extensions/measure.inx.h:2 +#: ../src/ui/tools/measure-tool.cpp:746 ../share/extensions/measure.inx.h:2 msgid "Measure" msgstr "Medida" -#: ../src/ui/tools/measure-tool.cpp:745 +#: ../src/ui/tools/measure-tool.cpp:751 msgid "Base" msgstr "Base" -#: ../src/ui/tools/measure-tool.cpp:754 +#: ../src/ui/tools/measure-tool.cpp:760 msgid "Add guides from measure tool" msgstr "Añadir guías desde la herramienta de medida" -#: ../src/ui/tools/measure-tool.cpp:774 +#: ../src/ui/tools/measure-tool.cpp:780 msgid "Keep last measure on the canvas, for reference" msgstr "Mantener la última medida en el lienzo como referencia" -#: ../src/ui/tools/measure-tool.cpp:794 +#: ../src/ui/tools/measure-tool.cpp:800 msgid "Convert measure to items" msgstr "Convertir medida en elementos" -#: ../src/ui/tools/measure-tool.cpp:832 +#: ../src/ui/tools/measure-tool.cpp:838 msgid "Add global measure line" msgstr "Añadir línea de medida global" -#: ../src/ui/tools/measure-tool.cpp:1195 -msgid "Shift to measure into group" -msgstr "Mayús para medir dentro del grupo" - -#: ../src/ui/tools/measure-tool.cpp:1385 ../src/ui/tools/measure-tool.cpp:1387 +#: ../src/ui/tools/measure-tool.cpp:1289 ../src/ui/tools/measure-tool.cpp:1291 #, c-format msgid "Crossing %lu" msgstr "Cruce %lu" #. TRANSLATORS: Mind the space in front. This is part of a compound message -#: ../src/ui/tools/mesh-tool.cpp:141 ../src/ui/tools/mesh-tool.cpp:152 +#: ../src/ui/tools/mesh-tool.cpp:142 ../src/ui/tools/mesh-tool.cpp:153 #, c-format msgid " out of %d mesh handle" msgid_plural " out of %d mesh handles" msgstr[0] " de %d tirador de malla" msgstr[1] " de %d tiradores de malla" -#: ../src/ui/tools/mesh-tool.cpp:159 +#: ../src/ui/tools/mesh-tool.cpp:160 #, c-format msgid "%d mesh handle selected out of %d" msgid_plural "%d mesh handles selected out of %d" @@ -24344,7 +24477,7 @@ msgstr[0] "%d tirador de malla seleccionado de %d" msgstr[1] "%d tiradores de malla seleccionados de %d" #. TRANSLATORS: The plural refers to number of selected objects -#: ../src/ui/tools/mesh-tool.cpp:166 +#: ../src/ui/tools/mesh-tool.cpp:167 #, c-format msgid "No mesh handles selected out of %d on %d selected object" msgid_plural "No mesh handles selected out of %d on %d selected objects" @@ -24353,31 +24486,31 @@ msgstr[0] "" msgstr[1] "" "Ningún tirador de malla seleccionado de %d en %d objetos seleccionados" -#: ../src/ui/tools/mesh-tool.cpp:359 +#: ../src/ui/tools/mesh-tool.cpp:360 msgid "Split mesh row/column" msgstr "Dividir fila/columna de malla" -#: ../src/ui/tools/mesh-tool.cpp:452 +#: ../src/ui/tools/mesh-tool.cpp:453 msgid "Toggled mesh path type." msgstr "Tipo de trayecto de malla conmutado." -#: ../src/ui/tools/mesh-tool.cpp:457 +#: ../src/ui/tools/mesh-tool.cpp:458 msgid "Approximated arc for mesh side." msgstr "Arco aproximado para el lado de la malla." -#: ../src/ui/tools/mesh-tool.cpp:462 +#: ../src/ui/tools/mesh-tool.cpp:463 msgid "Toggled mesh tensors." msgstr "Tensores de malla conmutados." -#: ../src/ui/tools/mesh-tool.cpp:467 +#: ../src/ui/tools/mesh-tool.cpp:468 msgid "Smoothed mesh corner color." msgstr "Color de esquina de malla suavizada." -#: ../src/ui/tools/mesh-tool.cpp:472 +#: ../src/ui/tools/mesh-tool.cpp:473 msgid "Picked mesh corner color." msgstr "Color seleccionado de esquina de malla." -#: ../src/ui/tools/mesh-tool.cpp:477 +#: ../src/ui/tools/mesh-tool.cpp:478 msgid "Inserted new row or column." msgstr "Fila o columna nueva insertada." @@ -24389,7 +24522,7 @@ msgstr "Encajar malla dentro de la caja de contorno." msgid "Create mesh" msgstr "Crear malla" -#: ../src/ui/tools/node-tool.cpp:643 +#: ../src/ui/tools/node-tool.cpp:644 msgctxt "Node tool tip" msgid "" "Shift: drag to add nodes to the selection, click to toggle object " @@ -24398,19 +24531,19 @@ msgstr "" "Mayús: arrastre para añadir nodos a la selección, pulse para " "intercambiar la selección del objeto" -#: ../src/ui/tools/node-tool.cpp:647 +#: ../src/ui/tools/node-tool.cpp:648 msgctxt "Node tool tip" msgid "Shift: drag to add nodes to the selection" msgstr "Mayús: arrastre para añadir nodos a la selección" -#: ../src/ui/tools/node-tool.cpp:676 +#: ../src/ui/tools/node-tool.cpp:677 #, c-format msgid "%u of %u node selected." msgid_plural "%u of %u nodes selected." msgstr[0] "%u of %u nodo seleccionado." msgstr[1] "%u of %u nodos seleccionados." -#: ../src/ui/tools/node-tool.cpp:683 +#: ../src/ui/tools/node-tool.cpp:684 #, c-format msgctxt "Node tool tip" msgid "%s Drag to select nodes, click to edit only this object (more: Shift)" @@ -24418,55 +24551,55 @@ msgstr "" "%s Arrastre para seleccionar nodos, pulse para editar solo este objeto (más: " "Mayús)" -#: ../src/ui/tools/node-tool.cpp:689 +#: ../src/ui/tools/node-tool.cpp:690 #, c-format msgctxt "Node tool tip" msgid "%s Drag to select nodes, click clear the selection" msgstr "%s Arrastre para seleccionar nodos, pulse para limpiar la selección" -#: ../src/ui/tools/node-tool.cpp:698 +#: ../src/ui/tools/node-tool.cpp:699 msgctxt "Node tool tip" msgid "Drag to select nodes, click to edit only this object" msgstr "Arrastre para seleccionar nodos, pulse para editar solo este objeto" -#: ../src/ui/tools/node-tool.cpp:701 +#: ../src/ui/tools/node-tool.cpp:702 msgctxt "Node tool tip" msgid "Drag to select nodes, click to clear the selection" msgstr "Arrastre para seleccionar nodos, pulse para limpiar la selección" -#: ../src/ui/tools/node-tool.cpp:706 +#: ../src/ui/tools/node-tool.cpp:707 msgctxt "Node tool tip" msgid "Drag to select objects to edit, click to edit this object (more: Shift)" msgstr "" "Arrastre para seleccionar objeto para edición, pulse para editar este objeto " "(más: Mayús)" -#: ../src/ui/tools/node-tool.cpp:709 +#: ../src/ui/tools/node-tool.cpp:710 msgctxt "Node tool tip" msgid "Drag to select objects to edit" msgstr "Arrastre para seleccionar objeto para edición" -#: ../src/ui/tools/pen-tool.cpp:211 ../src/ui/tools/pencil-tool.cpp:450 +#: ../src/ui/tools/pen-tool.cpp:223 ../src/ui/tools/pencil-tool.cpp:455 msgid "Drawing cancelled" msgstr "Trazo cancelado" -#: ../src/ui/tools/pen-tool.cpp:451 ../src/ui/tools/pencil-tool.cpp:191 +#: ../src/ui/tools/pen-tool.cpp:463 ../src/ui/tools/pencil-tool.cpp:196 msgid "Continuing selected path" msgstr "Continuar el trayecto seleccionado" -#: ../src/ui/tools/pen-tool.cpp:461 ../src/ui/tools/pencil-tool.cpp:199 +#: ../src/ui/tools/pen-tool.cpp:473 ../src/ui/tools/pencil-tool.cpp:204 msgid "Creating new path" msgstr "Crear un trayecto nuevo" -#: ../src/ui/tools/pen-tool.cpp:463 ../src/ui/tools/pencil-tool.cpp:202 +#: ../src/ui/tools/pen-tool.cpp:475 ../src/ui/tools/pencil-tool.cpp:207 msgid "Appending to selected path" msgstr "Añadir al trayecto seleccionado" -#: ../src/ui/tools/pen-tool.cpp:628 +#: ../src/ui/tools/pen-tool.cpp:640 msgid "Click or click and drag to close and finish the path." msgstr "Haga clic o arrastre para cerrar y terminar el trayecto." -#: ../src/ui/tools/pen-tool.cpp:630 +#: ../src/ui/tools/pen-tool.cpp:642 msgid "" "Click or click and drag to close and finish the path. Shift" "+Click make a cusp node" @@ -24474,14 +24607,14 @@ msgstr "" "Pulse o arrastre para cerrar y terminar el trayecto. Mayús" "+clic para crar un nodo cúspide." -#: ../src/ui/tools/pen-tool.cpp:642 +#: ../src/ui/tools/pen-tool.cpp:654 msgid "" "Click or click and drag to continue the path from this point." msgstr "" "Haga clic o arrastre para continuar el trayecto desde este " "punto." -#: ../src/ui/tools/pen-tool.cpp:644 +#: ../src/ui/tools/pen-tool.cpp:656 msgid "" "Click or click and drag to continue the path from this point. " "Shift+Click make a cusp node" @@ -24489,7 +24622,7 @@ msgstr "" "Pulse o arrastre para continuar el trayecto desde este punto. " "Mayús+clic para crear un nodo cúspide." -#: ../src/ui/tools/pen-tool.cpp:1785 +#: ../src/ui/tools/pen-tool.cpp:1797 #, c-format msgid "" "Curve segment: angle %3.2f°, distance %s; with Ctrl to " @@ -24499,7 +24632,7 @@ msgstr "" "b> para fijar el ángulo; Enter o Mayús+Enter para terminar el " "trayecto." -#: ../src/ui/tools/pen-tool.cpp:1786 +#: ../src/ui/tools/pen-tool.cpp:1798 #, c-format msgid "" "Line segment: angle %3.2f°, distance %s; with Ctrl to " @@ -24509,7 +24642,7 @@ msgstr "" "b> para fijar al ángulo; Enter o Mayús+Enter para terminar el " "trayecto." -#: ../src/ui/tools/pen-tool.cpp:1789 +#: ../src/ui/tools/pen-tool.cpp:1801 #, c-format msgid "" "Curve segment: angle %3.2f°, distance %s; with Shift+Click para fijar crear un nodo cúspide; Enter o Mayús+Enter para terminar el trayecto." -#: ../src/ui/tools/pen-tool.cpp:1790 +#: ../src/ui/tools/pen-tool.cpp:1802 #, c-format msgid "" "Line segment: angle %3.2f°, distance %s; with Shift+Click " @@ -24529,7 +24662,7 @@ msgstr "" "+clic para fijar crear un nodo cúspide; Enter o Mayús+Enter para terminar el trayecto." -#: ../src/ui/tools/pen-tool.cpp:1807 +#: ../src/ui/tools/pen-tool.cpp:1819 #, c-format msgid "" "Curve handle: angle %3.2f°, length %s; with Ctrl to snap " @@ -24538,7 +24671,7 @@ msgstr "" "Tirador de curva: ángulo %3.2f°, longitud %s; con Ctrl " "para fijar el ángulo" -#: ../src/ui/tools/pen-tool.cpp:1831 +#: ../src/ui/tools/pen-tool.cpp:1843 #, c-format msgid "" "Curve handle, symmetric: angle %3.2f°, length %s; with CtrlCtrl para fijar el ángulo, con Mayús para mover solamente este " "tirador" -#: ../src/ui/tools/pen-tool.cpp:1832 +#: ../src/ui/tools/pen-tool.cpp:1844 #, c-format msgid "" "Curve handle: angle %3.2f°, length %s; with Ctrl to snap " @@ -24557,28 +24690,28 @@ msgstr "" "Tirador de curva: ángulo %3.2f°, longitud %s; con Ctrl " "para ajustar al ángulo, con Mayús para mover solamente este tirador" -#: ../src/ui/tools/pen-tool.cpp:1966 +#: ../src/ui/tools/pen-tool.cpp:1978 msgid "Drawing finished" msgstr "Dibujo terminado" -#: ../src/ui/tools/pencil-tool.cpp:303 +#: ../src/ui/tools/pencil-tool.cpp:308 msgid "Release here to close and finish the path." msgstr "Suelte aquí para cerrar y terminar el trayecto." -#: ../src/ui/tools/pencil-tool.cpp:309 +#: ../src/ui/tools/pencil-tool.cpp:314 msgid "Drawing a freehand path" msgstr "Dibujando un trayecto a mano alzada" -#: ../src/ui/tools/pencil-tool.cpp:314 +#: ../src/ui/tools/pencil-tool.cpp:319 msgid "Drag to continue the path from this point." msgstr "Arrastre para continuar el trayecto desde este punto." #. Write curves to object -#: ../src/ui/tools/pencil-tool.cpp:397 +#: ../src/ui/tools/pencil-tool.cpp:402 msgid "Finishing freehand" msgstr "Terminando mano alzada" -#: ../src/ui/tools/pencil-tool.cpp:499 +#: ../src/ui/tools/pencil-tool.cpp:504 msgid "" "Sketch mode: holding Alt interpolates between sketched paths. " "Release Alt to finalize." @@ -24586,11 +24719,11 @@ msgstr "" "Modo bosquejo: pulsando Alt alterna entre trayectos de esbozo. " "Suelte Alt para terminar." -#: ../src/ui/tools/pencil-tool.cpp:526 +#: ../src/ui/tools/pencil-tool.cpp:531 msgid "Finishing freehand sketch" msgstr "Terminando bosquejo a mano alzada" -#: ../src/ui/tools/rect-tool.cpp:272 +#: ../src/ui/tools/rect-tool.cpp:277 msgid "" "Ctrl: make square or integer-ratio rect, lock a rounded corner " "circular" @@ -24599,7 +24732,7 @@ msgstr "" "esquina redondeada a circular" # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/tools/rect-tool.cpp:433 +#: ../src/ui/tools/rect-tool.cpp:438 #, c-format msgid "" "Rectangle: %s × %s (constrained to ratio %d:%d); with Shift para dibujar alrededor del punto inicial" # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/tools/rect-tool.cpp:436 +#: ../src/ui/tools/rect-tool.cpp:441 #, c-format msgid "" "Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with " @@ -24619,7 +24752,7 @@ msgstr "" "1); con Mayús para dibujar alrededor del punto inicial" # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/tools/rect-tool.cpp:438 +#: ../src/ui/tools/rect-tool.cpp:443 #, c-format msgid "" "Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with " @@ -24629,7 +24762,7 @@ msgstr "" "1); con Mayús para dibujar alrededor del punto inicial" # fixme: CTRL SNAP!!! remove "skew and scale" -#: ../src/ui/tools/rect-tool.cpp:442 +#: ../src/ui/tools/rect-tool.cpp:447 #, c-format msgid "" "Rectangle: %s × %s; with Ctrl to make square or integer-" @@ -24639,15 +24772,15 @@ msgstr "" "rectángulo de proporción entera; con Mayús para dibujar alrededor del " "punto inicial" -#: ../src/ui/tools/rect-tool.cpp:465 +#: ../src/ui/tools/rect-tool.cpp:470 msgid "Create rectangle" msgstr "Crear rectángulo" -#: ../src/ui/tools/select-tool.cpp:145 +#: ../src/ui/tools/select-tool.cpp:155 msgid "Click selection to toggle scale/rotation handles" msgstr "Pulse en la selección para conmutar los tiradores de escalado/rotación" -#: ../src/ui/tools/select-tool.cpp:146 +#: ../src/ui/tools/select-tool.cpp:156 msgid "" "No objects selected. Click, Shift+click, Alt+scroll mouse on top of objects, " "or drag around objects to select." @@ -24655,15 +24788,15 @@ msgstr "" "No se han seleccionado objetos. Haga clic, Mayús+clic o arrastre para " "seleccionar los objetos." -#: ../src/ui/tools/select-tool.cpp:199 +#: ../src/ui/tools/select-tool.cpp:209 msgid "Move canceled." msgstr "Movimiento cancelado." -#: ../src/ui/tools/select-tool.cpp:207 +#: ../src/ui/tools/select-tool.cpp:217 msgid "Selection canceled." msgstr "Selección cancelada." -#: ../src/ui/tools/select-tool.cpp:635 +#: ../src/ui/tools/select-tool.cpp:645 msgid "" "Draw over objects to select them; release Alt to switch to " "rubberband selection" @@ -24671,7 +24804,7 @@ msgstr "" "Trace por encima de los objetos para seleccionarlos; suelte Alt para cambiar a selección elástica" -#: ../src/ui/tools/select-tool.cpp:637 +#: ../src/ui/tools/select-tool.cpp:647 msgid "" "Drag around objects to select them; press Alt to switch to " "touch selection" @@ -24679,18 +24812,18 @@ msgstr "" "Arrastre alrededor de los objetos para seleccionarlos; pulse Alt para cambiar a selección por contacto" -#: ../src/ui/tools/select-tool.cpp:878 +#: ../src/ui/tools/select-tool.cpp:888 msgid "Ctrl: click to select in groups; drag to move hor/vert" msgstr "" "Ctrl: pulse para seleccionar en grupos, arrastre para mover hor/vert" -#: ../src/ui/tools/select-tool.cpp:879 +#: ../src/ui/tools/select-tool.cpp:889 msgid "Shift: click to toggle select; drag for rubberband selection" msgstr "" "Mayús: pulse para intercambiar selección, arrastre para selección " "elástica" -#: ../src/ui/tools/select-tool.cpp:880 +#: ../src/ui/tools/select-tool.cpp:890 msgid "" "Alt: click to select under; scroll mouse-wheel to cycle-select; drag " "to move selected or select by touch" @@ -24699,19 +24832,19 @@ msgstr "" "seleccionar en ciclo; arrastre para mover la selección o seleccionar por " "contacto" -#: ../src/ui/tools/select-tool.cpp:1058 +#: ../src/ui/tools/select-tool.cpp:1098 msgid "Selected object is not a group. Cannot enter." msgstr "El objeto seleccionado no es un grupo, no se puede entrar." -#: ../src/ui/tools/spiral-tool.cpp:244 +#: ../src/ui/tools/spiral-tool.cpp:249 msgid "Ctrl: snap angle" msgstr "Ctrl: ajuste al ángulo" -#: ../src/ui/tools/spiral-tool.cpp:246 +#: ../src/ui/tools/spiral-tool.cpp:251 msgid "Alt: lock spiral radius" msgstr "Alt: bloquear radio de la espiral" -#: ../src/ui/tools/spiral-tool.cpp:385 +#: ../src/ui/tools/spiral-tool.cpp:390 #, c-format msgid "" "Spiral: radius %s, angle %5g°; with Ctrl to snap angle" @@ -24719,22 +24852,22 @@ msgstr "" "Espiral: radio %s, ángulo %5g°; con Ctrl para ajustar al " "ángulo" -#: ../src/ui/tools/spiral-tool.cpp:406 +#: ../src/ui/tools/spiral-tool.cpp:411 msgid "Create spiral" msgstr "Crear espiral" -#: ../src/ui/tools/spray-tool.cpp:202 ../src/ui/tools/tweak-tool.cpp:147 +#: ../src/ui/tools/spray-tool.cpp:214 ../src/ui/tools/tweak-tool.cpp:159 #, c-format msgid "%i object selected" msgid_plural "%i objects selected" msgstr[0] "%i objeto seleccionado" msgstr[1] "%i objetos seleccionados" -#: ../src/ui/tools/spray-tool.cpp:204 ../src/ui/tools/tweak-tool.cpp:149 +#: ../src/ui/tools/spray-tool.cpp:216 ../src/ui/tools/tweak-tool.cpp:161 msgid "Nothing selected" msgstr "No se ha seleccionado nada" -#: ../src/ui/tools/spray-tool.cpp:209 +#: ../src/ui/tools/spray-tool.cpp:221 #, c-format msgid "" "%s. Drag, click or click and scroll to spray copies of the initial " @@ -24743,7 +24876,7 @@ msgstr "" "%s. Arrastre, pulse o gire la rueda para esparcir copias de la " "selección inicial." -#: ../src/ui/tools/spray-tool.cpp:212 +#: ../src/ui/tools/spray-tool.cpp:224 #, c-format msgid "" "%s. Drag, click or click and scroll to spray clones of the initial " @@ -24752,7 +24885,7 @@ msgstr "" "%s. Arrastre, pulse o gire la rueda para esparcir clones de la " "selección inicial." -#: ../src/ui/tools/spray-tool.cpp:215 +#: ../src/ui/tools/spray-tool.cpp:227 #, c-format msgid "" "%s. Drag, click or click and scroll to spray in a single path of the " @@ -24761,27 +24894,27 @@ msgstr "" "%s. Arrastre, pulse o gire la rueda para esparcir en un solo trayecto " "de la selección inicial." -#: ../src/ui/tools/spray-tool.cpp:1285 +#: ../src/ui/tools/spray-tool.cpp:1305 msgid "Nothing selected! Select objects to spray." msgstr "No hay nada seleccionado. Seleccione los objetos a esparcir." -#: ../src/ui/tools/spray-tool.cpp:1360 ../src/widgets/spray-toolbar.cpp:360 +#: ../src/ui/tools/spray-tool.cpp:1380 ../src/widgets/spray-toolbar.cpp:360 msgid "Spray with copies" msgstr "Rociar con copias" -#: ../src/ui/tools/spray-tool.cpp:1364 ../src/widgets/spray-toolbar.cpp:367 +#: ../src/ui/tools/spray-tool.cpp:1384 ../src/widgets/spray-toolbar.cpp:367 msgid "Spray with clones" msgstr "Rociar con clones" -#: ../src/ui/tools/spray-tool.cpp:1370 +#: ../src/ui/tools/spray-tool.cpp:1388 msgid "Spray in single path" msgstr "Rociar en trayecto sencillo" -#: ../src/ui/tools/star-tool.cpp:258 +#: ../src/ui/tools/star-tool.cpp:261 msgid "Ctrl: snap angle; keep rays radial" msgstr "Ctrl: ajustar al ángulo; mantiene los rayos radiales" -#: ../src/ui/tools/star-tool.cpp:404 +#: ../src/ui/tools/star-tool.cpp:407 #, c-format msgid "" "Polygon: radius %s, angle %5g°; with Ctrl to snap angle" @@ -24789,69 +24922,69 @@ msgstr "" "Polígono: radio %s, ángulo %5g°; con Ctrl para ajustar al " "ángulo" -#: ../src/ui/tools/star-tool.cpp:405 +#: ../src/ui/tools/star-tool.cpp:408 #, c-format msgid "Star: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" "Estrella: radio %s, ángulo %5g°; con Ctrl para ajustar al " "ángulo" -#: ../src/ui/tools/star-tool.cpp:433 +#: ../src/ui/tools/star-tool.cpp:436 msgid "Create star" msgstr "Crear estrella" -#: ../src/ui/tools/text-tool.cpp:366 +#: ../src/ui/tools/text-tool.cpp:370 msgid "Click to edit the text, drag to select part of the text." msgstr "" "Haga clic para editar el texto, arrastre para seleccionar " "parte del texto." -#: ../src/ui/tools/text-tool.cpp:368 +#: ../src/ui/tools/text-tool.cpp:372 msgid "" "Click to edit the flowed text, drag to select part of the text." msgstr "" "Haga clic para editar el texto fluido, arrastre para " "seleccionar parte del texto." -#: ../src/ui/tools/text-tool.cpp:422 +#: ../src/ui/tools/text-tool.cpp:426 msgid "Create text" msgstr "Crear texto" -#: ../src/ui/tools/text-tool.cpp:447 +#: ../src/ui/tools/text-tool.cpp:451 msgid "Non-printable character" msgstr "Carácter no imprimible" -#: ../src/ui/tools/text-tool.cpp:462 +#: ../src/ui/tools/text-tool.cpp:466 msgid "Insert Unicode character" msgstr "Insertar carácter Unicode" -#: ../src/ui/tools/text-tool.cpp:497 +#: ../src/ui/tools/text-tool.cpp:501 #, c-format msgid "Unicode (Enter to finish): %s: %s" msgstr "Unicode (Intro para finalizar): %s: %s" -#: ../src/ui/tools/text-tool.cpp:499 ../src/ui/tools/text-tool.cpp:804 +#: ../src/ui/tools/text-tool.cpp:503 ../src/ui/tools/text-tool.cpp:808 msgid "Unicode (Enter to finish): " msgstr "Unicode (Intro para finalizar): " -#: ../src/ui/tools/text-tool.cpp:582 +#: ../src/ui/tools/text-tool.cpp:586 #, c-format msgid "Flowed text frame: %s × %s" msgstr "Marco de texto fluido: %s × %s" -#: ../src/ui/tools/text-tool.cpp:640 +#: ../src/ui/tools/text-tool.cpp:644 msgid "Type text; Enter to start new line." msgstr "Escriba un texto; pulse Enter para saltar de línea." -#: ../src/ui/tools/text-tool.cpp:651 +#: ../src/ui/tools/text-tool.cpp:655 msgid "Flowed text is created." msgstr "Se ha creado un texto fluido." -#: ../src/ui/tools/text-tool.cpp:652 +#: ../src/ui/tools/text-tool.cpp:656 msgid "Create flowed text" msgstr "Crear texto fluido" -#: ../src/ui/tools/text-tool.cpp:654 +#: ../src/ui/tools/text-tool.cpp:658 msgid "" "The frame is too small for the current font size. Flowed text not " "created." @@ -24859,75 +24992,75 @@ msgstr "" "El marco es demasiado pequeño para el tamaño de tipografía actual. No " "se ha creado el texto fluido." -#: ../src/ui/tools/text-tool.cpp:790 +#: ../src/ui/tools/text-tool.cpp:794 msgid "No-break space" msgstr "Espacio sin retorno" -#: ../src/ui/tools/text-tool.cpp:791 +#: ../src/ui/tools/text-tool.cpp:795 msgid "Insert no-break space" msgstr "Insertar espacio sin retorno" -#: ../src/ui/tools/text-tool.cpp:827 +#: ../src/ui/tools/text-tool.cpp:831 msgid "Make bold" msgstr "Negrita" -#: ../src/ui/tools/text-tool.cpp:844 +#: ../src/ui/tools/text-tool.cpp:848 msgid "Make italic" msgstr "Cursiva" -#: ../src/ui/tools/text-tool.cpp:882 +#: ../src/ui/tools/text-tool.cpp:886 msgid "New line" msgstr "Nueva línea" -#: ../src/ui/tools/text-tool.cpp:923 +#: ../src/ui/tools/text-tool.cpp:927 msgid "Backspace" msgstr "Retroceso" -#: ../src/ui/tools/text-tool.cpp:977 +#: ../src/ui/tools/text-tool.cpp:981 msgid "Kern to the left" msgstr "Interletrar a la izquierda" -#: ../src/ui/tools/text-tool.cpp:1001 +#: ../src/ui/tools/text-tool.cpp:1005 msgid "Kern to the right" msgstr "Interletrar a la derecha" -#: ../src/ui/tools/text-tool.cpp:1025 +#: ../src/ui/tools/text-tool.cpp:1029 msgid "Kern up" msgstr "Interletrar por arriba" -#: ../src/ui/tools/text-tool.cpp:1049 +#: ../src/ui/tools/text-tool.cpp:1053 msgid "Kern down" msgstr "Interletrar por abajo" -#: ../src/ui/tools/text-tool.cpp:1124 +#: ../src/ui/tools/text-tool.cpp:1128 msgid "Rotate counterclockwise" msgstr "Girar hacia la izquierda" -#: ../src/ui/tools/text-tool.cpp:1144 +#: ../src/ui/tools/text-tool.cpp:1148 msgid "Rotate clockwise" msgstr "Girar hacia la derecha" -#: ../src/ui/tools/text-tool.cpp:1160 +#: ../src/ui/tools/text-tool.cpp:1164 msgid "Contract line spacing" msgstr "Contraer el espaciado de líneas" -#: ../src/ui/tools/text-tool.cpp:1166 +#: ../src/ui/tools/text-tool.cpp:1170 msgid "Contract letter spacing" msgstr "Contraer el espaciado de letras" -#: ../src/ui/tools/text-tool.cpp:1183 +#: ../src/ui/tools/text-tool.cpp:1187 msgid "Expand line spacing" msgstr "Expandir el espaciado de líneas" -#: ../src/ui/tools/text-tool.cpp:1189 +#: ../src/ui/tools/text-tool.cpp:1193 msgid "Expand letter spacing" msgstr "Expandir el espaciado de letras" -#: ../src/ui/tools/text-tool.cpp:1319 +#: ../src/ui/tools/text-tool.cpp:1323 msgid "Paste text" msgstr "Pegar texto" -#: ../src/ui/tools/text-tool.cpp:1569 +#: ../src/ui/tools/text-tool.cpp:1573 #, c-format msgid "" "Type or edit flowed text (%d character%s); Enter to start new " @@ -24942,7 +25075,7 @@ msgstr[1] "" "Escriba o edite un texto fluido (%d caracteres %s); pulse Enter para " "iniciar un párrafo nuevo." -#: ../src/ui/tools/text-tool.cpp:1571 +#: ../src/ui/tools/text-tool.cpp:1575 #, c-format msgid "Type or edit text (%d character%s); Enter to start new line." msgid_plural "" @@ -24954,38 +25087,38 @@ msgstr[1] "" "Escriba o edite un texto (%d caracteres%s); pulse Enter para saltar " "de línea." -#: ../src/ui/tools/text-tool.cpp:1681 +#: ../src/ui/tools/text-tool.cpp:1685 msgid "Type text" msgstr "Escriba un texto" -#: ../src/ui/tools/tool-base.cpp:679 +#: ../src/ui/tools/tool-base.cpp:705 msgid "Space+mouse move to pan canvas" msgstr "Espacio + movimiento de ratón para navegar por el lienzo" -#: ../src/ui/tools/tweak-tool.cpp:154 +#: ../src/ui/tools/tweak-tool.cpp:166 #, c-format msgid "%s. Drag to move." msgstr "%s. Arrastre para mover." -#: ../src/ui/tools/tweak-tool.cpp:158 +#: ../src/ui/tools/tweak-tool.cpp:170 #, c-format msgid "%s. Drag or click to move in; with Shift to move out." msgstr "" "%s. Arrastre o pulse para mover hacia dentro; con Mayús para mover " "hacia afuera." -#: ../src/ui/tools/tweak-tool.cpp:166 +#: ../src/ui/tools/tweak-tool.cpp:178 #, c-format msgid "%s. Drag or click to move randomly." msgstr "%s. Arrastre o pulse para moverse al azar." -#: ../src/ui/tools/tweak-tool.cpp:170 +#: ../src/ui/tools/tweak-tool.cpp:182 #, c-format msgid "%s. Drag or click to scale down; with Shift to scale up." msgstr "" "%s. Arrastre o pulse para disminuir; con Mayús para aumentar." -#: ../src/ui/tools/tweak-tool.cpp:178 +#: ../src/ui/tools/tweak-tool.cpp:190 #, c-format msgid "" "%s. Drag or click to rotate clockwise; with Shift, " @@ -24994,47 +25127,47 @@ msgstr "" "%s. Arrastre o pulse para rotar hacia la derecha; con Mayús para la " "izquierda." -#: ../src/ui/tools/tweak-tool.cpp:186 +#: ../src/ui/tools/tweak-tool.cpp:198 #, c-format msgid "%s. Drag or click to duplicate; with Shift, delete." msgstr "" "%s. Arrastre o pulse para duplicar; con Mayús para borrar." -#: ../src/ui/tools/tweak-tool.cpp:194 +#: ../src/ui/tools/tweak-tool.cpp:206 #, c-format msgid "%s. Drag to push paths." msgstr "%s. Arrastre para empujar trayectos." -#: ../src/ui/tools/tweak-tool.cpp:198 +#: ../src/ui/tools/tweak-tool.cpp:210 #, c-format msgid "%s. Drag or click to inset paths; with Shift to outset." msgstr "" "%s. Arrastre o pulse para reducir trayectos; con Mayús para " "ampliar." -#: ../src/ui/tools/tweak-tool.cpp:206 +#: ../src/ui/tools/tweak-tool.cpp:218 #, c-format msgid "%s. Drag or click to attract paths; with Shift to repel." msgstr "" "%s. Arrastre o pulse para atraer trayectos; con Mayús para " "repeler." -#: ../src/ui/tools/tweak-tool.cpp:214 +#: ../src/ui/tools/tweak-tool.cpp:226 #, c-format msgid "%s. Drag or click to roughen paths." msgstr "%s. Arrastre o pulse para embrutecer trayectos." -#: ../src/ui/tools/tweak-tool.cpp:218 +#: ../src/ui/tools/tweak-tool.cpp:230 #, c-format msgid "%s. Drag or click to paint objects with color." msgstr "%s. Arrastre o pulse para rellenar objetos con color." -#: ../src/ui/tools/tweak-tool.cpp:222 +#: ../src/ui/tools/tweak-tool.cpp:234 #, c-format msgid "%s. Drag or click to randomize colors." msgstr "%s. Arrastre o pulse para aleatorizar colores." -#: ../src/ui/tools/tweak-tool.cpp:226 +#: ../src/ui/tools/tweak-tool.cpp:238 #, c-format msgid "" "%s. Drag or click to increase blur; with Shift to decrease." @@ -25042,59 +25175,59 @@ msgstr "" "%s. Arrastre o pulse para incrementar desenfoque; con Mayús para " "disminuir." -#: ../src/ui/tools/tweak-tool.cpp:1200 +#: ../src/ui/tools/tweak-tool.cpp:1213 msgid "Nothing selected! Select objects to tweak." msgstr "No hay nada seleccionado. Seleccione los objetos a retocar." -#: ../src/ui/tools/tweak-tool.cpp:1234 +#: ../src/ui/tools/tweak-tool.cpp:1247 msgid "Move tweak" msgstr "Retoque de movimiento" -#: ../src/ui/tools/tweak-tool.cpp:1238 +#: ../src/ui/tools/tweak-tool.cpp:1251 msgid "Move in/out tweak" msgstr "Retoque de movimiento hacia dentro/fuera" -#: ../src/ui/tools/tweak-tool.cpp:1242 +#: ../src/ui/tools/tweak-tool.cpp:1255 msgid "Move jitter tweak" msgstr "Retoque de variación de movimiento" -#: ../src/ui/tools/tweak-tool.cpp:1246 +#: ../src/ui/tools/tweak-tool.cpp:1259 msgid "Scale tweak" msgstr "Retoque de escala" -#: ../src/ui/tools/tweak-tool.cpp:1250 +#: ../src/ui/tools/tweak-tool.cpp:1263 msgid "Rotate tweak" msgstr "Retoque de rotación" -#: ../src/ui/tools/tweak-tool.cpp:1254 +#: ../src/ui/tools/tweak-tool.cpp:1267 msgid "Duplicate/delete tweak" msgstr "Retoque de duplicado/borrado" -#: ../src/ui/tools/tweak-tool.cpp:1258 +#: ../src/ui/tools/tweak-tool.cpp:1271 msgid "Push path tweak" msgstr "Retoque de empuje de trayectos" -#: ../src/ui/tools/tweak-tool.cpp:1262 +#: ../src/ui/tools/tweak-tool.cpp:1275 msgid "Shrink/grow path tweak" msgstr "Retoque de disminución/crecimiento" -#: ../src/ui/tools/tweak-tool.cpp:1266 +#: ../src/ui/tools/tweak-tool.cpp:1279 msgid "Attract/repel path tweak" msgstr "Retoque de atracción/repulsión" -#: ../src/ui/tools/tweak-tool.cpp:1270 +#: ../src/ui/tools/tweak-tool.cpp:1283 msgid "Roughen path tweak" msgstr "Retoque de aspereza" -#: ../src/ui/tools/tweak-tool.cpp:1274 +#: ../src/ui/tools/tweak-tool.cpp:1287 msgid "Color paint tweak" msgstr "Retoque de coloreado" -#: ../src/ui/tools/tweak-tool.cpp:1278 +#: ../src/ui/tools/tweak-tool.cpp:1291 msgid "Color jitter tweak" msgstr "Retoque de variación de color" -#: ../src/ui/tools/tweak-tool.cpp:1282 +#: ../src/ui/tools/tweak-tool.cpp:1295 msgid "Blur tweak" msgstr "Retoque de desenfoque" @@ -25102,355 +25235,355 @@ msgstr "Retoque de desenfoque" msgid "Hexadecimal RGBA value of the color" msgstr "Valor hexadecimal RGBA del color" -#: ../src/ui/widget/color-icc-selector.cpp:163 -#: ../src/ui/widget/color-scales.cpp:354 +#: ../src/ui/widget/color-icc-selector.cpp:176 +#: ../src/ui/widget/color-scales.cpp:384 msgid "_R:" msgstr "_R:" #. TYPE_RGB_16 -#: ../src/ui/widget/color-icc-selector.cpp:164 -#: ../src/ui/widget/color-scales.cpp:357 +#: ../src/ui/widget/color-icc-selector.cpp:177 +#: ../src/ui/widget/color-scales.cpp:387 msgid "_G:" msgstr "_G:" -#: ../src/ui/widget/color-icc-selector.cpp:165 -#: ../src/ui/widget/color-scales.cpp:360 +#: ../src/ui/widget/color-icc-selector.cpp:178 +#: ../src/ui/widget/color-scales.cpp:390 msgid "_B:" msgstr "_B:" -#: ../src/ui/widget/color-icc-selector.cpp:167 +#: ../src/ui/widget/color-icc-selector.cpp:180 #: ../share/extensions/nicechart.inx.h:35 msgid "Gray" msgstr "Gris" #. TYPE_GRAY_16 -#: ../src/ui/widget/color-icc-selector.cpp:169 -#: ../src/ui/widget/color-icc-selector.cpp:173 -#: ../src/ui/widget/color-scales.cpp:380 +#: ../src/ui/widget/color-icc-selector.cpp:182 +#: ../src/ui/widget/color-icc-selector.cpp:186 +#: ../src/ui/widget/color-scales.cpp:410 msgid "_H:" msgstr "_H:" #. TYPE_HSV_16 -#: ../src/ui/widget/color-icc-selector.cpp:170 -#: ../src/ui/widget/color-icc-selector.cpp:175 -#: ../src/ui/widget/color-scales.cpp:383 +#: ../src/ui/widget/color-icc-selector.cpp:183 +#: ../src/ui/widget/color-icc-selector.cpp:188 +#: ../src/ui/widget/color-scales.cpp:413 msgid "_S:" msgstr "_S:" #. TYPE_HLS_16 -#: ../src/ui/widget/color-icc-selector.cpp:174 -#: ../src/ui/widget/color-scales.cpp:386 +#: ../src/ui/widget/color-icc-selector.cpp:187 +#: ../src/ui/widget/color-scales.cpp:416 msgid "_L:" msgstr "_L:" -#: ../src/ui/widget/color-icc-selector.cpp:177 -#: ../src/ui/widget/color-icc-selector.cpp:182 -#: ../src/ui/widget/color-scales.cpp:408 +#: ../src/ui/widget/color-icc-selector.cpp:190 +#: ../src/ui/widget/color-icc-selector.cpp:195 +#: ../src/ui/widget/color-scales.cpp:438 msgid "_C:" msgstr "_C:" #. TYPE_CMYK_16 #. TYPE_CMY_16 -#: ../src/ui/widget/color-icc-selector.cpp:178 -#: ../src/ui/widget/color-icc-selector.cpp:183 -#: ../src/ui/widget/color-scales.cpp:411 +#: ../src/ui/widget/color-icc-selector.cpp:191 +#: ../src/ui/widget/color-icc-selector.cpp:196 +#: ../src/ui/widget/color-scales.cpp:441 msgid "_M:" msgstr "_M:" -#: ../src/ui/widget/color-icc-selector.cpp:179 -#: ../src/ui/widget/color-icc-selector.cpp:184 -#: ../src/ui/widget/color-scales.cpp:414 +#: ../src/ui/widget/color-icc-selector.cpp:192 +#: ../src/ui/widget/color-icc-selector.cpp:197 +#: ../src/ui/widget/color-scales.cpp:444 msgid "_Y:" msgstr "_Y:" -#: ../src/ui/widget/color-icc-selector.cpp:180 -#: ../src/ui/widget/color-scales.cpp:417 +#: ../src/ui/widget/color-icc-selector.cpp:193 +#: ../src/ui/widget/color-scales.cpp:447 msgid "_K:" msgstr "_K:" -#: ../src/ui/widget/color-icc-selector.cpp:297 +#: ../src/ui/widget/color-icc-selector.cpp:310 msgid "CMS" msgstr "CMS" -#: ../src/ui/widget/color-icc-selector.cpp:362 +#: ../src/ui/widget/color-icc-selector.cpp:375 msgid "Fix" msgstr "Arreglar" -#: ../src/ui/widget/color-icc-selector.cpp:366 +#: ../src/ui/widget/color-icc-selector.cpp:379 msgid "Fix RGB fallback to match icc-color() value." msgstr "" "Arreglar el color alternativo para que se ajuste al valor de icc-color()." #. Label -#: ../src/ui/widget/color-icc-selector.cpp:478 -#: ../src/ui/widget/color-scales.cpp:363 ../src/ui/widget/color-scales.cpp:389 -#: ../src/ui/widget/color-scales.cpp:420 -#: ../src/ui/widget/color-wheel-selector.cpp:64 +#: ../src/ui/widget/color-icc-selector.cpp:496 +#: ../src/ui/widget/color-scales.cpp:393 ../src/ui/widget/color-scales.cpp:419 +#: ../src/ui/widget/color-scales.cpp:450 +#: ../src/ui/widget/color-wheel-selector.cpp:83 msgid "_A:" msgstr "_A:" -#: ../src/ui/widget/color-icc-selector.cpp:490 -#: ../src/ui/widget/color-icc-selector.cpp:501 -#: ../src/ui/widget/color-scales.cpp:364 ../src/ui/widget/color-scales.cpp:365 -#: ../src/ui/widget/color-scales.cpp:390 ../src/ui/widget/color-scales.cpp:391 -#: ../src/ui/widget/color-scales.cpp:421 ../src/ui/widget/color-scales.cpp:422 -#: ../src/ui/widget/color-wheel-selector.cpp:86 -#: ../src/ui/widget/color-wheel-selector.cpp:108 +#: ../src/ui/widget/color-icc-selector.cpp:513 +#: ../src/ui/widget/color-icc-selector.cpp:524 +#: ../src/ui/widget/color-scales.cpp:394 ../src/ui/widget/color-scales.cpp:395 +#: ../src/ui/widget/color-scales.cpp:420 ../src/ui/widget/color-scales.cpp:421 +#: ../src/ui/widget/color-scales.cpp:451 ../src/ui/widget/color-scales.cpp:452 +#: ../src/ui/widget/color-wheel-selector.cpp:112 +#: ../src/ui/widget/color-wheel-selector.cpp:142 msgid "Alpha (opacity)" msgstr "Alfa (opacidad)" -#: ../src/ui/widget/color-notebook.cpp:156 +#: ../src/ui/widget/color-notebook.cpp:182 msgid "Color Managed" msgstr "Gestión de color" -#: ../src/ui/widget/color-notebook.cpp:163 +#: ../src/ui/widget/color-notebook.cpp:189 msgid "Out of gamut!" msgstr "Fuera de gamut." -#: ../src/ui/widget/color-notebook.cpp:170 +#: ../src/ui/widget/color-notebook.cpp:196 msgid "Too much ink!" msgstr "Demasiada tinta." -#: ../src/ui/widget/color-notebook.cpp:181 ../src/verbs.cpp:2818 +#: ../src/ui/widget/color-notebook.cpp:207 ../src/verbs.cpp:2780 msgid "Pick colors from image" msgstr "Seleccionar colores de la imagen" #. Create RGBA entry and color preview -#: ../src/ui/widget/color-notebook.cpp:186 +#: ../src/ui/widget/color-notebook.cpp:212 msgid "RGBA_:" msgstr "RGBA_:" -#: ../src/ui/widget/color-scales.cpp:43 +#: ../src/ui/widget/color-scales.cpp:46 msgid "RGB" msgstr "RGB" -#: ../src/ui/widget/color-scales.cpp:43 +#: ../src/ui/widget/color-scales.cpp:46 msgid "HSL" msgstr "HSL" -#: ../src/ui/widget/color-scales.cpp:43 +#: ../src/ui/widget/color-scales.cpp:46 msgid "CMYK" msgstr "CMYK" -#: ../src/ui/widget/filter-effect-chooser.cpp:22 +#: ../src/ui/widget/filter-effect-chooser.cpp:26 msgid "_Blur:" msgstr "Desen_foque:" -#: ../src/ui/widget/filter-effect-chooser.cpp:25 +#: ../src/ui/widget/filter-effect-chooser.cpp:29 msgid "Blur (%)" msgstr "Desenfoque (%)" -#: ../src/ui/widget/font-variants.cpp:30 +#: ../src/ui/widget/font-variants.cpp:38 msgctxt "Font variant" msgid "Ligatures" msgstr "Ligaduras" -#: ../src/ui/widget/font-variants.cpp:31 +#: ../src/ui/widget/font-variants.cpp:39 msgctxt "Font variant" msgid "Common" msgstr "Común" -#: ../src/ui/widget/font-variants.cpp:32 +#: ../src/ui/widget/font-variants.cpp:40 msgctxt "Font variant" msgid "Discretionary" msgstr "Discrecional" -#: ../src/ui/widget/font-variants.cpp:33 +#: ../src/ui/widget/font-variants.cpp:41 msgctxt "Font variant" msgid "Historical" msgstr "Histórico" -#: ../src/ui/widget/font-variants.cpp:34 +#: ../src/ui/widget/font-variants.cpp:42 msgctxt "Font variant" msgid "Contextual" msgstr "Contextual" -#: ../src/ui/widget/font-variants.cpp:36 +#: ../src/ui/widget/font-variants.cpp:44 msgctxt "Font variant" msgid "Position" msgstr "Posición" -#: ../src/ui/widget/font-variants.cpp:37 ../src/ui/widget/font-variants.cpp:42 +#: ../src/ui/widget/font-variants.cpp:45 ../src/ui/widget/font-variants.cpp:50 msgctxt "Font variant" msgid "Normal" msgstr "Normal" -#: ../src/ui/widget/font-variants.cpp:38 +#: ../src/ui/widget/font-variants.cpp:46 msgctxt "Font variant" msgid "Subscript" msgstr "Subíndice" -#: ../src/ui/widget/font-variants.cpp:39 +#: ../src/ui/widget/font-variants.cpp:47 msgctxt "Font variant" msgid "Superscript" msgstr "Superíndice" -#: ../src/ui/widget/font-variants.cpp:41 +#: ../src/ui/widget/font-variants.cpp:49 msgctxt "Font variant" msgid "Capitals" msgstr "Mayúsculas" -#: ../src/ui/widget/font-variants.cpp:43 +#: ../src/ui/widget/font-variants.cpp:51 msgctxt "Font variant" msgid "Small" msgstr "Pequeño" -#: ../src/ui/widget/font-variants.cpp:44 +#: ../src/ui/widget/font-variants.cpp:52 msgctxt "Font variant" msgid "All small" msgstr "Todas pequeñas" -#: ../src/ui/widget/font-variants.cpp:45 +#: ../src/ui/widget/font-variants.cpp:53 msgctxt "Font variant" msgid "Petite" msgstr "Chiquita" -#: ../src/ui/widget/font-variants.cpp:46 +#: ../src/ui/widget/font-variants.cpp:54 msgctxt "Font variant" msgid "All petite" msgstr "Todas chiquitas" -#: ../src/ui/widget/font-variants.cpp:47 +#: ../src/ui/widget/font-variants.cpp:55 msgctxt "Font variant" msgid "Unicase" msgstr "Unicase" -#: ../src/ui/widget/font-variants.cpp:48 +#: ../src/ui/widget/font-variants.cpp:56 msgctxt "Font variant" msgid "Titling" msgstr "Titulación" -#: ../src/ui/widget/font-variants.cpp:50 +#: ../src/ui/widget/font-variants.cpp:58 msgctxt "Font variant" msgid "Numeric" msgstr "Numérico" -#: ../src/ui/widget/font-variants.cpp:51 +#: ../src/ui/widget/font-variants.cpp:59 msgctxt "Font variant" msgid "Lining" msgstr "Revestimiento" -#: ../src/ui/widget/font-variants.cpp:52 +#: ../src/ui/widget/font-variants.cpp:60 msgctxt "Font variant" msgid "Old Style" msgstr "Estilo antiguo" -#: ../src/ui/widget/font-variants.cpp:53 +#: ../src/ui/widget/font-variants.cpp:61 msgctxt "Font variant" msgid "Default Style" msgstr "Estilo predeterminado" -#: ../src/ui/widget/font-variants.cpp:54 +#: ../src/ui/widget/font-variants.cpp:62 msgctxt "Font variant" msgid "Proportional" msgstr "Proporcional" -#: ../src/ui/widget/font-variants.cpp:55 +#: ../src/ui/widget/font-variants.cpp:63 msgctxt "Font variant" msgid "Tabular" msgstr "Tabular" -#: ../src/ui/widget/font-variants.cpp:56 +#: ../src/ui/widget/font-variants.cpp:64 msgctxt "Font variant" msgid "Default Width" msgstr "Anchura predeterminado" -#: ../src/ui/widget/font-variants.cpp:57 +#: ../src/ui/widget/font-variants.cpp:65 msgctxt "Font variant" msgid "Diagonal" msgstr "Diagonal" -#: ../src/ui/widget/font-variants.cpp:58 +#: ../src/ui/widget/font-variants.cpp:66 msgctxt "Font variant" msgid "Stacked" msgstr "Apilado" -#: ../src/ui/widget/font-variants.cpp:59 +#: ../src/ui/widget/font-variants.cpp:67 msgctxt "Font variant" msgid "Default Fractions" msgstr "Fracciones predeterminadas" -#: ../src/ui/widget/font-variants.cpp:60 +#: ../src/ui/widget/font-variants.cpp:68 msgctxt "Font variant" msgid "Ordinal" msgstr "Ordinal" -#: ../src/ui/widget/font-variants.cpp:61 +#: ../src/ui/widget/font-variants.cpp:69 msgctxt "Font variant" msgid "Slashed Zero" msgstr "Cero tachado" -#: ../src/ui/widget/font-variants.cpp:63 +#: ../src/ui/widget/font-variants.cpp:71 msgctxt "Font variant" msgid "Feature Settings" msgstr "Configuración de funciones" -#: ../src/ui/widget/font-variants.cpp:64 +#: ../src/ui/widget/font-variants.cpp:72 msgctxt "Font variant" msgid "Selection has different Feature Settings!" msgstr "La selección tiene una configuración de funciones diferente." -#: ../src/ui/widget/font-variants.cpp:77 +#: ../src/ui/widget/font-variants.cpp:85 msgid "Common ligatures. On by default. OpenType tables: 'liga', 'clig'" msgstr "" "Ligaduras predeterminadas. Activo por defecto. Tablas OpenType: 'liga', " "'clig'" -#: ../src/ui/widget/font-variants.cpp:79 +#: ../src/ui/widget/font-variants.cpp:87 msgid "Discretionary ligatures. Off by default. OpenType table: 'dlig'" msgstr "" "Ligaduras discrecionales. Desactivado por defecto. Tabla OpenType: 'dlig'" -#: ../src/ui/widget/font-variants.cpp:81 +#: ../src/ui/widget/font-variants.cpp:89 msgid "Historical ligatures. Off by default. OpenType table: 'hlig'" msgstr "Ligaduras históricas. Desactivado por defecto. Talba OpenType: 'hlig'" -#: ../src/ui/widget/font-variants.cpp:83 +#: ../src/ui/widget/font-variants.cpp:91 msgid "Contextual forms. On by default. OpenType table: 'calt'" msgstr "Formas contextuales. Activo por defecto. Tabla OpenType: 'calt'" #. Position ---------------------------------- #. Add tooltips -#: ../src/ui/widget/font-variants.cpp:104 +#: ../src/ui/widget/font-variants.cpp:112 msgid "Normal position." msgstr "Posiciones normales" -#: ../src/ui/widget/font-variants.cpp:105 +#: ../src/ui/widget/font-variants.cpp:113 msgid "Subscript. OpenType table: 'subs'" msgstr "Subíndice. Tabla OpenType: 'subs'" -#: ../src/ui/widget/font-variants.cpp:106 +#: ../src/ui/widget/font-variants.cpp:114 msgid "Superscript. OpenType table: 'sups'" msgstr "Superíndice. Table OpenType: 'sups'" #. Caps ---------------------------------- #. Add tooltips -#: ../src/ui/widget/font-variants.cpp:130 +#: ../src/ui/widget/font-variants.cpp:138 msgid "Normal capitalization." msgstr "Mayúsculas normales." -#: ../src/ui/widget/font-variants.cpp:131 +#: ../src/ui/widget/font-variants.cpp:139 msgid "Small-caps (lowercase). OpenType table: 'smcp'" msgstr "Versalita (minúsculas) Table OpenType: 'smpc'" -#: ../src/ui/widget/font-variants.cpp:132 +#: ../src/ui/widget/font-variants.cpp:140 msgid "" "All small-caps (uppercase and lowercase). OpenType tables: 'c2sc' and 'smcp'" msgstr "" "Todo Versalita (mayúsculas y minúsculas). Tablas OpenType: 'c2sc' y 'smcp'" -#: ../src/ui/widget/font-variants.cpp:133 +#: ../src/ui/widget/font-variants.cpp:141 msgid "Petite-caps (lowercase). OpenType table: 'pcap'" msgstr "Versalita pequeña (minúsculas). Tabla Opentype: 'pcap'" -#: ../src/ui/widget/font-variants.cpp:134 +#: ../src/ui/widget/font-variants.cpp:142 msgid "" "All petite-caps (uppercase and lowercase). OpenType tables: 'c2sc' and 'pcap'" msgstr "" "Todo versalita pequeña (mayúsculas y minúsculas). Tablas Opentype: 'c2sc' y " "'pcap'" -#: ../src/ui/widget/font-variants.cpp:135 +#: ../src/ui/widget/font-variants.cpp:143 msgid "" "Unicase (small caps for uppercase, normal for lowercase). OpenType table: " "'unic'" @@ -25458,7 +25591,7 @@ msgstr "" "Unicase (versalita para mayúsculas, normal para minúsculas). OpenType table: " "'unic'" -#: ../src/ui/widget/font-variants.cpp:136 +#: ../src/ui/widget/font-variants.cpp:144 msgid "" "Titling caps (lighter-weight uppercase for use in titles). OpenType table: " "'titl'" @@ -25468,53 +25601,53 @@ msgstr "" #. Numeric ------------------------------ #. Add tooltips -#: ../src/ui/widget/font-variants.cpp:172 +#: ../src/ui/widget/font-variants.cpp:180 msgid "Normal style." msgstr "Estilo normal." -#: ../src/ui/widget/font-variants.cpp:173 +#: ../src/ui/widget/font-variants.cpp:181 msgid "Lining numerals. OpenType table: 'lnum'" msgstr "Numerales lineares. Table OpenType: 'lnum'" -#: ../src/ui/widget/font-variants.cpp:174 +#: ../src/ui/widget/font-variants.cpp:182 msgid "Old style numerals. OpenType table: 'onum'" msgstr "Numerales estilo antiguo. Table OpenType: 'onum'" -#: ../src/ui/widget/font-variants.cpp:175 +#: ../src/ui/widget/font-variants.cpp:183 msgid "Normal widths." msgstr "Anchuras normales." -#: ../src/ui/widget/font-variants.cpp:176 +#: ../src/ui/widget/font-variants.cpp:184 msgid "Proportional width numerals. OpenType table: 'pnum'" msgstr "Numerales de ancho proporcional. Tabla OpenType: 'pnum'" -#: ../src/ui/widget/font-variants.cpp:177 +#: ../src/ui/widget/font-variants.cpp:185 msgid "Same width numerals. OpenType table: 'tnum'" msgstr "Numerales de ancho igual. Tabla OpenType: 'tnum'" -#: ../src/ui/widget/font-variants.cpp:178 +#: ../src/ui/widget/font-variants.cpp:186 msgid "Normal fractions." msgstr "Fracciones normales." -#: ../src/ui/widget/font-variants.cpp:179 +#: ../src/ui/widget/font-variants.cpp:187 msgid "Diagonal fractions. OpenType table: 'frac'" msgstr "Fracciones diagonales. Tabla OpenType: 'frac'" -#: ../src/ui/widget/font-variants.cpp:180 +#: ../src/ui/widget/font-variants.cpp:188 msgid "Stacked fractions. OpenType table: 'afrc'" msgstr "Fracciones apiladas. Tabla OpenType: 'afrc'" -#: ../src/ui/widget/font-variants.cpp:181 +#: ../src/ui/widget/font-variants.cpp:189 msgid "Ordinals (raised 'th', etc.). OpenType table: 'ordn'" msgstr "Ordinales ('o/a' elevadas, etc.). Tabla OpenType: 'ordn'" -#: ../src/ui/widget/font-variants.cpp:182 +#: ../src/ui/widget/font-variants.cpp:190 msgid "Slashed zeros. OpenType table: 'zero'" msgstr "Ceros tachados. Tabla OpenType: 'zero'" #. Feature settings --------------------- #. Add tooltips -#: ../src/ui/widget/font-variants.cpp:232 +#: ../src/ui/widget/font-variants.cpp:240 msgid "Feature settings in CSS form. No sanity checking is performed." msgstr "" "Ajuste de características en forma CSS. No se realizará comprobación formal." @@ -25531,7 +25664,7 @@ msgstr "Bloquear o desbloquear la capa actual" msgid "Current layer" msgstr "Capa actual" -#: ../src/ui/widget/layer-selector.cpp:572 +#: ../src/ui/widget/layer-selector.cpp:582 msgid "(root)" msgstr "(raíz)" @@ -25547,108 +25680,108 @@ msgstr "Otros" msgid "Document license updated" msgstr "Licencia de documento actualizada" -#: ../src/ui/widget/object-composite-settings.cpp:40 -#: ../src/ui/widget/selected-style.cpp:1090 -#: ../src/ui/widget/selected-style.cpp:1091 +#: ../src/ui/widget/object-composite-settings.cpp:47 +#: ../src/ui/widget/selected-style.cpp:1124 +#: ../src/ui/widget/selected-style.cpp:1125 msgid "Opacity (%)" msgstr "Opacidad (%)" -#: ../src/ui/widget/object-composite-settings.cpp:153 +#: ../src/ui/widget/object-composite-settings.cpp:160 msgid "Change blur" msgstr "Cambiar desenfoque" -#: ../src/ui/widget/object-composite-settings.cpp:193 -#: ../src/ui/widget/selected-style.cpp:914 -#: ../src/ui/widget/selected-style.cpp:1208 +#: ../src/ui/widget/object-composite-settings.cpp:200 +#: ../src/ui/widget/selected-style.cpp:948 +#: ../src/ui/widget/selected-style.cpp:1250 msgid "Change opacity" msgstr "Cambiar opacidad" -#: ../src/ui/widget/page-sizer.cpp:219 +#: ../src/ui/widget/page-sizer.cpp:236 msgid "U_nits:" msgstr "U_nidades:" -#: ../src/ui/widget/page-sizer.cpp:220 +#: ../src/ui/widget/page-sizer.cpp:237 msgid "Width of paper" msgstr "Ancho del papel" -#: ../src/ui/widget/page-sizer.cpp:221 +#: ../src/ui/widget/page-sizer.cpp:238 msgid "Height of paper" msgstr "Altura del papel" -#: ../src/ui/widget/page-sizer.cpp:222 +#: ../src/ui/widget/page-sizer.cpp:239 msgid "T_op margin:" msgstr "Margen _superior:" -#: ../src/ui/widget/page-sizer.cpp:222 +#: ../src/ui/widget/page-sizer.cpp:239 msgid "Top margin" msgstr "Margen superior" -#: ../src/ui/widget/page-sizer.cpp:223 +#: ../src/ui/widget/page-sizer.cpp:240 msgid "L_eft:" msgstr "I_zquierda:" -#: ../src/ui/widget/page-sizer.cpp:223 +#: ../src/ui/widget/page-sizer.cpp:240 msgid "Left margin" msgstr "Margen izquierdo" -#: ../src/ui/widget/page-sizer.cpp:224 +#: ../src/ui/widget/page-sizer.cpp:241 msgid "Ri_ght:" msgstr "De_recha:" -#: ../src/ui/widget/page-sizer.cpp:224 +#: ../src/ui/widget/page-sizer.cpp:241 msgid "Right margin" msgstr "Margen derecho" -#: ../src/ui/widget/page-sizer.cpp:225 +#: ../src/ui/widget/page-sizer.cpp:242 msgid "Botto_m:" msgstr "_Inferior:" -#: ../src/ui/widget/page-sizer.cpp:225 +#: ../src/ui/widget/page-sizer.cpp:242 msgid "Bottom margin" msgstr "Margen inferior" -#: ../src/ui/widget/page-sizer.cpp:227 +#: ../src/ui/widget/page-sizer.cpp:244 msgid "Scale _x:" msgstr "Escala _x:" -#: ../src/ui/widget/page-sizer.cpp:227 +#: ../src/ui/widget/page-sizer.cpp:244 msgid "Scale X" msgstr "Escala X" -#: ../src/ui/widget/page-sizer.cpp:228 +#: ../src/ui/widget/page-sizer.cpp:245 msgid "Scale _y:" msgstr "Escala _y:" -#: ../src/ui/widget/page-sizer.cpp:228 +#: ../src/ui/widget/page-sizer.cpp:245 msgid "Scale Y" msgstr "Escala Y" -#: ../src/ui/widget/page-sizer.cpp:306 +#: ../src/ui/widget/page-sizer.cpp:323 msgid "Orientation:" msgstr "Orientación:" -#: ../src/ui/widget/page-sizer.cpp:309 +#: ../src/ui/widget/page-sizer.cpp:326 msgid "_Landscape" msgstr "Horizonta_l" -#: ../src/ui/widget/page-sizer.cpp:314 +#: ../src/ui/widget/page-sizer.cpp:331 msgid "_Portrait" msgstr "Ver_tical" #. ## Set up custom size frame -#: ../src/ui/widget/page-sizer.cpp:333 +#: ../src/ui/widget/page-sizer.cpp:350 msgid "Custom size" msgstr "Tamaño personalizado" -#: ../src/ui/widget/page-sizer.cpp:368 +#: ../src/ui/widget/page-sizer.cpp:395 msgid "Resi_ze page to content..." -msgstr "Ajustar _página a contenido..." +msgstr "Ajustar página a _contenido..." -#: ../src/ui/widget/page-sizer.cpp:409 -msgid "_Resize page to drawing or selection (Ctrl+Shift+R)" -msgstr "Ajusta_r página a dibujo o selección (Ctrl+Mayús+R)" +#: ../src/ui/widget/page-sizer.cpp:447 +msgid "_Resize page to drawing or selection" +msgstr "Ajusta_r página a dibujo o selección" -#: ../src/ui/widget/page-sizer.cpp:410 +#: ../src/ui/widget/page-sizer.cpp:448 msgid "" "Resize the page to fit the current selection, or the entire drawing if there " "is no selection" @@ -25656,7 +25789,7 @@ msgstr "" "Redimensionar la página para que se ajuste a la selección actual o al dibujo " "completo si no hay selección" -#: ../src/ui/widget/page-sizer.cpp:430 +#: ../src/ui/widget/page-sizer.cpp:479 msgid "" "While SVG allows non-uniform scaling it is recommended to use only uniform " "scaling in Inkscape. To set a non-uniform scaling, set the 'viewBox' " @@ -25666,121 +25799,125 @@ msgstr "" "escalado uniforme en Inkscape. Ajuste el 'viewBox' directamente para fijar " "un escalado no-uniforme." -#: ../src/ui/widget/page-sizer.cpp:434 +#: ../src/ui/widget/page-sizer.cpp:483 msgid "_Viewbox..." msgstr "_Viewbox..." -#: ../src/ui/widget/page-sizer.cpp:530 +#: ../src/ui/widget/page-sizer.cpp:590 msgid "Set page size" msgstr "Fijar tamaño del papel" -#: ../src/ui/widget/page-sizer.cpp:776 +#: ../src/ui/widget/page-sizer.cpp:836 msgid "User units per " msgstr "Unidades de usuario por " -#: ../src/ui/widget/page-sizer.cpp:872 +#: ../src/ui/widget/page-sizer.cpp:932 msgid "Set page scale" msgstr "Fijar escala de la hoja" -#: ../src/ui/widget/panel.cpp:112 +#: ../src/ui/widget/page-sizer.cpp:958 +msgid "Set 'viewBox'" +msgstr "Fijar 'viewBox'" + +#: ../src/ui/widget/panel.cpp:116 msgid "List" msgstr "Lista" -#: ../src/ui/widget/panel.cpp:135 +#: ../src/ui/widget/panel.cpp:139 msgctxt "Swatches" msgid "Size" msgstr "Tamaño" -#: ../src/ui/widget/panel.cpp:139 +#: ../src/ui/widget/panel.cpp:143 msgctxt "Swatches height" msgid "Tiny" msgstr "Mínimo" -#: ../src/ui/widget/panel.cpp:140 +#: ../src/ui/widget/panel.cpp:144 msgctxt "Swatches height" msgid "Small" msgstr "Pequeño" -#: ../src/ui/widget/panel.cpp:141 +#: ../src/ui/widget/panel.cpp:145 msgctxt "Swatches height" msgid "Medium" msgstr "Mediano" -#: ../src/ui/widget/panel.cpp:142 +#: ../src/ui/widget/panel.cpp:146 msgctxt "Swatches height" msgid "Large" msgstr "Grande" -#: ../src/ui/widget/panel.cpp:143 +#: ../src/ui/widget/panel.cpp:147 msgctxt "Swatches height" msgid "Huge" msgstr "Enorme" -#: ../src/ui/widget/panel.cpp:165 +#: ../src/ui/widget/panel.cpp:169 msgctxt "Swatches" msgid "Width" msgstr "Ancho" -#: ../src/ui/widget/panel.cpp:169 +#: ../src/ui/widget/panel.cpp:173 msgctxt "Swatches width" msgid "Narrower" msgstr "Más estrecho" -#: ../src/ui/widget/panel.cpp:170 +#: ../src/ui/widget/panel.cpp:174 msgctxt "Swatches width" msgid "Narrow" msgstr "Estrecho" -#: ../src/ui/widget/panel.cpp:171 +#: ../src/ui/widget/panel.cpp:175 msgctxt "Swatches width" msgid "Medium" msgstr "Mediano" -#: ../src/ui/widget/panel.cpp:172 +#: ../src/ui/widget/panel.cpp:176 msgctxt "Swatches width" msgid "Wide" msgstr "Ancho" -#: ../src/ui/widget/panel.cpp:173 +#: ../src/ui/widget/panel.cpp:177 msgctxt "Swatches width" msgid "Wider" msgstr "Más ancho" -#: ../src/ui/widget/panel.cpp:203 +#: ../src/ui/widget/panel.cpp:207 msgctxt "Swatches" msgid "Border" msgstr "Borde" -#: ../src/ui/widget/panel.cpp:207 +#: ../src/ui/widget/panel.cpp:211 msgctxt "Swatches border" msgid "None" msgstr "Ninguno" -#: ../src/ui/widget/panel.cpp:208 +#: ../src/ui/widget/panel.cpp:212 msgctxt "Swatches border" msgid "Solid" msgstr "Sólido" -#: ../src/ui/widget/panel.cpp:209 +#: ../src/ui/widget/panel.cpp:213 msgctxt "Swatches border" msgid "Wide" msgstr "Ancho" #. TRANSLATORS: "Wrap" indicates how colour swatches are displayed -#: ../src/ui/widget/panel.cpp:240 +#: ../src/ui/widget/panel.cpp:244 msgctxt "Swatches" msgid "Wrap" msgstr "Ajustar" -#: ../src/ui/widget/preferences-widget.cpp:715 +#: ../src/ui/widget/preferences-widget.cpp:795 msgid "_Browse..." msgstr "E_xaminar..." -#: ../src/ui/widget/preferences-widget.cpp:801 +#: ../src/ui/widget/preferences-widget.cpp:881 msgid "Select a bitmap editor" msgstr "Seleccione un editor de mapas de bits" -#: ../src/ui/widget/random.cpp:80 +#: ../src/ui/widget/random.cpp:84 msgid "" "Reseed the random number generator; this creates a different sequence of " "random numbers." @@ -25828,296 +25965,296 @@ msgstr "" "mayor y no se puede escalar arbitrariamente sin pérdida de calidad, pero " "todos los gráficos serán renderizados idénticos a la pantalla." -#: ../src/ui/widget/selected-style.cpp:122 -#: ../src/ui/widget/style-swatch.cpp:115 +#: ../src/ui/widget/selected-style.cpp:131 +#: ../src/ui/widget/style-swatch.cpp:129 msgid "Fill:" msgstr "Relleno:" -#: ../src/ui/widget/selected-style.cpp:124 +#: ../src/ui/widget/selected-style.cpp:133 msgid "O:" msgstr "O:" -#: ../src/ui/widget/selected-style.cpp:161 +#: ../src/ui/widget/selected-style.cpp:179 msgid "N/A" msgstr "N/D" -#: ../src/ui/widget/selected-style.cpp:164 -#: ../src/ui/widget/selected-style.cpp:1083 -#: ../src/ui/widget/selected-style.cpp:1084 -#: ../src/widgets/gradient-toolbar.cpp:163 +#: ../src/ui/widget/selected-style.cpp:182 +#: ../src/ui/widget/selected-style.cpp:1117 +#: ../src/ui/widget/selected-style.cpp:1118 +#: ../src/widgets/gradient-toolbar.cpp:162 msgid "Nothing selected" msgstr "Sin selección" -#: ../src/ui/widget/selected-style.cpp:167 +#: ../src/ui/widget/selected-style.cpp:185 msgctxt "Fill" msgid "None" msgstr "Ninguno" -#: ../src/ui/widget/selected-style.cpp:169 +#: ../src/ui/widget/selected-style.cpp:187 msgctxt "Stroke" msgid "None" msgstr "Ninguno" -#: ../src/ui/widget/selected-style.cpp:173 -#: ../src/ui/widget/style-swatch.cpp:296 +#: ../src/ui/widget/selected-style.cpp:191 +#: ../src/ui/widget/style-swatch.cpp:323 msgctxt "Fill and stroke" msgid "No fill" msgstr "Sin relleno" -#: ../src/ui/widget/selected-style.cpp:173 -#: ../src/ui/widget/style-swatch.cpp:296 +#: ../src/ui/widget/selected-style.cpp:191 +#: ../src/ui/widget/style-swatch.cpp:323 msgctxt "Fill and stroke" msgid "No stroke" msgstr "Sin trazo" -#: ../src/ui/widget/selected-style.cpp:175 -#: ../src/ui/widget/style-swatch.cpp:275 ../src/widgets/paint-selector.cpp:220 +#: ../src/ui/widget/selected-style.cpp:193 +#: ../src/ui/widget/style-swatch.cpp:302 ../src/widgets/paint-selector.cpp:233 msgid "Pattern" msgstr "Patrón" -#: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:277 +#: ../src/ui/widget/selected-style.cpp:196 +#: ../src/ui/widget/style-swatch.cpp:304 msgid "Pattern fill" msgstr "Relleno de mosaico" -#: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:277 +#: ../src/ui/widget/selected-style.cpp:196 +#: ../src/ui/widget/style-swatch.cpp:304 msgid "Pattern stroke" msgstr "Trazo de mosaico" -#: ../src/ui/widget/selected-style.cpp:180 +#: ../src/ui/widget/selected-style.cpp:198 msgid "L" msgstr "L" -#: ../src/ui/widget/selected-style.cpp:183 -#: ../src/ui/widget/style-swatch.cpp:269 +#: ../src/ui/widget/selected-style.cpp:201 +#: ../src/ui/widget/style-swatch.cpp:296 msgid "Linear gradient fill" msgstr "Relleno con degradado lineal" -#: ../src/ui/widget/selected-style.cpp:183 -#: ../src/ui/widget/style-swatch.cpp:269 +#: ../src/ui/widget/selected-style.cpp:201 +#: ../src/ui/widget/style-swatch.cpp:296 msgid "Linear gradient stroke" msgstr "Trazo con degradado lineal" -#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/selected-style.cpp:208 msgid "R" msgstr "R" -#: ../src/ui/widget/selected-style.cpp:193 -#: ../src/ui/widget/style-swatch.cpp:273 +#: ../src/ui/widget/selected-style.cpp:211 +#: ../src/ui/widget/style-swatch.cpp:300 msgid "Radial gradient fill" msgstr "Relleno con degradado radial" -#: ../src/ui/widget/selected-style.cpp:193 -#: ../src/ui/widget/style-swatch.cpp:273 +#: ../src/ui/widget/selected-style.cpp:211 +#: ../src/ui/widget/style-swatch.cpp:300 msgid "Radial gradient stroke" msgstr "Trazo con degradado radial" -#: ../src/ui/widget/selected-style.cpp:201 +#: ../src/ui/widget/selected-style.cpp:219 msgid "M" msgstr "M" -#: ../src/ui/widget/selected-style.cpp:204 +#: ../src/ui/widget/selected-style.cpp:222 msgid "Mesh gradient fill" msgstr "Relleno con degradado de rejilla" -#: ../src/ui/widget/selected-style.cpp:204 +#: ../src/ui/widget/selected-style.cpp:222 msgid "Mesh gradient stroke" msgstr "Trazo con degradado de rejilla" -#: ../src/ui/widget/selected-style.cpp:212 +#: ../src/ui/widget/selected-style.cpp:230 msgid "Different" msgstr "Diferente" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:233 msgid "Different fills" msgstr "Rellenos diferentes" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:233 msgid "Different strokes" msgstr "Trazos diferentes" -#: ../src/ui/widget/selected-style.cpp:217 -#: ../src/ui/widget/style-swatch.cpp:299 +#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/style-swatch.cpp:326 msgid "Unset" msgstr "No definir" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:540 -#: ../src/ui/widget/style-swatch.cpp:301 ../src/widgets/fill-style.cpp:811 +#: ../src/ui/widget/selected-style.cpp:238 +#: ../src/ui/widget/selected-style.cpp:296 +#: ../src/ui/widget/selected-style.cpp:574 +#: ../src/ui/widget/style-swatch.cpp:328 ../src/widgets/fill-style.cpp:815 msgid "Unset fill" msgstr "No definir relleno" -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:556 -#: ../src/ui/widget/style-swatch.cpp:301 ../src/widgets/fill-style.cpp:811 +#: ../src/ui/widget/selected-style.cpp:238 +#: ../src/ui/widget/selected-style.cpp:296 +#: ../src/ui/widget/selected-style.cpp:590 +#: ../src/ui/widget/style-swatch.cpp:328 ../src/widgets/fill-style.cpp:815 msgid "Unset stroke" msgstr "No definir trazo" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:241 msgid "Flat color fill" msgstr "Relleno de color uniforme" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:241 msgid "Flat color stroke" msgstr "Trazo de color uniforme" #. TRANSLATOR COMMENT: A means "Averaged" -#: ../src/ui/widget/selected-style.cpp:226 +#: ../src/ui/widget/selected-style.cpp:244 msgid "a" msgstr "a" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:247 msgid "Fill is averaged over selected objects" msgstr "El relleno es la media de los objetos seleccionados" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:247 msgid "Stroke is averaged over selected objects" msgstr "El trazo es la media de los objetos seleccionados" #. TRANSLATOR COMMENT: M means "Multiple" -#: ../src/ui/widget/selected-style.cpp:232 +#: ../src/ui/widget/selected-style.cpp:250 msgid "m" msgstr "m" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:253 msgid "Multiple selected objects have the same fill" msgstr "Varios objetos seleccionados tienen el mismo relleno" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:253 msgid "Multiple selected objects have the same stroke" msgstr "Varios objetos seleccionados tienen el mismo trazo" -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:255 msgid "Edit fill..." msgstr "Editar relleno..." -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:255 msgid "Edit stroke..." msgstr "Editar trazo..." -#: ../src/ui/widget/selected-style.cpp:241 +#: ../src/ui/widget/selected-style.cpp:259 msgid "Last set color" msgstr "Último color usado" -#: ../src/ui/widget/selected-style.cpp:245 +#: ../src/ui/widget/selected-style.cpp:263 msgid "Last selected color" msgstr "Último color seleccionado" -#: ../src/ui/widget/selected-style.cpp:261 +#: ../src/ui/widget/selected-style.cpp:279 msgid "Copy color" msgstr "Copiar color" -#: ../src/ui/widget/selected-style.cpp:265 +#: ../src/ui/widget/selected-style.cpp:283 msgid "Paste color" msgstr "Pegar color" -#: ../src/ui/widget/selected-style.cpp:269 -#: ../src/ui/widget/selected-style.cpp:839 +#: ../src/ui/widget/selected-style.cpp:287 +#: ../src/ui/widget/selected-style.cpp:873 msgid "Swap fill and stroke" msgstr "Intercambiar relleno y trazo" -#: ../src/ui/widget/selected-style.cpp:273 -#: ../src/ui/widget/selected-style.cpp:565 -#: ../src/ui/widget/selected-style.cpp:574 +#: ../src/ui/widget/selected-style.cpp:291 +#: ../src/ui/widget/selected-style.cpp:599 +#: ../src/ui/widget/selected-style.cpp:608 msgid "Make fill opaque" msgstr "Hacer el relleno opaco" -#: ../src/ui/widget/selected-style.cpp:273 +#: ../src/ui/widget/selected-style.cpp:291 msgid "Make stroke opaque" msgstr "Hacer el trazo opaco" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:522 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:300 +#: ../src/ui/widget/selected-style.cpp:556 ../src/widgets/fill-style.cpp:514 msgid "Remove fill" msgstr "Eliminar relleno" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:531 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:300 +#: ../src/ui/widget/selected-style.cpp:565 ../src/widgets/fill-style.cpp:514 msgid "Remove stroke" msgstr "Eliminar trazo" -#: ../src/ui/widget/selected-style.cpp:586 +#: ../src/ui/widget/selected-style.cpp:620 msgid "Apply last set color to fill" msgstr "Aplicar el último color fijado al relleno" -#: ../src/ui/widget/selected-style.cpp:598 +#: ../src/ui/widget/selected-style.cpp:632 msgid "Apply last set color to stroke" msgstr "Aplicar el último color fijado al trazo" -#: ../src/ui/widget/selected-style.cpp:609 +#: ../src/ui/widget/selected-style.cpp:643 msgid "Apply last selected color to fill" msgstr "Aplicar el último color seleccionado al relleno" -#: ../src/ui/widget/selected-style.cpp:620 +#: ../src/ui/widget/selected-style.cpp:654 msgid "Apply last selected color to stroke" msgstr "Aplicar el último color seleccionado al trazo" -#: ../src/ui/widget/selected-style.cpp:646 +#: ../src/ui/widget/selected-style.cpp:680 msgid "Invert fill" msgstr "Invertir relleno" -#: ../src/ui/widget/selected-style.cpp:670 +#: ../src/ui/widget/selected-style.cpp:704 msgid "Invert stroke" msgstr "Invertir trazo" -#: ../src/ui/widget/selected-style.cpp:682 +#: ../src/ui/widget/selected-style.cpp:716 msgid "White fill" msgstr "Relleno blanco" -#: ../src/ui/widget/selected-style.cpp:694 +#: ../src/ui/widget/selected-style.cpp:728 msgid "White stroke" msgstr "Trazo blanco" -#: ../src/ui/widget/selected-style.cpp:706 +#: ../src/ui/widget/selected-style.cpp:740 msgid "Black fill" msgstr "Relleno negro" -#: ../src/ui/widget/selected-style.cpp:718 +#: ../src/ui/widget/selected-style.cpp:752 msgid "Black stroke" msgstr "Trazo negro" -#: ../src/ui/widget/selected-style.cpp:761 +#: ../src/ui/widget/selected-style.cpp:795 msgid "Paste fill" msgstr "Pegar relleno" -#: ../src/ui/widget/selected-style.cpp:779 +#: ../src/ui/widget/selected-style.cpp:813 msgid "Paste stroke" msgstr "Pegar trazo" -#: ../src/ui/widget/selected-style.cpp:941 +#: ../src/ui/widget/selected-style.cpp:975 msgid "Change stroke width" msgstr "Cambiar ancho de trazo" -#: ../src/ui/widget/selected-style.cpp:1044 +#: ../src/ui/widget/selected-style.cpp:1078 msgid ", drag to adjust" msgstr ", arrastrar para ajustar" -#: ../src/ui/widget/selected-style.cpp:1125 +#: ../src/ui/widget/selected-style.cpp:1163 #, c-format msgid "Stroke width: %.5g%s%s" msgstr "Ancho de trazo: %.5g%s%s" -#: ../src/ui/widget/selected-style.cpp:1129 +#: ../src/ui/widget/selected-style.cpp:1167 msgid " (averaged)" msgstr " (media)" -#: ../src/ui/widget/selected-style.cpp:1155 +#: ../src/ui/widget/selected-style.cpp:1193 msgid "0 (transparent)" msgstr "0 (transparente)" -#: ../src/ui/widget/selected-style.cpp:1179 +#: ../src/ui/widget/selected-style.cpp:1217 msgid "100% (opaque)" msgstr "100% (opaco)" -#: ../src/ui/widget/selected-style.cpp:1345 +#: ../src/ui/widget/selected-style.cpp:1391 msgid "Adjust alpha" msgstr "Ajustar alfa" -#: ../src/ui/widget/selected-style.cpp:1347 +#: ../src/ui/widget/selected-style.cpp:1393 #, c-format msgid "" "Adjusting alpha: was %.3g, now %.3g (diff %.3g); with Ctrl para ajustar luminancia, con Mayús para ajustar saturación, sin " "modificadores para ajustar matiz" -#: ../src/ui/widget/selected-style.cpp:1351 +#: ../src/ui/widget/selected-style.cpp:1397 msgid "Adjust saturation" msgstr "Ajustar saturación" -#: ../src/ui/widget/selected-style.cpp:1353 +#: ../src/ui/widget/selected-style.cpp:1399 #, c-format msgid "" "Adjusting saturation: was %.3g, now %.3g (diff %.3g); with " @@ -26143,11 +26280,11 @@ msgstr "" "Ctrl para ajustar luminancia, con Alt para ajustar alfa, sin " "modificadores para ajustar matiz" -#: ../src/ui/widget/selected-style.cpp:1357 +#: ../src/ui/widget/selected-style.cpp:1403 msgid "Adjust lightness" msgstr "Ajustar luminancia" -#: ../src/ui/widget/selected-style.cpp:1359 +#: ../src/ui/widget/selected-style.cpp:1405 #, c-format msgid "" "Adjusting lightness: was %.3g, now %.3g (diff %.3g); with " @@ -26158,11 +26295,11 @@ msgstr "" "Mayús para ajustar saturación, con Alt para ajustar alfa, sin " "modificadores para ajustar matiz" -#: ../src/ui/widget/selected-style.cpp:1363 +#: ../src/ui/widget/selected-style.cpp:1409 msgid "Adjust hue" msgstr "Ajustar matiz" -#: ../src/ui/widget/selected-style.cpp:1365 +#: ../src/ui/widget/selected-style.cpp:1411 #, c-format msgid "" "Adjusting hue: was %.3g, now %.3g (diff %.3g); with ShiftMayús para ajustar saturación, con Alt para ajustar alfa, con " "Ctrl para ajustar luminancia" -#: ../src/ui/widget/selected-style.cpp:1479 -#: ../src/ui/widget/selected-style.cpp:1493 +#: ../src/ui/widget/selected-style.cpp:1529 +#: ../src/ui/widget/selected-style.cpp:1543 msgid "Adjust stroke width" msgstr "Ajustar ancho de trazo" -#: ../src/ui/widget/selected-style.cpp:1480 +#: ../src/ui/widget/selected-style.cpp:1530 #, c-format msgid "Adjusting stroke width: was %.3g, now %.3g (diff %.3g)" msgstr "" "Adjustando anchura de trazo: era %.3g, ahora %.3g (dif %.3g)" #. TRANSLATORS: "Link" means to _link_ two sliders together -#: ../src/ui/widget/spin-scale.cpp:123 ../src/ui/widget/spin-slider.cpp:114 +#: ../src/ui/widget/spin-scale.cpp:138 ../src/ui/widget/spin-slider.cpp:156 msgctxt "Sliders" msgid "Link" msgstr "Enlace" -#: ../src/ui/widget/style-swatch.cpp:267 +#: ../src/ui/widget/style-swatch.cpp:294 msgid "L Gradient" msgstr "Degradado L" -#: ../src/ui/widget/style-swatch.cpp:271 +#: ../src/ui/widget/style-swatch.cpp:298 msgid "R Gradient" msgstr "Degradado R" -#: ../src/ui/widget/style-swatch.cpp:287 +#: ../src/ui/widget/style-swatch.cpp:314 #, c-format msgid "Fill: %06x/%.3g" msgstr "Relleno: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:289 +#: ../src/ui/widget/style-swatch.cpp:316 #, c-format msgid "Stroke: %06x/%.3g" msgstr "Trazo: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:294 +#: ../src/ui/widget/style-swatch.cpp:321 msgctxt "Fill and stroke" msgid "None" msgstr "Ninguno" -#: ../src/ui/widget/style-swatch.cpp:321 +#: ../src/ui/widget/style-swatch.cpp:348 #, c-format msgid "Stroke width: %.5g%s" msgstr "Ancho de trazo: %.5g%s" -#: ../src/ui/widget/style-swatch.cpp:337 +#: ../src/ui/widget/style-swatch.cpp:364 #, c-format msgid "O: %2.0f" msgstr "O: %2.0f" -#: ../src/ui/widget/style-swatch.cpp:342 +#: ../src/ui/widget/style-swatch.cpp:369 #, c-format msgid "Opacity: %2.1f %%" msgstr "Opacidad: %2.1f %%" -#: ../src/vanishing-point.cpp:131 +#: ../src/vanishing-point.cpp:133 msgid "Split vanishing points" msgstr "Dividir puntos de fuga" -#: ../src/vanishing-point.cpp:176 +#: ../src/vanishing-point.cpp:178 msgid "Merge vanishing points" msgstr "Fundir punto de fuga" -#: ../src/vanishing-point.cpp:244 +#: ../src/vanishing-point.cpp:246 msgid "3D box: Move vanishing point" msgstr "Caja 3D: Mover punto de fuga" -#: ../src/vanishing-point.cpp:327 +#: ../src/vanishing-point.cpp:329 #, c-format msgid "Finite vanishing point shared by %d box" msgid_plural "" @@ -26253,7 +26390,7 @@ msgstr[1] "" #. This won't make sense any more when infinite VPs are not shown on the canvas, #. but currently we update the status message anyway -#: ../src/vanishing-point.cpp:334 +#: ../src/vanishing-point.cpp:336 #, c-format msgid "Infinite vanishing point shared by %d box" msgid_plural "" @@ -26264,7 +26401,7 @@ msgstr[1] "" "Infinito funto de fuga compartido por %d cajas, arrastre con " "Mayús para separar las cajas seleccionadas" -#: ../src/vanishing-point.cpp:342 +#: ../src/vanishing-point.cpp:344 #, c-format msgid "" "shared by %d box; drag with Shift to separate selected box(es)" @@ -26278,270 +26415,270 @@ msgstr[1] "" "compartido por %d cajas, arrastre con Mayús para separar la " "caja seleccionada" -#: ../src/verbs.cpp:131 +#: ../src/verbs.cpp:137 msgid "File" msgstr "Archivo" -#: ../src/verbs.cpp:226 ../share/extensions/interp_att_g.inx.h:24 +#: ../src/verbs.cpp:232 ../share/extensions/interp_att_g.inx.h:24 msgid "Tag" msgstr "Etiqueta" -#: ../src/verbs.cpp:245 +#: ../src/verbs.cpp:251 msgid "Context" msgstr "Contexto" -#: ../src/verbs.cpp:264 ../src/verbs.cpp:2333 +#: ../src/verbs.cpp:270 ../src/verbs.cpp:2303 #: ../share/extensions/jessyInk_view.inx.h:1 #: ../share/extensions/polyhedron_3d.inx.h:26 msgid "View" msgstr "Vista" -#: ../src/verbs.cpp:284 +#: ../src/verbs.cpp:290 msgid "Dialog" msgstr "Diálogo" -#: ../src/verbs.cpp:1310 +#: ../src/verbs.cpp:1281 msgid "Switch to next layer" msgstr "Cambiar a la siguiente capa" -#: ../src/verbs.cpp:1311 +#: ../src/verbs.cpp:1282 msgid "Switched to next layer." msgstr "Cambiado a la siguiente capa." -#: ../src/verbs.cpp:1313 +#: ../src/verbs.cpp:1284 msgid "Cannot go past last layer." msgstr "No se puede ir más allá de la última capa." -#: ../src/verbs.cpp:1322 +#: ../src/verbs.cpp:1293 msgid "Switch to previous layer" msgstr "Cambiar a la capa anterior" -#: ../src/verbs.cpp:1323 +#: ../src/verbs.cpp:1294 msgid "Switched to previous layer." msgstr "Cambiado a la capa anterior" -#: ../src/verbs.cpp:1325 +#: ../src/verbs.cpp:1296 msgid "Cannot go before first layer." msgstr "No se puede ir más allá de la primera capa." -#: ../src/verbs.cpp:1346 ../src/verbs.cpp:1413 ../src/verbs.cpp:1449 -#: ../src/verbs.cpp:1455 ../src/verbs.cpp:1479 ../src/verbs.cpp:1494 +#: ../src/verbs.cpp:1317 ../src/verbs.cpp:1384 ../src/verbs.cpp:1420 +#: ../src/verbs.cpp:1426 ../src/verbs.cpp:1450 ../src/verbs.cpp:1465 msgid "No current layer." msgstr "No hay capa actual." -#: ../src/verbs.cpp:1375 ../src/verbs.cpp:1379 +#: ../src/verbs.cpp:1346 ../src/verbs.cpp:1350 #, c-format msgid "Raised layer %s." msgstr "Capa elevada %s." -#: ../src/verbs.cpp:1376 +#: ../src/verbs.cpp:1347 msgid "Layer to top" msgstr "Capa al frente" -#: ../src/verbs.cpp:1380 +#: ../src/verbs.cpp:1351 msgid "Raise layer" msgstr "Elevar capa" -#: ../src/verbs.cpp:1383 ../src/verbs.cpp:1387 +#: ../src/verbs.cpp:1354 ../src/verbs.cpp:1358 #, c-format msgid "Lowered layer %s." msgstr "Capa enviada al fondo·%s." -#: ../src/verbs.cpp:1384 +#: ../src/verbs.cpp:1355 msgid "Layer to bottom" msgstr "Capa al fondo" -#: ../src/verbs.cpp:1388 +#: ../src/verbs.cpp:1359 msgid "Lower layer" msgstr "Bajar capa" -#: ../src/verbs.cpp:1397 +#: ../src/verbs.cpp:1368 msgid "Cannot move layer any further." msgstr "No se puede mover más la capa." -#: ../src/verbs.cpp:1408 +#: ../src/verbs.cpp:1379 msgid "Duplicate layer" msgstr "Duplicar capa" #. TRANSLATORS: this means "The layer has been duplicated." -#: ../src/verbs.cpp:1411 +#: ../src/verbs.cpp:1382 msgid "Duplicated layer." msgstr "Duplicar capa." -#: ../src/verbs.cpp:1444 +#: ../src/verbs.cpp:1415 msgid "Delete layer" msgstr "Borrar capa" #. TRANSLATORS: this means "The layer has been deleted." -#: ../src/verbs.cpp:1447 +#: ../src/verbs.cpp:1418 msgid "Deleted layer." msgstr "Capa eliminada." -#: ../src/verbs.cpp:1464 +#: ../src/verbs.cpp:1435 msgid "Show all layers" msgstr "Mostrar todas las capas" -#: ../src/verbs.cpp:1469 +#: ../src/verbs.cpp:1440 msgid "Hide all layers" msgstr "Ocultar todas las capas" -#: ../src/verbs.cpp:1474 +#: ../src/verbs.cpp:1445 msgid "Lock all layers" msgstr "Bloquear todas las capas" -#: ../src/verbs.cpp:1488 +#: ../src/verbs.cpp:1459 msgid "Unlock all layers" msgstr "Desbloquear todas las capas" -#: ../src/verbs.cpp:1572 +#: ../src/verbs.cpp:1543 msgid "Flip horizontally" msgstr "Reflejo horizontal" -#: ../src/verbs.cpp:1577 +#: ../src/verbs.cpp:1548 msgid "Flip vertically" msgstr "Reflejo vertical" -#: ../src/verbs.cpp:1625 +#: ../src/verbs.cpp:1596 #, c-format msgid "Set %d" msgstr "Fijar %d" -#: ../src/verbs.cpp:1634 ../src/verbs.cpp:2781 +#: ../src/verbs.cpp:1605 ../src/verbs.cpp:2743 msgid "Create new selection set" msgstr "Crear un nuevo conjunto de selección" #. TRANSLATORS: If you have translated the tutorial-basic.en.svgz file to your language, #. then translate this string as "tutorial-basic.LANG.svgz" (where LANG is your language #. code); otherwise leave as "tutorial-basic.svg". -#: ../src/verbs.cpp:2211 +#: ../src/verbs.cpp:2181 msgid "tutorial-basic.svg" msgstr "tutorial-basic.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2215 +#: ../src/verbs.cpp:2185 msgid "tutorial-shapes.svg" msgstr "tutorial-shapes.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2219 +#: ../src/verbs.cpp:2189 msgid "tutorial-advanced.svg" msgstr "tutorial-advanced.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2225 +#: ../src/verbs.cpp:2195 msgid "tutorial-tracing.svg" msgstr "tutorial-tracing.es.svg" -#: ../src/verbs.cpp:2230 +#: ../src/verbs.cpp:2200 msgid "tutorial-tracing-pixelart.svg" msgstr "tutorial-tracing-pixelart.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2234 +#: ../src/verbs.cpp:2204 msgid "tutorial-calligraphy.svg" msgstr "tutorial-calligraphy.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2238 +#: ../src/verbs.cpp:2208 msgid "tutorial-interpolate.svg" msgstr "tutorial-interpolate.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2242 +#: ../src/verbs.cpp:2212 msgid "tutorial-elements.svg" msgstr "tutorial-elements.es.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2246 +#: ../src/verbs.cpp:2216 msgid "tutorial-tips.svg" msgstr "tutorial-tips.es.svg" -#: ../src/verbs.cpp:2432 ../src/verbs.cpp:3064 +#: ../src/verbs.cpp:2402 ../src/verbs.cpp:3026 msgid "Unlock all objects in the current layer" msgstr "Desbloquear todos los objetos de la capa actual" -#: ../src/verbs.cpp:2436 ../src/verbs.cpp:3066 +#: ../src/verbs.cpp:2406 ../src/verbs.cpp:3028 msgid "Unlock all objects in all layers" msgstr "Desbloquear todos los objetos en todas las capas" -#: ../src/verbs.cpp:2440 ../src/verbs.cpp:3068 +#: ../src/verbs.cpp:2410 ../src/verbs.cpp:3030 msgid "Unhide all objects in the current layer" msgstr "Mostrar todos los objetos en la capa actual" -#: ../src/verbs.cpp:2444 ../src/verbs.cpp:3070 +#: ../src/verbs.cpp:2414 ../src/verbs.cpp:3032 msgid "Unhide all objects in all layers" msgstr "Mostrar todos los objetos en todas las capas" -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2429 msgctxt "Verb" msgid "None" msgstr "Ninguno" -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2429 msgid "Does nothing" msgstr "No hacer nada" #. File #. Tag -#: ../src/verbs.cpp:2462 ../src/verbs.cpp:2780 +#: ../src/verbs.cpp:2432 ../src/verbs.cpp:2742 msgid "_New" msgstr "_Nuevo" -#: ../src/verbs.cpp:2462 +#: ../src/verbs.cpp:2432 msgid "Create new document from the default template" msgstr "Crear un documento nuevo de la plantilla predeterminada" -#: ../src/verbs.cpp:2464 +#: ../src/verbs.cpp:2434 msgid "_Open..." msgstr "_Abrir..." -#: ../src/verbs.cpp:2465 +#: ../src/verbs.cpp:2435 msgid "Open an existing document" msgstr "Abrir un documento existente" -#: ../src/verbs.cpp:2466 +#: ../src/verbs.cpp:2436 msgid "Re_vert" msgstr "Re_vertir" -#: ../src/verbs.cpp:2467 +#: ../src/verbs.cpp:2437 msgid "Revert to the last saved version of document (changes will be lost)" msgstr "" "Revertir a la última versión guardada del documento (se perderán los cambios)" -#: ../src/verbs.cpp:2468 +#: ../src/verbs.cpp:2438 msgid "Save document" msgstr "Guardar documento" -#: ../src/verbs.cpp:2470 +#: ../src/verbs.cpp:2440 msgid "Save _As..." msgstr "G_uardar como..." -#: ../src/verbs.cpp:2471 +#: ../src/verbs.cpp:2441 msgid "Save document under a new name" msgstr "Guardar el documento con un nombre nuevo" -#: ../src/verbs.cpp:2472 +#: ../src/verbs.cpp:2442 msgid "Save a Cop_y..." msgstr "Guardar una cop_ia..." -#: ../src/verbs.cpp:2473 +#: ../src/verbs.cpp:2443 msgid "Save a copy of the document under a new name" msgstr "Guardar una copia del documento con un nombre nuevo" -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2444 msgid "_Print..." msgstr "_Imprimir" -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2444 msgid "Print document" msgstr "Imprimir documento" #. TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions) -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2447 msgid "Clean _up document" msgstr "Limpiar doc_umento" -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2447 msgid "" "Remove unused definitions (such as gradients or clipping paths) from the <" "defs> of the document" @@ -26549,142 +26686,142 @@ msgstr "" "Eliminar definiciones no utilizadas (como degradados y trazados de recorte) " "de los <defs> del documento" -#: ../src/verbs.cpp:2479 +#: ../src/verbs.cpp:2449 msgid "_Import..." msgstr "_Importar..." -#: ../src/verbs.cpp:2480 +#: ../src/verbs.cpp:2450 msgid "Import a bitmap or SVG image into this document" msgstr "Importar mapa de bits o imagen SVG al documento" #. new FileVerb(SP_VERB_FILE_EXPORT, "FileExport", N_("_Export Bitmap..."), N_("Export this document or a selection as a bitmap image"), INKSCAPE_ICON("document-export")), -#: ../src/verbs.cpp:2482 +#: ../src/verbs.cpp:2452 msgid "Import Clip Art..." msgstr "Importar Clipart..." -#: ../src/verbs.cpp:2483 +#: ../src/verbs.cpp:2453 msgid "Import clipart from Open Clip Art Library" msgstr "Importar clipart desde Open Clip Art Library" #. new FileVerb(SP_VERB_FILE_EXPORT_TO_OCAL, "FileExportToOCAL", N_("Export To Open Clip Art Library"), N_("Export this document to Open Clip Art Library"), INKSCAPE_ICON_DOCUMENT_EXPORT_OCAL), -#: ../src/verbs.cpp:2485 +#: ../src/verbs.cpp:2455 msgid "N_ext Window" msgstr "Ventana sigui_ente" -#: ../src/verbs.cpp:2486 +#: ../src/verbs.cpp:2456 msgid "Switch to the next document window" msgstr "Cambiar a la ventana de documento siguiente" -#: ../src/verbs.cpp:2487 +#: ../src/verbs.cpp:2457 msgid "P_revious Window" msgstr "Ventana ante_rior" -#: ../src/verbs.cpp:2488 +#: ../src/verbs.cpp:2458 msgid "Switch to the previous document window" msgstr "Cambiar a la ventana de documento anterior" -#: ../src/verbs.cpp:2489 +#: ../src/verbs.cpp:2459 msgid "_Close" msgstr "_Cerrar" -#: ../src/verbs.cpp:2490 +#: ../src/verbs.cpp:2460 msgid "Close this document window" msgstr "Cerrar esta ventana de documento" -#: ../src/verbs.cpp:2491 +#: ../src/verbs.cpp:2461 msgid "_Quit" msgstr "_Salir" -#: ../src/verbs.cpp:2491 +#: ../src/verbs.cpp:2461 msgid "Quit Inkscape" msgstr "Salir de Inkscape" -#: ../src/verbs.cpp:2492 +#: ../src/verbs.cpp:2462 msgid "New from _Template..." msgstr "Nuevo a partir de plan_tilla..." -#: ../src/verbs.cpp:2493 +#: ../src/verbs.cpp:2463 msgid "Create new project from template" msgstr "Crear un proyecto nuevo a partir de una plantilla" -#: ../src/verbs.cpp:2496 +#: ../src/verbs.cpp:2466 msgid "Undo last action" msgstr "Deshacer la última acción" -#: ../src/verbs.cpp:2499 +#: ../src/verbs.cpp:2469 msgid "Do again the last undone action" msgstr "Ejecutar nuevamente la acción deshecha" -#: ../src/verbs.cpp:2500 +#: ../src/verbs.cpp:2470 msgid "Cu_t" msgstr "Cor_tar" -#: ../src/verbs.cpp:2501 +#: ../src/verbs.cpp:2471 msgid "Cut selection to clipboard" msgstr "Cortar la selección al portapapeles" -#: ../src/verbs.cpp:2502 +#: ../src/verbs.cpp:2472 msgid "_Copy" msgstr "_Copiar" -#: ../src/verbs.cpp:2503 +#: ../src/verbs.cpp:2473 msgid "Copy selection to clipboard" msgstr "Copiar la selección al portapapeles" -#: ../src/verbs.cpp:2504 +#: ../src/verbs.cpp:2474 msgid "_Paste" msgstr "_Pegar" -#: ../src/verbs.cpp:2505 +#: ../src/verbs.cpp:2475 msgid "Paste objects from clipboard to mouse point, or paste text" msgstr "" "Pegar los objetos o el texto desde el portapapeles al puntero del ratón." -#: ../src/verbs.cpp:2506 +#: ../src/verbs.cpp:2476 msgid "Paste _Style" msgstr "Pegar e_stilo" -#: ../src/verbs.cpp:2507 +#: ../src/verbs.cpp:2477 msgid "Apply the style of the copied object to selection" msgstr "Aplicar el estilo del objeto copiado a la selección" -#: ../src/verbs.cpp:2509 +#: ../src/verbs.cpp:2479 msgid "Scale selection to match the size of the copied object" msgstr "Escalar la selección al tamaño del objeto copiado" -#: ../src/verbs.cpp:2510 +#: ../src/verbs.cpp:2480 msgid "Paste _Width" msgstr "Pegar _ancho" -#: ../src/verbs.cpp:2511 +#: ../src/verbs.cpp:2481 msgid "Scale selection horizontally to match the width of the copied object" msgstr "" "Escalar la selección horizontalmente para igualar el ancho del objeto copiado" -#: ../src/verbs.cpp:2512 +#: ../src/verbs.cpp:2482 msgid "Paste _Height" msgstr "Pegar a_ltura" -#: ../src/verbs.cpp:2513 +#: ../src/verbs.cpp:2483 msgid "Scale selection vertically to match the height of the copied object" msgstr "" "Escalar la selección verticalmente para igualar la altura del objeto copiado" -#: ../src/verbs.cpp:2514 +#: ../src/verbs.cpp:2484 msgid "Paste Size Separately" msgstr "Pegar los tamaños por separado" -#: ../src/verbs.cpp:2515 +#: ../src/verbs.cpp:2485 msgid "Scale each selected object to match the size of the copied object" msgstr "" "Escalar cada uno de los objetos seleccionados para igualar el tamaño del " "objeto copiado" -#: ../src/verbs.cpp:2516 +#: ../src/verbs.cpp:2486 msgid "Paste Width Separately" msgstr "Pegar ancho por separado" -#: ../src/verbs.cpp:2517 +#: ../src/verbs.cpp:2487 msgid "" "Scale each selected object horizontally to match the width of the copied " "object" @@ -26692,11 +26829,11 @@ msgstr "" "Escalar cada uno de los objetos seleccionados para igualar el ancho del " "objeto copiado" -#: ../src/verbs.cpp:2518 +#: ../src/verbs.cpp:2488 msgid "Paste Height Separately" msgstr "Pegar altura por separado" -#: ../src/verbs.cpp:2519 +#: ../src/verbs.cpp:2489 msgid "" "Scale each selected object vertically to match the height of the copied " "object" @@ -26704,68 +26841,68 @@ msgstr "" "Escalar cada uno de los objetos seleccionados para igualar la altura del " "objeto copiado" -#: ../src/verbs.cpp:2520 +#: ../src/verbs.cpp:2490 msgid "Paste _In Place" msgstr "Pegar en el s_itio" -#: ../src/verbs.cpp:2521 +#: ../src/verbs.cpp:2491 msgid "Paste objects from clipboard to the original location" msgstr "Pegar los objetos del portapapeles en el lugar original." -#: ../src/verbs.cpp:2522 +#: ../src/verbs.cpp:2492 msgid "Paste Path _Effect" msgstr "Pegar _efecto de trayecto" -#: ../src/verbs.cpp:2523 +#: ../src/verbs.cpp:2493 msgid "Apply the path effect of the copied object to selection" msgstr "Aplicar el efecto de trayecto del objeto copiado a la selección" -#: ../src/verbs.cpp:2524 +#: ../src/verbs.cpp:2494 msgid "Remove Path _Effect" msgstr "Eliminar _efecto de trayecto" -#: ../src/verbs.cpp:2525 +#: ../src/verbs.cpp:2495 msgid "Remove any path effects from selected objects" msgstr "Eliminar todos los efectos de los objetos seleccionados" -#: ../src/verbs.cpp:2526 +#: ../src/verbs.cpp:2496 msgid "_Remove Filters" msgstr "Elimina_r filtros" -#: ../src/verbs.cpp:2527 +#: ../src/verbs.cpp:2497 msgid "Remove any filters from selected objects" msgstr "Eliminar todos los filtros de los objetos seleccionados" -#: ../src/verbs.cpp:2528 +#: ../src/verbs.cpp:2498 msgid "_Delete" msgstr "_Eliminar" -#: ../src/verbs.cpp:2529 +#: ../src/verbs.cpp:2499 msgid "Delete selection" msgstr "Borrar selección" -#: ../src/verbs.cpp:2530 +#: ../src/verbs.cpp:2500 msgid "Duplic_ate" msgstr "Duplic_ar" -#: ../src/verbs.cpp:2531 +#: ../src/verbs.cpp:2501 msgid "Duplicate selected objects" msgstr "Duplicar los objetos seleccionados" -#: ../src/verbs.cpp:2532 +#: ../src/verbs.cpp:2502 msgid "Create Clo_ne" msgstr "Crear clo_n" -#: ../src/verbs.cpp:2533 +#: ../src/verbs.cpp:2503 msgid "Create a clone (a copy linked to the original) of selected object" msgstr "" "Crear un clon del objeto seleccionado (una copia conectada al original)" -#: ../src/verbs.cpp:2534 +#: ../src/verbs.cpp:2504 msgid "Unlin_k Clone" msgstr "Des_conectar clon" -#: ../src/verbs.cpp:2535 +#: ../src/verbs.cpp:2505 msgid "" "Cut the selected clones' links to the originals, turning them into " "standalone objects" @@ -26773,38 +26910,29 @@ msgstr "" "Cortar la conexión de los clones seleccionado a sus originales, " "convirtiéndolos en objetos independientes" -#: ../src/verbs.cpp:2536 -msgid "Unlink Clones _recursively" -msgstr "Desconectar clones _recursivamente" - -#: ../src/verbs.cpp:2537 -msgid "Unlink all clones in the selection, even if they are in groups." -msgstr "" -"Desconectar todos los clones en la selección, incluso si están en un grupo." - -#: ../src/verbs.cpp:2538 +#: ../src/verbs.cpp:2506 msgid "Relink to Copied" msgstr "Reconectar a copiado" -#: ../src/verbs.cpp:2539 +#: ../src/verbs.cpp:2507 msgid "Relink the selected clones to the object currently on the clipboard" msgstr "" "Reconecta los clones seleccionados al objeto que actualmenete está en el " "portapapeles" -#: ../src/verbs.cpp:2540 +#: ../src/verbs.cpp:2508 msgid "Select _Original" msgstr "Seleccionar _original" -#: ../src/verbs.cpp:2541 +#: ../src/verbs.cpp:2509 msgid "Select the object to which the selected clone is linked" msgstr "Seleccione el objeto al que está conectado el clon seleccionado." -#: ../src/verbs.cpp:2542 +#: ../src/verbs.cpp:2510 msgid "Clone original path (LPE)" msgstr "Clonar trayecto original (LPE)" -#: ../src/verbs.cpp:2543 +#: ../src/verbs.cpp:2511 msgid "" "Creates a new path, applies the Clone original LPE, and refers it to the " "selected path" @@ -26812,19 +26940,19 @@ msgstr "" "Crea un nuevo trayecto, aplica el efecto «Clonar trayecto original», y lo " "refiere al trayecto seleccionado" -#: ../src/verbs.cpp:2544 +#: ../src/verbs.cpp:2512 msgid "Objects to _Marker" msgstr "Objetos a _marcador" -#: ../src/verbs.cpp:2545 +#: ../src/verbs.cpp:2513 msgid "Convert selection to a line marker" msgstr "Convertir la selección en un marcador de líneas" -#: ../src/verbs.cpp:2546 +#: ../src/verbs.cpp:2514 msgid "Objects to Gu_ides" msgstr "Objetos a _guías" -#: ../src/verbs.cpp:2547 +#: ../src/verbs.cpp:2515 msgid "" "Convert selected objects to a collection of guidelines aligned with their " "edges" @@ -26832,99 +26960,99 @@ msgstr "" "Convierte los objetos seleccionados en una colección de guías alineadas con " "sus bordes" -#: ../src/verbs.cpp:2548 +#: ../src/verbs.cpp:2516 msgid "Objects to Patter_n" msgstr "Objetos a patró_n" -#: ../src/verbs.cpp:2549 +#: ../src/verbs.cpp:2517 msgid "Convert selection to a rectangle with tiled pattern fill" msgstr "Convertir la selección a un rectángulo con un relleno de mosaico" -#: ../src/verbs.cpp:2550 +#: ../src/verbs.cpp:2518 msgid "Pattern to _Objects" msgstr "Patrón a _objetos" -#: ../src/verbs.cpp:2551 +#: ../src/verbs.cpp:2519 msgid "Extract objects from a tiled pattern fill" msgstr "Extraer los objetos de un relleno de mosaico" -#: ../src/verbs.cpp:2552 +#: ../src/verbs.cpp:2520 msgid "Group to Symbol" msgstr "Grupo a símbolo" -#: ../src/verbs.cpp:2553 +#: ../src/verbs.cpp:2521 msgid "Convert group to a symbol" msgstr "Convertir un grupo en símbolo" -#: ../src/verbs.cpp:2554 +#: ../src/verbs.cpp:2522 msgid "Symbol to Group" msgstr "Símbolo a grupo" -#: ../src/verbs.cpp:2555 +#: ../src/verbs.cpp:2523 msgid "Extract group from a symbol" msgstr "Extraer un grupo de un símbolo" -#: ../src/verbs.cpp:2556 +#: ../src/verbs.cpp:2524 msgid "Clea_r All" msgstr "Limpia_r todo" -#: ../src/verbs.cpp:2557 +#: ../src/verbs.cpp:2525 msgid "Delete all objects from document" msgstr "Borrar todos los objetos del documento" -#: ../src/verbs.cpp:2558 +#: ../src/verbs.cpp:2526 msgid "Select Al_l" msgstr "Se_leccionar todo" -#: ../src/verbs.cpp:2559 +#: ../src/verbs.cpp:2527 msgid "Select all objects or all nodes" msgstr "Seleccionar todos los objetos o todos los nodos" -#: ../src/verbs.cpp:2560 +#: ../src/verbs.cpp:2528 msgid "Select All in All La_yers" msgstr "Seleccionar todo de todas las ca_pas" -#: ../src/verbs.cpp:2561 +#: ../src/verbs.cpp:2529 msgid "Select all objects in all visible and unlocked layers" msgstr "" "Seleccionar todos los objetos en todas las capas visibles y desbloqueadas" -#: ../src/verbs.cpp:2562 +#: ../src/verbs.cpp:2530 msgid "Fill _and Stroke" msgstr "_Relleno y borde" -#: ../src/verbs.cpp:2563 +#: ../src/verbs.cpp:2531 msgid "" "Select all objects with the same fill and stroke as the selected objects" msgstr "" "Selecciona todos los objetos con el mismo relleno y borde que los objetos " "seleccionados" -#: ../src/verbs.cpp:2564 +#: ../src/verbs.cpp:2532 msgid "_Fill Color" msgstr "Color de _relleno" -#: ../src/verbs.cpp:2565 +#: ../src/verbs.cpp:2533 msgid "Select all objects with the same fill as the selected objects" msgstr "" "Selecciona todos los objetos con el mismo relleno que los objetos " "seleccionados" -#: ../src/verbs.cpp:2566 +#: ../src/verbs.cpp:2534 msgid "_Stroke Color" msgstr "Color de _trazo" -#: ../src/verbs.cpp:2567 +#: ../src/verbs.cpp:2535 msgid "Select all objects with the same stroke as the selected objects" msgstr "" "Selecciona todos los objetos con el mismo color de trazo que los objetos " "seleccionados" -#: ../src/verbs.cpp:2568 +#: ../src/verbs.cpp:2536 msgid "Stroke St_yle" msgstr "Est_ilo de trazo" -#: ../src/verbs.cpp:2569 +#: ../src/verbs.cpp:2537 msgid "" "Select all objects with the same stroke style (width, dash, markers) as the " "selected objects" @@ -26932,11 +27060,11 @@ msgstr "" "Selecciona todos los objetos con el mismo estilo de trazo (ancho, línea, " "marcadores) que los objetos seleccionados" -#: ../src/verbs.cpp:2570 +#: ../src/verbs.cpp:2538 msgid "_Object Type" msgstr "Tipo de _objeto" -#: ../src/verbs.cpp:2571 +#: ../src/verbs.cpp:2539 msgid "" "Select all objects with the same object type (rect, arc, text, path, bitmap " "etc) as the selected objects" @@ -26944,175 +27072,191 @@ msgstr "" "Selecciona todos los objetos del mismo tipo (rectángulo, arco, texto, " "trayecto, mapa de bits, etc.) que los objetos seleccionados" -#: ../src/verbs.cpp:2572 +#: ../src/verbs.cpp:2540 msgid "In_vert Selection" msgstr "In_vertir selección" -#: ../src/verbs.cpp:2573 +#: ../src/verbs.cpp:2541 msgid "Invert selection (unselect what is selected and select everything else)" msgstr "" "Invertir selección (deseleccionar lo que está seleccionado y seleccionar lo " "demás)" -#: ../src/verbs.cpp:2574 +#: ../src/verbs.cpp:2542 msgid "Invert in All Layers" msgstr "Invertir en todas las capas" -#: ../src/verbs.cpp:2575 +#: ../src/verbs.cpp:2543 msgid "Invert selection in all visible and unlocked layers" msgstr "Invertir la selección en todas las capas visibles y desbloqueadas" -#: ../src/verbs.cpp:2576 +#: ../src/verbs.cpp:2544 msgid "Select Next" msgstr "Seleccionar siguiente" -#: ../src/verbs.cpp:2577 +#: ../src/verbs.cpp:2545 msgid "Select next object or node" msgstr "Seleccionar el siguiente objeto o nodo" -#: ../src/verbs.cpp:2578 +#: ../src/verbs.cpp:2546 msgid "Select Previous" msgstr "Seleccionar anterior" -#: ../src/verbs.cpp:2579 +#: ../src/verbs.cpp:2547 msgid "Select previous object or node" msgstr "Seleccionar el anterior objeto o nodo" -#: ../src/verbs.cpp:2580 +#: ../src/verbs.cpp:2548 msgid "D_eselect" msgstr "D_eseleccionar" -#: ../src/verbs.cpp:2581 +#: ../src/verbs.cpp:2549 msgid "Deselect any selected objects or nodes" msgstr "Deseleccionar los objetos o nodos seleccionados." -#: ../src/verbs.cpp:2583 +#: ../src/verbs.cpp:2551 msgid "Delete all the guides in the document" msgstr "Borrar todas las guías del documento" -#: ../src/verbs.cpp:2584 +#: ../src/verbs.cpp:2552 msgid "Lock All Guides" msgstr "Bloquear todas las guías" -#: ../src/verbs.cpp:2584 ../src/widgets/desktop-widget.cpp:372 +#: ../src/verbs.cpp:2552 ../src/widgets/desktop-widget.cpp:404 msgid "Toggle lock of all guides in the document" msgstr "Conmutar el bloqueo de todas las guías del documento" -#: ../src/verbs.cpp:2585 +#: ../src/verbs.cpp:2553 msgid "Create _Guides Around the Page" msgstr "Crear _guías alrededor de la página" -#: ../src/verbs.cpp:2586 +#: ../src/verbs.cpp:2554 msgid "Create four guides aligned with the page borders" msgstr "Crea cuatro guías alineadas con los bordes de la página" -#: ../src/verbs.cpp:2587 +#: ../src/verbs.cpp:2555 msgid "Next path effect parameter" msgstr "Siguiente parámetro de efecto de trayecto" -#: ../src/verbs.cpp:2588 +#: ../src/verbs.cpp:2556 msgid "Show next editable path effect parameter" msgstr "Mostrar el siguiente parámetro de efecto de trayecto editable" #. Selection -#: ../src/verbs.cpp:2591 +#: ../src/verbs.cpp:2559 msgid "Raise to _Top" msgstr "Traer al fren_te" -#: ../src/verbs.cpp:2592 +#: ../src/verbs.cpp:2560 msgid "Raise selection to top" msgstr "Elevar los objetos a primer plano" -#: ../src/verbs.cpp:2593 +#: ../src/verbs.cpp:2561 msgid "Lower to _Bottom" msgstr "_Bajar al fondo" -#: ../src/verbs.cpp:2594 +#: ../src/verbs.cpp:2562 msgid "Lower selection to bottom" msgstr "Bajar la selección al fondo" -#: ../src/verbs.cpp:2595 +#: ../src/verbs.cpp:2563 msgid "_Raise" msgstr "Eleva_r" -#: ../src/verbs.cpp:2596 +#: ../src/verbs.cpp:2564 msgid "Raise selection one step" msgstr "Elevar la selección un nivel" -#: ../src/verbs.cpp:2597 +#: ../src/verbs.cpp:2565 msgid "_Lower" msgstr "_Bajar" -#: ../src/verbs.cpp:2598 +#: ../src/verbs.cpp:2566 msgid "Lower selection one step" msgstr "Bajar la selección un nivel" -#: ../src/verbs.cpp:2600 +#: ../src/verbs.cpp:2569 +msgid "_Stack up" +msgstr "Enviar _arriba" + +#: ../src/verbs.cpp:2570 +msgid "Stack selection one step up" +msgstr "Elevar la selección un nivel" + +#: ../src/verbs.cpp:2571 +msgid "_Stack down" +msgstr "Enviar a_bajo" + +#: ../src/verbs.cpp:2572 +msgid "Stack selection one step down" +msgstr "Enviar la selección un nivel hacia abajo" + +#: ../src/verbs.cpp:2576 msgid "Group selected objects" msgstr "Agrupar los objetos seleccionados" -#: ../src/verbs.cpp:2602 +#: ../src/verbs.cpp:2578 msgid "Ungroup selected groups" msgstr "Desagrupar grupos seleccionados" -#: ../src/verbs.cpp:2603 +#: ../src/verbs.cpp:2579 msgid "_Pop selected objects out of group" msgstr "Sacar los objetos seleccionados del gru_po" -#: ../src/verbs.cpp:2604 +#: ../src/verbs.cpp:2580 msgid "Pop selected objects out of group" msgstr "Sacar los objetos seleccionados del grupo" -#: ../src/verbs.cpp:2606 +#: ../src/verbs.cpp:2582 msgid "_Put on Path" msgstr "_Poner en trayecto" -#: ../src/verbs.cpp:2608 +#: ../src/verbs.cpp:2584 msgid "_Remove from Path" msgstr "_Retirar del trayecto" -#: ../src/verbs.cpp:2610 +#: ../src/verbs.cpp:2586 msgid "Remove Manual _Kerns" msgstr "Eliminar todos los _interletrajes manuales" #. TRANSLATORS: "glyph": An image used in the visual representation of characters; #. roughly speaking, how a character looks. A font is a set of glyphs. -#: ../src/verbs.cpp:2613 +#: ../src/verbs.cpp:2589 msgid "Remove all manual kerns and glyph rotations from a text object" msgstr "" "Eliminar todos los interletrajes manuales y rotaciones de glifo de un objeto " "de texto" -#: ../src/verbs.cpp:2615 +#: ../src/verbs.cpp:2591 msgid "_Union" msgstr "_Unión" -#: ../src/verbs.cpp:2616 +#: ../src/verbs.cpp:2592 msgid "Create union of selected paths" msgstr "Crear la unión de los trayectos seleccionados" -#: ../src/verbs.cpp:2617 +#: ../src/verbs.cpp:2593 msgid "_Intersection" msgstr "_Intersección" -#: ../src/verbs.cpp:2618 +#: ../src/verbs.cpp:2594 msgid "Create intersection of selected paths" msgstr "Crear la intersección de los trayectos seleccionados" -#: ../src/verbs.cpp:2619 +#: ../src/verbs.cpp:2595 msgid "_Difference" msgstr "_Diferencia" -#: ../src/verbs.cpp:2620 +#: ../src/verbs.cpp:2596 msgid "Create difference of selected paths (bottom minus top)" msgstr "" "Crear la diferencia de los trayectos seleccionados (inferior menos superior)" -#: ../src/verbs.cpp:2621 +#: ../src/verbs.cpp:2597 msgid "E_xclusion" msgstr "E_xclusión" -#: ../src/verbs.cpp:2622 +#: ../src/verbs.cpp:2598 msgid "" "Create exclusive OR of selected paths (those parts that belong to only one " "path)" @@ -27120,433 +27264,376 @@ msgstr "" "Crear un OR exclusivo de los trayectos seleccionados (las partes que " "pertenecen a un solo trayecto)" -#: ../src/verbs.cpp:2623 +#: ../src/verbs.cpp:2599 msgid "Di_vision" msgstr "Di_visión" -#: ../src/verbs.cpp:2624 +#: ../src/verbs.cpp:2600 msgid "Cut the bottom path into pieces" msgstr "Cortar el trayecto inferior en pedazos" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2627 +#: ../src/verbs.cpp:2603 msgid "Cut _Path" msgstr "Cor_tar trayecto" -#: ../src/verbs.cpp:2628 +#: ../src/verbs.cpp:2604 msgid "Cut the bottom path's stroke into pieces, removing fill" msgstr "" "Cortar las líneas del trayecto inferior en pedazos, eliminando el relleno" -#: ../src/verbs.cpp:2629 -msgid "_Grow" -msgstr "A_grandar" - -#: ../src/verbs.cpp:2630 -msgid "Make selected objects bigger" -msgstr "Agrandar los objetos seleccionados" - -#: ../src/verbs.cpp:2631 -msgid "_Grow on screen" -msgstr "A_grandar en pantalla" - -#: ../src/verbs.cpp:2632 -msgid "Make selected objects bigger relative to screen" -msgstr "Agrandar los objetos seleccionados en relación a la pantalla" - -#: ../src/verbs.cpp:2633 -msgid "_Double size" -msgstr "_Duplicar tamaño" - -#: ../src/verbs.cpp:2634 -msgid "Double the size of selected objects" -msgstr "Duplicar el tamaño de los objetos seleccionados" - -#: ../src/verbs.cpp:2635 -msgid "_Shrink" -msgstr "_Encoger" - -#: ../src/verbs.cpp:2636 -msgid "Make selected objects smaller" -msgstr "Encoger los objetos seleccionados" - -#: ../src/verbs.cpp:2637 -msgid "_Shrink on screen" -msgstr "_Encoger en pantalla" - -#: ../src/verbs.cpp:2638 -msgid "Make selected objects smaller relative to screen" -msgstr "Encoge los objetos seleccionados en relación a la pantalla" - -#: ../src/verbs.cpp:2639 -msgid "_Halve size" -msgstr "_Mitad" - -#: ../src/verbs.cpp:2640 -msgid "Halve the size of selected objects" -msgstr "Reducir los objetos seleccionados a la mitad de su tamaño" - #. TRANSLATORS: "outset": expand a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2644 +#: ../src/verbs.cpp:2608 msgid "Outs_et" msgstr "A_mpliar" -#: ../src/verbs.cpp:2645 +#: ../src/verbs.cpp:2609 msgid "Outset selected paths" msgstr "Ampliar los trayectos seleccionados" -#: ../src/verbs.cpp:2647 +#: ../src/verbs.cpp:2611 msgid "O_utset Path by 1 px" msgstr "A_mpliar trayecto 1 px" -#: ../src/verbs.cpp:2648 +#: ../src/verbs.cpp:2612 msgid "Outset selected paths by 1 px" msgstr "Ampliar los trayectos seleccionados 1 px" -#: ../src/verbs.cpp:2650 +#: ../src/verbs.cpp:2614 msgid "O_utset Path by 10 px" msgstr "A_mpliar trayecto 10 px" -#: ../src/verbs.cpp:2651 +#: ../src/verbs.cpp:2615 msgid "Outset selected paths by 10 px" msgstr "Ampliar los trayectos seleccionados 10 px" #. TRANSLATORS: "inset": contract a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2655 +#: ../src/verbs.cpp:2619 msgid "I_nset" msgstr "Re_ducir" -#: ../src/verbs.cpp:2656 +#: ../src/verbs.cpp:2620 msgid "Inset selected paths" msgstr "Reducir los trayectos seleccionados" -#: ../src/verbs.cpp:2658 +#: ../src/verbs.cpp:2622 msgid "I_nset Path by 1 px" msgstr "Re_ducir trayecto 1 px" -#: ../src/verbs.cpp:2659 +#: ../src/verbs.cpp:2623 msgid "Inset selected paths by 1 px" msgstr "Reducir los trayectos seleccionados 1 px" -#: ../src/verbs.cpp:2661 +#: ../src/verbs.cpp:2625 msgid "I_nset Path by 10 px" msgstr "Re_ducir trayecto 10 px" -#: ../src/verbs.cpp:2662 +#: ../src/verbs.cpp:2626 msgid "Inset selected paths by 10 px" msgstr "Reducir los trayectos seleccionados 10 px" -#: ../src/verbs.cpp:2664 +#: ../src/verbs.cpp:2628 msgid "D_ynamic Offset" msgstr "Desvío d_inámico" -#: ../src/verbs.cpp:2664 +#: ../src/verbs.cpp:2628 msgid "Create a dynamic offset object" msgstr "Crear un objeto de desvió dinámico" -#: ../src/verbs.cpp:2666 +#: ../src/verbs.cpp:2630 msgid "_Linked Offset" msgstr "Desvío en_lazado" -#: ../src/verbs.cpp:2667 +#: ../src/verbs.cpp:2631 msgid "Create a dynamic offset object linked to the original path" msgstr "Crear un objeto de desvío dinámico enlazado al trayecto original" -#: ../src/verbs.cpp:2669 +#: ../src/verbs.cpp:2633 msgid "_Stroke to Path" msgstr "_Borde a trayecto" -#: ../src/verbs.cpp:2670 +#: ../src/verbs.cpp:2634 msgid "Convert selected object's stroke to paths" msgstr "Convierte las líneas del objeto seleccionado en trayectos" -#: ../src/verbs.cpp:2671 -msgid "_Stroke to Path Legacy" -msgstr "_Trazo a trayecto modo antiguo" - -#: ../src/verbs.cpp:2672 -msgid "Convert selected object's stroke to paths legacy mode" -msgstr "" -"Convierte las líneas del objeto seleccionado en trayectos al modo antiguo" - -#: ../src/verbs.cpp:2673 +#: ../src/verbs.cpp:2635 msgid "Si_mplify" msgstr "Si_mplificar" -#: ../src/verbs.cpp:2674 +#: ../src/verbs.cpp:2636 msgid "Simplify selected paths (remove extra nodes)" msgstr "Simplifica el trayecto seleccionado (elimina nodos superfluos)" -#: ../src/verbs.cpp:2675 +#: ../src/verbs.cpp:2637 msgid "_Reverse" msgstr "_Revertir" -#: ../src/verbs.cpp:2676 +#: ../src/verbs.cpp:2638 msgid "Reverse the direction of selected paths (useful for flipping markers)" msgstr "" "Invierte la dirección de los trayectos seleccionados (útil para girar " "marcadores)" -#: ../src/verbs.cpp:2681 +#: ../src/verbs.cpp:2643 msgid "Create one or more paths from a bitmap by tracing it" msgstr "Vectorizar un mapa de bits, creando uno o más trayectos" -#: ../src/verbs.cpp:2684 +#: ../src/verbs.cpp:2646 msgid "Trace Pixel Art..." msgstr "Vectorizar Pixel Art..." -#: ../src/verbs.cpp:2685 +#: ../src/verbs.cpp:2647 msgid "Create paths using Kopf-Lischinski algorithm to vectorize pixel art" msgstr "" "Crear trayectos mediante el algoritmo Kopf-Lischinski para vectorizar Pixel " "Art" -#: ../src/verbs.cpp:2686 +#: ../src/verbs.cpp:2648 msgid "Make a _Bitmap Copy" msgstr "Crear copia en _mapa de bits" -#: ../src/verbs.cpp:2687 +#: ../src/verbs.cpp:2649 msgid "Export selection to a bitmap and insert it into document" msgstr "Exportar la selección a mapa de bits e insertarlo en el documento" -#: ../src/verbs.cpp:2688 +#: ../src/verbs.cpp:2650 msgid "_Combine" msgstr "_Combinar" -#: ../src/verbs.cpp:2689 +#: ../src/verbs.cpp:2651 msgid "Combine several paths into one" msgstr "Combinar varios trayectos en uno" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2692 +#: ../src/verbs.cpp:2654 msgid "Break _Apart" msgstr "Descombin_ar" -#: ../src/verbs.cpp:2693 +#: ../src/verbs.cpp:2655 msgid "Break selected paths into subpaths" msgstr "Separar los trayectos seleccionados en subtrayectos" -#: ../src/verbs.cpp:2694 +#: ../src/verbs.cpp:2656 msgid "_Arrange..." msgstr "Orden_ar..." -#: ../src/verbs.cpp:2695 +#: ../src/verbs.cpp:2657 msgid "Arrange selected objects in a table or circle" msgstr "Ordenar los objetos seleccionados en una tabla o círculo" #. Layer -#: ../src/verbs.cpp:2697 +#: ../src/verbs.cpp:2659 msgid "_Add Layer..." msgstr "_Añadir capa..." -#: ../src/verbs.cpp:2698 +#: ../src/verbs.cpp:2660 msgid "Create a new layer" msgstr "Crear una capa nueva" -#: ../src/verbs.cpp:2699 +#: ../src/verbs.cpp:2661 msgid "Re_name Layer..." msgstr "Re_nombrar capa..." -#: ../src/verbs.cpp:2700 +#: ../src/verbs.cpp:2662 msgid "Rename the current layer" msgstr "Cambiar nombre a la capa actual" -#: ../src/verbs.cpp:2701 +#: ../src/verbs.cpp:2663 msgid "Switch to Layer Abov_e" msgstr "Ir a la capa sup_erior" -#: ../src/verbs.cpp:2702 +#: ../src/verbs.cpp:2664 msgid "Switch to the layer above the current" msgstr "Cambiar a la siguiente capa encima de la actual" -#: ../src/verbs.cpp:2703 +#: ../src/verbs.cpp:2665 msgid "Switch to Layer Belo_w" msgstr "Ir a la capa infe_rior" -#: ../src/verbs.cpp:2704 +#: ../src/verbs.cpp:2666 msgid "Switch to the layer below the current" msgstr "Cambiar a la siguiente capa debajo de la actual" -#: ../src/verbs.cpp:2705 +#: ../src/verbs.cpp:2667 msgid "Move Selection to Layer Abo_ve" msgstr "Mover la selección a la capa superior a la actual" -#: ../src/verbs.cpp:2706 +#: ../src/verbs.cpp:2668 msgid "Move selection to the layer above the current" msgstr "Mover la selección a la capa superior a la actual" -#: ../src/verbs.cpp:2707 +#: ../src/verbs.cpp:2669 msgid "Move Selection to Layer Bel_ow" msgstr "Mover la selección a la capa inferior a la actual" -#: ../src/verbs.cpp:2708 +#: ../src/verbs.cpp:2670 msgid "Move selection to the layer below the current" msgstr "Mover la selección a la capa inferior a la actual" -#: ../src/verbs.cpp:2709 +#: ../src/verbs.cpp:2671 msgid "Move Selection to Layer..." msgstr "Mover la selección a la capa..." -#: ../src/verbs.cpp:2711 +#: ../src/verbs.cpp:2673 msgid "Layer to _Top" msgstr "Traer la capa al fren_te" -#: ../src/verbs.cpp:2712 +#: ../src/verbs.cpp:2674 msgid "Raise the current layer to the top" msgstr "Elevar la capa actual a primer plano" -#: ../src/verbs.cpp:2713 +#: ../src/verbs.cpp:2675 msgid "Layer to _Bottom" msgstr "Bajar capa al _fondo" -#: ../src/verbs.cpp:2714 +#: ../src/verbs.cpp:2676 msgid "Lower the current layer to the bottom" msgstr "Bajar la capa actual al fondo" -#: ../src/verbs.cpp:2715 +#: ../src/verbs.cpp:2677 msgid "_Raise Layer" msgstr "Eleva_r capa" -#: ../src/verbs.cpp:2716 +#: ../src/verbs.cpp:2678 msgid "Raise the current layer" msgstr "Elevar la capa actual" -#: ../src/verbs.cpp:2717 +#: ../src/verbs.cpp:2679 msgid "_Lower Layer" msgstr "Ba_jar capa" -#: ../src/verbs.cpp:2718 +#: ../src/verbs.cpp:2680 msgid "Lower the current layer" msgstr "Enviar la capa actual hacia abajo" -#: ../src/verbs.cpp:2719 +#: ../src/verbs.cpp:2681 msgid "D_uplicate Current Layer" msgstr "D_uplicar la capa actual" -#: ../src/verbs.cpp:2720 +#: ../src/verbs.cpp:2682 msgid "Duplicate an existing layer" msgstr "Duplicar una capa existente" -#: ../src/verbs.cpp:2721 +#: ../src/verbs.cpp:2683 msgid "_Delete Current Layer" msgstr "_Borrar la capa actual" -#: ../src/verbs.cpp:2722 +#: ../src/verbs.cpp:2684 msgid "Delete the current layer" msgstr "Eliminar la capa actual" -#: ../src/verbs.cpp:2723 +#: ../src/verbs.cpp:2685 msgid "_Show/hide other layers" msgstr "_Mostrar/ocultar otras capas" -#: ../src/verbs.cpp:2724 +#: ../src/verbs.cpp:2686 msgid "Solo the current layer" msgstr "Ocultar todas las demás capas" -#: ../src/verbs.cpp:2725 +#: ../src/verbs.cpp:2687 msgid "_Show all layers" msgstr "Mo_strar todas las capas" -#: ../src/verbs.cpp:2726 +#: ../src/verbs.cpp:2688 msgid "Show all the layers" msgstr "Mostrar todas las capas" -#: ../src/verbs.cpp:2727 +#: ../src/verbs.cpp:2689 msgid "_Hide all layers" msgstr "Ocultar todas las capas" -#: ../src/verbs.cpp:2728 +#: ../src/verbs.cpp:2690 msgid "Hide all the layers" msgstr "Ocultar todas las capas" -#: ../src/verbs.cpp:2729 +#: ../src/verbs.cpp:2691 msgid "_Lock all layers" msgstr "B_loquear todas las capas" -#: ../src/verbs.cpp:2730 +#: ../src/verbs.cpp:2692 msgid "Lock all the layers" msgstr "Bloquear todas las capas" -#: ../src/verbs.cpp:2731 +#: ../src/verbs.cpp:2693 msgid "Lock/Unlock _other layers" msgstr "Bloquear/desbloquear _otras capas" -#: ../src/verbs.cpp:2732 +#: ../src/verbs.cpp:2694 msgid "Lock all the other layers" msgstr "Bloquear todas las otras capas" -#: ../src/verbs.cpp:2733 +#: ../src/verbs.cpp:2695 msgid "_Unlock all layers" msgstr "Desbloquear todas las capas" -#: ../src/verbs.cpp:2734 +#: ../src/verbs.cpp:2696 msgid "Unlock all the layers" msgstr "Desbloquear todas las capas" -#: ../src/verbs.cpp:2735 +#: ../src/verbs.cpp:2697 msgid "_Lock/Unlock Current Layer" msgstr "B_loquear/desbloquear la capa actual" -#: ../src/verbs.cpp:2736 +#: ../src/verbs.cpp:2698 msgid "Toggle lock on current layer" msgstr "Intercambiar bloqueo en la capa actual" -#: ../src/verbs.cpp:2737 +#: ../src/verbs.cpp:2699 msgid "_Show/hide Current Layer" msgstr "Mo_strar/ocultar la capa actual" -#: ../src/verbs.cpp:2738 +#: ../src/verbs.cpp:2700 msgid "Toggle visibility of current layer" msgstr "Intercambiar visibilidad de la capa actual" #. Object -#: ../src/verbs.cpp:2741 +#: ../src/verbs.cpp:2703 msgid "Rotate _90° CW" msgstr "Rotar _90° a la derecha" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2744 +#: ../src/verbs.cpp:2706 msgid "Rotate selection 90° clockwise" msgstr "Rotar la selección 90º a la derecha" -#: ../src/verbs.cpp:2745 +#: ../src/verbs.cpp:2707 msgid "Rotate 9_0° CCW" msgstr "Rotar 90° a la izquierda" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2748 +#: ../src/verbs.cpp:2710 msgid "Rotate selection 90° counter-clockwise" msgstr "Rotar la selección 90º a la izquierda" -#: ../src/verbs.cpp:2749 +#: ../src/verbs.cpp:2711 msgid "Remove _Transformations" msgstr "Deshacer _transformaciones" -#: ../src/verbs.cpp:2750 +#: ../src/verbs.cpp:2712 msgid "Remove transformations from object" msgstr "Eliminar transformaciones del objeto" -#: ../src/verbs.cpp:2751 +#: ../src/verbs.cpp:2713 msgid "_Object to Path" msgstr "_Objeto a trayecto" -#: ../src/verbs.cpp:2752 +#: ../src/verbs.cpp:2714 msgid "Convert selected object to path" msgstr "Convertir el objeto seleccionado en trayectos" -#: ../src/verbs.cpp:2753 +#: ../src/verbs.cpp:2715 msgid "_Flow into Frame" msgstr "_Fluir en el marco" -#: ../src/verbs.cpp:2754 +#: ../src/verbs.cpp:2716 msgid "" "Put text into a frame (path or shape), creating a flowed text linked to the " "frame object" @@ -27554,744 +27641,744 @@ msgstr "" "Encajar el texto en un marco (trayecto o forma), creando un texto fluido " "enlazado al objeto del marco" -#: ../src/verbs.cpp:2755 +#: ../src/verbs.cpp:2717 msgid "_Unflow" msgstr "Deshacer fl_ujo" -#: ../src/verbs.cpp:2756 +#: ../src/verbs.cpp:2718 msgid "Remove text from frame (creates a single-line text object)" msgstr "" "Eliminar el texto del marco (crea un objeto de texto de una sola línea)" -#: ../src/verbs.cpp:2757 +#: ../src/verbs.cpp:2719 msgid "_Convert to Text" msgstr "_Convertir a texto" -#: ../src/verbs.cpp:2758 +#: ../src/verbs.cpp:2720 msgid "Convert flowed text to regular text object (preserves appearance)" msgstr "" "Convertir el texto fluido seleccionado a objetos de texto (mantiene el " "aspecto)" -#: ../src/verbs.cpp:2760 +#: ../src/verbs.cpp:2722 msgid "Flip _Horizontal" msgstr "Reflejo _horizontal" -#: ../src/verbs.cpp:2760 +#: ../src/verbs.cpp:2722 msgid "Flip selected objects horizontally" msgstr "Reflejar los objetos seleccionados horizontalmente" -#: ../src/verbs.cpp:2763 +#: ../src/verbs.cpp:2725 msgid "Flip _Vertical" msgstr "Reflejo _vertical" -#: ../src/verbs.cpp:2763 +#: ../src/verbs.cpp:2725 msgid "Flip selected objects vertically" msgstr "Reflejar los objetos seleccionados verticalmente" -#: ../src/verbs.cpp:2766 +#: ../src/verbs.cpp:2728 msgid "Apply mask to selection (using the topmost object as mask)" msgstr "Aplicar máscara a selección (utiliza el objeto superior como máscara)" -#: ../src/verbs.cpp:2768 +#: ../src/verbs.cpp:2730 msgid "Edit mask" msgstr "Editar máscara" -#: ../src/verbs.cpp:2769 ../src/verbs.cpp:2777 +#: ../src/verbs.cpp:2731 ../src/verbs.cpp:2739 msgid "_Release" msgstr "Libe_rar" -#: ../src/verbs.cpp:2770 +#: ../src/verbs.cpp:2732 msgid "Remove mask from selection" msgstr "Elimina la máscara de la selección" -#: ../src/verbs.cpp:2772 +#: ../src/verbs.cpp:2734 msgid "" "Apply clipping path to selection (using the topmost object as clipping path)" msgstr "" "Aplicar trazado de recorte a selección (utiliza el objeto superior como " "trazo de recorte)" -#: ../src/verbs.cpp:2773 +#: ../src/verbs.cpp:2735 msgid "Create Cl_ip Group" msgstr "Crear grupo de _recorte" -#: ../src/verbs.cpp:2774 +#: ../src/verbs.cpp:2736 msgid "Creates a clip group using the selected objects as a base" msgstr "Crea un grupo de recorte usando los objetos seleccionados como base" -#: ../src/verbs.cpp:2776 +#: ../src/verbs.cpp:2738 msgid "Edit clipping path" msgstr "Editar trayecto de recorte" -#: ../src/verbs.cpp:2778 +#: ../src/verbs.cpp:2740 msgid "Remove clipping path from selection" msgstr "Elimina el trazado de recorte de la selección" #. Tools -#: ../src/verbs.cpp:2783 +#: ../src/verbs.cpp:2745 msgctxt "ContextVerb" msgid "Select" msgstr "Selección" -#: ../src/verbs.cpp:2784 +#: ../src/verbs.cpp:2746 msgid "Select and transform objects" msgstr "Seleccionar y transformar objetos" -#: ../src/verbs.cpp:2785 +#: ../src/verbs.cpp:2747 msgctxt "ContextVerb" msgid "Node Edit" msgstr "Edición de nodos" -#: ../src/verbs.cpp:2786 +#: ../src/verbs.cpp:2748 msgid "Edit paths by nodes" msgstr "Editar nodos de trayecto o tiradores de control" -#: ../src/verbs.cpp:2787 +#: ../src/verbs.cpp:2749 msgctxt "ContextVerb" msgid "Tweak" msgstr "Retoque" -#: ../src/verbs.cpp:2788 +#: ../src/verbs.cpp:2750 msgid "Tweak objects by sculpting or painting" msgstr "Retocar objetos mediante la escultura o pintura" -#: ../src/verbs.cpp:2789 +#: ../src/verbs.cpp:2751 msgctxt "ContextVerb" msgid "Spray" msgstr "Esparcir" -#: ../src/verbs.cpp:2790 +#: ../src/verbs.cpp:2752 msgid "Spray objects by sculpting or painting" msgstr "Esparcir objetos mediante escultura o pintura" -#: ../src/verbs.cpp:2791 +#: ../src/verbs.cpp:2753 msgctxt "ContextVerb" msgid "Rectangle" msgstr "Rectángulo" -#: ../src/verbs.cpp:2792 +#: ../src/verbs.cpp:2754 msgid "Create rectangles and squares" msgstr "Crear rectángulos y cuadrados" -#: ../src/verbs.cpp:2793 +#: ../src/verbs.cpp:2755 msgctxt "ContextVerb" msgid "3D Box" msgstr "Caja 3D" -#: ../src/verbs.cpp:2794 +#: ../src/verbs.cpp:2756 msgid "Create 3D boxes" msgstr "Crear cajas 3D" -#: ../src/verbs.cpp:2795 +#: ../src/verbs.cpp:2757 msgctxt "ContextVerb" msgid "Ellipse" msgstr "Elipse" -#: ../src/verbs.cpp:2796 +#: ../src/verbs.cpp:2758 msgid "Create circles, ellipses, and arcs" msgstr "Crear círculos, elipses y arcos" -#: ../src/verbs.cpp:2797 +#: ../src/verbs.cpp:2759 msgctxt "ContextVerb" msgid "Star" msgstr "Estrella" -#: ../src/verbs.cpp:2798 +#: ../src/verbs.cpp:2760 msgid "Create stars and polygons" msgstr "Crear estrellas y polígonos" -#: ../src/verbs.cpp:2799 +#: ../src/verbs.cpp:2761 msgctxt "ContextVerb" msgid "Spiral" msgstr "Espiral" -#: ../src/verbs.cpp:2800 +#: ../src/verbs.cpp:2762 msgid "Create spirals" msgstr "Crear espirales" -#: ../src/verbs.cpp:2801 +#: ../src/verbs.cpp:2763 msgctxt "ContextVerb" msgid "Pencil" msgstr "Lápiz" -#: ../src/verbs.cpp:2802 +#: ../src/verbs.cpp:2764 msgid "Draw freehand lines" msgstr "Dibujar líneas a mano alzada" -#: ../src/verbs.cpp:2803 +#: ../src/verbs.cpp:2765 msgctxt "ContextVerb" msgid "Pen" msgstr "Pluma" -#: ../src/verbs.cpp:2804 +#: ../src/verbs.cpp:2766 msgid "Draw Bezier curves and straight lines" msgstr "Dibujar curvas Bézier y líneas rectas" -#: ../src/verbs.cpp:2805 +#: ../src/verbs.cpp:2767 msgctxt "ContextVerb" msgid "Calligraphy" msgstr "Caligrafía" -#: ../src/verbs.cpp:2806 +#: ../src/verbs.cpp:2768 msgid "Draw calligraphic or brush strokes" msgstr "Dibujar trazos caligráficos o pinceladas" -#: ../src/verbs.cpp:2808 +#: ../src/verbs.cpp:2770 msgid "Create and edit text objects" msgstr "Crear y editar objetos de texto" -#: ../src/verbs.cpp:2809 +#: ../src/verbs.cpp:2771 msgctxt "ContextVerb" msgid "Gradient" msgstr "Degradado" -#: ../src/verbs.cpp:2810 +#: ../src/verbs.cpp:2772 msgid "Create and edit gradients" msgstr "Crear y editar degradados" -#: ../src/verbs.cpp:2811 +#: ../src/verbs.cpp:2773 msgctxt "ContextVerb" msgid "Mesh" msgstr "Rejilla" -#: ../src/verbs.cpp:2812 +#: ../src/verbs.cpp:2774 msgid "Create and edit meshes" msgstr "Crear y editar rejillas" -#: ../src/verbs.cpp:2813 +#: ../src/verbs.cpp:2775 msgctxt "ContextVerb" msgid "Zoom" msgstr "Zoom" -#: ../src/verbs.cpp:2814 +#: ../src/verbs.cpp:2776 msgid "Zoom in or out" msgstr "Acercar o alejar" -#: ../src/verbs.cpp:2816 +#: ../src/verbs.cpp:2778 msgid "Measurement tool" msgstr "Herramienta de medida" -#: ../src/verbs.cpp:2817 +#: ../src/verbs.cpp:2779 msgctxt "ContextVerb" msgid "Dropper" msgstr "Cuentagotas" -#: ../src/verbs.cpp:2819 +#: ../src/verbs.cpp:2781 msgctxt "ContextVerb" msgid "Connector" msgstr "Conector" -#: ../src/verbs.cpp:2820 +#: ../src/verbs.cpp:2782 msgid "Create diagram connectors" msgstr "Crear conectores de diagrama" -#: ../src/verbs.cpp:2823 +#: ../src/verbs.cpp:2785 msgctxt "ContextVerb" msgid "Paint Bucket" msgstr "Cubo de pintura" -#: ../src/verbs.cpp:2824 +#: ../src/verbs.cpp:2786 msgid "Fill bounded areas" msgstr "Rellenar áreas delimitadas" -#: ../src/verbs.cpp:2827 +#: ../src/verbs.cpp:2789 msgctxt "ContextVerb" msgid "LPE Edit" msgstr "Edición de LPE" -#: ../src/verbs.cpp:2828 +#: ../src/verbs.cpp:2790 msgid "Edit Path Effect parameters" msgstr "Editar los parámetros de los efectos de trazo" -#: ../src/verbs.cpp:2829 +#: ../src/verbs.cpp:2791 msgctxt "ContextVerb" msgid "Eraser" msgstr "Goma de borrar" -#: ../src/verbs.cpp:2830 +#: ../src/verbs.cpp:2792 msgid "Erase existing paths" msgstr "Eliminar trayectos existentes" -#: ../src/verbs.cpp:2831 +#: ../src/verbs.cpp:2793 msgctxt "ContextVerb" msgid "LPE Tool" msgstr "Herramienta LPE" -#: ../src/verbs.cpp:2832 +#: ../src/verbs.cpp:2794 msgid "Do geometric constructions" msgstr "Hacer construcciones geométricas" #. Tool prefs -#: ../src/verbs.cpp:2834 +#: ../src/verbs.cpp:2796 msgid "Selector Preferences" msgstr "Preferencias del selector" -#: ../src/verbs.cpp:2835 +#: ../src/verbs.cpp:2797 msgid "Open Preferences for the Selector tool" msgstr "Abrir las preferencias para la herramienta Selector" -#: ../src/verbs.cpp:2836 +#: ../src/verbs.cpp:2798 msgid "Node Tool Preferences" msgstr "Preferencias de la herramienta nodo" -#: ../src/verbs.cpp:2837 +#: ../src/verbs.cpp:2799 msgid "Open Preferences for the Node tool" msgstr "Abrir las preferencias para la herramienta Nodo" -#: ../src/verbs.cpp:2838 +#: ../src/verbs.cpp:2800 msgid "Tweak Tool Preferences" msgstr "Preferencias de la herramienta retoque" -#: ../src/verbs.cpp:2839 +#: ../src/verbs.cpp:2801 msgid "Open Preferences for the Tweak tool" msgstr "Abrir las preferencias para la herramienta de retoques" -#: ../src/verbs.cpp:2840 +#: ../src/verbs.cpp:2802 msgid "Spray Tool Preferences" msgstr "Preferencias de la herramienta Spray" -#: ../src/verbs.cpp:2841 +#: ../src/verbs.cpp:2803 msgid "Open Preferences for the Spray tool" msgstr "Abrir las preferencias para la herramienta Spray" -#: ../src/verbs.cpp:2842 +#: ../src/verbs.cpp:2804 msgid "Rectangle Preferences" msgstr "Preferencias de rectángulo" -#: ../src/verbs.cpp:2843 +#: ../src/verbs.cpp:2805 msgid "Open Preferences for the Rectangle tool" msgstr "Abrir las preferencias para la herramienta Rectángulo" -#: ../src/verbs.cpp:2844 +#: ../src/verbs.cpp:2806 msgid "3D Box Preferences" msgstr "Preferencias de caja 3D" -#: ../src/verbs.cpp:2845 +#: ../src/verbs.cpp:2807 msgid "Open Preferences for the 3D Box tool" msgstr "Abrir las preferencias para la herramienta caja 3D" -#: ../src/verbs.cpp:2846 +#: ../src/verbs.cpp:2808 msgid "Ellipse Preferences" msgstr "Preferencias de elipse" -#: ../src/verbs.cpp:2847 +#: ../src/verbs.cpp:2809 msgid "Open Preferences for the Ellipse tool" msgstr "Abrir las preferencias para la herramienta Elipse" -#: ../src/verbs.cpp:2848 +#: ../src/verbs.cpp:2810 msgid "Star Preferences" msgstr "Preferencias de estrella" -#: ../src/verbs.cpp:2849 +#: ../src/verbs.cpp:2811 msgid "Open Preferences for the Star tool" msgstr "Abrir las preferencias para la herramienta Estrella" -#: ../src/verbs.cpp:2850 +#: ../src/verbs.cpp:2812 msgid "Spiral Preferences" msgstr "Preferencias de espiral" -#: ../src/verbs.cpp:2851 +#: ../src/verbs.cpp:2813 msgid "Open Preferences for the Spiral tool" msgstr "Abrir las preferencias para la herramienta Espiral" -#: ../src/verbs.cpp:2852 +#: ../src/verbs.cpp:2814 msgid "Pencil Preferences" msgstr "Preferencias del lápiz" -#: ../src/verbs.cpp:2853 +#: ../src/verbs.cpp:2815 msgid "Open Preferences for the Pencil tool" msgstr "Abrir las preferencias para la herramienta Lápiz" -#: ../src/verbs.cpp:2854 +#: ../src/verbs.cpp:2816 msgid "Pen Preferences" msgstr "Preferencias de bolígrafo" -#: ../src/verbs.cpp:2855 +#: ../src/verbs.cpp:2817 msgid "Open Preferences for the Pen tool" msgstr "Abrir las preferencias para la herramienta Bolígrafo" -#: ../src/verbs.cpp:2856 +#: ../src/verbs.cpp:2818 msgid "Calligraphic Preferences" msgstr "Preferencias de línea caligráfica" -#: ../src/verbs.cpp:2857 +#: ../src/verbs.cpp:2819 msgid "Open Preferences for the Calligraphy tool" msgstr "Abrir las preferencias para la herramienta Caligrafía" -#: ../src/verbs.cpp:2858 +#: ../src/verbs.cpp:2820 msgid "Text Preferences" msgstr "Preferencias de texto" -#: ../src/verbs.cpp:2859 +#: ../src/verbs.cpp:2821 msgid "Open Preferences for the Text tool" msgstr "Abrir las preferencias para la herramienta Texto" -#: ../src/verbs.cpp:2860 +#: ../src/verbs.cpp:2822 msgid "Gradient Preferences" msgstr "Preferencias de degradado" -#: ../src/verbs.cpp:2861 +#: ../src/verbs.cpp:2823 msgid "Open Preferences for the Gradient tool" msgstr "Abrir las preferencias para la herramienta Degradado" -#: ../src/verbs.cpp:2862 +#: ../src/verbs.cpp:2824 msgid "Mesh Preferences" msgstr "Preferencias de rejilla" -#: ../src/verbs.cpp:2863 +#: ../src/verbs.cpp:2825 msgid "Open Preferences for the Mesh tool" msgstr "Abrir las preferencias para la herramienta Rejilla" -#: ../src/verbs.cpp:2864 +#: ../src/verbs.cpp:2826 msgid "Zoom Preferences" msgstr "Preferencias de zoom" -#: ../src/verbs.cpp:2865 +#: ../src/verbs.cpp:2827 msgid "Open Preferences for the Zoom tool" msgstr "Abrir las preferencias para la herramienta Zoom" -#: ../src/verbs.cpp:2866 +#: ../src/verbs.cpp:2828 msgid "Measure Preferences" msgstr "Preferencias de medida" -#: ../src/verbs.cpp:2867 +#: ../src/verbs.cpp:2829 msgid "Open Preferences for the Measure tool" msgstr "Abrir las preferencias para la herramienta de medida" -#: ../src/verbs.cpp:2868 +#: ../src/verbs.cpp:2830 msgid "Dropper Preferences" msgstr "Preferencias de gotero" -#: ../src/verbs.cpp:2869 +#: ../src/verbs.cpp:2831 msgid "Open Preferences for the Dropper tool" msgstr "Abrir las preferencias para la herramienta Gotero" -#: ../src/verbs.cpp:2870 +#: ../src/verbs.cpp:2832 msgid "Connector Preferences" msgstr "Preferencias del conector" -#: ../src/verbs.cpp:2871 +#: ../src/verbs.cpp:2833 msgid "Open Preferences for the Connector tool" msgstr "Abrir las preferencias para la herramienta Conector" -#: ../src/verbs.cpp:2874 +#: ../src/verbs.cpp:2836 msgid "Paint Bucket Preferences" msgstr "Preferencias del cubo de pintura" -#: ../src/verbs.cpp:2875 +#: ../src/verbs.cpp:2837 msgid "Open Preferences for the Paint Bucket tool" msgstr "Abrir las preferencias para la herramienta cubo de pintura" -#: ../src/verbs.cpp:2878 +#: ../src/verbs.cpp:2840 msgid "Eraser Preferences" msgstr "Preferencias de borrador" -#: ../src/verbs.cpp:2879 +#: ../src/verbs.cpp:2841 msgid "Open Preferences for the Eraser tool" msgstr "Abrir las preferencias para la herramienta Borrador" -#: ../src/verbs.cpp:2880 +#: ../src/verbs.cpp:2842 msgid "LPE Tool Preferences" msgstr "Preferencias de la herramienta LPE (Live Path Effects)" -#: ../src/verbs.cpp:2881 +#: ../src/verbs.cpp:2843 msgid "Open Preferences for the LPETool tool" msgstr "Abrir las preferencias para la herramienta LPE" #. Zoom/View -#: ../src/verbs.cpp:2883 +#: ../src/verbs.cpp:2845 msgid "Zoom In" msgstr "Acercar" -#: ../src/verbs.cpp:2883 +#: ../src/verbs.cpp:2845 msgid "Zoom in" msgstr "Acercar" -#: ../src/verbs.cpp:2884 +#: ../src/verbs.cpp:2846 msgid "Zoom Out" msgstr "Alejar" -#: ../src/verbs.cpp:2884 +#: ../src/verbs.cpp:2846 msgid "Zoom out" msgstr "Alejar" -#: ../src/verbs.cpp:2885 +#: ../src/verbs.cpp:2847 msgid "_Rulers" msgstr "_Reglas" -#: ../src/verbs.cpp:2885 +#: ../src/verbs.cpp:2847 msgid "Show or hide the canvas rulers" msgstr "Mostrar/ocultar las reglas del lienzo" -#: ../src/verbs.cpp:2886 +#: ../src/verbs.cpp:2848 msgid "Scroll_bars" msgstr "_Barras de desplazamiento" -#: ../src/verbs.cpp:2886 +#: ../src/verbs.cpp:2848 msgid "Show or hide the canvas scrollbars" msgstr "Mostrar/ocultar las barras de desplazamiento del lienzo" -#: ../src/verbs.cpp:2887 +#: ../src/verbs.cpp:2849 msgid "Page _Grid" msgstr "Rejilla de pá_gina" -#: ../src/verbs.cpp:2887 +#: ../src/verbs.cpp:2849 msgid "Show or hide the page grid" msgstr "Mostrar/ocultar la rejilla de página" -#: ../src/verbs.cpp:2888 +#: ../src/verbs.cpp:2850 msgid "G_uides" msgstr "G_uías" -#: ../src/verbs.cpp:2888 +#: ../src/verbs.cpp:2850 msgid "Show or hide guides (drag from a ruler to create a guide)" msgstr "" "Mostrar/ocultar las guías (arrastre desde una regla para crear una guía)" -#: ../src/verbs.cpp:2889 +#: ../src/verbs.cpp:2851 msgid "Enable snapping" msgstr "Activar ajuste" -#: ../src/verbs.cpp:2890 +#: ../src/verbs.cpp:2852 msgid "_Commands Bar" msgstr "Barra de _comandos" -#: ../src/verbs.cpp:2890 +#: ../src/verbs.cpp:2852 msgid "Show or hide the Commands bar (under the menu)" msgstr "Mostrar u ocultar la barra de comandos (bajo el menú)" -#: ../src/verbs.cpp:2891 +#: ../src/verbs.cpp:2853 msgid "Sn_ap Controls Bar" msgstr "Ajustar la barra de controles" -#: ../src/verbs.cpp:2891 +#: ../src/verbs.cpp:2853 msgid "Show or hide the snapping controls" msgstr "Mostrar u ocultar los controles de ajuste" -#: ../src/verbs.cpp:2892 +#: ../src/verbs.cpp:2854 msgid "T_ool Controls Bar" msgstr "Barra de c_ontroles de herramienta" -#: ../src/verbs.cpp:2892 +#: ../src/verbs.cpp:2854 msgid "Show or hide the Tool Controls bar" msgstr "Mostrar u ocultar la barra de controles de herramienta" -#: ../src/verbs.cpp:2893 +#: ../src/verbs.cpp:2855 msgid "_Toolbox" msgstr "Caja de herramien_tas" -#: ../src/verbs.cpp:2893 +#: ../src/verbs.cpp:2855 msgid "Show or hide the main toolbox (on the left)" msgstr "Mostrar u ocultar la caja de herramientas principal (a la izquierda)" -#: ../src/verbs.cpp:2894 +#: ../src/verbs.cpp:2856 msgid "_Palette" msgstr "_Paleta" -#: ../src/verbs.cpp:2894 +#: ../src/verbs.cpp:2856 msgid "Show or hide the color palette" msgstr "Mostrar u ocultar la paleta de color" -#: ../src/verbs.cpp:2895 +#: ../src/verbs.cpp:2857 msgid "_Statusbar" msgstr "Barra de e_stado" -#: ../src/verbs.cpp:2895 +#: ../src/verbs.cpp:2857 msgid "Show or hide the statusbar (at the bottom of the window)" msgstr "Mostrar u ocultar la barra de estado (abajo en la ventana)" -#: ../src/verbs.cpp:2896 +#: ../src/verbs.cpp:2858 msgid "Nex_t Zoom" msgstr "Zoom siguien_te" -#: ../src/verbs.cpp:2896 +#: ../src/verbs.cpp:2858 msgid "Next zoom (from the history of zooms)" msgstr "Siguiente zoom (del historial de zooms)" -#: ../src/verbs.cpp:2898 +#: ../src/verbs.cpp:2860 msgid "Pre_vious Zoom" msgstr "Zoom a_nterior" -#: ../src/verbs.cpp:2898 +#: ../src/verbs.cpp:2860 msgid "Previous zoom (from the history of zooms)" msgstr "Zoom previo (del historial de zooms)" -#: ../src/verbs.cpp:2900 +#: ../src/verbs.cpp:2862 msgid "Zoom 1:_1" msgstr "Zoom 1:_1" -#: ../src/verbs.cpp:2900 +#: ../src/verbs.cpp:2862 msgid "Zoom to 1:1" msgstr "Zoom a 1:1" -#: ../src/verbs.cpp:2902 +#: ../src/verbs.cpp:2864 msgid "Zoom 1:_2" msgstr "Zoom 1:2" -#: ../src/verbs.cpp:2902 +#: ../src/verbs.cpp:2864 msgid "Zoom to 1:2" msgstr "Zoom a 1:2" -#: ../src/verbs.cpp:2904 +#: ../src/verbs.cpp:2866 msgid "_Zoom 2:1" msgstr "_Zoom 2:1" -#: ../src/verbs.cpp:2904 +#: ../src/verbs.cpp:2866 msgid "Zoom to 2:1" msgstr "_Zoom a 2:1" -#: ../src/verbs.cpp:2906 +#: ../src/verbs.cpp:2868 msgid "_Fullscreen" msgstr "_Pantalla completa" -#: ../src/verbs.cpp:2906 ../src/verbs.cpp:2908 +#: ../src/verbs.cpp:2868 ../src/verbs.cpp:2870 msgid "Stretch this document window to full screen" msgstr "Ampliar esta ventana al tamaño de la pantalla" -#: ../src/verbs.cpp:2908 +#: ../src/verbs.cpp:2870 msgid "Fullscreen & Focus Mode" msgstr "Modo pantalla completa y foco" -#: ../src/verbs.cpp:2910 +#: ../src/verbs.cpp:2872 msgid "Toggle _Focus Mode" msgstr "Conmutar modo _Foco" -#: ../src/verbs.cpp:2910 +#: ../src/verbs.cpp:2872 msgid "Remove excess toolbars to focus on drawing" msgstr "" "Eliminar las barras de herramientas sobrantes para centrarse en el dibujo" -#: ../src/verbs.cpp:2912 +#: ../src/verbs.cpp:2874 msgid "Duplic_ate Window" msgstr "Duplic_ar ventana" -#: ../src/verbs.cpp:2912 +#: ../src/verbs.cpp:2874 msgid "Open a new window with the same document" msgstr "Abre una nueva ventana con el mismo documento" -#: ../src/verbs.cpp:2914 +#: ../src/verbs.cpp:2876 msgid "_New View Preview" msgstr "_Nueva vista preliminar" -#: ../src/verbs.cpp:2915 +#: ../src/verbs.cpp:2877 msgid "New View Preview" msgstr "Nueva vista preliminar" #. "view_new_preview" -#: ../src/verbs.cpp:2917 ../src/verbs.cpp:2925 +#: ../src/verbs.cpp:2879 ../src/verbs.cpp:2887 msgid "_Normal" msgstr "_Normal" -#: ../src/verbs.cpp:2918 +#: ../src/verbs.cpp:2880 msgid "Switch to normal display mode" msgstr "Cambiar al modo de visualización normal" -#: ../src/verbs.cpp:2919 +#: ../src/verbs.cpp:2881 msgid "No _Filters" msgstr "Sin _filtros" -#: ../src/verbs.cpp:2920 +#: ../src/verbs.cpp:2882 msgid "Switch to normal display without filters" msgstr "Cambiar al modo de visualización normal sin filtros" -#: ../src/verbs.cpp:2921 +#: ../src/verbs.cpp:2883 msgid "_Outline" msgstr "_Contorno" -#: ../src/verbs.cpp:2922 +#: ../src/verbs.cpp:2884 msgid "Switch to outline (wireframe) display mode" msgstr "Cambiar al modo de visualización contorno (wireframe)" #. new ZoomVerb(SP_VERB_VIEW_COLOR_MODE_PRINT_COLORS_PREVIEW, "ViewColorModePrintColorsPreview", N_("_Print Colors Preview"), #. N_("Switch to print colors preview mode"), NULL), -#: ../src/verbs.cpp:2923 ../src/verbs.cpp:2931 +#: ../src/verbs.cpp:2885 ../src/verbs.cpp:2893 msgid "_Toggle" msgstr "_Cambiar" -#: ../src/verbs.cpp:2924 +#: ../src/verbs.cpp:2886 msgid "Toggle between normal and outline display modes" msgstr "Cambiar entre los modos de visualización normal y de líneas" -#: ../src/verbs.cpp:2926 +#: ../src/verbs.cpp:2888 msgid "Switch to normal color display mode" msgstr "Cambiar al modo normal de visualización en color" -#: ../src/verbs.cpp:2927 +#: ../src/verbs.cpp:2889 msgid "_Grayscale" msgstr "Escala de _grises" -#: ../src/verbs.cpp:2928 +#: ../src/verbs.cpp:2890 msgid "Switch to grayscale display mode" msgstr "Cambiar al modo de visualización en escala de grises" -#: ../src/verbs.cpp:2932 +#: ../src/verbs.cpp:2894 msgid "Toggle between normal and grayscale color display modes" msgstr "Cambiar entre los modos de visualización normal y escala de grises" -#: ../src/verbs.cpp:2934 +#: ../src/verbs.cpp:2896 msgid "Color-managed view" msgstr "Vista de gestión de color" -#: ../src/verbs.cpp:2935 +#: ../src/verbs.cpp:2897 msgid "Toggle color-managed display for this document window" msgstr "Mostrar la pantalla de gestión de color para esta ventana de documento" -#: ../src/verbs.cpp:2937 +#: ../src/verbs.cpp:2899 msgid "Ico_n Preview..." msgstr "Vista de ico_no..." -#: ../src/verbs.cpp:2938 +#: ../src/verbs.cpp:2900 msgid "Open a window to preview objects at different icon resolutions" msgstr "" "Abrir una ventana para ver elementos en diferentes resoluciones de icono" -#: ../src/verbs.cpp:2940 +#: ../src/verbs.cpp:2902 msgid "Zoom to fit page in window" msgstr "Ajustar la página a la ventana" -#: ../src/verbs.cpp:2941 +#: ../src/verbs.cpp:2903 msgid "Page _Width" msgstr "An_cho de página" -#: ../src/verbs.cpp:2942 +#: ../src/verbs.cpp:2904 msgid "Zoom to fit page width in window" msgstr "Ajustar la anchura de la página a la ventana" -#: ../src/verbs.cpp:2944 +#: ../src/verbs.cpp:2906 msgid "Zoom to fit drawing in window" msgstr "Ajustar el dibujo a la ventana" -#: ../src/verbs.cpp:2946 +#: ../src/verbs.cpp:2908 msgid "Zoom to fit selection in window" msgstr "Ajustar la selección a la ventana" #. Dialogs -#: ../src/verbs.cpp:2949 +#: ../src/verbs.cpp:2911 msgid "P_references..." msgstr "P_referencias..." -#: ../src/verbs.cpp:2950 +#: ../src/verbs.cpp:2912 msgid "Edit global Inkscape preferences" msgstr "Editar las preferencias generales de Inkscape" -#: ../src/verbs.cpp:2951 +#: ../src/verbs.cpp:2913 msgid "_Document Properties..." msgstr "Propiedades del _documento..." -#: ../src/verbs.cpp:2952 +#: ../src/verbs.cpp:2914 msgid "Edit properties of this document (to be saved with the document)" msgstr "Editar las propiedades guardadas con el documento" -#: ../src/verbs.cpp:2953 +#: ../src/verbs.cpp:2915 msgid "Document _Metadata..." msgstr "_Metadatos del documento..." -#: ../src/verbs.cpp:2954 +#: ../src/verbs.cpp:2916 msgid "Edit document metadata (to be saved with the document)" msgstr "Editar los metadatos guardados con el documento" -#: ../src/verbs.cpp:2956 +#: ../src/verbs.cpp:2918 msgid "" "Edit objects' colors, gradients, arrowheads, and other fill and stroke " "properties..." @@ -28300,119 +28387,119 @@ msgstr "" "propiedades de relleno y trazo de un objeto..." #. FIXME: Probably better to either use something from the icon naming spec or ship our own "select-font" icon -#: ../src/verbs.cpp:2958 +#: ../src/verbs.cpp:2920 msgid "Gl_yphs..." msgstr "Gl_ifos..." -#: ../src/verbs.cpp:2959 +#: ../src/verbs.cpp:2921 msgid "Select characters from a glyphs palette" msgstr "Seleccione caracteres de una paleta de glifos" #. FIXME: Probably better to either use something from the icon naming spec or ship our own "select-color" icon #. TRANSLATORS: "Swatches" means: color samples -#: ../src/verbs.cpp:2962 +#: ../src/verbs.cpp:2924 msgid "S_watches..." msgstr "M_uestras..." -#: ../src/verbs.cpp:2963 +#: ../src/verbs.cpp:2925 msgid "Select colors from a swatches palette" msgstr "Elija los colores de una paleta de muestras" -#: ../src/verbs.cpp:2964 +#: ../src/verbs.cpp:2926 msgid "S_ymbols..." msgstr "Sí_mbolos..." -#: ../src/verbs.cpp:2965 +#: ../src/verbs.cpp:2927 msgid "Select symbol from a symbols palette" msgstr "Seleccionar un símbolo de una paleta de símboloe" -#: ../src/verbs.cpp:2966 +#: ../src/verbs.cpp:2928 msgid "Transfor_m..." msgstr "Transfor_mar..." -#: ../src/verbs.cpp:2967 +#: ../src/verbs.cpp:2929 msgid "Precisely control objects' transformations" msgstr "Controle con precisión las transformaciones de los objetos" -#: ../src/verbs.cpp:2968 +#: ../src/verbs.cpp:2930 msgid "_Align and Distribute..." msgstr "_Alinear y distribuir..." -#: ../src/verbs.cpp:2969 +#: ../src/verbs.cpp:2931 msgid "Align and distribute objects" msgstr "Diálogo de alineación y distribución" -#: ../src/verbs.cpp:2970 +#: ../src/verbs.cpp:2932 msgid "_Spray options..." msgstr "Opciones de _spray..." -#: ../src/verbs.cpp:2971 +#: ../src/verbs.cpp:2933 msgid "Some options for the spray" msgstr "Algunas opciones para el spray" -#: ../src/verbs.cpp:2972 +#: ../src/verbs.cpp:2934 msgid "Undo _History..." msgstr "_Historia de deshacer..." -#: ../src/verbs.cpp:2973 +#: ../src/verbs.cpp:2935 msgid "Undo History" msgstr "Historia de deshacer" -#: ../src/verbs.cpp:2975 +#: ../src/verbs.cpp:2937 msgid "View and select font family, font size and other text properties" msgstr "" "Ver y seleccionar familias tipográficas, su tamaño y otras propiedades del " "texto" -#: ../src/verbs.cpp:2976 +#: ../src/verbs.cpp:2938 msgid "_XML Editor..." msgstr "Editor _XML..." -#: ../src/verbs.cpp:2977 +#: ../src/verbs.cpp:2939 msgid "View and edit the XML tree of the document" msgstr "Ver y editar el árbol XML del documento" -#: ../src/verbs.cpp:2978 +#: ../src/verbs.cpp:2940 msgid "_Find/Replace..." msgstr "_Buscar/Reemplazar..." -#: ../src/verbs.cpp:2979 +#: ../src/verbs.cpp:2941 msgid "Find objects in document" msgstr "Buscar objetos en el documento" -#: ../src/verbs.cpp:2980 +#: ../src/verbs.cpp:2942 msgid "Find and _Replace Text..." msgstr "Buscar y _reemplazar texto..." -#: ../src/verbs.cpp:2981 +#: ../src/verbs.cpp:2943 msgid "Find and replace text in document" msgstr "Buscar y reemplazar texto en el documento" -#: ../src/verbs.cpp:2983 +#: ../src/verbs.cpp:2945 msgid "Check spelling of text in document" msgstr "Comprobar la ortografía del texto en el documento" -#: ../src/verbs.cpp:2984 +#: ../src/verbs.cpp:2946 msgid "_Messages..." msgstr "_Mensajes..." -#: ../src/verbs.cpp:2985 +#: ../src/verbs.cpp:2947 msgid "View debug messages" msgstr "Ver los mensajes de depuración" -#: ../src/verbs.cpp:2986 +#: ../src/verbs.cpp:2948 msgid "Show/Hide D_ialogs" msgstr "Mostrar/ocultar d_iálogos" -#: ../src/verbs.cpp:2987 +#: ../src/verbs.cpp:2949 msgid "Show or hide all open dialogs" msgstr "Mostrar/ocultar todos los diálogos abiertos" -#: ../src/verbs.cpp:2988 +#: ../src/verbs.cpp:2950 msgid "Create Tiled Clones..." msgstr "Crear clones en mosaico..." -#: ../src/verbs.cpp:2989 +#: ../src/verbs.cpp:2951 msgid "" "Create multiple clones of selected object, arranging them into a pattern or " "scattering" @@ -28420,324 +28507,324 @@ msgstr "" "Crear varios clones del objeto seleccionado y colocarlos en un mosaico o " "patrón" -#: ../src/verbs.cpp:2990 +#: ../src/verbs.cpp:2952 msgid "_Object attributes..." msgstr "Atributos de _objeto..." -#: ../src/verbs.cpp:2991 +#: ../src/verbs.cpp:2953 msgid "Edit the object attributes..." msgstr "Editar los atributos del objeto..." -#: ../src/verbs.cpp:2993 +#: ../src/verbs.cpp:2955 msgid "Edit the ID, locked and visible status, and other object properties" msgstr "" "Editar el ID, estado de bloqueo, visibilidad y otras propiedades del objeto" -#: ../src/verbs.cpp:2994 +#: ../src/verbs.cpp:2956 msgid "_Input Devices..." msgstr "Dispositivos de _entrada..." -#: ../src/verbs.cpp:2995 +#: ../src/verbs.cpp:2957 msgid "Configure extended input devices, such as a graphics tablet" msgstr "" "Configurar dispositivos de entrada extendidos, por ejemplo una tableta " "gráfica" -#: ../src/verbs.cpp:2996 +#: ../src/verbs.cpp:2958 msgid "_Extensions..." msgstr "_Extensiones..." -#: ../src/verbs.cpp:2997 +#: ../src/verbs.cpp:2959 msgid "Query information about extensions" msgstr "Obtenga información acerca de las extensiones" -#: ../src/verbs.cpp:2998 +#: ../src/verbs.cpp:2960 msgid "Layer_s..." msgstr "Capa_s..." -#: ../src/verbs.cpp:2999 +#: ../src/verbs.cpp:2961 msgid "View Layers" msgstr "Ver capas" -#: ../src/verbs.cpp:3000 +#: ../src/verbs.cpp:2962 msgid "Object_s..." msgstr "Objeto_s..." -#: ../src/verbs.cpp:3001 +#: ../src/verbs.cpp:2963 msgid "View Objects" msgstr "Ver objetos" -#: ../src/verbs.cpp:3002 +#: ../src/verbs.cpp:2964 msgid "Selection se_ts..." msgstr "Conjun_tos de selección..." -#: ../src/verbs.cpp:3003 +#: ../src/verbs.cpp:2965 msgid "View Tags" msgstr "Ver etiquetas" -#: ../src/verbs.cpp:3004 +#: ../src/verbs.cpp:2966 msgid "Path E_ffects ..." msgstr "E_fectos de trayecto..." -#: ../src/verbs.cpp:3005 +#: ../src/verbs.cpp:2967 msgid "Manage, edit, and apply path effects" msgstr "Gestionar, editar y aplicar un efecto de trayecto" -#: ../src/verbs.cpp:3006 +#: ../src/verbs.cpp:2968 msgid "Filter _Editor..." msgstr "_Editor de filtros..." -#: ../src/verbs.cpp:3007 +#: ../src/verbs.cpp:2969 msgid "Manage, edit, and apply SVG filters" msgstr "Gestionar, editar y aplicar efectos de filtro SVG" -#: ../src/verbs.cpp:3008 +#: ../src/verbs.cpp:2970 msgid "SVG Font Editor..." msgstr "Editor de fuentes SVG ..." -#: ../src/verbs.cpp:3009 +#: ../src/verbs.cpp:2971 msgid "Edit SVG fonts" msgstr "Editar fuentes SVG" -#: ../src/verbs.cpp:3010 +#: ../src/verbs.cpp:2972 msgid "Print Colors..." msgstr "Colores de impresión..." -#: ../src/verbs.cpp:3011 +#: ../src/verbs.cpp:2973 msgid "" "Select which color separations to render in Print Colors Preview rendermode" msgstr "" "Seleccione qué separaciones de color se mostrarán en el modo de vista previa " "de colores de impresión" -#: ../src/verbs.cpp:3012 +#: ../src/verbs.cpp:2974 msgid "_Export PNG Image..." msgstr "_Exportar imagen PNG..." -#: ../src/verbs.cpp:3013 +#: ../src/verbs.cpp:2975 msgid "Export this document or a selection as a PNG image" msgstr "Exportar este documento o una selección como imagen PNG" #. Help -#: ../src/verbs.cpp:3015 +#: ../src/verbs.cpp:2977 msgid "About E_xtensions" msgstr "Acerca de e_xtensiones" -#: ../src/verbs.cpp:3016 +#: ../src/verbs.cpp:2978 msgid "Information on Inkscape extensions" msgstr "Información acerca de las extensiones de Inkscape" -#: ../src/verbs.cpp:3017 +#: ../src/verbs.cpp:2979 msgid "About _Memory" msgstr "Acerca de _memoria" -#: ../src/verbs.cpp:3018 +#: ../src/verbs.cpp:2980 msgid "Memory usage information" msgstr "Información del uso de memoria" -#: ../src/verbs.cpp:3019 +#: ../src/verbs.cpp:2981 msgid "_About Inkscape" msgstr "_Acerca de Inkscape" -#: ../src/verbs.cpp:3020 +#: ../src/verbs.cpp:2982 msgid "Inkscape version, authors, license" msgstr "Versión, autores y licencia de Inkscape" #. new HelpVerb(SP_VERB_SHOW_LICENSE, "ShowLicense", N_("_License"), #. N_("Distribution terms"), /*"show_license"*/"inkscape_options"), #. Tutorials -#: ../src/verbs.cpp:3025 +#: ../src/verbs.cpp:2987 msgid "Inkscape: _Basic" msgstr "Inkscape: _Básico" -#: ../src/verbs.cpp:3026 +#: ../src/verbs.cpp:2988 msgid "Getting started with Inkscape" msgstr "Introducción a Inkscape" #. "tutorial_basic" -#: ../src/verbs.cpp:3027 +#: ../src/verbs.cpp:2989 msgid "Inkscape: _Shapes" msgstr "Inkscape: _Formas" -#: ../src/verbs.cpp:3028 +#: ../src/verbs.cpp:2990 msgid "Using shape tools to create and edit shapes" msgstr "Cómo usar las herramientas de forma para crear y editar formas" -#: ../src/verbs.cpp:3029 +#: ../src/verbs.cpp:2991 msgid "Inkscape: _Advanced" msgstr "Inkscape: _Avanzado" -#: ../src/verbs.cpp:3030 +#: ../src/verbs.cpp:2992 msgid "Advanced Inkscape topics" msgstr "Temas avanzados de Inkscape" #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/verbs.cpp:3034 +#: ../src/verbs.cpp:2996 msgid "Inkscape: T_racing" msgstr "Inkscape: Vecto_rizar" -#: ../src/verbs.cpp:3035 +#: ../src/verbs.cpp:2997 msgid "Using bitmap tracing" msgstr "Usar trazado de mapa de bits" -#: ../src/verbs.cpp:3038 +#: ../src/verbs.cpp:3000 msgid "Inkscape: Tracing Pixel Art" msgstr "Inkscape: Trazar Pixel Art" -#: ../src/verbs.cpp:3039 +#: ../src/verbs.cpp:3001 msgid "Using Trace Pixel Art dialog" msgstr "Cómo usar el diálogo Trazar Pixel Art" -#: ../src/verbs.cpp:3040 +#: ../src/verbs.cpp:3002 msgid "Inkscape: _Calligraphy" msgstr "Inkscape: _Caligrafía" -#: ../src/verbs.cpp:3041 +#: ../src/verbs.cpp:3003 msgid "Using the Calligraphy pen tool" msgstr "Cómo usar la herramienta de pluma caligráfica" -#: ../src/verbs.cpp:3042 +#: ../src/verbs.cpp:3004 msgid "Inkscape: _Interpolate" msgstr "Inkscape: _Interpolar" -#: ../src/verbs.cpp:3043 +#: ../src/verbs.cpp:3005 msgid "Using the interpolate extension" msgstr "Cómo usar la extensión Interpolar" #. "tutorial_interpolate" -#: ../src/verbs.cpp:3044 +#: ../src/verbs.cpp:3006 msgid "_Elements of Design" msgstr "_Elementos de diseño" -#: ../src/verbs.cpp:3045 +#: ../src/verbs.cpp:3007 msgid "Principles of design in the tutorial form" msgstr "Principios de diseño en forma de tutorial" #. "tutorial_design" -#: ../src/verbs.cpp:3046 +#: ../src/verbs.cpp:3008 msgid "_Tips and Tricks" msgstr "_Trucos y consejos" -#: ../src/verbs.cpp:3047 +#: ../src/verbs.cpp:3009 msgid "Miscellaneous tips and tricks" msgstr "Trucos y consejos varios" #. "tutorial_tips" #. Effect -- renamed Extension -#: ../src/verbs.cpp:3050 +#: ../src/verbs.cpp:3012 msgid "Previous Exte_nsion" msgstr "Exte_nsión anterior" -#: ../src/verbs.cpp:3051 +#: ../src/verbs.cpp:3013 msgid "Repeat the last extension with the same settings" msgstr "Repetir la última extensión con los mismos ajustes" -#: ../src/verbs.cpp:3052 +#: ../src/verbs.cpp:3014 msgid "_Previous Extension Settings..." msgstr "_Ajustes de la extensión anterior..." -#: ../src/verbs.cpp:3053 +#: ../src/verbs.cpp:3015 msgid "Repeat the last extension with new settings" msgstr "Repetir la última extensión con ajustes nuevos" -#: ../src/verbs.cpp:3057 +#: ../src/verbs.cpp:3019 msgid "Fit the page to the current selection" msgstr "Ajustar lá página a la selección actual" -#: ../src/verbs.cpp:3059 +#: ../src/verbs.cpp:3021 msgid "Fit the page to the drawing" msgstr "Ajustar el lienzo al tamaño del dibujo" -#: ../src/verbs.cpp:3060 +#: ../src/verbs.cpp:3022 msgid "_Resize Page to Selection" msgstr "Ajusta_r la página a la selección" -#: ../src/verbs.cpp:3061 +#: ../src/verbs.cpp:3023 msgid "" "Fit the page to the current selection or the drawing if there is no selection" msgstr "" "Ajusta el lienzo al tamaño de la selección o del dibujo si no hay selección" -#: ../src/verbs.cpp:3065 +#: ../src/verbs.cpp:3027 msgid "Unlock All in All Layers" msgstr "Desbloquear todo en todas las capas" -#: ../src/verbs.cpp:3067 +#: ../src/verbs.cpp:3029 msgid "Unhide All" msgstr "Mostrar todo" -#: ../src/verbs.cpp:3069 +#: ../src/verbs.cpp:3031 msgid "Unhide All in All Layers" msgstr "Mostrar todo de todas las capas" -#: ../src/verbs.cpp:3073 +#: ../src/verbs.cpp:3035 msgid "Link an ICC color profile" msgstr "Conectar un perfil de color ICC" -#: ../src/verbs.cpp:3074 +#: ../src/verbs.cpp:3036 msgid "Remove Color Profile" msgstr "Eliminar perfil de color" -#: ../src/verbs.cpp:3075 +#: ../src/verbs.cpp:3037 msgid "Remove a linked ICC color profile" msgstr "Eliminar un perfil de color ICC conectado" -#: ../src/verbs.cpp:3078 +#: ../src/verbs.cpp:3040 msgid "Add External Script" msgstr "Añadir script externo" -#: ../src/verbs.cpp:3078 +#: ../src/verbs.cpp:3040 msgid "Add an external script" msgstr "Añadir un script externo" -#: ../src/verbs.cpp:3080 +#: ../src/verbs.cpp:3042 msgid "Add Embedded Script" msgstr "Añadir script incrustado" -#: ../src/verbs.cpp:3080 +#: ../src/verbs.cpp:3042 msgid "Add an embedded script" msgstr "Añadir un script incrustado" -#: ../src/verbs.cpp:3082 +#: ../src/verbs.cpp:3044 msgid "Edit Embedded Script" msgstr "Editar script incrustado" -#: ../src/verbs.cpp:3082 +#: ../src/verbs.cpp:3044 msgid "Edit an embedded script" msgstr "Editar un script incrustado" -#: ../src/verbs.cpp:3084 +#: ../src/verbs.cpp:3046 msgid "Remove External Script" msgstr "Retirar script externo" -#: ../src/verbs.cpp:3084 +#: ../src/verbs.cpp:3046 msgid "Remove an external script" msgstr "Retirar un script externo" -#: ../src/verbs.cpp:3086 +#: ../src/verbs.cpp:3048 msgid "Remove Embedded Script" msgstr "Retirar script incrustado" -#: ../src/verbs.cpp:3086 +#: ../src/verbs.cpp:3048 msgid "Remove an embedded script" msgstr "Retirar un script incrustado" -#: ../src/verbs.cpp:3108 ../src/verbs.cpp:3109 +#: ../src/verbs.cpp:3070 ../src/verbs.cpp:3071 msgid "Center on horizontal and vertical axis" msgstr "Centrar en los ejes horizontal y vertical" -#: ../src/widgets/arc-toolbar.cpp:128 +#: ../src/widgets/arc-toolbar.cpp:129 msgid "Arc: Change start/end" msgstr "Arco: Cambiar inicio/fin" -#: ../src/widgets/arc-toolbar.cpp:190 +#: ../src/widgets/arc-toolbar.cpp:191 msgid "Arc: Change open/closed" msgstr "Arco: Cambiar abierto/cerrado" -#: ../src/widgets/arc-toolbar.cpp:279 ../src/widgets/arc-toolbar.cpp:309 -#: ../src/widgets/rect-toolbar.cpp:256 ../src/widgets/rect-toolbar.cpp:295 -#: ../src/widgets/spiral-toolbar.cpp:207 ../src/widgets/spiral-toolbar.cpp:231 -#: ../src/widgets/star-toolbar.cpp:380 ../src/widgets/star-toolbar.cpp:442 +#: ../src/widgets/arc-toolbar.cpp:280 ../src/widgets/arc-toolbar.cpp:310 +#: ../src/widgets/rect-toolbar.cpp:260 ../src/widgets/rect-toolbar.cpp:299 +#: ../src/widgets/spiral-toolbar.cpp:210 ../src/widgets/spiral-toolbar.cpp:234 +#: ../src/widgets/star-toolbar.cpp:382 ../src/widgets/star-toolbar.cpp:444 msgid "New:" msgstr "Nuevo:" @@ -28747,116 +28834,116 @@ msgstr "Nuevo:" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("Average:")); -#: ../src/widgets/arc-toolbar.cpp:282 ../src/widgets/arc-toolbar.cpp:293 -#: ../src/widgets/rect-toolbar.cpp:264 ../src/widgets/rect-toolbar.cpp:282 -#: ../src/widgets/spiral-toolbar.cpp:209 ../src/widgets/spiral-toolbar.cpp:220 -#: ../src/widgets/star-toolbar.cpp:382 +#: ../src/widgets/arc-toolbar.cpp:283 ../src/widgets/arc-toolbar.cpp:294 +#: ../src/widgets/rect-toolbar.cpp:268 ../src/widgets/rect-toolbar.cpp:286 +#: ../src/widgets/spiral-toolbar.cpp:212 ../src/widgets/spiral-toolbar.cpp:223 +#: ../src/widgets/star-toolbar.cpp:384 msgid "Change:" msgstr "Cambio:" -#: ../src/widgets/arc-toolbar.cpp:318 +#: ../src/widgets/arc-toolbar.cpp:319 msgid "Start:" msgstr "Inicio:" -#: ../src/widgets/arc-toolbar.cpp:319 +#: ../src/widgets/arc-toolbar.cpp:320 msgid "The angle (in degrees) from the horizontal to the arc's start point" msgstr "El ángulo (en grados) desde la horizontal al punto inicial del arco" -#: ../src/widgets/arc-toolbar.cpp:331 +#: ../src/widgets/arc-toolbar.cpp:332 msgid "End:" msgstr "Fin:" -#: ../src/widgets/arc-toolbar.cpp:332 +#: ../src/widgets/arc-toolbar.cpp:333 msgid "The angle (in degrees) from the horizontal to the arc's end point" msgstr "" "El ángulo (en grados) desde la horizontal hasta el punto final del arco" -#: ../src/widgets/arc-toolbar.cpp:348 +#: ../src/widgets/arc-toolbar.cpp:349 msgid "Closed arc" msgstr "Arco cerrado" -#: ../src/widgets/arc-toolbar.cpp:349 +#: ../src/widgets/arc-toolbar.cpp:350 msgid "Switch to segment (closed shape with two radii)" msgstr "Cambiar a segmento (forma cerrada con dos radios)" -#: ../src/widgets/arc-toolbar.cpp:355 +#: ../src/widgets/arc-toolbar.cpp:356 msgid "Open Arc" msgstr "Arco abierto" -#: ../src/widgets/arc-toolbar.cpp:356 +#: ../src/widgets/arc-toolbar.cpp:357 msgid "Switch to arc (unclosed shape)" msgstr "Cambiar a archo (forma sin cerrar)" -#: ../src/widgets/arc-toolbar.cpp:379 +#: ../src/widgets/arc-toolbar.cpp:380 msgid "Make whole" msgstr "Completar" -#: ../src/widgets/arc-toolbar.cpp:380 +#: ../src/widgets/arc-toolbar.cpp:381 msgid "Make the shape a whole ellipse, not arc or segment" msgstr "Hacer una elipse completa, no un arco o segmento" #. TODO: use the correct axis here, too -#: ../src/widgets/box3d-toolbar.cpp:232 +#: ../src/widgets/box3d-toolbar.cpp:233 msgid "3D Box: Change perspective (angle of infinite axis)" msgstr "Caja 3D: Cambiar perspectiva (ángulo de eje infinito)" -#: ../src/widgets/box3d-toolbar.cpp:301 +#: ../src/widgets/box3d-toolbar.cpp:302 msgid "Angle in X direction" msgstr "Ángulo en dirección X" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:303 +#: ../src/widgets/box3d-toolbar.cpp:304 msgid "Angle of PLs in X direction" msgstr "Ángulo de las LP en la dirección X" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:325 +#: ../src/widgets/box3d-toolbar.cpp:326 msgid "State of VP in X direction" msgstr "Estado de los PF en la dirección X" -#: ../src/widgets/box3d-toolbar.cpp:326 +#: ../src/widgets/box3d-toolbar.cpp:327 msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" msgstr "" "Intercambiar PF en la dirección X entre «finito» e «infinito» (=paralelo)" -#: ../src/widgets/box3d-toolbar.cpp:341 +#: ../src/widgets/box3d-toolbar.cpp:342 msgid "Angle in Y direction" msgstr "Ángulo en la dirección Y" -#: ../src/widgets/box3d-toolbar.cpp:341 +#: ../src/widgets/box3d-toolbar.cpp:342 msgid "Angle Y:" msgstr "Ángulo Y:" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:343 +#: ../src/widgets/box3d-toolbar.cpp:344 msgid "Angle of PLs in Y direction" msgstr "Ángulo de las LP en la dirección Y" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:364 +#: ../src/widgets/box3d-toolbar.cpp:365 msgid "State of VP in Y direction" msgstr "Estado de los PF en la dirección Y" -#: ../src/widgets/box3d-toolbar.cpp:365 +#: ../src/widgets/box3d-toolbar.cpp:366 msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" msgstr "" "Intercambiar PF en la dirección Y entre «finito» e «infinito» (=paralelo)" -#: ../src/widgets/box3d-toolbar.cpp:380 +#: ../src/widgets/box3d-toolbar.cpp:381 msgid "Angle in Z direction" msgstr "Ángulo en la dirección Z" #. Translators: PL is short for 'perspective line' -#: ../src/widgets/box3d-toolbar.cpp:382 +#: ../src/widgets/box3d-toolbar.cpp:383 msgid "Angle of PLs in Z direction" msgstr "Ángulo de las LP en la dirección Z" #. Translators: VP is short for 'vanishing point' -#: ../src/widgets/box3d-toolbar.cpp:403 +#: ../src/widgets/box3d-toolbar.cpp:404 msgid "State of VP in Z direction" msgstr "Estado de los PF en la dirección Z" -#: ../src/widgets/box3d-toolbar.cpp:404 +#: ../src/widgets/box3d-toolbar.cpp:405 msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" msgstr "" "Intercambiar PF en la dirección Z entre «finito» e «infinito» (=paralelo)" @@ -28870,7 +28957,7 @@ msgstr "Sin predeterminados" #. Width #: ../src/widgets/calligraphy-toolbar.cpp:427 -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:151 msgid "(hairline)" msgstr "(línea capilar)" @@ -28880,7 +28967,7 @@ msgstr "(línea capilar)" #. Scale #: ../src/widgets/calligraphy-toolbar.cpp:427 #: ../src/widgets/calligraphy-toolbar.cpp:460 -#: ../src/widgets/eraser-toolbar.cpp:182 ../src/widgets/pencil-toolbar.cpp:374 +#: ../src/widgets/eraser-toolbar.cpp:151 ../src/widgets/pencil-toolbar.cpp:378 #: ../src/widgets/spray-toolbar.cpp:294 ../src/widgets/spray-toolbar.cpp:323 #: ../src/widgets/spray-toolbar.cpp:339 ../src/widgets/spray-toolbar.cpp:408 #: ../src/widgets/spray-toolbar.cpp:438 ../src/widgets/spray-toolbar.cpp:456 @@ -28890,12 +28977,12 @@ msgid "(default)" msgstr "(predeterminado)" #: ../src/widgets/calligraphy-toolbar.cpp:427 -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:151 msgid "(broad stroke)" msgstr "(trazo ancho)" #: ../src/widgets/calligraphy-toolbar.cpp:430 -#: ../src/widgets/eraser-toolbar.cpp:185 +#: ../src/widgets/eraser-toolbar.cpp:154 msgid "Pen Width" msgstr "Ancho de pluma" @@ -28906,27 +28993,22 @@ msgstr "" #. Thinning #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 msgid "(speed blows up stroke)" msgstr "(velocidad infla el trazado)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 msgid "(slight widening)" msgstr "(ligero incremento)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 msgid "(constant width)" msgstr "(ancho constante)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 msgid "(slight thinning, default)" msgstr "(ligera disminución, predeterminado)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 msgid "(speed deflates stroke)" msgstr "(velocidad desinfla el trazo)" @@ -28935,12 +29017,10 @@ msgid "Stroke Thinning" msgstr "Disminución de trazo" #: ../src/widgets/calligraphy-toolbar.cpp:447 -#: ../src/widgets/eraser-toolbar.cpp:215 msgid "Thinning:" msgstr "Estrechar:" #: ../src/widgets/calligraphy-toolbar.cpp:448 -#: ../src/widgets/eraser-toolbar.cpp:216 msgid "" "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 " "makes them broader, 0 makes width independent of velocity)" @@ -29010,22 +29090,18 @@ msgstr "" #. Cap Rounding #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 msgid "(blunt caps, default)" msgstr "(topes romos, predeterminado)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 msgid "(slightly bulging)" msgstr "(ligeramente abultado)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 msgid "(approximately round)" msgstr "(aproximadamente redondo)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 msgid "(long protruding caps)" msgstr "(topes largos sobresalientes)" @@ -29034,12 +29110,10 @@ msgid "Cap rounding" msgstr "Redondeado de topes" #: ../src/widgets/calligraphy-toolbar.cpp:498 -#: ../src/widgets/eraser-toolbar.cpp:232 msgid "Caps:" msgstr "Puntas:" #: ../src/widgets/calligraphy-toolbar.cpp:499 -#: ../src/widgets/eraser-toolbar.cpp:233 msgid "" "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = " "round caps)" @@ -29049,22 +29123,18 @@ msgstr "" #. Tremor #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 msgid "(smooth line)" msgstr "(línea suave)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 msgid "(slight tremor)" msgstr "(ligero temblor)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 msgid "(noticeable tremor)" msgstr "(tremor notable)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 msgid "(maximum tremor)" msgstr "(temblor máximo)" @@ -29073,12 +29143,10 @@ msgid "Stroke Tremor" msgstr "Temblor del trazo" #: ../src/widgets/calligraphy-toolbar.cpp:514 -#: ../src/widgets/eraser-toolbar.cpp:249 msgid "Tremor:" msgstr "Temblor:" #: ../src/widgets/calligraphy-toolbar.cpp:515 -#: ../src/widgets/eraser-toolbar.cpp:250 msgid "Increase to make strokes rugged and trembling" msgstr "Incrementar para que los trazos aparezcan accidentados y temblorosos" @@ -29109,22 +29177,22 @@ msgstr "Incrementar para que la pluma vacile y oscile" #. Mass #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:168 msgid "(no inertia)" msgstr "(sin inercia)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:168 msgid "(slight smoothing, default)" msgstr "(ligero suavizado, predeterminado)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:168 msgid "(noticeable lagging)" msgstr "(retardo notable)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:168 msgid "(maximum inertia)" msgstr "(inercia máxima)" @@ -29133,7 +29201,7 @@ msgid "Pen Mass" msgstr "Masa de la pluma:" #: ../src/widgets/calligraphy-toolbar.cpp:549 -#: ../src/widgets/eraser-toolbar.cpp:267 +#: ../src/widgets/eraser-toolbar.cpp:171 msgid "Mass:" msgstr "Masa:" @@ -29155,7 +29223,6 @@ msgstr "" "mínimo, negro - ancho máximo)" #: ../src/widgets/calligraphy-toolbar.cpp:579 -#: ../src/widgets/eraser-toolbar.cpp:201 msgid "Use the pressure of the input device to alter the width of the pen" msgstr "Usar la presión del dispositivo para alterar la anchura de la pluma" @@ -29179,103 +29246,107 @@ msgstr "Añadir/editar perfil" msgid "Add or edit calligraphic profile" msgstr "Añadir o editar un perfil caligráfico" -#: ../src/widgets/connector-toolbar.cpp:115 +#: ../src/widgets/connector-toolbar.cpp:118 msgid "Set connector type: orthogonal" msgstr "Fijar tipo de conector: ortogonal" -#: ../src/widgets/connector-toolbar.cpp:115 +#: ../src/widgets/connector-toolbar.cpp:118 msgid "Set connector type: polyline" msgstr "Fijar tipo de conector: polilínea" -#: ../src/widgets/connector-toolbar.cpp:162 +#: ../src/widgets/connector-toolbar.cpp:165 msgid "Change connector curvature" msgstr "Cambiar curvatura de conectores" -#: ../src/widgets/connector-toolbar.cpp:211 +#: ../src/widgets/connector-toolbar.cpp:214 msgid "Change connector spacing" msgstr "Cambiar espaciado de conectores" -#: ../src/widgets/connector-toolbar.cpp:306 +#: ../src/widgets/connector-toolbar.cpp:307 msgid "Avoid" msgstr "Evitar" -#: ../src/widgets/connector-toolbar.cpp:327 +#: ../src/widgets/connector-toolbar.cpp:317 +msgid "Ignore" +msgstr "Ignorar" + +#: ../src/widgets/connector-toolbar.cpp:328 msgid "Orthogonal" msgstr "Ortogonal" -#: ../src/widgets/connector-toolbar.cpp:328 +#: ../src/widgets/connector-toolbar.cpp:329 msgid "Make connector orthogonal or polyline" msgstr "Crear conector ortogonal o polilínea" -#: ../src/widgets/connector-toolbar.cpp:342 +#: ../src/widgets/connector-toolbar.cpp:343 msgid "Connector Curvature" msgstr "Curvatura del conector" -#: ../src/widgets/connector-toolbar.cpp:342 +#: ../src/widgets/connector-toolbar.cpp:343 msgid "Curvature:" msgstr "Curvatura:" -#: ../src/widgets/connector-toolbar.cpp:343 +#: ../src/widgets/connector-toolbar.cpp:344 msgid "The amount of connectors curvature" msgstr "La cantidad de curvatura de los conectores" -#: ../src/widgets/connector-toolbar.cpp:353 +#: ../src/widgets/connector-toolbar.cpp:354 msgid "Connector Spacing" msgstr "Espaciado de conectores" -#: ../src/widgets/connector-toolbar.cpp:353 +#: ../src/widgets/connector-toolbar.cpp:354 msgid "Spacing:" msgstr "Espaciado:" -#: ../src/widgets/connector-toolbar.cpp:354 +#: ../src/widgets/connector-toolbar.cpp:355 msgid "The amount of space left around objects by auto-routing connectors" msgstr "" "El espacio que dejan alrededor de los objetos los conectores auto-trazados" -#: ../src/widgets/connector-toolbar.cpp:365 +#: ../src/widgets/connector-toolbar.cpp:366 msgid "Graph" msgstr "Gráfica" -#: ../src/widgets/connector-toolbar.cpp:375 +#: ../src/widgets/connector-toolbar.cpp:376 msgid "Connector Length" msgstr "Longitud del conector" -#: ../src/widgets/connector-toolbar.cpp:375 +#: ../src/widgets/connector-toolbar.cpp:376 msgid "Length:" msgstr "Longitud:" -#: ../src/widgets/connector-toolbar.cpp:376 +#: ../src/widgets/connector-toolbar.cpp:377 msgid "Ideal length for connectors when layout is applied" msgstr "Longitud ideal para los conectores cuando se aplica la distribución" -#: ../src/widgets/connector-toolbar.cpp:388 +#: ../src/widgets/connector-toolbar.cpp:389 msgid "Downwards" msgstr "Hacia abajo" -#: ../src/widgets/connector-toolbar.cpp:389 +#: ../src/widgets/connector-toolbar.cpp:390 msgid "Make connectors with end-markers (arrows) point downwards" msgstr "" "Hacer que los conectores con marcadores finales (flechas) apunten hacia abajo" -#: ../src/widgets/connector-toolbar.cpp:405 +#: ../src/widgets/connector-toolbar.cpp:406 msgid "Do not allow overlapping shapes" msgstr "No permitir formas superpuestas" -#: ../src/widgets/dash-selector.cpp:57 +#: ../src/widgets/dash-selector.cpp:59 msgid "Dash pattern" msgstr "Patrón de rayas" -#: ../src/widgets/dash-selector.cpp:65 +#: ../src/widgets/dash-selector.cpp:76 msgid "Pattern offset" msgstr "Desvío del patrón" -#: ../src/widgets/desktop-widget.cpp:431 +#: ../src/widgets/desktop-widget.cpp:499 msgid "Zoom drawing if window size changes" msgstr "Ajustar el dibujo a la ventana si cambia el tamaño de ésta" # display the initial welcome message in the statusbar #. Display the initial welcome message in the statusbar -#: ../src/widgets/desktop-widget.cpp:576 +#: ../src/widgets/desktop-widget.cpp:701 msgid "" "Welcome to Inkscape! Use shape or freehand tools to create objects; " "use selector (arrow) to move or transform them." @@ -29284,85 +29355,85 @@ msgstr "" "alzada para crear objetos; utilice el selector (flecha) para moverlos o " "transformarlos." -#: ../src/widgets/desktop-widget.cpp:608 +#: ../src/widgets/desktop-widget.cpp:743 msgid "Cursor coordinates" msgstr "Coordenadas del cursor" -#: ../src/widgets/desktop-widget.cpp:620 +#: ../src/widgets/desktop-widget.cpp:764 msgid "Z:" msgstr "Z:" -#: ../src/widgets/desktop-widget.cpp:731 +#: ../src/widgets/desktop-widget.cpp:885 msgid "grayscale" msgstr "escala de grises" -#: ../src/widgets/desktop-widget.cpp:732 +#: ../src/widgets/desktop-widget.cpp:886 msgid ", grayscale" msgstr ", escala de grises" -#: ../src/widgets/desktop-widget.cpp:733 +#: ../src/widgets/desktop-widget.cpp:887 msgid "print colors preview" msgstr "vista previa de colores de impresión" -#: ../src/widgets/desktop-widget.cpp:734 +#: ../src/widgets/desktop-widget.cpp:888 msgid ", print colors preview" msgstr ", vista previa de colores de impresión" -#: ../src/widgets/desktop-widget.cpp:735 +#: ../src/widgets/desktop-widget.cpp:889 msgid "outline" msgstr "contorno" -#: ../src/widgets/desktop-widget.cpp:736 +#: ../src/widgets/desktop-widget.cpp:890 msgid "no filters" msgstr "sin filtros" -#: ../src/widgets/desktop-widget.cpp:763 +#: ../src/widgets/desktop-widget.cpp:917 #, c-format msgid "%s%s: %d (%s%s) - Inkscape" msgstr "%s%s: %d (%s%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:765 ../src/widgets/desktop-widget.cpp:769 +#: ../src/widgets/desktop-widget.cpp:919 ../src/widgets/desktop-widget.cpp:923 #, c-format msgid "%s%s: %d (%s) - Inkscape" msgstr "%s%s: %d (%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:771 +#: ../src/widgets/desktop-widget.cpp:925 #, c-format msgid "%s%s: %d - Inkscape" msgstr "%s%s: %d - Inkscape" -#: ../src/widgets/desktop-widget.cpp:777 +#: ../src/widgets/desktop-widget.cpp:931 #, c-format msgid "%s%s (%s%s) - Inkscape" msgstr "%s%s (%s%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:779 ../src/widgets/desktop-widget.cpp:783 +#: ../src/widgets/desktop-widget.cpp:933 ../src/widgets/desktop-widget.cpp:937 #, c-format msgid "%s%s (%s) - Inkscape" msgstr "%s%s (%s) - Inkscape" -#: ../src/widgets/desktop-widget.cpp:785 +#: ../src/widgets/desktop-widget.cpp:939 #, c-format msgid "%s%s - Inkscape" msgstr "%s%s - Inkscape" -#: ../src/widgets/desktop-widget.cpp:957 +#: ../src/widgets/desktop-widget.cpp:1111 msgid "Locked all guides" msgstr "Bloqueadas todas las guías" -#: ../src/widgets/desktop-widget.cpp:959 +#: ../src/widgets/desktop-widget.cpp:1113 msgid "Unlocked all guides" msgstr "Desbloqueadas todas las guías" -#: ../src/widgets/desktop-widget.cpp:976 +#: ../src/widgets/desktop-widget.cpp:1130 msgid "Color-managed display is enabled in this window" msgstr "La pantalla con gestión de color está activa en esta ventana" -#: ../src/widgets/desktop-widget.cpp:978 +#: ../src/widgets/desktop-widget.cpp:1132 msgid "Color-managed display is disabled in this window" msgstr "La pantalla con gestión de color está inactiva en esta ventana" -#: ../src/widgets/desktop-widget.cpp:1033 +#: ../src/widgets/desktop-widget.cpp:1187 #, c-format msgid "" "Save changes to document \"%s\" before " @@ -29375,12 +29446,12 @@ msgstr "" "\n" "Si cierra sin guardar se perderán los cambios realizados." -#: ../src/widgets/desktop-widget.cpp:1043 -#: ../src/widgets/desktop-widget.cpp:1102 +#: ../src/widgets/desktop-widget.cpp:1197 +#: ../src/widgets/desktop-widget.cpp:1256 msgid "Close _without saving" msgstr "Cerrar _sin guardar" -#: ../src/widgets/desktop-widget.cpp:1092 +#: ../src/widgets/desktop-widget.cpp:1246 #, c-format msgid "" "The file \"%s\" was saved with a " @@ -29393,11 +29464,11 @@ msgstr "" "\n" "¿Desea guardar el archivo como SVG de Inkscape?" -#: ../src/widgets/desktop-widget.cpp:1104 +#: ../src/widgets/desktop-widget.cpp:1258 msgid "_Save as Inkscape SVG" msgstr "Guardar como _SVG de Inkscape" -#: ../src/widgets/desktop-widget.cpp:1318 +#: ../src/widgets/desktop-widget.cpp:1472 msgid "Note:" msgstr "Nota:" @@ -29436,289 +29507,223 @@ msgstr "Asignar" msgid "remove" msgstr "eliminar" -#: ../src/widgets/eraser-toolbar.cpp:144 +#: ../src/widgets/eraser-toolbar.cpp:121 msgid "Delete objects touched by the eraser" msgstr "Borrar objetos tocados por el borrador" -#: ../src/widgets/eraser-toolbar.cpp:150 +#: ../src/widgets/eraser-toolbar.cpp:127 msgid "Cut" msgstr "Cortar" -#: ../src/widgets/eraser-toolbar.cpp:151 -msgid "Cut out from paths and shapes" -msgstr "Recortar de trayectos y formas" - -#: ../src/widgets/eraser-toolbar.cpp:157 -msgid "Clip" -msgstr "Recorte" - -#: ../src/widgets/eraser-toolbar.cpp:158 -msgid "Clip from objects" -msgstr "Recortar de objetos" +#: ../src/widgets/eraser-toolbar.cpp:128 +msgid "Cut out from objects" +msgstr "Recorte de objetos" #. Width -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:151 msgid "(no width)" msgstr "(sin ancho)" -#: ../src/widgets/eraser-toolbar.cpp:186 +#: ../src/widgets/eraser-toolbar.cpp:155 msgid "The width of the eraser pen (relative to the visible canvas area)" msgstr "" "El ancho de la pluma de borrado (relativo al tamaño visible del lienzo)" -#: ../src/widgets/eraser-toolbar.cpp:200 -msgid "Eraser Pressure" -msgstr "Presión del borrador" - -#: ../src/widgets/eraser-toolbar.cpp:215 -msgid "Eraser Stroke Thinning" -msgstr "Reducción del trazo del borrador" - -#: ../src/widgets/eraser-toolbar.cpp:232 -msgid "Eraser Cap rounding" -msgstr "Redondeado del tope del borrador" - -#: ../src/widgets/eraser-toolbar.cpp:249 -msgid "EraserStroke Tremor" -msgstr "Temblor del trazo del borrador" - -#: ../src/widgets/eraser-toolbar.cpp:267 +#: ../src/widgets/eraser-toolbar.cpp:171 msgid "Eraser Mass" msgstr "Masa del borrador" -#: ../src/widgets/eraser-toolbar.cpp:268 +#: ../src/widgets/eraser-toolbar.cpp:172 msgid "Increase to make the eraser drag behind, as if slowed by inertia" msgstr "" "Incrementar para que el borrador se arrastre, como atrasado por la inercia" -#: ../src/widgets/eraser-toolbar.cpp:282 ../src/widgets/eraser-toolbar.cpp:283 +#: ../src/widgets/eraser-toolbar.cpp:186 ../src/widgets/eraser-toolbar.cpp:187 msgid "Break apart cut items" msgstr "Separar elementos cortados" -#: ../src/widgets/fill-style.cpp:363 +#: ../src/widgets/fill-style.cpp:367 msgid "Change fill rule" msgstr "Cambiar regla de relleno" -#: ../src/widgets/fill-style.cpp:447 ../src/widgets/fill-style.cpp:525 +#: ../src/widgets/fill-style.cpp:451 ../src/widgets/fill-style.cpp:529 msgid "Set fill color" msgstr "Aplicar color de relleno" -#: ../src/widgets/fill-style.cpp:447 ../src/widgets/fill-style.cpp:525 +#: ../src/widgets/fill-style.cpp:451 ../src/widgets/fill-style.cpp:529 msgid "Set stroke color" msgstr "Fijar color del trazo" -#: ../src/widgets/fill-style.cpp:623 +#: ../src/widgets/fill-style.cpp:627 msgid "Set gradient on fill" msgstr "Asignar degradado al relleno" -#: ../src/widgets/fill-style.cpp:623 +#: ../src/widgets/fill-style.cpp:627 msgid "Set gradient on stroke" msgstr "Fijar el degradado en el trazo" -#: ../src/widgets/fill-style.cpp:723 +#: ../src/widgets/fill-style.cpp:727 msgid "Set mesh on fill" msgstr "Asignar rejilla al rellenar" -#: ../src/widgets/fill-style.cpp:723 +#: ../src/widgets/fill-style.cpp:727 msgid "Set mesh on stroke" msgstr "Asignar rejilla al trazar" -#: ../src/widgets/fill-style.cpp:784 +#: ../src/widgets/fill-style.cpp:788 msgid "Set pattern on fill" msgstr "Asignar patrón al relleno" -#: ../src/widgets/fill-style.cpp:785 +#: ../src/widgets/fill-style.cpp:789 msgid "Set pattern on stroke" msgstr "Fijar el patrón en el trazo" -#: ../src/widgets/font-selector.cpp:103 ../src/widgets/text-toolbar.cpp:1316 -#: ../src/widgets/text-toolbar.cpp:1702 +#: ../src/widgets/font-selector.cpp:120 ../src/widgets/text-toolbar.cpp:1318 +#: ../src/widgets/text-toolbar.cpp:1723 msgid "Font size" msgstr "Tamaño de tipografía:" -#. gtk_box_set_homogeneous(GTK_BOX(fsel), TRUE); -#. gtk_box_set_spacing(GTK_BOX(fsel), 4); #. Family frame -#: ../src/widgets/font-selector.cpp:117 +#: ../src/widgets/font-selector.cpp:134 msgid "Font family" msgstr "Familia de tipografías" #. Style frame -#: ../src/widgets/font-selector.cpp:166 +#: ../src/widgets/font-selector.cpp:194 msgctxt "Font selector" msgid "Style" msgstr "Estilo" -#: ../src/widgets/font-selector.cpp:194 +#: ../src/widgets/font-selector.cpp:226 msgid "Face" msgstr "Cara" -#: ../src/widgets/font-selector.cpp:219 ../share/extensions/dots.inx.h:3 +#: ../src/widgets/font-selector.cpp:255 ../share/extensions/dots.inx.h:3 #: ../share/extensions/nicechart.inx.h:17 msgid "Font size:" msgstr "Tamaño de tipografía:" -#: ../src/widgets/gimp/ruler.cpp:184 -msgid "The orientation of the ruler" -msgstr "Orientación de la regla" - -#: ../src/widgets/gimp/ruler.cpp:194 -msgid "Unit of the ruler" -msgstr "Unidad de la regla" - -#: ../src/widgets/gimp/ruler.cpp:201 -msgid "Lower" -msgstr "Inferior" - -#: ../src/widgets/gimp/ruler.cpp:202 -msgid "Lower limit of ruler" -msgstr "Límite inferior de la regla" - -#: ../src/widgets/gimp/ruler.cpp:211 -msgid "Upper" -msgstr "Superior" - -#: ../src/widgets/gimp/ruler.cpp:212 -msgid "Upper limit of ruler" -msgstr "Límite superior de la regla" - -#: ../src/widgets/gimp/ruler.cpp:221 -msgid "Position" -msgstr "Posición" - -#: ../src/widgets/gimp/ruler.cpp:222 -msgid "Position of mark on the ruler" -msgstr "Posición de la marca en la regla" - -#: ../src/widgets/gimp/ruler.cpp:231 -msgid "Max Size" -msgstr "Tamaño máx" - -#: ../src/widgets/gimp/ruler.cpp:232 -msgid "Maximum size of the ruler" -msgstr "Tamaño máximo de la regla" - -#: ../src/widgets/gradient-selector.cpp:187 +#: ../src/widgets/gradient-selector.cpp:201 msgid "Create a duplicate gradient" msgstr "Crear un degradado duplicado" -#: ../src/widgets/gradient-selector.cpp:198 +#: ../src/widgets/gradient-selector.cpp:212 msgid "Edit gradient" msgstr "Editar degradado" -#: ../src/widgets/gradient-selector.cpp:267 -#: ../src/widgets/paint-selector.cpp:222 +#: ../src/widgets/gradient-selector.cpp:281 +#: ../src/widgets/paint-selector.cpp:235 msgid "Swatch" msgstr "Muestra" -#: ../src/widgets/gradient-selector.cpp:317 +#: ../src/widgets/gradient-selector.cpp:331 msgid "Rename gradient" msgstr "Renombrar degradado" -#: ../src/widgets/gradient-toolbar.cpp:157 -#: ../src/widgets/gradient-toolbar.cpp:170 -#: ../src/widgets/gradient-toolbar.cpp:759 -#: ../src/widgets/gradient-toolbar.cpp:1098 +#: ../src/widgets/gradient-toolbar.cpp:156 +#: ../src/widgets/gradient-toolbar.cpp:169 +#: ../src/widgets/gradient-toolbar.cpp:758 +#: ../src/widgets/gradient-toolbar.cpp:1097 msgid "No gradient" msgstr "Sin degradado" -#: ../src/widgets/gradient-toolbar.cpp:177 +#: ../src/widgets/gradient-toolbar.cpp:176 msgid "Multiple gradients" msgstr "Varios degradados" -#: ../src/widgets/gradient-toolbar.cpp:679 +#: ../src/widgets/gradient-toolbar.cpp:678 msgid "Multiple stops" msgstr "Varias paradas" -#: ../src/widgets/gradient-toolbar.cpp:777 -#: ../src/widgets/gradient-vector.cpp:578 +#: ../src/widgets/gradient-toolbar.cpp:776 +#: ../src/widgets/gradient-vector.cpp:614 msgid "No stops in gradient" msgstr "Degradado sin paradas" -#: ../src/widgets/gradient-toolbar.cpp:931 +#: ../src/widgets/gradient-toolbar.cpp:930 msgid "Assign gradient to object" msgstr "Asignar degradado a objeto" -#: ../src/widgets/gradient-toolbar.cpp:953 +#: ../src/widgets/gradient-toolbar.cpp:952 msgid "Set gradient repeat" msgstr "Fijar repetición del degradado" -#: ../src/widgets/gradient-toolbar.cpp:991 -#: ../src/widgets/gradient-vector.cpp:691 +#: ../src/widgets/gradient-toolbar.cpp:990 +#: ../src/widgets/gradient-vector.cpp:727 msgid "Change gradient stop offset" msgstr "Cambiar desplazamiento del degradado" -#: ../src/widgets/gradient-toolbar.cpp:1038 +#: ../src/widgets/gradient-toolbar.cpp:1037 msgid "linear" msgstr "lineal" -#: ../src/widgets/gradient-toolbar.cpp:1038 +#: ../src/widgets/gradient-toolbar.cpp:1037 msgid "Create linear gradient" msgstr "Crear degradado lineal" -#: ../src/widgets/gradient-toolbar.cpp:1042 +#: ../src/widgets/gradient-toolbar.cpp:1041 msgid "radial" msgstr "radial" -#: ../src/widgets/gradient-toolbar.cpp:1042 +#: ../src/widgets/gradient-toolbar.cpp:1041 msgid "Create radial (elliptic or circular) gradient" msgstr "Crear degradado radial (elíptico o circular)" -#: ../src/widgets/gradient-toolbar.cpp:1045 ../src/widgets/mesh-toolbar.cpp:396 +#: ../src/widgets/gradient-toolbar.cpp:1044 ../src/widgets/mesh-toolbar.cpp:405 msgid "New:" msgstr "Nuevo:" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1067 ../src/widgets/mesh-toolbar.cpp:428 msgid "fill" msgstr "relleno" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1067 ../src/widgets/mesh-toolbar.cpp:428 msgid "Create gradient in the fill" msgstr "Crear degradado en el relleno" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1071 ../src/widgets/mesh-toolbar.cpp:432 msgid "stroke" msgstr "trazo" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1071 ../src/widgets/mesh-toolbar.cpp:432 msgid "Create gradient in the stroke" msgstr "Crear degradado en el trazo" -#: ../src/widgets/gradient-toolbar.cpp:1075 ../src/widgets/mesh-toolbar.cpp:426 +#: ../src/widgets/gradient-toolbar.cpp:1074 ../src/widgets/mesh-toolbar.cpp:435 msgid "on:" msgstr "en:" -#: ../src/widgets/gradient-toolbar.cpp:1100 +#: ../src/widgets/gradient-toolbar.cpp:1099 msgid "Select" msgstr "Seleccionar" -#: ../src/widgets/gradient-toolbar.cpp:1100 +#: ../src/widgets/gradient-toolbar.cpp:1099 msgid "Choose a gradient" msgstr "Elija un degradado" -#: ../src/widgets/gradient-toolbar.cpp:1101 +#: ../src/widgets/gradient-toolbar.cpp:1100 msgid "Select:" msgstr "Seleccione:" -#: ../src/widgets/gradient-toolbar.cpp:1116 +#: ../src/widgets/gradient-toolbar.cpp:1115 msgctxt "Gradient repeat type" msgid "None" msgstr "Ninguno" -#: ../src/widgets/gradient-toolbar.cpp:1119 +#: ../src/widgets/gradient-toolbar.cpp:1118 msgid "Reflected" msgstr "Reflejado" -#: ../src/widgets/gradient-toolbar.cpp:1122 +#: ../src/widgets/gradient-toolbar.cpp:1121 msgid "Direct" msgstr "Directo" -#: ../src/widgets/gradient-toolbar.cpp:1124 +#: ../src/widgets/gradient-toolbar.cpp:1123 msgid "Repeat" msgstr "Repetido" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html#LinearGradientSpreadMethodAttribute -#: ../src/widgets/gradient-toolbar.cpp:1126 +#: ../src/widgets/gradient-toolbar.cpp:1125 msgid "" "Whether to fill with flat color beyond the ends of the gradient vector " "(spreadMethod=\"pad\"), or repeat the gradient in the same direction " @@ -29730,97 +29735,97 @@ msgstr "" "dirección (spreadMethod=\"repeat\"), o se repite el degradado en direcciones " "opuestas alternativas (spreadMethod=\"reflect\")" -#: ../src/widgets/gradient-toolbar.cpp:1131 +#: ../src/widgets/gradient-toolbar.cpp:1130 msgid "Repeat:" msgstr "Repetir:" -#: ../src/widgets/gradient-toolbar.cpp:1145 +#: ../src/widgets/gradient-toolbar.cpp:1144 msgid "No stops" msgstr "Sin paradas" -#: ../src/widgets/gradient-toolbar.cpp:1147 +#: ../src/widgets/gradient-toolbar.cpp:1146 msgid "Stops" msgstr "Paradas" -#: ../src/widgets/gradient-toolbar.cpp:1147 +#: ../src/widgets/gradient-toolbar.cpp:1146 msgid "Select a stop for the current gradient" msgstr "Seleccione una parada del degradado actual" -#: ../src/widgets/gradient-toolbar.cpp:1148 +#: ../src/widgets/gradient-toolbar.cpp:1147 msgid "Stops:" msgstr "Paradas:" #. Label -#: ../src/widgets/gradient-toolbar.cpp:1160 -#: ../src/widgets/gradient-vector.cpp:868 +#: ../src/widgets/gradient-toolbar.cpp:1159 +#: ../src/widgets/gradient-vector.cpp:916 msgctxt "Gradient" msgid "Offset:" msgstr "Desvío:" -#: ../src/widgets/gradient-toolbar.cpp:1160 +#: ../src/widgets/gradient-toolbar.cpp:1159 msgid "Offset of selected stop" msgstr "Desvío de la parada seleccionada" +#: ../src/widgets/gradient-toolbar.cpp:1177 #: ../src/widgets/gradient-toolbar.cpp:1178 -#: ../src/widgets/gradient-toolbar.cpp:1179 msgid "Insert new stop" msgstr "Insertar parada nueva" +#: ../src/widgets/gradient-toolbar.cpp:1191 #: ../src/widgets/gradient-toolbar.cpp:1192 -#: ../src/widgets/gradient-toolbar.cpp:1193 -#: ../src/widgets/gradient-vector.cpp:854 +#: ../src/widgets/gradient-vector.cpp:898 msgid "Delete stop" msgstr "Borrar parada" -#: ../src/widgets/gradient-toolbar.cpp:1207 +#: ../src/widgets/gradient-toolbar.cpp:1206 msgid "Reverse the direction of the gradient" msgstr "Revertir la dirección del degradado" -#: ../src/widgets/gradient-toolbar.cpp:1221 +#: ../src/widgets/gradient-toolbar.cpp:1220 msgid "Link gradients" msgstr "Enlazar degradados" -#: ../src/widgets/gradient-toolbar.cpp:1222 +#: ../src/widgets/gradient-toolbar.cpp:1221 msgid "Link gradients to change all related gradients" msgstr "Enlazar degradados para cambiar todos los degradados relacionados" -#: ../src/widgets/gradient-vector.cpp:289 ../src/widgets/paint-selector.cpp:918 -#: ../src/widgets/paint-selector.cpp:1270 -#: ../src/widgets/stroke-marker-selector.cpp:148 +#: ../src/widgets/gradient-vector.cpp:317 ../src/widgets/paint-selector.cpp:947 +#: ../src/widgets/paint-selector.cpp:1311 +#: ../src/widgets/stroke-marker-selector.cpp:160 msgid "No document selected" msgstr "Sin documentos seleccionados" -#: ../src/widgets/gradient-vector.cpp:293 +#: ../src/widgets/gradient-vector.cpp:321 msgid "No gradients in document" msgstr "Sin degradados en el documento" -#: ../src/widgets/gradient-vector.cpp:297 +#: ../src/widgets/gradient-vector.cpp:325 msgid "No gradient selected" msgstr "Sin degradado seleccionado" #. TRANSLATORS: "Stop" means: a "phase" of a gradient -#: ../src/widgets/gradient-vector.cpp:849 +#: ../src/widgets/gradient-vector.cpp:893 msgid "Add stop" msgstr "Añadir parada" -#: ../src/widgets/gradient-vector.cpp:852 +#: ../src/widgets/gradient-vector.cpp:896 msgid "Add another control stop to gradient" msgstr "Añadir otro control de parada al degradado" -#: ../src/widgets/gradient-vector.cpp:857 +#: ../src/widgets/gradient-vector.cpp:901 msgid "Delete current control stop from gradient" msgstr "Eliminar el control de parada actual" #. TRANSLATORS: "Stop" means: a "phase" of a gradient -#: ../src/widgets/gradient-vector.cpp:918 +#: ../src/widgets/gradient-vector.cpp:975 msgid "Stop Color" msgstr "Color de parada" -#: ../src/widgets/gradient-vector.cpp:957 +#: ../src/widgets/gradient-vector.cpp:1014 msgid "Gradient editor" msgstr "Editor de degradados" -#: ../src/widgets/gradient-vector.cpp:1301 +#: ../src/widgets/gradient-vector.cpp:1366 msgid "Change gradient stop color" msgstr "Cambiar el color de la parada de degradado" @@ -29850,43 +29855,43 @@ msgstr "Grupo accel" msgid "The Accel Group to use for stock accelerator keys" msgstr "El Grupo Accel que se usará para combinaciones de teclado de serie" -#: ../src/widgets/lpe-toolbar.cpp:226 +#: ../src/widgets/lpe-toolbar.cpp:233 msgid "Closed" msgstr "Cerrado" -#: ../src/widgets/lpe-toolbar.cpp:228 +#: ../src/widgets/lpe-toolbar.cpp:235 msgid "Open start" msgstr "Inicio abierto" -#: ../src/widgets/lpe-toolbar.cpp:230 +#: ../src/widgets/lpe-toolbar.cpp:237 msgid "Open end" msgstr "Final abierto" -#: ../src/widgets/lpe-toolbar.cpp:232 +#: ../src/widgets/lpe-toolbar.cpp:239 msgid "Open both" msgstr "Ambos abiertos" -#: ../src/widgets/lpe-toolbar.cpp:294 +#: ../src/widgets/lpe-toolbar.cpp:301 msgid "All inactive" msgstr "Todo inactivo" -#: ../src/widgets/lpe-toolbar.cpp:295 +#: ../src/widgets/lpe-toolbar.cpp:302 msgid "No geometric tool is active" msgstr "Ninguna herramienta geométrica está activa" -#: ../src/widgets/lpe-toolbar.cpp:328 +#: ../src/widgets/lpe-toolbar.cpp:335 msgid "Show limiting bounding box" msgstr "Mostrar la caja de contorno limitante" -#: ../src/widgets/lpe-toolbar.cpp:329 +#: ../src/widgets/lpe-toolbar.cpp:336 msgid "Show bounding box (used to cut infinite lines)" msgstr "Mostrar la caja de contorno (para cortar líneas infinitas)" -#: ../src/widgets/lpe-toolbar.cpp:340 +#: ../src/widgets/lpe-toolbar.cpp:347 msgid "Get limiting bounding box from selection" msgstr "Obtener caja de contorno limitante de la selección" -#: ../src/widgets/lpe-toolbar.cpp:341 +#: ../src/widgets/lpe-toolbar.cpp:348 msgid "" "Set limiting bounding box (used to cut infinite lines) to the bounding box " "of current selection" @@ -29894,31 +29899,31 @@ msgstr "" "Fijar la caja de contorno limitante (para cortar líneas infinitas) a la caja " "de contorno de la selección actual" -#: ../src/widgets/lpe-toolbar.cpp:353 +#: ../src/widgets/lpe-toolbar.cpp:360 msgid "Choose a line segment type" msgstr "Elegir un tipo de segmento de línea" -#: ../src/widgets/lpe-toolbar.cpp:369 +#: ../src/widgets/lpe-toolbar.cpp:376 msgid "Display measuring info" msgstr "Mostrar información de medidas" -#: ../src/widgets/lpe-toolbar.cpp:370 +#: ../src/widgets/lpe-toolbar.cpp:377 msgid "Display measuring info for selected items" msgstr "Mostrar información de las medidas de los elementos seleccionados" #. Add the units menu. -#: ../src/widgets/lpe-toolbar.cpp:380 ../src/widgets/node-toolbar.cpp:611 -#: ../src/widgets/paintbucket-toolbar.cpp:166 -#: ../src/widgets/rect-toolbar.cpp:374 ../src/widgets/select-toolbar.cpp:523 -#: ../src/widgets/text-toolbar.cpp:1972 +#: ../src/widgets/lpe-toolbar.cpp:387 ../src/widgets/node-toolbar.cpp:613 +#: ../src/widgets/paintbucket-toolbar.cpp:168 +#: ../src/widgets/rect-toolbar.cpp:378 ../src/widgets/select-toolbar.cpp:530 +#: ../src/widgets/text-toolbar.cpp:1993 msgid "Units" msgstr "Unidades" -#: ../src/widgets/lpe-toolbar.cpp:390 +#: ../src/widgets/lpe-toolbar.cpp:397 msgid "Open LPE dialog" msgstr "Abrir diálogo de LPE" -#: ../src/widgets/lpe-toolbar.cpp:391 +#: ../src/widgets/lpe-toolbar.cpp:398 msgid "Open LPE dialog (to adapt parameters numerically)" msgstr "Abrir el diálogo de LPE (para adaptar los parámetros numéricamente)" @@ -29954,7 +29959,7 @@ msgstr "Calcular todos los elementos." msgid "Compute max length." msgstr "Calcular longitud máx." -#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1705 +#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1726 msgid "Font Size" msgstr "Tamaño" @@ -29992,8 +29997,8 @@ msgid "Scale the results" msgstr "Escalar los resultados" #: ../src/widgets/measure-toolbar.cpp:329 -msgid "The offset size" -msgstr "Tamaño del desvío" +msgid "Mark dimension offset" +msgstr "Marcar desvío de la dimensión" #: ../src/widgets/measure-toolbar.cpp:341 #: ../src/widgets/measure-toolbar.cpp:342 @@ -30040,11 +30045,11 @@ msgstr "Marcar dimensión" msgid "Convert to item" msgstr "Convertir a elemento" -#: ../src/widgets/mesh-toolbar.cpp:284 +#: ../src/widgets/mesh-toolbar.cpp:293 msgid "Set mesh type" msgstr "Fijar estilo de rejilla" -#: ../src/widgets/mesh-toolbar.cpp:357 +#: ../src/widgets/mesh-toolbar.cpp:366 msgid "" "Mesh gradients are part of SVG 2:\n" "* Syntax may change.\n" @@ -30060,33 +30065,33 @@ msgstr "" "Para web: convierta a mapa de bits (Edición->Crear copia en mapa de bits).\n" "Para impresión: exporte a PDF" -#: ../src/widgets/mesh-toolbar.cpp:389 +#: ../src/widgets/mesh-toolbar.cpp:398 msgid "normal" msgstr "normal" -#: ../src/widgets/mesh-toolbar.cpp:389 +#: ../src/widgets/mesh-toolbar.cpp:398 msgid "Create mesh gradient" msgstr "Crear degradado de rejilla" -#: ../src/widgets/mesh-toolbar.cpp:393 +#: ../src/widgets/mesh-toolbar.cpp:402 msgid "conical" msgstr "cónico" -#: ../src/widgets/mesh-toolbar.cpp:393 +#: ../src/widgets/mesh-toolbar.cpp:402 msgid "Create conical gradient" msgstr "Crear degradado cónico" -#: ../src/widgets/mesh-toolbar.cpp:448 +#: ../src/widgets/mesh-toolbar.cpp:457 msgid "Rows" msgstr "Filas" -#: ../src/widgets/mesh-toolbar.cpp:448 +#: ../src/widgets/mesh-toolbar.cpp:457 #: ../share/extensions/guides_creator.inx.h:5 #: ../share/extensions/layout_nup.inx.h:12 msgid "Rows:" msgstr "Filas:" -#: ../src/widgets/mesh-toolbar.cpp:448 +#: ../src/widgets/mesh-toolbar.cpp:457 msgid "Number of rows in new mesh" msgstr "Número de filas en rejilla nueva" @@ -30094,7 +30099,7 @@ msgstr "Número de filas en rejilla nueva" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/widgets/mesh-toolbar.cpp:464 +#: ../src/widgets/mesh-toolbar.cpp:473 msgid "Columns" msgstr "Columnas" @@ -30102,78 +30107,78 @@ msgstr "Columnas" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/widgets/mesh-toolbar.cpp:464 +#: ../src/widgets/mesh-toolbar.cpp:473 #: ../share/extensions/guides_creator.inx.h:4 msgid "Columns:" msgstr "Columnas:" -#: ../src/widgets/mesh-toolbar.cpp:464 +#: ../src/widgets/mesh-toolbar.cpp:473 msgid "Number of columns in new mesh" msgstr "Número de columnas en rejilla nueva" -#: ../src/widgets/mesh-toolbar.cpp:478 +#: ../src/widgets/mesh-toolbar.cpp:487 msgid "Edit Fill" msgstr "Editar relleno" -#: ../src/widgets/mesh-toolbar.cpp:479 +#: ../src/widgets/mesh-toolbar.cpp:488 msgid "Edit fill mesh" msgstr "Editar rejilla relleno" -#: ../src/widgets/mesh-toolbar.cpp:491 +#: ../src/widgets/mesh-toolbar.cpp:500 msgid "Edit Stroke" msgstr "Editar trazo" -#: ../src/widgets/mesh-toolbar.cpp:492 +#: ../src/widgets/mesh-toolbar.cpp:501 msgid "Edit stroke mesh" msgstr "Editar rejilla de trazo" -#: ../src/widgets/mesh-toolbar.cpp:504 ../src/widgets/node-toolbar.cpp:519 +#: ../src/widgets/mesh-toolbar.cpp:513 ../src/widgets/node-toolbar.cpp:521 msgid "Show Handles" msgstr "Mostrar tiradores" -#: ../src/widgets/mesh-toolbar.cpp:521 ../src/widgets/mesh-toolbar.cpp:522 +#: ../src/widgets/mesh-toolbar.cpp:530 ../src/widgets/mesh-toolbar.cpp:531 msgid "WARNING: Mesh SVG Syntax Subject to Change" msgstr "ATENCIÓN: La sintaxis de rejillas SVG está sujeta a cambios" -#: ../src/widgets/mesh-toolbar.cpp:536 +#: ../src/widgets/mesh-toolbar.cpp:545 msgctxt "Type" msgid "Coons" msgstr "Coons" -#: ../src/widgets/mesh-toolbar.cpp:539 +#: ../src/widgets/mesh-toolbar.cpp:548 msgid "Bicubic" msgstr "Bicúbica" -#: ../src/widgets/mesh-toolbar.cpp:541 +#: ../src/widgets/mesh-toolbar.cpp:550 msgid "Coons" msgstr "Coons" -#: ../src/widgets/mesh-toolbar.cpp:542 +#: ../src/widgets/mesh-toolbar.cpp:551 msgid "Coons: no smoothing. Bicubic: smoothing across patch boundaries." msgstr "" "Coons: sin suavizado. Bicúbica: suavizado a través de los límites del parche." -#: ../src/widgets/mesh-toolbar.cpp:544 ../src/widgets/pencil-toolbar.cpp:377 +#: ../src/widgets/mesh-toolbar.cpp:553 ../src/widgets/pencil-toolbar.cpp:381 msgid "Smoothing:" msgstr "Suavizado:" -#: ../src/widgets/mesh-toolbar.cpp:554 +#: ../src/widgets/mesh-toolbar.cpp:563 msgid "Toggle Sides" msgstr "Conmutar lados" -#: ../src/widgets/mesh-toolbar.cpp:555 +#: ../src/widgets/mesh-toolbar.cpp:564 msgid "Toggle selected sides between Beziers and lines." msgstr "Conmuta los lados seleccionados entre Béziers y líneas." -#: ../src/widgets/mesh-toolbar.cpp:558 +#: ../src/widgets/mesh-toolbar.cpp:567 msgid "Toggle side:" msgstr "Conmutar lado:" -#: ../src/widgets/mesh-toolbar.cpp:565 +#: ../src/widgets/mesh-toolbar.cpp:574 msgid "Make elliptical" msgstr "Hacer elíptico" -#: ../src/widgets/mesh-toolbar.cpp:566 +#: ../src/widgets/mesh-toolbar.cpp:575 msgid "" "Make selected sides elliptical by changing length of handles. Works best if " "handles already approximate ellipse." @@ -30181,254 +30186,254 @@ msgstr "" "Convierte los lados seleccionados en elípticos cambiando la longitud de los " "tiradores. Funciona mejor si los tiradores ya son aproximadamente una elipse." -#: ../src/widgets/mesh-toolbar.cpp:569 +#: ../src/widgets/mesh-toolbar.cpp:578 msgid "Make elliptical:" msgstr "Hacer elíptico:" -#: ../src/widgets/mesh-toolbar.cpp:576 +#: ../src/widgets/mesh-toolbar.cpp:585 msgid "Pick colors:" msgstr "Elija colores:" -#: ../src/widgets/mesh-toolbar.cpp:577 +#: ../src/widgets/mesh-toolbar.cpp:586 msgid "Pick colors for selected corner nodes from underneath mesh." msgstr "" "Elija los colores para los nodos de esquina seleccionados de la rejilla " "subjacente." -#: ../src/widgets/mesh-toolbar.cpp:580 +#: ../src/widgets/mesh-toolbar.cpp:589 msgid "Pick Color" msgstr "Elija color" -#: ../src/widgets/mesh-toolbar.cpp:588 +#: ../src/widgets/mesh-toolbar.cpp:597 msgid "Scale mesh to bounding box:" msgstr "Escalar rejilla a caja de contorno:" -#: ../src/widgets/mesh-toolbar.cpp:589 +#: ../src/widgets/mesh-toolbar.cpp:598 msgid "Scale mesh to fit inside bounding box." msgstr "Escalar la rejilla para que quepa dentro de la caja de contorno." -#: ../src/widgets/mesh-toolbar.cpp:592 +#: ../src/widgets/mesh-toolbar.cpp:601 msgid "Fit mesh" msgstr "Encajar rejilla" -#: ../src/widgets/node-toolbar.cpp:339 +#: ../src/widgets/node-toolbar.cpp:341 msgid "Insert node" msgstr "Insertar nodo" -#: ../src/widgets/node-toolbar.cpp:340 +#: ../src/widgets/node-toolbar.cpp:342 msgid "Insert new nodes into selected segments" msgstr "Insertar los nuevos nodos entre los segmentos seleccionados" -#: ../src/widgets/node-toolbar.cpp:343 +#: ../src/widgets/node-toolbar.cpp:345 msgid "Insert" msgstr "Insertar" -#: ../src/widgets/node-toolbar.cpp:354 +#: ../src/widgets/node-toolbar.cpp:356 msgid "Insert node at min X" msgstr "Insertar nodo en mín. X" -#: ../src/widgets/node-toolbar.cpp:355 +#: ../src/widgets/node-toolbar.cpp:357 msgid "Insert new nodes at min X into selected segments" msgstr "Insertar nodos nuevos en mín X en los segmentos seleccionados" -#: ../src/widgets/node-toolbar.cpp:358 +#: ../src/widgets/node-toolbar.cpp:360 msgid "Insert min X" msgstr "Insertar en mín. X" -#: ../src/widgets/node-toolbar.cpp:364 +#: ../src/widgets/node-toolbar.cpp:366 msgid "Insert node at max X" msgstr "Insertar nodo en máx. X" -#: ../src/widgets/node-toolbar.cpp:365 +#: ../src/widgets/node-toolbar.cpp:367 msgid "Insert new nodes at max X into selected segments" msgstr "Insertar nodos nuevos en máx X en los segmentos seleccionados" -#: ../src/widgets/node-toolbar.cpp:368 +#: ../src/widgets/node-toolbar.cpp:370 msgid "Insert max X" msgstr "Insertar máx. X" -#: ../src/widgets/node-toolbar.cpp:374 +#: ../src/widgets/node-toolbar.cpp:376 msgid "Insert node at min Y" msgstr "Insertar nodo en mín. Y" -#: ../src/widgets/node-toolbar.cpp:375 +#: ../src/widgets/node-toolbar.cpp:377 msgid "Insert new nodes at min Y into selected segments" msgstr "Insertar nodos nuevos en mín Y en los segmentos seleccionados" -#: ../src/widgets/node-toolbar.cpp:378 +#: ../src/widgets/node-toolbar.cpp:380 msgid "Insert min Y" msgstr "Insertar mín. Y" -#: ../src/widgets/node-toolbar.cpp:384 +#: ../src/widgets/node-toolbar.cpp:386 msgid "Insert node at max Y" msgstr "Insertar nodo en máx. Y" -#: ../src/widgets/node-toolbar.cpp:385 +#: ../src/widgets/node-toolbar.cpp:387 msgid "Insert new nodes at max Y into selected segments" msgstr "Insertar nodos nuevos en máx Y en los segmentos seleccionados" -#: ../src/widgets/node-toolbar.cpp:388 +#: ../src/widgets/node-toolbar.cpp:390 msgid "Insert max Y" msgstr "Insertar máx. Y" -#: ../src/widgets/node-toolbar.cpp:396 +#: ../src/widgets/node-toolbar.cpp:398 msgid "Delete selected nodes" msgstr "Suprimir los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:407 +#: ../src/widgets/node-toolbar.cpp:409 msgid "Join selected nodes" msgstr "Unir los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:410 +#: ../src/widgets/node-toolbar.cpp:412 msgid "Join" msgstr "Unir" -#: ../src/widgets/node-toolbar.cpp:418 +#: ../src/widgets/node-toolbar.cpp:420 msgid "Break path at selected nodes" msgstr "Romper el trayecto en los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:428 +#: ../src/widgets/node-toolbar.cpp:430 msgid "Join with segment" msgstr "Unir con segmento" -#: ../src/widgets/node-toolbar.cpp:429 +#: ../src/widgets/node-toolbar.cpp:431 msgid "Join selected endnodes with a new segment" msgstr "Unir los nodos finales seleccionados con un segmento nuevo" -#: ../src/widgets/node-toolbar.cpp:438 +#: ../src/widgets/node-toolbar.cpp:440 msgid "Delete segment" msgstr "Borrar segmento" -#: ../src/widgets/node-toolbar.cpp:439 +#: ../src/widgets/node-toolbar.cpp:441 msgid "Delete segment between two non-endpoint nodes" msgstr "Eliminar el segmento entre dos nodos no finales" -#: ../src/widgets/node-toolbar.cpp:448 +#: ../src/widgets/node-toolbar.cpp:450 msgid "Node Cusp" msgstr "Nodo vértice" -#: ../src/widgets/node-toolbar.cpp:449 +#: ../src/widgets/node-toolbar.cpp:451 msgid "Make selected nodes corner" msgstr "Convertir en esquina los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:458 +#: ../src/widgets/node-toolbar.cpp:460 msgid "Node Smooth" msgstr "Nodo suave" -#: ../src/widgets/node-toolbar.cpp:459 +#: ../src/widgets/node-toolbar.cpp:461 msgid "Make selected nodes smooth" msgstr "Suavizar los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:468 +#: ../src/widgets/node-toolbar.cpp:470 msgid "Node Symmetric" msgstr "Nodo simétrico" -#: ../src/widgets/node-toolbar.cpp:469 +#: ../src/widgets/node-toolbar.cpp:471 msgid "Make selected nodes symmetric" msgstr "Hacer simétricos los nodos seleccionados." -#: ../src/widgets/node-toolbar.cpp:478 +#: ../src/widgets/node-toolbar.cpp:480 msgid "Node Auto" msgstr "Nodo autom." -#: ../src/widgets/node-toolbar.cpp:479 +#: ../src/widgets/node-toolbar.cpp:481 msgid "Make selected nodes auto-smooth" msgstr "Autosuavizar los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:488 +#: ../src/widgets/node-toolbar.cpp:490 msgid "Node Line" msgstr "Nodo línea" -#: ../src/widgets/node-toolbar.cpp:489 +#: ../src/widgets/node-toolbar.cpp:491 msgid "Make selected segments lines" msgstr "Convertir los segmentos seleccionados en líneas" -#: ../src/widgets/node-toolbar.cpp:498 +#: ../src/widgets/node-toolbar.cpp:500 msgid "Node Curve" msgstr "Nodo curva" -#: ../src/widgets/node-toolbar.cpp:499 +#: ../src/widgets/node-toolbar.cpp:501 msgid "Make selected segments curves" msgstr "Convertir los segmentos seleccionados a curvas" -#: ../src/widgets/node-toolbar.cpp:508 +#: ../src/widgets/node-toolbar.cpp:510 msgid "Show Transform Handles" msgstr "Mostrar tiradores de transformación" -#: ../src/widgets/node-toolbar.cpp:509 +#: ../src/widgets/node-toolbar.cpp:511 msgid "Show transformation handles for selected nodes" msgstr "Mostrar tiradores de transformación de nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:520 +#: ../src/widgets/node-toolbar.cpp:522 msgid "Show Bezier handles of selected nodes" msgstr "Mostrar los tiradores Bezier de los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:530 +#: ../src/widgets/node-toolbar.cpp:532 msgid "Show Outline" msgstr "Mostrar contorno" -#: ../src/widgets/node-toolbar.cpp:531 +#: ../src/widgets/node-toolbar.cpp:533 msgid "Show path outline (without path effects)" msgstr "Mostrar el contorno del trayecto (sin efectos de trayecto)" -#: ../src/widgets/node-toolbar.cpp:553 +#: ../src/widgets/node-toolbar.cpp:555 msgid "Edit clipping paths" msgstr "Editar trayectos de recorte" -#: ../src/widgets/node-toolbar.cpp:554 +#: ../src/widgets/node-toolbar.cpp:556 msgid "Show clipping path(s) of selected object(s)" msgstr "Mostrar los trayectos de recorte de los objetos seleccionados" -#: ../src/widgets/node-toolbar.cpp:564 +#: ../src/widgets/node-toolbar.cpp:566 msgid "Edit masks" msgstr "Editar máscaras" -#: ../src/widgets/node-toolbar.cpp:565 +#: ../src/widgets/node-toolbar.cpp:567 msgid "Show mask(s) of selected object(s)" msgstr "Mostrar las máscaras de los objetos seleccionados" -#: ../src/widgets/node-toolbar.cpp:579 +#: ../src/widgets/node-toolbar.cpp:581 msgid "X coordinate:" msgstr "Coordenada X:" -#: ../src/widgets/node-toolbar.cpp:579 +#: ../src/widgets/node-toolbar.cpp:581 msgid "X coordinate of selected node(s)" msgstr "Coordenada X de los nodos seleccionados" -#: ../src/widgets/node-toolbar.cpp:597 +#: ../src/widgets/node-toolbar.cpp:599 msgid "Y coordinate:" msgstr "Coordenadas Y:" -#: ../src/widgets/node-toolbar.cpp:597 +#: ../src/widgets/node-toolbar.cpp:599 msgid "Y coordinate of selected node(s)" msgstr "Coordenada Y de los nodos seleccionados" -#: ../src/widgets/paint-selector.cpp:208 +#: ../src/widgets/paint-selector.cpp:221 msgid "No paint" msgstr "Sin relleno" -#: ../src/widgets/paint-selector.cpp:210 +#: ../src/widgets/paint-selector.cpp:223 msgid "Flat color" msgstr "Color uniforme" -#: ../src/widgets/paint-selector.cpp:212 +#: ../src/widgets/paint-selector.cpp:225 msgid "Linear gradient" msgstr "Degradado lineal" -#: ../src/widgets/paint-selector.cpp:214 +#: ../src/widgets/paint-selector.cpp:227 msgid "Radial gradient" msgstr "Degradado radial" -#: ../src/widgets/paint-selector.cpp:217 +#: ../src/widgets/paint-selector.cpp:230 msgid "Mesh gradient" msgstr "Degradado de rejilla" -#: ../src/widgets/paint-selector.cpp:224 +#: ../src/widgets/paint-selector.cpp:237 msgid "Unset paint (make it undefined so it can be inherited)" msgstr "No definir color (hacerlo indefinido para que no pueda ser heredado)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty -#: ../src/widgets/paint-selector.cpp:237 +#: ../src/widgets/paint-selector.cpp:254 msgid "" "Any path self-intersections or subpaths create holes in the fill (fill-rule: " "evenodd)" @@ -30437,51 +30442,51 @@ msgstr "" "relleno (regla de relleno: parimpar)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty -#: ../src/widgets/paint-selector.cpp:248 +#: ../src/widgets/paint-selector.cpp:265 msgid "" "Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" msgstr "" "El relleno es sólido a no ser que un subtrayecto sea contradireccional " "(regla de relleno: no-cero)" -#: ../src/widgets/paint-selector.cpp:590 +#: ../src/widgets/paint-selector.cpp:615 msgid "No objects" msgstr "Sin objetos" -#: ../src/widgets/paint-selector.cpp:601 +#: ../src/widgets/paint-selector.cpp:626 msgid "Multiple styles" msgstr "Múltiples estilos" -#: ../src/widgets/paint-selector.cpp:612 +#: ../src/widgets/paint-selector.cpp:637 msgid "Paint is undefined" msgstr "El color es indefinido" -#: ../src/widgets/paint-selector.cpp:623 +#: ../src/widgets/paint-selector.cpp:648 msgid "No paint" msgstr "Sin color" -#: ../src/widgets/paint-selector.cpp:703 +#: ../src/widgets/paint-selector.cpp:732 msgid "Flat color" msgstr "Color uniforme" #. sp_gradient_selector_set_mode(SP_GRADIENT_SELECTOR(gsel), SP_GRADIENT_SELECTOR_MODE_LINEAR); -#: ../src/widgets/paint-selector.cpp:767 +#: ../src/widgets/paint-selector.cpp:796 msgid "Linear gradient" msgstr "Degradado lineal" -#: ../src/widgets/paint-selector.cpp:770 +#: ../src/widgets/paint-selector.cpp:799 msgid "Radial gradient" msgstr "Degradado radial" -#: ../src/widgets/paint-selector.cpp:1039 +#: ../src/widgets/paint-selector.cpp:1080 msgid "Use the Mesh tool to modify the mesh." msgstr "Utilice la herramienta Rejilla para modificar la rejilla." -#: ../src/widgets/paint-selector.cpp:1052 +#: ../src/widgets/paint-selector.cpp:1093 msgid "Mesh fill" msgstr "Relleno de rejilla" -#: ../src/widgets/paint-selector.cpp:1391 +#: ../src/widgets/paint-selector.cpp:1444 msgid "" "Use the Node tool to adjust position, scale, and rotation of the " "pattern on canvas. Use Object > Pattern > Objects to Pattern to " @@ -30491,27 +30496,27 @@ msgstr "" "rotación del patrón en el lienzo. Utilice Objeto > Patrón > Objetos " "a patrón para crear un nuevo patrón de la selección." -#: ../src/widgets/paint-selector.cpp:1404 +#: ../src/widgets/paint-selector.cpp:1457 msgid "Pattern fill" msgstr "Relleno de mosaico" -#: ../src/widgets/paint-selector.cpp:1498 +#: ../src/widgets/paint-selector.cpp:1551 msgid "Swatch fill" msgstr "Relleno de muestra" -#: ../src/widgets/paintbucket-toolbar.cpp:133 +#: ../src/widgets/paintbucket-toolbar.cpp:135 msgid "Fill by" msgstr "Rellenar" -#: ../src/widgets/paintbucket-toolbar.cpp:134 +#: ../src/widgets/paintbucket-toolbar.cpp:136 msgid "Fill by:" msgstr "Rellenar:" -#: ../src/widgets/paintbucket-toolbar.cpp:146 +#: ../src/widgets/paintbucket-toolbar.cpp:148 msgid "Fill Threshold" msgstr "Umbral de relleno" -#: ../src/widgets/paintbucket-toolbar.cpp:147 +#: ../src/widgets/paintbucket-toolbar.cpp:149 msgid "" "The maximum allowed difference between the clicked pixel and the neighboring " "pixels to be counted in the fill" @@ -30519,36 +30524,36 @@ msgstr "" "La diferencia máxima permitida entre el pixel pulsado y sus vecinos que se " "contará en el relleno" -#: ../src/widgets/paintbucket-toolbar.cpp:174 +#: ../src/widgets/paintbucket-toolbar.cpp:176 msgid "Grow/shrink by" msgstr "Crecer/encoger" -#: ../src/widgets/paintbucket-toolbar.cpp:174 +#: ../src/widgets/paintbucket-toolbar.cpp:176 msgid "Grow/shrink by:" msgstr "Crecer/encoger:" -#: ../src/widgets/paintbucket-toolbar.cpp:175 +#: ../src/widgets/paintbucket-toolbar.cpp:177 msgid "" "The amount to grow (positive) or shrink (negative) the created fill path" msgstr "" "La cantidad que crecerá (positivo) o encogerá (negativo) el trazado de " "relleno creado" -#: ../src/widgets/paintbucket-toolbar.cpp:198 +#: ../src/widgets/paintbucket-toolbar.cpp:200 msgid "Close gaps" msgstr "Cerrar huecos" -#: ../src/widgets/paintbucket-toolbar.cpp:199 +#: ../src/widgets/paintbucket-toolbar.cpp:201 msgid "Close gaps:" msgstr "Cerrar huecos:" -#: ../src/widgets/paintbucket-toolbar.cpp:210 -#: ../src/widgets/pencil-toolbar.cpp:398 ../src/widgets/spiral-toolbar.cpp:282 -#: ../src/widgets/star-toolbar.cpp:562 +#: ../src/widgets/paintbucket-toolbar.cpp:212 +#: ../src/widgets/pencil-toolbar.cpp:402 ../src/widgets/spiral-toolbar.cpp:285 +#: ../src/widgets/star-toolbar.cpp:564 msgid "Defaults" msgstr "Predeterminados" -#: ../src/widgets/paintbucket-toolbar.cpp:211 +#: ../src/widgets/paintbucket-toolbar.cpp:213 msgid "" "Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools " "to change defaults)" @@ -30556,92 +30561,92 @@ msgstr "" "Reiniciar los parámetros del cubo de pintura (use «Preferencias > " "Herramientas» para cambiar los predeterminados)" -#: ../src/widgets/pencil-toolbar.cpp:102 +#: ../src/widgets/pencil-toolbar.cpp:104 msgid "Bezier" msgstr "Bézier" -#: ../src/widgets/pencil-toolbar.cpp:103 +#: ../src/widgets/pencil-toolbar.cpp:105 msgid "Create regular Bezier path" msgstr "Crear un trayecto Bézier normal" -#: ../src/widgets/pencil-toolbar.cpp:110 +#: ../src/widgets/pencil-toolbar.cpp:112 msgid "Create Spiro path" msgstr "Crear trayecto Spiro" -#: ../src/widgets/pencil-toolbar.cpp:116 +#: ../src/widgets/pencil-toolbar.cpp:118 msgid "Create BSpline path" msgstr "Crear trayecto BSpline" -#: ../src/widgets/pencil-toolbar.cpp:122 +#: ../src/widgets/pencil-toolbar.cpp:124 msgid "Zigzag" msgstr "Zigzag" -#: ../src/widgets/pencil-toolbar.cpp:123 +#: ../src/widgets/pencil-toolbar.cpp:125 msgid "Create a sequence of straight line segments" msgstr "Crear una sucesión de segmentos rectos" -#: ../src/widgets/pencil-toolbar.cpp:129 +#: ../src/widgets/pencil-toolbar.cpp:131 msgid "Paraxial" msgstr "Paraxial" -#: ../src/widgets/pencil-toolbar.cpp:130 +#: ../src/widgets/pencil-toolbar.cpp:132 msgid "Create a sequence of paraxial line segments" msgstr "Crear una sucesión de segmentos paraxiales" -#: ../src/widgets/pencil-toolbar.cpp:138 +#: ../src/widgets/pencil-toolbar.cpp:140 msgid "Mode of new lines drawn by this tool" msgstr "Modo de las líneas nuevas dibujadas por esta herramienta" -#: ../src/widgets/pencil-toolbar.cpp:173 +#: ../src/widgets/pencil-toolbar.cpp:175 msgctxt "Freehand shape" msgid "None" msgstr "Ninguno" -#: ../src/widgets/pencil-toolbar.cpp:174 +#: ../src/widgets/pencil-toolbar.cpp:176 msgid "Triangle in" msgstr "Triángulo dentro" -#: ../src/widgets/pencil-toolbar.cpp:175 +#: ../src/widgets/pencil-toolbar.cpp:177 msgid "Triangle out" msgstr "Triángulo fuera" -#: ../src/widgets/pencil-toolbar.cpp:177 +#: ../src/widgets/pencil-toolbar.cpp:179 msgid "From clipboard" msgstr "Desde el portapapeles" -#: ../src/widgets/pencil-toolbar.cpp:178 +#: ../src/widgets/pencil-toolbar.cpp:180 msgid "Bend from clipboard" msgstr "Doblar desde el portapapeles" -#: ../src/widgets/pencil-toolbar.cpp:179 +#: ../src/widgets/pencil-toolbar.cpp:181 msgid "Last applied" msgstr "Última aplicada" -#: ../src/widgets/pencil-toolbar.cpp:204 ../src/widgets/pencil-toolbar.cpp:205 +#: ../src/widgets/pencil-toolbar.cpp:206 ../src/widgets/pencil-toolbar.cpp:207 msgid "Shape:" msgstr "Forma:" -#: ../src/widgets/pencil-toolbar.cpp:204 +#: ../src/widgets/pencil-toolbar.cpp:206 msgid "Shape of new paths drawn by this tool" msgstr "Forma de los trayectos nuevos dibujados por esta herramienta" -#: ../src/widgets/pencil-toolbar.cpp:374 +#: ../src/widgets/pencil-toolbar.cpp:378 msgid "(many nodes, rough)" msgstr "(muchos nodos, bruto)" -#: ../src/widgets/pencil-toolbar.cpp:374 +#: ../src/widgets/pencil-toolbar.cpp:378 msgid "(few nodes, smooth)" msgstr "(pocos nodos, suave)" -#: ../src/widgets/pencil-toolbar.cpp:377 +#: ../src/widgets/pencil-toolbar.cpp:381 msgid "Smoothing: " msgstr "Suavizado: " -#: ../src/widgets/pencil-toolbar.cpp:378 +#: ../src/widgets/pencil-toolbar.cpp:382 msgid "How much smoothing (simplifying) is applied to the line" msgstr "Cuánto suavizado (simplificado) se aplica a la línea" -#: ../src/widgets/pencil-toolbar.cpp:399 +#: ../src/widgets/pencil-toolbar.cpp:403 msgid "" "Reset pencil parameters to defaults (use Inkscape Preferences > Tools to " "change defaults)" @@ -30649,86 +30654,122 @@ msgstr "" "Reiniciar los parámetros del lápiz a predeterminados (use «Preferencias > " "Herramientas» para cambiar los predeterminados)" -#: ../src/widgets/pencil-toolbar.cpp:409 ../src/widgets/pencil-toolbar.cpp:410 +#: ../src/widgets/pencil-toolbar.cpp:413 ../src/widgets/pencil-toolbar.cpp:414 msgid "LPE based interactive simplify" -msgstr "" +msgstr "Simplificación interactiva basada en LPE" -#: ../src/widgets/pencil-toolbar.cpp:420 ../src/widgets/pencil-toolbar.cpp:421 +#: ../src/widgets/pencil-toolbar.cpp:424 ../src/widgets/pencil-toolbar.cpp:425 msgid "LPE simplify flatten" -msgstr "" +msgstr "Aplanado simplificado LPE" -#: ../src/widgets/rect-toolbar.cpp:121 +#: ../src/widgets/rect-toolbar.cpp:125 msgid "Change rectangle" msgstr "Cambiar rectángulo" -#: ../src/widgets/rect-toolbar.cpp:313 +#: ../src/widgets/rect-toolbar.cpp:317 msgid "W:" msgstr "W:" -#: ../src/widgets/rect-toolbar.cpp:313 +#: ../src/widgets/rect-toolbar.cpp:317 msgid "Width of rectangle" msgstr "Ancho del rectángulo" -#: ../src/widgets/rect-toolbar.cpp:330 +#: ../src/widgets/rect-toolbar.cpp:334 msgid "H:" msgstr "H:" -#: ../src/widgets/rect-toolbar.cpp:330 +#: ../src/widgets/rect-toolbar.cpp:334 msgid "Height of rectangle" msgstr "Altura del rectángulo" -#: ../src/widgets/rect-toolbar.cpp:344 ../src/widgets/rect-toolbar.cpp:359 +#: ../src/widgets/rect-toolbar.cpp:348 ../src/widgets/rect-toolbar.cpp:363 msgid "not rounded" msgstr "no redondeado" -#: ../src/widgets/rect-toolbar.cpp:347 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Horizontal radius" msgstr "Radio horizontal" -#: ../src/widgets/rect-toolbar.cpp:347 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Rx:" msgstr "Rx:" -#: ../src/widgets/rect-toolbar.cpp:347 +#: ../src/widgets/rect-toolbar.cpp:351 msgid "Horizontal radius of rounded corners" msgstr "Radio horizontal de las esquinas redondeadas" -#: ../src/widgets/rect-toolbar.cpp:362 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Vertical radius" msgstr "Radio vertical" -#: ../src/widgets/rect-toolbar.cpp:362 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Ry:" msgstr "Ry:" -#: ../src/widgets/rect-toolbar.cpp:362 +#: ../src/widgets/rect-toolbar.cpp:366 msgid "Vertical radius of rounded corners" msgstr "Radio vertical de la esquinas redondeadas" -#: ../src/widgets/rect-toolbar.cpp:381 +#: ../src/widgets/rect-toolbar.cpp:385 msgid "Not rounded" msgstr "No redondeado" -#: ../src/widgets/rect-toolbar.cpp:382 +#: ../src/widgets/rect-toolbar.cpp:386 msgid "Make corners sharp" msgstr "Afilar las esquinas" -#: ../src/widgets/select-toolbar.cpp:259 +#: ../src/widgets/ruler.cpp:202 +msgid "The orientation of the ruler" +msgstr "Orientación de la regla" + +#: ../src/widgets/ruler.cpp:212 +msgid "Unit of the ruler" +msgstr "Unidad de la regla" + +#: ../src/widgets/ruler.cpp:219 +msgid "Lower" +msgstr "Inferior" + +#: ../src/widgets/ruler.cpp:220 +msgid "Lower limit of ruler" +msgstr "Límite inferior de la regla" + +#: ../src/widgets/ruler.cpp:229 +msgid "Upper" +msgstr "Superior" + +#: ../src/widgets/ruler.cpp:230 +msgid "Upper limit of ruler" +msgstr "Límite superior de la regla" + +#: ../src/widgets/ruler.cpp:240 +msgid "Position of mark on the ruler" +msgstr "Posición de la marca en la regla" + +#: ../src/widgets/ruler.cpp:249 +msgid "Max Size" +msgstr "Tamaño máx" + +#: ../src/widgets/ruler.cpp:250 +msgid "Maximum size of the ruler" +msgstr "Tamaño máximo de la regla" + +#: ../src/widgets/select-toolbar.cpp:262 msgid "Transform by toolbar" msgstr "Transformar por barra de herramientas" -#: ../src/widgets/select-toolbar.cpp:277 +#: ../src/widgets/select-toolbar.cpp:280 msgid "Now stroke width is scaled when objects are scaled." msgstr "" "Ahora el ancho del trazo se escala cuando se escala el objeto." -#: ../src/widgets/select-toolbar.cpp:279 +#: ../src/widgets/select-toolbar.cpp:282 msgid "Now stroke width is not scaled when objects are scaled." msgstr "" "Ahora el ancho del trazo no se escala cuando se escala el " "objeto." -#: ../src/widgets/select-toolbar.cpp:290 +#: ../src/widgets/select-toolbar.cpp:293 msgid "" "Now rounded rectangle corners are scaled when rectangles are " "scaled." @@ -30736,7 +30777,7 @@ msgstr "" "Ahora las esquinas redondeadas se escalan cuando se escala el " "rectángulo." -#: ../src/widgets/select-toolbar.cpp:292 +#: ../src/widgets/select-toolbar.cpp:295 msgid "" "Now rounded rectangle corners are not scaled when rectangles " "are scaled." @@ -30744,7 +30785,7 @@ msgstr "" "Ahora las esquinas redondeadas no se escalan cuando se escala " "el rectángulo." -#: ../src/widgets/select-toolbar.cpp:303 +#: ../src/widgets/select-toolbar.cpp:306 msgid "" "Now gradients are transformed along with their objects when " "those are transformed (moved, scaled, rotated, or skewed)." @@ -30752,7 +30793,7 @@ msgstr "" "Ahora los degradados se transforman junto con sus objetos " "cuando éstos se transforman (movimiento, escala, rotación o inclinación)." -#: ../src/widgets/select-toolbar.cpp:305 +#: ../src/widgets/select-toolbar.cpp:308 msgid "" "Now gradients remain fixed when objects are transformed " "(moved, scaled, rotated, or skewed)." @@ -30760,7 +30801,7 @@ msgstr "" "Ahora los degradados permanecen fijos cuando sus objetos se " "transforman (movimiento, escala, rotación o inclinación)." -#: ../src/widgets/select-toolbar.cpp:316 +#: ../src/widgets/select-toolbar.cpp:319 msgid "" "Now patterns are transformed along with their objects when " "those are transformed (moved, scaled, rotated, or skewed)." @@ -30768,7 +30809,7 @@ msgstr "" "Ahora los patrones se transforman junto con sus objetos cuando " "éstos se transforman (movimiento, escala, rotación o inclinación)." -#: ../src/widgets/select-toolbar.cpp:318 +#: ../src/widgets/select-toolbar.cpp:321 msgid "" "Now patterns remain fixed when objects are transformed (moved, " "scaled, rotated, or skewed)." @@ -30777,139 +30818,135 @@ msgstr "" "transforman (movimiento, escala, rotación o inclinación)." #. name -#: ../src/widgets/select-toolbar.cpp:434 +#: ../src/widgets/select-toolbar.cpp:441 msgctxt "Select toolbar" msgid "X position" msgstr "Posición X" #. label -#: ../src/widgets/select-toolbar.cpp:435 +#: ../src/widgets/select-toolbar.cpp:442 msgctxt "Select toolbar" msgid "X:" msgstr "X:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:436 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:443 msgctxt "Select toolbar" msgid "Horizontal coordinate of selection" msgstr "Coordenada horizontal de la selección" #. name -#: ../src/widgets/select-toolbar.cpp:453 +#: ../src/widgets/select-toolbar.cpp:460 msgctxt "Select toolbar" msgid "Y position" msgstr "Posición Y" #. label -#: ../src/widgets/select-toolbar.cpp:454 +#: ../src/widgets/select-toolbar.cpp:461 msgctxt "Select toolbar" msgid "Y:" msgstr "Y:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:455 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:462 msgctxt "Select toolbar" msgid "Vertical coordinate of selection" msgstr "Coordenada vertical de la selección" #. name -#: ../src/widgets/select-toolbar.cpp:472 +#: ../src/widgets/select-toolbar.cpp:479 msgctxt "Select toolbar" msgid "Width" msgstr "Ancho" #. label -#: ../src/widgets/select-toolbar.cpp:473 +#: ../src/widgets/select-toolbar.cpp:480 msgctxt "Select toolbar" msgid "W:" msgstr "W:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:474 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:481 msgctxt "Select toolbar" msgid "Width of selection" msgstr "Ancho de la selección" -#: ../src/widgets/select-toolbar.cpp:492 +#: ../src/widgets/select-toolbar.cpp:499 msgid "Lock width and height" msgstr "Bloquear anchura y altura" -#: ../src/widgets/select-toolbar.cpp:493 +#: ../src/widgets/select-toolbar.cpp:500 msgid "When locked, change both width and height by the same proportion" msgstr "" "Si se bloquea, se cambia tanto el alto como el ancho en la misma proporción" #. name -#: ../src/widgets/select-toolbar.cpp:504 +#: ../src/widgets/select-toolbar.cpp:511 msgctxt "Select toolbar" msgid "Height" msgstr "Altura" #. label -#: ../src/widgets/select-toolbar.cpp:505 +#: ../src/widgets/select-toolbar.cpp:512 msgctxt "Select toolbar" msgid "H:" msgstr "H:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:506 -#, fuzzy +#: ../src/widgets/select-toolbar.cpp:513 msgctxt "Select toolbar" msgid "Height of selection" msgstr "Altura de la selección" -#: ../src/widgets/select-toolbar.cpp:568 +#: ../src/widgets/select-toolbar.cpp:575 msgid "Scale rounded corners" msgstr "Escalar los ángulos redondeados" -#: ../src/widgets/select-toolbar.cpp:579 +#: ../src/widgets/select-toolbar.cpp:586 msgid "Move gradients" msgstr "Mover degradados" -#: ../src/widgets/select-toolbar.cpp:590 +#: ../src/widgets/select-toolbar.cpp:597 msgid "Move patterns" msgstr "Mover patrones" -#: ../src/widgets/sp-attribute-widget.cpp:270 +#: ../src/widgets/sp-attribute-widget.cpp:299 msgid "Set attribute" msgstr "Definir atributo" -#: ../src/widgets/sp-color-selector.cpp:39 +#: ../src/widgets/sp-color-selector.cpp:43 msgid "Unnamed" msgstr "Sin nombre" -#: ../src/widgets/sp-xmlview-attr-list.cpp:55 +#: ../src/widgets/sp-xmlview-attr-list.cpp:59 msgid "Value" msgstr "Valor" -#: ../src/widgets/sp-xmlview-content.cpp:134 +#: ../src/widgets/sp-xmlview-content.cpp:151 msgid "Type text in a text node" msgstr "Escriba texto en un nodo de texto" -#: ../src/widgets/spiral-toolbar.cpp:95 +#: ../src/widgets/spiral-toolbar.cpp:98 msgid "Change spiral" msgstr "Cambiar espiral" -#: ../src/widgets/spiral-toolbar.cpp:239 +#: ../src/widgets/spiral-toolbar.cpp:242 msgid "just a curve" msgstr "solo una curva" -#: ../src/widgets/spiral-toolbar.cpp:239 +#: ../src/widgets/spiral-toolbar.cpp:242 msgid "one full revolution" msgstr "una revolución completa" -#: ../src/widgets/spiral-toolbar.cpp:242 +#: ../src/widgets/spiral-toolbar.cpp:245 msgid "Number of turns" msgstr "Número de vueltas" -#: ../src/widgets/spiral-toolbar.cpp:242 +#: ../src/widgets/spiral-toolbar.cpp:245 msgid "Turns:" msgstr "Vueltas:" -#: ../src/widgets/spiral-toolbar.cpp:242 +#: ../src/widgets/spiral-toolbar.cpp:245 msgid "Number of revolutions" msgstr "Número de revoluciones" @@ -30917,68 +30954,68 @@ msgstr "Número de revoluciones" # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); # FIXME: implement averaging of all parameters for multiple selected # gtk_label_set_markup (GTK_LABEL(l), _("Average:")); -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "circle" msgstr "círculo" -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "edge is much denser" msgstr "borde es mucho más denso" -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "edge is denser" msgstr "borde es más denso" -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "even" msgstr "igual" -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "center is denser" msgstr "centro es más denso" -#: ../src/widgets/spiral-toolbar.cpp:253 +#: ../src/widgets/spiral-toolbar.cpp:256 msgid "center is much denser" msgstr "centro es mucho más denso" -#: ../src/widgets/spiral-toolbar.cpp:256 +#: ../src/widgets/spiral-toolbar.cpp:259 msgid "Divergence" msgstr "Divergencia" -#: ../src/widgets/spiral-toolbar.cpp:256 +#: ../src/widgets/spiral-toolbar.cpp:259 msgid "Divergence:" msgstr "Divergencia:" -#: ../src/widgets/spiral-toolbar.cpp:256 +#: ../src/widgets/spiral-toolbar.cpp:259 msgid "How much denser/sparser are outer revolutions; 1 = uniform" msgstr "" "Cuánto más densas/difusas son las revoluciones exteriores; 1 = uniforme" -#: ../src/widgets/spiral-toolbar.cpp:267 +#: ../src/widgets/spiral-toolbar.cpp:270 msgid "starts from center" msgstr "empieza en el centro" -#: ../src/widgets/spiral-toolbar.cpp:267 +#: ../src/widgets/spiral-toolbar.cpp:270 msgid "starts mid-way" msgstr "empieza en la mitad" -#: ../src/widgets/spiral-toolbar.cpp:267 +#: ../src/widgets/spiral-toolbar.cpp:270 msgid "starts near edge" msgstr "empieza cerca del borde" -#: ../src/widgets/spiral-toolbar.cpp:270 +#: ../src/widgets/spiral-toolbar.cpp:273 msgid "Inner radius" msgstr "Radio interior" -#: ../src/widgets/spiral-toolbar.cpp:270 +#: ../src/widgets/spiral-toolbar.cpp:273 msgid "Inner radius:" msgstr "Radio interior:" -#: ../src/widgets/spiral-toolbar.cpp:270 +#: ../src/widgets/spiral-toolbar.cpp:273 msgid "Radius of the innermost revolution (relative to the spiral size)" msgstr "Radio de la revolución más interior (relativa al tamaño de la espiral)" -#: ../src/widgets/spiral-toolbar.cpp:283 ../src/widgets/star-toolbar.cpp:563 +#: ../src/widgets/spiral-toolbar.cpp:286 ../src/widgets/star-toolbar.cpp:565 msgid "" "Reset shape parameters to defaults (use Inkscape Preferences > Tools to " "change defaults)" @@ -30997,12 +31034,12 @@ msgstr "(spray ancho)" #: ../src/widgets/spray-toolbar.cpp:297 msgid "The width of the spray area (relative to the visible canvas area)" -msgstr "El ancho del área de rociado (relativo al tamaño visible del lienzo)" +msgstr "El ancho del área de esparcido (relativo al tamaño visible del lienzo)" #: ../src/widgets/spray-toolbar.cpp:312 -#, fuzzy msgid "Use the pressure of the input device to alter the width of spray area" -msgstr "Usar la presión del dispositivo para alterar la anchura de la pluma" +msgstr "" +"Usar la presión del dispositivo para alterar la anchura del área de esparcido" #: ../src/widgets/spray-toolbar.cpp:323 msgid "(maximum mean)" @@ -31018,7 +31055,8 @@ msgstr "Foco:" #: ../src/widgets/spray-toolbar.cpp:326 msgid "0 to spray a spot; increase to enlarge the ring radius" -msgstr "0 para rociar un punto. Incremente para aumentar el radio del anillo." +msgstr "" +"0 para esparcir un punto. Incremente para aumentar el radio del anillo." #. Standard_deviation #: ../src/widgets/spray-toolbar.cpp:339 @@ -31041,7 +31079,7 @@ msgstr "Esparcir:" #: ../src/widgets/spray-toolbar.cpp:342 msgid "Increase to scatter sprayed objects" -msgstr "Incremente para dispersar los objetos rociados." +msgstr "Incremente para dispersar los objetos esparcidos." #: ../src/widgets/spray-toolbar.cpp:361 msgid "Spray copies of the initial selection" @@ -31060,14 +31098,12 @@ msgid "Spray objects in a single path" msgstr "Esparcir objetos en un trayecto simple" #: ../src/widgets/spray-toolbar.cpp:383 -#, fuzzy msgid "Delete sprayed items" -msgstr "Borrar parada de degradado" +msgstr "Borrar elementos esparcidos" #: ../src/widgets/spray-toolbar.cpp:384 -#, fuzzy msgid "Delete sprayed items from selection" -msgstr "Obtener curvas de la selección..." +msgstr "Borrar elementos esparcidos de la selección" #. Population #: ../src/widgets/spray-toolbar.cpp:408 @@ -31138,279 +31174,274 @@ msgstr "" "que el objeto original" #: ../src/widgets/spray-toolbar.cpp:477 -#, fuzzy msgid "Use the pressure of the input device to alter the scale of new items" -msgstr "Usar la presión del dispositivo para alterar la anchura de la pluma" +msgstr "" +"Usar la presión del dispositivo para alterar la escala de elementos nuevos" #: ../src/widgets/spray-toolbar.cpp:489 ../src/widgets/spray-toolbar.cpp:490 msgid "" "Pick color from the drawing. You can use clonetiler trace dialog for " "advanced effects. In clone mode original fill or stroke colors must be unset." msgstr "" +"Seleccione un color del dibujo. Puede usar el diálogo de trazado del " +"clonador de teselas para efectos avanzados. Es necesario retirar el relleno " +"y trazado originales en modo de clonado." #: ../src/widgets/spray-toolbar.cpp:502 ../src/widgets/spray-toolbar.cpp:503 msgid "Pick from center instead average area." -msgstr "" +msgstr "Seleccionar del centro en lugar de la media del área." #: ../src/widgets/spray-toolbar.cpp:515 ../src/widgets/spray-toolbar.cpp:516 msgid "Inverted pick value, retaining color in advanced trace mode" msgstr "" +"Invertir valor seleccionado, reteniendo el color en modo de trazado avanzado." #: ../src/widgets/spray-toolbar.cpp:528 ../src/widgets/spray-toolbar.cpp:529 -#, fuzzy msgid "Apply picked color to fill" -msgstr "Aplicar el último color seleccionado al relleno" +msgstr "Aplicar el color seleccionado al relleno" #: ../src/widgets/spray-toolbar.cpp:541 ../src/widgets/spray-toolbar.cpp:542 -#, fuzzy msgid "Apply picked color to stroke" -msgstr "Aplicar el último color seleccionado al trazo" +msgstr "Aplicar el color seleccionado al trazo" #: ../src/widgets/spray-toolbar.cpp:554 ../src/widgets/spray-toolbar.cpp:555 msgid "No overlap between colors" -msgstr "" +msgstr "Sin solapamiento entre colores" #: ../src/widgets/spray-toolbar.cpp:567 ../src/widgets/spray-toolbar.cpp:568 msgid "Apply over transparent areas" -msgstr "" +msgstr "Aplicar sobew áreas transparentes" #: ../src/widgets/spray-toolbar.cpp:580 ../src/widgets/spray-toolbar.cpp:581 msgid "Apply over no transparent areas" -msgstr "" +msgstr "Aplicar sobre áreas no transparentes" #: ../src/widgets/spray-toolbar.cpp:593 ../src/widgets/spray-toolbar.cpp:594 -#, fuzzy msgid "Prevent overlapping objects" -msgstr "Seleccione un objeto." +msgstr "Evitar objetos solapados" #: ../src/widgets/spray-toolbar.cpp:605 -#, fuzzy msgid "(minimum offset)" -msgstr "(fuerza mínima)" +msgstr "(desvío mínimo)" #: ../src/widgets/spray-toolbar.cpp:605 -#, fuzzy msgid "(maximum offset)" -msgstr "(fuerza máxima)" +msgstr "(desvío máximo)" #: ../src/widgets/spray-toolbar.cpp:608 -#, fuzzy msgid "Offset %" -msgstr "Desvío x" +msgstr "Desvío %" #: ../src/widgets/spray-toolbar.cpp:608 -#, fuzzy msgid "Offset %:" -msgstr "Desvío:" +msgstr "Desvío %:" #: ../src/widgets/spray-toolbar.cpp:609 msgid "Increase to segregate objects more (value in percent)" -msgstr "" +msgstr "Incrementar para separar más los objetos (valor en porcentaje):" -#: ../src/widgets/star-toolbar.cpp:101 +#: ../src/widgets/star-toolbar.cpp:103 msgid "Star: Change number of corners" msgstr "Estrella: Cambiar el número de esquinas" -#: ../src/widgets/star-toolbar.cpp:154 +#: ../src/widgets/star-toolbar.cpp:156 msgid "Star: Change spoke ratio" msgstr "Estrella: Cambiar el ratio de las puntas" -#: ../src/widgets/star-toolbar.cpp:199 +#: ../src/widgets/star-toolbar.cpp:201 msgid "Make polygon" msgstr "Crear polígono" -#: ../src/widgets/star-toolbar.cpp:199 +#: ../src/widgets/star-toolbar.cpp:201 msgid "Make star" msgstr "Crear estrella" -#: ../src/widgets/star-toolbar.cpp:238 +#: ../src/widgets/star-toolbar.cpp:240 msgid "Star: Change rounding" msgstr "Estrella: Cambiar redondeado" -#: ../src/widgets/star-toolbar.cpp:278 +#: ../src/widgets/star-toolbar.cpp:280 msgid "Star: Change randomization" msgstr "Estrella: Cambiar aleatorización" -#: ../src/widgets/star-toolbar.cpp:461 +#: ../src/widgets/star-toolbar.cpp:463 msgid "Regular polygon (with one handle) instead of a star" msgstr "Crear polígonos (con un tirador) en vez de estrellas" -#: ../src/widgets/star-toolbar.cpp:468 +#: ../src/widgets/star-toolbar.cpp:470 msgid "Star instead of a regular polygon (with one handle)" msgstr "Estrella en vez de polígono normal (con un tirador)" -#: ../src/widgets/star-toolbar.cpp:489 +#: ../src/widgets/star-toolbar.cpp:491 msgid "triangle/tri-star" msgstr "triángulo/estrella de tres puntas" -#: ../src/widgets/star-toolbar.cpp:489 +#: ../src/widgets/star-toolbar.cpp:491 msgid "square/quad-star" msgstr "caudrado/estrella de cuatro puntas" -#: ../src/widgets/star-toolbar.cpp:489 +#: ../src/widgets/star-toolbar.cpp:491 msgid "pentagon/five-pointed star" msgstr "pentágono/estrella de cinco puntas" -#: ../src/widgets/star-toolbar.cpp:489 +#: ../src/widgets/star-toolbar.cpp:491 msgid "hexagon/six-pointed star" msgstr "hexágono/estrella de seis puntas" -#: ../src/widgets/star-toolbar.cpp:492 +#: ../src/widgets/star-toolbar.cpp:494 msgid "Corners" msgstr "Esquinas:" -#: ../src/widgets/star-toolbar.cpp:492 +#: ../src/widgets/star-toolbar.cpp:494 msgid "Corners:" msgstr "Esquinas:" -#: ../src/widgets/star-toolbar.cpp:492 +#: ../src/widgets/star-toolbar.cpp:494 msgid "Number of corners of a polygon or star" msgstr "Número de esquinas de un polígono o estrella" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "thin-ray star" msgstr "estrella de rayos finos" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "pentagram" msgstr "pentagrama" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "hexagram" msgstr "hexagrama" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "heptagram" msgstr "heptagrama" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "octagram" msgstr "octagrama" -#: ../src/widgets/star-toolbar.cpp:505 +#: ../src/widgets/star-toolbar.cpp:507 msgid "regular polygon" msgstr "polígono normal" -#: ../src/widgets/star-toolbar.cpp:508 +#: ../src/widgets/star-toolbar.cpp:510 msgid "Spoke ratio" msgstr "Proporción del radio" -#: ../src/widgets/star-toolbar.cpp:508 +#: ../src/widgets/star-toolbar.cpp:510 msgid "Spoke ratio:" msgstr "longitud del radio:" #. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle. #. Base radius is the same for the closest handle. -#: ../src/widgets/star-toolbar.cpp:511 +#: ../src/widgets/star-toolbar.cpp:513 msgid "Base radius to tip radius ratio" msgstr "Relación entre el radio base y el radio de la punta" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "stretched" msgstr "estirado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "twisted" msgstr "torcido" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "slightly pinched" msgstr "ligeramente apretado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "NOT rounded" msgstr "NO redondeado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "slightly rounded" msgstr "ligeramente redondeado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "visibly rounded" msgstr "visiblemente redondeado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "well rounded" msgstr "muy redondeado" -#: ../src/widgets/star-toolbar.cpp:529 +#: ../src/widgets/star-toolbar.cpp:531 msgid "amply rounded" msgstr "ampliamente redondeado" -#: ../src/widgets/star-toolbar.cpp:529 ../src/widgets/star-toolbar.cpp:544 +#: ../src/widgets/star-toolbar.cpp:531 ../src/widgets/star-toolbar.cpp:546 msgid "blown up" msgstr "hinchado" -#: ../src/widgets/star-toolbar.cpp:532 +#: ../src/widgets/star-toolbar.cpp:534 msgid "Rounded:" msgstr "Redondez:" -#: ../src/widgets/star-toolbar.cpp:532 +#: ../src/widgets/star-toolbar.cpp:534 msgid "How much rounded are the corners (0 for sharp)" msgstr "Lo redondos que son las esquinas (0 para agudo)" -#: ../src/widgets/star-toolbar.cpp:544 +#: ../src/widgets/star-toolbar.cpp:546 msgid "NOT randomized" msgstr "NO aleatorio" -#: ../src/widgets/star-toolbar.cpp:544 +#: ../src/widgets/star-toolbar.cpp:546 msgid "slightly irregular" msgstr "ligeramente irregular" -#: ../src/widgets/star-toolbar.cpp:544 +#: ../src/widgets/star-toolbar.cpp:546 msgid "visibly randomized" msgstr "visiblemente aleatorio" -#: ../src/widgets/star-toolbar.cpp:544 +#: ../src/widgets/star-toolbar.cpp:546 msgid "strongly randomized" msgstr "muy aleatorio" -#: ../src/widgets/star-toolbar.cpp:547 +#: ../src/widgets/star-toolbar.cpp:549 msgid "Randomized" msgstr "Aleatorio" -#: ../src/widgets/star-toolbar.cpp:547 +#: ../src/widgets/star-toolbar.cpp:549 msgid "Randomized:" msgstr "Aleatorio:" -#: ../src/widgets/star-toolbar.cpp:547 +#: ../src/widgets/star-toolbar.cpp:549 msgid "Scatter randomly the corners and angles" msgstr "Esparcir las esquinas y ángulos aleatoriamente" -#: ../src/widgets/stroke-marker-selector.cpp:382 -#, fuzzy +#: ../src/widgets/stroke-marker-selector.cpp:394 msgctxt "Marker" msgid "None" msgstr "Ninguno" -#: ../src/widgets/stroke-style.cpp:176 +#: ../src/widgets/stroke-style.cpp:192 msgid "Stroke width" msgstr "Ancho de trazo" -#: ../src/widgets/stroke-style.cpp:178 +#: ../src/widgets/stroke-style.cpp:194 msgctxt "Stroke width" msgid "_Width:" msgstr "A_ncho:" #. Dash -#: ../src/widgets/stroke-style.cpp:204 +#: ../src/widgets/stroke-style.cpp:225 msgid "Dashes:" msgstr "Guiones:" #. Drop down marker selectors #. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes #. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. -#: ../src/widgets/stroke-style.cpp:224 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:251 msgid "Markers:" -msgstr "Marcadores" +msgstr "Marcadores:" -#: ../src/widgets/stroke-style.cpp:230 +#: ../src/widgets/stroke-style.cpp:257 msgid "Start Markers are drawn on the first node of a path or shape" msgstr "" "Las marcas de inicio se dibujan en el primer nodo de un trayecto o forma" -#: ../src/widgets/stroke-style.cpp:239 +#: ../src/widgets/stroke-style.cpp:266 msgid "" "Mid Markers are drawn on every node of a path or shape except the first and " "last nodes" @@ -31418,94 +31449,89 @@ msgstr "" "Las marcas medias se dibujan en cada nodo de un trayecto o forma excepto el " "primero y el último" -#: ../src/widgets/stroke-style.cpp:248 +#: ../src/widgets/stroke-style.cpp:275 msgid "End Markers are drawn on the last node of a path or shape" msgstr "Las marcas finales de sibujan en el último nodo de un trayecto o forma" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:273 +#: ../src/widgets/stroke-style.cpp:300 msgid "Round join" msgstr "Unión redonda" #. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:281 +#: ../src/widgets/stroke-style.cpp:308 msgid "Bevel join" msgstr "Unión biselada" #. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:289 +#: ../src/widgets/stroke-style.cpp:316 msgid "Miter join" msgstr "Unión de tipo inglete" #. Cap type #. TRANSLATORS: cap type specifies the shape for the ends of lines #. spw_label(t, _("_Cap:"), 0, i); -#: ../src/widgets/stroke-style.cpp:312 +#: ../src/widgets/stroke-style.cpp:353 msgid "Cap:" msgstr "Punta:" #. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point #. of the line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:323 +#: ../src/widgets/stroke-style.cpp:364 msgid "Butt cap" msgstr "Tope embutido" #. TRANSLATORS: Round cap: the line shape extends beyond the end point of the #. line; the ends of the line are rounded -#: ../src/widgets/stroke-style.cpp:330 +#: ../src/widgets/stroke-style.cpp:371 msgid "Round cap" msgstr "Tope redondo" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:337 +#: ../src/widgets/stroke-style.cpp:378 msgid "Square cap" msgstr "Tope cuadrado" -#: ../src/widgets/stroke-style.cpp:351 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:392 msgid "Fill, Stroke, Markers" -msgstr "Marcadores de estilo de trazo" +msgstr "Relleno, Borde, Marcadores" -#: ../src/widgets/stroke-style.cpp:355 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:396 msgid "Stroke, Fill, Markers" -msgstr "Marcadores de estilo de trazo" +msgstr "Borde, Relleno, Marcadores" -#: ../src/widgets/stroke-style.cpp:359 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:400 msgid "Fill, Markers, Stroke" -msgstr "Relleno y borde" +msgstr "Relleno, Marcadores, Borde" -#: ../src/widgets/stroke-style.cpp:367 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:408 msgid "Markers, Fill, Stroke" -msgstr "Relleno y borde" +msgstr "Marcadores, Relleno, Borde" -#: ../src/widgets/stroke-style.cpp:371 -#, fuzzy +#: ../src/widgets/stroke-style.cpp:412 msgid "Stroke, Markers, Fill" -msgstr "Marcadores de estilo de trazo" +msgstr "Borde, Marcadores, Relleno" -#: ../src/widgets/stroke-style.cpp:375 +#: ../src/widgets/stroke-style.cpp:416 msgid "Markers, Stroke, Fill" -msgstr "" +msgstr "Marcadores, Borde, Relleno" -#: ../src/widgets/stroke-style.cpp:495 +#: ../src/widgets/stroke-style.cpp:534 msgid "Set markers" msgstr "Fijar marcadores" -#: ../src/widgets/stroke-style.cpp:1058 ../src/widgets/stroke-style.cpp:1147 +#: ../src/widgets/stroke-style.cpp:1116 ../src/widgets/stroke-style.cpp:1205 msgid "Set stroke style" msgstr "Fijar estilo de trazo" -#: ../src/widgets/stroke-style.cpp:1252 +#: ../src/widgets/stroke-style.cpp:1309 msgid "Set marker color" msgstr "Fijar color de marca" @@ -31513,28 +31539,27 @@ msgstr "Fijar color de marca" msgid "Change swatch color" msgstr "Cambiar el color de la muestra" -#: ../src/widgets/text-toolbar.cpp:178 +#: ../src/widgets/text-toolbar.cpp:181 msgid "Text: Change font family" msgstr "Texto: Cambiar familia tipográfica" -#: ../src/widgets/text-toolbar.cpp:271 +#: ../src/widgets/text-toolbar.cpp:274 msgid "Text: Change font size" msgstr "Texto: Cambiar tamaño de tipografía" -#: ../src/widgets/text-toolbar.cpp:307 +#: ../src/widgets/text-toolbar.cpp:310 msgid "Text: Change font style" msgstr "Texto: Cambiar estilo tipográfico" -#: ../src/widgets/text-toolbar.cpp:342 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:345 msgid "Text: Unset line height." -msgstr "Texto: Cambiar altura de línea" +msgstr "Texto: Retirar altura de línea." -#: ../src/widgets/text-toolbar.cpp:419 +#: ../src/widgets/text-toolbar.cpp:422 msgid "Text: Change superscript or subscript" msgstr "Texto: Cambiar superscript o subscript" -#: ../src/widgets/text-toolbar.cpp:562 +#: ../src/widgets/text-toolbar.cpp:565 msgid "Text: Change alignment" msgstr "Texto: Cambiar alineación" @@ -31542,474 +31567,471 @@ msgstr "Texto: Cambiar alineación" msgid "Text: Change line-height" msgstr "Texto: Cambiar altura de línea" -#: ../src/widgets/text-toolbar.cpp:823 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:824 msgid "Text: Change line-height unit" -msgstr "Texto: Cambiar altura de línea" +msgstr "Texto: Cambiar unidad de altura de línea" -#: ../src/widgets/text-toolbar.cpp:872 +#: ../src/widgets/text-toolbar.cpp:873 msgid "Text: Change word-spacing" msgstr "Texto: Cambiar espaciado entre palabras" -#: ../src/widgets/text-toolbar.cpp:912 +#: ../src/widgets/text-toolbar.cpp:913 msgid "Text: Change letter-spacing" msgstr "Texto: Cambiar el espaciado entre letras" -#: ../src/widgets/text-toolbar.cpp:950 +#: ../src/widgets/text-toolbar.cpp:951 msgid "Text: Change dx (kern)" msgstr "Texto: Cambiar dx (interletraje)" -#: ../src/widgets/text-toolbar.cpp:984 +#: ../src/widgets/text-toolbar.cpp:985 msgid "Text: Change dy" msgstr "Texto: Cambiar dy" -#: ../src/widgets/text-toolbar.cpp:1019 +#: ../src/widgets/text-toolbar.cpp:1020 msgid "Text: Change rotate" msgstr "Texto: Cambiar rotación" -#: ../src/widgets/text-toolbar.cpp:1072 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1073 msgid "Text: Change writing mode" -msgstr "Texto: Cambiar orientación" +msgstr "Texto: Cambiar modo de escritura" -#: ../src/widgets/text-toolbar.cpp:1126 +#: ../src/widgets/text-toolbar.cpp:1127 msgid "Text: Change orientation" msgstr "Texto: Cambiar orientación" -#: ../src/widgets/text-toolbar.cpp:1654 +#: ../src/widgets/text-toolbar.cpp:1656 msgid "Font Family" msgstr "Familia tipográfica" -#: ../src/widgets/text-toolbar.cpp:1655 +#: ../src/widgets/text-toolbar.cpp:1657 msgid "Select Font Family (Alt-X to access)" msgstr "Seleccionar familia tipográfica (Alt-X para acceder)" #. Focus widget #. Enable entry completion -#: ../src/widgets/text-toolbar.cpp:1665 +#: ../src/widgets/text-toolbar.cpp:1667 msgid "Select all text with this font-family" msgstr "Seleccionar todos los textos con esta familia tipográfica" -#: ../src/widgets/text-toolbar.cpp:1669 +#: ../src/widgets/text-toolbar.cpp:1671 msgid "Font not found on system" msgstr "No se ha encontrado la tipografía en el sistema" -#: ../src/widgets/text-toolbar.cpp:1727 +#: ../src/widgets/text-toolbar.cpp:1748 msgid "Font Style" msgstr "Estilo tipográfico" -#: ../src/widgets/text-toolbar.cpp:1728 +#: ../src/widgets/text-toolbar.cpp:1749 msgid "Font style" msgstr "Estilo tipográfico" #. Name -#: ../src/widgets/text-toolbar.cpp:1745 +#: ../src/widgets/text-toolbar.cpp:1766 msgid "Toggle Superscript" msgstr "Conmutar superscript" #. Label -#: ../src/widgets/text-toolbar.cpp:1746 +#: ../src/widgets/text-toolbar.cpp:1767 msgid "Toggle superscript" msgstr "Conmutar superscript" #. Name -#: ../src/widgets/text-toolbar.cpp:1758 +#: ../src/widgets/text-toolbar.cpp:1779 msgid "Toggle Subscript" msgstr "Conmutar subscript" #. Label -#: ../src/widgets/text-toolbar.cpp:1759 +#: ../src/widgets/text-toolbar.cpp:1780 msgid "Toggle subscript" msgstr "Conmutar subscript" -#: ../src/widgets/text-toolbar.cpp:1800 +#: ../src/widgets/text-toolbar.cpp:1821 msgid "Justify" msgstr "Justificar" #. Name -#: ../src/widgets/text-toolbar.cpp:1807 +#: ../src/widgets/text-toolbar.cpp:1828 msgid "Alignment" msgstr "Alineación" #. Label -#: ../src/widgets/text-toolbar.cpp:1808 +#: ../src/widgets/text-toolbar.cpp:1829 msgid "Text alignment" msgstr "Alineación de texto" -#: ../src/widgets/text-toolbar.cpp:1842 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1856 +msgid "Horizontal" +msgstr "Horizontal" + +#: ../src/widgets/text-toolbar.cpp:1863 msgid "Vertical — RL" -msgstr "Vertical" +msgstr "Vertical — DI" -#: ../src/widgets/text-toolbar.cpp:1843 +#: ../src/widgets/text-toolbar.cpp:1864 msgid "Vertical text — lines: right to left" -msgstr "" +msgstr "Texto vertical — líneas: derecha a izquierda" -#: ../src/widgets/text-toolbar.cpp:1849 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1870 msgid "Vertical — LR" -msgstr "Vertical" +msgstr "Vertical — LR" -#: ../src/widgets/text-toolbar.cpp:1850 +#: ../src/widgets/text-toolbar.cpp:1871 msgid "Vertical text — lines: left to right" -msgstr "" +msgstr "Texto vertical — líneas: izquierda a derecha" #. Name -#: ../src/widgets/text-toolbar.cpp:1855 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1876 msgid "Writing mode" -msgstr "Modo de dibujo" +msgstr "Modo de escritura" #. Label -#: ../src/widgets/text-toolbar.cpp:1856 +#: ../src/widgets/text-toolbar.cpp:1877 msgid "Block progression" -msgstr "" +msgstr "Progresión en bloque" -#: ../src/widgets/text-toolbar.cpp:1885 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1906 msgid "Auto glyph orientation" -msgstr "Seguir orientación del trayecto" +msgstr "Orientación automática de glifo" -#: ../src/widgets/text-toolbar.cpp:1892 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1913 msgid "Upright" -msgstr "Más luminoso" +msgstr "Vertical" -#: ../src/widgets/text-toolbar.cpp:1893 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1914 msgid "Upright glyph orientation" -msgstr "Orientación del texto" +msgstr "Orientación de glifo vertical" -#: ../src/widgets/text-toolbar.cpp:1900 +#: ../src/widgets/text-toolbar.cpp:1921 msgid "Sideways" -msgstr "" +msgstr "Lateral" -#: ../src/widgets/text-toolbar.cpp:1901 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:1922 msgid "Sideways glyph orientation" -msgstr "Seguir orientación del trayecto" +msgstr "Orientación de glifo lateral" #. Name -#: ../src/widgets/text-toolbar.cpp:1907 +#: ../src/widgets/text-toolbar.cpp:1928 msgid "Text orientation" msgstr "Orientación del texto" #. Label -#: ../src/widgets/text-toolbar.cpp:1908 +#: ../src/widgets/text-toolbar.cpp:1929 msgid "Text (glyph) orientation in vertical text." -msgstr "" +msgstr "Orientación de texto (glifo) en texto vertical." #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1941 +#: ../src/widgets/text-toolbar.cpp:1962 msgid "Smaller spacing" msgstr "Espaciado inferior" -#: ../src/widgets/text-toolbar.cpp:1941 ../src/widgets/text-toolbar.cpp:1980 -#: ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:1962 ../src/widgets/text-toolbar.cpp:2001 +#: ../src/widgets/text-toolbar.cpp:2032 msgctxt "Text tool" msgid "Normal" msgstr "Normal" -#: ../src/widgets/text-toolbar.cpp:1941 +#: ../src/widgets/text-toolbar.cpp:1962 msgid "Larger spacing" msgstr "Espaciado superior" #. name -#: ../src/widgets/text-toolbar.cpp:1946 +#: ../src/widgets/text-toolbar.cpp:1967 msgid "Line Height" msgstr "Altura de línea" #. label -#: ../src/widgets/text-toolbar.cpp:1947 +#: ../src/widgets/text-toolbar.cpp:1968 msgid "Line:" msgstr "Línea:" #. short label -#: ../src/widgets/text-toolbar.cpp:1948 -#, fuzzy -msgid "Spacing between baselines" -msgstr "Espacio entre líneas (veces el tamaño de la fuente)" +#: ../src/widgets/text-toolbar.cpp:1969 +msgid "Spacing between baselines (times font size)" +msgstr "Espacio entre líneas base (veces tamaño de la fuente)" #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1980 ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:2001 ../src/widgets/text-toolbar.cpp:2032 msgid "Negative spacing" msgstr "Espaciado negativo" -#: ../src/widgets/text-toolbar.cpp:1980 ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:2001 ../src/widgets/text-toolbar.cpp:2032 msgid "Positive spacing" msgstr "Espaciado positivo" #. name -#: ../src/widgets/text-toolbar.cpp:1985 +#: ../src/widgets/text-toolbar.cpp:2006 msgid "Word spacing" msgstr "Espaciado entre palabras" #. label -#: ../src/widgets/text-toolbar.cpp:1986 +#: ../src/widgets/text-toolbar.cpp:2007 msgid "Word:" msgstr "Palabra:" #. short label -#: ../src/widgets/text-toolbar.cpp:1987 +#: ../src/widgets/text-toolbar.cpp:2008 msgid "Spacing between words (px)" msgstr "Espacio entre palabras (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2016 +#: ../src/widgets/text-toolbar.cpp:2037 msgid "Letter spacing" msgstr "Espaciado entre letras" #. label -#: ../src/widgets/text-toolbar.cpp:2017 +#: ../src/widgets/text-toolbar.cpp:2038 msgid "Letter:" msgstr "Letra:" #. short label -#: ../src/widgets/text-toolbar.cpp:2018 +#: ../src/widgets/text-toolbar.cpp:2039 msgid "Spacing between letters (px)" msgstr "Espacio entre letras (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2047 +#: ../src/widgets/text-toolbar.cpp:2068 msgid "Kerning" msgstr "Interletraje" #. label -#: ../src/widgets/text-toolbar.cpp:2048 +#: ../src/widgets/text-toolbar.cpp:2069 msgid "Kern:" msgstr "Interletraje:" #. short label -#: ../src/widgets/text-toolbar.cpp:2049 +#: ../src/widgets/text-toolbar.cpp:2070 msgid "Horizontal kerning (px)" msgstr "Interletraje horizontal (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2078 +#: ../src/widgets/text-toolbar.cpp:2099 msgid "Vertical Shift" msgstr "Desvío vertical" #. label -#: ../src/widgets/text-toolbar.cpp:2079 +#: ../src/widgets/text-toolbar.cpp:2100 msgid "Vert:" msgstr "Vert:" #. short label -#: ../src/widgets/text-toolbar.cpp:2080 +#: ../src/widgets/text-toolbar.cpp:2101 msgid "Vertical shift (px)" msgstr "Desvío vertical (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2109 +#: ../src/widgets/text-toolbar.cpp:2130 msgid "Letter rotation" msgstr "Rotación de letras" #. label -#: ../src/widgets/text-toolbar.cpp:2110 +#: ../src/widgets/text-toolbar.cpp:2131 msgid "Rot:" msgstr "Rot:" #. short label -#: ../src/widgets/text-toolbar.cpp:2111 +#: ../src/widgets/text-toolbar.cpp:2132 msgid "Character rotation (degrees)" msgstr "Rotación de caracteres (grados)" #. Name -#: ../src/widgets/text-toolbar.cpp:2135 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:2156 msgid "Unset line height" -msgstr "Alinear líneas a la derecha" +msgstr "Retirar altura de línea" #. Label -#: ../src/widgets/text-toolbar.cpp:2136 +#: ../src/widgets/text-toolbar.cpp:2157 msgid "If enabled, line height is set on part of selection. Click to unset." msgstr "" +"Si se marca, la altura de línea se aplica a paarte de la selección. Pulse " +"para retirar." #. Name -#: ../src/widgets/text-toolbar.cpp:2148 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:2169 msgid "Show outer style" -msgstr "Bisel exterior sombreado" +msgstr "Mostrar estilo exterior" #. Label -#: ../src/widgets/text-toolbar.cpp:2149 +#: ../src/widgets/text-toolbar.cpp:2170 msgid "" "Show style of outermost text element. The 'font-size' and 'line-height' " "values of the outermost text element determine the minimum line spacing in " "the block." msgstr "" +"Mostrar estilo del elemento de texto más externo. Los valores 'font'size' y " +"'line-height' del elemento de texto más externo determina el espaciado " +"mínimo de línea en el bloque." -#: ../src/widgets/toolbox.cpp:180 +#: ../src/widgets/toolbox.cpp:186 msgid "Color/opacity used for color tweaking" msgstr "Color/opacidad usado para el retoque de color" -#: ../src/widgets/toolbox.cpp:188 +#: ../src/widgets/toolbox.cpp:194 msgid "Style of new stars" msgstr "Estilo de estrellas nuevas" -#: ../src/widgets/toolbox.cpp:190 +#: ../src/widgets/toolbox.cpp:196 msgid "Style of new rectangles" msgstr "Estilo de rectángulos nuevos" -#: ../src/widgets/toolbox.cpp:192 +#: ../src/widgets/toolbox.cpp:198 msgid "Style of new 3D boxes" msgstr "Estilo de cajas 3D nuevas" -#: ../src/widgets/toolbox.cpp:194 +#: ../src/widgets/toolbox.cpp:200 msgid "Style of new ellipses" msgstr "Estilo de elipses nuevas" -#: ../src/widgets/toolbox.cpp:196 +#: ../src/widgets/toolbox.cpp:202 msgid "Style of new spirals" msgstr "Estilo de espirales nuevas" -#: ../src/widgets/toolbox.cpp:198 +#: ../src/widgets/toolbox.cpp:204 msgid "Style of new paths created by Pencil" msgstr "Estilo de trazados nuevos creados por el lápiz" -#: ../src/widgets/toolbox.cpp:200 +#: ../src/widgets/toolbox.cpp:206 msgid "Style of new paths created by Pen" msgstr "Estilo de trazados nuevos creados por la pluma" -#: ../src/widgets/toolbox.cpp:202 +#: ../src/widgets/toolbox.cpp:208 msgid "Style of new calligraphic strokes" msgstr "Estilo de trazos caligráficos nuevos" -#: ../src/widgets/toolbox.cpp:204 ../src/widgets/toolbox.cpp:206 +#: ../src/widgets/toolbox.cpp:210 ../src/widgets/toolbox.cpp:212 msgid "TBD" msgstr "TBD" -#: ../src/widgets/toolbox.cpp:219 +#: ../src/widgets/toolbox.cpp:226 msgid "Style of Paint Bucket fill objects" msgstr "Estilo para el cubo de pintura" -#: ../src/widgets/toolbox.cpp:1721 +#: ../src/widgets/toolbox.cpp:1758 msgid "Bounding box" msgstr "Caja de contorno" -#: ../src/widgets/toolbox.cpp:1721 +#: ../src/widgets/toolbox.cpp:1758 msgid "Snap bounding boxes" msgstr "Ajustar cajas de contorno" -#: ../src/widgets/toolbox.cpp:1730 +#: ../src/widgets/toolbox.cpp:1767 msgid "Bounding box edges" msgstr "Bordes de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1730 +#: ../src/widgets/toolbox.cpp:1767 msgid "Snap to edges of a bounding box" msgstr "Ajustar a bordes de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1739 +#: ../src/widgets/toolbox.cpp:1776 msgid "Bounding box corners" msgstr "Esquinas de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1739 +#: ../src/widgets/toolbox.cpp:1776 msgid "Snap bounding box corners" msgstr "Ajustar esquinas de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1748 +#: ../src/widgets/toolbox.cpp:1785 msgid "BBox Edge Midpoints" msgstr "Punto medio del borde de la caja de contorno" -#: ../src/widgets/toolbox.cpp:1748 +#: ../src/widgets/toolbox.cpp:1785 msgid "Snap midpoints of bounding box edges" msgstr "Ajustar a los puntos medios de los bordes de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1758 +#: ../src/widgets/toolbox.cpp:1795 msgid "BBox Centers" msgstr "Centros de cajas de contorno" -#: ../src/widgets/toolbox.cpp:1758 +#: ../src/widgets/toolbox.cpp:1795 msgid "Snapping centers of bounding boxes" msgstr "Ajustar centros de las cajas de contorno" -#: ../src/widgets/toolbox.cpp:1767 +#: ../src/widgets/toolbox.cpp:1804 msgid "Snap nodes, paths, and handles" msgstr "Ajustar nodos, trayectos y tiradores" -#: ../src/widgets/toolbox.cpp:1775 +#: ../src/widgets/toolbox.cpp:1812 msgid "Snap to paths" msgstr "Ajustar a trayectos" -#: ../src/widgets/toolbox.cpp:1784 +#: ../src/widgets/toolbox.cpp:1821 msgid "Path intersections" msgstr "Intersecciones de trayectos" -#: ../src/widgets/toolbox.cpp:1784 +#: ../src/widgets/toolbox.cpp:1821 msgid "Snap to path intersections" msgstr "Ajustar a las intersecciones de trayectos" -#: ../src/widgets/toolbox.cpp:1793 +#: ../src/widgets/toolbox.cpp:1830 msgid "To nodes" msgstr "A nodos" -#: ../src/widgets/toolbox.cpp:1793 +#: ../src/widgets/toolbox.cpp:1830 msgid "Snap cusp nodes, incl. rectangle corners" msgstr "Ajustar vértices de nodos, incl. esquinas de rectángulos" -#: ../src/widgets/toolbox.cpp:1802 +#: ../src/widgets/toolbox.cpp:1839 msgid "Smooth nodes" msgstr "Nodos suaves" -#: ../src/widgets/toolbox.cpp:1802 +#: ../src/widgets/toolbox.cpp:1839 msgid "Snap smooth nodes, incl. quadrant points of ellipses" msgstr "Ajustar nodos suaves, incl. puntos cuadrantes de elipses" -#: ../src/widgets/toolbox.cpp:1811 +#: ../src/widgets/toolbox.cpp:1848 msgid "Line Midpoints" msgstr "Puntos medios de línea" -#: ../src/widgets/toolbox.cpp:1811 +#: ../src/widgets/toolbox.cpp:1848 msgid "Snap midpoints of line segments" msgstr "Ajustar puntos medios de segmentos de línea" -#: ../src/widgets/toolbox.cpp:1820 +#: ../src/widgets/toolbox.cpp:1857 msgid "Others" msgstr "Otros" -#: ../src/widgets/toolbox.cpp:1820 +#: ../src/widgets/toolbox.cpp:1857 msgid "Snap other points (centers, guide origins, gradient handles, etc.)" msgstr "" "Ajustar otros puntos (centros, orígenes de guía, tiradores de degradados, " "etc.)" -#: ../src/widgets/toolbox.cpp:1828 +#: ../src/widgets/toolbox.cpp:1865 msgid "Object Centers" msgstr "Centros de los objetos" -#: ../src/widgets/toolbox.cpp:1828 +#: ../src/widgets/toolbox.cpp:1865 msgid "Snap centers of objects" msgstr "Ajustar centros de objetos" -#: ../src/widgets/toolbox.cpp:1837 +#: ../src/widgets/toolbox.cpp:1874 msgid "Rotation Centers" msgstr "Centros de rotación" -#: ../src/widgets/toolbox.cpp:1837 +#: ../src/widgets/toolbox.cpp:1874 msgid "Snap an item's rotation center" msgstr "Ajustar el centro de rotación de un elemento" -#: ../src/widgets/toolbox.cpp:1846 +#: ../src/widgets/toolbox.cpp:1883 msgid "Text baseline" msgstr "Línea base de texto" -#: ../src/widgets/toolbox.cpp:1846 +#: ../src/widgets/toolbox.cpp:1883 msgid "Snap text anchors and baselines" msgstr "Ajustar anclas de texto y líneas base" -#: ../src/widgets/toolbox.cpp:1856 +#: ../src/widgets/toolbox.cpp:1893 msgid "Page border" msgstr "Borde del papel" -#: ../src/widgets/toolbox.cpp:1856 +#: ../src/widgets/toolbox.cpp:1893 msgid "Snap to the page border" msgstr "Ajustar al borde del papel" -#: ../src/widgets/toolbox.cpp:1865 +#: ../src/widgets/toolbox.cpp:1902 msgid "Snap to grids" msgstr "Ajustar a rejillas" -#: ../src/widgets/toolbox.cpp:1874 +#: ../src/widgets/toolbox.cpp:1911 msgid "Snap guides" msgstr "Guías de ajuste" @@ -32162,7 +32184,6 @@ msgstr "En modo color, actuar sobre el tono del objeto" #. TRANSLATORS: "H" here stands for hue #: ../src/widgets/tweak-toolbar.cpp:291 -#, fuzzy msgctxt "Hue" msgid "H" msgstr "T" @@ -32173,7 +32194,6 @@ msgstr "En modo color, actuar sobre la saturación del objeto" #. TRANSLATORS: "S" here stands for Saturation #: ../src/widgets/tweak-toolbar.cpp:307 -#, fuzzy msgctxt "Saturation" msgid "S" msgstr "S" @@ -32184,10 +32204,9 @@ msgstr "En modo color, actuar sobre la luminancia del objeto" #. TRANSLATORS: "L" here stands for Lightness #: ../src/widgets/tweak-toolbar.cpp:323 -#, fuzzy msgctxt "Lightness" msgid "L" -msgstr "C" +msgstr "L" #: ../src/widgets/tweak-toolbar.cpp:335 msgid "In color mode, act on objects' opacity" @@ -32195,7 +32214,6 @@ msgstr "En modo color, actuar sobre la opacidad del objeto" #. TRANSLATORS: "O" here stands for Opacity #: ../src/widgets/tweak-toolbar.cpp:339 -#, fuzzy msgctxt "Opacity" msgid "O" msgstr "O" @@ -32233,7 +32251,7 @@ msgstr "" #: ../share/extensions/convert2dashes.py:56 msgid "Total number of objects not converted: {}\n" -msgstr "" +msgstr "Cantidad de objetos no convertidos: {}\n" #: ../share/extensions/dimension.py:108 msgid "Please select an object." @@ -32244,41 +32262,41 @@ msgid "Unable to process this object. Try changing it into a path first." msgstr "" "No se puede procesar este objeto. Intente convertirlo a trayecto primero." -#: ../share/extensions/draw_from_triangle.py:179 -#, fuzzy -msgid "Side Length 'a' (" -msgstr "Longitud del lado «a» (px):" - #: ../share/extensions/draw_from_triangle.py:180 -#, fuzzy -msgid "Side Length 'b' (" -msgstr "Longitud del lado «b» (px):" +#, python-brace-format +msgid "Side Length 'a' ({0}): {1}" +msgstr "Longitud del lado «a» ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:181 -#, fuzzy -msgid "Side Length 'c' (" -msgstr "Longitud del lado «c» (px):" +#, python-brace-format +msgid "Side Length 'b' ({0}): {1}" +msgstr "Longitud del lado «b» ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:182 -msgid "Angle 'A' (radians): " -msgstr "Ángulo «A» (radianes):" +#, python-brace-format +msgid "Side Length 'c' ({0}): {1}" +msgstr "Longitud del lado «c» ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:183 -msgid "Angle 'B' (radians): " -msgstr "Ángulo «B» (radianes):" +msgid "Angle 'A' (radians): {}" +msgstr "Ángulo «A» (radianes): {}" #: ../share/extensions/draw_from_triangle.py:184 -msgid "Angle 'C' (radians): " -msgstr "Ángulo «C» (radianes):" +msgid "Angle 'B' (radians): {}" +msgstr "Ángulo «B» (radianes): {}" #: ../share/extensions/draw_from_triangle.py:185 -msgid "Semiperimeter (px): " -msgstr "Semiperímetro (px): " +msgid "Angle 'C' (radians): {}" +msgstr "Ángulo «C» (radianes): {}" #: ../share/extensions/draw_from_triangle.py:186 -#, fuzzy -msgid "Area (" -msgstr "Área" +msgid "Semiperimeter (px): {}" +msgstr "Semiperímetro (px): {}" + +#: ../share/extensions/draw_from_triangle.py:187 +#, python-brace-format +msgid "Area ({0}^2): {1}" +msgstr "Área ({0}^2): {1}" #: ../share/extensions/dxf_input.py:530 #, python-format @@ -32286,8 +32304,10 @@ msgid "" "%d ENTITIES of type POLYLINE encountered and ignored. Please try to convert " "to Release 13 format using QCad." msgstr "" +"Encontradas e ignoradas %d ENTIDADES de tipo POLYLINE. Intente convertir al " +"formato de Release 13 mediante QCad." -#: ../share/extensions/dxf_outlines.py:47 +#: ../share/extensions/dxf_outlines.py:49 msgid "" "Failed to import the numpy or numpy.linalg modules. These modules are " "required by this extension. Please install them and try again." @@ -32295,16 +32315,18 @@ msgstr "" "No se ha podido cargar el módulo numpy o numpy.linalg. Esta extensión " "necesita estos módulos. Vuelva a intentarlo después de instalarlos." -#: ../share/extensions/dxf_outlines.py:313 +#: ../share/extensions/dxf_outlines.py:315 msgid "" "Error: Field 'Layer match name' must be filled when using 'By name match' " "option" msgstr "" +"Error: El campo 'Nombre de capa coincidente' debe estar rellenado para usar " +"la opción 'Por coincidencia de nombre'" -#: ../share/extensions/dxf_outlines.py:354 -#, fuzzy, python-format +#: ../share/extensions/dxf_outlines.py:357 +#, python-format msgid "Warning: Layer '%s' not found!" -msgstr "No se ha encontrado la capa.\n" +msgstr "ADVERTENCIA: No se ha encontrado la capa «%s»." #: ../share/extensions/embedimage.py:83 msgid "" @@ -32345,24 +32367,23 @@ msgstr "Imagen extraída a: %s" msgid "Unable to find image data." msgstr "No se han podido encontrar los datos de la imagen." -#: ../share/extensions/extrude.py:41 -#, fuzzy +#: ../share/extensions/extrude.py:42 msgid "Need at least 2 paths selected" -msgstr "Seleccionar todos los trayectos si no hay nada seleccionado" +msgstr "Debe seleccionar al menos 2 trayectos" #: ../share/extensions/funcplot.py:46 -#, fuzzy msgid "" "x-interval cannot be zero. Please modify 'Start X value' or 'End X value'" -msgstr "El intervalo-x no puede ser cero. Modifique «Inicio X» o «Fin X»" +msgstr "" +"El intervalo-x no puede ser cero. Modifique «Valor inicio X» o «Valor fin X»" #: ../share/extensions/funcplot.py:58 -#, fuzzy msgid "" "y-interval cannot be zero. Please modify 'Y value of rectangle's top' or 'Y " "value of rectangle's bottom'" msgstr "" -"El intervalo-y no puede ser cero. Modifique «Y superior» o «Y inferior»" +"El intervalo-y no puede ser cero. Modifique «Valor de Y superior» o «valor " +"de Y inferior»" #: ../share/extensions/funcplot.py:313 msgid "Please select a rectangle" @@ -32379,7 +32400,6 @@ msgstr "" "disponibles." #: ../share/extensions/gcodetools.py:3322 -#, fuzzy msgid "Nothing is selected. Please select something." msgstr "No hay nada seleccionado. Seleccione algo." @@ -32516,7 +32536,6 @@ msgstr "" "(Ctrl+Mayús+G) y hacer «Objeto a trayecto» (Ctrl+Mayús+C)." #: ../share/extensions/gcodetools.py:4665 -#, fuzzy msgid "" "Nothing is selected. Please select something to convert to drill point " "(dxfpoint) or clear point sign." @@ -32642,21 +32661,20 @@ msgid "" "Failed to import the subprocess module. Please report this as a bug at: " "https://bugs.launchpad.net/inkscape." msgstr "" +"Ha ocurrido un error al importar el módulo de subprocesos. Informe de esta " +"errata en: https://bugs.launchpad.net/inkscape." #: ../share/extensions/generate_voronoi.py:34 -#, fuzzy msgid "Python version is: " -msgstr "Conversión a guías" +msgstr "La versión de Python es: " #: ../share/extensions/generate_voronoi.py:92 -#, fuzzy msgid "Please select an object" -msgstr "Seleccione un objeto." +msgstr "Seleccione un objeto" #: ../share/extensions/gimp_xcf.py:37 -#, fuzzy msgid "Inkscape must be installed and set in your path variable." -msgstr "Gimp debe estar instalado y en su variable PATH." +msgstr "Inkscape debe estar instalado y en su variable PATH." #: ../share/extensions/gimp_xcf.py:41 msgid "Gimp must be installed and set in your path variable." @@ -32675,38 +32693,36 @@ msgid "The sliced bitmaps have been saved as:" msgstr "Los mapas de bits recortados se han guardado como:" #: ../share/extensions/hpgl_decoder.py:42 -#, fuzzy msgid "Movements" -msgstr "Mover degradados" +msgstr "Movimientos" #: ../share/extensions/hpgl_decoder.py:43 -#, fuzzy msgid "Pen " -msgstr "Masa de la pluma:" +msgstr "Pluma " #. issue error if no hpgl data found -#: ../share/extensions/hpgl_input.py:56 -#, fuzzy +#: ../share/extensions/hpgl_input.py:58 msgid "No HPGL data found." -msgstr "No redondeado" +msgstr "No se han encontrado datos HPGL." -#: ../share/extensions/hpgl_input.py:64 +#: ../share/extensions/hpgl_input.py:66 msgid "" "The HPGL data contained unknown (unsupported) commands, there is a " "possibility that the drawing is missing some content." msgstr "" +"Los datos HPGL contenían comandos desconocidos (no soportados), podría " +"ocurrir que falte algún contenido en el dibujo." #. issue error if no paths found -#: ../share/extensions/hpgl_output.py:57 -#, fuzzy +#: ../share/extensions/hpgl_output.py:56 msgid "" "No paths where found. Please convert all objects you want to save into paths." msgstr "" -"No hay objetos seleccionados. Seleccione el objeto al que quere asignar una " -"vista y pulse Aplicar.\n" +"No se han encontrado trazos. Convierta en trazos a todos los objetos que " +"desee guardar." #: ../share/extensions/inkex.py:116 -#, fuzzy, python-format +#, python-format msgid "" "The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore " "this extension.Please download and install the latest version from http://" @@ -32725,18 +32741,14 @@ msgstr "" "%s" #: ../share/extensions/inkex.py:184 -#, fuzzy, python-format +#, python-format msgid "Unable to open specified file: %s" -msgstr "" -"No se ha podido escribir en el archivo indicado.\n" -"%s" +msgstr "No se ha podido abrir el archivo indicado: %s" #: ../share/extensions/inkex.py:193 -#, fuzzy, python-format +#, python-format msgid "Unable to open object member file: %s" -msgstr "" -"No se ha podido escribir en el archivo indicado.\n" -"%s" +msgstr "No se ha podido abrir el archivo de miembros de objeto: %s" #: ../share/extensions/inkex.py:299 #, python-format @@ -32745,7 +32757,7 @@ msgstr "No hay nodo coincidente para la expresión %s" #: ../share/extensions/inkex.py:358 msgid "SVG Width not set correctly! Assuming width = 100" -msgstr "" +msgstr "No se ha fijado correctamente en ancho SVG. Se asume anchura = 100" #: ../share/extensions/interp_att_g.py:175 msgid "There is no selection to interpolate" @@ -32968,24 +32980,22 @@ msgstr "No se ha encontrado ningún atributo de estilo para el id %s" msgid "unable to locate marker: %s" msgstr "no se puede encontrar el marcador: %s" -#: ../share/extensions/measure.py:58 -#, fuzzy +#: ../share/extensions/measure.py:61 msgid "" "Failed to import the numpy modules. These modules are required by this " "extension. Please install them and try again. On a Debian-like system this " "can be done with the command, sudo apt-get install python-numpy." msgstr "" -"No se ha podido importar el módulo numpy o numpy.linalg. Esta extensión " -"necesita estos módulos. Vuelva a intentarlo después de instalarlos. En un " -"sistema de tipo Debian puede hacerlo con el comando «sudo apt-get install " -"python-numpy»." +"No se han podido importar los módulos numpy. Esta extensión necesita estos " +"módulos. Vuelva a intentarlo después de instalarlos. En un sistema de tipo " +"Debian puede hacerlo con el comando «sudo apt-get install python-numpy»." -#: ../share/extensions/measure.py:120 +#: ../share/extensions/measure.py:123 msgid "Area is zero, cannot calculate Center of Mass" -msgstr "" +msgstr "Área es cero, no se puede calcular el Centro de masa" #: ../share/extensions/pathalongpath.py:207 -#: ../share/extensions/pathscatter.py:226 ../share/extensions/perspective.py:50 +#: ../share/extensions/pathscatter.py:226 ../share/extensions/perspective.py:52 msgid "This extension requires two selected paths." msgstr "Esta extensión necesita dos trayectos seleccionados." @@ -33011,7 +33021,7 @@ msgstr "" msgid "Please first convert objects to paths! (Got [%s].)" msgstr "Convierta primero los objetos a trayectos. Hay [%s]." -#: ../share/extensions/perspective.py:42 +#: ../share/extensions/perspective.py:44 msgid "" "Failed to import the numpy or numpy.linalg modules. These modules are " "required by this extension. Please install them and try again. On a Debian-" @@ -33023,7 +33033,7 @@ msgstr "" "sistema de tipo Debian puede hacerlo con el comando «sudo apt-get install " "python-numpy»." -#: ../share/extensions/perspective.py:58 ../share/extensions/summersnight.py:49 +#: ../share/extensions/perspective.py:60 ../share/extensions/summersnight.py:49 #, python-format msgid "" "The first selected object is of type '%s'.\n" @@ -33032,14 +33042,14 @@ msgstr "" "El primer objeto seleccionado es de tipo «%s».\n" "Intente utilizar la opción «Trayecto -> Objeto a trayecto»." -#: ../share/extensions/perspective.py:65 ../share/extensions/summersnight.py:57 +#: ../share/extensions/perspective.py:67 ../share/extensions/summersnight.py:57 msgid "" "This extension requires that the second selected path be four nodes long." msgstr "" "Esta extensión necesita que el segundo trayecto seleccionado sea de cuatro " "nodos." -#: ../share/extensions/perspective.py:91 ../share/extensions/summersnight.py:90 +#: ../share/extensions/perspective.py:93 ../share/extensions/summersnight.py:90 msgid "" "The second selected object is a group, not a path.\n" "Try using the procedure Object->Ungroup." @@ -33047,7 +33057,7 @@ msgstr "" "El segundo objeto seleccionado es un grupo, no un trayecto.\n" "Intente utilizar la opción «Objeto -> Desagrupar»" -#: ../share/extensions/perspective.py:93 ../share/extensions/summersnight.py:92 +#: ../share/extensions/perspective.py:95 ../share/extensions/summersnight.py:92 msgid "" "The second selected object is not a path.\n" "Try using the procedure Path->Object to Path." @@ -33055,7 +33065,7 @@ msgstr "" "El segundo objeto seleccionado no es un trayecto.\n" "Intente utilizar la opción «Trayecto -> Objeto a trayecto»" -#: ../share/extensions/perspective.py:96 ../share/extensions/summersnight.py:95 +#: ../share/extensions/perspective.py:98 ../share/extensions/summersnight.py:95 msgid "" "The first selected object is not a path.\n" "Try using the procedure Path->Object to Path." @@ -33068,37 +33078,44 @@ msgstr "" msgid "" "No paths where found. Please convert all objects you want to plot into paths." msgstr "" +"No se han encontrado trayectos. Convierta en trayecto todos los objetos que " +"desea plotear." #: ../share/extensions/plotter.py:146 msgid "pySerial is not installed. Please follow these steps:" -msgstr "" +msgstr "No está instalado pySerial. Siga estos pasos:" #: ../share/extensions/plotter.py:147 msgid "1. Download and extract (unzip) this file to your local harddisk:" -msgstr "" +msgstr "1. Descargue y extraiga (unzip) este archivo a su disco duro:" #: ../share/extensions/plotter.py:149 msgid "" "2. Copy the \"serial\" folder (Can be found inside the just extracted folder)" msgstr "" +"2. Copie la carpeta «serial» (se encuentra dentro de la carpeta extraída)" #: ../share/extensions/plotter.py:150 msgid "" " into the following Inkscape folder: C:\\[Program files]\\inkscape\\python" "\\Lib\\" msgstr "" +" a la siguiente carpeta de Inkscape: C:\\[Archivos de programa]\\inkscape" +"\\python\\Lib\\" #: ../share/extensions/plotter.py:151 msgid "3. Close and restart Inkscape." -msgstr "" +msgstr "3. Cierre y reinicie Inkscape." #: ../share/extensions/plotter.py:200 msgid "" "Could not open port. Please check that your plotter is running, connected " "and the settings are correct." msgstr "" +"No se ha podido abrir el puerto. Compruebe que el plóter esté encendido y " +"que los ajustes son correctos." -#: ../share/extensions/polyhedron_3d.py:64 +#: ../share/extensions/polyhedron_3d.py:67 msgid "" "Failed to import the numpy module. This module is required by this " "extension. Please install it and try again. On a Debian-like system this " @@ -33108,28 +33125,28 @@ msgstr "" "módulo. Vuelva a intentarlo después de instalarlo. En un sistema de tipo " "Debian puede hacerlo con el comando «sudo apt-get install python-numpy»." -#: ../share/extensions/polyhedron_3d.py:335 +#: ../share/extensions/polyhedron_3d.py:338 msgid "No face data found in specified file." msgstr "No se han encontrado datos de caras en el archivo indicado." -#: ../share/extensions/polyhedron_3d.py:336 +#: ../share/extensions/polyhedron_3d.py:339 msgid "Try selecting \"Edge Specified\" in the Model File tab.\n" msgstr "" "Intente seleccionar «Especificado por borde» en la pestaña «Archivo de " "modelo».\n" -#: ../share/extensions/polyhedron_3d.py:342 +#: ../share/extensions/polyhedron_3d.py:345 msgid "No edge data found in specified file." msgstr "No se han encontrado datos de bordes en el archivo indicado." -#: ../share/extensions/polyhedron_3d.py:343 +#: ../share/extensions/polyhedron_3d.py:346 msgid "Try selecting \"Face Specified\" in the Model File tab.\n" msgstr "" "Intente seleccionar «Especificado por cara» en la pestaña «Archivo de " "modelo».\n" #. we cannot generate a list of faces from the edges without a lot of computation -#: ../share/extensions/polyhedron_3d.py:522 +#: ../share/extensions/polyhedron_3d.py:525 msgid "" "Face Data Not Found. Ensure file contains face data, and check the file is " "imported as \"Face-Specified\" under the \"Model File\" tab.\n" @@ -33138,18 +33155,17 @@ msgstr "" "caras y compruebe que el archivo se importa como «Face-Specified» en la " "pestaña «Archivo de modelo».\n" -#: ../share/extensions/polyhedron_3d.py:524 +#: ../share/extensions/polyhedron_3d.py:527 msgid "Internal Error. No view type selected\n" msgstr "Error interno. No se ha seleccionado un tipo de vista\n" -#: ../share/extensions/print_win32_vector.py:39 +#: ../share/extensions/print_win32_vector.py:40 msgid "sorry, this will run only on Windows, exiting..." -msgstr "" +msgstr "Disculpas, esto sólo funciona en Windows, cerrando..." -#: ../share/extensions/print_win32_vector.py:177 -#, fuzzy +#: ../share/extensions/print_win32_vector.py:178 msgid "Failed to open default printer" -msgstr "Error al fijar CairoRenderContext" +msgstr "No se ha podido abrir la impresora predeterminada" #: ../share/extensions/render_barcode_datamatrix.py:201 msgid "Unrecognised DataMatrix size" @@ -33167,7 +33183,6 @@ msgstr "Introduzca una cadena de entrada" #. abort if converting blank text #: ../share/extensions/render_barcode_qrcode.py:1053 -#, fuzzy msgid "Please enter an input text" msgstr "Introduzca una cadena de entrada" @@ -33217,9 +33232,8 @@ msgid "Please enter a replacement font in the replace all box." msgstr "Introduzca una tipografía de reemplazo en la caja correspondiente." #: ../share/extensions/restack.py:75 -#, fuzzy msgid "There is no selection to restack." -msgstr "No hay selección para interpolar" +msgstr "No hay selección para reorganizar." #: ../share/extensions/summersnight.py:41 msgid "" @@ -33236,19 +33250,26 @@ msgstr "No se ha podido encontrar el archivo: %s" #: ../share/extensions/svgcalendar.py:265 #: ../share/extensions/svgcalendar.py:287 -#, fuzzy msgid "You must select a correct system encoding." -msgstr "Debe seleccionar al menos dos elementos" +msgstr "Debe seleccionar una codificación de sistema correcta." -#: ../share/extensions/uniconv-ext.py:54 -#: ../share/extensions/uniconv_output.py:121 +#: ../share/extensions/uniconv-ext.py:55 +#: ../share/extensions/uniconv_output.py:122 msgid "" "You need to install the UniConvertor software.\n" "For GNU/Linux: install the package python-uniconvertor.\n" "For Windows: download it from\n" -"http://sk1project.org/modules.php?name=Products&product=uniconvertor\n" +"https://sk1project.net/modules.php?" +"name=Products&product=uniconvertor&op=download\n" "and install into your Inkscape's Python location\n" msgstr "" +"Debe instalar el software UniConvertor.\n" +"Para GNU-Linux: instale el paquete python uniconvertor.\n" +"Para Windows: descárguelo desde\n" +"https://sk1project.net/modules.php?" +"name=Products&product=uniconvertor&op=download\n" +"e instálelo en la localización de Python en su sistema\n" +"\n" #: ../share/extensions/voronoi2svg.py:205 msgid "Please select objects!" @@ -33296,9 +33317,8 @@ msgid "The directory \"%s\" does not exists." msgstr "El directorio «%s» no existe." #: ../share/extensions/webslicer_export.py:76 -#, fuzzy msgid "No slicer layer found." -msgstr "No hay capa actual." +msgstr "No hay capa de corte." #: ../share/extensions/webslicer_export.py:106 #, python-format @@ -33380,9 +33400,8 @@ msgid "Corel DRAW Compressed Exchange files input (UC)" msgstr "Entrada de archivos de intercambio comprimidos de Corel DRAW (UC)" #: ../share/extensions/ccx_input.inx.h:2 -#, fuzzy msgid "Corel DRAW Compressed Exchange files (UC) (*.ccx)" -msgstr "Archivos de intercambio comprimidos de Corel DRAW (UC) (.ccx)" +msgstr "Archivos de intercambio comprimidos de Corel DRAW (UC) (*.ccx)" #: ../share/extensions/ccx_input.inx.h:3 msgid "Open compressed exchange files saved in Corel DRAW (UC)" @@ -33405,9 +33424,8 @@ msgid "Corel DRAW templates input (UC)" msgstr "Entrada de plantillas Corel DRAW (UC)" #: ../share/extensions/cdt_input.inx.h:2 -#, fuzzy msgid "Corel DRAW 7-13 template files (UC) (*.cdt)" -msgstr "Archivos de plantillas Corel DRAW 7-13 (UC) (.cdt)" +msgstr "Archivos de plantillas Corel DRAW 7-13 (UC) (*.cdt)" #: ../share/extensions/cdt_input.inx.h:3 msgid "Open files saved in Corel DRAW 7-13 (UC)" @@ -33418,9 +33436,8 @@ msgid "Computer Graphics Metafile files input" msgstr "Entrada de Computer Graphics Metafile" #: ../share/extensions/cgm_input.inx.h:2 -#, fuzzy msgid "Computer Graphics Metafile files (*.cgm)" -msgstr "Archivos Computer Graphics Metafile (.cgm)" +msgstr "Archivos Computer Graphics Metafile (*.cgm)" #: ../share/extensions/cgm_input.inx.h:3 msgid "Open Computer Graphics Metafile files" @@ -33431,9 +33448,8 @@ msgid "Corel DRAW Presentation Exchange files input (UC)" msgstr "Entrada de archivos Corel DRAW Presentation Exchange (UC)" #: ../share/extensions/cmx_input.inx.h:2 -#, fuzzy msgid "Corel DRAW Presentation Exchange files (UC) (*.cmx)" -msgstr "Archivos Corel DRAW Presentation Exchange (UC) (.cmx)" +msgstr "Archivos Corel DRAW Presentation Exchange (UC) (*.cmx)" #: ../share/extensions/cmx_input.inx.h:3 msgid "Open presentation exchange files saved in Corel DRAW (UC)" @@ -33444,27 +33460,26 @@ msgid "HSL Adjust" msgstr "Ajuste HSL" #: ../share/extensions/color_HSL_adjust.inx.h:3 -#, fuzzy msgid "Hue (°)" -msgstr "Tono (°):" +msgstr "Tono (°)" #: ../share/extensions/color_HSL_adjust.inx.h:4 msgid "Random hue" msgstr "Tono aleatorio" #: ../share/extensions/color_HSL_adjust.inx.h:6 -#, fuzzy, no-c-format +#, no-c-format msgid "Saturation (%)" -msgstr "Saturación (%):" +msgstr "Saturación (%)" #: ../share/extensions/color_HSL_adjust.inx.h:7 msgid "Random saturation" msgstr "Saturación aleatoria" #: ../share/extensions/color_HSL_adjust.inx.h:9 -#, fuzzy, no-c-format +#, no-c-format msgid "Lightness (%)" -msgstr "Luminancia (%):" +msgstr "Luminancia (%)" #: ../share/extensions/color_HSL_adjust.inx.h:10 msgid "Random lightness" @@ -33498,7 +33513,7 @@ msgstr "Blanco y negro" #: ../share/extensions/color_blackandwhite.inx.h:2 msgid "Threshold Color (1-255):" -msgstr "" +msgstr "Límite de color (1-255):" #: ../share/extensions/color_brighter.inx.h:1 msgid "Brighter" @@ -33592,24 +33607,24 @@ msgid "Randomize" msgstr "Aleatorizar" #: ../share/extensions/color_randomize.inx.h:4 -#, fuzzy, no-c-format +#, no-c-format msgid "Hue range (%)" -msgstr "Rotación de tono (°)" +msgstr "Rango de tono (%)" #: ../share/extensions/color_randomize.inx.h:6 -#, fuzzy, no-c-format +#, no-c-format msgid "Saturation range (%)" -msgstr "Saturación (%):" +msgstr "Rango de saturación (%)" #: ../share/extensions/color_randomize.inx.h:8 -#, fuzzy, no-c-format +#, no-c-format msgid "Lightness range (%)" -msgstr "Luminancia (%):" +msgstr "Rango de luminancia (%)" #: ../share/extensions/color_randomize.inx.h:10 -#, fuzzy, no-c-format +#, no-c-format msgid "Opacity range (%)" -msgstr "Opacidad (%)" +msgstr "Rango de opacidad (%)" #: ../share/extensions/color_randomize.inx.h:12 msgid "" @@ -33617,6 +33632,9 @@ msgid "" "only for objects and groups). Change the range values to limit the distance " "between the original color and the randomized one." msgstr "" +"Aleatoriza tono, saturación, luminancia u opacidad (aleatorización de " +"opacidad solo para objetos y grupos). Cambie el rango de valores para " +"limitar la distancia entre el color inicial y el aleatorio." #: ../share/extensions/color_removeblue.inx.h:1 msgid "Remove Blue" @@ -33659,17 +33677,16 @@ msgid "Convert to Dashes" msgstr "Convertir en guiones" #: ../share/extensions/dhw_input.inx.h:1 -#, fuzzy msgid "DHW file input" -msgstr "Entrada de metaarchivo de windows" +msgstr "Entrada de archivo DHW" #: ../share/extensions/dhw_input.inx.h:2 msgid "ACECAD Digimemo File (*.dhw)" -msgstr "" +msgstr "Archivo ACECAD Digimemo (*.dhw)" #: ../share/extensions/dhw_input.inx.h:3 msgid "Open files from ACECAD Digimemo" -msgstr "" +msgstr "Abrir archivo de ACECAD Digimemo" #: ../share/extensions/dia.inx.h:1 msgid "Dia Input" @@ -33713,7 +33730,6 @@ msgid "Y Offset:" msgstr "Desvío Y:" #: ../share/extensions/dimension.inx.h:4 -#, fuzzy msgid "Bounding box type:" msgstr "Tipo de caja de contorno:" @@ -33732,21 +33748,19 @@ msgstr "Mostrar trayecto" #: ../share/extensions/docinfo.inx.h:1 msgid "DOC Info" -msgstr "" +msgstr "DOC Info" #: ../share/extensions/docinfo.inx.h:2 -#, fuzzy msgid "Show page info" -msgstr "Mostrar _borde del papel" +msgstr "Mostrar información de página" #: ../share/extensions/docinfo.inx.h:3 -#, fuzzy msgid "" "Choose this tab if you would like to see page info previously to apply DPI " "Switcher." msgstr "" -"Elija esta pestaña si quiere ver una lista de las tipografías usadas/" -"encontradas." +"Elija esta pestaña si quiere ver información de página antes de aplicar el " +"cambiador PPP." #: ../share/extensions/dots.inx.h:1 msgid "Number Nodes" @@ -33786,11 +33800,11 @@ msgstr "" #: ../share/extensions/dpi90to96.inx.h:1 msgid "DPI 90 to 96" -msgstr "" +msgstr "PPP de 90 a 96" #: ../share/extensions/dpi96to90.inx.h:1 msgid "DPI 96 to 90" -msgstr "" +msgstr "PPP de 96 a 90" #: ../share/extensions/draw_from_triangle.inx.h:1 msgid "Draw From Triangle" @@ -34010,12 +34024,11 @@ msgstr "Entrada DXF" #: ../share/extensions/dxf_input.inx.h:3 msgid "Method of Scaling:" -msgstr "" +msgstr "Método de escalado:" #: ../share/extensions/dxf_input.inx.h:4 -#, fuzzy msgid "Manual scale factor:" -msgstr "O usar el factor de escala manual:" +msgstr "Factor de escala manual:" #: ../share/extensions/dxf_input.inx.h:5 msgid "Manual x-axis origin (mm):" @@ -34039,7 +34052,6 @@ msgid "Text Font:" msgstr "Tipografía del texto:" #: ../share/extensions/dxf_input.inx.h:11 -#, fuzzy msgid "" "- AutoCAD Release 13 and newer.\n" "- for manual scaling, assume dxf drawing is in mm.\n" @@ -34051,9 +34063,10 @@ msgid "" "- limited support for BLOCKS, use AutoCAD Explode Blocks instead, if needed." msgstr "" "- AutoCAD Versión 13 y posteriores.\n" -"- asume que el dibujo dxf está en mm.\n" -"- asume que el dibujo svg está en píxeles, a 90 ppp.\n" +"- para escalado manual, asume que el dibujo dxf está en mm.\n" +"- asume que el dibujo svg está en píxeles, a 96 ppp.\n" "- factor de escala y origen solamente se aplican al escalado manual.\n" +"- «Escalado automático» se ajustará al ancho de una hoja A4\n" "- las capas solamente se conservan con «Archivo->Abrir», no «Importar»\n" "- soporte limitado para BLOQUES, utilice la opción de AutoCAD «Explotar " "bloques» si es necesario." @@ -34079,24 +34092,20 @@ msgid "use LWPOLYLINE type of line output" msgstr "usar el tipo de salida de línea LWPOLYLINE" #: ../share/extensions/dxf_outlines.inx.h:5 -#, fuzzy msgid "Base unit:" -msgstr "Unidad base" +msgstr "Unidad base:" #: ../share/extensions/dxf_outlines.inx.h:6 -#, fuzzy msgid "Character Encoding:" -msgstr "Codificación de caracteres" +msgstr "Codificación de caracteres:" #: ../share/extensions/dxf_outlines.inx.h:7 -#, fuzzy msgid "Layer export selection:" -msgstr "Borrar selección" +msgstr "Selección de exportación de capas:" #: ../share/extensions/dxf_outlines.inx.h:8 -#, fuzzy msgid "Layer match name:" -msgstr "Nombre de la capa:" +msgstr "Nombre de capa coincidente:" #: ../share/extensions/dxf_outlines.inx.h:9 msgid "pt" @@ -34112,13 +34121,13 @@ msgid "px" msgstr "px" #: ../share/extensions/dxf_outlines.inx.h:12 -#: ../share/extensions/gcodetools_area.inx.h:46 -#: ../share/extensions/gcodetools_dxf_points.inx.h:18 -#: ../share/extensions/gcodetools_engraving.inx.h:24 +#: ../share/extensions/gcodetools_area.inx.h:62 +#: ../share/extensions/gcodetools_dxf_points.inx.h:23 +#: ../share/extensions/gcodetools_engraving.inx.h:32 #: ../share/extensions/gcodetools_graffiti.inx.h:18 -#: ../share/extensions/gcodetools_lathe.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:45 #: ../share/extensions/gcodetools_orientation_points.inx.h:11 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:32 #: ../share/extensions/render_gears.inx.h:9 msgid "mm" msgstr "mm" @@ -34132,13 +34141,13 @@ msgid "m" msgstr "m" #: ../share/extensions/dxf_outlines.inx.h:15 -#: ../share/extensions/gcodetools_area.inx.h:47 -#: ../share/extensions/gcodetools_dxf_points.inx.h:19 -#: ../share/extensions/gcodetools_engraving.inx.h:25 +#: ../share/extensions/gcodetools_area.inx.h:63 +#: ../share/extensions/gcodetools_dxf_points.inx.h:24 +#: ../share/extensions/gcodetools_engraving.inx.h:33 #: ../share/extensions/gcodetools_graffiti.inx.h:19 -#: ../share/extensions/gcodetools_lathe.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:46 #: ../share/extensions/gcodetools_orientation_points.inx.h:12 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:33 #: ../share/extensions/render_gears.inx.h:8 msgid "in" msgstr "pulgadas" @@ -34165,21 +34174,18 @@ msgstr "UTF 8" # File #: ../share/extensions/dxf_outlines.inx.h:21 -#, fuzzy msgid "All (default)" -msgstr "(predeterminado)" +msgstr "Todas (predeterminado)" #: ../share/extensions/dxf_outlines.inx.h:22 -#, fuzzy msgid "Visible only" -msgstr "Colores visibles" +msgstr "Solo visibles" #: ../share/extensions/dxf_outlines.inx.h:23 msgid "By name match" -msgstr "" +msgstr "Por coincidencia de nombre" #: ../share/extensions/dxf_outlines.inx.h:25 -#, fuzzy msgid "" "- AutoCAD Release 14 DXF format.\n" "- The base unit parameter specifies in what unit the coordinates are output " @@ -34197,10 +34203,10 @@ msgid "" msgstr "" "- Formato AutoCAD Versión 14.\n" "- El parámetro «Unidad base» indica en qué unidad se exportan las " -"coordenadas (90 px = 1 pulgada).\n" +"coordenadas (96 px = 1 pulgada).\n" "- Tipos de elemento soportados\n" " - trayectos (líneas y splines)\n" -" - rectángolus\n" +" - rectángulos\n" " - clones (se perderá la referencia cruzada al original)\n" "- la salida spline ROBO-Master es un spline especializado legible solamente " "por ROBO-Master y visores AutoDesk, no Inkscape.\n" @@ -34267,114 +34273,94 @@ msgid "Embed only selected images" msgstr "Incrustar sólo las imágenes seleccionadas" #: ../share/extensions/embedselectedimages.inx.h:1 -#, fuzzy msgid "Embed Selected Images" -msgstr "Incrustar sólo las imágenes seleccionadas" +msgstr "Incrustar imágenes seleccionadas" #: ../share/extensions/empty_business_card.inx.h:1 -#, fuzzy msgid "Business Card" -msgstr "Tarjeta de visita 85x54mm" +msgstr "Tarjeta de visita" #: ../share/extensions/empty_business_card.inx.h:2 -#, fuzzy msgid "Business card size:" -msgstr "Tarjeta de visita 85x54mm" +msgstr "Tamaño tarjeta de visita:" #: ../share/extensions/empty_desktop.inx.h:1 -#, fuzzy msgid "Desktop" -msgstr "Escritorio 640x480" +msgstr "Escritorio" #: ../share/extensions/empty_desktop.inx.h:2 -#, fuzzy msgid "Desktop size:" -msgstr "Tamaño de punto:" +msgstr "Tamaño de escritorio:" #. Maximum size is '16k' #: ../share/extensions/empty_desktop.inx.h:4 #: ../share/extensions/empty_generic.inx.h:2 #: ../share/extensions/empty_video.inx.h:4 -#, fuzzy msgid "Custom Width:" -msgstr "Tamaño personalizado" +msgstr "Anchura personalizada:" #: ../share/extensions/empty_desktop.inx.h:5 #: ../share/extensions/empty_generic.inx.h:3 #: ../share/extensions/empty_video.inx.h:5 -#, fuzzy msgid "Custom Height:" -msgstr "Altura de mayúsculas:" +msgstr "Altura predeterminada:" #: ../share/extensions/empty_dvd_cover.inx.h:1 -#, fuzzy msgid "DVD Cover" -msgstr "Cubierta" +msgstr "Cubierta de DVD " #: ../share/extensions/empty_dvd_cover.inx.h:2 -#, fuzzy msgid "DVD spine width:" -msgstr "Ancho de línea" +msgstr "Ancho dorso de DVD:" #: ../share/extensions/empty_dvd_cover.inx.h:3 msgid "DVD cover bleed (mm):" -msgstr "" +msgstr "Margen cubierta DVD (mm):" #: ../share/extensions/empty_generic.inx.h:1 -#, fuzzy msgid "Generic Canvas" -msgstr "Lienzo de lino" +msgstr "Lienzo genérico" #: ../share/extensions/empty_generic.inx.h:4 -#, fuzzy msgid "SVG Unit:" -msgstr "Unidad:" +msgstr "Unidad SVG:" #: ../share/extensions/empty_generic.inx.h:5 -#, fuzzy msgid "Canvas background:" -msgstr "Trazar fondo" +msgstr "Fondo del lienzo:" #: ../share/extensions/empty_generic.inx.h:6 #: ../share/extensions/empty_page.inx.h:5 -#, fuzzy msgid "Hide border" -msgstr "Borde rugoso" +msgstr "Ocultar borde" #: ../share/extensions/empty_icon.inx.h:1 -#, fuzzy msgid "Icon" -msgstr "Minimizar" +msgstr "Icono" #: ../share/extensions/empty_icon.inx.h:2 -#, fuzzy msgid "Icon size:" -msgstr "Tamaño de tipografía:" +msgstr "Tamaño de icono:" #: ../share/extensions/empty_page.inx.h:2 -#, fuzzy msgid "Page size:" -msgstr "Pegar tamaño" +msgstr "Tamaño de página:" #: ../share/extensions/empty_page.inx.h:3 -#, fuzzy msgid "Page orientation:" -msgstr "Orientación del texto" +msgstr "Orientación de página:" #: ../share/extensions/empty_page.inx.h:4 -#, fuzzy msgid "Page background:" -msgstr "Trazar fondo" +msgstr "Fondo de página:" #: ../share/extensions/empty_video.inx.h:1 -#, fuzzy msgid "Video Screen" -msgstr "Pantalla" +msgstr "Pantalla de vídeo" #: ../share/extensions/empty_video.inx.h:2 -#, fuzzy msgid "Video size:" -msgstr "Tamaño de punto:" +msgstr "Tamaño del vídeo:" #: ../share/extensions/eps_input.inx.h:1 msgid "EPS Input" @@ -34623,57 +34609,95 @@ msgstr "Acerca de" msgid "" "Gcodetools was developed to make simple Gcode from Inkscape's paths. Gcode " "is a special format which is used in most of CNC machines. So Gcodetools " -"allows you to use Inkscape as CAM program. It can be use with a lot of " -"machine types: Mills Lathes Laser and Plasma cutters and engravers Mill " -"engravers Plotters etc. To get more info visit developers page at http://www." -"cnc-club.ru/gcodetools" -msgstr "" -"Gcodetools se desarrolló para obtener código Gcode sencillo de los trayectos " -"de Inkscape. Gcode es un formato especial que se utiliza en la mayoría de " -"máquinas CNC. De este modo Gcode le permite usar Inkscape como programa CAM. " -"Se puede utilizar con mucho tipos de máquinas: fresadoras, tornos, " -"cortadores láser y plasma, grabadores, plóters, etc. Obtenga más información " -"en http://www.cnc-club.ru/gcodetools" - -#: ../share/extensions/gcodetools_about.inx.h:4 -#: ../share/extensions/gcodetools_area.inx.h:54 +"allows you to use Inkscape as CAM program. \n" +"\n" +"It can be use with a lot of machine types: \n" +"\tMills \n" +"\tLathes\n" +"\tLaser and Plasma cutters and engravers \n" +"\tMill engravers\n" +"\tPlotters\n" +"\tetc.\n" +"\t\n" +"To get more info visit developers page at http://www.cnc-club.ru/gcodetools" +msgstr "" +"Gcodetools se desarrolló para obtener código Gcode sencillo a partir de los " +"trayectos de Inkscape. Gcode es un formato especial que se utiliza en la " +"mayoría de máquinas CNC. De este modo Gcodetools le permite usar Inkscape " +"como programa CAM.\n" +"\n" +"Se puede utilizar con mucho tipos de máquinas: \n" +"\tFresadoras\n" +"\tTornos\n" +"\tCortadores láser y plasma\n" +"\tGrabadores\n" +"\n" +"\tPlóters\n" +"\tetc.\n" +"Obtenga más información en http://www.cnc-club.ru/gcodetools" + +#: ../share/extensions/gcodetools_about.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:70 #: ../share/extensions/gcodetools_check_for_updates.inx.h:4 -#: ../share/extensions/gcodetools_dxf_points.inx.h:26 -#: ../share/extensions/gcodetools_engraving.inx.h:32 -#: ../share/extensions/gcodetools_graffiti.inx.h:43 -#: ../share/extensions/gcodetools_lathe.inx.h:47 -#: ../share/extensions/gcodetools_orientation_points.inx.h:15 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:36 +#: ../share/extensions/gcodetools_dxf_points.inx.h:31 +#: ../share/extensions/gcodetools_engraving.inx.h:40 +#: ../share/extensions/gcodetools_graffiti.inx.h:54 +#: ../share/extensions/gcodetools_lathe.inx.h:53 +#: ../share/extensions/gcodetools_orientation_points.inx.h:26 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:40 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:18 -#: ../share/extensions/gcodetools_tools_library.inx.h:13 +#: ../share/extensions/gcodetools_tools_library.inx.h:19 msgid "" +"\n" "Gcodetools plug-in: converts paths to Gcode (using circular interpolation), " -"makes offset paths and engraves sharp corners using cone cutters. This plug-" -"in calculates Gcode for paths using circular interpolation or linear motion " -"when needed. Tutorials, manuals and support can be found at English support " -"forum: http://www.cnc-club.ru/gcodetools and Russian support forum: http://" -"www.cnc-club.ru/gcodetoolsru Credits: Nick Drobchenko, Vladimir Kalyaev, " -"John Brooker, Henry Nicolas, Chris Lusby Taylor. Gcodetools ver. 1.7" +"makes offset paths and engraves sharp corners using cone cutters. \n" +"This plug-in calculates Gcode for paths using circular interpolation or " +"linear motion when needed.\n" +"\n" +"Tutorials, manuals and support can be found at\n" +"English support forum:\n" +"\thttp://www.cnc-club.ru/gcodetools\n" +"\t\n" +"and Russian support forum:\n" +"\thttp://www.cnc-club.ru/gcodetoolsru\n" +"\n" +"Credits: Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, " +"Chris Lusby Taylor.\n" +"\n" +"Gcodetools ver. 1.7\n" msgstr "" +"\n" "Plug-in Gcodetools: convierte trayectos a Gcode (utilizando interpolación " -"circular), crear trayectos de desvío y graba esquinas mediante cortadores de " -"cono. Este plug-in calculta Gcode para trayectos usando interpolación " -"circular o movimiento lineal. Encontrará tutoriales, manuales y ayuda en el " -"foro en inglés: http://www.cnc-club.ru/gcodetools y en ruso: http://www.cnc-" -"club.ru/gcodetoolsru. Existe un manual traducido al español en http://dl." -"dropbox.com/u/23923366/Gcodetools_Help_ES.pdf" - -#: ../share/extensions/gcodetools_about.inx.h:5 -#: ../share/extensions/gcodetools_area.inx.h:55 -#: ../share/extensions/gcodetools_check_for_updates.inx.h:5 -#: ../share/extensions/gcodetools_dxf_points.inx.h:27 -#: ../share/extensions/gcodetools_engraving.inx.h:33 -#: ../share/extensions/gcodetools_graffiti.inx.h:44 -#: ../share/extensions/gcodetools_lathe.inx.h:48 -#: ../share/extensions/gcodetools_orientation_points.inx.h:16 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:37 -#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:19 -#: ../share/extensions/gcodetools_tools_library.inx.h:14 +"circular), crea trayectos de desvío y graba esquinas mediante cortadores de " +"cono. \n" +"Este plug-in calculta Gcode para trayectos usando interpolación circular o " +"movimiento lineal.\n" +"\n" +"Encontrará tutoriales, manuales y ayuda en\n" +"el foro en inglés:\n" +"\thttp://www.cnc-club.ru/gcodetools\n" +"\n" +"y en ruso:\n" +"http://www.cnc-club.ru/gcodetoolsru\n" +"\n" +"Existe un manual traducido al español en http://dl.dropbox.com/u/23923366/" +"Gcodetools_Help_ES.pdf\n" +"Créditos: Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, " +"Chris Lusby Taylor.\n" +"\n" +"Gcodetools ver. 1.7\n" + +#: ../share/extensions/gcodetools_about.inx.h:29 +#: ../share/extensions/gcodetools_area.inx.h:85 +#: ../share/extensions/gcodetools_check_for_updates.inx.h:19 +#: ../share/extensions/gcodetools_dxf_points.inx.h:46 +#: ../share/extensions/gcodetools_engraving.inx.h:55 +#: ../share/extensions/gcodetools_graffiti.inx.h:69 +#: ../share/extensions/gcodetools_lathe.inx.h:68 +#: ../share/extensions/gcodetools_orientation_points.inx.h:41 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:55 +#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:33 +#: ../share/extensions/gcodetools_tools_library.inx.h:34 msgid "Gcodetools" msgstr "Gcodetools" @@ -34695,329 +34719,350 @@ msgstr "Solapamiento de herramienta de área (0..0.9):" #: ../share/extensions/gcodetools_area.inx.h:5 msgid "" +"\n" "\"Create area offset\": creates several Inkscape path offsets to fill " -"original path's area up to \"Area radius\" value. Outlines start from \"1/2 D" -"\" up to \"Area width\" total width with \"D\" steps where D is taken from " -"the nearest tool definition (\"Tool diameter\" value). Only one offset will " -"be created if the \"Area width\" is equal to \"1/2 D\"." +"original path's area up to \"Area radius\" value. \n" +"\n" +"Outlines start from \"1/2 D\" up to \"Area width\" total width with \"D\" " +"steps where D is taken from the nearest tool definition (\"Tool diameter\" " +"value).\n" +"Only one offset will be created if the \"Area width\" is equal to \"1/2 D" +"\".\n" +"\t\t\t" msgstr "" +"\n" "«Crear desvío de área»: crea varios desvíos de trayecto de Inkscape para " -"rellenar el área del trayecto hasta el valor «Radio de área». Los contornos " -"empiezan desde «1/2 D» hasta el ancho total de «Ancho del área» con «D» " -"pasos, donde D se toma de la definición más cercana de herramienta (valor " -"«Diámetro de herramienta»). Solamente se creará un desvío si el «Ancho del " -"área» es igual a «1/2 D»." +"rellenar el área del trayecto hasta el valor «Radio de área».\n" +"\n" +"Los contornos empiezan desde «1/2 D» hasta el ancho total de «Ancho del " +"área» con «D» pasos, donde D se toma de la definición más cercana de " +"herramienta (valor «Diámetro de herramienta»).\n" +"Solamente se creará un desvío si el «Ancho del área» es igual a «1/2 D».\n" +"\t\t\t" -#: ../share/extensions/gcodetools_area.inx.h:6 +#: ../share/extensions/gcodetools_area.inx.h:11 msgid "Fill area" msgstr "Rellenar área" -#: ../share/extensions/gcodetools_area.inx.h:7 +#: ../share/extensions/gcodetools_area.inx.h:12 msgid "Area fill angle" msgstr "Ángulo de relleno de área" -#: ../share/extensions/gcodetools_area.inx.h:8 +#: ../share/extensions/gcodetools_area.inx.h:13 msgid "Area fill shift" msgstr "Marcha de relleno de área" -#: ../share/extensions/gcodetools_area.inx.h:9 +#: ../share/extensions/gcodetools_area.inx.h:14 msgid "Filling method" msgstr "Método de relleno" -#: ../share/extensions/gcodetools_area.inx.h:10 +#: ../share/extensions/gcodetools_area.inx.h:15 msgid "Zig zag" msgstr "Zig zag" -#: ../share/extensions/gcodetools_area.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:17 msgid "Area artifacts" msgstr "Artefactos de área" -#: ../share/extensions/gcodetools_area.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:18 msgid "Artifact diameter:" msgstr "Diámetro de artefactos:" -#: ../share/extensions/gcodetools_area.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:19 msgid "Action:" msgstr "Acción:" -#: ../share/extensions/gcodetools_area.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:20 msgid "mark with an arrow" msgstr "marcar con una flecha" -#: ../share/extensions/gcodetools_area.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:21 msgid "mark with style" msgstr "marcar con estilo" -#: ../share/extensions/gcodetools_area.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:22 msgid "delete" msgstr "borrar" -#: ../share/extensions/gcodetools_area.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:23 msgid "" -"Usage: 1. Select all Area Offsets (gray outlines) 2. Object/Ungroup (Shift" -"+Ctrl+G) 3. Press Apply Suspected small objects will be marked out by " -"colored arrows." +"\n" +"Usage: \n" +"1. Select all Area Offsets (gray outlines)\n" +"2. Object/Ungroup (Shift+Ctrl+G)\n" +"3. Press Apply\n" +"\n" +"Suspected small objects will be marked out by colored arrows.\n" +"\t\t\t" msgstr "" -"Uso: 1. Seleccione todos los desvíos de área (contornos grises) 2. «Objeto/" -"Desagrupar» (Mayús+Ctrl+G) 3. Pulse «Aplicar». Los objetos pequeños " -"sospechosos serán marcados con flechas de colores." +"\n" +"Uso: \n" +"1. Seleccione todos los desvíos de área (contornos grises)\n" +"2. «Objeto/Desagrupar» (Mayús+Ctrl+G)\n" +"3. Pulse «Aplicar».\n" +"\n" +"Los objetos pequeños sospechosos serán marcados con flechas de colores.\n" +"\t\t\t" -#: ../share/extensions/gcodetools_area.inx.h:19 -#: ../share/extensions/gcodetools_lathe.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:31 +#: ../share/extensions/gcodetools_lathe.inx.h:14 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:1 msgid "Path to Gcode" msgstr "Trayecto a GCode" -#: ../share/extensions/gcodetools_area.inx.h:20 -#: ../share/extensions/gcodetools_lathe.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:32 +#: ../share/extensions/gcodetools_lathe.inx.h:15 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:2 msgid "Biarc interpolation tolerance:" msgstr "Tolerancia de interpolación biarco:" -#: ../share/extensions/gcodetools_area.inx.h:21 -#: ../share/extensions/gcodetools_lathe.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:33 +#: ../share/extensions/gcodetools_lathe.inx.h:16 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:3 msgid "Maximum splitting depth:" msgstr "Profundidad máxima de separación:" -#: ../share/extensions/gcodetools_area.inx.h:22 -#: ../share/extensions/gcodetools_lathe.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:17 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:4 msgid "Cutting order:" msgstr "Orden de corte:" -#: ../share/extensions/gcodetools_area.inx.h:23 -#: ../share/extensions/gcodetools_lathe.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:35 +#: ../share/extensions/gcodetools_lathe.inx.h:18 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:5 msgid "Depth function:" msgstr "Función de profundidad:" -#: ../share/extensions/gcodetools_area.inx.h:24 -#: ../share/extensions/gcodetools_lathe.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:36 +#: ../share/extensions/gcodetools_lathe.inx.h:19 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:6 msgid "Sort paths to reduse rapid distance" msgstr "Ordenar trayectos para reducir distancia" -#: ../share/extensions/gcodetools_area.inx.h:25 -#: ../share/extensions/gcodetools_lathe.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:37 +#: ../share/extensions/gcodetools_lathe.inx.h:20 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:7 msgid "Subpath by subpath" msgstr "Subtrayecto por subtrayecto" -#: ../share/extensions/gcodetools_area.inx.h:26 -#: ../share/extensions/gcodetools_lathe.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:38 +#: ../share/extensions/gcodetools_lathe.inx.h:21 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:8 msgid "Path by path" msgstr "Trayecto por trayecto" -#: ../share/extensions/gcodetools_area.inx.h:27 -#: ../share/extensions/gcodetools_lathe.inx.h:20 +#: ../share/extensions/gcodetools_area.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:22 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:9 msgid "Pass by Pass" msgstr "Pasada por pasada" -#: ../share/extensions/gcodetools_area.inx.h:28 -#: ../share/extensions/gcodetools_lathe.inx.h:21 +#: ../share/extensions/gcodetools_area.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:23 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:10 msgid "" +"\n" "Biarc interpolation tolerance is the maximum distance between path and its " -"approximation. The segment will be split into two segments if the distance " -"between path's segment and its approximation exceeds biarc interpolation " -"tolerance. For depth function c=color intensity from 0.0 (white) to 1.0 " -"(black), d is the depth defined by orientation points, s - surface defined " -"by orientation points." +"approximation.\n" +"The segment will be split into two segments if the distance between path's " +"segment and its approximation exceeds biarc interpolation tolerance.\n" +"For depth function c=color intensity from 0.0 (white) to 1.0 (black), d is " +"the depth defined by orientation points, s - surface defined by orientation " +"points. \n" msgstr "" +"\n" "La tolerancia de interpolación biarco es la distancia máxima entre el " -"trayecto y su aproximación. El segmento se separará en dos si la distancia " -"entre el segmento del trayecto y su aproximación excede la toelerancia de " -"interpolación biarco. Para la función de profundidad c=intensidad de color " -"desde 0.0 (blanco) hasta 1.0 (negro), d es la profundidad definida por los " -"puntos de orientación, s - superficie definida por puntos de orientación." - -#: ../share/extensions/gcodetools_area.inx.h:30 -#: ../share/extensions/gcodetools_engraving.inx.h:8 -#: ../share/extensions/gcodetools_graffiti.inx.h:22 -#: ../share/extensions/gcodetools_lathe.inx.h:23 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:12 +"trayecto y su aproximación.\n" +"El segmento se separará en dos si la distancia entre el segmento del " +"trayecto y su aproximación excede la toelerancia de interpolación biarco.\n" +"Para la función de profundidad c=intensidad de color desde 0.0 (blanco) " +"hasta 1.0 (negro), d es la profundidad definida por los puntos de " +"orientación, s - superficie definida por puntos de orientación.\n" + +#: ../share/extensions/gcodetools_area.inx.h:46 +#: ../share/extensions/gcodetools_engraving.inx.h:16 +#: ../share/extensions/gcodetools_graffiti.inx.h:33 +#: ../share/extensions/gcodetools_lathe.inx.h:29 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:16 msgid "Scale along Z axis:" msgstr "Escalar a lo largo del eje Z:" -#: ../share/extensions/gcodetools_area.inx.h:31 -#: ../share/extensions/gcodetools_engraving.inx.h:9 -#: ../share/extensions/gcodetools_graffiti.inx.h:23 -#: ../share/extensions/gcodetools_lathe.inx.h:24 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:47 +#: ../share/extensions/gcodetools_engraving.inx.h:17 +#: ../share/extensions/gcodetools_graffiti.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:30 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:17 msgid "Offset along Z axis:" msgstr "Desviar a lo largo del eje Z:" -#: ../share/extensions/gcodetools_area.inx.h:32 -#: ../share/extensions/gcodetools_engraving.inx.h:10 -#: ../share/extensions/gcodetools_graffiti.inx.h:24 -#: ../share/extensions/gcodetools_lathe.inx.h:25 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:48 +#: ../share/extensions/gcodetools_engraving.inx.h:18 +#: ../share/extensions/gcodetools_graffiti.inx.h:35 +#: ../share/extensions/gcodetools_lathe.inx.h:31 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:18 msgid "Select all paths if nothing is selected" msgstr "Seleccionar todos los trayectos si no hay nada seleccionado" -#: ../share/extensions/gcodetools_area.inx.h:33 -#: ../share/extensions/gcodetools_engraving.inx.h:11 -#: ../share/extensions/gcodetools_graffiti.inx.h:25 -#: ../share/extensions/gcodetools_lathe.inx.h:26 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:49 +#: ../share/extensions/gcodetools_engraving.inx.h:19 +#: ../share/extensions/gcodetools_graffiti.inx.h:36 +#: ../share/extensions/gcodetools_lathe.inx.h:32 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:19 msgid "Minimum arc radius:" msgstr "Radio de arco mínimo:" -#: ../share/extensions/gcodetools_area.inx.h:34 -#: ../share/extensions/gcodetools_engraving.inx.h:12 -#: ../share/extensions/gcodetools_graffiti.inx.h:26 -#: ../share/extensions/gcodetools_lathe.inx.h:27 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:50 +#: ../share/extensions/gcodetools_engraving.inx.h:20 +#: ../share/extensions/gcodetools_graffiti.inx.h:37 +#: ../share/extensions/gcodetools_lathe.inx.h:33 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:20 msgid "Comment Gcode:" msgstr "Comentario Gcode:" -#: ../share/extensions/gcodetools_area.inx.h:35 -#: ../share/extensions/gcodetools_engraving.inx.h:13 -#: ../share/extensions/gcodetools_graffiti.inx.h:27 -#: ../share/extensions/gcodetools_lathe.inx.h:28 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:51 +#: ../share/extensions/gcodetools_engraving.inx.h:21 +#: ../share/extensions/gcodetools_graffiti.inx.h:38 +#: ../share/extensions/gcodetools_lathe.inx.h:34 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:21 msgid "Get additional comments from object's properties" msgstr "Obtener comentarios adicionales de la propiedades del objeto" -#: ../share/extensions/gcodetools_area.inx.h:36 -#: ../share/extensions/gcodetools_dxf_points.inx.h:8 -#: ../share/extensions/gcodetools_engraving.inx.h:14 -#: ../share/extensions/gcodetools_graffiti.inx.h:28 -#: ../share/extensions/gcodetools_lathe.inx.h:29 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:52 +#: ../share/extensions/gcodetools_dxf_points.inx.h:13 +#: ../share/extensions/gcodetools_engraving.inx.h:22 +#: ../share/extensions/gcodetools_graffiti.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:35 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:22 msgid "Preferences" msgstr "Preferencias" -#: ../share/extensions/gcodetools_area.inx.h:37 -#: ../share/extensions/gcodetools_dxf_points.inx.h:9 -#: ../share/extensions/gcodetools_engraving.inx.h:15 -#: ../share/extensions/gcodetools_graffiti.inx.h:29 -#: ../share/extensions/gcodetools_lathe.inx.h:30 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:53 +#: ../share/extensions/gcodetools_dxf_points.inx.h:14 +#: ../share/extensions/gcodetools_engraving.inx.h:23 +#: ../share/extensions/gcodetools_graffiti.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:36 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:23 #: ../share/extensions/nicechart.inx.h:4 msgid "File:" msgstr "Archivo:" -#: ../share/extensions/gcodetools_area.inx.h:38 -#: ../share/extensions/gcodetools_dxf_points.inx.h:10 -#: ../share/extensions/gcodetools_engraving.inx.h:16 -#: ../share/extensions/gcodetools_graffiti.inx.h:30 -#: ../share/extensions/gcodetools_lathe.inx.h:31 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:20 +#: ../share/extensions/gcodetools_area.inx.h:54 +#: ../share/extensions/gcodetools_dxf_points.inx.h:15 +#: ../share/extensions/gcodetools_engraving.inx.h:24 +#: ../share/extensions/gcodetools_graffiti.inx.h:41 +#: ../share/extensions/gcodetools_lathe.inx.h:37 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:24 msgid "Add numeric suffix to filename" msgstr "Añadir sufijo numeríco al nombre de archivo" -#: ../share/extensions/gcodetools_area.inx.h:39 -#: ../share/extensions/gcodetools_dxf_points.inx.h:11 -#: ../share/extensions/gcodetools_engraving.inx.h:17 -#: ../share/extensions/gcodetools_graffiti.inx.h:31 -#: ../share/extensions/gcodetools_lathe.inx.h:32 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:21 +#: ../share/extensions/gcodetools_area.inx.h:55 +#: ../share/extensions/gcodetools_dxf_points.inx.h:16 +#: ../share/extensions/gcodetools_engraving.inx.h:25 +#: ../share/extensions/gcodetools_graffiti.inx.h:42 +#: ../share/extensions/gcodetools_lathe.inx.h:38 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:25 msgid "Directory:" msgstr "Directorio:" -#: ../share/extensions/gcodetools_area.inx.h:40 -#: ../share/extensions/gcodetools_dxf_points.inx.h:12 -#: ../share/extensions/gcodetools_engraving.inx.h:18 -#: ../share/extensions/gcodetools_graffiti.inx.h:32 -#: ../share/extensions/gcodetools_lathe.inx.h:33 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:22 +#: ../share/extensions/gcodetools_area.inx.h:56 +#: ../share/extensions/gcodetools_dxf_points.inx.h:17 +#: ../share/extensions/gcodetools_engraving.inx.h:26 +#: ../share/extensions/gcodetools_graffiti.inx.h:43 +#: ../share/extensions/gcodetools_lathe.inx.h:39 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:26 msgid "Z safe height for G00 move over blank:" msgstr "Altura segura Z para movimiento G00 sobre blanco:" -#: ../share/extensions/gcodetools_area.inx.h:41 -#: ../share/extensions/gcodetools_dxf_points.inx.h:13 -#: ../share/extensions/gcodetools_engraving.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:57 +#: ../share/extensions/gcodetools_dxf_points.inx.h:18 +#: ../share/extensions/gcodetools_engraving.inx.h:27 #: ../share/extensions/gcodetools_graffiti.inx.h:13 -#: ../share/extensions/gcodetools_lathe.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:40 #: ../share/extensions/gcodetools_orientation_points.inx.h:6 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:23 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:27 msgid "Units (mm or in):" msgstr "Unidades (mm o in):" -#: ../share/extensions/gcodetools_area.inx.h:42 -#: ../share/extensions/gcodetools_dxf_points.inx.h:14 -#: ../share/extensions/gcodetools_engraving.inx.h:20 -#: ../share/extensions/gcodetools_graffiti.inx.h:33 -#: ../share/extensions/gcodetools_lathe.inx.h:35 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:24 +#: ../share/extensions/gcodetools_area.inx.h:58 +#: ../share/extensions/gcodetools_dxf_points.inx.h:19 +#: ../share/extensions/gcodetools_engraving.inx.h:28 +#: ../share/extensions/gcodetools_graffiti.inx.h:44 +#: ../share/extensions/gcodetools_lathe.inx.h:41 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 msgid "Post-processor:" msgstr "Post-procesador:" -#: ../share/extensions/gcodetools_area.inx.h:43 -#: ../share/extensions/gcodetools_dxf_points.inx.h:15 -#: ../share/extensions/gcodetools_engraving.inx.h:21 -#: ../share/extensions/gcodetools_graffiti.inx.h:34 -#: ../share/extensions/gcodetools_lathe.inx.h:36 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:25 +#: ../share/extensions/gcodetools_area.inx.h:59 +#: ../share/extensions/gcodetools_dxf_points.inx.h:20 +#: ../share/extensions/gcodetools_engraving.inx.h:29 +#: ../share/extensions/gcodetools_graffiti.inx.h:45 +#: ../share/extensions/gcodetools_lathe.inx.h:42 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 msgid "Additional post-processor:" msgstr "Post-procesador adicional:" -#: ../share/extensions/gcodetools_area.inx.h:44 -#: ../share/extensions/gcodetools_dxf_points.inx.h:16 -#: ../share/extensions/gcodetools_engraving.inx.h:22 -#: ../share/extensions/gcodetools_graffiti.inx.h:35 -#: ../share/extensions/gcodetools_lathe.inx.h:37 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:26 +#: ../share/extensions/gcodetools_area.inx.h:60 +#: ../share/extensions/gcodetools_dxf_points.inx.h:21 +#: ../share/extensions/gcodetools_engraving.inx.h:30 +#: ../share/extensions/gcodetools_graffiti.inx.h:46 +#: ../share/extensions/gcodetools_lathe.inx.h:43 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 msgid "Generate log file" msgstr "Generar archivo de registro" -#: ../share/extensions/gcodetools_area.inx.h:45 -#: ../share/extensions/gcodetools_dxf_points.inx.h:17 -#: ../share/extensions/gcodetools_engraving.inx.h:23 -#: ../share/extensions/gcodetools_graffiti.inx.h:36 -#: ../share/extensions/gcodetools_lathe.inx.h:38 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:27 +#: ../share/extensions/gcodetools_area.inx.h:61 +#: ../share/extensions/gcodetools_dxf_points.inx.h:22 +#: ../share/extensions/gcodetools_engraving.inx.h:31 +#: ../share/extensions/gcodetools_graffiti.inx.h:47 +#: ../share/extensions/gcodetools_lathe.inx.h:44 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:31 msgid "Full path to log file:" msgstr "Ruta completa al archivo de registro:" -#: ../share/extensions/gcodetools_area.inx.h:48 -#: ../share/extensions/gcodetools_dxf_points.inx.h:20 -#: ../share/extensions/gcodetools_engraving.inx.h:26 -#: ../share/extensions/gcodetools_graffiti.inx.h:37 -#: ../share/extensions/gcodetools_lathe.inx.h:41 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 -#, fuzzy +#: ../share/extensions/gcodetools_area.inx.h:64 +#: ../share/extensions/gcodetools_dxf_points.inx.h:25 +#: ../share/extensions/gcodetools_engraving.inx.h:34 +#: ../share/extensions/gcodetools_graffiti.inx.h:48 +#: ../share/extensions/gcodetools_lathe.inx.h:47 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:34 msgctxt "GCode postprocessor" msgid "None" msgstr "Ninguno" -#: ../share/extensions/gcodetools_area.inx.h:49 -#: ../share/extensions/gcodetools_dxf_points.inx.h:21 -#: ../share/extensions/gcodetools_engraving.inx.h:27 -#: ../share/extensions/gcodetools_graffiti.inx.h:38 -#: ../share/extensions/gcodetools_lathe.inx.h:42 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:31 +#: ../share/extensions/gcodetools_area.inx.h:65 +#: ../share/extensions/gcodetools_dxf_points.inx.h:26 +#: ../share/extensions/gcodetools_engraving.inx.h:35 +#: ../share/extensions/gcodetools_graffiti.inx.h:49 +#: ../share/extensions/gcodetools_lathe.inx.h:48 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:35 msgid "Parameterize Gcode" msgstr "Parametrizar Gcode" -#: ../share/extensions/gcodetools_area.inx.h:50 -#: ../share/extensions/gcodetools_dxf_points.inx.h:22 -#: ../share/extensions/gcodetools_engraving.inx.h:28 -#: ../share/extensions/gcodetools_graffiti.inx.h:39 -#: ../share/extensions/gcodetools_lathe.inx.h:43 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:32 +#: ../share/extensions/gcodetools_area.inx.h:66 +#: ../share/extensions/gcodetools_dxf_points.inx.h:27 +#: ../share/extensions/gcodetools_engraving.inx.h:36 +#: ../share/extensions/gcodetools_graffiti.inx.h:50 +#: ../share/extensions/gcodetools_lathe.inx.h:49 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:36 msgid "Flip y axis and parameterize Gcode" msgstr "Voltear eje y y parametrizar Gcode" -#: ../share/extensions/gcodetools_area.inx.h:51 -#: ../share/extensions/gcodetools_dxf_points.inx.h:23 -#: ../share/extensions/gcodetools_engraving.inx.h:29 -#: ../share/extensions/gcodetools_graffiti.inx.h:40 -#: ../share/extensions/gcodetools_lathe.inx.h:44 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:33 +#: ../share/extensions/gcodetools_area.inx.h:67 +#: ../share/extensions/gcodetools_dxf_points.inx.h:28 +#: ../share/extensions/gcodetools_engraving.inx.h:37 +#: ../share/extensions/gcodetools_graffiti.inx.h:51 +#: ../share/extensions/gcodetools_lathe.inx.h:50 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:37 msgid "Round all values to 4 digits" msgstr "Redondear todos los valores a 4 dígitos" -#: ../share/extensions/gcodetools_area.inx.h:52 -#: ../share/extensions/gcodetools_dxf_points.inx.h:24 -#: ../share/extensions/gcodetools_engraving.inx.h:30 -#: ../share/extensions/gcodetools_graffiti.inx.h:41 -#: ../share/extensions/gcodetools_lathe.inx.h:45 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:34 +#: ../share/extensions/gcodetools_area.inx.h:68 +#: ../share/extensions/gcodetools_dxf_points.inx.h:29 +#: ../share/extensions/gcodetools_engraving.inx.h:38 +#: ../share/extensions/gcodetools_graffiti.inx.h:52 +#: ../share/extensions/gcodetools_lathe.inx.h:51 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:38 msgid "Fast pre-penetrate" msgstr "Pre-penetración rápida" @@ -35045,26 +35090,36 @@ msgstr "Convertir selección:" #: ../share/extensions/gcodetools_dxf_points.inx.h:4 msgid "" +"\n" +"\n" "Convert selected objects to drill points (as dxf_import plugin does). Also " "you can save original shape. Only the start point of each curve will be " -"used. Also you can manually select object, open XML editor (Shift+Ctrl+X) " -"and add or remove XML tag 'dxfpoint' with any value." +"used.\n" +"\n" +"Also you can manually select object, open XML editor (Shift+Ctrl+X) and add " +"or remove XML tag 'dxfpoint' with any value.\n" +"\t\t " msgstr "" +"\n" +"\n" "Convertir objetos seleccionados a punto de perforación (como hace el plugin " "dxf_import). También puede guardar la forma original. Solo se usará el punto " -"inicial de cada curva. También puede seleccionar un objeto manualmente, " -"abrir el editor XML (Mayús+Ctrl+X) y añadir o eliminar la etiqueta XML " -"«dxfpoint» con cualquier valor." +"inicial de cada curva.\n" +"\n" +"También puede seleccionar un objeto manualmente, abrir el editor XML (Mayús" +"+Ctrl+X) y añadir o eliminar la etiqueta XML «dxfpoint» con cualquier " +"valor.\n" +"\t\t " -#: ../share/extensions/gcodetools_dxf_points.inx.h:5 +#: ../share/extensions/gcodetools_dxf_points.inx.h:10 msgid "set as dxfpoint and save shape" msgstr "fijar como punto dxf y guardar forma" -#: ../share/extensions/gcodetools_dxf_points.inx.h:6 +#: ../share/extensions/gcodetools_dxf_points.inx.h:11 msgid "set as dxfpoint and draw arrow" msgstr "fijar como punto dxf y mostrar flecha" -#: ../share/extensions/gcodetools_dxf_points.inx.h:7 +#: ../share/extensions/gcodetools_dxf_points.inx.h:12 msgid "clear dxfpoint sign" msgstr "limpiar señal de punto dxf" @@ -35090,17 +35145,23 @@ msgstr "Dibujar gráficos adicionales para ver trayecto de grabado" #: ../share/extensions/gcodetools_engraving.inx.h:6 msgid "" +"\n" "This function creates path to engrave letters or any shape with sharp " -"angles. Cutter's depth as a function of radius is defined by the tool. Depth " -"may be any Python expression. For instance: cone....(45 " -"degrees)......................: w cone....(height/diameter=10/3)..: 10*w/3 " -"sphere..(radius r)...........................: math.sqrt(max(0,r**2-w**2)) " +"angles.\n" +"Cutter's depth as a function of radius is defined by the tool.\n" +"Depth may be any Python expression. For instance:\n" +"\n" +"cone....(45 degrees)......................: w\n" +"cone....(height/diameter=10/3)..: 10*w/3\n" +"sphere..(radius r)...........................: math.sqrt(max(0,r**2-w**2))\n" "ellipse.(minor axis r, major 4r).....: math.sqrt(max(0,r**2-w**2))*4" msgstr "" +"\n" "Esta función crea trayectos para grabar letras o cualquier forma con ángulos " -"agudos. La profundidad del corte como una función de radio lo define la " -"herramienta. La profundidad puede ser cualquier expresión Python.\n" -"Por ejemplo:\n" +"agudos.\n" +"La profundidad del corte como una función de radio lo define la " +"herramienta.\n" +"La profundidad puede ser cualquier expresión Python. Por ejemplo:\n" "cono....(45 grados).......................: w\n" "cono....(altura/diámetro=10/3)..: 10*w/3\n" "esfera...(radio r).............................: math.sqrt(max(0,r**2-" @@ -35177,25 +35238,42 @@ msgstr "punto de referencia dentro-fuera" #: ../share/extensions/gcodetools_graffiti.inx.h:20 #: ../share/extensions/gcodetools_orientation_points.inx.h:13 msgid "" +"\n" "Orientation points are used to calculate transformation (offset,scale,mirror," -"rotation in XY plane) of the path. 3-points mode only: do not put all three " -"into one line (use 2-points mode instead). You can modify Z surface, Z depth " -"values later using text tool (3rd coordinates). If there are no orientation " -"points inside current layer they are taken from the upper layer. Do not " -"ungroup orientation points! You can select them using double click to enter " -"the group or by Ctrl+Click. Now press apply to create control points " -"(independent set for each layer)." +"rotation in XY plane) of the path.\n" +"3-points mode only: do not put all three into one line (use 2-points mode " +"instead).\n" +"\n" +"You can modify Z surface, Z depth values later using text tool (3rd " +"coordinates).\n" +"\n" +"If there are no orientation points inside current layer they are taken from " +"the upper layer.\n" +"\n" +"Do not ungroup orientation points! You can select them using double click to " +"enter the group or by Ctrl+Click.\n" +"\n" +"Now press apply to create control points (independent set for each layer).\n" +"\t\t\t" msgstr "" +"\n" "Los puntos de orientación se usan para calcular la transformación del " -"trayecto (desvío, escala, reflejo, rotación en el plano XY). Solo modo 3 " -"puntos: no ponga los tres puntos en una línea (use el modo 2 puntos en su " -"lugar). Puede modificar los valores de superficie Z y profundidad Z más " -"tarde mediante la herramienta Texto (la tercera coordenada). Si no hay " -"puntos de orientación en la capa actual, se tomarán de la capa superior. ¡No " -"desagrupe los puntos de orientación! Puede seleccionarlos mediante doble " -"pulsación para entrar en el grupo o mediante Ctrl+clic. Ahora pulse " -"«Aplicar» para crear puntos de control (un juego independiente para cada " -"capa)." +"trayecto (desvío, escala, reflejo, rotación en el plano XY).\n" +"Solo modo 3 puntos: no ponga los tres puntos en una línea (use el modo 2 " +"puntos en su lugar).\n" +"\n" +"Puede modificar los valores de superficie Z y profundidad Z más tarde " +"mediante la herramienta Texto (la tercera coordenada).\n" +"\n" +"Si no hay puntos de orientación en la capa actual, se tomarán de la capa " +"superior.\n" +"\n" +"¡No desagrupe los puntos de orientación! Puede seleccionarlos mediante doble " +"pulsación para entrar en el grupo o mediante Ctrl+clic.\n" +"\n" +"Ahora pulse «Aplicar» para crear puntos de control (un juego independiente " +"para cada capa).\n" +"\t\t\t" #: ../share/extensions/gcodetools_lathe.inx.h:1 msgid "Lathe" @@ -35239,11 +35317,15 @@ msgstr "Modificar trayecto del torno" #: ../share/extensions/gcodetools_lathe.inx.h:11 msgid "" -"This function modifies path so it will be able to be cut with the " -"rectangular cutter." +"\t\n" +"\t\t\tThis function modifies path so it will be able to be cut with the " +"rectangular cutter.\n" +"\t\t" msgstr "" -"Esta función modifica el trayecto de modo que pueda ser cortado con el " -"cortador rectangular." +"\t\n" +"\t\t\tEsta función modifica el trayecto de modo que pueda ser cortado con el " +"cortador rectangular.\n" +"\t\t" #: ../share/extensions/gcodetools_orientation_points.inx.h:1 msgid "Orientation points" @@ -35352,16 +35434,26 @@ msgstr "Solo comprobar herramientas" #: ../share/extensions/gcodetools_tools_library.inx.h:11 msgid "" +"\n" "Selected tool type fills appropriate default values. You can change these " -"values using the Text tool later on. The topmost (z order) tool in the " -"active layer is used. If there is no tool inside the current layer it is " -"taken from the upper layer. Press Apply to create new tool." +"values using the Text tool later on.\n" +"\n" +"The topmost (z order) tool in the active layer is used. If there is no tool " +"inside the current layer it is taken from the upper layer.\n" +"\n" +"Press Apply to create new tool.\n" +"\t\t\t" msgstr "" +"\n" "El tipo de herramienta seleccionada rellena valores predeterminados " "apropiados. Puede cambiar estos valores mediante la herramienta de Texto más " -"tarde. Se utilizará la herramienta superior (orden z) en la capa actual. Si " -"no hay herramienta en la capa actual, se tomará la de la capa superior. " -"Pulse Aplicar para crear una nueva herramienta." +"tarde.\n" +"\n" +"Se utilizará la herramienta superior (orden z) en la capa actual. Si no hay " +"herramienta en la capa actual, se tomará la de la capa superior.\n" +"\n" +"Pulse Aplicar para crear una nueva herramienta.\n" +"\t\t\t" #: ../share/extensions/generate_voronoi.inx.h:1 msgid "Voronoi Pattern" @@ -35410,12 +35502,10 @@ msgid "Save Background" msgstr "Guardar fondo" #: ../share/extensions/gimp_xcf.inx.h:6 -#, fuzzy msgid "File Resolution:" -msgstr "Resolución:" +msgstr "Resolución del archivo:" #: ../share/extensions/gimp_xcf.inx.h:8 -#, fuzzy msgid "" "This extension exports the document to Gimp XCF format according to the " "following options:\n" @@ -35436,6 +35526,7 @@ msgstr "" "rejilla Gimp (fíjese en que la rejilla predeterminada de Inkscape es muy " "estrecha al mostrarse en Gimp).\n" " * Guardar fondo: añade el fondo del documento a cada capa convertida.\n" +" * Resolución del archivo: resolución del archivo XCF, en PPP.\n" "\n" "Cada capa de primer nivel se convierte en una capa Gimp. Las subcapas son " "concatenadas y convertidas con su primera capa padre en una sola capa Gimp." @@ -35654,14 +35745,12 @@ msgid "Guides creator" msgstr "Creador de guías" #: ../share/extensions/guides_creator.inx.h:2 -#, fuzzy msgid "Regular guides" -msgstr "Rejilla rectangular" +msgstr "Guías normales" #: ../share/extensions/guides_creator.inx.h:3 -#, fuzzy msgid "Guides preset:" -msgstr "Creador de guías" +msgstr "Guías predet.:" #: ../share/extensions/guides_creator.inx.h:6 msgid "Start from edges" @@ -35684,72 +35773,58 @@ msgid "Rule-of-third" msgstr "Regla de los tercios" #: ../share/extensions/guides_creator.inx.h:11 -#, fuzzy msgid "Diagonal guides" -msgstr "Guías de ajuste" +msgstr "Guías diagonales" #: ../share/extensions/guides_creator.inx.h:12 -#, fuzzy msgid "Upper left corner" -msgstr "esquina del papel" +msgstr "Esquina superior izquierda" #: ../share/extensions/guides_creator.inx.h:13 -#, fuzzy msgid "Upper right corner" -msgstr "esquina del papel" +msgstr "Esquina superior derecha" #: ../share/extensions/guides_creator.inx.h:14 -#, fuzzy msgid "Lower left corner" -msgstr "Enviar la capa actual hacia abajo" +msgstr "Esquina inferior izquierda" #: ../share/extensions/guides_creator.inx.h:15 -#, fuzzy msgid "Lower right corner" -msgstr "Enviar la capa actual hacia abajo" +msgstr "Esquina inferior derecha" #: ../share/extensions/guides_creator.inx.h:16 -#, fuzzy msgid "Margins" -msgstr "Caja de márgenes" +msgstr "Márgenes" #: ../share/extensions/guides_creator.inx.h:17 -#, fuzzy msgid "Margins preset:" -msgstr "Guía de margen" +msgstr "Márgenes predet.:" #: ../share/extensions/guides_creator.inx.h:18 -#, fuzzy msgid "Header margin:" -msgstr "Márgenes" +msgstr "Margen de cabecera:" #: ../share/extensions/guides_creator.inx.h:19 -#, fuzzy msgid "Footer margin:" -msgstr "Margen superior" +msgstr "Margen del pie:" #: ../share/extensions/guides_creator.inx.h:20 -#, fuzzy msgid "Left margin:" -msgstr "Margen izquierdo" +msgstr "Margen izquierdo:" #: ../share/extensions/guides_creator.inx.h:21 -#, fuzzy msgid "Right margin:" -msgstr "Margen derecho" +msgstr "Margen derecho:" #: ../share/extensions/guides_creator.inx.h:22 -#, fuzzy msgid "Left book page" -msgstr "Ángulo izquierdo:" +msgstr "Página de libro izquierda" #: ../share/extensions/guides_creator.inx.h:23 -#, fuzzy msgid "Right book page" -msgstr "Ángulo derecho:" +msgstr "Página de libro derecha" #: ../share/extensions/guides_creator.inx.h:24 -#, fuzzy msgctxt "Margin" msgid "None" msgstr "Ninguno" @@ -35759,17 +35834,14 @@ msgid "Guillotine" msgstr "Guillotina" #: ../share/extensions/guillotine.inx.h:2 -#, fuzzy msgid "Directory to save images to:" -msgstr "Ruta y nombre de archivo para guardar la imagen" +msgstr "Carpeta para guardar la imagen:" #: ../share/extensions/guillotine.inx.h:3 -#, fuzzy msgid "Image name (without extension):" -msgstr "Nombre de la imagen (sin extensión)" +msgstr "Nombre de la imagen (sin extensión):" #: ../share/extensions/guillotine.inx.h:4 -#, fuzzy msgid "Ignore these settings and use export hints" msgstr "¿Ignorar estos ajustes y usar pistas de exportación?" @@ -35779,12 +35851,11 @@ msgstr "Dibujar tiradores" #: ../share/extensions/hershey.inx.h:1 msgid "Hershey Text" -msgstr "" +msgstr "Texto Hershey" #: ../share/extensions/hershey.inx.h:2 -#, fuzzy msgid "Render Text" -msgstr "Generar" +msgstr "Renderizar texto" #: ../share/extensions/hershey.inx.h:3 #: ../share/extensions/render_alphabetsoup.inx.h:2 @@ -35794,124 +35865,104 @@ msgid "Text:" msgstr "Texto:" #: ../share/extensions/hershey.inx.h:4 -#, fuzzy msgid "Action: " -msgstr "Acción:" +msgstr "Acción: " #: ../share/extensions/hershey.inx.h:5 -#, fuzzy msgid "Font face: " -msgstr "Tamaño de tipografía:" +msgstr "Tipografía: " #: ../share/extensions/hershey.inx.h:6 -#, fuzzy msgid "Typeset that text" -msgstr "Escriba un texto" +msgstr "Componer el texto" #: ../share/extensions/hershey.inx.h:7 -#, fuzzy msgid "Write glyph table" -msgstr "Editar nombre de glifo" +msgstr "Escibir tabla de glifos" #: ../share/extensions/hershey.inx.h:8 -#, fuzzy msgid "Sans 1-stroke" -msgstr "No definir trazo" +msgstr "Sans 1-trazo" #: ../share/extensions/hershey.inx.h:9 -#, fuzzy msgid "Sans bold" -msgstr "Negrita" +msgstr "Sans negrita" #: ../share/extensions/hershey.inx.h:10 -#, fuzzy msgid "Serif medium" -msgstr "medio" +msgstr "Serfi medio" #: ../share/extensions/hershey.inx.h:11 msgid "Serif medium italic" -msgstr "" +msgstr "Serif medio cursiva" #: ../share/extensions/hershey.inx.h:12 msgid "Serif bold italic" -msgstr "" +msgstr "Serif negrita cursiva" #: ../share/extensions/hershey.inx.h:13 -#, fuzzy msgid "Serif bold" -msgstr "Negrita" +msgstr "Serif negrita" #: ../share/extensions/hershey.inx.h:14 -#, fuzzy msgid "Script 1-stroke" -msgstr "Fijar trazo" +msgstr "Script 1-trazo" #: ../share/extensions/hershey.inx.h:15 msgid "Script 1-stroke (alt)" -msgstr "" +msgstr "Script 1-trazo (alt)" #: ../share/extensions/hershey.inx.h:16 -#, fuzzy msgid "Script medium" -msgstr "Id de script" +msgstr "Script medio" #: ../share/extensions/hershey.inx.h:17 -#, fuzzy msgid "Gothic English" -msgstr "Gótico" +msgstr "Gótico inglés" #: ../share/extensions/hershey.inx.h:18 -#, fuzzy msgid "Gothic German" -msgstr "Gótico" +msgstr "Gótico alemán" #: ../share/extensions/hershey.inx.h:19 -#, fuzzy msgid "Gothic Italian" -msgstr "Gótico" +msgstr "Gótico italiano" #: ../share/extensions/hershey.inx.h:20 -#, fuzzy msgid "Greek 1-stroke" -msgstr "Fijar trazo" +msgstr "Griego 1-trazo" #: ../share/extensions/hershey.inx.h:21 -#, fuzzy msgid "Greek medium" -msgstr "medio" +msgstr "Griego medio" #: ../share/extensions/hershey.inx.h:23 -#, fuzzy msgid "Japanese" -msgstr "Javanés" +msgstr "Japonés" #: ../share/extensions/hershey.inx.h:24 -#, fuzzy msgid "Astrology" -msgstr "Morfología" +msgstr "Astrología" #: ../share/extensions/hershey.inx.h:25 msgid "Math (lower)" -msgstr "" +msgstr "Matem. (minús.)" #: ../share/extensions/hershey.inx.h:26 -#, fuzzy msgid "Math (upper)" -msgstr "trayecto (perpendicular)" +msgstr "Matem. (mayús.)" #: ../share/extensions/hershey.inx.h:28 -#, fuzzy msgid "Meteorology" -msgstr "Morfología" +msgstr "Meteorología" #: ../share/extensions/hershey.inx.h:29 msgid "Music" msgstr "Música" #: ../share/extensions/hershey.inx.h:30 -#, fuzzy msgid "Symbolic" -msgstr "Símbo_lo" +msgstr "Simbólico" #: ../share/extensions/hershey.inx.h:31 msgid "" @@ -35926,9 +35977,8 @@ msgstr "" "\n" #: ../share/extensions/hershey.inx.h:36 -#, fuzzy msgid "About..." -msgstr "Acerca de" +msgstr "Acerca de..." #: ../share/extensions/hershey.inx.h:37 msgid "" @@ -35948,11 +35998,25 @@ msgid "" "For additional information, please visit:\n" " www.evilmadscientist.com/go/hershey" msgstr "" +"\n" +"Esta extensión renderiza una línea de texto usando\n" +"fuentes \"Hershey\" para plóters, derivedas de\n" +"NBS SP-424 1976-04, \"Una contribución a \n" +"las técnicas de tipografía computerizada: Tablas de\n" +"Coordenadas para el Repertorio de Hershey de\n" +"fuentes tipográficas y símbolos gráficos occidentales.\"\n" +"\n" +"Estas no son fuentes \"de contorno\" tradicionales, \n" +"sino que son fuentes \"de trazo único\", o\n" +"fuentes de \"grabado\" en las que el carácter se forma\n" +"por el trazo (y no el relleno).\n" +"\n" +"Visite el siguiente enlace si desea ás información:\n" +" www.evilmadscientist.com/go/hershey" #: ../share/extensions/hpgl_input.inx.h:1 -#, fuzzy msgid "HPGL Input" -msgstr "Entrada WPG" +msgstr "Entrada HPGL" #: ../share/extensions/hpgl_input.inx.h:2 msgid "" @@ -35960,48 +36024,46 @@ msgid "" "other HPGL files please change their file extension to .plt, make sure you " "have UniConverter installed and open them again." msgstr "" +"Fíjese en que solamente podrá abrir archivos HPGL guardados con Inkscape, " +"para abrir otros archivos HPGL cambie su extensión a .plt, asegúrese de que " +"UniConverter está instalado y vuelva a abrirlos." #: ../share/extensions/hpgl_input.inx.h:3 #: ../share/extensions/hpgl_output.inx.h:4 ../share/extensions/plotter.inx.h:32 -#, fuzzy msgid "Resolution X (dpi):" -msgstr "Resolución (ppp)" +msgstr "Resolución X (ppp):" #: ../share/extensions/hpgl_input.inx.h:4 #: ../share/extensions/hpgl_output.inx.h:5 ../share/extensions/plotter.inx.h:33 -#, fuzzy msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the X axis " "(Default: 1016.0)" msgstr "" -"La cantidad de pasos que la cuchilla se mueve para recorrer una pulgada, " -"obtenga este valor del manual de su plóter o mediante ensayo y error " -"(Predet.: «1016»)" +"La cantidad de pasos que el plóter se mueve para recorrer una pulgada sobre " +"el eje X (Predet.: «1016.0»)" #: ../share/extensions/hpgl_input.inx.h:5 #: ../share/extensions/hpgl_output.inx.h:6 ../share/extensions/plotter.inx.h:34 -#, fuzzy msgid "Resolution Y (dpi):" -msgstr "Resolución (ppp)" +msgstr "Resolución Y (ppp):" #: ../share/extensions/hpgl_input.inx.h:6 #: ../share/extensions/hpgl_output.inx.h:7 ../share/extensions/plotter.inx.h:35 -#, fuzzy msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the Y axis " "(Default: 1016.0)" msgstr "" -"La cantidad de pasos que la cuchilla se mueve para recorrer una pulgada, " -"obtenga este valor del manual de su plóter o mediante ensayo y error " -"(Predet.: «1016»)" +"La cantidad de pasos que el plóter se mueve para recorrer una pulgada sobre " +"el eje Y (Predet.: «1016.0»)" #: ../share/extensions/hpgl_input.inx.h:7 msgid "Show movements between paths" -msgstr "" +msgstr "Mostrar movimientos entre trayectos" #: ../share/extensions/hpgl_input.inx.h:8 msgid "Check this to show movements between paths (Default: Unchecked)" msgstr "" +"Marque esto para mostrar los movimientos entre trayectos (Predet. Sin marcar)" #: ../share/extensions/hpgl_input.inx.h:9 #: ../share/extensions/hpgl_output.inx.h:35 @@ -36009,45 +36071,39 @@ msgid "HP Graphics Language file (*.hpgl)" msgstr "HP Graphics Language file (*.hpgl)" #: ../share/extensions/hpgl_input.inx.h:10 -#, fuzzy msgid "Import an HP Graphics Language file" -msgstr "Exportar a un archivo HP Graphics Language" +msgstr "Importar un archivo HP Graphics Language" #: ../share/extensions/hpgl_output.inx.h:1 msgid "HPGL Output" msgstr "Salida HPGL" #: ../share/extensions/hpgl_output.inx.h:2 -#, fuzzy msgid "" "Please make sure that all objects you want to save are converted to paths. " "Please use the plotter extension (Extensions menu) to plot directly over a " "serial connection." msgstr "" -"Asegúrese de que todos los objetos que desea trazar han sido convertidos a " -"trayectos. El trazado se alineará automáticamente al punto cero." +"Asegúrese de que todos los objetos que desea guardar han sido convertidos a " +"trayectos. Utilice la extensión de plóter (menú Extensiones) para plotear " +"directamente por una conexión serie." #: ../share/extensions/hpgl_output.inx.h:3 ../share/extensions/plotter.inx.h:31 -#, fuzzy msgid "Plotter Settings " -msgstr "Ajustes de importación de PDF" +msgstr "Ajustes del plóter " #: ../share/extensions/hpgl_output.inx.h:8 ../share/extensions/plotter.inx.h:36 -#, fuzzy msgid "Pen number:" -msgstr "Número de pluma" +msgstr "Número de pluma:" #: ../share/extensions/hpgl_output.inx.h:9 ../share/extensions/plotter.inx.h:37 -#, fuzzy msgid "The number of the pen (tool) to use (Standard: '1')" -msgstr "" -"El número de la pluma (herramienta) que se usará , en la mayoría de los " -"plóters es 1 (Predet.: «1»)" +msgstr "El número de la pluma (herramienta) que se usará (Predet.: «1»)" #: ../share/extensions/hpgl_output.inx.h:10 #: ../share/extensions/plotter.inx.h:38 msgid "Pen force (g):" -msgstr "" +msgstr "Fuerza de la pluma (g):" #: ../share/extensions/hpgl_output.inx.h:11 #: ../share/extensions/plotter.inx.h:39 @@ -36055,11 +36111,13 @@ msgid "" "The amount of force pushing down the pen in grams, set to 0 to omit command; " "most plotters ignore this command (Default: 0)" msgstr "" +"La cantidad de fuerza que ejerce la pluma en gramos, ponga 0 para omitir el " +"comando; la mayoría de plóters ignora este ajuste (Predet. 0)" #: ../share/extensions/hpgl_output.inx.h:12 #: ../share/extensions/plotter.inx.h:40 msgid "Pen speed (cm/s or mm/s):" -msgstr "" +msgstr "Velocidad de pluma (cm/s o mm/s):" #: ../share/extensions/hpgl_output.inx.h:13 msgid "" @@ -36067,50 +36125,50 @@ msgid "" "(depending on your plotter model), set to 0 to omit command; most plotters " "ignore this command (Default: 0)" msgstr "" +"La velocidad a la que se moverá la pluma en centímetros o milímetros por " +"segundo (dependiendo del modelo de su plóter), ponga 0 para omitir el " +"comando; la mayoría de plóters ignora este ajuste (Predet. 0)" #: ../share/extensions/hpgl_output.inx.h:14 -#, fuzzy msgid "Rotation (°, Clockwise):" -msgstr "La rotación es a la derecha" +msgstr "Rotación (°, a la derecha):" #: ../share/extensions/hpgl_output.inx.h:15 #: ../share/extensions/plotter.inx.h:43 msgid "Rotation of the drawing (Default: 0°)" -msgstr "" +msgstr "Rotación del dibujo (Predet. 0)" #: ../share/extensions/hpgl_output.inx.h:16 #: ../share/extensions/plotter.inx.h:44 -#, fuzzy msgid "Mirror X axis" -msgstr "Reflejar eje Y" +msgstr "Reflejar eje X" #: ../share/extensions/hpgl_output.inx.h:17 #: ../share/extensions/plotter.inx.h:45 msgid "Check this to mirror the X axis (Default: Unchecked)" -msgstr "" +msgstr "Marque esto para reflejar el eje X (Predet. Sin marcar)" #: ../share/extensions/hpgl_output.inx.h:18 #: ../share/extensions/plotter.inx.h:46 -#, fuzzy msgid "Mirror Y axis" msgstr "Reflejar eje Y" #: ../share/extensions/hpgl_output.inx.h:19 #: ../share/extensions/plotter.inx.h:47 msgid "Check this to mirror the Y axis (Default: Unchecked)" -msgstr "" +msgstr "Marque esto para reflejar el eje Y (Predet. Sin marcar)" #: ../share/extensions/hpgl_output.inx.h:20 #: ../share/extensions/plotter.inx.h:48 -#, fuzzy msgid "Center zero point" -msgstr "Centrar líneas" +msgstr "Centrar punto cero" #: ../share/extensions/hpgl_output.inx.h:21 #: ../share/extensions/plotter.inx.h:49 msgid "" "Check this if your plotter uses a centered zero point (Default: Unchecked)" msgstr "" +"Marque esto si su plóter usa un punto cero centrado (Predet. Sin marcar)" #: ../share/extensions/hpgl_output.inx.h:22 #: ../share/extensions/plotter.inx.h:50 @@ -36119,50 +36177,48 @@ msgid "" "each pen, name the layers \"Pen 1\", \"Pen 2\", etc., and put your drawings " "in the corresponding layers. This overrules the pen number option above." msgstr "" +"Si desea usar diferentes plumas en su plóter cree una capa para cada pluma, " +"nombre las capas \"Pen 1\", \"Pen 2\", etc. y ponga los dibujos en las capas " +"correspondientes. Esto sobrescribe la opción de número de pluma." #: ../share/extensions/hpgl_output.inx.h:23 #: ../share/extensions/plotter.inx.h:51 -#, fuzzy msgid "Plot Features " -msgstr "Pluma de fieltro" +msgstr "Características de ploteo " #: ../share/extensions/hpgl_output.inx.h:24 #: ../share/extensions/plotter.inx.h:52 -#, fuzzy msgid "Overcut (mm):" -msgstr "Sobrecorte (mm)" +msgstr "Sobrecorte (mm):" #: ../share/extensions/hpgl_output.inx.h:25 #: ../share/extensions/plotter.inx.h:53 -#, fuzzy msgid "" "The distance in mm that will be cut over the starting point of the path to " "prevent open paths, set to 0.0 to omit command (Default: 1.00)" msgstr "" "La distancia en mm que se cortará por encima del punto de inicio del " -"trayecto par prevenir trayectos abiertos (Predet.: «1.00»)" +"trayecto par prevenir trayectos abiertos, ponga 0.0 para omitir el comando " +"(Predet.: «1.00»)" #: ../share/extensions/hpgl_output.inx.h:26 #: ../share/extensions/plotter.inx.h:54 -#, fuzzy msgid "Tool (Knife) offset correction (mm):" -msgstr "Desvío de herramienta (mm):" +msgstr "Desvío de corrección de la herramienta (cuchilla) (mm):" #: ../share/extensions/hpgl_output.inx.h:27 #: ../share/extensions/plotter.inx.h:55 -#, fuzzy msgid "" "The offset from the tool tip to the tool axis in mm, set to 0.0 to omit " "command (Default: 0.25)" msgstr "" -"La distancia desde la punta de la herramienta hasta su eje en mm (Predet.: " -"«0.25»)" +"La distancia desde la punta de la herramienta hasta su eje en mm, ponga 0 " +"para omitir el comando (Predet.: «0.25»)" #: ../share/extensions/hpgl_output.inx.h:28 #: ../share/extensions/plotter.inx.h:56 -#, fuzzy msgid "Precut" -msgstr "Usar sobrecorte" +msgstr "Corte previo" #: ../share/extensions/hpgl_output.inx.h:29 #: ../share/extensions/plotter.inx.h:57 @@ -36170,12 +36226,14 @@ msgid "" "Check this to cut a small line before the real drawing starts to correctly " "align the tool orientation. (Default: Checked)" msgstr "" +"Marque esto para realizar una línea estrecha antes de iniciar el dibujo " +"real, para alinear la orientación de la herramienta correctamente (Predet. " +"Marcado)" #: ../share/extensions/hpgl_output.inx.h:30 #: ../share/extensions/plotter.inx.h:58 -#, fuzzy msgid "Curve flatness:" -msgstr "Lisura de la curva (mm)" +msgstr "Lisura de la curva:" #: ../share/extensions/hpgl_output.inx.h:31 #: ../share/extensions/plotter.inx.h:59 @@ -36183,12 +36241,13 @@ msgid "" "Curves are divided into lines, this number controls how fine the curves will " "be reproduced, the smaller the finer (Default: '1.2')" msgstr "" +"Las curvas se dividen en líneas, este número controla la finura de la " +"reproducción de las curvas, cuanto más pequeño, más fino (Predet: «2.1»)" #: ../share/extensions/hpgl_output.inx.h:32 #: ../share/extensions/plotter.inx.h:60 -#, fuzzy msgid "Auto align" -msgstr "Alinear" +msgstr "Auto-alinear" #: ../share/extensions/hpgl_output.inx.h:33 #: ../share/extensions/plotter.inx.h:61 @@ -36197,6 +36256,10 @@ msgid "" "if used). If unchecked you have to make sure that all parts of your drawing " "are within the document border! (Default: Checked)" msgstr "" +"Marque esto para alinear el dibujo automáticamente con el punto cero (más el " +"desvío de la herramienta, si lo tiene). Si no está marcado debe asegurarse " +"de que todas las partes del dibujo están dentro del borde del documento " +"(Predet: Marcado)" #: ../share/extensions/hpgl_output.inx.h:34 #: ../share/extensions/plotter.inx.h:64 @@ -36204,130 +36267,118 @@ msgid "" "All these settings depend on the plotter you use, for more information " "please consult the manual or homepage for your plotter." msgstr "" +"Todos estos ajustes dependen del plóter que utilice, consulte su manual o el " +"sitio web de su plóter para obtener más información." #: ../share/extensions/hpgl_output.inx.h:36 -#, fuzzy msgid "Export an HP Graphics Language file" msgstr "Exportar a un archivo HP Graphics Language" #: ../share/extensions/image_attributes.inx.h:1 -#, fuzzy msgid "Set Image Attributes" -msgstr "Definir atributos" +msgstr "Definir atributos de la imagen" #. render images like in 0.48 #: ../share/extensions/image_attributes.inx.h:3 -#, fuzzy msgid "Basic" -msgstr "Latino básico" +msgstr "Básico" #. render images like in 0.48 #: ../share/extensions/image_attributes.inx.h:5 msgid "Support non-uniform scaling" -msgstr "" +msgstr "Soportar escalado no uniforme" #. render images like in 0.48 #: ../share/extensions/image_attributes.inx.h:7 msgid "Render images blocky" -msgstr "" +msgstr "Generar imágenes pixeladas" #. render images like in 0.48 #: ../share/extensions/image_attributes.inx.h:9 msgid "" "Render all bitmap images like in older Inskcape versions. Available options:" msgstr "" +"Generar todos los mapas de bits como en versiones anteriores de Inkscape. " +"Opciones disponibles:" #. image aspect ratio #: ../share/extensions/image_attributes.inx.h:11 -#, fuzzy msgid "Image Aspect Ratio" -msgstr "Simplificación de imagen" +msgstr "Relación de aspecto de la imagen" #. image aspect ratio #: ../share/extensions/image_attributes.inx.h:13 msgid "preserveAspectRatio attribute:" -msgstr "" +msgstr "Atributo preserveAspectRatio:" #. image aspect ratio #: ../share/extensions/image_attributes.inx.h:15 msgid "meetOrSlice:" -msgstr "" +msgstr "meetOrSlice:" #. image-rendering #: ../share/extensions/image_attributes.inx.h:17 -#, fuzzy msgid "Scope:" -msgstr "Ámbito" +msgstr "Ámbito:" #. image-rendering #: ../share/extensions/image_attributes.inx.h:19 -#, fuzzy msgid "Unset" -msgstr "Reducir" +msgstr "Retirar" #: ../share/extensions/image_attributes.inx.h:20 -#, fuzzy msgid "Change only selected image(s)" -msgstr "Incrustar sólo las imágenes seleccionadas" +msgstr "Cambiar sólo las imágenes seleccionadas" #: ../share/extensions/image_attributes.inx.h:21 -#, fuzzy msgid "Change all images in selection" -msgstr "Cambiar definición de color" +msgstr "Cambiar todas las imágenes en la selección" #: ../share/extensions/image_attributes.inx.h:22 -#, fuzzy msgid "Change all images in document" -msgstr "Comprobar la ortografía del texto en el documento" +msgstr "Cambiar todas las imágenes en el documento" #. image-rendering #: ../share/extensions/image_attributes.inx.h:24 -#, fuzzy msgid "Image Rendering Quality" -msgstr "Renderizado de imagen:" +msgstr "Calidad de renderizado de imagen" #. image-rendering #: ../share/extensions/image_attributes.inx.h:26 -#, fuzzy msgid "Image rendering attribute:" -msgstr "Modo de renderizado de imagen:" +msgstr "Atributo de renderizado de imagen:" #: ../share/extensions/image_attributes.inx.h:27 -#, fuzzy msgid "Apply attribute to parent group of selection" -msgstr "Aplicar la transformación a la selección" +msgstr "Aplicar el atributo al grupo padre de la selección" #: ../share/extensions/image_attributes.inx.h:28 -#, fuzzy msgid "Apply attribute to SVG root" -msgstr "Atributo a fijar:" +msgstr "Aplicar atributo a la raíz SVG" #: ../share/extensions/ink2canvas.inx.h:1 -#, fuzzy msgid "Convert to html5 canvas" -msgstr "Convertir en guiones" +msgstr "Convertir en lienzo html5" #: ../share/extensions/ink2canvas.inx.h:2 msgid "HTML 5 canvas (*.html)" -msgstr "" +msgstr "Lienzo HTML 5 (*.html)" #: ../share/extensions/ink2canvas.inx.h:3 msgid "HTML 5 canvas code" -msgstr "" +msgstr "Código de lienzo HTML 5" #: ../share/extensions/inkscape_follow_link.inx.h:1 -#, fuzzy msgid "Follow Link" -msgstr "Se_guir enlace" +msgstr "Seguir enlace" #: ../share/extensions/inkscape_help_askaquestion.inx.h:1 msgid "Ask Us a Question" msgstr "Háganos una pregunta" #: ../share/extensions/inkscape_help_askaquestion.inx.h:2 -#, fuzzy msgid "https://inkscape.org/en/ask/" -msgstr "http://inkscape.org/doc/keys048.html" +msgstr "https://inkscape.org/es/ask/" #: ../share/extensions/inkscape_help_commandline.inx.h:1 msgid "Command Line Options" @@ -36348,9 +36399,8 @@ msgstr "Referencia de teclado y ratón" #. i18n. Please don't translate it unless a page exists in your language #: ../share/extensions/inkscape_help_keys.inx.h:3 -#, fuzzy msgid "http://inkscape.org/doc/keys092.html" -msgstr "http://inkscape.org/doc/keys048.html" +msgstr "http://inkscape.org/doc/keys092.html" #: ../share/extensions/inkscape_help_manual.inx.h:1 msgid "Inkscape Manual" @@ -36358,8 +36408,8 @@ msgstr "Manual de Inkscape" #. i18n. Please don't translate it unless a page exists in your language #: ../share/extensions/inkscape_help_manual.inx.h:3 -msgid "http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php" -msgstr "http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php" +msgid "http://tavmjong.org/INKSCAPE/MANUAL/html/index.php" +msgstr "http://tavmjong.org/INKSCAPE/MANUAL/html/index.php" #: ../share/extensions/inkscape_help_relnotes.inx.h:1 msgid "New in This Version" @@ -36367,9 +36417,8 @@ msgstr "Nuevo en esta versión" #. i18n. Please don't translate it unless a page exists in your language #: ../share/extensions/inkscape_help_relnotes.inx.h:3 -#, fuzzy msgid "http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92" -msgstr "http://wiki.inkscape.org/wiki/index.php/Release_notes/0.49" +msgstr "http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92" #: ../share/extensions/inkscape_help_reportabug.inx.h:1 msgid "Report a Bug" @@ -36400,13 +36449,14 @@ msgid "Interpolate style" msgstr "Interpolar estilo" #: ../share/extensions/interp.inx.h:7 ../share/extensions/interp_att_g.inx.h:10 -#, fuzzy msgid "Use Z-order" -msgstr "Borde elevado" +msgstr "Usar orden-Z" #: ../share/extensions/interp.inx.h:8 ../share/extensions/interp_att_g.inx.h:11 msgid "Workaround for reversed selection order in Live Preview cycles" msgstr "" +"Solución temporal para el orden de selección invertido en los ciclos de " +"Vista Previa en Directo" #: ../share/extensions/interp_att_g.inx.h:1 msgid "Interpolate Attribute in a group" @@ -37019,26 +37069,23 @@ msgstr "Mover tiradores de nodos" #: ../share/extensions/jitternodes.inx.h:7 msgid "Distribution of the displacements:" -msgstr "" +msgstr "Distribución de los desplazamientos:" #: ../share/extensions/jitternodes.inx.h:8 -#, fuzzy msgid "Uniform" -msgstr "Cuneiforme" +msgstr "Uniforme" #: ../share/extensions/jitternodes.inx.h:9 msgid "Pareto" -msgstr "" +msgstr "Pareto" #: ../share/extensions/jitternodes.inx.h:10 -#, fuzzy msgid "Gaussian" -msgstr "Desenfoque gaussiano" +msgstr "Gaussiano" #: ../share/extensions/jitternodes.inx.h:11 -#, fuzzy msgid "Log-normal" -msgstr "Normal" +msgstr "Log-normal" #: ../share/extensions/jitternodes.inx.h:13 msgid "" @@ -37335,34 +37382,29 @@ msgid "Measurement Type: " msgstr "Tipo de medida: " #: ../share/extensions/measure.inx.h:4 -#, fuzzy msgid "Text Presets" -msgstr "Preferencias de texto" +msgstr "Predet. de texto" #: ../share/extensions/measure.inx.h:6 -#, fuzzy msgid "Text on Path" msgstr "Texto en trayecto" #: ../share/extensions/measure.inx.h:8 -#, fuzzy, no-c-format +#, no-c-format msgid "Offset (%)" -msgstr "Desvío (px):" +msgstr "Desvío (%)" #: ../share/extensions/measure.inx.h:9 -#, fuzzy msgid "Text anchor:" -msgstr "Ancla de texto" +msgstr "Ancla de texto:" #: ../share/extensions/measure.inx.h:10 -#, fuzzy msgid "Fixed Text" -msgstr "Texto fluido" +msgstr "Texto fijo" #: ../share/extensions/measure.inx.h:11 -#, fuzzy msgid "Angle (°):" -msgstr "Ángulo X:" +msgstr "Ángulo (°):" #: ../share/extensions/measure.inx.h:12 msgid "Font size (px):" @@ -37386,60 +37428,52 @@ msgid "Area" msgstr "Área" #: ../share/extensions/measure.inx.h:19 -#, fuzzy msgctxt "measure extension" msgid "Center of Mass" -msgstr "Masa de la pluma:" +msgstr "Centro de masa" #: ../share/extensions/measure.inx.h:21 -#, fuzzy msgid "Text on Path, Start" -msgstr "Texto en trayecto" +msgstr "Texto en trayecto, Inicio" #: ../share/extensions/measure.inx.h:22 -#, fuzzy msgid "Text on Path, Middle" -msgstr "Texto en trayecto" +msgstr "Texto en trayecto, Mitad" #: ../share/extensions/measure.inx.h:23 -#, fuzzy msgid "Text on Path, End" -msgstr "Texto en trayecto" +msgstr "Texto en trayecto, Fin" #: ../share/extensions/measure.inx.h:24 msgid "Fixed Text, Start of Path" -msgstr "" +msgstr "Texto fijo, inicio del trayecto" #: ../share/extensions/measure.inx.h:25 msgid "Fixed Text, Center of BBox" -msgstr "" +msgstr "Texto fijo, Centro de BBox" #: ../share/extensions/measure.inx.h:26 -#, fuzzy msgid "Fixed Text, Center of Mass" -msgstr "Masa de la pluma:" +msgstr "Texto fijo, Centro de masa" #: ../share/extensions/measure.inx.h:28 msgid "Center" msgstr "Centro" #: ../share/extensions/measure.inx.h:30 -#, fuzzy msgid "Start of Path" -msgstr "_Borde a trayecto" +msgstr "Inicio de trayecto" #: ../share/extensions/measure.inx.h:31 -#, fuzzy msgid "Center of BBox" -msgstr "Centrar líneas" +msgstr "Centro de BBox" #: ../share/extensions/measure.inx.h:32 -#, fuzzy msgid "Center of Mass" -msgstr "Masa de la pluma:" +msgstr "Centro de masa" #: ../share/extensions/measure.inx.h:35 -#, fuzzy, no-c-format +#, no-c-format msgid "" "This effect measures the length, area, or center-of-mass of the selected " "paths. Length and area are added as a text object with the selected units. " @@ -37457,9 +37491,10 @@ msgid "" "Bezier curves. If a circle is used, the area may be too high by as much as " "0.03%." msgstr "" -"Este efecto mide la longitud o área de los trayectos seleccionados y lo " -"añade como un objeto de texto con la unidad seleccionada.\n" -" \n" +"Este efecto mide la longitud, área o centro de masa de los trayectos " +"seleccionados. Longitud y área se añaden como un objeto de texto con la " +"unidad seleccionada. El centro de masa se muestra con un símbolo de cruz.\n" +"\n" " * El modo de mostrarlo puede ser texto-en-trayecto o texto en un ángulo " "indicado.\n" " * La cantidad de números significativos se puede controlar con el campo " @@ -37468,13 +37503,13 @@ msgstr "" " * Se puede utilizar «Factor de escala» para realizar mediciones en dibujos " "escalados. Por ejemplo, si 1 cm en el dibujo es igual a 2,5m en el mundo " "real, el «Factor de escala» se debe poner a 250.\n" -" *Al calcular el área, el resultado debería ser preciso para polígonos y " +" * Al calcular el área, el resultado debería ser preciso para polígonos y " "curvas Bézier. Si se usa un círculo, el área podría ser demasiado grande por " "hasta 0,03%." #: ../share/extensions/merge_styles.inx.h:1 msgid "Merge Styles into CSS" -msgstr "" +msgstr "Fundir estilos en CSS" #: ../share/extensions/merge_styles.inx.h:2 msgid "" @@ -37483,15 +37518,18 @@ msgid "" "inline style attributes. Please use a name which best describes the kinds of " "objects and their common context for best effect." msgstr "" +"Se agruparán todos los nodos seleccionados y los atributos de sus estilos " +"comunes crearán una nueva clase, esta clase reemplazará a los atributos de " +"estilo existentes. Utilice un nombre que mejor describa los tipos de objeto " +"y su contexto común para obtener el mejor efecto." #: ../share/extensions/merge_styles.inx.h:3 msgid "New Class Name:" -msgstr "" +msgstr "Nuevo nombre de clase:" #: ../share/extensions/merge_styles.inx.h:4 -#, fuzzy msgid "Stylesheet" -msgstr "Estilo" +msgstr "Hoja de estilo" #: ../share/extensions/motion.inx.h:1 msgid "Motion" @@ -37515,174 +37553,151 @@ msgstr "Ver siguiente glifo" #: ../share/extensions/nicechart.inx.h:1 msgid "NiceCharts" -msgstr "" +msgstr "NiceCharts" #: ../share/extensions/nicechart.inx.h:2 -#, fuzzy msgid "Data" -msgstr "E/S Datos" +msgstr "Datos" #: ../share/extensions/nicechart.inx.h:3 -#, fuzzy msgid "Data from file" -msgstr "Cargar desde archivo" +msgstr "Datos desde archivo" #: ../share/extensions/nicechart.inx.h:5 -#, fuzzy msgid "Delimiter:" -msgstr "Límite de inglete:" +msgstr "Delimitador:" #: ../share/extensions/nicechart.inx.h:6 msgid "Column that contains the keys:" -msgstr "" +msgstr "Columna que contiene las claves:" #: ../share/extensions/nicechart.inx.h:7 -#, fuzzy msgid "Column that contains the values:" -msgstr "ángulo constreñido" +msgstr "Columna que contiene los valores:" #: ../share/extensions/nicechart.inx.h:8 msgid "File encoding (e.g. utf-8):" -msgstr "" +msgstr "Codificación del archivo (p.ej. UTF-8):" #: ../share/extensions/nicechart.inx.h:9 msgid "First line contains headings" -msgstr "" +msgstr "La primer línea contiene cabeceras" #: ../share/extensions/nicechart.inx.h:10 -#, fuzzy msgid "Direct input" -msgstr "Dirección" +msgstr "Entrada directa" #: ../share/extensions/nicechart.inx.h:11 -#, fuzzy msgid "Data:" -msgstr "E/S Datos" +msgstr "Datos:" #: ../share/extensions/nicechart.inx.h:12 -#, fuzzy msgid "Enter the full path to a CSV file:" -msgstr "Ruta completa al archivo de registro:" +msgstr "Ruta completa al archivo CSV:" #: ../share/extensions/nicechart.inx.h:13 msgid "Type in comma separated values:" -msgstr "" +msgstr "Introduzca valores separados por coma:" #: ../share/extensions/nicechart.inx.h:14 msgid "(format like this: apples:3,bananas:5)" -msgstr "" +msgstr "(ejemplo de formato: manzanas:3,bananas:5)" #: ../share/extensions/nicechart.inx.h:15 -#, fuzzy msgid "Labels" -msgstr "Etiqueta:" +msgstr "Etiquetas" #: ../share/extensions/nicechart.inx.h:16 -#, fuzzy msgid "Font:" -msgstr "Tipografía" +msgstr "Tipografía:" #: ../share/extensions/nicechart.inx.h:18 -#, fuzzy msgid "Font color:" -msgstr "Color de mes:" +msgstr "Color de tipografía:" #: ../share/extensions/nicechart.inx.h:19 msgid "Charts" -msgstr "" +msgstr "Gráficas" #: ../share/extensions/nicechart.inx.h:20 -#, fuzzy msgid "Draw horizontally" -msgstr "Mover horizontalmente" +msgstr "Dibujar horizontalmente" #: ../share/extensions/nicechart.inx.h:21 -#, fuzzy msgid "Bar length:" -msgstr "Longitud p_rincipal:" +msgstr "Longitud de la barra:" #: ../share/extensions/nicechart.inx.h:22 -#, fuzzy msgid "Bar width:" -msgstr "Anchura de desenfoque:" +msgstr "Anchura de la barra:" #: ../share/extensions/nicechart.inx.h:23 -#, fuzzy msgid "Pie radius:" -msgstr "Radio interior:" +msgstr "Radio:" #: ../share/extensions/nicechart.inx.h:24 -#, fuzzy msgid "Bar offset:" -msgstr "Desvío azul" +msgstr "Desvío de la barra:" #: ../share/extensions/nicechart.inx.h:26 msgid "Offset between chart and labels:" -msgstr "" +msgstr "Separación entre gráficas y etiquetas:" #: ../share/extensions/nicechart.inx.h:27 msgid "Offset between chart and chart title:" -msgstr "" +msgstr "Separación entre gráfica y su título:" #: ../share/extensions/nicechart.inx.h:28 msgid "Work around aliasing effects (creates overlapping segments)" -msgstr "" +msgstr "Tratar con efectos anti-alias (crea segmentos solapados)" #: ../share/extensions/nicechart.inx.h:29 -#, fuzzy msgid "Color scheme:" -msgstr "Colores:" +msgstr "Esquema de colores:" #: ../share/extensions/nicechart.inx.h:30 -#, fuzzy msgid "Custom colors:" -msgstr "Color de bulto" +msgstr "Colores personalizados:" #: ../share/extensions/nicechart.inx.h:31 -#, fuzzy msgid "Reverse color scheme" -msgstr "Eliminar color de trazo" +msgstr "Esquema de color revertido" #: ../share/extensions/nicechart.inx.h:32 -#, fuzzy msgid "Drop shadow" msgstr "Sombra paralela" #: ../share/extensions/nicechart.inx.h:37 msgid "SAP" -msgstr "" +msgstr "SAP" #: ../share/extensions/nicechart.inx.h:38 -#, fuzzy msgid "Values" -msgstr "Valor" +msgstr "Valores" #: ../share/extensions/nicechart.inx.h:39 -#, fuzzy msgid "Show values" -msgstr "Mostrar tiradores" +msgstr "Mostrar valores" #: ../share/extensions/nicechart.inx.h:40 -#, fuzzy msgid "Chart type:" -msgstr "Tipo de sombra:" +msgstr "Tipo de gráfica:" #: ../share/extensions/nicechart.inx.h:41 -#, fuzzy msgid "Bar chart" -msgstr "Altura del código:" +msgstr "Gráfica de barra" #: ../share/extensions/nicechart.inx.h:42 msgid "Pie chart" -msgstr "" +msgstr "Gráfica circular" #: ../share/extensions/nicechart.inx.h:43 msgid "Pie chart (percentage)" -msgstr "" +msgstr "Gráfico circular (porcentaje)" #: ../share/extensions/nicechart.inx.h:44 msgid "Stacked bar chart" -msgstr "" +msgstr "Gráfica de barras apiladas" #: ../share/extensions/param_curves.inx.h:1 msgid "Parametric Curves" @@ -37701,29 +37716,24 @@ msgid "End t-value:" msgstr "Valor-t final:" #: ../share/extensions/param_curves.inx.h:5 -#, fuzzy msgid "Multiply t-range by 2*pi" -msgstr "Multiplicar rango-t por 2*pi:" +msgstr "Multiplicar rango-t por 2*pi" #: ../share/extensions/param_curves.inx.h:6 -#, fuzzy msgid "X-value of rectangle's left:" -msgstr "Valor-x de la parte izquierda del rectángulo:" +msgstr "Valor-x de la izquierda del rectángulo:" #: ../share/extensions/param_curves.inx.h:7 -#, fuzzy msgid "X-value of rectangle's right:" -msgstr "Valor-x de la parte derecha del rectángulo:" +msgstr "Valor-x de la derecha del rectángulo:" #: ../share/extensions/param_curves.inx.h:8 -#, fuzzy msgid "Y-value of rectangle's bottom:" -msgstr "Valor-y de la parte inferior del rectángulo:" +msgstr "Valor-y del inferior del rectángulo:" #: ../share/extensions/param_curves.inx.h:9 -#, fuzzy msgid "Y-value of rectangle's top:" -msgstr "Valor-y de la parte superior del rectángulo:" +msgstr "Valor-y del superior del rectángulo:" #: ../share/extensions/param_curves.inx.h:10 msgid "Samples:" @@ -37740,14 +37750,12 @@ msgstr "" "Las primeras derivadas siempre se determinan numéricamente." #: ../share/extensions/param_curves.inx.h:26 -#, fuzzy msgid "X-Function:" -msgstr "Función-x:" +msgstr "Función-X:" #: ../share/extensions/param_curves.inx.h:27 -#, fuzzy msgid "Y-Function:" -msgstr "Función-x:" +msgstr "Función-Y:" #: ../share/extensions/pathalongpath.inx.h:1 msgid "Pattern along Path" @@ -37940,28 +37948,24 @@ msgstr "" #: ../share/extensions/plotter.inx.h:1 msgid "Plot" -msgstr "" +msgstr "Trazar" #: ../share/extensions/plotter.inx.h:2 -#, fuzzy msgid "" "Please make sure that all objects you want to plot are converted to paths." msgstr "" "Asegúrese de que todos los objetos que desea trazar han sido convertidos a " -"trayectos. El trazado se alineará automáticamente al punto cero." +"trayectos." #: ../share/extensions/plotter.inx.h:3 -#, fuzzy msgid "Connection Settings " -msgstr "Conexiones" +msgstr "Configuración de conexión " #: ../share/extensions/plotter.inx.h:4 -#, fuzzy msgid "Serial port:" -msgstr "Puerto serie" +msgstr "Puerto serie:" #: ../share/extensions/plotter.inx.h:5 -#, fuzzy msgid "" "The port of your serial connection, on Windows something like 'COM1', on " "Linux something like: '/dev/ttyUSB0' (Default: COM1)" @@ -37970,19 +37974,16 @@ msgstr "" "Linux será algo como «/dev/ttyUSB0» (Predet.: «COM1»)" #: ../share/extensions/plotter.inx.h:6 -#, fuzzy msgid "Serial baud rate:" -msgstr "Puerto serie" +msgstr "Baudios serie:" #: ../share/extensions/plotter.inx.h:7 -#, fuzzy msgid "The Baud rate of your serial connection (Default: 9600)" msgstr "La velocidad en baudios de su conexión serie (Predet.: «9600»)" #: ../share/extensions/plotter.inx.h:8 -#, fuzzy msgid "Serial byte size:" -msgstr "Tamaño de paleta:" +msgstr "Tamaño byte serie:" #: ../share/extensions/plotter.inx.h:10 #, no-c-format @@ -37990,11 +37991,12 @@ msgid "" "The Byte size of your serial connection, 99% of all plotters use the default " "setting (Default: 8 Bits)" msgstr "" +"El tamaño de byte de su conexión serie, el 99% de los plóters usa el ajuste " +"predeterminado (8 bits)" #: ../share/extensions/plotter.inx.h:11 -#, fuzzy msgid "Serial stop bits:" -msgstr "Puerto serie" +msgstr "Bits de parada serie:" #: ../share/extensions/plotter.inx.h:13 #, no-c-format @@ -38002,11 +38004,12 @@ msgid "" "The Stop bits of your serial connection, 99% of all plotters use the default " "setting (Default: 1 Bit)" msgstr "" +"Los bits de parada de su conexión en serie, el 99% de los plóters usa el " +"ajuste predeterminado (1 bit)" #: ../share/extensions/plotter.inx.h:14 -#, fuzzy msgid "Serial parity:" -msgstr "Puerto serie" +msgstr "Paridad serie:" #: ../share/extensions/plotter.inx.h:16 #, no-c-format @@ -38014,68 +38017,72 @@ msgid "" "The Parity of your serial connection, 99% of all plotters use the default " "setting (Default: None)" msgstr "" +"La paridad de su conexión en serie, el 99% de los plóters usa el ajuste " +"predeterminado (Ninguno)" #: ../share/extensions/plotter.inx.h:17 -#, fuzzy msgid "Serial flow control:" -msgstr "Región de flujo" +msgstr "Control de flujo serie:" #: ../share/extensions/plotter.inx.h:18 -#, fuzzy msgid "" "The Software / Hardware flow control of your serial connection (Default: " "Software)" -msgstr "La velocidad en baudios de su conexión serie (Predet.: «9600»)" +msgstr "" +"El control de flujo Software/Hardware de su conexión en serie (Predet: " +"Software)" #: ../share/extensions/plotter.inx.h:19 -#, fuzzy msgid "Command language:" -msgstr "Segundo idioma:" +msgstr "Lenguaje de comandos:" #: ../share/extensions/plotter.inx.h:20 msgid "The command language to use (Default: HPGL)" -msgstr "" +msgstr "El lenguaje de comandos que se usará (Predet: HPGL)" #: ../share/extensions/plotter.inx.h:21 msgid "Software (XON/XOFF)" -msgstr "" +msgstr "Software (XON/XOFF)" #: ../share/extensions/plotter.inx.h:22 -#, fuzzy msgid "Hardware (RTS/CTS)" -msgstr "Hardware" +msgstr "Hardware (RTS/CTS)" #: ../share/extensions/plotter.inx.h:23 msgid "Hardware (DSR/DTR + RTS/CTS)" -msgstr "" +msgstr "Hardware (DSR/DTR + RTS/CTS)" #: ../share/extensions/plotter.inx.h:25 msgid "HPGL" -msgstr "" +msgstr "HPGL" #: ../share/extensions/plotter.inx.h:26 msgid "DMPL" -msgstr "" +msgstr "DMPL" #: ../share/extensions/plotter.inx.h:27 msgid "KNK Plotter (HPGL variant)" -msgstr "" +msgstr "KNK Plotter (Variante de HPGL)" #: ../share/extensions/plotter.inx.h:28 msgid "" "Using wrong settings can under certain circumstances cause Inkscape to " "freeze. Always save your work before plotting!" msgstr "" +"El uso de ajustes erróneos puede causar que Inkscape se congele. Guarde " +"siempre su trabajo antes de plotear." #: ../share/extensions/plotter.inx.h:29 msgid "" "This can be a physical serial connection or a USB-to-Serial bridge. Ask your " "plotter manufacturer for drivers if needed." msgstr "" +"Esto podría ser una conexión serie física o un puente USB-a-serie. Pida los " +"drivers a su proveedor si es necesario." #: ../share/extensions/plotter.inx.h:30 msgid "Parallel (LPT) connections are not supported." -msgstr "" +msgstr "Las conexiones paralelas (LPT) no están soportadas." #: ../share/extensions/plotter.inx.h:41 msgid "" @@ -38083,22 +38090,25 @@ msgid "" "(depending on your plotter model), set to 0 to omit command. Most plotters " "ignore this command. (Default: 0)" msgstr "" +"La velocidad a la que se moverá la pluma en centímetros o milímetros por " +"segundo (dependiendo del modelo de plóter), ponga 0 para omitir el comando. " +"La mayoría de plóters ignora el comando. (Predet. 0)" #: ../share/extensions/plotter.inx.h:42 -#, fuzzy msgid "Rotation (°, clockwise):" -msgstr "La rotación es a la derecha" +msgstr "Rotación (°, hacia la derecha):" #: ../share/extensions/plotter.inx.h:62 -#, fuzzy msgid "Show debug information" -msgstr "Información del uso de memoria" +msgstr "Mostrar información de depuración" #: ../share/extensions/plotter.inx.h:63 msgid "" "Check this to get verbose information about the plot without actually " "sending something to the plotter (A.k.a. data dump) (Default: Unchecked)" msgstr "" +"Márque esto para obtener información adicional acerca del ploteo sin enviar " +"datos al plóter (volcado de datos) (Predet: Desmarcado)" #: ../share/extensions/plt_input.inx.h:1 msgid "AutoCAD Plot Input" @@ -38329,9 +38339,8 @@ msgid "View Previous Glyph" msgstr "Ver glifo anterior" #: ../share/extensions/print_win32_vector.inx.h:1 -#, fuzzy msgid "Win32 Vector Print" -msgstr "Impresión Windows 32-bit" +msgstr "Impresión vector Win32" #: ../share/extensions/printing_marks.inx.h:1 msgid "Printing Marks" @@ -38465,24 +38474,20 @@ msgid "Square size (px):" msgstr "Tamaño de cuadro (px):" #: ../share/extensions/render_gear_rack.inx.h:1 -#, fuzzy msgid "Rack Gear" -msgstr "Rueda dentada" +msgstr "Engranaje de cremallera" #: ../share/extensions/render_gear_rack.inx.h:2 -#, fuzzy msgid "Rack Length:" -msgstr "Longitud:" +msgstr "Longitud del engranaje:" #: ../share/extensions/render_gear_rack.inx.h:3 -#, fuzzy msgid "Tooth Spacing:" -msgstr "Espaciado horizontal:" +msgstr "Espaciado de dientes:" #: ../share/extensions/render_gear_rack.inx.h:4 -#, fuzzy msgid "Contact Angle:" -msgstr "Triángulo de contacto" +msgstr "Ángulo de contacto:" #: ../share/extensions/render_gear_rack.inx.h:6 #: ../share/extensions/render_gears.inx.h:1 @@ -38518,14 +38523,12 @@ msgid "Find and Replace font" msgstr "Buscar y reemplazar tipografía" #: ../share/extensions/replace_font.inx.h:3 -#, fuzzy msgid "Find font: " -msgstr "Encontrar esta tipografía:" +msgstr "Buscar tipografía: " #: ../share/extensions/replace_font.inx.h:4 -#, fuzzy msgid "Replace with: " -msgstr "y reemplazarla con:" +msgstr "Reemplazar con: " #: ../share/extensions/replace_font.inx.h:5 msgid "Replace all fonts with: " @@ -38559,29 +38562,24 @@ msgid "Restack" msgstr "Apilar" #: ../share/extensions/restack.inx.h:2 -#, fuzzy msgid "Based on Position" -msgstr "Posición" +msgstr "Basado en posición" #: ../share/extensions/restack.inx.h:3 -#, fuzzy msgid "Presets" -msgstr "Prefijados:" +msgstr "Prefijados" #: ../share/extensions/restack.inx.h:6 -#, fuzzy msgid "Horizontal:" -msgstr "_Horizontal:" +msgstr "Horizontal:" #: ../share/extensions/restack.inx.h:7 -#, fuzzy msgid "Vertical:" -msgstr "_Vertical:" +msgstr "Vertical:" #: ../share/extensions/restack.inx.h:8 -#, fuzzy msgid "Restack Direction" -msgstr "Dirección de apilamiento:" +msgstr "Dirección de apilamiento" #: ../share/extensions/restack.inx.h:9 msgid "Left to Right (0)" @@ -38608,9 +38606,8 @@ msgid "Radial Inward" msgstr "Radial hacia adentro" #: ../share/extensions/restack.inx.h:15 -#, fuzzy msgid "Object Reference Point" -msgstr "punto de referencia dentro-fuera" +msgstr "Punto de referencia del objeto" #: ../share/extensions/restack.inx.h:17 #: ../share/extensions/text_extract.inx.h:9 @@ -38631,23 +38628,20 @@ msgid "Bottom" msgstr "Abajo" #: ../share/extensions/restack.inx.h:21 -#, fuzzy msgid "Based on Z-Order" -msgstr "Borde elevado" +msgstr "Basado en orden-Z" #: ../share/extensions/restack.inx.h:22 -#, fuzzy msgid "Restack Mode" -msgstr "Apilar" +msgstr "Modo de apilado" #: ../share/extensions/restack.inx.h:23 -#, fuzzy msgid "Reverse Z-Order" -msgstr "Revertir degradado" +msgstr "Revertir orden-Z" #: ../share/extensions/restack.inx.h:24 msgid "Shuffle Z-Order" -msgstr "" +msgstr "Mezclar orden-Z" #: ../share/extensions/restack.inx.h:26 msgid "" @@ -38656,6 +38650,10 @@ msgid "" "objects inside a single selected group, or a selection of multiple objects " "on the current drawing level (layer or group)." msgstr "" +"Esta extensión cambia el orden-z de objetos basándose en su posición sobre " +"el lienzo o su actual orden-z. Selección: la extensión vuelve a apilar los " +"objetos dentro de un solo grupo seleccionado, o una selección de objetos en " +"el nivel de dibujo actual (capa o grupo)." #: ../share/extensions/restack.inx.h:27 #: ../share/extensions/ungroup_deep.inx.h:6 @@ -38675,13 +38673,12 @@ msgid "Minimum size:" msgstr "Tamaño mínimo:" #: ../share/extensions/rtree.inx.h:4 -#, fuzzy msgid "Omit redundant segments" -msgstr "Enderezar segmentos" +msgstr "Omitir segmentos redundantes" #: ../share/extensions/rtree.inx.h:5 msgid "Lift pen for backward steps" -msgstr "" +msgstr "Levantar pluma para pasos hacia atrás" #: ../share/extensions/rubberstretch.inx.h:1 msgid "Rubber Stretch" @@ -38702,7 +38699,6 @@ msgid "Optimized SVG Output" msgstr "Salida SVG optimizada" #: ../share/extensions/scour.inx.h:3 -#, fuzzy msgid "Number of significant digits for coordinates:" msgstr "Dígitos significativos para coordenadas:" @@ -38714,6 +38710,11 @@ msgid "" "\"3\" is specified, the coordinate 3.14159 is output as 3.14 while the " "coordinate 123.675 is output as 124." msgstr "" +"Indica la cantidad de dígitos significativos que deberían ser la salida para " +"las coordenadas. Fíjese en que los dígitos significativos *no* son el número " +"decimales, pero el total de dígitos en la salida. Por ejemplo si se indica " +"un un valor de \"3\", la coordenada 3.14159 será 4.14 mientras que la " +"coordenada 123.675 será 124." #: ../share/extensions/scour.inx.h:5 msgid "Shorten color values" @@ -38724,6 +38725,8 @@ msgid "" "Convert all color specifications to #RRGGBB (or #RGB where applicable) " "format." msgstr "" +"Convertir todas las indicaciones de color a formato #RRGGBB (o #RGB cuando " +"sea aplicable)." #: ../share/extensions/scour.inx.h:7 msgid "Convert CSS attributes to XML attributes" @@ -38734,17 +38737,20 @@ msgid "" "Convert styles from style tags and inline style=\"\" declarations into XML " "attributes." msgstr "" +"Convertir los estilos de las etiquetas de estilo y las declaraciones de " +"estilo en línea (style=\"\") a atributos XML." #: ../share/extensions/scour.inx.h:9 -#, fuzzy msgid "Collapse groups" -msgstr "Cerrar huecos" +msgstr "Colapsar grupos" #: ../share/extensions/scour.inx.h:10 msgid "" "Remove useless groups, promoting their contents up one level. Requires " "\"Remove unused IDs\" to be set." msgstr "" +"Elimine grupos inútiles, subiendo su contenido un nivel. Requiere que " +"«Eliminar IDs sin usar» esté marcado." #: ../share/extensions/scour.inx.h:11 msgid "Create groups for similar attributes" @@ -38755,6 +38761,8 @@ msgid "" "Create groups for runs of elements having at least one attribute in common " "(e.g. fill-color, stroke-opacity, ...)." msgstr "" +"Crea grupos para elementos que tienen por lo menos un atributo en común (p." +"ej: relleno, opacidad de trazo, etc.)." #: ../share/extensions/scour.inx.h:13 msgid "Keep editor data" @@ -38765,14 +38773,16 @@ msgid "" "Don't remove editor-specific elements and attributes. Currently supported: " "Inkscape, Sodipodi and Adobe Illustrator." msgstr "" +"No eliminar elementos y atributos específicos de editor. Por ahora soporta: " +"Inkscape, Sodipodi y Adobe Illustrator." #: ../share/extensions/scour.inx.h:15 msgid "Keep unreferenced definitions" -msgstr "" +msgstr "Mantener definiciones sin referencia" #: ../share/extensions/scour.inx.h:16 msgid "Keep element definitions that are not currently used in the SVG" -msgstr "" +msgstr "Mantiene definiciones de elementos que actualmente no se usan en SVG" #: ../share/extensions/scour.inx.h:17 msgid "Work around renderer bugs" @@ -38783,11 +38793,12 @@ msgid "" "Works around some common renderer bugs (mainly libRSVG) at the cost of a " "slightly larger SVG file." msgstr "" +"Evita algunos errores comunes en renderizadores (principalmente libRSVG) a " +"costa de un archivo SVG in poco más grande." #: ../share/extensions/scour.inx.h:20 -#, fuzzy msgid "Remove the XML declaration" -msgstr "Eliminar la declaración xml" +msgstr "Eliminar la declaración XML" #: ../share/extensions/scour.inx.h:21 msgid "" @@ -38795,6 +38806,9 @@ msgid "" "especially if special characters are used in the document) from the file " "header." msgstr "" +"Elimina la declaración XML (que es opcional pero se debe proporcionar, " +"especialmente si se usan caracteres especiales en documento) de la cabecera " +"del archivo." #: ../share/extensions/scour.inx.h:22 msgid "Remove metadata" @@ -38806,6 +38820,9 @@ msgid "" "include license and author information, alternate versions for non-SVG-" "enabled browsers, etc." msgstr "" +"Elimina etiquetas de metadatos junto con toda la información que contienen, " +"lo que puede incluir información acerca de la licencia y el autor, versiones " +"alternativas para navegadores que no soportan SVG, etc." #: ../share/extensions/scour.inx.h:24 msgid "Remove comments" @@ -38813,18 +38830,19 @@ msgstr "Eliminar comentarios" #: ../share/extensions/scour.inx.h:25 msgid "Remove all XML comments from output." -msgstr "" +msgstr "Elminar todos los comentarios XML de la salida." #: ../share/extensions/scour.inx.h:26 -#, fuzzy msgid "Embed raster images" -msgstr "Incrustar imágenes" +msgstr "Incrustar imágenes rasterizadas" #: ../share/extensions/scour.inx.h:27 msgid "" "Resolve external references to raster images and embed them as Base64-" "encoded data URLs." msgstr "" +"Resuelve referencias externas a imágenes rasterizadas y las incrusta como " +"URLs de datos codificadas en Base64." #: ../share/extensions/scour.inx.h:28 msgid "Enable viewboxing" @@ -38836,10 +38854,12 @@ msgid "" "Set page size to 100%/100% (full width and height of the display area) and " "introduce a viewBox specifying the drawings dimensions." msgstr "" +"Fija el tamaño de página a 100%/100% (ancho y alto del espacio visible) e " +"introducu un nuevo contenedor con las dimensiones del dibujo." #: ../share/extensions/scour.inx.h:31 msgid "Format output with line-breaks and indentation" -msgstr "" +msgstr "Formatear salida con fin de línea y sangrado" #: ../share/extensions/scour.inx.h:32 msgid "" @@ -38847,11 +38867,13 @@ msgid "" "to hand-edit the SVG file you can disable this option to bring down the file " "size even more at the cost of clarity." msgstr "" +"Produce una salida formateada incluyendo saltos de línea. Si no tiene " +"intención de editar el archivo SVG a mano puede desactivar esta opción para " +"reducir el tamaño del archivo." #: ../share/extensions/scour.inx.h:33 -#, fuzzy msgid "Indentation characters:" -msgstr "Carácter Unicode:" +msgstr "Caracteres de sangrado:" #: ../share/extensions/scour.inx.h:34 msgid "" @@ -38859,21 +38881,27 @@ msgid "" "Specify \"None\" to disable indentation. This option has no effect if " "\"Format output with line-breaks and indentation\" is disabled." msgstr "" +"El tipo de sangrado que se utilizará para cada nivel de anidación en la " +"salida. Indique «Ninguno» para desactivar el sangrado. Esta opción no tiene " +"ningún efecto si está desactivado «Formatear salida con fin de línea y " +"sangrado»." #: ../share/extensions/scour.inx.h:35 -#, fuzzy msgid "Depth of indentation:" -msgstr "Función de profundidad:" +msgstr "Profundidad de sangrado:" #: ../share/extensions/scour.inx.h:36 msgid "" "The depth of the chosen type of indentation. E.g. if you choose \"2\" every " "nesting level in the output will be indented by two additional spaces/tabs." msgstr "" +"La profundidad del tipo de sangrado elegido. Por ejemplo, si ha elegido «2» " +"cada nivel de sangrado se indentará con dos espacios o tabulaciones " +"adicionales." #: ../share/extensions/scour.inx.h:37 msgid "Strip the \"xml:space\" attribute from the root SVG element" -msgstr "" +msgstr "Eliminar el atributo «xml:space» del elemento raíz SVG" #: ../share/extensions/scour.inx.h:38 msgid "" @@ -38881,16 +38909,18 @@ msgid "" "root SVG element which instructs the SVG editor not to change whitespace in " "the document at all (and therefore overrides the options above)." msgstr "" +"Esto es útil si el archivo de entrada indica «xml:space='preserve'» en el " +"elemento raíz SVG, lo que indica al editor SVG no cambiar en absoluto el " +"espacio en blanco del documento (y, por lo tanto, sobrescribe las opciones " +"anteriores)." #: ../share/extensions/scour.inx.h:39 -#, fuzzy msgid "Document options" -msgstr "Propiedades del _documento..." +msgstr "Opciones del documento" #: ../share/extensions/scour.inx.h:40 -#, fuzzy msgid "Pretty-printing" -msgstr "Pintura" +msgstr "Formateado de código" #: ../share/extensions/scour.inx.h:41 msgid "Space" @@ -38901,26 +38931,25 @@ msgid "Tab" msgstr "Tabulación" #: ../share/extensions/scour.inx.h:43 -#, fuzzy msgctxt "Indent" msgid "None" msgstr "Ninguno" #: ../share/extensions/scour.inx.h:44 -#, fuzzy msgid "IDs" -msgstr "ID" +msgstr "IDs" #: ../share/extensions/scour.inx.h:45 -#, fuzzy msgid "Remove unused IDs" -msgstr "Eliminar rojo" +msgstr "Eliminar IDs sin usar" #: ../share/extensions/scour.inx.h:46 msgid "" "Remove all unreferenced IDs from elements. Those are not needed for " "rendering." msgstr "" +"Eliminar todos los ID sin referencia de los elemento. No son necesarios para " +"el renderizado." #: ../share/extensions/scour.inx.h:47 msgid "Shorten IDs" @@ -38932,17 +38961,19 @@ msgid "" "shortest values to the most-referenced elements. For instance, " "\"linearGradient5621\" will become \"a\" if it is the most used element." msgstr "" +"Acorta la longitud de los IDs utilizando solo minúsculas, asignando los " +"valores más cortos a los elementos con más referencias. Por ejemplo, " +"«linearGradient5621» se convertirá en «a» si es el elemento más usado." #: ../share/extensions/scour.inx.h:49 msgid "Prefix shortened IDs with:" -msgstr "" +msgstr "Prefijar IDs acortados con:" #: ../share/extensions/scour.inx.h:50 msgid "Prepend shortened IDs with the specified prefix." -msgstr "" +msgstr "Añade el prefijo indicado a los IDs acortados.." #: ../share/extensions/scour.inx.h:51 -#, fuzzy msgid "Preserve manually created IDs not ending with digits" msgstr "Conservar los nombres de ID creados a mano que no terminan en números" @@ -38953,28 +38984,31 @@ msgid "" "preserved while numbered IDs (as they are generated by most SVG editors " "including Inkscape) will be removed/shortened." msgstr "" +"Se mantendrán los IDs descriptivos que fueron creados a mano para " +"referenciar o etiquetar elementos o grupos específicos (por ejemplo, " +"#inicioFlecha, #finFlecha o #etiquetaTexto) mientras que se eliminarán o " +"acortarán los IDs numerados (como los que generan Inkscape y la mayoría de " +"editors SVG)." #: ../share/extensions/scour.inx.h:53 -#, fuzzy msgid "Preserve the following IDs:" -msgstr "" -"Se han encontrado las siguientes tipografías:\n" -"%s" +msgstr "Se mantendrán los siguientes IDs:" #: ../share/extensions/scour.inx.h:54 msgid "A comma-separated list of IDs that are to be preserved." -msgstr "" +msgstr "Una lista separada por comas de los IDs que se conservarán." #: ../share/extensions/scour.inx.h:55 -#, fuzzy msgid "Preserve IDs starting with:" -msgstr "Conservar nombres de ID que comienzan con:" +msgstr "Conservar IDs que comienzan con:" #: ../share/extensions/scour.inx.h:56 msgid "" "Preserve all IDs that start with the specified prefix (e.g. specify \"flag\" " "to preserve \"flag-mx\", \"flag-pt\", etc.)." msgstr "" +"Conserva todos los IDs que comienzan con el prefijo indicado (por ejemplo, " +"indique «bandera» para conservar «bandera-mx», «bandera-pt», etc)." #: ../share/extensions/scour.inx.h:57 msgid "Optimized SVG (*.svg)" @@ -38985,30 +39019,26 @@ msgid "Scalable Vector Graphics" msgstr "Gráficos Vectoriales Escalables" #: ../share/extensions/seamless_pattern.inx.h:1 -#, fuzzy msgid "Seamless Pattern" -msgstr "Patrones Braille" +msgstr "Patrón continuo" #: ../share/extensions/seamless_pattern.inx.h:2 #: ../share/extensions/seamless_pattern_procedural.inx.h:2 -#, fuzzy msgid "Custom Width (px):" -msgstr "Ancho de trazo (px):" +msgstr "Anchura personalizada (px):" #: ../share/extensions/seamless_pattern.inx.h:3 #: ../share/extensions/seamless_pattern_procedural.inx.h:3 -#, fuzzy msgid "Custom Height (px):" -msgstr "Derecha (px):" +msgstr "Altura personalizada (px):" #: ../share/extensions/seamless_pattern.inx.h:4 -#, fuzzy msgid "This extension overwrites the current document" -msgstr "Seleccione una parada del degradado actual" +msgstr "Esta extensión sobrescribe el documento actual" #: ../share/extensions/seamless_pattern_procedural.inx.h:1 msgid "Seamless Pattern Procedural" -msgstr "" +msgstr "Patrón continuo procedural" #: ../share/extensions/setup_typography_canvas.inx.h:1 msgid "1 - Setup Typography Canvas" @@ -39039,9 +39069,8 @@ msgid "sK1 vector graphics files input" msgstr "Entrada de archivos de gráficos vectoriales sK1" #: ../share/extensions/sk1_input.inx.h:2 ../share/extensions/sk1_output.inx.h:2 -#, fuzzy msgid "sK1 vector graphics files (*.sk1)" -msgstr "Archivos de gráficos vectoriales sK1 (.sk1)" +msgstr "Archivos vectoriales sK1 (.sk1)" #: ../share/extensions/sk1_input.inx.h:3 msgid "Open files saved in sK1 vector graphics editor" @@ -39165,7 +39194,7 @@ msgstr "Salida XAML" #: ../share/extensions/svg2xaml.inx.h:2 msgid "Silverlight compatible XAML" -msgstr "" +msgstr "XAML compatible con Silverlight" #: ../share/extensions/svg2xaml.inx.h:3 ../share/extensions/xaml2svg.inx.h:2 msgid "Microsoft XAML (*.xaml)" @@ -39353,31 +39382,31 @@ msgid "Load only the first 30 glyphs (Recommended)" msgstr "Cargar solo los promeros 30 glifos (Recomendado)" #: ../share/extensions/synfig_output.inx.h:1 -#, fuzzy msgid "Synfig Output" -msgstr "Salida SVG" +msgstr "Salida Synfig" #: ../share/extensions/synfig_output.inx.h:2 msgid "Synfig Animation (*.sif)" -msgstr "" +msgstr "Animación Synfig (*.sif)" #: ../share/extensions/synfig_output.inx.h:3 msgid "Synfig Animation written using the sif-file exporter extension" -msgstr "" +msgstr "Animación Synfig escrita con la extensión de exportación sif-file" #: ../share/extensions/tar_layers.inx.h:1 msgid "Collection of SVG files One per root layer" -msgstr "" +msgstr "Colección de archivos SVG, uno por capa raíz" #: ../share/extensions/tar_layers.inx.h:2 msgid "Layers as Separate SVG (*.tar)" -msgstr "" +msgstr "Capas como SVG separados (*.tar)" #: ../share/extensions/tar_layers.inx.h:3 msgid "" "Each layer split into it's own svg file and collected as a tape archive (tar " "file)" msgstr "" +"Cada capa separada en su propio archivo SVG y aglomerados en un archivo tar" #: ../share/extensions/text_braille.inx.h:1 msgid "Convert to Braille" @@ -39441,9 +39470,8 @@ msgstr "minúsculas" #. false #: ../share/extensions/text_merge.inx.h:15 -#, fuzzy msgid "Keep style" -msgstr "Fijar estilo de texto" +msgstr "Mantener estilo" #: ../share/extensions/text_randomcase.inx.h:1 msgid "rANdOm CasE" @@ -39510,28 +39538,24 @@ msgid "From Side c and Angles a, b" msgstr "Desde lado c y ángulos a, b" #: ../share/extensions/ungroup_deep.inx.h:1 -#, fuzzy msgid "Deep Ungroup" -msgstr "Desagrupar" +msgstr "Desagrupación profunda" #: ../share/extensions/ungroup_deep.inx.h:2 -#, fuzzy msgid "Ungroup all groups in the selected object." -msgstr "Duplicar los objetos seleccionados" +msgstr "Desagrupar todos los grupos del objeto seleccionado." #: ../share/extensions/ungroup_deep.inx.h:3 -#, fuzzy msgid "Starting Depth" -msgstr "Inicio:" +msgstr "Profundidad de inicio" #: ../share/extensions/ungroup_deep.inx.h:4 -#, fuzzy msgid "Stopping Depth (from top)" -msgstr "Elimina el trazado de recorte de la selección" +msgstr "Profundidad final (desde arriba)" #: ../share/extensions/ungroup_deep.inx.h:5 msgid "Depth to Keep (from bottom)" -msgstr "" +msgstr "Profundidad a mantener (desde abajo)" #: ../share/extensions/voronoi2svg.inx.h:1 msgid "Voronoi Diagram" @@ -39550,9 +39574,8 @@ msgid "Show the bounding box" msgstr "Mostrar la caja de contorno" #: ../share/extensions/voronoi2svg.inx.h:6 -#, fuzzy msgid "Triangles color" -msgstr "Triángulo fuera" +msgstr "Color de triángulos" #: ../share/extensions/voronoi2svg.inx.h:7 msgid "Delaunay Triangulation" @@ -39571,22 +39594,20 @@ msgid "Automatic from selected objects" msgstr "Automáticamente de los objetos seleccionados" #: ../share/extensions/voronoi2svg.inx.h:12 -#, fuzzy msgid "Options for Delaunay Triangulation" -msgstr "Triangulación de Delauney" +msgstr "Opciones para Triangulación de Delauney" #: ../share/extensions/voronoi2svg.inx.h:13 msgid "Default (Stroke black and no fill)" -msgstr "" +msgstr "Predeterminado (trazo negro sin relleno)" #: ../share/extensions/voronoi2svg.inx.h:14 -#, fuzzy msgid "Triangles with item color" -msgstr "Cambiar el color de la muestra" +msgstr "Triángulos con color del elemento" #: ../share/extensions/voronoi2svg.inx.h:15 msgid "Triangles with item color (random on apply)" -msgstr "" +msgstr "Triángulos con color del elemento (aleatorio al aplicar)" #: ../share/extensions/voronoi2svg.inx.h:17 msgid "" @@ -40026,297 +40047,385 @@ msgstr "Un formato popular para clipart" msgid "XAML Input" msgstr "Entrada XAML" -#~ msgid "Master" -#~ msgstr "Maestro" +#~ msgid "" +#~ "Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" +#~ "Drawing elements may be too small. This can be corrected by\n" +#~ "either setting the SVG 'viewBox' to compensate or by scaling\n" +#~ "all the elements in the drawing." +#~ msgstr "" +#~ "Los archivos antiguos de Inkscape usan 1inch == 90px. CSS requiere 1inch " +#~ "== 96px.\n" +#~ "Los elementos dibujados podrían ser demasiado pequeños. Esto se puede " +#~ "corregir tanto\n" +#~ "ajustando el 'viewBox' de SVG para compensarlo o escalando todos los " +#~ "elementos en\n" +#~ "el dibujo." + +#~ msgid "Old Inkscape file detected (90 DPI)" +#~ msgstr "Se ha detectado un archivo de Inkscape antiguo (90 PPP)" -#~ msgid "GdlDockMaster object which the dockbar widget is attached to" +#~ msgid "Scale elements" +#~ msgstr "Escalar elementos" + +#~ msgid "" +#~ "Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" +#~ "Drawings meant to match a physical size (e.g. Letter or A4)\n" +#~ "will be too small. Scaling the drawing can correct for this.\n" +#~ "Internal scaling can be handled either by setting the SVG 'viewBox'\n" +#~ "attribute to compensate or by scaling all objects in the drawing." #~ msgstr "" -#~ "Objeto GdlDockMaster al que está unido el widget de la barra acoplable" +#~ "Los archivos antiguos de Inkscape usan 1inch == 90px. CSS requiere 1inch " +#~ "== 96px.\n" +#~ "Los dibujos que están hechos para corresponderse con un tamaño físico (p." +#~ "ej. A4, o Carta)\n" +#~ "serán demasiado pequeños. Se podrá corregir escalando los elementos.\n" +#~ "El escalado interno se puede gestionar ajustando el atributo 'viewBox' de " +#~ "SVG para compensarlo\n" +#~ "o escalando todos los objetos en el dibujo." -#~ msgid "Dockbar style" -#~ msgstr "Estilo de la barra acoplable" +#~ msgid "Inkscape Options" +#~ msgstr "Opciones de Inkscape" -#~ msgid "Dockbar style to show items on it" -#~ msgstr "Estilo de la barra acoplable para mostrar elementos en ella" +#~ msgid "Default program options" +#~ msgstr "Opciones predeterminadas del programa" -#~ msgid "Iconify this dock" -#~ msgstr "Minimizar este acoplable" +#~ msgid "NUM" +#~ msgstr "NUM" -#~ msgid "Close this dock" -#~ msgstr "Cerrar este acoplable" +#~ msgid "FILES..." +#~ msgstr "ARCHIVOS..." -#~ msgid "Controlling dock item" -#~ msgstr "Elemento acoplable controlador" +#~ msgid "Open SVG files" +#~ msgstr "Abrir archivos SVG" -#~ msgid "Dockitem which 'owns' this grip" -#~ msgstr "Dockitem que «posee» este agarre" +#~ msgid "Measure Line" +#~ msgstr "Medir línea" -#~ msgid "Orientation of the docking item" -#~ msgstr "Orientación del elemento acoplable" +#~ msgid "Starting angle" +#~ msgstr "Ángulo de inicio" -#~ msgid "Resizable" -#~ msgstr "Redimensionable" +#~ msgid "Vertical" +#~ msgstr "Vertical" -#~ msgid "" -#~ "If set, the dock item can be resized when docked in a GtkPanel widget" -#~ msgstr "" -#~ "Si se marca, el elemento acoplable se puede redimensionar si está " -#~ "acoplado a un widget GtkPanel" +#~ msgid "Unit*" +#~ msgstr "Unidad*" -#~ msgid "Item behavior" -#~ msgstr "Comportamiento del elemento" +#~ msgid "Font*" +#~ msgstr "Tipografía*" -#~ msgid "" -#~ "General behavior for the dock item (i.e. whether it can float, if it's " -#~ "locked, etc.)" -#~ msgstr "" -#~ "Comportamiento general del elemento acoplable (p.ej. si puede flotar, si " -#~ "está bloqueado, etc.)" +#~ msgid "Font Selector" +#~ msgstr "Selector de tipografía" -#~ msgid "Locked" -#~ msgstr "Bloqueado" +#~ msgid "Orientation method" +#~ msgstr "Método de orientación" -#~ msgid "" -#~ "If set, the dock item cannot be dragged around and it doesn't show a grip" -#~ msgstr "" -#~ "Si se marca, el elemento acoplable no se puede arrastrar y no muestra un " -#~ "agarre" +#~ msgid "Curve on origin" +#~ msgstr "Curva en origen" -#~ msgid "Preferred width" -#~ msgstr "Anchura preferida" +#~ msgid "Curve on origin, set 0 to start/end" +#~ msgstr "Curva en origen, use 0 para inicio/fin" -#~ msgid "Preferred width for the dock item" -#~ msgstr "Anchura preferida para el elemento acoplable" +#~ msgid "Precision*" +#~ msgstr "Precisión*" -#~ msgid "Preferred height" -#~ msgstr "Altura preferida" +#~ msgid "Positon*" +#~ msgstr "Positón*" -#~ msgid "Preferred height for the dock item" -#~ msgstr "Altura preferida del elemento acoplable" +#~ msgid "Positon" +#~ msgstr "Positón" -#~ msgid "" -#~ "You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or " -#~ "some other compound dock object." -#~ msgstr "" -#~ "No se puede añadir un objeto acoplable (%p de tipo %s) a un %s. Utilice " -#~ "un GdlDock u otro objeto acoplable compuesto." +#~ msgid "Text top/bottom*" +#~ msgstr "Texto arriba/abajo*" -#~ msgid "" -#~ "Attempting to add a widget with type %s to a %s, but it can only contain " -#~ "one widget at a time; it already contains a widget of type %s" -#~ msgstr "" -#~ "Intentando añadir un widget de tipo %s a un %s pero solamente puede " -#~ "contener uno a la vez y ya contiene un widget de tipo %s" +#~ msgid "Text top/bottom" +#~ msgstr "Texto arriba/abajo" -#~ msgid "Unsupported docking strategy %s in dock object of type %s" -#~ msgstr "" -#~ "Estrategia de acople no soportada, %s en objeto acoplable de tipo %s" +#~ msgid "Text right/left*" +#~ msgstr "Texto derecha/izquierda*" -#~ msgid "UnLock" -#~ msgstr "Desbloquear" +#~ msgid "Text right/left" +#~ msgstr "Texto derecha/izquierda" -#~ msgid "Hide" -#~ msgstr "Ocultar" +#~ msgid "Helpline distance*" +#~ msgstr "Distancia de línea auxiliar*" -#~ msgid "Lock" -#~ msgstr "Bloquear" +#~ msgid "Helpline distance" +#~ msgstr "Distancia de línea auxiliar" -#~ msgid "Attempt to bind an unbound item %p" -#~ msgstr "Intentado unir un elemento no unible %p" +#~ msgid "Helpline overlap*" +#~ msgstr "Solapamiento de línea auxiliar*" -#~ msgid "Default title" -#~ msgstr "Título predeterminado" +#~ msgid "Helpline overlap" +#~ msgstr "Solapamiento de línea auxiliar" -#~ msgid "Default title for newly created floating docks" -#~ msgstr "Título predeterminado para acoples flotantes nuevos" +#~ msgid "Scale*" +#~ msgstr "Escala*" -#~ msgid "" -#~ "If is set to 1, all the dock items bound to the master are locked; if " -#~ "it's 0, all are unlocked; -1 indicates inconsistency among the items" +#~ msgid "Scaling factor" +#~ msgstr "Factor de escala" + +#~ msgid "Format*" +#~ msgstr "Formato*" + +#~ msgid "Format the number ex:{measure} {unit}, return to save" +#~ msgstr "Formatear el número, p.ej.{medida} {unidad}, \"Enter\" para guardar" + +#~ msgid "Arrows outside" +#~ msgstr "Flechas fuera" + +#~ msgid "Flip side*" +#~ msgstr "Envés*" + +#~ msgid "Flip side" +#~ msgstr "Envés" + +#~ msgid "Scale sensitive*" +#~ msgstr "Sensible a escala*" + +#~ msgid "Costrained scale sensitive to transformed containers" +#~ msgstr "Escala constreñida, sensible a contenedores transformados" + +#~ msgid "Local Number Format*" +#~ msgstr "Formato local de número*" + +#~ msgid "Local number format" +#~ msgstr "Formato local de número" + +#~ msgid "Line Group 0.5*" +#~ msgstr "Grupo de líneas 0.5*" + +#~ msgid "Line Group 0.5, from 0.7" +#~ msgstr "Grupo de líneas 0.5, de 0.7" + +#~ msgid "Rotate Anotation*" +#~ msgstr "Rotar anotación*" + +#~ msgid "Rotate Anotation" +#~ msgstr "Rotar anotación" + +#~ msgid "Hide if label over*" +#~ msgstr "Ocultar si etiqueta por encima de*" + +#~ msgid "Hide DIN line if label over" +#~ msgstr "Ocultar línea DIN si la etiqueta por encima de" + +#~ msgid "CSS DIN line*" +#~ msgstr "Línea DIN CSS*" + +#~ msgid "Override CSS to DIN line, return to save, empty to reset to DIM" #~ msgstr "" -#~ "Si está a 1 se bloquean todos los elementos acoplables unidos al maestro; " -#~ "si está a 0, todos están desbloqueados; -1 indica inconsistencia entre " -#~ "los elementos" +#~ "Sobrescribir CSS a línea DIN, enter para guardar, vacío para volver a DIM" -#~ msgid "Switcher Style" -#~ msgstr "Estilo del intercambiador" +#~ msgid "CSS helpers*" +#~ msgstr "Ayudantes CSS*" -#~ msgid "Switcher buttons style" -#~ msgstr "Estilo de los botones del intercambiador" +#~ msgid "Override CSS to helper lines, return to save, empty to reset to DIM" +#~ msgstr "" +#~ "Sobrescribir CSS a líneas ayudantes, enter para guardar, vacío para " +#~ "volver a DIM" + +#~ msgid "CSS anotation*" +#~ msgstr "Anotación CSS*" #~ msgid "" -#~ "master %p: unable to add object %p[%s] to the hash. There already is an " -#~ "item with that name (%p)." +#~ "Override CSS to anotation text, return to save, empty to reset to DIM" #~ msgstr "" -#~ "maestro %p: no se pueda añadir el objeto %p[%s] al conjunto. Ya hay un " -#~ "elemento con ese nombre (%p)." +#~ "Sobrescribir CSS a texto de anotación, enter para guardar, vacío para " +#~ "volver a DIM" -#~ msgid "" -#~ "The new dock controller %p is automatic. Only manual dock objects should " -#~ "be named controller." +#~ msgid "CSS arrows*" +#~ msgstr "Flechas CSS*" + +#~ msgid "Override CSS to arrows, return to save, empty to reset DIM" #~ msgstr "" -#~ "El controlador de acople %p es automático. Solamente se debería nombrar " -#~ "controlador a los objetos acoplables manuales." +#~ "Sobrescribir CSS a flechas, enter para guardar, vacío para volver a DIM" -#~ msgid "The index of the current page" -#~ msgstr "El índice de la página actual" +#~ msgid "Non Uniform Scale" +#~ msgstr "Escala no uniforme" -#~ msgid "Unique name for identifying the dock object" -#~ msgstr "Nombre único para identificar el objeto acoplable" +#~ msgid "Save '*' as default" +#~ msgstr "Guardar «*» como predeterminado" -#~ msgid "Long name" -#~ msgstr "Nombre largo" +#~ msgid "Show DIM CSS style override" +#~ msgstr "Mostrar sobrescritura DIM estilo CSS" -#~ msgid "Human readable name for the dock object" -#~ msgstr "Nombre legible para el objeto acoplable" +#~ msgid "Hide DIM CSS style override" +#~ msgstr "Ocultar sobrescritura DIM estilo CSS" -#~ msgid "Stock Icon" -#~ msgstr "Icono estándar" +#~ msgid "Show center of node" +#~ msgstr "Mostrar centro de nodo" -#~ msgid "Stock icon for the dock object" -#~ msgstr "Icono estándar para el objeto acoplable" +#~ msgid "Change font button parameter" +#~ msgstr "Cambiar parámetro de botón de tipos" -#~ msgid "Pixbuf Icon" -#~ msgstr "Icono pixbuf" +#~ msgid "xverbs command" +#~ msgstr "comando xverbs" -#~ msgid "Pixbuf icon for the dock object" -#~ msgstr "Icono pixbuf para el objeto acoplable" +#~ msgid "XVERBS_FILENAME" +#~ msgstr "NOMBRE_DE_ARCHIVO_XVERBS" -#~ msgid "Dock master" -#~ msgstr "Maestro de acople" +#~ msgid "Unlink clone recursively" +#~ msgstr "Desconectar clon recursivamente" -#~ msgid "Dock master this dock object is bound to" -#~ msgstr "Maestro de acople al que está unido este objeto acoplable" +#~ msgid "Use interlacing" +#~ msgstr "Usar entrelazado" #~ msgid "" -#~ "Call to gdl_dock_object_dock in a dock object %p (object type is %s) " -#~ "which hasn't implemented this method" +#~ "Enables ADAM7 interlacing for PNG output. This results in slightly " +#~ "heavier images, but big images will look better sooner when loading the " +#~ "file" #~ msgstr "" -#~ "Llamada a gdl_dock_object_dock en un objeto acoplable %p (tipo de objeto " -#~ "es %s) que no ha implementado este método" +#~ "Activa entrelazado ADAM7 para salida PNG. Esto resultará en imágenes " +#~ "ligeramente más pesadas pero las imágenes grandes tendrán mejor aspecto " +#~ "más rápidamente mientras se cargan." + +#~ msgid "Bit depth" +#~ msgstr "Profundidad de bits" + +#~ msgid "Compression" +#~ msgstr "Compresión" + +#~ msgid "pHYs dpi" +#~ msgstr "ppp de pHYs" + +#~ msgid "Advanced" +#~ msgstr "Avanzado" #~ msgid "" -#~ "Dock operation requested in a non-bound object %p. The application might " -#~ "crash" +#~ "Will force-set the physical dpi for the png file. Set this to 72 if " +#~ "you're planning to work on your png with Photoshop" #~ msgstr "" -#~ "Se ha solicitado una operación de acople en un objeto no unido %p. La " -#~ "aplicación podría detenerse" +#~ "Forzará los ppp físicos del archivo png. Ajuste esto a 72 si va a " +#~ "trabajar con el png en Photoshop." -#~ msgid "Cannot dock %p to %p because they belong to different masters" -#~ msgstr "No se puede acoplar %p a %p porque pertenecen a diferentes maestros" +#~ msgid "Enable dynamic relayout for incomplete sections" +#~ msgstr "Activar redisposición dinámica para secciones incompletas" #~ msgid "" -#~ "Attempt to bind to %p an already bound dock object %p (current master: %p)" +#~ "When on, will allow dynamic layout of components that are not completely " +#~ "finished being refactored" #~ msgstr "" -#~ "Intento de unir a %p un objeto acoplable ya unido %p (maestro actual %p)" +#~ "Si se activa permitirá la disposición dinámica de componentes que no han " +#~ "sido refactorizados completamente" -#~ msgid "Position of the divider in pixels" -#~ msgstr "Posición del divisor en píxeles" +#~ msgid "Font Attributes" +#~ msgstr "Atributos de tipografía" -#~ msgid "Sticky" -#~ msgstr "Pegajoso" +#~ msgid "Horiz. Advance X" +#~ msgstr "Avance horiz. X" -#~ msgid "" -#~ "Whether the placeholder will stick to its host or move up the hierarchy " -#~ "when the host is redocked" -#~ msgstr "" -#~ "Indica si el sustituto se pega a su host o si se mueve hacia arriba en la " -#~ "jerarquía cuando se reacopla el host" +#~ msgid "Horiz. Origin X " +#~ msgstr "Origen horiz. X " -#~ msgid "Host" -#~ msgstr "Host" +#~ msgid "Horiz. Origin Y " +#~ msgstr "Origen horiz. Y " -#~ msgid "The dock object this placeholder is attached to" -#~ msgstr "El objeto acoplable al que está sujeto este sustituto" +#~ msgid "Font Face Attributes" +#~ msgstr "Atributo de la cara del tipo" -#~ msgid "Next placement" -#~ msgstr "Siguiente posición" +#~ msgid "Units per em" +#~ msgstr "Unidades por em" -#~ msgid "" -#~ "The position an item will be docked to our host if a request is made to " -#~ "dock to us" -#~ msgstr "" -#~ "La posición en la que se acoplará un elemento a nuestro host si se " -#~ "realiza una petición para acoplarse a nosotros" +#~ msgid "Ascent:" +#~ msgstr "Ascendencia:" + +#~ msgid "Descent:" +#~ msgstr "Descendencia:" + +#~ msgid "Cap Height:" +#~ msgstr "Altura de cúspide:" -#~ msgid "Width for the widget when it's attached to the placeholder" -#~ msgstr "Anchura del widget cuando está sujeto al sustituto" +#~ msgid "x Height:" +#~ msgstr "Altura x:" -#~ msgid "Height for the widget when it's attached to the placeholder" -#~ msgstr "Altura del widget cuando está sujeto al sustituto" +#~ msgid "Set glyph advance" +#~ msgstr "Fijar avance de glifo" -#~ msgid "Floating Toplevel" -#~ msgstr "Nivel superior flotante" +#~ msgid "Advance" +#~ msgstr "Avance" -#~ msgid "Whether the placeholder is standing in for a floating toplevel dock" +#~ msgid "Shift to measure into group" +#~ msgstr "Mayús para medir dentro del grupo" + +#~ msgid "Unlink Clones _recursively" +#~ msgstr "Desconectar clones _recursivamente" + +#~ msgid "Unlink all clones in the selection, even if they are in groups." #~ msgstr "" -#~ "Indica si el sustituto sustituye a un acople flotante de nivel superior" +#~ "Desconectar todos los clones en la selección, incluso si están en un " +#~ "grupo." -#~ msgid "X Coordinate" -#~ msgstr "Coordenada X" +#~ msgid "_Grow" +#~ msgstr "A_grandar" -#~ msgid "X coordinate for dock when floating" -#~ msgstr "Coordenada X para el acople cuando flota" +#~ msgid "Make selected objects bigger" +#~ msgstr "Agrandar los objetos seleccionados" -#~ msgid "Y Coordinate" -#~ msgstr "Coordenada Y" +#~ msgid "_Grow on screen" +#~ msgstr "A_grandar en pantalla" -#~ msgid "Y coordinate for dock when floating" -#~ msgstr "Coordenada Y para el acople cuando flota" +#~ msgid "Make selected objects bigger relative to screen" +#~ msgstr "Agrandar los objetos seleccionados en relación a la pantalla" -#~ msgid "Attempt to dock a dock object to an unbound placeholder" -#~ msgstr "Intento de acoplar un objeto acoplable a un sustituto no ligado" +#~ msgid "_Double size" +#~ msgstr "_Duplicar tamaño" -#~ msgid "Got a detach signal from an object (%p) who is not our host %p" -#~ msgstr "" -#~ "Se ha recibido una señal de separación de un objeto (%p) que no es " -#~ "nuestro host %p" +#~ msgid "Double the size of selected objects" +#~ msgstr "Duplicar el tamaño de los objetos seleccionados" -#~ msgid "" -#~ "Something weird happened while getting the child placement for %p from " -#~ "parent %p" -#~ msgstr "" -#~ "Ha ocurrido algo raro al obtener el lugar del hijo para %p del padre %p" +#~ msgid "_Shrink" +#~ msgstr "_Encoger" + +#~ msgid "Make selected objects smaller" +#~ msgstr "Encoger los objetos seleccionados" + +#~ msgid "_Shrink on screen" +#~ msgstr "_Encoger en pantalla" + +#~ msgid "Make selected objects smaller relative to screen" +#~ msgstr "Encoge los objetos seleccionados en relación a la pantalla" -#~ msgid "Dockitem which 'owns' this tablabel" -#~ msgstr "Elemento acoplable que es «dueño» de esta etiqueta de pestaña" +#~ msgid "_Halve size" +#~ msgstr "_Mitad" -#~ msgid "Whether the dock is floating in its own window" -#~ msgstr "Indica si el acoplable flota en su propia ventana" +#~ msgid "Halve the size of selected objects" +#~ msgstr "Reducir los objetos seleccionados a la mitad de su tamaño" -#~ msgid "Default title for the newly created floating docks" -#~ msgstr "Título predeterminado para acoplables flotantes nuevos" +#~ msgid "_Stroke to Path Legacy" +#~ msgstr "_Trazo a trayecto modo antiguo" -#~ msgid "Width for the dock when it's of floating type" -#~ msgstr "Anchura para el acoplable si es de tipo flotante" +#~ msgid "Convert selected object's stroke to paths legacy mode" +#~ msgstr "" +#~ "Convierte las líneas del objeto seleccionado en trayectos al modo antiguo" -#~ msgid "Height for the dock when it's of floating type" -#~ msgstr "Altura para el acoplable si es de tipo flotante" +#~ msgid "Cut out from paths and shapes" +#~ msgstr "Recortar de trayectos y formas" -#~ msgid "Float X" -#~ msgstr "Flotante X" +#~ msgid "Clip" +#~ msgstr "Recorte" -#~ msgid "X coordinate for a floating dock" -#~ msgstr "Coordenada X de un acoplable flotante" +#~ msgid "Eraser Pressure" +#~ msgstr "Presión del borrador" -#~ msgid "Float Y" -#~ msgstr "Flotante X" +#~ msgid "Eraser Stroke Thinning" +#~ msgstr "Reducción del trazo del borrador" -#~ msgid "Y coordinate for a floating dock" -#~ msgstr "Coordenada Y de un acoplable flotante" +#~ msgid "Eraser Cap rounding" +#~ msgstr "Redondeado del tope del borrador" -#~ msgid "Dock #%d" -#~ msgstr "Acoplable nº %d" +#~ msgid "EraserStroke Tremor" +#~ msgstr "Temblor del trazo del borrador" -#~ msgid "Select object(s) to raise to top." -#~ msgstr "Seleccione los objetos que desea traer al frente." +#~ msgid "The offset size" +#~ msgstr "Tamaño del desvío" -#~ msgid "Set width:" -#~ msgstr "Fijar anchura:" +#, fuzzy +#~ msgid "Spacing between baselines" +#~ msgstr "Espacio entre líneas (veces el tamaño de la fuente)" #, fuzzy -#~ msgid "Spacing between baselines (percent of font size)" -#~ msgstr "Espacio entre líneas (porcentaje del tamaño de la fuente)" +#~ msgid "Area (" +#~ msgstr "Área" #, fuzzy #~ msgid "Create default mesh" @@ -40338,9 +40447,6 @@ msgstr "Entrada XAML" #~ msgid "Mesh gradient" #~ msgstr "Degradado lineal" -#~ msgid "Area (px^2): " -#~ msgstr "Área (px^2): " - #~ msgid "" #~ "Select exactly 2 paths to perform difference, division, or path " #~ "cut." @@ -43592,9 +43698,6 @@ msgstr "Entrada XAML" #~ msgid "Adjust the \"right\" end of the tangent" #~ msgstr "Ajusta el punto «derecho» de la tangente" -#~ msgid "Stack step:" -#~ msgstr "Paso de la pila:" - #~ msgid "Point param:" #~ msgstr "Parámetro de punto:" -- cgit v1.2.3 From 97b6ec4a0451984ecb8086b8f609ee0d8d1e1326 Mon Sep 17 00:00:00 2001 From: Igor Zhigunov Date: Fri, 29 Sep 2017 21:10:03 +0200 Subject: Translations: Update Russian (ru) translation --- po/ru.po | 290 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 189 insertions(+), 101 deletions(-) diff --git a/po/ru.po b/po/ru.po index bae182d30..e0ec8c888 100644 --- a/po/ru.po +++ b/po/ru.po @@ -15,14 +15,14 @@ msgstr "" "Project-Id-Version: Inkscape 0.92\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2017-07-30 23:09+0200\n" -"PO-Revision-Date: 2017-07-31 01:44+0300\n" -"Last-Translator: Alexandre Prokoudine \n" +"PO-Revision-Date: 2017-09-29 02:34+0500\n" +"Last-Translator: ashed \n" "Language-Team: русский <>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 2.91.7\n" +"X-Generator: Poedit 1.5.4\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" @@ -704,7 +704,8 @@ msgstr "Чёрная дыра" #: ../share/filters/filters.svg.h:279 ../share/filters/filters.svg.h:835 #: ../share/filters/filters.svg.h:839 ../share/filters/filters.svg.h:843 #: ../src/extension/internal/filter/morphology.h:76 -#: ../src/extension/internal/filter/morphology.h:203 ../src/filter-enums.cpp:32 +#: ../src/extension/internal/filter/morphology.h:203 +#: ../src/filter-enums.cpp:32 msgid "Morphology" msgstr "Морфология" @@ -4521,12 +4522,12 @@ msgstr "Направляющая: %s" #: ../src/desktop.cpp:766 #, fuzzy msgid "No previous transform." -msgstr "Нет предыдущего масштаба." +msgstr "Нет предыдущей трансформации." #: ../src/desktop.cpp:789 #, fuzzy msgid "No next transform." -msgstr "Нет следующего масштаба." +msgstr "Нет следующей трансформации." #: ../src/display/canvas-axonomgrid.cpp:325 ../src/display/canvas-grid.cpp:683 msgid "Grid _units:" @@ -4685,7 +4686,7 @@ msgstr "Показывать точки в_место линий" #: ../src/display/canvas-grid.cpp:727 msgid "If set, displays dots at gridpoints instead of gridlines" -msgstr "Отображается ли сетка лишь точками пересечения ее линий" +msgstr "Отображается ли сетка лишь точками пересечения её линий" #. TRANSLATORS: undefined target for snapping #: ../src/display/snap-indicator.cpp:72 ../src/display/snap-indicator.cpp:75 @@ -5086,7 +5087,8 @@ msgstr "Адаптивная постеризация" #: ../src/ui/widget/page-sizer.cpp:232 #: ../src/widgets/calligraphy-toolbar.cpp:430 #: ../src/widgets/eraser-toolbar.cpp:187 ../src/widgets/spray-toolbar.cpp:297 -#: ../src/widgets/tweak-toolbar.cpp:128 ../share/extensions/foldablebox.inx.h:2 +#: ../src/widgets/tweak-toolbar.cpp:128 +#: ../share/extensions/foldablebox.inx.h:2 msgid "Width:" msgstr "Ширина:" @@ -5902,7 +5904,8 @@ msgstr "Отменить" #: ../src/extension/internal/pdfinput/pdf-input.cpp:88 #: ../src/extension/internal/vsd-input.cpp:151 #: ../src/extension/prefdialog.cpp:75 ../src/ui/dialog/guides.cpp:159 -#: ../src/ui/dialog/pixelartdialog.cpp:298 ../src/ui/dialog/tracedialog.cpp:820 +#: ../src/ui/dialog/pixelartdialog.cpp:298 +#: ../src/ui/dialog/tracedialog.cpp:820 msgid "_OK" msgstr "_ОК:" @@ -6588,13 +6591,15 @@ msgid "Transparency type:" msgstr "Тип прозрачности:" #: ../src/extension/internal/filter/bumps.h:353 -#: ../src/extension/internal/filter/morphology.h:176 ../src/filter-enums.cpp:91 +#: ../src/extension/internal/filter/morphology.h:176 +#: ../src/filter-enums.cpp:91 msgid "Atop" msgstr "Сверху (atop)" #: ../src/extension/internal/filter/bumps.h:354 #: ../src/extension/internal/filter/distort.h:70 -#: ../src/extension/internal/filter/morphology.h:174 ../src/filter-enums.cpp:89 +#: ../src/extension/internal/filter/morphology.h:174 +#: ../src/filter-enums.cpp:89 msgid "In" msgstr "Вход" @@ -7114,7 +7119,8 @@ msgid "Felt Feather" msgstr "Растушёвка" #: ../src/extension/internal/filter/distort.h:71 -#: ../src/extension/internal/filter/morphology.h:175 ../src/filter-enums.cpp:90 +#: ../src/extension/internal/filter/morphology.h:175 +#: ../src/filter-enums.cpp:90 msgid "Out" msgstr "Выход" @@ -7305,11 +7311,13 @@ msgstr "Скрыть изображение" msgid "Composite type:" msgstr "Составной тип:" -#: ../src/extension/internal/filter/morphology.h:173 ../src/filter-enums.cpp:88 +#: ../src/extension/internal/filter/morphology.h:173 +#: ../src/filter-enums.cpp:88 msgid "Over" msgstr "Над" -#: ../src/extension/internal/filter/morphology.h:177 ../src/filter-enums.cpp:92 +#: ../src/extension/internal/filter/morphology.h:177 +#: ../src/filter-enums.cpp:92 msgid "XOR" msgstr "Исключающее ИЛИ (XOR)" @@ -7383,8 +7391,8 @@ msgstr "Заливка шумом" #: ../src/ui/dialog/tracedialog.cpp:745 #: ../share/extensions/color_HSL_adjust.inx.h:2 #: ../share/extensions/color_custom.inx.h:2 -#: ../share/extensions/color_randomize.inx.h:2 ../share/extensions/dots.inx.h:2 -#: ../share/extensions/dxf_input.inx.h:2 +#: ../share/extensions/color_randomize.inx.h:2 +#: ../share/extensions/dots.inx.h:2 ../share/extensions/dxf_input.inx.h:2 #: ../share/extensions/dxf_outlines.inx.h:2 #: ../share/extensions/gcodetools_area.inx.h:45 #: ../share/extensions/gcodetools_engraving.inx.h:15 @@ -7985,13 +7993,15 @@ msgstr "Смещение по вертикали:" #: ../src/extension/internal/grid.cpp:209 #: ../src/ui/dialog/inkscape-preferences.cpp:1512 #: ../share/extensions/draw_from_triangle.inx.h:58 -#: ../share/extensions/eqtexsvg.inx.h:4 ../share/extensions/foldablebox.inx.h:9 -#: ../share/extensions/frame.inx.h:2 ../share/extensions/funcplot.inx.h:38 +#: ../share/extensions/eqtexsvg.inx.h:4 +#: ../share/extensions/foldablebox.inx.h:9 ../share/extensions/frame.inx.h:2 +#: ../share/extensions/funcplot.inx.h:38 #: ../share/extensions/grid_cartesian.inx.h:23 #: ../share/extensions/grid_isometric.inx.h:11 #: ../share/extensions/grid_polar.inx.h:22 #: ../share/extensions/guides_creator.inx.h:25 -#: ../share/extensions/hershey.inx.h:52 ../share/extensions/layout_nup.inx.h:35 +#: ../share/extensions/hershey.inx.h:52 +#: ../share/extensions/layout_nup.inx.h:35 #: ../share/extensions/lindenmayer.inx.h:34 #: ../share/extensions/nicechart.inx.h:45 #: ../share/extensions/param_curves.inx.h:30 @@ -8187,7 +8197,7 @@ msgstr "Импорт PDF" #: ../src/extension/internal/pdfinput/pdf-input.cpp:948 #, fuzzy msgid "Portable Document Format (*.pdf)" -msgstr "Adobe Portable Document Format" +msgstr "Portable Document Format (*.pdf)" #: ../src/extension/internal/pdfinput/pdf-input.cpp:949 #, fuzzy @@ -8396,35 +8406,43 @@ msgstr "Невозможно определить формат файла. Фа #: ../src/file-update.cpp:320 #, fuzzy msgid "Convert legacy Inkscape file" -msgstr "Преобразовать в инверсное скругление" +msgstr "Преобразовать унаследованный Inkscape файл" #: ../src/file-update.cpp:325 msgid "" "was created in an older version of Inkscape (90 DPI) and we need to make it " "compatible with newer versions (96 DPI). Tell us about this file:\n" msgstr "" +"созданный в старой версии Inkscape (90 DPI) и сделать его совместимым с " +"новыми версиями (96 DPI). Сообщите нам об этом файле:\n" #: ../src/file-update.cpp:333 msgid "" "This file contains digital artwork for screen display. (Choose if " "unsure.)" msgstr "" +"Этот файл содержит изображение для дисплея. (Выберите если не уверены.)" #: ../src/file-update.cpp:336 msgid "This file is intended for physical output, such as paper or 3D prints." -msgstr "" +msgstr "Этот файл предназначен для физического вывода на бумагу или 3D-печати." #: ../src/file-update.cpp:338 msgid "" "The appearance of elements such as clips, masks, filters, and clones\n" "is most important. (Choose if unsure.)" msgstr "" +"Видимость элементов, таких как клипы, маски, фильтры и клоны\n" +"наиболее важно. (Выберите если не уверены.)" #: ../src/file-update.cpp:342 msgid "" "The accuracy of the physical unit size and position values of objects\n" "in the file is most important. (Experimental.)" msgstr "" +"Точность физического размера и значений позиции объектов\n" +"в файле наиболее важно. (Экспериментально.)" #: ../src/file-update.cpp:344 #, fuzzy @@ -8433,7 +8451,7 @@ msgstr "Создать бэкап в той же папке." #: ../src/file-update.cpp:345 msgid "More details..." -msgstr "" +msgstr "Детальнее..." #: ../src/file-update.cpp:348 msgid "" @@ -8457,6 +8475,25 @@ msgid "" "More information about this change are available in the Inkscape FAQ" msgstr "" +"Мы обновили Inkscape для соответствия CSS стандарту 96 DPI для лучшей " +"браузерной совместимости; ранее мы использовали 90 DPI. Цифровое изображение " +"для экрана будет преобразовано в 96 DPI без масштабирования и не должно " +"подвергаться воздействию. Художественное произведение, нарисованное на 90 " +"DPI для определенного физического размера, будет слишком маленьким, если " +"преобразовать его в 96 DPI без какого-либо масштабирования. Существует два " +"метода масштабирования:\n" +"\n" +" Масштабирование всего документа: Метод с наименьшей погрешностью, " +"сохраняет внешний вид графики, включая фильтры и положение масок и т. д. " +"Масштабы графики относительно размера документа могут не быть точными.\n" +"\n" +"Масштабирование отдельных элементов в графике: Этот метод менее " +"надёжен и может привести к изменению внешнего вида, но лучше для физического " +"вывода, зависящего от точных размеров и позиций (например, для трехмерной " +"печати).\n" +"\n" +"Более подробную информацию об этом изменении можно найти в FAQ Inkscape" #: ../src/file-update.cpp:391 msgid "OK" @@ -8707,7 +8744,8 @@ msgstr "Вращение тона" msgid "Luminance to Alpha" msgstr "Освещенность в альфа" -#: ../src/filter-enums.cpp:87 ../share/extensions/jessyInk_mouseHandler.inx.h:3 +#: ../src/filter-enums.cpp:87 +#: ../share/extensions/jessyInk_mouseHandler.inx.h:3 #: ../share/extensions/jessyInk_transitions.inx.h:7 #: ../share/extensions/measure.inx.h:20 ../share/extensions/nicechart.inx.h:33 msgid "Default" @@ -9019,7 +9057,7 @@ msgstr "Коэффициент масштаба" #: ../src/inkview.cpp:105 msgid "FILES/FOLDERS…" -msgstr "" +msgstr "ФАЙЛЫ/ПАПКИ..." #: ../src/inkview.cpp:120 #, fuzzy @@ -9041,16 +9079,20 @@ msgid "" "Quickly browse through a collection of .svg(z) files\n" "or show them as a slide show." msgstr "" +"Быстрый просмотр коллекции файлов .svg(z)\n" +"или показ их как слайд-шоу." #: ../src/inkview.cpp:180 msgid "" "Example:\n" " inkview -t 3 file1.svg file2.svgz series*.svg more_files" msgstr "" +"Пример:\n" +" inkview -t 3 file1.svg file2.svgz series*.svg more_files" #: ../src/inkview.cpp:213 msgid "No valid files to load." -msgstr "" +msgstr "Нет валидных файлов для загрузки." #: ../src/knot.cpp:343 msgid "Node or handle drag canceled." @@ -9228,7 +9270,7 @@ msgstr "Булева операция" #: ../src/live_effects/effect.cpp:130 msgid "Embrodery stitch" -msgstr "" +msgstr "Вышивальная строчка" #: ../src/live_effects/effect.cpp:132 msgid "doEffect stack test" @@ -9333,7 +9375,7 @@ msgstr "Снять" #: ../src/live_effects/effect.cpp:852 msgid ": Set default parameters" -msgstr "" +msgstr ": Установить умолчальные параметры" #: ../src/live_effects/effect.cpp:952 #, c-format @@ -9522,11 +9564,11 @@ msgstr "Булева операция" #: ../src/live_effects/lpe-bool.cpp:73 msgid "Swap operands:" -msgstr "" +msgstr "Обменять операнды:" #: ../src/live_effects/lpe-bool.cpp:73 msgid "Swap operands (useful e.g. for difference)" -msgstr "" +msgstr "Обменять операнды (полезно, например, для разницы)" #: ../src/live_effects/lpe-bool.cpp:74 #, fuzzy @@ -9538,6 +9580,8 @@ msgid "" "For cut operations: remove inner (non-contour) lines of cutting path to " "avoid invisible extra points" msgstr "" +"Для операций обрезки: удалить внутренние (неконтурные) линии пути резания, " +"чтобы избежать невидимых дополнительных точек" #: ../src/live_effects/lpe-bool.cpp:75 #, fuzzy @@ -9546,15 +9590,15 @@ msgstr "Все типы" #: ../src/live_effects/lpe-bool.cpp:75 msgid "Fill type (winding mode) for this path" -msgstr "" +msgstr "Тип заполнения (режим намотки) для этого контура" #: ../src/live_effects/lpe-bool.cpp:76 msgid "Fill type operand:" -msgstr "" +msgstr "Тип заполнения операнда:" #: ../src/live_effects/lpe-bool.cpp:76 msgid "Fill type (winding mode) for operand path" -msgstr "" +msgstr "Тип заполнения (режим намотки) для операндного контура" #: ../src/live_effects/lpe-bounding-box.cpp:20 #: ../src/live_effects/lpe-fill-between-many.cpp:22 @@ -9669,7 +9713,7 @@ msgstr "Инвертировать скругление" #: ../src/live_effects/lpe-clone-original.cpp:26 msgid "Use LPE item as origin" -msgstr "" +msgstr "Исп-ть элемент LPE как источник" #: ../src/live_effects/lpe-clone-original.cpp:27 msgid "Clone shape -d-" @@ -9827,7 +9871,7 @@ msgstr "Масштабирование элементов" #: ../src/live_effects/lpe-copy_rotate.cpp:67 #: ../src/live_effects/lpe-mirror_symmetry.cpp:58 msgid "Split elements, this allow gradients and other paints." -msgstr "" +msgstr "Разделять элементы, это разрешает градиенты и другие краски." #: ../src/live_effects/lpe-copy_rotate.cpp:335 msgid "Reset styles" @@ -9955,6 +9999,7 @@ msgstr "" msgid "traveling salesman 4-opt (seconds)" msgstr "" +# maybe mistyping (miutes) #: ../src/live_effects/lpe-embrodery-stitch.cpp:37 msgid "traveling salesman 5-opt (miutes)" msgstr "" @@ -9986,7 +10031,7 @@ msgstr "Тип ориентации" #: ../src/live_effects/lpe-embrodery-stitch.cpp:55 msgid "Method used to order sub paths" -msgstr "" +msgstr "Метод для упорядочения субконтуров" #: ../src/live_effects/lpe-embrodery-stitch.cpp:56 #, fuzzy @@ -9995,7 +10040,7 @@ msgstr "Длина линии соединения" #: ../src/live_effects/lpe-embrodery-stitch.cpp:56 msgid "Method to connect end points of sub paths" -msgstr "" +msgstr "Метод соединения конечных точек субконтуров" #: ../src/live_effects/lpe-embrodery-stitch.cpp:57 #, fuzzy @@ -10004,7 +10049,7 @@ msgstr "Длина контура" #: ../src/live_effects/lpe-embrodery-stitch.cpp:57 msgid "If not 0, linearize path with given step length" -msgstr "" +msgstr "Если не 0, линеаризовать путь с заданной длиной шага" #: ../src/live_effects/lpe-embrodery-stitch.cpp:58 #, fuzzy @@ -10013,7 +10058,7 @@ msgstr "Макс. длина сегмента:" #: ../src/live_effects/lpe-embrodery-stitch.cpp:58 msgid "Combine steps shorter than this [%]" -msgstr "" +msgstr "Объединить шаги короче [%]" #: ../src/live_effects/lpe-embrodery-stitch.cpp:59 #, fuzzy @@ -10022,7 +10067,7 @@ msgstr "Сшивающий контур" #: ../src/live_effects/lpe-embrodery-stitch.cpp:59 msgid "Select between different stitch patterns" -msgstr "" +msgstr "Выбор между разными типами застрочки" #: ../src/live_effects/lpe-embrodery-stitch.cpp:60 #, fuzzy @@ -10033,18 +10078,20 @@ msgstr "Показать точки" msgid "" "Show stitches as small gaps (just for inspection - don't use for output)" msgstr "" +"Показать строчки как небольшие промежутки (только для проверки - не для " +"вывода)" #: ../src/live_effects/lpe-embrodery-stitch.cpp:61 msgid "Show stitch gap" -msgstr "" +msgstr "Показать зазор между стежками" #: ../src/live_effects/lpe-embrodery-stitch.cpp:61 msgid "Gap between stitches when showing stitches" -msgstr "" +msgstr "Разрыв между строчками при показе стежков" #: ../src/live_effects/lpe-embrodery-stitch.cpp:62 msgid "Jump if longer" -msgstr "" +msgstr "Прыжок, если длиннее" #: ../src/live_effects/lpe-embrodery-stitch.cpp:62 #, fuzzy @@ -10178,7 +10225,7 @@ msgstr "Единица измерения" #: ../src/live_effects/lpe-fillet-chamfer.cpp:38 msgid "Methods to calculate the fillet or chamfer" -msgstr "" +msgstr "Методы расчета желобка или фаски" #: ../src/live_effects/lpe-fillet-chamfer.cpp:40 #, fuzzy @@ -10982,7 +11029,7 @@ msgstr "Режим перемещения симметрии" #: ../src/live_effects/lpe-mirror_symmetry.cpp:54 msgid "Gap on split" -msgstr "" +msgstr "Промежуток при разделении" #: ../src/live_effects/lpe-mirror_symmetry.cpp:55 msgid "Discard original path" @@ -11581,7 +11628,8 @@ msgstr "_Расстояние между метками:" msgid "Distance between successive ruler marks" msgstr "Расстояние между соседними метками линейки" -#: ../src/live_effects/lpe-ruler.cpp:39 ../share/extensions/foldablebox.inx.h:7 +#: ../src/live_effects/lpe-ruler.cpp:39 +#: ../share/extensions/foldablebox.inx.h:7 #: ../share/extensions/interp_att_g.inx.h:9 #: ../share/extensions/layout_nup.inx.h:3 #: ../share/extensions/printing_marks.inx.h:11 @@ -12075,7 +12123,8 @@ msgstr "Связать с контуром" #: ../src/live_effects/parameter/originalpatharray.cpp:81 #: ../src/ui/dialog/inkscape-preferences.cpp:1546 -#: ../src/ui/widget/page-sizer.cpp:268 ../src/widgets/gradient-selector.cpp:140 +#: ../src/ui/widget/page-sizer.cpp:268 +#: ../src/widgets/gradient-selector.cpp:140 #: ../src/widgets/sp-xmlview-attr-list.cpp:45 msgid "Name" msgstr "Имя" @@ -12566,11 +12615,11 @@ msgstr "Запустить Inkscape в интерактивном командн #: ../src/main.cpp:541 msgid "Do not fix legacy (pre-0.92) files' text baseline spacing on opening." -msgstr "" +msgstr "Не править интерлиньяж унаследованных файлов (pre-0.92) при открытии." #: ../src/main.cpp:546 msgid "Method used to convert pre-.92 document dpi, if needed." -msgstr "" +msgstr "Метод преобразования dpi в пре-.92 документах." #: ../src/main.cpp:865 ../src/main.cpp:1259 msgid "" @@ -12933,7 +12982,8 @@ msgstr "Ничего не удалено." #: ../src/ui/tools/text-tool.cpp:959 ../src/widgets/eraser-toolbar.cpp:145 #: ../src/widgets/gradient-toolbar.cpp:1182 #: ../src/widgets/gradient-toolbar.cpp:1196 -#: ../src/widgets/gradient-toolbar.cpp:1210 ../src/widgets/node-toolbar.cpp:399 +#: ../src/widgets/gradient-toolbar.cpp:1210 +#: ../src/widgets/node-toolbar.cpp:399 msgid "Delete" msgstr "Удаление" @@ -13609,7 +13659,7 @@ msgstr "Нарезка макета" #: ../src/sp-ellipse.cpp:388 ../src/widgets/arc-toolbar.cpp:378 msgid "Chord" -msgstr "" +msgstr "Хорда" #: ../src/sp-ellipse.cpp:391 msgid "Arc" @@ -13852,8 +13902,8 @@ msgstr "Условная группа" #: ../src/sp-text.cpp:349 ../src/verbs.cpp:342 #: ../share/extensions/lorem_ipsum.inx.h:8 -#: ../share/extensions/replace_font.inx.h:11 ../share/extensions/split.inx.h:10 -#: ../share/extensions/text_braille.inx.h:2 +#: ../share/extensions/replace_font.inx.h:11 +#: ../share/extensions/split.inx.h:10 ../share/extensions/text_braille.inx.h:2 #: ../share/extensions/text_extract.inx.h:14 #: ../share/extensions/text_flipcase.inx.h:2 #: ../share/extensions/text_lowercase.inx.h:2 @@ -15834,7 +15884,8 @@ msgstr "_Удалить" msgid "Remove selected grid." msgstr "Удалить выделенную сетку" -#: ../src/ui/dialog/document-properties.cpp:146 ../src/widgets/toolbox.cpp:1398 +#: ../src/ui/dialog/document-properties.cpp:146 +#: ../src/widgets/toolbox.cpp:1398 msgid "Guides" msgstr "Направляющие" @@ -16309,7 +16360,8 @@ msgstr "Информация" #: ../share/extensions/jitternodes.inx.h:12 #: ../share/extensions/layout_nup.inx.h:24 #: ../share/extensions/lindenmayer.inx.h:13 -#: ../share/extensions/lorem_ipsum.inx.h:6 ../share/extensions/measure.inx.h:33 +#: ../share/extensions/lorem_ipsum.inx.h:6 +#: ../share/extensions/measure.inx.h:33 #: ../share/extensions/pathalongpath.inx.h:16 #: ../share/extensions/pathscatter.inx.h:18 #: ../share/extensions/restack.inx.h:25 ../share/extensions/split.inx.h:8 @@ -21083,6 +21135,8 @@ msgid "" "Set the relative size of tiles used to render the canvas. The larger the " "value, the bigger the tile size." msgstr "" +"Установить относительный размер плиток для рендеринга холста. Чем больше " +"значение, тем больше размер плитки." #. blur quality #. filter quality @@ -21567,7 +21621,8 @@ msgstr "X наклон" msgid "Y tilt" msgstr "Y наклон" -#: ../src/ui/dialog/input.cpp:1442 ../src/ui/widget/color-wheel-selector.cpp:25 +#: ../src/ui/dialog/input.cpp:1442 +#: ../src/ui/widget/color-wheel-selector.cpp:25 msgid "Wheel" msgstr "Колесо" @@ -22364,7 +22419,8 @@ msgstr "Kopf-Lischinski алгоритм" msgid "Output" msgstr "Вывод" -#: ../src/ui/dialog/pixelartdialog.cpp:290 ../src/ui/dialog/tracedialog.cpp:812 +#: ../src/ui/dialog/pixelartdialog.cpp:290 +#: ../src/ui/dialog/tracedialog.cpp:812 msgid "Reset all settings to defaults" msgstr "Сбросить значения всех параметров до исходных" @@ -22374,11 +22430,13 @@ msgstr "Сбросить значения всех параметров до и msgid "_Stop" msgstr "_Остановить" -#: ../src/ui/dialog/pixelartdialog.cpp:295 ../src/ui/dialog/tracedialog.cpp:817 +#: ../src/ui/dialog/pixelartdialog.cpp:295 +#: ../src/ui/dialog/tracedialog.cpp:817 msgid "Abort a trace in progress" msgstr "Прервать векторизацию" -#: ../src/ui/dialog/pixelartdialog.cpp:299 ../src/ui/dialog/tracedialog.cpp:821 +#: ../src/ui/dialog/pixelartdialog.cpp:299 +#: ../src/ui/dialog/tracedialog.cpp:821 msgid "Execute the trace" msgstr "Векторизовать" @@ -22623,7 +22681,7 @@ msgstr "Добавить" #: ../src/ui/dialog/styledialog.cpp:888 msgid "Invalid entry: Not an id (#), class (.), or element CSS selector." -msgstr "" +msgstr "Неверная запись:Не id (#), class (.), или элемент CSS селектора." #: ../src/ui/dialog/styledialog.cpp:1496 #, fuzzy @@ -22813,7 +22871,8 @@ msgstr "шрифт" msgid "Add font" msgstr "Добавить шрифт" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1004 ../src/ui/dialog/text-edit.cpp:60 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1004 +#: ../src/ui/dialog/text-edit.cpp:60 msgid "_Font" msgstr "_Шрифт" @@ -22839,7 +22898,8 @@ msgid "Preview Text:" msgstr "Текст:" #: ../src/ui/dialog/swatches.cpp:195 ../src/ui/tools/gradient-tool.cpp:359 -#: ../src/ui/tools/gradient-tool.cpp:457 ../src/widgets/gradient-vector.cpp:765 +#: ../src/ui/tools/gradient-tool.cpp:457 +#: ../src/widgets/gradient-vector.cpp:765 msgid "Add gradient stop" msgstr "Добавка опорной точки в градиент" @@ -24088,7 +24148,8 @@ msgid "Rotate handle" msgstr "Рычаг вращения" #. We need to call MPM's method because it could have been our last node -#: ../src/ui/tool/path-manipulator.cpp:1537 ../src/widgets/node-toolbar.cpp:395 +#: ../src/ui/tool/path-manipulator.cpp:1537 +#: ../src/widgets/node-toolbar.cpp:395 msgid "Delete node" msgstr "Удалить узел" @@ -28567,7 +28628,7 @@ msgstr "Вращение объектов" #: ../src/verbs.cpp:3016 msgid "Reset canvas rotation to zero" -msgstr "" +msgstr "Сбросить поворот холста до нуля" #: ../src/verbs.cpp:3018 #, fuzzy @@ -28596,7 +28657,7 @@ msgstr "Зеркалирование сторон" #: ../src/verbs.cpp:3020 msgid "Undo any flip" -msgstr "" +msgstr "Отменить любой флип" #. WHY ARE THE FOLLOWING ZoomVerbs??? #. View @@ -28795,7 +28856,7 @@ msgstr "Прототип…" #: ../src/verbs.cpp:3074 msgid "Prototype Dialog" -msgstr "" +msgstr "Прототип диалог" #: ../src/verbs.cpp:3075 msgid "P_references..." @@ -29006,7 +29067,7 @@ msgstr "Стили CSS…" #: ../src/verbs.cpp:3131 msgid "View Style Dialog" -msgstr "" +msgstr "Просмотр стиля диалог" #: ../src/verbs.cpp:3132 #, fuzzy @@ -29015,7 +29076,7 @@ msgstr "Диалоги" #: ../src/verbs.cpp:3133 msgid "View Css Dialog" -msgstr "" +msgstr "Просмотр CSS диалог" #: ../src/verbs.cpp:3134 msgid "Path E_ffects ..." @@ -29825,7 +29886,7 @@ msgstr "" #: ../src/widgets/desktop-widget.cpp:600 msgid "Rotation. (Also Ctrl+Shift+Scroll)" -msgstr "" +msgstr "Вращение. (Also Ctrl+Shift+Scroll)" #: ../src/widgets/desktop-widget.cpp:634 msgid "Cursor coordinates" @@ -30162,27 +30223,33 @@ msgstr "радиальный" msgid "Create radial (elliptic or circular) gradient" msgstr "Создать радиальный (эллиптический или круговой) градиент" -#: ../src/widgets/gradient-toolbar.cpp:1045 ../src/widgets/mesh-toolbar.cpp:396 +#: ../src/widgets/gradient-toolbar.cpp:1045 +#: ../src/widgets/mesh-toolbar.cpp:396 msgid "New:" msgstr "Создать:" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1068 +#: ../src/widgets/mesh-toolbar.cpp:419 msgid "fill" msgstr "заливка" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1068 +#: ../src/widgets/mesh-toolbar.cpp:419 msgid "Create gradient in the fill" msgstr "Создать градиент в заливке" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1072 +#: ../src/widgets/mesh-toolbar.cpp:423 msgid "stroke" msgstr "обводка" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1072 +#: ../src/widgets/mesh-toolbar.cpp:423 msgid "Create gradient in the stroke" msgstr "Создать градиент в обводке" -#: ../src/widgets/gradient-toolbar.cpp:1075 ../src/widgets/mesh-toolbar.cpp:426 +#: ../src/widgets/gradient-toolbar.cpp:1075 +#: ../src/widgets/mesh-toolbar.cpp:426 msgid "on:" msgstr "в:" @@ -30281,7 +30348,8 @@ msgid "Link gradients to change all related gradients" msgstr "" "Связать градиенты, чтобы эта заливка обновлялась везде, где она использована" -#: ../src/widgets/gradient-vector.cpp:289 ../src/widgets/paint-selector.cpp:917 +#: ../src/widgets/gradient-vector.cpp:289 +#: ../src/widgets/paint-selector.cpp:917 #: ../src/widgets/paint-selector.cpp:1269 #: ../src/widgets/stroke-marker-selector.cpp:149 msgid "No document selected" @@ -32155,7 +32223,7 @@ msgstr "Направление текста" #. Label #: ../src/widgets/text-toolbar.cpp:1963 msgid "Text direction for normally horizontal text." -msgstr "" +msgstr "Направление текста для обычного горизонтального текста." #. Drop down menu #: ../src/widgets/text-toolbar.cpp:1989 @@ -33413,7 +33481,8 @@ msgid "Area is zero, cannot calculate Center of Mass" msgstr "Площадь равна нулю, невозможно вычислить центр масс" #: ../share/extensions/pathalongpath.py:207 -#: ../share/extensions/pathscatter.py:226 ../share/extensions/perspective.py:52 +#: ../share/extensions/pathscatter.py:226 +#: ../share/extensions/perspective.py:52 msgid "This extension requires two selected paths." msgstr "Этому расширению нужно два контура в выделении." @@ -33450,7 +33519,8 @@ msgstr "" "снова. На системах вроде Debian это делается командой sudo apt-get install " "python-numpy." -#: ../share/extensions/perspective.py:60 ../share/extensions/summersnight.py:49 +#: ../share/extensions/perspective.py:60 +#: ../share/extensions/summersnight.py:49 #, python-format msgid "" "The first selected object is of type '%s'.\n" @@ -33459,12 +33529,14 @@ msgstr "" "Первый выбранный объект относится к типу «%s».\n" "Превратите его в контур командой «Контур > Оконтурить объект»." -#: ../share/extensions/perspective.py:67 ../share/extensions/summersnight.py:57 +#: ../share/extensions/perspective.py:67 +#: ../share/extensions/summersnight.py:57 msgid "" "This extension requires that the second selected path be four nodes long." msgstr "Второй выбранный контур должен содержать четыре узла." -#: ../share/extensions/perspective.py:93 ../share/extensions/summersnight.py:90 +#: ../share/extensions/perspective.py:93 +#: ../share/extensions/summersnight.py:90 msgid "" "The second selected object is a group, not a path.\n" "Try using the procedure Object->Ungroup." @@ -33472,7 +33544,8 @@ msgstr "" "Второй выделенный объект является группой, а не контуром.\n" "Попробуйте выполнить команду »Объект > Разгруппировать»." -#: ../share/extensions/perspective.py:95 ../share/extensions/summersnight.py:92 +#: ../share/extensions/perspective.py:95 +#: ../share/extensions/summersnight.py:92 msgid "" "The second selected object is not a path.\n" "Try using the procedure Path->Object to Path." @@ -33480,7 +33553,8 @@ msgstr "" "Второй выделенный объект не является контуром.\n" "Попробуйте выполнить команду »Контур > Оконтурить объект»." -#: ../share/extensions/perspective.py:98 ../share/extensions/summersnight.py:95 +#: ../share/extensions/perspective.py:98 +#: ../share/extensions/summersnight.py:95 msgid "" "The first selected object is not a path.\n" "Try using the procedure Path->Object to Path." @@ -34867,7 +34941,7 @@ msgstr "Подразделения:" #: ../share/extensions/frame.inx.h:1 msgid "Frame" -msgstr "" +msgstr "Рамка" #: ../share/extensions/funcplot.inx.h:1 msgid "Function Plotter" @@ -36401,12 +36475,14 @@ msgstr "" "на .plt, убедитесь, что установлен UniConvertor и откройте их снова." #: ../share/extensions/hpgl_input.inx.h:3 -#: ../share/extensions/hpgl_output.inx.h:4 ../share/extensions/plotter.inx.h:32 +#: ../share/extensions/hpgl_output.inx.h:4 +#: ../share/extensions/plotter.inx.h:32 msgid "Resolution X (dpi):" msgstr "Разрешение по X (dpi)" #: ../share/extensions/hpgl_input.inx.h:4 -#: ../share/extensions/hpgl_output.inx.h:5 ../share/extensions/plotter.inx.h:33 +#: ../share/extensions/hpgl_output.inx.h:5 +#: ../share/extensions/plotter.inx.h:33 msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the X axis " "(Default: 1016.0)" @@ -36415,12 +36491,14 @@ msgstr "" "оси Х (по умолчанию: 1016,0)" #: ../share/extensions/hpgl_input.inx.h:5 -#: ../share/extensions/hpgl_output.inx.h:6 ../share/extensions/plotter.inx.h:34 +#: ../share/extensions/hpgl_output.inx.h:6 +#: ../share/extensions/plotter.inx.h:34 msgid "Resolution Y (dpi):" msgstr "Разрешение по Y (dpi):" #: ../share/extensions/hpgl_input.inx.h:6 -#: ../share/extensions/hpgl_output.inx.h:7 ../share/extensions/plotter.inx.h:35 +#: ../share/extensions/hpgl_output.inx.h:7 +#: ../share/extensions/plotter.inx.h:35 msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the Y axis " "(Default: 1016.0)" @@ -36459,15 +36537,18 @@ msgstr "" "контуры. Используйте расширение плоттера (меню Extensions) для построения " "непосредственно через последовательный порт." -#: ../share/extensions/hpgl_output.inx.h:3 ../share/extensions/plotter.inx.h:31 +#: ../share/extensions/hpgl_output.inx.h:3 +#: ../share/extensions/plotter.inx.h:31 msgid "Plotter Settings " msgstr "Настройки плоттера" -#: ../share/extensions/hpgl_output.inx.h:8 ../share/extensions/plotter.inx.h:36 +#: ../share/extensions/hpgl_output.inx.h:8 +#: ../share/extensions/plotter.inx.h:36 msgid "Pen number:" msgstr "Номер ручки:" -#: ../share/extensions/hpgl_output.inx.h:9 ../share/extensions/plotter.inx.h:37 +#: ../share/extensions/hpgl_output.inx.h:9 +#: ../share/extensions/plotter.inx.h:37 msgid "The number of the pen (tool) to use (Standard: '1')" msgstr "Номер ручки (инструмента) для использования (Standard: '1')" @@ -36814,11 +36895,13 @@ msgstr "Продублировать оконечные контуры" msgid "Interpolate style" msgstr "Интерполировать стиль" -#: ../share/extensions/interp.inx.h:7 ../share/extensions/interp_att_g.inx.h:10 +#: ../share/extensions/interp.inx.h:7 +#: ../share/extensions/interp_att_g.inx.h:10 msgid "Use Z-order" msgstr "Исп-ть Z-order" -#: ../share/extensions/interp.inx.h:8 ../share/extensions/interp_att_g.inx.h:11 +#: ../share/extensions/interp.inx.h:8 +#: ../share/extensions/interp_att_g.inx.h:11 msgid "Workaround for reversed selection order in Live Preview cycles" msgstr "Обходное решение для обратного порядка выделения в Live Preview циклах" @@ -38460,7 +38543,8 @@ msgstr "" msgid "AutoCAD Plot Input" msgstr "Импорт файлов AutoCAD Plot (PLT)" -#: ../share/extensions/plt_input.inx.h:2 ../share/extensions/plt_output.inx.h:2 +#: ../share/extensions/plt_input.inx.h:2 +#: ../share/extensions/plt_output.inx.h:2 msgid "HP Graphics Language Plot file [AutoCAD] (UC) (*.plt)" msgstr "Файл HP Graphics Language [AutoCAD] (UC) (*.plt)" @@ -38682,7 +38766,7 @@ msgstr "Средняя величина" #: ../share/extensions/prepare_file_save_as.inx.h:1 msgid "Pre-Process File Save As..." -msgstr "" +msgstr "Препроцесс-файл Сохранить как..." #: ../share/extensions/prepare_print_win32_vector.inx.h:1 #, fuzzy @@ -39364,7 +39448,7 @@ msgstr "" #. this parameter is checked programatically in the extension to show a warning #: ../share/extensions/scour.inx.h:59 msgid "Show warnings for older versions of Scour" -msgstr "" +msgstr "Показать предупреждения для старых версий Scour" #: ../share/extensions/scour.inx.h:60 #, fuzzy @@ -39373,7 +39457,7 @@ msgstr "Экспорт в оптимизированный SVG" #: ../share/extensions/scour.inx.h:61 msgid "For details please refer to" -msgstr "" +msgstr "Для получения дополнительной информации см." #: ../share/extensions/scour.inx.h:62 #, fuzzy @@ -39439,7 +39523,8 @@ msgstr "Нижние выносные:" msgid "sK1 vector graphics files input" msgstr "Импорт документов sK1" -#: ../share/extensions/sk1_input.inx.h:2 ../share/extensions/sk1_output.inx.h:2 +#: ../share/extensions/sk1_input.inx.h:2 +#: ../share/extensions/sk1_output.inx.h:2 msgid "sK1 vector graphics files (UC) (*.sk1)" msgstr "Файлы редактора векторной графики sK1 (UC) (.sk1)" @@ -40404,15 +40489,18 @@ msgstr "Наклон (°):" msgid "Hide lines behind the sphere" msgstr "Скрыть линии позади сферы" -#: ../share/extensions/wmf_input.inx.h:1 ../share/extensions/wmf_output.inx.h:1 +#: ../share/extensions/wmf_input.inx.h:1 +#: ../share/extensions/wmf_output.inx.h:1 msgid "Windows Metafile Input" msgstr "Импорт файлов Windows Metafile" -#: ../share/extensions/wmf_input.inx.h:2 ../share/extensions/wmf_output.inx.h:2 +#: ../share/extensions/wmf_input.inx.h:2 +#: ../share/extensions/wmf_output.inx.h:2 msgid "Windows Metafile (UC) (*.wmf)" msgstr "Файлы Windows Metafile (UC) (*.wmf)" -#: ../share/extensions/wmf_input.inx.h:3 ../share/extensions/wmf_output.inx.h:3 +#: ../share/extensions/wmf_input.inx.h:3 +#: ../share/extensions/wmf_output.inx.h:3 msgid "A popular graphics file format for clipart" msgstr "Популярный графический формат для клипарта" -- cgit v1.2.3 From 395d1a1b5179066ffc4f8758c8034f0aa2606fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sveinn=20=C3=AD=20Felli?= Date: Fri, 29 Sep 2017 21:33:16 +0200 Subject: Translations: Update Icelandic (is) translation https://bugs.launchpad.net/inkscape/+bug/1714468 --- po/is.po | 11277 +++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 6140 insertions(+), 5137 deletions(-) diff --git a/po/is.po b/po/is.po index 91809f6e4..6455ddfc1 100644 --- a/po/is.po +++ b/po/is.po @@ -1,14 +1,14 @@ -# Þýðing inkscape.po á Icelandic +# Þýðing inkscape.po á íslensku # Copyright (C) 2015 Icelandic Inksape Translators # This file is distributed under the same license as the Inkscape package. # -# Sveinn í Felli , 2015, 2016. +# Sveinn í Felli (sv1@fellsnet.is), 2015, 2016, 2017. msgid "" msgstr "" "Project-Id-Version: inkscape\n" "Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2016-12-21 17:10+0100\n" -"PO-Revision-Date: 2016-12-30 09:09+0000\n" +"POT-Creation-Date: 2017-07-30 23:09+0200\n" +"PO-Revision-Date: 2017-09-01 09:30+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic \n" "Language: is\n" @@ -45,6 +45,12 @@ msgid "" "trace bitmaps and much more. We also aim to maintain a thriving user and " "developer community by using open, community-oriented development." msgstr "" +"Inkscape styður marga af framsæknustu eiginleikum SVG (línumerki, klóna, " +"gegnsæisblöndun, o.s.frv.), einnig er mikil áhersla lögð á að straumlínulaga " +"viðmótið. Mjög auðvelt er að breyta hnútum, framkvæma flóknar aðgerðir á " +"ferlum, línuteikna bitamyndir auk margs annars. Markmið okkar er líka að " +"viðhalda blómlegu samfélagi notenda og hönnuða og er það gert með opinni, " +"félagsmiðaðri framþróun." #: ../inkscape.appdata.xml.in.h:5 msgid "Main application window" @@ -115,7 +121,7 @@ msgstr "Afskerpingar" #: ../share/filters/filters.svg.h:12 msgid "Edges are partly feathered out" -msgstr "" +msgstr "Brúnir eru að hluta til fjaðraðar út" #: ../share/filters/filters.svg.h:14 msgid "Jigsaw Piece" @@ -173,7 +179,7 @@ msgstr "Eldur" #: ../share/filters/filters.svg.h:28 msgid "Edges of object are on fire" -msgstr "" +msgstr "Kviknað er í brúnum hluta" #: ../share/filters/filters.svg.h:30 msgid "Bloom" @@ -292,7 +298,7 @@ msgid "Sharpen edges and boundaries within the object, force=0.3" msgstr "" #: ../share/filters/filters.svg.h:74 -msgid "Oil painting" +msgid "Oil Painting" msgstr "Olíumálun" #: ../share/filters/filters.svg.h:75 ../share/filters/filters.svg.h:79 @@ -321,7 +327,7 @@ msgstr "Herma eftir stíl við olíumálun" #. Pencil #: ../share/filters/filters.svg.h:78 -#: ../src/ui/dialog/inkscape-preferences.cpp:421 +#: ../src/ui/dialog/inkscape-preferences.cpp:419 msgid "Pencil" msgstr "Blýantur" @@ -525,7 +531,7 @@ msgstr "Þunn himna" #: ../share/filters/filters.svg.h:156 msgid "Thin like a soap membrane" -msgstr "" +msgstr "Þunnt eins og sápuhimna" #: ../share/filters/filters.svg.h:158 msgid "Matte Ridge" @@ -533,7 +539,7 @@ msgstr "Mattir hryggir" #: ../share/filters/filters.svg.h:160 msgid "Soft pastel ridge" -msgstr "" +msgstr "Mjúkur pastelhryggur" #: ../share/filters/filters.svg.h:162 msgid "Glowing Metal" @@ -588,7 +594,7 @@ msgstr "Sprungið hraun" #: ../share/filters/filters.svg.h:184 msgid "A volcanic texture, a little like leather" -msgstr "" +msgstr "Hraunáferð, dálítið líkt leðri" #: ../share/filters/filters.svg.h:186 msgid "Bark" @@ -687,7 +693,8 @@ msgstr "Svarthol" #: ../share/filters/filters.svg.h:279 ../share/filters/filters.svg.h:835 #: ../share/filters/filters.svg.h:839 ../share/filters/filters.svg.h:843 #: ../src/extension/internal/filter/morphology.h:76 -#: ../src/extension/internal/filter/morphology.h:203 ../src/filter-enums.cpp:32 +#: ../src/extension/internal/filter/morphology.h:203 +#: ../src/filter-enums.cpp:32 msgid "Morphology" msgstr "Lögun" @@ -807,7 +814,7 @@ msgstr "Köflóttur vefnaður" #: ../share/filters/filters.svg.h:288 msgid "Checkered tartan pattern" -msgstr "" +msgstr "Köflótt vefnaðarmynstur" #: ../share/filters/filters.svg.h:290 msgid "Shaken Liquid" @@ -906,7 +913,7 @@ msgstr "Skotland" #: ../share/filters/filters.svg.h:336 msgid "Colorized mountain tops out of the fog" -msgstr "" +msgstr "Litaðir fjallstindar upp úr þoku" #: ../share/filters/filters.svg.h:338 msgid "Garden of Delights" @@ -947,7 +954,7 @@ msgstr "Bleyttur pappír" #: ../share/filters/filters.svg.h:356 msgid "Inkblot on blotting paper" -msgstr "" +msgstr "Blekklessa á bleyttum pappír" #: ../share/filters/filters.svg.h:358 msgid "Wax Print" @@ -955,7 +962,7 @@ msgstr "Vaxprentun" #: ../share/filters/filters.svg.h:360 msgid "Wax print on tissue texture" -msgstr "" +msgstr "Vaxprentun á vefnaðaráferð" #: ../share/filters/filters.svg.h:366 msgid "Watercolor" @@ -963,7 +970,7 @@ msgstr "Vatnslitur" #: ../share/filters/filters.svg.h:368 msgid "Cloudy watercolor effect" -msgstr "" +msgstr "Skýjuð vatnslitaáferð" #: ../share/filters/filters.svg.h:370 msgid "Felt" @@ -1086,9 +1093,9 @@ msgstr "Svart ljós" #: ../src/extension/internal/filter/paint.h:717 #: ../src/extension/internal/filter/shadows.h:73 #: ../src/extension/internal/filter/transparency.h:345 -#: ../src/filter-enums.cpp:67 ../src/ui/dialog/clonetiler.cpp:785 -#: ../src/ui/dialog/clonetiler.cpp:914 -#: ../src/ui/dialog/document-properties.cpp:153 +#: ../src/filter-enums.cpp:67 ../src/ui/dialog/clonetiler.cpp:784 +#: ../src/ui/dialog/clonetiler.cpp:913 +#: ../src/ui/dialog/document-properties.cpp:149 #: ../share/extensions/color_HSL_adjust.inx.h:20 #: ../share/extensions/color_blackandwhite.inx.h:3 #: ../share/extensions/color_brighter.inx.h:2 @@ -1155,7 +1162,7 @@ msgstr "Myndasögusmurning" #: ../share/filters/filters.svg.h:779 ../share/filters/filters.svg.h:783 #: ../share/filters/filters.svg.h:787 ../share/filters/filters.svg.h:791 #: ../share/filters/filters.svg.h:795 -msgid "Non realistic 3D shaders" +msgid "Non-realistic 3D Shaders" msgstr "Gervilegar þrívíddaráferðir" #: ../share/filters/filters.svg.h:428 @@ -1173,8 +1180,8 @@ msgid "" msgstr "" #: ../share/filters/filters.svg.h:434 -msgid "Dark And Glow" -msgstr "Dökkt og glóandi" +msgid "Dark and Glow" +msgstr "Dökkt og bjarmi" #: ../share/filters/filters.svg.h:436 msgid "Darkens the edge with an inner blur and adds a flexible glow" @@ -1510,7 +1517,7 @@ msgid "Pixellize" msgstr "Gera dílótt" #: ../share/filters/filters.svg.h:591 -msgid "Pixel tools" +msgid "Pixel Tools" msgstr "Mynddílaverkfæri" #: ../share/filters/filters.svg.h:592 @@ -1575,7 +1582,7 @@ msgstr "Búðingsáferð" #: ../share/filters/filters.svg.h:624 msgid "Convert pictures to thick jelly" -msgstr "" +msgstr "Umbreyta myndum í þykkt hlaup" #: ../share/filters/filters.svg.h:626 msgid "Blend Opposites" @@ -1741,7 +1748,7 @@ msgstr "Stillanlegur köflóttur vefnaður" #: ../share/filters/filters.svg.h:716 msgid "Highly configurable checkered tartan pattern" -msgstr "" +msgstr "Köflótt vefnaðarmynstur sem stilla má á marga vegu" #: ../share/filters/filters.svg.h:718 msgid "Light Contour" @@ -1974,7 +1981,7 @@ msgstr "" "bakgrunni" #: ../share/filters/filters.svg.h:834 -msgid "Contouring table" +msgid "Contouring Table" msgstr "Útjaðratafla" #: ../share/filters/filters.svg.h:836 @@ -1990,7 +1997,7 @@ msgid "Converts blurred contour to posterized steps" msgstr "" #: ../share/filters/filters.svg.h:842 -msgid "Contouring discrete" +msgid "Contouring Discrete" msgstr "Fínlegir útjaðrar" #: ../share/filters/filters.svg.h:844 @@ -4414,21 +4421,16 @@ msgid "no layers empty" msgstr "engin lög auð" #. 3D box -#: ../src/box3d.cpp:249 ../src/box3d.cpp:1303 -#: ../src/ui/dialog/inkscape-preferences.cpp:404 +#: ../src/box3d.cpp:251 ../src/box3d.cpp:1305 +#: ../src/ui/dialog/inkscape-preferences.cpp:402 msgid "3D Box" msgstr "Þrívíddarkassi" -#: ../src/color-profile.cpp:851 -#, c-format -msgid "Color profiles directory (%s) is unavailable." -msgstr "Mappa fyrir litasnið (%s) er ekki tiltæk." - -#: ../src/color-profile.cpp:923 ../src/color-profile.cpp:940 +#: ../src/color-profile.cpp:897 ../src/color-profile.cpp:914 msgid "(invalid UTF-8 string)" msgstr "(ógildur UTF-8-strengur)" -#: ../src/color-profile.cpp:925 +#: ../src/color-profile.cpp:899 msgctxt "Profile name" msgid "None" msgstr "Ekkert" @@ -4441,138 +4443,138 @@ msgstr "Núverandi lag er falið. Birtu það til að teikna á það." msgid "Current layer is locked. Unlock it to be able to draw on it." msgstr "Núverandi lag er læst. Opnaðu það til að teikna á það." -#: ../src/desktop-events.cpp:231 +#: ../src/desktop-events.cpp:250 msgid "Create guide" msgstr "Búa til stoðlínu" -#: ../src/desktop-events.cpp:487 +#: ../src/desktop-events.cpp:506 msgid "Move guide" msgstr "Færa stoðlínu" -#: ../src/desktop-events.cpp:494 ../src/desktop-events.cpp:550 -#: ../src/ui/dialog/guides.cpp:138 +#: ../src/desktop-events.cpp:513 ../src/desktop-events.cpp:569 +#: ../src/ui/dialog/guides.cpp:136 msgid "Delete guide" msgstr "Eyða stoðlínu" -#: ../src/desktop-events.cpp:530 +#: ../src/desktop-events.cpp:549 #, c-format msgid "Guideline: %s" msgstr "Stoðlína: %s" -#: ../src/desktop.cpp:858 -msgid "No previous zoom." -msgstr "Enginn fyrri aðdráttur." +#: ../src/desktop.cpp:766 +msgid "No previous transform." +msgstr "Enginn fyrri ummyndun." -#: ../src/desktop.cpp:879 -msgid "No next zoom." -msgstr "Enginn næsti aðdráttur." +#: ../src/desktop.cpp:789 +msgid "No next transform." +msgstr "Engin næsta ummyndun." -#: ../src/display/canvas-axonomgrid.cpp:321 ../src/display/canvas-grid.cpp:677 +#: ../src/display/canvas-axonomgrid.cpp:325 ../src/display/canvas-grid.cpp:683 msgid "Grid _units:" msgstr "Einin_gar hnitanets:" -#: ../src/display/canvas-axonomgrid.cpp:323 ../src/display/canvas-grid.cpp:679 +#: ../src/display/canvas-axonomgrid.cpp:327 ../src/display/canvas-grid.cpp:685 msgid "_Origin X:" msgstr "X uppha_f:" -#: ../src/display/canvas-axonomgrid.cpp:323 ../src/display/canvas-grid.cpp:679 -#: ../src/ui/dialog/inkscape-preferences.cpp:779 -#: ../src/ui/dialog/inkscape-preferences.cpp:804 +#: ../src/display/canvas-axonomgrid.cpp:327 ../src/display/canvas-grid.cpp:685 +#: ../src/ui/dialog/inkscape-preferences.cpp:777 +#: ../src/ui/dialog/inkscape-preferences.cpp:802 msgid "X coordinate of grid origin" msgstr "X-hnit upphafspunkts hnitanets" -#: ../src/display/canvas-axonomgrid.cpp:326 ../src/display/canvas-grid.cpp:682 +#: ../src/display/canvas-axonomgrid.cpp:330 ../src/display/canvas-grid.cpp:688 msgid "O_rigin Y:" msgstr "Y upp_haf:" -#: ../src/display/canvas-axonomgrid.cpp:326 ../src/display/canvas-grid.cpp:682 -#: ../src/ui/dialog/inkscape-preferences.cpp:780 -#: ../src/ui/dialog/inkscape-preferences.cpp:805 +#: ../src/display/canvas-axonomgrid.cpp:330 ../src/display/canvas-grid.cpp:688 +#: ../src/ui/dialog/inkscape-preferences.cpp:778 +#: ../src/ui/dialog/inkscape-preferences.cpp:803 msgid "Y coordinate of grid origin" msgstr "Y-hnit upphafspunkts hnitanets" -#: ../src/display/canvas-axonomgrid.cpp:329 ../src/display/canvas-grid.cpp:688 +#: ../src/display/canvas-axonomgrid.cpp:333 ../src/display/canvas-grid.cpp:694 msgid "Spacing _Y:" msgstr "Millibil _Y:" -#: ../src/display/canvas-axonomgrid.cpp:329 -#: ../src/ui/dialog/inkscape-preferences.cpp:808 +#: ../src/display/canvas-axonomgrid.cpp:333 +#: ../src/ui/dialog/inkscape-preferences.cpp:806 msgid "Base length of z-axis" msgstr "Grunnlengd Z-áss" -#: ../src/display/canvas-axonomgrid.cpp:332 -#: ../src/ui/dialog/inkscape-preferences.cpp:811 +#: ../src/display/canvas-axonomgrid.cpp:336 +#: ../src/ui/dialog/inkscape-preferences.cpp:809 #: ../src/widgets/box3d-toolbar.cpp:301 msgid "Angle X:" msgstr "Horn X:" -#: ../src/display/canvas-axonomgrid.cpp:332 -#: ../src/ui/dialog/inkscape-preferences.cpp:811 +#: ../src/display/canvas-axonomgrid.cpp:336 +#: ../src/ui/dialog/inkscape-preferences.cpp:809 msgid "Angle of x-axis" msgstr "Horn X-áss" -#: ../src/display/canvas-axonomgrid.cpp:334 -#: ../src/ui/dialog/inkscape-preferences.cpp:812 +#: ../src/display/canvas-axonomgrid.cpp:338 +#: ../src/ui/dialog/inkscape-preferences.cpp:810 #: ../src/widgets/box3d-toolbar.cpp:380 msgid "Angle Z:" msgstr "Horn Z:" -#: ../src/display/canvas-axonomgrid.cpp:334 -#: ../src/ui/dialog/inkscape-preferences.cpp:812 +#: ../src/display/canvas-axonomgrid.cpp:338 +#: ../src/ui/dialog/inkscape-preferences.cpp:810 msgid "Angle of z-axis" msgstr "Horn Z-áss" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 +#: ../src/display/canvas-axonomgrid.cpp:342 ../src/display/canvas-grid.cpp:699 msgid "Minor grid line _color:" msgstr "_Litur á aukahnitalínu:" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 -#: ../src/ui/dialog/inkscape-preferences.cpp:763 +#: ../src/display/canvas-axonomgrid.cpp:342 ../src/display/canvas-grid.cpp:699 +#: ../src/ui/dialog/inkscape-preferences.cpp:761 msgid "Minor grid line color" msgstr "Litur á aukahnitalínu" -#: ../src/display/canvas-axonomgrid.cpp:338 ../src/display/canvas-grid.cpp:693 +#: ../src/display/canvas-axonomgrid.cpp:342 ../src/display/canvas-grid.cpp:699 msgid "Color of the minor grid lines" msgstr "Litur á minni hnitalínum" -#: ../src/display/canvas-axonomgrid.cpp:343 ../src/display/canvas-grid.cpp:698 +#: ../src/display/canvas-axonomgrid.cpp:347 ../src/display/canvas-grid.cpp:704 msgid "Ma_jor grid line color:" msgstr "Litur á _aðalásum hnitalínu:" -#: ../src/display/canvas-axonomgrid.cpp:343 ../src/display/canvas-grid.cpp:698 -#: ../src/ui/dialog/inkscape-preferences.cpp:765 +#: ../src/display/canvas-axonomgrid.cpp:347 ../src/display/canvas-grid.cpp:704 +#: ../src/ui/dialog/inkscape-preferences.cpp:763 msgid "Major grid line color" msgstr "Litur á aðalásum hnitalínu" -#: ../src/display/canvas-axonomgrid.cpp:344 ../src/display/canvas-grid.cpp:699 +#: ../src/display/canvas-axonomgrid.cpp:348 ../src/display/canvas-grid.cpp:705 msgid "Color of the major (highlighted) grid lines" msgstr "Litur á aðal-hnitalínum (áherslulínum)" -#: ../src/display/canvas-axonomgrid.cpp:348 ../src/display/canvas-grid.cpp:703 +#: ../src/display/canvas-axonomgrid.cpp:352 ../src/display/canvas-grid.cpp:709 msgid "_Major grid line every:" msgstr "Aðal_hnitalínur hverja:" -#: ../src/display/canvas-axonomgrid.cpp:348 ../src/display/canvas-grid.cpp:703 +#: ../src/display/canvas-axonomgrid.cpp:352 ../src/display/canvas-grid.cpp:709 msgid "lines" msgstr "línur" -#: ../src/display/canvas-grid.cpp:55 +#: ../src/display/canvas-grid.cpp:56 msgid "Rectangular grid" msgstr "Rétthyrnt hnitanet" -#: ../src/display/canvas-grid.cpp:56 +#: ../src/display/canvas-grid.cpp:57 msgid "Axonometric grid" msgstr "Jafnhliða hnitanet" -#: ../src/display/canvas-grid.cpp:241 +#: ../src/display/canvas-grid.cpp:242 msgid "Create new grid" msgstr "Búa til nýtt hnitanet" -#: ../src/display/canvas-grid.cpp:307 +#: ../src/display/canvas-grid.cpp:308 msgid "_Enabled" msgstr "_Virkt" -#: ../src/display/canvas-grid.cpp:308 +#: ../src/display/canvas-grid.cpp:309 msgid "" "Determines whether to snap to this grid or not. Can be 'on' for invisible " "grids." @@ -4580,11 +4582,11 @@ msgstr "" "Ákvarðar hvort grípa eigi í þetta hnitanet eða ekki. Getur verið virkjað " "fyrir ósýnileg hnitanet." -#: ../src/display/canvas-grid.cpp:312 +#: ../src/display/canvas-grid.cpp:313 msgid "Snap to visible _grid lines only" msgstr "Einungis _grípa í sýnilegar hnitalínur" -#: ../src/display/canvas-grid.cpp:313 +#: ../src/display/canvas-grid.cpp:314 msgid "" "When zoomed out, not all grid lines will be displayed. Only the visible ones " "will be snapped to" @@ -4592,11 +4594,11 @@ msgstr "" "Þegar rennt er frá, eru ekki allar hnitalínur birtar. Aðeins verður gripið í " "þær sem eru sýnilegar" -#: ../src/display/canvas-grid.cpp:317 +#: ../src/display/canvas-grid.cpp:318 msgid "_Visible" msgstr "_Sýnilegt" -#: ../src/display/canvas-grid.cpp:318 +#: ../src/display/canvas-grid.cpp:319 msgid "" "Determines whether the grid is displayed or not. Objects are still snapped " "to invisible grids." @@ -4604,25 +4606,25 @@ msgstr "" "Ákvarðar hvort birta eigi þetta hnitanet eða ekki. Hlutir grípa samt sem " "áður í ósýnileg hnitanet." -#: ../src/display/canvas-grid.cpp:685 +#: ../src/display/canvas-grid.cpp:691 msgid "Spacing _X:" msgstr "Millibil _X:" -#: ../src/display/canvas-grid.cpp:685 -#: ../src/ui/dialog/inkscape-preferences.cpp:785 +#: ../src/display/canvas-grid.cpp:691 +#: ../src/ui/dialog/inkscape-preferences.cpp:783 msgid "Distance between vertical grid lines" msgstr "Lóðrétt millibil hnitanetslína" -#: ../src/display/canvas-grid.cpp:688 -#: ../src/ui/dialog/inkscape-preferences.cpp:786 +#: ../src/display/canvas-grid.cpp:694 +#: ../src/ui/dialog/inkscape-preferences.cpp:784 msgid "Distance between horizontal grid lines" msgstr "Lárétt millibil hnitanetslína" -#: ../src/display/canvas-grid.cpp:720 +#: ../src/display/canvas-grid.cpp:726 msgid "_Show dots instead of lines" msgstr "_Sýna punkta í stað lína" -#: ../src/display/canvas-grid.cpp:721 +#: ../src/display/canvas-grid.cpp:727 msgid "If set, displays dots at gridpoints instead of gridlines" msgstr "Ef þetta er virkjað eru sýndir punktar í stað hnitalína" @@ -4832,21 +4834,21 @@ msgstr "Margfeldi af millibilum hnitanets" msgid " to " msgstr " til " -#: ../src/document.cpp:519 +#: ../src/document.cpp:553 #, c-format msgid "New document %d" msgstr "Nýtt skjal %d" -#: ../src/document.cpp:524 +#: ../src/document.cpp:558 #, c-format msgid "Memory document %d" msgstr "Skjal í minni %d" -#: ../src/document.cpp:553 +#: ../src/document.cpp:587 msgid "Memory document %1" msgstr "Skjal í minni %1" -#: ../src/document.cpp:852 +#: ../src/document.cpp:886 #, c-format msgid "Unnamed document %d" msgstr "Ónefnt skjal %d" @@ -4856,11 +4858,11 @@ msgid "[Unchanged]" msgstr "[óbreytt]" #. Edit -#: ../src/event-log.cpp:367 ../src/event-log.cpp:370 ../src/verbs.cpp:2496 +#: ../src/event-log.cpp:367 ../src/event-log.cpp:370 ../src/verbs.cpp:2595 msgid "_Undo" msgstr "_Afturkalla" -#: ../src/event-log.cpp:377 ../src/event-log.cpp:381 ../src/verbs.cpp:2498 +#: ../src/event-log.cpp:377 ../src/event-log.cpp:381 ../src/verbs.cpp:2597 msgid "_Redo" msgstr "_Endurgera" @@ -4888,13 +4890,13 @@ msgstr " lýsing: " msgid " (No preferences)" msgstr " (Engar kjörstillingar)" -#: ../src/extension/effect.h:70 ../src/verbs.cpp:2270 +#: ../src/extension/effect.h:70 ../src/verbs.cpp:2367 msgid "Extensions" msgstr "Viðbætur" #. \FIXME change this #. This is some filler text, needs to change before relase -#: ../src/extension/error-file.cpp:53 +#: ../src/extension/error-file.cpp:54 msgid "" "One or more extensions failed to load\n" @@ -4910,7 +4912,7 @@ msgstr "" "þessar viðbætur verða ekki tiltækar. Til að sjá betur hvernig hægt sé að " "laga þetta, er best að skoða villuannálinn sem er í: " -#: ../src/extension/error-file.cpp:63 +#: ../src/extension/error-file.cpp:64 msgid "Show dialog on startup" msgstr "Birta glugga við ræsingu" @@ -4967,39 +4969,39 @@ msgstr "\" hlóðst ekki inn vegna " msgid "Could not create extension error log file '%s'" msgstr "Gat ekki búið til villuannálsskrá '%s' fyrir viðbótina" -#: ../src/extension/extension.cpp:769 +#: ../src/extension/extension.cpp:777 #: ../share/extensions/webslicer_create_rect.inx.h:2 msgid "Name:" msgstr "Heiti:" -#: ../src/extension/extension.cpp:770 +#: ../src/extension/extension.cpp:778 msgid "ID:" msgstr "Auðkenni (ID):" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:779 msgid "State:" msgstr "Staða:" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:779 msgid "Loaded" msgstr "Lesið inn" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:779 msgid "Unloaded" msgstr "Óhlaðið" -#: ../src/extension/extension.cpp:771 +#: ../src/extension/extension.cpp:779 msgid "Deactivated" msgstr "Afvirkjað" -#: ../src/extension/extension.cpp:802 +#: ../src/extension/extension.cpp:810 msgid "" "Currently there is no help available for this Extension. Please look on the " "Inkscape website or ask on the mailing lists if you have questions regarding " "this extension." msgstr "" -#: ../src/extension/implementation/script.cpp:1107 +#: ../src/extension/implementation/script.cpp:1094 msgid "" "Inkscape has received additional data from the script executed. The script " "did not return an error, but this may indicate the results will not be as " @@ -5009,18 +5011,6 @@ msgstr "" "Skriftan var ekki að tilkynna um villu, en þetta gæti samt gefið til kynna " "að útkoman verði ekki eins og búist var við." -#: ../src/extension/init.cpp:288 -msgid "Null external module directory name. Modules will not be loaded." -msgstr "" - -#: ../src/extension/init.cpp:302 -#: ../src/extension/internal/filter/filter-file.cpp:59 -#, c-format -msgid "" -"Modules directory (%s) is unavailable. External modules in that directory " -"will not be loaded." -msgstr "" - #: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:39 msgid "Adaptive Threshold" msgstr "Aðlaganleg mörk" @@ -5029,13 +5019,14 @@ msgstr "Aðlaganleg mörk" #: ../src/extension/internal/bitmap/raise.cpp:42 #: ../src/extension/internal/bitmap/sample.cpp:41 #: ../src/extension/internal/bluredge.cpp:134 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:55 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:61 #: ../src/ui/dialog/object-attributes.cpp:65 #: ../src/ui/dialog/object-attributes.cpp:74 #: ../src/ui/widget/page-sizer.cpp:232 #: ../src/widgets/calligraphy-toolbar.cpp:430 -#: ../src/widgets/eraser-toolbar.cpp:185 ../src/widgets/spray-toolbar.cpp:297 -#: ../src/widgets/tweak-toolbar.cpp:128 ../share/extensions/foldablebox.inx.h:2 +#: ../src/widgets/eraser-toolbar.cpp:187 ../src/widgets/spray-toolbar.cpp:297 +#: ../src/widgets/tweak-toolbar.cpp:128 +#: ../share/extensions/foldablebox.inx.h:2 msgid "Width:" msgstr "Breidd:" @@ -5107,8 +5098,8 @@ msgstr "Bæta við suði" #: ../src/extension/internal/filter/color.h:1660 #: ../src/extension/internal/filter/distort.h:69 #: ../src/extension/internal/filter/morphology.h:60 ../src/rdf.cpp:244 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2743 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2823 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2748 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2828 #: ../src/ui/dialog/object-attributes.cpp:46 #: ../share/extensions/jessyInk_effects.inx.h:5 #: ../share/extensions/jessyInk_export.inx.h:3 @@ -5160,7 +5151,7 @@ msgstr "Móða" #: ../src/extension/internal/bitmap/oilPaint.cpp:39 #: ../src/extension/internal/bitmap/sharpen.cpp:40 #: ../src/extension/internal/bitmap/unsharpmask.cpp:43 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2795 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2800 msgid "Radius:" msgstr "Radíus:" @@ -5482,15 +5473,15 @@ msgstr "" #: ../src/extension/internal/bitmap/opacity.cpp:38 #: ../src/extension/internal/filter/blurs.h:333 #: ../src/extension/internal/filter/transparency.h:279 -#: ../src/ui/dialog/clonetiler.cpp:792 ../src/ui/dialog/clonetiler.cpp:923 +#: ../src/ui/dialog/clonetiler.cpp:791 ../src/ui/dialog/clonetiler.cpp:922 #: ../src/widgets/tweak-toolbar.cpp:334 #: ../share/extensions/interp_att_g.inx.h:18 msgid "Opacity" msgstr "Ógegnsæi" #: ../src/extension/internal/bitmap/opacity.cpp:40 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2785 -#: ../src/ui/dialog/objects.cpp:1629 ../src/widgets/dropper-toolbar.cpp:83 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2790 +#: ../src/ui/dialog/objects.cpp:1650 ../src/widgets/dropper-toolbar.cpp:83 msgid "Opacity:" msgstr "Ógegnsæi:" @@ -5518,7 +5509,7 @@ msgstr "Minnka truflanir" #. Paint order #. TRANSLATORS: Paint order determines the order the 'fill', 'stroke', and 'markers are painted. #: ../src/extension/internal/bitmap/reduceNoise.cpp:42 -#: ../src/widgets/stroke-style.cpp:343 +#: ../src/widgets/stroke-style.cpp:344 #: ../share/extensions/jessyInk_effects.inx.h:3 #: ../share/extensions/jessyInk_view.inx.h:3 #: ../share/extensions/lindenmayer.inx.h:5 @@ -5629,7 +5620,7 @@ msgstr "Bylgjulengd:" #: ../src/extension/internal/bitmap/wave.cpp:47 msgid "Alter selected bitmap(s) along sine wave" -msgstr "" +msgstr "Breyta völdum bitamyndum eftir sínusbylgju" #: ../src/extension/internal/bluredge.cpp:132 msgid "Inset/Outset Halo" @@ -5645,7 +5636,7 @@ msgstr "Fjöldi þrepa:" #: ../src/extension/internal/bluredge.cpp:135 msgid "Number of inset/outset copies of the object to make" -msgstr "" +msgstr "Fjöldi innfelldra/útfelldra afrita hlutarins sem á að gera" #: ../src/extension/internal/bluredge.cpp:139 #: ../share/extensions/extrude.inx.h:5 @@ -5785,147 +5776,192 @@ msgid "Output page size:" msgstr "Blaðsíðustærð frálags:" #. Dialog settings -#: ../src/extension/internal/cdr-input.cpp:103 -#: ../src/extension/internal/vsd-input.cpp:105 +#: ../src/extension/internal/cdr-input.cpp:105 +#: ../src/extension/internal/vsd-input.cpp:106 msgid "Page Selector" msgstr "Blaðsíðuval" +#. "Select page:" label #. Labels -#: ../src/extension/internal/cdr-input.cpp:123 -#: ../src/extension/internal/pdfinput/pdf-input.cpp:90 -#: ../src/extension/internal/vsd-input.cpp:125 +#: ../src/extension/internal/cdr-input.cpp:122 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:89 +#: ../src/extension/internal/vsd-input.cpp:123 msgid "Select page:" msgstr "Veldu síðu:" #. Display total number of pages -#: ../src/extension/internal/cdr-input.cpp:131 -#: ../src/extension/internal/pdfinput/pdf-input.cpp:103 -#: ../src/extension/internal/vsd-input.cpp:133 +#: ../src/extension/internal/cdr-input.cpp:141 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:102 +#: ../src/extension/internal/vsd-input.cpp:142 #, c-format msgid "out of %i" msgstr "af %i" -#: ../src/extension/internal/cdr-input.cpp:284 +#. Buttons +#. +#. Gtk::Button * help_button = add_button(Gtk::Stock::HELP, Gtk::RESPONSE_HELP); +#. if (_help == NULL) +#. help_button->set_sensitive(false); +#. +#. if (extension == NULL) +#. checkbox.set_sensitive(FALSE); +#. / Add the buttons in the bottom of the dialog +#: ../src/extension/internal/cdr-input.cpp:149 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:87 +#: ../src/extension/internal/vsd-input.cpp:150 +#: ../src/extension/prefdialog.cpp:74 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:50 +#: ../src/ui/dialog/export.cpp:915 ../src/ui/dialog/export.cpp:1299 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:738 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1052 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1599 +#: ../src/ui/dialog/guides.cpp:161 ../src/ui/dialog/layer-properties.cpp:42 +#: ../src/ui/dialog/livepatheffect-add.cpp:26 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:33 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:39 +#: ../src/ui/dialog/ocaldialogs.cpp:1089 ../src/ui/interface.cpp:1406 +#: ../src/widgets/desktop-widget.cpp:1089 +#: ../src/widgets/desktop-widget.cpp:1151 +msgid "_Cancel" +msgstr "_Hætta við" + +#: ../src/extension/internal/cdr-input.cpp:150 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:88 +#: ../src/extension/internal/vsd-input.cpp:151 +#: ../src/extension/prefdialog.cpp:75 ../src/ui/dialog/guides.cpp:159 +#: ../src/ui/dialog/pixelartdialog.cpp:298 +#: ../src/ui/dialog/tracedialog.cpp:820 +msgid "_OK" +msgstr "Í _lagi" + +#. Fill in the template +#: ../src/extension/internal/cdr-input.cpp:220 +#: ../src/extension/internal/vsd-input.cpp:221 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:427 +msgid "No preview" +msgstr "Engin forskoðun" + +#: ../src/extension/internal/cdr-input.cpp:310 msgid "Corel DRAW Input" msgstr "Corel DRAW ílag" -#: ../src/extension/internal/cdr-input.cpp:289 +#: ../src/extension/internal/cdr-input.cpp:315 msgid "Corel DRAW 7-X4 files (*.cdr)" msgstr "Corel DRAW 7-X4 skrár (*.cdr)" -#: ../src/extension/internal/cdr-input.cpp:290 +#: ../src/extension/internal/cdr-input.cpp:316 msgid "Open files saved in Corel DRAW 7-X4" msgstr "Opna skrár vistaðar með Corel DRAW 7-X4" -#: ../src/extension/internal/cdr-input.cpp:297 +#: ../src/extension/internal/cdr-input.cpp:323 msgid "Corel DRAW templates input" msgstr "Corel DRAW sniðmátsílag" -#: ../src/extension/internal/cdr-input.cpp:302 +#: ../src/extension/internal/cdr-input.cpp:328 msgid "Corel DRAW 7-13 template files (*.cdt)" msgstr "Corel DRAW 7-13 sniðskrár (*.cdt)" -#: ../src/extension/internal/cdr-input.cpp:303 +#: ../src/extension/internal/cdr-input.cpp:329 msgid "Open files saved in Corel DRAW 7-13" msgstr "Opna skrár vistaðar með Corel DRAW 7-13" -#: ../src/extension/internal/cdr-input.cpp:310 +#: ../src/extension/internal/cdr-input.cpp:336 msgid "Corel DRAW Compressed Exchange files input" msgstr "Corel DRAW Compressed Exchange skráaílag" -#: ../src/extension/internal/cdr-input.cpp:315 +#: ../src/extension/internal/cdr-input.cpp:341 msgid "Corel DRAW Compressed Exchange files (*.ccx)" msgstr "Corel DRAW Compressed Exchange skrár (.ccx)" -#: ../src/extension/internal/cdr-input.cpp:316 +#: ../src/extension/internal/cdr-input.cpp:342 msgid "Open compressed exchange files saved in Corel DRAW" msgstr "Opna þjappaðar skiptiskrár vistaðar með Corel DRAW" -#: ../src/extension/internal/cdr-input.cpp:323 +#: ../src/extension/internal/cdr-input.cpp:349 msgid "Corel DRAW Presentation Exchange files input" msgstr "Corel DRAW Presentation Exchange skráaílag" -#: ../src/extension/internal/cdr-input.cpp:328 +#: ../src/extension/internal/cdr-input.cpp:354 msgid "Corel DRAW Presentation Exchange files (*.cmx)" msgstr "Corel DRAW Presentation Exchange skrár (*.cmx)" -#: ../src/extension/internal/cdr-input.cpp:329 +#: ../src/extension/internal/cdr-input.cpp:355 msgid "Open presentation exchange files saved in Corel DRAW" msgstr "Opna kynningaskiptiskrár vistaðar með Corel DRAW" -#: ../src/extension/internal/emf-inout.cpp:3601 +#: ../src/extension/internal/emf-inout.cpp:3617 msgid "EMF Input" msgstr "EMF ílag" -#: ../src/extension/internal/emf-inout.cpp:3606 +#: ../src/extension/internal/emf-inout.cpp:3622 msgid "Enhanced Metafiles (*.emf)" msgstr "Enhanced Metafiles (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3607 +#: ../src/extension/internal/emf-inout.cpp:3623 msgid "Enhanced Metafiles" msgstr "Enhanced Metafiles" -#: ../src/extension/internal/emf-inout.cpp:3615 +#: ../src/extension/internal/emf-inout.cpp:3631 msgid "EMF Output" msgstr "EMF frálag" -#: ../src/extension/internal/emf-inout.cpp:3617 -#: ../src/extension/internal/wmf-inout.cpp:3196 +#: ../src/extension/internal/emf-inout.cpp:3633 +#: ../src/extension/internal/wmf-inout.cpp:3222 msgid "Convert texts to paths" msgstr "Umbreyta textum í ferla" -#: ../src/extension/internal/emf-inout.cpp:3618 -#: ../src/extension/internal/wmf-inout.cpp:3197 +#: ../src/extension/internal/emf-inout.cpp:3634 +#: ../src/extension/internal/wmf-inout.cpp:3223 msgid "Map Unicode to Symbol font" msgstr "Varpa Unicode yfir á Symbol letur" -#: ../src/extension/internal/emf-inout.cpp:3619 -#: ../src/extension/internal/wmf-inout.cpp:3198 +#: ../src/extension/internal/emf-inout.cpp:3635 +#: ../src/extension/internal/wmf-inout.cpp:3224 msgid "Map Unicode to Wingdings" msgstr "Varpa Unicode yfir á Wingdings" -#: ../src/extension/internal/emf-inout.cpp:3620 -#: ../src/extension/internal/wmf-inout.cpp:3199 +#: ../src/extension/internal/emf-inout.cpp:3636 +#: ../src/extension/internal/wmf-inout.cpp:3225 msgid "Map Unicode to Zapf Dingbats" msgstr "Varpa Unicode yfir á Zapf Dingbats" -#: ../src/extension/internal/emf-inout.cpp:3621 -#: ../src/extension/internal/wmf-inout.cpp:3200 +#: ../src/extension/internal/emf-inout.cpp:3637 +#: ../src/extension/internal/wmf-inout.cpp:3226 msgid "Use MS Unicode PUA (0xF020-0xF0FF) for converted characters" msgstr "Nota MS Unicode PUA (0xF020-0xF0FF) fyrir umbreytta stafi" -#: ../src/extension/internal/emf-inout.cpp:3622 -#: ../src/extension/internal/wmf-inout.cpp:3201 +#: ../src/extension/internal/emf-inout.cpp:3638 +#: ../src/extension/internal/wmf-inout.cpp:3227 msgid "Compensate for PPT font bug" msgstr "Bæta upp fyrir PPT leturgalla" -#: ../src/extension/internal/emf-inout.cpp:3623 -#: ../src/extension/internal/wmf-inout.cpp:3202 +#: ../src/extension/internal/emf-inout.cpp:3639 +#: ../src/extension/internal/wmf-inout.cpp:3228 msgid "Convert dashed/dotted lines to single lines" msgstr "Umbreyta strikuðum/punktalínum í einfaldar línur" -#: ../src/extension/internal/emf-inout.cpp:3624 -#: ../src/extension/internal/wmf-inout.cpp:3203 +#: ../src/extension/internal/emf-inout.cpp:3640 +#: ../src/extension/internal/wmf-inout.cpp:3229 msgid "Convert gradients to colored polygon series" msgstr "Umbreyta litstiglum í runu litaðra marghyrninga" -#: ../src/extension/internal/emf-inout.cpp:3625 +#: ../src/extension/internal/emf-inout.cpp:3641 msgid "Use native rectangular linear gradients" msgstr "Nota innbyggða rétthyrnda línulega litstigla" -#: ../src/extension/internal/emf-inout.cpp:3626 +#: ../src/extension/internal/emf-inout.cpp:3642 msgid "Map all fill patterns to standard EMF hatches" msgstr "Varpa öllum fyllimynstrum yfir í staðlaðar EMF strikaskyggingar" -#: ../src/extension/internal/emf-inout.cpp:3627 +#: ../src/extension/internal/emf-inout.cpp:3643 msgid "Ignore image rotations" msgstr "Hunsa snúning mynda" -#: ../src/extension/internal/emf-inout.cpp:3631 +#: ../src/extension/internal/emf-inout.cpp:3647 msgid "Enhanced Metafile (*.emf)" msgstr "Enhanced Metafile (*.emf)" -#: ../src/extension/internal/emf-inout.cpp:3632 +#: ../src/extension/internal/emf-inout.cpp:3648 msgid "Enhanced Metafile" msgstr "EMF - Enhanced Metafile" @@ -5989,7 +6025,7 @@ msgstr "Litur lýsingar" #: ../src/extension/internal/filter/color.h:1690 #: ../src/extension/internal/filter/distort.h:95 #: ../src/extension/internal/filter/distort.h:204 -#: ../src/extension/internal/filter/filter-file.cpp:151 +#: ../src/extension/internal/filter/filter-file.cpp:111 #: ../src/extension/internal/filter/filter.cpp:212 #: ../src/extension/internal/filter/image.h:61 #: ../src/extension/internal/filter/morphology.h:75 @@ -6011,7 +6047,7 @@ msgstr "Litur lýsingar" #: ../src/extension/internal/filter/transparency.h:214 #: ../src/extension/internal/filter/transparency.h:287 #: ../src/extension/internal/filter/transparency.h:349 -#: ../src/ui/dialog/inkscape-preferences.cpp:1770 +#: ../src/ui/dialog/inkscape-preferences.cpp:1774 #, c-format msgid "Filters" msgstr "Síur" @@ -6198,7 +6234,7 @@ msgstr "Veðrun" #: ../src/extension/internal/filter/blurs.h:336 #: ../src/extension/internal/filter/color.h:1280 #: ../src/extension/internal/filter/color.h:1392 -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "Background color" msgstr "Bakgrunnslitur" @@ -6222,7 +6258,8 @@ msgstr "Tegund blöndunar:" #: ../src/extension/internal/filter/paint.h:702 #: ../src/extension/internal/filter/textures.h:77 #: ../src/extension/internal/filter/transparency.h:61 -#: ../src/filter-enums.cpp:52 ../src/ui/dialog/inkscape-preferences.cpp:686 +#: ../src/filter-enums.cpp:52 ../src/live_effects/lpe-copy_rotate.cpp:34 +#: ../src/ui/dialog/inkscape-preferences.cpp:684 msgid "Normal" msgstr "Venjulegt" @@ -6259,9 +6296,9 @@ msgstr "Uppruni ójafna" #: ../src/extension/internal/filter/color.h:712 #: ../src/extension/internal/filter/color.h:896 #: ../src/extension/internal/filter/transparency.h:132 -#: ../src/filter-enums.cpp:128 ../src/ui/tools/flood-tool.cpp:81 -#: ../src/ui/widget/color-icc-selector.cpp:163 -#: ../src/ui/widget/color-scales.cpp:355 ../src/ui/widget/color-scales.cpp:356 +#: ../src/filter-enums.cpp:128 ../src/ui/tools/flood-tool.cpp:82 +#: ../src/ui/widget/color-icc-selector.cpp:154 +#: ../src/ui/widget/color-scales.cpp:356 ../src/ui/widget/color-scales.cpp:357 msgid "Red" msgstr "Rautt" @@ -6271,9 +6308,9 @@ msgstr "Rautt" #: ../src/extension/internal/filter/color.h:713 #: ../src/extension/internal/filter/color.h:897 #: ../src/extension/internal/filter/transparency.h:133 -#: ../src/filter-enums.cpp:129 ../src/ui/tools/flood-tool.cpp:82 -#: ../src/ui/widget/color-icc-selector.cpp:164 -#: ../src/ui/widget/color-scales.cpp:358 ../src/ui/widget/color-scales.cpp:359 +#: ../src/filter-enums.cpp:129 ../src/ui/tools/flood-tool.cpp:83 +#: ../src/ui/widget/color-icc-selector.cpp:155 +#: ../src/ui/widget/color-scales.cpp:359 ../src/ui/widget/color-scales.cpp:360 msgid "Green" msgstr "Grænt" @@ -6283,9 +6320,9 @@ msgstr "Grænt" #: ../src/extension/internal/filter/color.h:714 #: ../src/extension/internal/filter/color.h:898 #: ../src/extension/internal/filter/transparency.h:134 -#: ../src/filter-enums.cpp:130 ../src/ui/tools/flood-tool.cpp:83 -#: ../src/ui/widget/color-icc-selector.cpp:165 -#: ../src/ui/widget/color-scales.cpp:361 ../src/ui/widget/color-scales.cpp:362 +#: ../src/filter-enums.cpp:130 ../src/ui/tools/flood-tool.cpp:84 +#: ../src/ui/widget/color-icc-selector.cpp:156 +#: ../src/ui/widget/color-scales.cpp:362 ../src/ui/widget/color-scales.cpp:363 #: ../share/extensions/nicechart.inx.h:34 msgid "Blue" msgstr "Blátt" @@ -6322,16 +6359,16 @@ msgstr "Hæð" #: ../src/extension/internal/filter/paint.h:86 #: ../src/extension/internal/filter/paint.h:592 #: ../src/extension/internal/filter/paint.h:707 -#: ../src/ui/tools/flood-tool.cpp:86 -#: ../src/ui/widget/color-icc-selector.cpp:174 -#: ../src/ui/widget/color-scales.cpp:387 ../src/ui/widget/color-scales.cpp:388 +#: ../src/ui/tools/flood-tool.cpp:87 +#: ../src/ui/widget/color-icc-selector.cpp:165 +#: ../src/ui/widget/color-scales.cpp:388 ../src/ui/widget/color-scales.cpp:389 #: ../src/widgets/tweak-toolbar.cpp:318 msgid "Lightness" msgstr "Ljósleiki (L)" #: ../src/extension/internal/filter/bumps.h:100 #: ../src/extension/internal/filter/bumps.h:331 -#: ../src/live_effects/lpe-measure-line.cpp:54 +#: ../src/live_effects/lpe-measure-line.cpp:56 #: ../src/widgets/measure-toolbar.cpp:302 msgid "Precision" msgstr "Nákvæmni" @@ -6349,7 +6386,7 @@ msgid "Distant" msgstr "Fjarlægt" #: ../src/extension/internal/filter/bumps.h:106 -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Point" msgstr "Punktljós" @@ -6363,13 +6400,13 @@ msgstr "Valkostir fjarlægs ljóss" #: ../src/extension/internal/filter/bumps.h:110 #: ../src/extension/internal/filter/bumps.h:332 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1172 msgid "Azimuth" msgstr "Áttarhorn" #: ../src/extension/internal/filter/bumps.h:111 #: ../src/extension/internal/filter/bumps.h:333 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1174 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 msgid "Elevation" msgstr "Hækkun" @@ -6476,13 +6513,15 @@ msgid "Transparency type:" msgstr "Tegund gegnsæis:" #: ../src/extension/internal/filter/bumps.h:353 -#: ../src/extension/internal/filter/morphology.h:176 ../src/filter-enums.cpp:91 +#: ../src/extension/internal/filter/morphology.h:176 +#: ../src/filter-enums.cpp:91 msgid "Atop" msgstr "Ofaná" #: ../src/extension/internal/filter/bumps.h:354 #: ../src/extension/internal/filter/distort.h:70 -#: ../src/extension/internal/filter/morphology.h:174 ../src/filter-enums.cpp:89 +#: ../src/extension/internal/filter/morphology.h:174 +#: ../src/filter-enums.cpp:89 msgid "In" msgstr "Inn" @@ -6520,18 +6559,18 @@ msgstr "Málun litrása" #: ../src/extension/internal/filter/color.h:157 #: ../src/extension/internal/filter/color.h:332 #: ../src/extension/internal/filter/paint.h:87 ../src/filter-enums.cpp:66 -#: ../src/ui/dialog/inkscape-preferences.cpp:978 -#: ../src/ui/tools/flood-tool.cpp:85 -#: ../src/ui/widget/color-icc-selector.cpp:170 -#: ../src/ui/widget/color-icc-selector.cpp:175 -#: ../src/ui/widget/color-scales.cpp:384 ../src/ui/widget/color-scales.cpp:385 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 +#: ../src/ui/tools/flood-tool.cpp:86 +#: ../src/ui/widget/color-icc-selector.cpp:161 +#: ../src/ui/widget/color-icc-selector.cpp:166 +#: ../src/ui/widget/color-scales.cpp:385 ../src/ui/widget/color-scales.cpp:386 #: ../src/widgets/tweak-toolbar.cpp:302 msgid "Saturation" msgstr "Litmettun (S)" #: ../src/extension/internal/filter/color.h:161 #: ../src/extension/internal/filter/transparency.h:135 -#: ../src/filter-enums.cpp:131 ../src/ui/tools/flood-tool.cpp:87 +#: ../src/filter-enums.cpp:131 ../src/ui/tools/flood-tool.cpp:88 msgid "Alpha" msgstr "Alfa gegnsæi" @@ -6631,13 +6670,13 @@ msgstr "Auðkenni" #: ../src/extension/internal/filter/color.h:503 #: ../src/extension/internal/filter/paint.h:498 ../src/filter-enums.cpp:111 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1029 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1028 msgid "Table" msgstr "Tafla" #: ../src/extension/internal/filter/color.h:504 #: ../src/extension/internal/filter/paint.h:499 ../src/filter-enums.cpp:112 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1032 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1031 msgid "Discrete" msgstr "Óáberandi" @@ -6700,23 +6739,23 @@ msgid "Extract Channel" msgstr "Ná í litrás" #: ../src/extension/internal/filter/color.h:715 -#: ../src/ui/widget/color-icc-selector.cpp:177 -#: ../src/ui/widget/color-icc-selector.cpp:182 -#: ../src/ui/widget/color-scales.cpp:409 ../src/ui/widget/color-scales.cpp:410 +#: ../src/ui/widget/color-icc-selector.cpp:168 +#: ../src/ui/widget/color-icc-selector.cpp:173 +#: ../src/ui/widget/color-scales.cpp:410 ../src/ui/widget/color-scales.cpp:411 msgid "Cyan" msgstr "Grænblátt (cyan)" #: ../src/extension/internal/filter/color.h:716 -#: ../src/ui/widget/color-icc-selector.cpp:178 -#: ../src/ui/widget/color-icc-selector.cpp:183 -#: ../src/ui/widget/color-scales.cpp:412 ../src/ui/widget/color-scales.cpp:413 +#: ../src/ui/widget/color-icc-selector.cpp:169 +#: ../src/ui/widget/color-icc-selector.cpp:174 +#: ../src/ui/widget/color-scales.cpp:413 ../src/ui/widget/color-scales.cpp:414 msgid "Magenta" msgstr "Blárautt (magenta)" #: ../src/extension/internal/filter/color.h:717 -#: ../src/ui/widget/color-icc-selector.cpp:179 -#: ../src/ui/widget/color-icc-selector.cpp:184 -#: ../src/ui/widget/color-scales.cpp:415 ../src/ui/widget/color-scales.cpp:416 +#: ../src/ui/widget/color-icc-selector.cpp:170 +#: ../src/ui/widget/color-icc-selector.cpp:175 +#: ../src/ui/widget/color-scales.cpp:416 ../src/ui/widget/color-scales.cpp:417 msgid "Yellow" msgstr "Gult" @@ -6741,14 +6780,14 @@ msgid "Fade to:" msgstr "Deyfa í:" #: ../src/extension/internal/filter/color.h:819 -#: ../src/ui/widget/color-icc-selector.cpp:180 -#: ../src/ui/widget/color-scales.cpp:418 ../src/ui/widget/color-scales.cpp:419 -#: ../src/ui/widget/selected-style.cpp:257 +#: ../src/ui/widget/color-icc-selector.cpp:171 +#: ../src/ui/widget/color-scales.cpp:419 ../src/ui/widget/color-scales.cpp:420 +#: ../src/ui/widget/selected-style.cpp:279 msgid "Black" msgstr "Svart" #: ../src/extension/internal/filter/color.h:820 -#: ../src/ui/widget/selected-style.cpp:253 +#: ../src/ui/widget/selected-style.cpp:275 msgid "White" msgstr "Hvítt" @@ -6771,7 +6810,7 @@ msgid "Customize greyscale components" msgstr "Sérsníða grátóna einingar" #: ../src/extension/internal/filter/color.h:980 -#: ../src/ui/widget/selected-style.cpp:249 +#: ../src/ui/widget/selected-style.cpp:271 msgid "Invert" msgstr "Umhverfa" @@ -6825,9 +6864,9 @@ msgstr "Skuggar" #: ../src/extension/internal/filter/color.h:1119 #: ../src/extension/internal/filter/paint.h:356 ../src/filter-enums.cpp:33 -#: ../src/live_effects/effect.cpp:92 +#: ../src/live_effects/effect.cpp:140 #: ../src/live_effects/lpe-transform_2pts.cpp:38 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1026 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1025 #: ../src/widgets/gradient-toolbar.cpp:1160 #: ../src/widgets/measure-toolbar.cpp:328 msgid "Offset" @@ -6859,8 +6898,8 @@ msgstr "Hliðrun rauðs" #: ../src/extension/internal/filter/color.h:1382 #: ../src/extension/internal/filter/color.h:1385 #: ../src/extension/internal/filter/color.h:1388 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2799 -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/dialog/layers.cpp:913 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2804 +#: ../src/ui/dialog/input.cpp:1442 ../src/ui/dialog/layers.cpp:919 #: ../src/ui/widget/page-sizer.cpp:230 msgid "X" msgstr "X" @@ -6873,8 +6912,8 @@ msgstr "X" #: ../src/extension/internal/filter/color.h:1383 #: ../src/extension/internal/filter/color.h:1386 #: ../src/extension/internal/filter/color.h:1389 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2803 -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/widget/page-sizer.cpp:231 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2808 +#: ../src/ui/dialog/input.cpp:1442 ../src/ui/widget/page-sizer.cpp:231 msgid "Y" msgstr "Y" @@ -6919,7 +6958,7 @@ msgstr "" "tegundir bakgrunna" #: ../src/extension/internal/filter/color.h:1483 -msgid "Quadritone fantasy" +msgid "Quadritone Fantasy" msgstr "Fjórtóna fantasía" #: ../src/extension/internal/filter/color.h:1485 @@ -7002,7 +7041,8 @@ msgid "Felt Feather" msgstr "Filtifjöðrun" #: ../src/extension/internal/filter/distort.h:71 -#: ../src/extension/internal/filter/morphology.h:175 ../src/filter-enums.cpp:90 +#: ../src/extension/internal/filter/morphology.h:175 +#: ../src/filter-enums.cpp:90 msgid "Out" msgstr "Út" @@ -7084,7 +7124,7 @@ msgid "Blur and displace edges of shapes and pictures" msgstr "" #: ../src/extension/internal/filter/distort.h:190 -#: ../src/live_effects/effect.cpp:127 +#: ../src/live_effects/effect.cpp:114 msgid "Roughen" msgstr "Ýfa" @@ -7099,17 +7139,13 @@ msgstr "Tegund iðu:" msgid "Small-scale roughening to edges and content" msgstr "Smávægileg ýfing á jöðrum og innihaldi" -#: ../src/extension/internal/filter/filter-file.cpp:34 -msgid "Bundled" -msgstr "Vöndlað" - -#: ../src/extension/internal/filter/filter-file.cpp:35 +#: ../src/extension/internal/filter/filter-file.cpp:68 msgid "Personal" msgstr "Einka" -#: ../src/extension/internal/filter/filter-file.cpp:47 -msgid "Null external module directory name. Filters will not be loaded." -msgstr "" +#: ../src/extension/internal/filter/filter-file.cpp:71 +msgid "Bundled" +msgstr "Vöndlað" #: ../src/extension/internal/filter/image.h:49 msgid "Edge Detect" @@ -7120,8 +7156,8 @@ msgid "Detect:" msgstr "Finna:" #: ../src/extension/internal/filter/image.h:52 -#: ../src/ui/dialog/template-load-tab.cpp:99 -#: ../src/ui/dialog/template-load-tab.cpp:136 +#: ../src/ui/dialog/template-load-tab.cpp:100 +#: ../src/ui/dialog/template-load-tab.cpp:137 msgid "All" msgstr "Allt" @@ -7169,6 +7205,7 @@ msgstr "Breidd" #: ../src/extension/internal/filter/morphology.h:69 #: ../src/extension/internal/filter/morphology.h:190 +#: ../src/ui/dialog/export.cpp:155 msgid "Antialiasing" msgstr "Afstöllun" @@ -7196,17 +7233,19 @@ msgstr "Fela mynd" msgid "Composite type:" msgstr "Tegund samsetningar:" -#: ../src/extension/internal/filter/morphology.h:173 ../src/filter-enums.cpp:88 +#: ../src/extension/internal/filter/morphology.h:173 +#: ../src/filter-enums.cpp:88 msgid "Over" msgstr "Yfir" -#: ../src/extension/internal/filter/morphology.h:177 ../src/filter-enums.cpp:92 +#: ../src/extension/internal/filter/morphology.h:177 +#: ../src/filter-enums.cpp:92 msgid "XOR" msgstr "XOR" #: ../src/extension/internal/filter/morphology.h:179 -#: ../src/ui/dialog/layer-properties.cpp:166 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:48 +#: ../src/ui/dialog/layer-properties.cpp:168 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:52 #: ../share/extensions/measure.inx.h:5 msgid "Position:" msgstr "Staðsetning:" @@ -7271,17 +7310,17 @@ msgstr "Suðfylling" #: ../src/extension/internal/filter/overlays.h:59 #: ../src/extension/internal/filter/paint.h:690 #: ../src/extension/internal/filter/shadows.h:60 ../src/ui/dialog/find.cpp:81 -#: ../src/ui/dialog/tracedialog.cpp:746 +#: ../src/ui/dialog/tracedialog.cpp:745 #: ../share/extensions/color_HSL_adjust.inx.h:2 #: ../share/extensions/color_custom.inx.h:2 -#: ../share/extensions/color_randomize.inx.h:2 ../share/extensions/dots.inx.h:2 -#: ../share/extensions/dxf_input.inx.h:2 +#: ../share/extensions/color_randomize.inx.h:2 +#: ../share/extensions/dots.inx.h:2 ../share/extensions/dxf_input.inx.h:2 #: ../share/extensions/dxf_outlines.inx.h:2 -#: ../share/extensions/gcodetools_area.inx.h:29 -#: ../share/extensions/gcodetools_engraving.inx.h:7 -#: ../share/extensions/gcodetools_graffiti.inx.h:21 -#: ../share/extensions/gcodetools_lathe.inx.h:22 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:11 +#: ../share/extensions/gcodetools_area.inx.h:45 +#: ../share/extensions/gcodetools_engraving.inx.h:15 +#: ../share/extensions/gcodetools_graffiti.inx.h:32 +#: ../share/extensions/gcodetools_lathe.inx.h:28 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:15 #: ../share/extensions/generate_voronoi.inx.h:2 #: ../share/extensions/gimp_xcf.inx.h:2 #: ../share/extensions/interp_att_g.inx.h:2 @@ -7396,7 +7435,7 @@ msgstr "Umbreyta mynd í myndristu með lóðréttum og láréttum línum" #: ../src/extension/internal/filter/paint.h:331 #: ../src/ui/dialog/align-and-distribute.cpp:1060 -#: ../src/widgets/desktop-widget.cpp:1933 +#: ../src/widgets/desktop-widget.cpp:1988 msgid "Drawing" msgstr "Teikningu" @@ -7405,7 +7444,7 @@ msgstr "Teikningu" #: ../src/extension/internal/filter/paint.h:496 #: ../src/extension/internal/filter/paint.h:590 #: ../src/extension/internal/filter/paint.h:976 -#: ../src/live_effects/effect.cpp:121 ../src/splivarot.cpp:2358 +#: ../src/live_effects/effect.cpp:108 ../src/splivarot.cpp:2366 msgid "Simplify" msgstr "Einfalda" @@ -7563,7 +7602,7 @@ msgid "Simple posterizing effect" msgstr "Einföld litþrykksáferð" #: ../src/extension/internal/filter/protrusions.h:48 -msgid "Snow crest" +msgid "Snow Crest" msgstr "Snjótoppur" #: ../src/extension/internal/filter/protrusions.h:50 @@ -7596,11 +7635,11 @@ msgstr "Gerð skugga:" #: ../src/extension/internal/filter/shadows.h:67 msgid "Outer cutout" -msgstr "" +msgstr "Ytri útklipping" #: ../src/extension/internal/filter/shadows.h:68 msgid "Inner cutout" -msgstr "" +msgstr "Innri útklipping" #: ../src/extension/internal/filter/shadows.h:69 msgid "Shadow only" @@ -7682,13 +7721,14 @@ msgid "Source:" msgstr "Uppruni:" #: ../src/extension/internal/filter/transparency.h:56 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1541 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1540 msgid "Background" msgstr "Bakgrunnur" #: ../src/extension/internal/filter/transparency.h:59 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2740 -#: ../src/ui/dialog/input.cpp:959 ../src/widgets/eraser-toolbar.cpp:163 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:40 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2745 +#: ../src/ui/dialog/input.cpp:920 ../src/widgets/eraser-toolbar.cpp:165 #: ../src/widgets/pencil-toolbar.cpp:138 ../src/widgets/spray-toolbar.cpp:389 #: ../src/widgets/tweak-toolbar.cpp:254 ../share/extensions/extrude.inx.h:2 #: ../share/extensions/triangle.inx.h:8 @@ -7756,13 +7796,13 @@ msgstr "" "þessa SVG-skjals valda því að allar skrárnar verða að flytjast saman." #: ../src/extension/internal/gdkpixbuf-input.cpp:201 -#: ../src/ui/dialog/inkscape-preferences.cpp:1487 +#: ../src/ui/dialog/inkscape-preferences.cpp:1491 #, c-format msgid "Embed" msgstr "Ívefja" -#: ../src/extension/internal/gdkpixbuf-input.cpp:202 ../src/sp-anchor.cpp:105 -#: ../src/ui/dialog/inkscape-preferences.cpp:1487 +#: ../src/extension/internal/gdkpixbuf-input.cpp:202 ../src/sp-anchor.cpp:141 +#: ../src/ui/dialog/inkscape-preferences.cpp:1491 #, c-format msgid "Link" msgstr "Tengill" @@ -7804,19 +7844,19 @@ msgstr "" "mynddílar). (Mun ekki virka í öllum vöfrum.)" #: ../src/extension/internal/gdkpixbuf-input.cpp:211 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/ui/dialog/inkscape-preferences.cpp:1498 #, c-format msgid "None (auto)" msgstr "Ekkert (sjálfvirkt)" #: ../src/extension/internal/gdkpixbuf-input.cpp:212 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/ui/dialog/inkscape-preferences.cpp:1498 #, c-format msgid "Smooth (optimizeQuality)" msgstr "Mýkja (besta fyrir gæðum)" #: ../src/extension/internal/gdkpixbuf-input.cpp:213 -#: ../src/ui/dialog/inkscape-preferences.cpp:1494 +#: ../src/ui/dialog/inkscape-preferences.cpp:1498 #, c-format msgid "Blocky (optimizeSpeed)" msgstr "Stallað (besta fyrir hraða)" @@ -7843,7 +7883,7 @@ msgstr "GIMP litstigull (*.ggr)" msgid "Gradients used in GIMP" msgstr "Litstiglar notaðir í GIMP" -#: ../src/extension/internal/grid.cpp:199 ../src/ui/widget/panel.cpp:113 +#: ../src/extension/internal/grid.cpp:199 ../src/ui/widget/panel.cpp:112 msgid "Grid" msgstr "Hnitanet" @@ -7868,15 +7908,17 @@ msgid "Vertical Offset:" msgstr "Lóðrétt hliðrun:" #: ../src/extension/internal/grid.cpp:209 -#: ../src/ui/dialog/inkscape-preferences.cpp:1508 +#: ../src/ui/dialog/inkscape-preferences.cpp:1512 #: ../share/extensions/draw_from_triangle.inx.h:58 -#: ../share/extensions/eqtexsvg.inx.h:4 ../share/extensions/foldablebox.inx.h:9 +#: ../share/extensions/eqtexsvg.inx.h:4 +#: ../share/extensions/foldablebox.inx.h:9 ../share/extensions/frame.inx.h:2 #: ../share/extensions/funcplot.inx.h:38 #: ../share/extensions/grid_cartesian.inx.h:23 #: ../share/extensions/grid_isometric.inx.h:11 #: ../share/extensions/grid_polar.inx.h:22 #: ../share/extensions/guides_creator.inx.h:25 -#: ../share/extensions/hershey.inx.h:52 ../share/extensions/layout_nup.inx.h:35 +#: ../share/extensions/hershey.inx.h:52 +#: ../share/extensions/layout_nup.inx.h:35 #: ../share/extensions/lindenmayer.inx.h:34 #: ../share/extensions/nicechart.inx.h:45 #: ../share/extensions/param_curves.inx.h:30 @@ -7898,9 +7940,9 @@ msgid "Render" msgstr "Myndgerð" #: ../src/extension/internal/grid.cpp:210 -#: ../src/ui/dialog/document-properties.cpp:151 -#: ../src/ui/dialog/inkscape-preferences.cpp:820 -#: ../src/widgets/toolbox.cpp:1865 +#: ../src/ui/dialog/document-properties.cpp:147 +#: ../src/ui/dialog/inkscape-preferences.cpp:818 +#: ../src/widgets/toolbox.cpp:1389 msgid "Grids" msgstr "Hnitanet" @@ -7932,7 +7974,7 @@ msgstr "LaTeX með PSTricks fjölvum (*.tex)" msgid "LaTeX PSTricks File" msgstr "LaTeX PSTricks skrá" -#: ../src/extension/internal/latex-pstricks.cpp:330 +#: ../src/extension/internal/latex-pstricks.cpp:331 msgid "LaTeX Print" msgstr "LaTeX prentun" @@ -7950,40 +7992,40 @@ msgstr "OpenDocument teikningarskrá" #. TRANSLATORS: The following are document crop settings for PDF import #. more info: http://www.acrobatusers.com/tech_corners/javascript_corner/tips/2006/page_bounds/ -#: ../src/extension/internal/pdfinput/pdf-input.cpp:75 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:74 msgid "media box" msgstr "media box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:76 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:75 msgid "crop box" msgstr "crop box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:77 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:76 msgid "trim box" msgstr "trim box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:78 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:77 msgid "bleed box" msgstr "bleed box" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:79 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:78 msgid "art box" msgstr "art box" #. Crop settings -#: ../src/extension/internal/pdfinput/pdf-input.cpp:109 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:108 msgid "Clip to:" msgstr "Afmarka við:" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:120 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:119 msgid "Page settings" msgstr "Stillingar blaðsíðu" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:121 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:120 msgid "Precision of approximating gradient meshes:" msgstr "Nákvæmni við nálgun á litstigulsmöskvum:" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:122 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:121 msgid "" "Note: setting the precision too high may result in a large SVG file " "and slow performance." @@ -7991,29 +8033,29 @@ msgstr "" "Athugið: ef nákvæmni er sett of mikil getur af því leitt að SVG " "skráin verði mjög stór og afköst tölvunnar minnki." -#: ../src/extension/internal/pdfinput/pdf-input.cpp:126 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:125 msgid "Poppler/Cairo import" msgstr "Poppler/Cairo innflutningur" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:127 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:126 msgid "" "Import via external library. Text consists of groups containing cloned " "glyphs where each glyph is a path. Images are stored internally. Meshes " "cause entire document to be rendered as a raster image." msgstr "" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:128 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:127 msgid "Internal import" msgstr "Innri innflutningur" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:129 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:128 msgid "" "Import via internal (Poppler derived) library. Text is stored as text but " "white space is missing. Meshes are converted to tiles, the number depends on " "the precision set below." msgstr "" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:135 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:134 msgid "rough" msgstr "gróft" @@ -8024,63 +8066,63 @@ msgstr "gróft" #. _textHandlingCombo->set_active_text(_("Import text as text")); #. hbox5 = Gtk::manage(new class Gtk::HBox(false, 4)); #. Font option -#: ../src/extension/internal/pdfinput/pdf-input.cpp:146 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:145 msgid "Replace PDF fonts by closest-named installed fonts" msgstr "Skipta út PDF-letri með því uppsetta letri sem heitir líkasta nafninu" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:148 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:147 msgid "Embed images" msgstr "Ívefja myndir" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:150 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:149 msgid "Import settings" msgstr "Innflutningsstillingar" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:272 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:312 msgid "PDF Import Settings" msgstr "PDF innflutningsstillingar" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:414 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:454 msgctxt "PDF input precision" msgid "rough" msgstr "gróft" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:415 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:455 msgctxt "PDF input precision" msgid "medium" msgstr "miðlungs" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:416 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:456 msgctxt "PDF input precision" msgid "fine" msgstr "fínt" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:417 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:457 msgctxt "PDF input precision" msgid "very fine" msgstr "mjög fínt" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:903 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:943 msgid "PDF Input" msgstr "PDF ílag" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:908 -msgid "Adobe PDF (*.pdf)" -msgstr "Adobe PDF (*.pdf)" +#: ../src/extension/internal/pdfinput/pdf-input.cpp:948 +msgid "Portable Document Format (*.pdf)" +msgstr "Portable Document Format (*.pdf)" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:909 -msgid "Adobe Portable Document Format" +#: ../src/extension/internal/pdfinput/pdf-input.cpp:949 +msgid "Portable Document Format" msgstr "Adobe Portable Document snið" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:916 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:956 msgid "AI Input" msgstr "AI ílag" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:921 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:961 msgid "Adobe Illustrator 9.0 and above (*.ai)" msgstr "Adobe Illustrator 9.0 og hærra (*.ai)" -#: ../src/extension/internal/pdfinput/pdf-input.cpp:922 +#: ../src/extension/internal/pdfinput/pdf-input.cpp:962 msgid "Open files saved in Adobe Illustrator 9.0 and newer versions" msgstr "Opna skrár vistaðar með Adobe Illustrator 9.0 eða nýrri" @@ -8160,97 +8202,108 @@ msgstr "Þjappað hreint SVG (*.svgz)" msgid "Scalable Vector Graphics format compressed with GZip" msgstr "SVG vigurteikningasnið þjappað með GZip" -#: ../src/extension/internal/vsd-input.cpp:286 +#: ../src/extension/internal/vsd-input.cpp:311 msgid "VSD Input" msgstr "VSD ílag" -#: ../src/extension/internal/vsd-input.cpp:291 +#: ../src/extension/internal/vsd-input.cpp:316 msgid "Microsoft Visio Diagram (*.vsd)" msgstr "Microsoft Visio skýringamynd (*.vsd)" -#: ../src/extension/internal/vsd-input.cpp:292 +#: ../src/extension/internal/vsd-input.cpp:317 msgid "File format used by Microsoft Visio 6 and later" msgstr "Skráasnið notað af Microsoft Visio 6 og síðar" -#: ../src/extension/internal/vsd-input.cpp:299 +#: ../src/extension/internal/vsd-input.cpp:324 msgid "VDX Input" msgstr "VDX ílag" -#: ../src/extension/internal/vsd-input.cpp:304 +#: ../src/extension/internal/vsd-input.cpp:329 msgid "Microsoft Visio XML Diagram (*.vdx)" msgstr "Microsoft Visio XML skýringamynd (*.vdx)" -#: ../src/extension/internal/vsd-input.cpp:305 +#: ../src/extension/internal/vsd-input.cpp:330 msgid "File format used by Microsoft Visio 2010 and later" msgstr "Skráasnið notað af Microsoft Visio 2010 og síðar" -#: ../src/extension/internal/vsd-input.cpp:312 +#: ../src/extension/internal/vsd-input.cpp:337 msgid "VSDM Input" msgstr "VSDM ílag" -#: ../src/extension/internal/vsd-input.cpp:317 +#: ../src/extension/internal/vsd-input.cpp:342 msgid "Microsoft Visio 2013 drawing (*.vsdm)" msgstr "Microsoft Visio 2013 teikning (*.vsdm)" -#: ../src/extension/internal/vsd-input.cpp:318 -#: ../src/extension/internal/vsd-input.cpp:331 +#: ../src/extension/internal/vsd-input.cpp:343 +#: ../src/extension/internal/vsd-input.cpp:356 msgid "File format used by Microsoft Visio 2013 and later" msgstr "Skráasnið notað af Microsoft Visio 2013 og síðar" -#: ../src/extension/internal/vsd-input.cpp:325 +#: ../src/extension/internal/vsd-input.cpp:350 msgid "VSDX Input" msgstr "VSDX ílag" -#: ../src/extension/internal/vsd-input.cpp:330 +#: ../src/extension/internal/vsd-input.cpp:355 msgid "Microsoft Visio 2013 drawing (*.vsdx)" msgstr "Microsoft Visio 2013 teikning (*.vsdx)" -#: ../src/extension/internal/wmf-inout.cpp:3180 +#: ../src/extension/internal/wmf-inout.cpp:3206 msgid "WMF Input" msgstr "WMF ílag" -#: ../src/extension/internal/wmf-inout.cpp:3185 +#: ../src/extension/internal/wmf-inout.cpp:3211 msgid "Windows Metafiles (*.wmf)" msgstr "Windows Metafile (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3186 +#: ../src/extension/internal/wmf-inout.cpp:3212 msgid "Windows Metafiles" msgstr "Windows Metafile" -#: ../src/extension/internal/wmf-inout.cpp:3194 +#: ../src/extension/internal/wmf-inout.cpp:3220 msgid "WMF Output" msgstr "WMF frálag" -#: ../src/extension/internal/wmf-inout.cpp:3204 +#: ../src/extension/internal/wmf-inout.cpp:3230 msgid "Map all fill patterns to standard WMF hatches" msgstr "Varpa öllum fyllimynstrum yfir í staðlaðar WMF strikaskyggingar" -#: ../src/extension/internal/wmf-inout.cpp:3208 -#: ../share/extensions/wmf_input.inx.h:2 ../share/extensions/wmf_output.inx.h:2 +#: ../src/extension/internal/wmf-inout.cpp:3234 msgid "Windows Metafile (*.wmf)" msgstr "Windows Metafile (*.wmf)" -#: ../src/extension/internal/wmf-inout.cpp:3209 +#: ../src/extension/internal/wmf-inout.cpp:3235 msgid "Windows Metafile" msgstr "Windows Metafile" -#: ../src/extension/internal/wpg-input.cpp:144 +#: ../src/extension/internal/wpg-input.cpp:154 msgid "WPG Input" msgstr "WPG ílag" -#: ../src/extension/internal/wpg-input.cpp:149 +#: ../src/extension/internal/wpg-input.cpp:159 msgid "WordPerfect Graphics (*.wpg)" msgstr "WordPerfect Graphics (*.wpg)" -#: ../src/extension/internal/wpg-input.cpp:150 +#: ../src/extension/internal/wpg-input.cpp:160 msgid "Vector graphics format used by Corel WordPerfect" msgstr "Vigurteikningasnið notað af Corel WordPerfect" -#: ../src/extension/prefdialog.cpp:251 +#: ../src/extension/prefdialog.cpp:74 ../src/ui/dialog/aboutbox.cpp:102 +#: ../src/ui/dialog/knot-properties.cpp:44 ../src/ui/dialog/panel-dialog.h:168 +#: ../src/ui/dialog/panel-dialog.h:217 ../src/ui/dialog/text-edit.cpp:64 +#: ../src/verbs.cpp:2588 +msgid "_Close" +msgstr "_Loka" + +#: ../src/extension/prefdialog.cpp:75 ../src/ui/dialog/text-edit.cpp:65 +#: ../src/ui/dialog/transformation.cpp:142 +msgid "_Apply" +msgstr "Virkj_a" + +#: ../src/extension/prefdialog.cpp:249 msgid "Live preview" msgstr "Gagnvirk forskoðun" -#: ../src/extension/prefdialog.cpp:251 +#: ../src/extension/prefdialog.cpp:249 msgid "Is the effect previewed live on canvas?" msgstr "Eru áhrifin forskoðuð á myndfletinum í rauntíma?" @@ -8258,100 +8311,129 @@ msgstr "Eru áhrifin forskoðuð á myndfletinum í rauntíma?" msgid "Format autodetect failed. The file is being opened as SVG." msgstr "Sjálfvirk skynjun sniðs mistókst. Skráin verður opnuð sem SVG." -#: ../src/file.cpp:173 -msgid "default.svg" -msgstr "sjálfgefið.svg" +#: ../src/file-update.cpp:320 +msgid "Convert legacy Inkscape file" +msgstr "Umbreyta eldri Inkscape skrám" -#: ../src/file.cpp:414 +#: ../src/file-update.cpp:325 msgid "" -"Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" -"Drawing elements may be too small. This can be corrected by\n" -"either setting the SVG 'viewBox' to compensate or by scaling\n" -"all the elements in the drawing." +"was created in an older version of Inkscape (90 DPI) and we need to make it " +"compatible with newer versions (96 DPI). Tell us about this file:\n" msgstr "" -#: ../src/file.cpp:418 ../src/file.cpp:535 -msgid "Old Inkscape file detected (90 DPI)" -msgstr "Gömul Inkscape-skrá fannst (90 PÁT)" +#: ../src/file-update.cpp:333 +msgid "" +"This file contains digital artwork for screen display. (Choose if " +"unsure.)" +msgstr "" -#: ../src/file.cpp:425 ../src/file.cpp:542 -msgid "Create backup file (in same directory)." -msgstr "Búa til öryggisafrit (í sömu möppu)." +#: ../src/file-update.cpp:336 +msgid "This file is intended for physical output, such as paper or 3D prints." +msgstr "" -#: ../src/file.cpp:431 ../src/file.cpp:548 ../src/ui/widget/page-sizer.cpp:898 -msgid "Set 'viewBox'" -msgstr "Setja 'viewBox' sýnikassa" +#: ../src/file-update.cpp:338 +msgid "" +"The appearance of elements such as clips, masks, filters, and clones\n" +"is most important. (Choose if unsure.)" +msgstr "" -#: ../src/file.cpp:432 ../src/file.cpp:549 -msgid "Scale elements" -msgstr "Kvarða einindi" +#: ../src/file-update.cpp:342 +msgid "" +"The accuracy of the physical unit size and position values of objects\n" +"in the file is most important. (Experimental.)" +msgstr "" -#: ../src/file.cpp:433 ../src/file.cpp:550 -#: ../src/widgets/connector-toolbar.cpp:316 -msgid "Ignore" -msgstr "Hunsa" +#: ../src/file-update.cpp:344 +msgid "Create a backup file in same directory." +msgstr "Búa til öryggisafrit í sömu möppu." + +#: ../src/file-update.cpp:345 +msgid "More details..." +msgstr "Nánari upplýsingar..." -#: ../src/file.cpp:530 +#: ../src/file-update.cpp:348 msgid "" -"Old Inkscape files use 1in == 90px. CSS requires 1in == 96px.\n" -"Drawings meant to match a physical size (e.g. Letter or A4)\n" -"will be too small. Scaling the drawing can correct for this.\n" -"Internal scaling can be handled either by setting the SVG 'viewBox'\n" -"attribute to compensate or by scaling all objects in the drawing." +"We've updated Inkscape to follow the CSS standard of 96 DPI for " +"better browser compatibility; we used to use 90 DPI. Digital artwork for " +"screen display will be converted to 96 DPI without scaling and should be " +"unaffected. Artwork drawn at 90 DPI for a specific physical size will be too " +"small if converted to 96 DPI without any scaling. There are two scaling " +"methods:\n" +"\n" +"Scaling the whole document: The least error-prone method, this " +"preserves the appearance of the artwork, including filters and the position " +"of masks, etc. The scale of the artwork relative to the document size may " +"not be accurate.\n" +"\n" +"Scaling individual elements in the artwork: This method is less " +"reliable and can result in a changed appearance, but is better for physical " +"output that relies on accurate sizes and positions (for example, for 3D " +"printing.)\n" +"\n" +"More information about this change are available in the Inkscape FAQ" msgstr "" +#: ../src/file-update.cpp:391 +msgid "OK" +msgstr "Í lagi" + #. Look for SPNamedView and SPDefs loop #. desktop->getDocument()->ensureUpToDate(); // Does not update box3d! -#: ../src/file.cpp:771 +#: ../src/file-update.cpp:613 msgid "Update Document" msgstr "Uppfæra skjal" -#: ../src/file.cpp:787 ../src/main-cmdlinexact.cpp:177 +#: ../src/file.cpp:165 +msgid "default.svg" +msgstr "sjálfgefið.svg" + +#: ../src/file.cpp:281 ../src/main-cmdlinexact.cpp:174 msgid "Broken links have been changed to point to existing files." msgstr "Skemmdir tenglar hafa verið lagaðir þannig að þeir beini á skrár." -#: ../src/file.cpp:798 ../src/file.cpp:1754 +#: ../src/file.cpp:292 ../src/file.cpp:1347 #, c-format msgid "Failed to load the requested file %s" msgstr "Gat ekki lesið umbeðnu skrána '%s" -#: ../src/file.cpp:824 +#: ../src/file.cpp:318 msgid "Document not saved yet. Cannot revert." msgstr "Skjalið ekki ennþá vistað. Get ekki endurheimt." -#: ../src/file.cpp:830 +#: ../src/file.cpp:324 msgid "Changes will be lost! Are you sure you want to reload document %1?" msgstr "" "Breytingar munu tapast! Ertu viss um að þú viljir endurlesa skjalið %1?" -#: ../src/file.cpp:856 +#: ../src/file.cpp:350 msgid "Document reverted." msgstr "Skjal endurheimt." -#: ../src/file.cpp:858 +#: ../src/file.cpp:352 msgid "Document not reverted." msgstr "Skjal ekki endurheimt." -#: ../src/file.cpp:1008 +#: ../src/file.cpp:502 msgid "Select file to open" msgstr "Veldu skrá til að opna" -#: ../src/file.cpp:1090 +#: ../src/file.cpp:584 msgid "Clean up document" msgstr "Hreinsa skjalið" -#: ../src/file.cpp:1097 +#: ../src/file.cpp:591 #, c-format msgid "Removed %i unused definition in <defs>." msgid_plural "Removed %i unused definitions in <defs>." msgstr[0] "Fjarlægði %i ónotaða skilgreiningu í <defs>." msgstr[1] "Fjarlægði %i ónotaðar skilgreiningar í <defs>." -#: ../src/file.cpp:1102 +#: ../src/file.cpp:596 msgid "No unused definitions in <defs>." msgstr "Engar ónotaðar skilgreiningar í <defs>." -#: ../src/file.cpp:1136 +#: ../src/file.cpp:630 #, c-format msgid "" "No Inkscape extension found to save document (%s). This may have been " @@ -8360,65 +8442,65 @@ msgstr "" "Fann ekki Inkscape-viðbót til að vista skjalið (%s). Það gæti stafað af " "óþekktri skráarendingu." -#: ../src/file.cpp:1137 ../src/file.cpp:1147 ../src/file.cpp:1156 -#: ../src/file.cpp:1163 ../src/file.cpp:1169 +#: ../src/file.cpp:631 ../src/file.cpp:641 ../src/file.cpp:650 +#: ../src/file.cpp:657 ../src/file.cpp:663 msgid "Document not saved." msgstr "Skjalið ekki vistað." -#: ../src/file.cpp:1146 +#: ../src/file.cpp:640 #, c-format msgid "" "File %s is write protected. Please remove write protection and try again." msgstr "Skráin %s er ritvarin. Taktu ritvörnina af og reyndu aftur." -#: ../src/file.cpp:1155 +#: ../src/file.cpp:649 #, c-format msgid "File %s could not be saved." msgstr "Ekki tókst að vista skrána %s." -#: ../src/file.cpp:1188 ../src/file.cpp:1190 +#: ../src/file.cpp:682 ../src/file.cpp:684 msgid "Document saved." msgstr "Skjalið vistað." #. We are saving for the first time; create a unique default filename -#: ../src/file.cpp:1333 ../src/file.cpp:1913 +#: ../src/file.cpp:827 ../src/file.cpp:1506 msgid "drawing" msgstr "teikning" -#: ../src/file.cpp:1338 +#: ../src/file.cpp:832 msgid "drawing-%1" msgstr "teikning-%1" -#: ../src/file.cpp:1355 +#: ../src/file.cpp:849 msgid "Select file to save a copy to" msgstr "Veldu skrá til að vista afrit í" -#: ../src/file.cpp:1357 +#: ../src/file.cpp:851 msgid "Select file to save to" msgstr "Veldu skrá til að vista í" -#: ../src/file.cpp:1462 ../src/file.cpp:1464 +#: ../src/file.cpp:956 ../src/file.cpp:958 msgid "No changes need to be saved." msgstr "Engar breytingar þarf að vista." -#: ../src/file.cpp:1483 +#: ../src/file.cpp:977 msgid "Saving document..." msgstr "Vista skjal..." -#: ../src/file.cpp:1751 ../src/ui/dialog/inkscape-preferences.cpp:1481 +#: ../src/file.cpp:1344 ../src/ui/dialog/inkscape-preferences.cpp:1485 #: ../src/ui/dialog/ocaldialogs.cpp:1091 msgid "Import" msgstr "Flytja inn" -#: ../src/file.cpp:1801 +#: ../src/file.cpp:1394 msgid "Select file to import" msgstr "Veldu skrá til að flytja inn" -#: ../src/file.cpp:1934 +#: ../src/file.cpp:1527 msgid "Select file to export to" msgstr "Veldu skrá til að flytja út í" -#: ../src/file.cpp:2187 +#: ../src/file.cpp:1780 msgid "Import Clip Art" msgstr "Flytja inn klippimynd" @@ -8503,18 +8585,18 @@ msgstr "Hart ljós" msgid "Soft Light" msgstr "Mjúkt ljós" -#: ../src/filter-enums.cpp:63 ../src/splivarot.cpp:72 +#: ../src/filter-enums.cpp:63 ../src/splivarot.cpp:73 msgid "Difference" msgstr "Mismunur" -#: ../src/filter-enums.cpp:64 ../src/splivarot.cpp:79 +#: ../src/filter-enums.cpp:64 ../src/splivarot.cpp:80 msgid "Exclusion" msgstr "Útilokun" -#: ../src/filter-enums.cpp:65 ../src/ui/tools/flood-tool.cpp:84 -#: ../src/ui/widget/color-icc-selector.cpp:169 -#: ../src/ui/widget/color-icc-selector.cpp:173 -#: ../src/ui/widget/color-scales.cpp:381 ../src/ui/widget/color-scales.cpp:382 +#: ../src/filter-enums.cpp:65 ../src/ui/tools/flood-tool.cpp:85 +#: ../src/ui/widget/color-icc-selector.cpp:160 +#: ../src/ui/widget/color-icc-selector.cpp:164 +#: ../src/ui/widget/color-scales.cpp:382 ../src/ui/widget/color-scales.cpp:383 #: ../src/widgets/tweak-toolbar.cpp:286 msgid "Hue" msgstr "Litblær (H)" @@ -8539,7 +8621,8 @@ msgstr "Snúa litblæ" msgid "Luminance to Alpha" msgstr "Ljómi í alfa-gegnsæi" -#: ../src/filter-enums.cpp:87 ../share/extensions/jessyInk_mouseHandler.inx.h:3 +#: ../src/filter-enums.cpp:87 +#: ../share/extensions/jessyInk_mouseHandler.inx.h:3 #: ../share/extensions/jessyInk_transitions.inx.h:7 #: ../share/extensions/measure.inx.h:20 ../share/extensions/nicechart.inx.h:33 msgid "Default" @@ -8554,7 +8637,7 @@ msgstr "Hreinsa" msgid "Copy" msgstr "Afrita" -#: ../src/filter-enums.cpp:97 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1561 +#: ../src/filter-enums.cpp:97 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1560 msgid "Destination" msgstr "Áfangastaður" @@ -8582,8 +8665,8 @@ msgstr "Ljósara" msgid "Arithmetic" msgstr "Útreiknað" -#: ../src/filter-enums.cpp:120 ../src/selection-chemistry.cpp:542 -#: ../src/ui/dialog/objects.cpp:1880 +#: ../src/filter-enums.cpp:120 ../src/selection-chemistry.cpp:544 +#: ../src/ui/dialog/objects.cpp:1919 msgid "Duplicate" msgstr "Tvöfalda" @@ -8628,7 +8711,7 @@ msgstr "Umhverfa litum í litstigli" msgid "Reverse gradient" msgstr "Snúa við litstigli" -#: ../src/gradient-chemistry.cpp:1654 ../src/widgets/gradient-selector.cpp:208 +#: ../src/gradient-chemistry.cpp:1654 ../src/widgets/gradient-selector.cpp:207 msgid "Delete swatch" msgstr "Eyða litaprufu" @@ -8766,42 +8849,38 @@ msgstr "Færa miðjumerki litstiguls" msgid "Delete gradient stop(s)" msgstr "Eyða stoppmerkjum í litstigli" -#: ../src/inkscape.cpp:238 -msgid "Autosave failed! Cannot create directory %1." -msgstr "Sjálfvirk vistun mistókst! Get ekki búið til möppuna %1." - -#: ../src/inkscape.cpp:247 +#: ../src/inkscape.cpp:224 msgid "Autosave failed! Cannot open directory %1." msgstr "Sjálfvirk vistun mistókst! Get ekki opnað möppuna %1." -#: ../src/inkscape.cpp:263 +#: ../src/inkscape.cpp:240 msgid "Autosaving documents..." msgstr "Sjálfvirk vistun skjala..." -#: ../src/inkscape.cpp:331 +#: ../src/inkscape.cpp:308 msgid "Autosave failed! Could not find inkscape extension to save document." msgstr "" "Sjálfvirk vistun mistókst! Fann ekki Inkscape-viðbót til að vista skjalið." -#: ../src/inkscape.cpp:334 ../src/inkscape.cpp:341 +#: ../src/inkscape.cpp:311 ../src/inkscape.cpp:318 #, c-format msgid "Autosave failed! File %s could not be saved." msgstr "Sjálfvirk vistun mistókst! Ekki tókst að vista skrána %s." -#: ../src/inkscape.cpp:356 +#: ../src/inkscape.cpp:333 msgid "Autosave complete." msgstr "Sjálfvirkri vistun lokið." -#: ../src/inkscape.cpp:714 +#: ../src/inkscape.cpp:647 msgid "Untitled document" msgstr "Ónefnt skjal" #. Show nice dialog box -#: ../src/inkscape.cpp:746 +#: ../src/inkscape.cpp:679 msgid "Inkscape encountered an internal error and will close now.\n" msgstr "Inkscape rakst á innri villu og verður núna lokað.\n" -#: ../src/inkscape.cpp:747 +#: ../src/inkscape.cpp:680 msgid "" "Automatic backups of unsaved documents were done to the following " "locations:\n" @@ -8809,282 +8888,362 @@ msgstr "" "Sjálfvirk öryggisafrit af óvistuðum skjölum voru útbúin á eftirfarandi " "stöðum:\n" -#: ../src/inkscape.cpp:748 +#: ../src/inkscape.cpp:681 msgid "Automatic backup of the following documents failed:\n" msgstr "Sjálfvirk öryggisafrit af eftirfarandi skjölum mistókst:\n" -#: ../src/inkview.cpp:225 +#. wether to launch in fullscreen mode +#. wether to search folders for SVG files recursively +#. time (in seconds) after which the next image of the slideshow is automatically loaded +#. scale factor for images +#. (currently only applied to the first image - others are resized to window dimensions) +#: ../src/inkview.cpp:69 msgid "Inkscape Options" msgstr "Valkostir Inkscape" -#: ../src/inkview.cpp:226 +#: ../src/inkview.cpp:70 msgid "Default program options" msgstr "Sjálfgefnir valkostir forritsins" -#: ../src/inkview.cpp:233 +#: ../src/inkview.cpp:76 +msgid "Launch in fullscreen mode" +msgstr "Ræsa í skjáfylliham" + +#: ../src/inkview.cpp:83 +msgid "Search folders recursively" +msgstr "Leita einnig í undirmöppum" + +#: ../src/inkview.cpp:90 ../src/inkview.cpp:98 msgid "NUM" msgstr "NUM" -#: ../src/inkview.cpp:239 -msgid "FILES..." -msgstr "SKRÁR..." +#: ../src/inkview.cpp:91 +msgid "Change image every NUM seconds" +msgstr "Skipta um mynd á NUM sekúndna fresti" + +#: ../src/inkview.cpp:99 +msgid "Scale image by factor NUM" +msgstr "Kvarða mynd um NUM hlutfall" + +#: ../src/inkview.cpp:105 +msgid "FILES/FOLDERS…" +msgstr "SKRÁR/MÖPPUR…" + +#: ../src/inkview.cpp:120 +msgid "File or folder does not exist" +msgstr "Skráin eða mappan er ekki til" -#: ../src/inkview.cpp:251 -msgid "Open SVG files" -msgstr "Opna SVG-skrár" +#: ../src/inkview.cpp:149 +msgid "Could not open file" +msgstr "Gat ekki opnað skrá" -#: ../src/knot.cpp:329 +#: ../src/inkview.cpp:175 +msgid "- display SVG files" +msgstr "- birta SVG-skrár" + +#: ../src/inkview.cpp:177 +msgid "" +"Quickly browse through a collection of .svg(z) files\n" +"or show them as a slide show." +msgstr "" + +#: ../src/inkview.cpp:180 +msgid "" +"Example:\n" +" inkview -t 3 file1.svg file2.svgz series*.svg more_files" +msgstr "" +"Dæmi:\n" +" inkview -t 3 skrá1.svg skrá2.svgz röð*.svg more_files" + +#: ../src/inkview.cpp:213 +msgid "No valid files to load." +msgstr "" + +#: ../src/knot.cpp:343 msgid "Node or handle drag canceled." msgstr "Hætt við drátt á haldfangi eða hnút." -#: ../src/knotholder.cpp:167 +#: ../src/knotholder.cpp:180 msgid "Change handle" msgstr "Skipta um haldfang" -#: ../src/knotholder.cpp:254 +#: ../src/knotholder.cpp:317 msgid "Move handle" msgstr "Færa haldfang" #. TRANSLATORS: This refers to the pattern that's inside the object -#: ../src/knotholder.cpp:273 ../src/knotholder.cpp:295 +#: ../src/knotholder.cpp:336 ../src/knotholder.cpp:358 msgid "Move the pattern fill inside the object" msgstr "Flytja mynsturfyllingu innan hlutarins" -#: ../src/knotholder.cpp:277 ../src/knotholder.cpp:299 +#: ../src/knotholder.cpp:340 ../src/knotholder.cpp:362 msgid "Scale the pattern fill; uniformly if with Ctrl" msgstr "" "Kvarða mynsturfyllingu; með Ctrl til að halda stærðarhlutföllum" -#: ../src/knotholder.cpp:281 ../src/knotholder.cpp:303 +#: ../src/knotholder.cpp:344 ../src/knotholder.cpp:366 msgid "Rotate the pattern fill; with Ctrl to snap angle" msgstr "Snúa mynsturfyllingu; með Ctrl til að þrepa horn" -#: ../src/libnrtype/FontFactory.cpp:646 +#: ../src/libnrtype/FontFactory.cpp:652 msgid "Ignoring font without family that will crash Pango" msgstr "" -#: ../src/live_effects/effect.cpp:84 -msgid "doEffect stack test" -msgstr "" - -#: ../src/live_effects/effect.cpp:85 -msgid "Angle bisector" -msgstr "Helmingalína horns" - -#: ../src/live_effects/effect.cpp:86 -msgid "Circle (by center and radius)" -msgstr "Hringur (eftir miðju og lengd geisla)" - -#: ../src/live_effects/effect.cpp:87 -msgid "Circle by 3 points" -msgstr "Hringur af þremur punktum" - -#: ../src/live_effects/effect.cpp:88 -msgid "Dynamic stroke" -msgstr "Breytileg stroka" - -#: ../src/live_effects/effect.cpp:89 ../share/extensions/extrude.inx.h:1 -msgid "Extrude" -msgstr "Pressa út" - -#: ../src/live_effects/effect.cpp:90 -msgid "Lattice Deformation" -msgstr "Afmyndun grindar" - -#: ../src/live_effects/effect.cpp:91 -msgid "Line Segment" -msgstr "Línubútur" - -#: ../src/live_effects/effect.cpp:93 -#: ../src/live_effects/lpe-measure-line.cpp:44 -msgid "Parallel" -msgstr "Samhliða" - -#: ../src/live_effects/effect.cpp:94 -msgid "Path length" -msgstr "Lengd ferils" - -#: ../src/live_effects/effect.cpp:95 -msgid "Perpendicular bisector" -msgstr "Hornrétt helmingaskipting" - -#: ../src/live_effects/effect.cpp:96 -msgid "Perspective path" -msgstr "Fjarvíddarferill" - -#: ../src/live_effects/effect.cpp:97 -msgid "Recursive skeleton" -msgstr "Endurkvæm grind" - -#: ../src/live_effects/effect.cpp:98 -msgid "Tangent to curve" -msgstr "Snertill (tangens) á feril" - -#: ../src/live_effects/effect.cpp:99 -msgid "Text label" -msgstr "Textalýsing" - -#: ../src/live_effects/effect.cpp:100 -msgid "Fillet/Chamfer" -msgstr "Kverkrúnnun/Hornskurður" - +#. {constant defined in effect-enum.h, N_("name of your effect"), "name of your effect in SVG"} #. 0.46 -#: ../src/live_effects/effect.cpp:103 +#: ../src/live_effects/effect.cpp:90 msgid "Bend" msgstr "Beygja" -#: ../src/live_effects/effect.cpp:104 +#: ../src/live_effects/effect.cpp:91 msgid "Gears" msgstr "Tannhjól" -#: ../src/live_effects/effect.cpp:105 +#: ../src/live_effects/effect.cpp:92 msgid "Pattern Along Path" msgstr "Mynstur eftir ferli" #. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG -#: ../src/live_effects/effect.cpp:106 +#: ../src/live_effects/effect.cpp:93 msgid "Stitch Sub-Paths" msgstr "Sauma saman undirferla" #. 0.47 -#: ../src/live_effects/effect.cpp:108 +#: ../src/live_effects/effect.cpp:95 msgid "VonKoch" msgstr "VonKoch" -#: ../src/live_effects/effect.cpp:109 +#: ../src/live_effects/effect.cpp:96 msgid "Knot" msgstr "Hnútur" -#: ../src/live_effects/effect.cpp:110 +#: ../src/live_effects/effect.cpp:97 msgid "Construct grid" msgstr "Stoðnet" -#: ../src/live_effects/effect.cpp:111 +#: ../src/live_effects/effect.cpp:98 msgid "Spiro spline" msgstr "Spiro-splína" -#: ../src/live_effects/effect.cpp:112 +#: ../src/live_effects/effect.cpp:99 msgid "Envelope Deformation" msgstr "Afmyndun umgjarðar" -#: ../src/live_effects/effect.cpp:113 +#: ../src/live_effects/effect.cpp:100 msgid "Interpolate Sub-Paths" msgstr "Brúun undirferla" -#: ../src/live_effects/effect.cpp:114 +#: ../src/live_effects/effect.cpp:101 msgid "Hatches (rough)" msgstr "Strikaskygging (gróft)" -#: ../src/live_effects/effect.cpp:115 +#: ../src/live_effects/effect.cpp:102 msgid "Sketch" msgstr "Skissa" -#: ../src/live_effects/effect.cpp:116 +#: ../src/live_effects/effect.cpp:103 msgid "Ruler" msgstr "Mælistika" #. 0.91 -#: ../src/live_effects/effect.cpp:118 +#: ../src/live_effects/effect.cpp:105 msgid "Power stroke" msgstr "Kraftlína" -#: ../src/live_effects/effect.cpp:119 -msgid "Clone original path" -msgstr "Klóna upprunalegan feril" +#: ../src/live_effects/effect.cpp:106 +msgid "Clone original" +msgstr "Klóna upprunalegt" -#: ../src/live_effects/effect.cpp:122 +#: ../src/live_effects/effect.cpp:109 msgid "Lattice Deformation 2" msgstr "Afmyndun grindar 2" -#: ../src/live_effects/effect.cpp:123 +#: ../src/live_effects/effect.cpp:110 msgid "Perspective/Envelope" msgstr "Fjarvídd/Umgjörð" -#: ../src/live_effects/effect.cpp:124 +#. TODO:Wrong name with "-" +#: ../src/live_effects/effect.cpp:111 msgid "Interpolate points" msgstr "Brúa punkta" -#: ../src/live_effects/effect.cpp:125 +#: ../src/live_effects/effect.cpp:112 msgid "Transform by 2 points" msgstr "Ummynda með 2 punktum" -#: ../src/live_effects/effect.cpp:126 +#: ../src/live_effects/effect.cpp:113 #: ../src/live_effects/lpe-show_handles.cpp:27 #: ../src/widgets/mesh-toolbar.cpp:505 msgid "Show handles" msgstr "Sýna haldföng" -#: ../src/live_effects/effect.cpp:128 ../src/widgets/pencil-toolbar.cpp:115 +#: ../src/live_effects/effect.cpp:115 ../src/widgets/pencil-toolbar.cpp:115 msgid "BSpline" msgstr "BSplína" -#: ../src/live_effects/effect.cpp:129 +#: ../src/live_effects/effect.cpp:116 msgid "Join type" msgstr "Gerð samsetningar" -#: ../src/live_effects/effect.cpp:130 +#: ../src/live_effects/effect.cpp:117 msgid "Taper stroke" msgstr "Mjókkandi lína" -#: ../src/live_effects/effect.cpp:131 +#: ../src/live_effects/effect.cpp:118 msgid "Mirror symmetry" msgstr "Samhverfa speglunar" -#: ../src/live_effects/effect.cpp:132 +#: ../src/live_effects/effect.cpp:119 msgid "Rotate copies" msgstr "Snúa afritum" #. Ponyscape -> Inkscape 0.92 -#: ../src/live_effects/effect.cpp:134 +#: ../src/live_effects/effect.cpp:121 msgid "Attach path" msgstr "Festa feril" -#: ../src/live_effects/effect.cpp:135 +#: ../src/live_effects/effect.cpp:122 msgid "Fill between strokes" msgstr "Fylling milli útlína" -#: ../src/live_effects/effect.cpp:136 ../src/selection-chemistry.cpp:2917 +#: ../src/live_effects/effect.cpp:123 ../src/selection-chemistry.cpp:2963 msgid "Fill between many" msgstr "Fylling milli margra" -#: ../src/live_effects/effect.cpp:137 +#: ../src/live_effects/effect.cpp:124 msgid "Ellipse by 5 points" msgstr "Sporbaugur með 5 punktum" -#: ../src/live_effects/effect.cpp:138 +#: ../src/live_effects/effect.cpp:125 msgid "Bounding Box" msgstr "Umgjörð" #. 9.93 -#: ../src/live_effects/effect.cpp:140 +#: ../src/live_effects/effect.cpp:127 msgid "Measure Line" msgstr "Mæla línu" -#: ../src/live_effects/effect.cpp:351 +#: ../src/live_effects/effect.cpp:128 +msgid "Fillet/Chamfer" +msgstr "Kverkrúnnun/Hornskurður" + +#: ../src/live_effects/effect.cpp:129 +msgid "Boolean operation" +msgstr "Bool-aðgerð" + +#: ../src/live_effects/effect.cpp:130 +msgid "Embrodery stitch" +msgstr "Útsaumspor" + +#: ../src/live_effects/effect.cpp:132 +msgid "doEffect stack test" +msgstr "" + +#: ../src/live_effects/effect.cpp:133 +msgid "Angle bisector" +msgstr "Helmingalína horns" + +#: ../src/live_effects/effect.cpp:134 +msgid "Circle (by center and radius)" +msgstr "Hringur (eftir miðju og lengd geisla)" + +#: ../src/live_effects/effect.cpp:135 +msgid "Circle by 3 points" +msgstr "Hringur af þremur punktum" + +#: ../src/live_effects/effect.cpp:136 +msgid "Dynamic stroke" +msgstr "Breytileg stroka" + +#: ../src/live_effects/effect.cpp:137 ../share/extensions/extrude.inx.h:1 +msgid "Extrude" +msgstr "Pressa út" + +#: ../src/live_effects/effect.cpp:138 +msgid "Lattice Deformation" +msgstr "Afmyndun grindar" + +#: ../src/live_effects/effect.cpp:139 +msgid "Line Segment" +msgstr "Línubútur" + +#: ../src/live_effects/effect.cpp:141 +#: ../src/live_effects/lpe-measure-line.cpp:46 +msgid "Parallel" +msgstr "Samhliða" + +#: ../src/live_effects/effect.cpp:142 +msgid "Path length" +msgstr "Lengd ferils" + +#: ../src/live_effects/effect.cpp:143 +msgid "Perpendicular bisector" +msgstr "Hornrétt helmingaskipting" + +#: ../src/live_effects/effect.cpp:144 +msgid "Perspective path" +msgstr "Fjarvíddarferill" + +#: ../src/live_effects/effect.cpp:145 +msgid "Recursive skeleton" +msgstr "Endurkvæm grind" + +#: ../src/live_effects/effect.cpp:146 +msgid "Tangent to curve" +msgstr "Snertill (tangens) á feril" + +#: ../src/live_effects/effect.cpp:147 +msgid "Text label" +msgstr "Textalýsing" + +#: ../src/live_effects/effect.cpp:366 msgid "Is visible?" msgstr "Sýnilegt?" -#: ../src/live_effects/effect.cpp:351 +#: ../src/live_effects/effect.cpp:366 msgid "" "If unchecked, the effect remains applied to the object but is temporarily " "disabled on canvas" msgstr "" -#: ../src/live_effects/effect.cpp:378 +#: ../src/live_effects/effect.cpp:395 msgid "No effect" msgstr "Engin brella" -#: ../src/live_effects/effect.cpp:493 +#: ../src/live_effects/effect.cpp:583 #, c-format msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks" msgstr "" -#: ../src/live_effects/effect.cpp:768 +#: ../src/live_effects/effect.cpp:819 +msgid ". Change custom values for this parameter" +msgstr ". Breyta sérsniðnum gildum fyrir þessa breytu" + +#: ../src/live_effects/effect.cpp:828 ../src/live_effects/effect.cpp:870 +msgid "Update" +msgstr "Uppfæra" + +#: ../src/live_effects/effect.cpp:830 ../src/live_effects/effect.cpp:880 +#: ../src/ui/dialog/xml-tree.cpp:76 +msgid "Set" +msgstr "Setja" + +#. image-rendering +#: ../src/live_effects/effect.cpp:839 +#: ../share/extensions/image_attributes.inx.h:19 +msgid "Unset" +msgstr "Afsetja" + +#: ../src/live_effects/effect.cpp:852 +msgid ": Set default parameters" +msgstr "" + +#: ../src/live_effects/effect.cpp:952 #, c-format msgid "Editing parameter %s." msgstr "Viðfang breytingar %s." -#: ../src/live_effects/effect.cpp:773 +#: ../src/live_effects/effect.cpp:957 msgid "None of the applied path effect's parameters can be edited on-canvas." msgstr "" @@ -9098,7 +9257,7 @@ msgstr "" #: ../src/live_effects/lpe-attach-path.cpp:22 msgid "Start path position:" -msgstr "" +msgstr "Upphafsstaða ferils:" #: ../src/live_effects/lpe-attach-path.cpp:22 msgid "Position to attach path start to" @@ -9158,8 +9317,8 @@ msgid "Path along which to bend the original path" msgstr "" #: ../src/live_effects/lpe-bendpath.cpp:56 -#: ../src/live_effects/lpe-patternalongpath.cpp:67 -#: ../src/ui/dialog/export.cpp:257 ../src/ui/dialog/transformation.cpp:69 +#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/ui/dialog/export.cpp:257 ../src/ui/dialog/transformation.cpp:67 #: ../src/ui/widget/page-sizer.cpp:220 msgid "_Width:" msgstr "_Breidd:" @@ -9185,20 +9344,119 @@ msgid "Rotates the original 90 degrees, before bending it along the bend path" msgstr "" #: ../src/live_effects/lpe-bendpath.cpp:163 -#: ../src/live_effects/lpe-patternalongpath.cpp:281 +#: ../src/live_effects/lpe-patternalongpath.cpp:283 msgid "Change the width" msgstr "Breyta breidd" +#: ../src/live_effects/lpe-bool.cpp:37 +msgid "union" +msgstr "sameining" + +#: ../src/live_effects/lpe-bool.cpp:38 +msgid "intersection" +msgstr "skurðflötur" + +#: ../src/live_effects/lpe-bool.cpp:39 +msgid "difference" +msgstr "mismunur" + +#: ../src/live_effects/lpe-bool.cpp:40 +msgid "symmetric difference" +msgstr "mismunur samhverfu" + +#: ../src/live_effects/lpe-bool.cpp:41 +msgid "division" +msgstr "uppskipting" + +#. Note on naming of operations: +#. bool_op_cut is called "Division" in the manu, see sp_selected_path_cut +#. bool_op_slice is called "Cut path" in the menu, see sp_selected_path_slice +#: ../src/live_effects/lpe-bool.cpp:45 +msgid "cut" +msgstr "klippa" + +#: ../src/live_effects/lpe-bool.cpp:46 +msgid "cut inside" +msgstr "klippa að innan" + +#: ../src/live_effects/lpe-bool.cpp:47 +msgid "cut outside" +msgstr "klippa að utan" + +#: ../src/live_effects/lpe-bool.cpp:53 ../src/live_effects/lpe-bool.cpp:62 +msgid "odd-even" +msgstr "jafnt-oddatölu" + +#: ../src/live_effects/lpe-bool.cpp:54 ../src/live_effects/lpe-bool.cpp:63 +msgid "non-zero" +msgstr "ekki-núll" + +#: ../src/live_effects/lpe-bool.cpp:55 ../src/live_effects/lpe-bool.cpp:64 +msgid "positive" +msgstr "jákvætt" + +#: ../src/live_effects/lpe-bool.cpp:56 +msgid "from curve" +msgstr "frá sveiglínu" + +#: ../src/live_effects/lpe-bool.cpp:71 +msgid "Operand path:" +msgstr "Ferill virkja:" + +#: ../src/live_effects/lpe-bool.cpp:71 +msgid "Operand for the boolean operation" +msgstr "Virki fyrir Bool-aðgerð" + +#: ../src/live_effects/lpe-bool.cpp:72 +msgid "Operation:" +msgstr "Aðgerð:" + +#: ../src/live_effects/lpe-bool.cpp:72 +msgid "Boolean Operation" +msgstr "Bool-aðgerð" + +#: ../src/live_effects/lpe-bool.cpp:73 +msgid "Swap operands:" +msgstr "Skipta um virkja:" + +#: ../src/live_effects/lpe-bool.cpp:73 +msgid "Swap operands (useful e.g. for difference)" +msgstr "Skipta um virkja (nýtist t.d. fyrir mismun)" + +#: ../src/live_effects/lpe-bool.cpp:74 +msgid "Remove inner:" +msgstr "Fjarlægja innra:" + +#: ../src/live_effects/lpe-bool.cpp:74 +msgid "" +"For cut operations: remove inner (non-contour) lines of cutting path to " +"avoid invisible extra points" +msgstr "" + +#: ../src/live_effects/lpe-bool.cpp:75 +msgid "Fill type this:" +msgstr "Tegund fyllingar í þessu:" + +#: ../src/live_effects/lpe-bool.cpp:75 +msgid "Fill type (winding mode) for this path" +msgstr "Tegund fyllingar (vinduhamur) fyrir þennan feril" + +#: ../src/live_effects/lpe-bool.cpp:76 +msgid "Fill type operand:" +msgstr "Virki fyrir tegund fyllingar:" + +#: ../src/live_effects/lpe-bool.cpp:76 +msgid "Fill type (winding mode) for operand path" +msgstr "Virki fyrir tegund fyllingar (vinduhamur)" + #: ../src/live_effects/lpe-bounding-box.cpp:20 -#: ../src/live_effects/lpe-clone-original.cpp:17 #: ../src/live_effects/lpe-fill-between-many.cpp:22 -#: ../src/live_effects/lpe-fill-between-strokes.cpp:19 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 msgid "Linked path:" msgstr "Tengdur ferill:" #: ../src/live_effects/lpe-bounding-box.cpp:20 -#: ../src/live_effects/lpe-clone-original.cpp:17 -#: ../src/live_effects/lpe-fill-between-strokes.cpp:19 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 msgid "Path from which to take the original path data" msgstr "" @@ -9238,6 +9496,7 @@ msgid "Apply changes if weight > 0%" msgstr "Virkja breytingar ef vægi > 0%" #: ../src/live_effects/lpe-bspline.cpp:34 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:50 #: ../src/live_effects/lpe-fillet-chamfer.cpp:51 msgid "Change only selected nodes" msgstr "Breyta aðeins völdum hnútum" @@ -9267,12 +9526,76 @@ msgid "Change to 0 weight" msgstr "Breyta í 0 breidd" #: ../src/live_effects/lpe-bspline.cpp:160 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:235 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:257 -#: ../src/live_effects/parameter/parameter.cpp:177 +#: ../src/live_effects/parameter/parameter.cpp:187 msgid "Change scalar parameter" msgstr "Skipta um stigbreytu" +#: ../src/live_effects/lpe-clone-original.cpp:23 +msgid "Linked Item:" +msgstr "Tengt atriði:" + +#: ../src/live_effects/lpe-clone-original.cpp:23 +msgid "Item from which to take the original data" +msgstr "" + +#: ../src/live_effects/lpe-clone-original.cpp:24 +#: ../src/widgets/measure-toolbar.cpp:315 +msgid "Scale %" +msgstr "Kvarði %" + +#: ../src/live_effects/lpe-clone-original.cpp:24 +msgid "Scale item %" +msgstr "Kvarða atriði %" + +#: ../src/live_effects/lpe-clone-original.cpp:25 +msgid "Preserve position" +msgstr "Varðveita staðsetningu" + +#: ../src/live_effects/lpe-clone-original.cpp:26 +msgid "Inverse clone" +msgstr "Umsnúa klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:26 +msgid "Use LPE item as origin" +msgstr "" + +#: ../src/live_effects/lpe-clone-original.cpp:27 +msgid "Clone shape -d-" +msgstr "Klóna lögun -d-" + +#: ../src/live_effects/lpe-clone-original.cpp:28 +msgid "Clone transforms" +msgstr "Ummyndanir klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:29 +msgid "Clone fill" +msgstr "Fylling klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:30 +msgid "Clone stroke" +msgstr "Útlína klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:31 +msgid "Clone paint order" +msgstr "Málunarröð klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:32 +msgid "Clone opacity" +msgstr "Ógegnsæi klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:33 +msgid "Clone filter" +msgstr "Sía klóna" + +#: ../src/live_effects/lpe-clone-original.cpp:322 +#: ../src/live_effects/lpe-clone-original.cpp:337 +msgid "Show attributes override" +msgstr "Sýna breytingar á eigindum" + +#: ../src/live_effects/lpe-clone-original.cpp:335 +msgid "Hide attributes override" +msgstr "Fela breytingar á eigindum" + #: ../src/live_effects/lpe-constructgrid.cpp:24 msgid "Size _X:" msgstr "Stærð _X:" @@ -9289,68 +9612,103 @@ msgstr "Stærð _Y:" msgid "The size of the grid in Y direction." msgstr "Stærð hnitanetsins í Y-áttina." -#: ../src/live_effects/lpe-copy_rotate.cpp:42 +#: ../src/live_effects/lpe-copy_rotate.cpp:35 +msgid "Kaleidoscope" +msgstr "Skuggsjá" + +#: ../src/live_effects/lpe-copy_rotate.cpp:36 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:56 +msgid "Fuse paths" +msgstr "Bræða saman ferla" + +#: ../src/live_effects/lpe-copy_rotate.cpp:58 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:38 +msgid "Method:" +msgstr "Aðferð:" + +#: ../src/live_effects/lpe-copy_rotate.cpp:58 +msgid "Rotate methods" +msgstr "Snúningsaðferðir" + +#: ../src/live_effects/lpe-copy_rotate.cpp:59 msgid "Origin" msgstr "Upphaf" -#: ../src/live_effects/lpe-copy_rotate.cpp:42 +#: ../src/live_effects/lpe-copy_rotate.cpp:59 msgid "Adjust origin of the rotation" msgstr "Laga til uppruna snúningsins" -#: ../src/live_effects/lpe-copy_rotate.cpp:43 +#: ../src/live_effects/lpe-copy_rotate.cpp:60 #: ../src/live_effects/lpe-transform_2pts.cpp:35 msgid "Start point" msgstr "Upphafspunktur" -#: ../src/live_effects/lpe-copy_rotate.cpp:43 +#: ../src/live_effects/lpe-copy_rotate.cpp:60 msgid "Starting point to define start angle" msgstr "Upphafspunktur sem skilgreinir upphafshorn" -#: ../src/live_effects/lpe-copy_rotate.cpp:43 +#: ../src/live_effects/lpe-copy_rotate.cpp:60 msgid "Adjust starting point to define start angle" msgstr "Aðlaga upphafspunkt til að skilgreina upphafshorn" -#: ../src/live_effects/lpe-copy_rotate.cpp:44 +#: ../src/live_effects/lpe-copy_rotate.cpp:61 msgid "Starting angle" msgstr "Upphafshorn" -#: ../src/live_effects/lpe-copy_rotate.cpp:44 +#: ../src/live_effects/lpe-copy_rotate.cpp:61 msgid "Angle of the first copy" msgstr "Horn fyrsta afrits" -#: ../src/live_effects/lpe-copy_rotate.cpp:45 +#: ../src/live_effects/lpe-copy_rotate.cpp:62 msgid "Rotation angle" msgstr "Snúningshorn" -#: ../src/live_effects/lpe-copy_rotate.cpp:45 +#: ../src/live_effects/lpe-copy_rotate.cpp:62 msgid "Angle between two successive copies" msgstr "Horn á milli tveggja eintaka" -#: ../src/live_effects/lpe-copy_rotate.cpp:46 +#: ../src/live_effects/lpe-copy_rotate.cpp:63 msgid "Number of copies" msgstr "Fjöldi eintaka" -#: ../src/live_effects/lpe-copy_rotate.cpp:46 +#: ../src/live_effects/lpe-copy_rotate.cpp:63 msgid "Number of copies of the original path" msgstr "Fjöldi eintaka upprunalega ferilsins" -#: ../src/live_effects/lpe-copy_rotate.cpp:47 +#: ../src/live_effects/lpe-copy_rotate.cpp:64 +msgid "Gap" +msgstr "Skarð" + +#: ../src/live_effects/lpe-copy_rotate.cpp:65 msgid "360º Copies" msgstr "360º afrit" -#: ../src/live_effects/lpe-copy_rotate.cpp:47 +#: ../src/live_effects/lpe-copy_rotate.cpp:65 msgid "No rotation angle, fixed to 360º" msgstr "Ekkert snúningshorn, fast við 360º" -#: ../src/live_effects/lpe-copy_rotate.cpp:48 -#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 -msgid "Fuse paths" -msgstr "Bræða saman ferla" +#: ../src/live_effects/lpe-copy_rotate.cpp:66 +msgid "Mirror copies" +msgstr "Spegla afritum" + +#: ../src/live_effects/lpe-copy_rotate.cpp:66 +msgid "Mirror between copies" +msgstr "Spegla á milli eintaka" -#: ../src/live_effects/lpe-copy_rotate.cpp:48 -msgid "Fuse paths by helper line, use fill-rule: evenodd for best result" +#: ../src/live_effects/lpe-copy_rotate.cpp:67 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:58 +msgid "Split elements" +msgstr "Skipta upp stökum" + +#: ../src/live_effects/lpe-copy_rotate.cpp:67 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:58 +msgid "Split elements, this allow gradients and other paints." msgstr "" +#: ../src/live_effects/lpe-copy_rotate.cpp:335 +msgid "Reset styles" +msgstr "Endurstilla stíla" + #: ../src/live_effects/lpe-curvestitch.cpp:34 msgid "Stitch path:" msgstr "Saumspor:" @@ -9431,6 +9789,123 @@ msgstr "Fimm punktar sem þarf til að byggja sporbaug" msgid "No ellipse found for specified points" msgstr "" +#: ../src/live_effects/lpe-embrodery-stitch.cpp:29 +msgid "no reordering" +msgstr "engin endurröðun" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:30 +msgid "zig-zag" +msgstr "sikk-sakk" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:31 +msgid "zig-zag, reverse first" +msgstr "sikk-sakk, snúa fyrsta" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:32 +msgid "closest" +msgstr "nálægasta" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:33 +msgid "closest, reverse first" +msgstr "nálægasta, snúa fyrsta" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:34 +msgid "traveling salesman 2-opt (fast, bad)" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:35 +msgid "traveling salesman 3-opt (fast, ok)" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:36 +msgid "traveling salesman 4-opt (seconds)" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:37 +msgid "traveling salesman 5-opt (miutes)" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:44 +msgid "straight line" +msgstr "bein lína" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:45 +msgid "move to begin" +msgstr "flytja á upphaf" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:46 +msgid "move to middle" +msgstr "flytja á miðju" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:47 +msgid "move to end" +msgstr "flytja á enda" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:55 +msgid "Ordering method" +msgstr "Aðferð við röðun" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:55 +msgid "Method used to order sub paths" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:56 +msgid "Connection method" +msgstr "Aðferð við tengingu" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:56 +msgid "Method to connect end points of sub paths" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:57 +msgid "Stitch length" +msgstr "Lengd saums" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:57 +msgid "If not 0, linearize path with given step length" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:58 +msgid "Minimum stitch length [%]" +msgstr "Hámarkslengd saums [%]" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:58 +msgid "Combine steps shorter than this [%]" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:59 +msgid "Stitch pattern" +msgstr "Saumsporamynstur" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:59 +msgid "Select between different stitch patterns" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:60 +msgid "Show stitches" +msgstr "Birta saumspor" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:60 +msgid "" +"Show stitches as small gaps (just for inspection - don't use for output)" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:61 +msgid "Show stitch gap" +msgstr "Sýna bil í saumi" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:61 +msgid "Gap between stitches when showing stitches" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:62 +msgid "Jump if longer" +msgstr "" + +#: ../src/live_effects/lpe-embrodery-stitch.cpp:62 +msgid "Jump connection if longer than" +msgstr "" + #: ../src/live_effects/lpe-envelope.cpp:19 msgid "Top bend path:" msgstr "" @@ -9491,133 +9966,145 @@ msgstr "" msgid "Paths from which to take the original path data" msgstr "" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 +#: ../src/live_effects/lpe-fill-between-many.cpp:23 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:23 +msgid "Fuse coincident points" +msgstr "" + +#: ../src/live_effects/lpe-fill-between-many.cpp:24 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:24 +msgid "Allow transforms" +msgstr "Leyfa ummyndanir" + +#: ../src/live_effects/lpe-fill-between-many.cpp:25 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:25 +msgid "Join subpaths" +msgstr "Sameina undirferla" + +#: ../src/live_effects/lpe-fill-between-many.cpp:26 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:26 +#: ../src/ui/dialog/ocaldialogs.cpp:1090 +msgid "Close" +msgstr "Loka" + +#: ../src/live_effects/lpe-fill-between-many.cpp:26 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:26 +msgid "Close path" +msgstr "Loka ferli" + +#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 msgid "Second path:" msgstr "" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:20 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 msgid "Second path from which to take the original path data" msgstr "" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:22 msgid "Reverse Second" msgstr "" -#: ../src/live_effects/lpe-fill-between-strokes.cpp:21 +#: ../src/live_effects/lpe-fill-between-strokes.cpp:22 msgid "Reverses the second path order" msgstr "" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:36 -#: ../src/widgets/text-toolbar.cpp:1884 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:27 +#: ../src/widgets/text-toolbar.cpp:1905 #: ../share/extensions/render_barcode_qrcode.inx.h:5 msgid "Auto" msgstr "Sjálfvirkt" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:37 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:28 msgid "Force arc" msgstr "Þvinga boga" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:38 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:29 msgid "Force bezier" msgstr "Þvinga Bezier-feril" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:48 -msgid "Fillet point" -msgstr "Punktur kverkrúnnunar" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:49 -msgid "Hide knots" -msgstr "Hunsa hnúta" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:50 -msgid "Ignore 0 radius knots" -msgstr "Hunsa hnúta með radíus 0" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:52 -msgid "Flexible radius size (%)" -msgstr "Sveigjanleg stærð radíus (%)" +#: ../src/live_effects/lpe-fillet-chamfer.cpp:35 +#: ../src/live_effects/lpe-measure-line.cpp:52 +#: ../src/live_effects/lpe-ruler.cpp:39 ../src/widgets/gimp/ruler.cpp:194 +msgid "Unit" +msgstr "Eining" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:53 -msgid "Use knots distance instead radius" +#: ../src/live_effects/lpe-fillet-chamfer.cpp:38 +msgid "Methods to calculate the fillet or chamfer" msgstr "" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 -msgid "Method:" -msgstr "Aðferð:" +#: ../src/live_effects/lpe-fillet-chamfer.cpp:40 +msgid "Mode, fillet or chamfer" +msgstr "Hamur, kverkrúnnun eða hornskurður" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 -msgid "Fillets methods" -msgstr "Aðferðir við kverkrúnnun" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:55 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:42 msgid "Radius (unit or %):" msgstr "Radíus (eining eða %):" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:55 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:42 msgid "Radius, in unit or %" msgstr "Radíus, í einingum eða %" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:44 msgid "Chamfer steps:" msgstr "Þrepun hornskurðar:" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:44 msgid "Chamfer steps" msgstr "Þrepun hornskurðar" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:58 -msgid "Helper size with direction:" +#: ../src/live_effects/lpe-fillet-chamfer.cpp:46 +msgid "Flexible radius size (%)" +msgstr "Sveigjanleg stærð radíus (%)" + +#: ../src/live_effects/lpe-fillet-chamfer.cpp:48 +msgid "Mirror Knots" +msgstr "Spegla hnútum" + +#: ../src/live_effects/lpe-fillet-chamfer.cpp:53 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:54 +msgid "Use knots distance instead radius" msgstr "" +#: ../src/live_effects/lpe-fillet-chamfer.cpp:56 +msgid "Hide knots" +msgstr "Hunsa hnúta" + #: ../src/live_effects/lpe-fillet-chamfer.cpp:58 -msgid "Helper size with direction" -msgstr "" +msgid "Apply changes if radius = 0" +msgstr "Virkja breytingar ef radíus = 0" + +#: ../src/live_effects/lpe-fillet-chamfer.cpp:59 +msgid "Apply changes if radius > 0" +msgstr "Virkja breytingar ef radíus > 0" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:98 -msgid "IMPORTANT! New version soon..." -msgstr "MIKILVÆGT! Ný útgáfa á leiðinni..." +#: ../src/live_effects/lpe-fillet-chamfer.cpp:60 +msgid "Helper path size with direction to node:" +msgstr "Stærð hjálparferils með stefnu á hnút:" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:102 -msgid "Not compatible. Convert to path after." -msgstr "Ekki samhæft. Umbreyta í feril á eftir." +#: ../src/live_effects/lpe-fillet-chamfer.cpp:61 +msgid "Helper path size with direction to node" +msgstr "Stærð hjálparferils með stefnu á hnút" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:160 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:62 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:228 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:63 msgid "Fillet" msgstr "Kverkrúnnun" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:164 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:64 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:233 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:65 msgid "Inverse fillet" msgstr "Umsnúa kverkrúnnun" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:169 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:66 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:239 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:67 msgid "Chamfer" msgstr "Hornskurður" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:173 -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:68 +#: ../src/live_effects/lpe-fillet-chamfer.cpp:244 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:69 msgid "Inverse chamfer" msgstr "Umsnúa hornskurði" -#: ../src/live_effects/lpe-fillet-chamfer.cpp:242 -msgid "Convert to fillet" -msgstr "Umbreyta í kverkrúnnun" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:249 -#: ../src/live_effects/lpe-fillet-chamfer.cpp:273 -msgid "Convert to inverse fillet" -msgstr "Umbreyta í öfuga kverkrúnnun" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:265 -msgid "Convert to chamfer" -msgstr "Umbreyta í hornskurð" - -#: ../src/live_effects/lpe-fillet-chamfer.cpp:285 -msgid "Knots and helper paths refreshed" -msgstr "" - #: ../src/live_effects/lpe-gears.cpp:208 msgid "_Teeth:" msgstr "_Tennur:" @@ -9641,8 +10128,8 @@ msgid "Min Radius:" msgstr "Lágm. radíus:" #: ../src/live_effects/lpe-gears.cpp:210 -msgid "Minimun radius, low balues can slow" -msgstr "" +msgid "Minimum radius, low values can be slow" +msgstr "Lágmarksradíus, lág gildi geta hægt á vinnslu" #: ../src/live_effects/lpe-interpolate.cpp:27 msgid "Trajectory:" @@ -9777,7 +10264,7 @@ msgstr "Breyta lögun útlínuenda" #. corners of paths. It can be "miter", "round" or "bevel". #: ../src/live_effects/lpe-jointype.cpp:54 #: ../src/live_effects/lpe-powerstroke.cpp:171 -#: ../src/widgets/stroke-style.cpp:261 +#: ../src/widgets/stroke-style.cpp:262 msgid "Join:" msgstr "Samsetningar:" @@ -10151,375 +10638,342 @@ msgstr "Birta punkta" msgid "Hide Points" msgstr "Fela punkta" -#: ../src/live_effects/lpe-measure-line.cpp:42 -#: ../src/widgets/text-toolbar.cpp:1835 +#: ../src/live_effects/lpe-measure-line.cpp:44 +#: ../src/widgets/text-toolbar.cpp:1862 msgid "Horizontal" msgstr "Lárétt" -#: ../src/live_effects/lpe-measure-line.cpp:43 +#: ../src/live_effects/lpe-measure-line.cpp:45 msgid "Vertical" msgstr "Lóðrétt" -#: ../src/live_effects/lpe-measure-line.cpp:50 -msgid "Unit*" -msgstr "Eining*" - -#: ../src/live_effects/lpe-measure-line.cpp:50 -#: ../src/live_effects/lpe-ruler.cpp:39 ../src/widgets/gimp/ruler.cpp:193 -msgid "Unit" -msgstr "Eining" - -#: ../src/live_effects/lpe-measure-line.cpp:51 -msgid "Font*" -msgstr "Letur*" +#: ../src/live_effects/lpe-measure-line.cpp:53 +msgid "Font" +msgstr "Letur" -#: ../src/live_effects/lpe-measure-line.cpp:51 +#: ../src/live_effects/lpe-measure-line.cpp:53 msgid "Font Selector" msgstr "Leturveljari" -#: ../src/live_effects/lpe-measure-line.cpp:52 -#: ../src/widgets/gimp/ruler.cpp:183 +#: ../src/live_effects/lpe-measure-line.cpp:54 +#: ../src/widgets/gimp/ruler.cpp:184 #: ../share/extensions/gcodetools_graffiti.inx.h:9 #: ../share/extensions/gcodetools_orientation_points.inx.h:2 msgid "Orientation" msgstr "Stefna" -#: ../src/live_effects/lpe-measure-line.cpp:52 +#: ../src/live_effects/lpe-measure-line.cpp:54 msgid "Orientation method" msgstr "Aðferð við stefnu" -#: ../src/live_effects/lpe-measure-line.cpp:53 +#: ../src/live_effects/lpe-measure-line.cpp:55 msgid "Curve on origin" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:53 +#: ../src/live_effects/lpe-measure-line.cpp:55 msgid "Curve on origin, set 0 to start/end" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:54 -msgid "Precision*" -msgstr "Nákvæmni*" - -#: ../src/live_effects/lpe-measure-line.cpp:55 -msgid "Positon*" -msgstr "Staðsetning*" - -#: ../src/live_effects/lpe-measure-line.cpp:55 -msgid "Positon" +#: ../src/live_effects/lpe-measure-line.cpp:57 +#: ../src/widgets/gimp/ruler.cpp:222 +msgid "Position" msgstr "Staðsetning" -#: ../src/live_effects/lpe-measure-line.cpp:56 -msgid "Text top/bottom*" -msgstr "Texti uppi/niðri*" - -#: ../src/live_effects/lpe-measure-line.cpp:56 +#: ../src/live_effects/lpe-measure-line.cpp:58 msgid "Text top/bottom" msgstr "Texti uppi/niðri" -#: ../src/live_effects/lpe-measure-line.cpp:57 -msgid "Text right/left*" -msgstr "Texti hægri/vinstri*" - -#: ../src/live_effects/lpe-measure-line.cpp:57 +#: ../src/live_effects/lpe-measure-line.cpp:59 msgid "Text right/left" msgstr "Texti hægri/vinstri" -#: ../src/live_effects/lpe-measure-line.cpp:58 -msgid "Helpline distance*" -msgstr "Fjarlægð stoðlína*" - -#: ../src/live_effects/lpe-measure-line.cpp:58 +#: ../src/live_effects/lpe-measure-line.cpp:60 msgid "Helpline distance" msgstr "Fjarlægð stoðlína" -#: ../src/live_effects/lpe-measure-line.cpp:59 -msgid "Helpline overlap*" -msgstr "Skörun stoðlína*" - -#: ../src/live_effects/lpe-measure-line.cpp:59 +#: ../src/live_effects/lpe-measure-line.cpp:61 msgid "Helpline overlap" msgstr "Skörun stoðlína" -#: ../src/live_effects/lpe-measure-line.cpp:60 -msgid "Scale*" -msgstr "Kvarði*" +#: ../src/live_effects/lpe-measure-line.cpp:62 +#: ../src/selection-chemistry.cpp:2262 ../src/seltrans.cpp:475 +#: ../src/ui/dialog/transformation.cpp:758 ../src/ui/widget/page-sizer.cpp:406 +#: ../share/extensions/interp_att_g.inx.h:14 +msgid "Scale" +msgstr "Kvarði" -#: ../src/live_effects/lpe-measure-line.cpp:60 +#: ../src/live_effects/lpe-measure-line.cpp:62 msgid "Scaling factor" msgstr "Kvörðunarhlutfall" -#: ../src/live_effects/lpe-measure-line.cpp:61 -msgid "Format*" -msgstr "Snið*" +#: ../src/live_effects/lpe-measure-line.cpp:63 +msgid "Format" +msgstr "Snið" -#: ../src/live_effects/lpe-measure-line.cpp:61 +#: ../src/live_effects/lpe-measure-line.cpp:63 msgid "Format the number ex:{measure} {unit}, return to save" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:63 +#: ../src/live_effects/lpe-measure-line.cpp:65 msgid "Arrows outside" msgstr "Örvar að utan" -#: ../src/live_effects/lpe-measure-line.cpp:64 -msgid "Flip side*" -msgstr "" - -#: ../src/live_effects/lpe-measure-line.cpp:64 +#: ../src/live_effects/lpe-measure-line.cpp:66 msgid "Flip side" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:65 -msgid "Scale sensitive*" -msgstr "Næmt fyrir kvarða*" +#: ../src/live_effects/lpe-measure-line.cpp:67 +msgid "Scale sensitive" +msgstr "Næmt fyrir kvarða" -#: ../src/live_effects/lpe-measure-line.cpp:65 +#: ../src/live_effects/lpe-measure-line.cpp:67 msgid "Costrained scale sensitive to transformed containers" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:66 -msgid "Local Number Format*" -msgstr "Staðvært tölusnið*" +#: ../src/live_effects/lpe-measure-line.cpp:68 +msgid "Local Number Format" +msgstr "Staðvært tölusnið" -#: ../src/live_effects/lpe-measure-line.cpp:66 +#: ../src/live_effects/lpe-measure-line.cpp:68 msgid "Local number format" msgstr "Staðvært tölusnið" -#: ../src/live_effects/lpe-measure-line.cpp:67 -msgid "Line Group 0.5*" +#: ../src/live_effects/lpe-measure-line.cpp:69 +msgid "Line Group 0.5" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:67 +#: ../src/live_effects/lpe-measure-line.cpp:69 msgid "Line Group 0.5, from 0.7" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:68 -msgid "Rotate Anotation*" -msgstr "Snúa glósu*" - -#: ../src/live_effects/lpe-measure-line.cpp:68 +#: ../src/live_effects/lpe-measure-line.cpp:70 msgid "Rotate Anotation" msgstr "Snúa glósu" -#: ../src/live_effects/lpe-measure-line.cpp:69 -msgid "Hide if label over*" -msgstr "" +#: ../src/live_effects/lpe-measure-line.cpp:71 +msgid "Hide if label over" +msgstr "Fela ef skýring er yfir" -#: ../src/live_effects/lpe-measure-line.cpp:69 +#: ../src/live_effects/lpe-measure-line.cpp:71 msgid "Hide DIN line if label over" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:70 -msgid "CSS DIN line*" -msgstr "" +#: ../src/live_effects/lpe-measure-line.cpp:72 +msgid "CSS DIN line" +msgstr "CSS DIN lína" -#: ../src/live_effects/lpe-measure-line.cpp:70 +#: ../src/live_effects/lpe-measure-line.cpp:72 msgid "Override CSS to DIN line, return to save, empty to reset to DIM" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:71 -msgid "CSS helpers*" -msgstr "CSS hjálparar*" +#: ../src/live_effects/lpe-measure-line.cpp:73 +msgid "CSS helpers" +msgstr "CSS hjálparar" -#: ../src/live_effects/lpe-measure-line.cpp:71 +#: ../src/live_effects/lpe-measure-line.cpp:73 msgid "Override CSS to helper lines, return to save, empty to reset to DIM" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:72 -msgid "CSS anotation*" -msgstr "CSS glósa*" +#: ../src/live_effects/lpe-measure-line.cpp:74 +msgid "CSS anotation" +msgstr "CSS glósa" -#: ../src/live_effects/lpe-measure-line.cpp:72 +#: ../src/live_effects/lpe-measure-line.cpp:74 msgid "Override CSS to anotation text, return to save, empty to reset to DIM" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:73 -msgid "CSS arrows*" -msgstr "CSS örvar*" +#: ../src/live_effects/lpe-measure-line.cpp:75 +msgid "CSS arrows" +msgstr "CSS örvar" -#: ../src/live_effects/lpe-measure-line.cpp:73 +#: ../src/live_effects/lpe-measure-line.cpp:75 msgid "Override CSS to arrows, return to save, empty to reset DIM" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:349 +#: ../src/live_effects/lpe-measure-line.cpp:332 msgid "Non Uniform Scale" msgstr "Óreglulegur kvarði" -#: ../src/live_effects/lpe-measure-line.cpp:777 -msgid "Save '*' as default" -msgstr "Vista '*' sem sjálfgefið" - -#: ../src/live_effects/lpe-measure-line.cpp:780 -#: ../src/live_effects/lpe-measure-line.cpp:796 +#: ../src/live_effects/lpe-measure-line.cpp:726 +#: ../src/live_effects/lpe-measure-line.cpp:741 msgid "Show DIM CSS style override" msgstr "" -#: ../src/live_effects/lpe-measure-line.cpp:794 +#: ../src/live_effects/lpe-measure-line.cpp:739 msgid "Hide DIM CSS style override" msgstr "" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:31 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 msgid "Vertical Page Center" msgstr "Lóðrétt miðja síðu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:32 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 msgid "Horizontal Page Center" msgstr "Lárétt miðja síðu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:33 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 msgid "Free from reflection line" msgstr "Laust frá endurkastslínu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:34 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 msgid "X from middle knot" msgstr "X frá miðjuhnút" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:35 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 msgid "Y from middle knot" msgstr "Y frá miðjuhnút" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:53 #: ../src/widgets/spray-toolbar.cpp:388 ../src/widgets/tweak-toolbar.cpp:253 msgid "Mode" msgstr "Hamur" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:42 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:53 msgid "Symmetry move mode" msgstr "Samhverfur flutningshamur" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:54 +msgid "Gap on split" +msgstr "" + +#: ../src/live_effects/lpe-mirror_symmetry.cpp:55 msgid "Discard original path" msgstr "Henda upprunalegum ferli" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:43 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:55 msgid "Check this to only keep the mirrored part of the path" -msgstr "" +msgstr "Hakaðu við þetta til að halda einungis speglaða hluta ferilsins" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:44 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:56 msgid "Fuse original and the reflection into a single path" -msgstr "" +msgstr "Bræða upprunalegan feril og speglunina saman í einn feril" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:57 msgid "Opposite fuse" msgstr "Öfugt við sambræðslu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:45 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:57 msgid "Picks the other side of the mirror as the original" msgstr "Velur hina hlið speglunarinnar sem upprunalega" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:59 msgid "Start mirror line" msgstr "Upphaf spegillínu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:46 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:59 msgid "Adjust start of mirroring" msgstr "Breyta upphafi speglunar" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:60 msgid "End mirror line" msgstr "Endir spegillínu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:47 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:60 msgid "Adjust end of mirroring" msgstr "Breyta enda speglunar" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:48 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:61 msgid "Center mirror line" msgstr "Miðja spegillínu" -#: ../src/live_effects/lpe-mirror_symmetry.cpp:48 +#: ../src/live_effects/lpe-mirror_symmetry.cpp:61 msgid "Adjust center of mirroring" msgstr "Breyta miðju speglunar" -#: ../src/live_effects/lpe-patternalongpath.cpp:56 +#: ../src/live_effects/lpe-patternalongpath.cpp:57 #: ../share/extensions/pathalongpath.inx.h:10 msgid "Single" msgstr "Einfalt" -#: ../src/live_effects/lpe-patternalongpath.cpp:57 +#: ../src/live_effects/lpe-patternalongpath.cpp:58 #: ../share/extensions/pathalongpath.inx.h:11 msgid "Single, stretched" msgstr "Einfalt, teygt" -#: ../src/live_effects/lpe-patternalongpath.cpp:58 +#: ../src/live_effects/lpe-patternalongpath.cpp:59 #: ../share/extensions/pathalongpath.inx.h:12 msgid "Repeated" msgstr "Endurtekið" -#: ../src/live_effects/lpe-patternalongpath.cpp:59 +#: ../src/live_effects/lpe-patternalongpath.cpp:60 #: ../share/extensions/pathalongpath.inx.h:13 msgid "Repeated, stretched" msgstr "Endurtekið, teygt" -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-patternalongpath.cpp:66 msgid "Pattern source:" msgstr "Uppruni mynsturs:" -#: ../src/live_effects/lpe-patternalongpath.cpp:65 +#: ../src/live_effects/lpe-patternalongpath.cpp:66 msgid "Path to put along the skeleton path" -msgstr "" +msgstr "Ferill sem á að setja eftir stoðferlinum" -#: ../src/live_effects/lpe-patternalongpath.cpp:67 +#: ../src/live_effects/lpe-patternalongpath.cpp:68 msgid "Width of the pattern" msgstr "Breidd mynstursins" -#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/live_effects/lpe-patternalongpath.cpp:69 msgid "Pattern copies:" msgstr "Afrit af mynstri:" -#: ../src/live_effects/lpe-patternalongpath.cpp:68 +#: ../src/live_effects/lpe-patternalongpath.cpp:69 msgid "How many pattern copies to place along the skeleton path" -msgstr "" +msgstr "Hve mörg afrit mynsturs á að setja eftir stoðferlinum" -#: ../src/live_effects/lpe-patternalongpath.cpp:70 +#: ../src/live_effects/lpe-patternalongpath.cpp:71 msgid "Wid_th in units of length" msgstr "_Breidd í lengdareiningum" -#: ../src/live_effects/lpe-patternalongpath.cpp:71 +#: ../src/live_effects/lpe-patternalongpath.cpp:72 msgid "Scale the width of the pattern in units of its length" -msgstr "" +msgstr "Kvarða breidd mynstursins í lengdareiningum þess" -#: ../src/live_effects/lpe-patternalongpath.cpp:73 +#: ../src/live_effects/lpe-patternalongpath.cpp:74 msgid "Spa_cing:" msgstr "Milli_bil:" -#: ../src/live_effects/lpe-patternalongpath.cpp:75 +#: ../src/live_effects/lpe-patternalongpath.cpp:76 #, no-c-format msgid "" "Space between copies of the pattern. Negative values allowed, but are " "limited to -90% of pattern width." msgstr "" +"Bil á milli afrita mynstursins. Neikvæð gildi eru leyfileg, en eru takmörkuð " +"við -90% af breidd mynsturs." -#: ../src/live_effects/lpe-patternalongpath.cpp:77 +#: ../src/live_effects/lpe-patternalongpath.cpp:78 msgid "No_rmal offset:" msgstr "Venjuleg hlið_run:" -#: ../src/live_effects/lpe-patternalongpath.cpp:78 +#: ../src/live_effects/lpe-patternalongpath.cpp:79 msgid "Tan_gential offset:" msgstr "Snertil_hliðrun (tangens):" -#: ../src/live_effects/lpe-patternalongpath.cpp:79 +#: ../src/live_effects/lpe-patternalongpath.cpp:80 msgid "Offsets in _unit of pattern size" msgstr "Hliðranir í einingum m_ynsturstærðar" -#: ../src/live_effects/lpe-patternalongpath.cpp:80 +#: ../src/live_effects/lpe-patternalongpath.cpp:81 msgid "" "Spacing, tangential and normal offset are expressed as a ratio of width/" "height" msgstr "" +"Millibil, snertilhliðrun og venjuleg hliðrun eru birt sem hlutfall af breidd/" +"hæð" -#: ../src/live_effects/lpe-patternalongpath.cpp:82 +#: ../src/live_effects/lpe-patternalongpath.cpp:83 msgid "Pattern is _vertical" msgstr "M_ynstur er lóðrétt" -#: ../src/live_effects/lpe-patternalongpath.cpp:82 +#: ../src/live_effects/lpe-patternalongpath.cpp:83 msgid "Rotate pattern 90 deg before applying" msgstr "Snúa mynstri um 90 gráður áður en því er beitt" -#: ../src/live_effects/lpe-patternalongpath.cpp:84 +#: ../src/live_effects/lpe-patternalongpath.cpp:85 msgid "_Fuse nearby ends:" msgstr "_Bræða saman nálæga enda:" -#: ../src/live_effects/lpe-patternalongpath.cpp:84 +#: ../src/live_effects/lpe-patternalongpath.cpp:85 msgid "Fuse ends closer than this number. 0 means don't fuse." msgstr "" "Bræða saman enda sem eru nær hver öðrum en þessi tala, 0 þýðir að ekki eigi " @@ -10590,6 +11044,12 @@ msgstr "" msgid "Handles:" msgstr "Haldföng:" +#: ../src/live_effects/lpe-perspective-envelope.cpp:411 +#: ../src/ui/dialog/debug.cpp:77 ../src/ui/dialog/messages.cpp:47 +#: ../src/ui/dialog/transformation.cpp:135 +msgid "_Clear" +msgstr "_Hreinsa" + #: ../src/live_effects/lpe-powerstroke.cpp:121 msgid "CubicBezierSmooth" msgstr "" @@ -10642,7 +11102,7 @@ msgid "Determines the shape of the path's start" msgstr "Ákvarðar lögun á upphafi ferilsins" #: ../src/live_effects/lpe-powerstroke.cpp:172 -#: ../src/widgets/stroke-style.cpp:301 +#: ../src/widgets/stroke-style.cpp:302 msgid "Maximum length of the miter (in units of stroke width)" msgstr "Hámarkslengd hornskeytingar (í einingum línubreiddar)" @@ -10747,7 +11207,7 @@ msgstr "" #: ../src/live_effects/lpe-rough-hatches.cpp:229 msgid "Variance: 1st side:" -msgstr "" +msgstr "Breytileiki: fyrsta hlið:" #: ../src/live_effects/lpe-rough-hatches.cpp:229 msgid "Randomness of 'bottom' half-turns smoothness" @@ -10776,7 +11236,7 @@ msgstr "" #: ../src/live_effects/lpe-rough-hatches.cpp:234 msgid "Thickness: at 1st side:" -msgstr "" +msgstr "Þykkt: á hlið 1:" #: ../src/live_effects/lpe-rough-hatches.cpp:234 msgid "Width at 'bottom' half-turns" @@ -10784,7 +11244,7 @@ msgstr "" #: ../src/live_effects/lpe-rough-hatches.cpp:235 msgid "At 2nd side:" -msgstr "" +msgstr "Á hlið 2:" #: ../src/live_effects/lpe-rough-hatches.cpp:235 msgid "Width at 'top' half-turns" @@ -10793,19 +11253,19 @@ msgstr "" #. #: ../src/live_effects/lpe-rough-hatches.cpp:237 msgid "From 2nd to 1st side:" -msgstr "" +msgstr "Frá hlið 2 til hliðar 1:" #: ../src/live_effects/lpe-rough-hatches.cpp:237 msgid "Width from 'top' to 'bottom'" -msgstr "" +msgstr "Breidd að 'ofan' og 'niður'" #: ../src/live_effects/lpe-rough-hatches.cpp:238 msgid "From 1st to 2nd side:" -msgstr "" +msgstr "Frá hlið 1 til hliðar 2:" #: ../src/live_effects/lpe-rough-hatches.cpp:238 msgid "Width from 'bottom' to 'top'" -msgstr "" +msgstr "Breidd að 'neðan' og 'upp'" #: ../src/live_effects/lpe-rough-hatches.cpp:240 msgid "Hatches width and dir" @@ -10945,13 +11405,13 @@ msgstr "Ekkert" #: ../src/live_effects/lpe-ruler.cpp:30 #: ../src/live_effects/lpe-transform_2pts.cpp:35 -#: ../src/ui/tools/measure-tool.cpp:749 ../src/widgets/arc-toolbar.cpp:318 +#: ../src/ui/tools/measure-tool.cpp:749 ../src/widgets/arc-toolbar.cpp:334 msgid "Start" msgstr "Upphaf" #: ../src/live_effects/lpe-ruler.cpp:31 #: ../src/live_effects/lpe-transform_2pts.cpp:36 -#: ../src/ui/tools/measure-tool.cpp:750 ../src/widgets/arc-toolbar.cpp:331 +#: ../src/ui/tools/measure-tool.cpp:750 ../src/widgets/arc-toolbar.cpp:347 msgid "End" msgstr "Endir" @@ -10961,9 +11421,10 @@ msgstr "_Merkja fjarlægð:" #: ../src/live_effects/lpe-ruler.cpp:38 msgid "Distance between successive ruler marks" -msgstr "" +msgstr "Lengd milli merkja á mælistiku" -#: ../src/live_effects/lpe-ruler.cpp:39 ../share/extensions/foldablebox.inx.h:7 +#: ../src/live_effects/lpe-ruler.cpp:39 +#: ../share/extensions/foldablebox.inx.h:7 #: ../share/extensions/interp_att_g.inx.h:9 #: ../share/extensions/layout_nup.inx.h:3 #: ../share/extensions/printing_marks.inx.h:11 @@ -10972,7 +11433,7 @@ msgstr "Mælieining:" #: ../src/live_effects/lpe-ruler.cpp:40 msgid "Ma_jor length:" -msgstr "" +msgstr "Aða_llengd:" #: ../src/live_effects/lpe-ruler.cpp:40 msgid "Length of major ruler marks" @@ -10980,7 +11441,7 @@ msgstr "" #: ../src/live_effects/lpe-ruler.cpp:41 msgid "Mino_r length:" -msgstr "" +msgstr "Milliþ_rep:" #: ../src/live_effects/lpe-ruler.cpp:41 msgid "Length of minor ruler marks" @@ -10988,7 +11449,7 @@ msgstr "" #: ../src/live_effects/lpe-ruler.cpp:42 msgid "Major steps_:" -msgstr "" +msgstr "Aðalþrep_:" #: ../src/live_effects/lpe-ruler.cpp:42 msgid "Draw a major mark every ... steps" @@ -11020,7 +11481,7 @@ msgstr "Hliðrun fyrsta merkis" #: ../src/live_effects/lpe-ruler.cpp:46 msgid "Border marks:" -msgstr "" +msgstr "Merki á jöðrum:" #: ../src/live_effects/lpe-ruler.cpp:46 msgid "Choose whether to draw marks at the beginning and end of the path" @@ -11070,11 +11531,11 @@ msgstr "" #: ../src/live_effects/lpe-simplify.cpp:26 msgid "Paths separately" -msgstr "" +msgstr "Ferlar sérstaklega" #: ../src/live_effects/lpe-simplify.cpp:26 msgid "Simplifying paths (separately)" -msgstr "" +msgstr "Einföldun ferla (aðskilinna)" #: ../src/live_effects/lpe-simplify.cpp:28 msgid "Just coalesce" @@ -11169,7 +11630,7 @@ msgid "How many construction lines (tangents) to draw" msgstr "Hve margar hjálparlínur (tanges) á að teikna" #: ../src/live_effects/lpe-sketch.cpp:51 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 #: ../share/extensions/render_alphabetsoup.inx.h:3 msgid "Scale:" msgstr "Kvarði:" @@ -11269,11 +11730,11 @@ msgstr "Gerð samsetningar fyrir ómýkta hnúta" msgid "Limit for miter joins" msgstr "Takmörk fyrir hornskeytingar" -#: ../src/live_effects/lpe-taperstroke.cpp:441 +#: ../src/live_effects/lpe-taperstroke.cpp:448 msgid "Start point of the taper" msgstr "Upphafspunktur mjókkunarinnar" -#: ../src/live_effects/lpe-taperstroke.cpp:445 +#: ../src/live_effects/lpe-taperstroke.cpp:452 msgid "End point of the taper" msgstr "Endapunktur mjókkunarinnar" @@ -11337,16 +11798,16 @@ msgstr "Seinasti hnútur" msgid "Rotation helper size" msgstr "Stærð snúningshjálpar" -#: ../src/live_effects/lpe-transform_2pts.cpp:193 +#: ../src/live_effects/lpe-transform_2pts.cpp:201 msgid "Change index of knot" msgstr "Breyta auðkenni hnúts" -#: ../src/live_effects/lpe-transform_2pts.cpp:346 -#: ../src/ui/dialog/inkscape-preferences.cpp:1587 -#: ../src/ui/dialog/pixelartdialog.cpp:290 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:796 -#: ../src/ui/dialog/tracedialog.cpp:812 -#: ../src/ui/widget/preferences-widget.cpp:662 +#: ../src/live_effects/lpe-transform_2pts.cpp:356 +#: ../src/ui/dialog/inkscape-preferences.cpp:1591 +#: ../src/ui/dialog/pixelartdialog.cpp:289 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:793 +#: ../src/ui/dialog/tracedialog.cpp:811 +#: ../src/ui/widget/preferences-widget.cpp:655 msgid "Reset" msgstr "Frumstilla" @@ -11404,130 +11865,108 @@ msgstr "Hámarks_flækjustig:" msgid "Disable effect if the output is too complex" msgstr "" -#: ../src/live_effects/parameter/bool.cpp:74 +#: ../src/live_effects/parameter/bool.cpp:79 msgid "Change bool parameter" -msgstr "" +msgstr "Skipta um bool-breytu" #: ../src/live_effects/parameter/enum.h:49 msgid "Change enumeration parameter" msgstr "" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:777 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:835 -msgid "" -"Chamfer: Ctrl+Click toggle type, Shift+Click open " -"dialog, Ctrl+Alt+Click reset" -msgstr "" -"Hornskurður: Ctrl+Click víxla tegund, Shift+Click opna " -"samskiptaglugga, Ctrl+Alt+Click frumstilla" +#: ../src/live_effects/parameter/fontbutton.cpp:70 +msgid "Change font button parameter" +msgstr "Skipta um færibreytu leturhnapps" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:781 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:839 -msgid "" -"Inverse Chamfer: Ctrl+Click toggle type, Shift+Click " -"open dialog, Ctrl+Alt+Click reset" -msgstr "" -"Öfugur hornskurður: Ctrl+Click víxla tegund, Shift+Click opna samskiptaglugga, Ctrl+Alt+Click frumstilla" +#: ../src/live_effects/parameter/item.cpp:123 +msgid "Link to item on clipboard" +msgstr "Tengja við atriði á klippispjaldi" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:785 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:843 -msgid "" -"Inverse Fillet: Ctrl+Click toggle type, Shift+Click " -"open dialog, Ctrl+Alt+Click reset" -msgstr "" -"Öfug kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click " -"opna samskiptaglugga, Ctrl+Alt+Click frumstilla" +#: ../src/live_effects/parameter/item.cpp:236 +msgid "Link item parameter to path" +msgstr "Tengja færibreytu atriðis við feril" -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:789 -#: ../src/live_effects/parameter/filletchamferpointarray.cpp:847 -msgid "" -"Fillet: Ctrl+Click toggle type, Shift+Click open " -"dialog, Ctrl+Alt+Click reset" -msgstr "" -"Kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click opna " -"samskiptaglugga, Ctrl+Alt+Click frumstilla" +#: ../src/live_effects/parameter/originalitem.cpp:66 +msgid "Link to item" +msgstr "Tengja við atriði" -#: ../src/live_effects/parameter/fontbutton.cpp:68 -msgid "Change font button parameter" -msgstr "Skipta um færibreytu leturhnapps" +#: ../src/live_effects/parameter/originalitem.cpp:79 +#: ../src/live_effects/parameter/originalpath.cpp:80 +msgid "Select original" +msgstr "Velja upprunalegt" #: ../src/live_effects/parameter/originalpath.cpp:67 #: ../src/live_effects/parameter/originalpatharray.cpp:155 msgid "Link to path" msgstr "Tengja við feril" -#: ../src/live_effects/parameter/originalpath.cpp:79 -msgid "Select original" -msgstr "Velja upprunalegt" - -#: ../src/live_effects/parameter/originalpatharray.cpp:82 -#: ../src/ui/dialog/inkscape-preferences.cpp:1542 -#: ../src/ui/widget/page-sizer.cpp:268 ../src/widgets/gradient-selector.cpp:141 +#: ../src/live_effects/parameter/originalpatharray.cpp:81 +#: ../src/ui/dialog/inkscape-preferences.cpp:1546 +#: ../src/ui/widget/page-sizer.cpp:268 +#: ../src/widgets/gradient-selector.cpp:140 #: ../src/widgets/sp-xmlview-attr-list.cpp:45 msgid "Name" msgstr "Heiti" -#: ../src/live_effects/parameter/originalpatharray.cpp:90 +#: ../src/live_effects/parameter/originalpatharray.cpp:89 #: ../src/widgets/gradient-toolbar.cpp:1206 msgid "Reverse" msgstr "Snúa við" -#: ../src/live_effects/parameter/originalpatharray.cpp:130 -#: ../src/live_effects/parameter/originalpatharray.cpp:315 -#: ../src/live_effects/parameter/path.cpp:508 +#: ../src/live_effects/parameter/originalpatharray.cpp:129 +#: ../src/live_effects/parameter/originalpatharray.cpp:318 +#: ../src/live_effects/parameter/path.cpp:539 msgid "Link path parameter to path" msgstr "" -#: ../src/live_effects/parameter/originalpatharray.cpp:167 +#: ../src/live_effects/parameter/originalpatharray.cpp:168 msgid "Remove Path" msgstr "Fjarlægja slóð" -#: ../src/live_effects/parameter/originalpatharray.cpp:179 -#: ../src/ui/dialog/objects.cpp:1841 +#: ../src/live_effects/parameter/originalpatharray.cpp:181 +#: ../src/ui/dialog/objects.cpp:1880 msgid "Move Down" msgstr "Færa niður" -#: ../src/live_effects/parameter/originalpatharray.cpp:191 -#: ../src/ui/dialog/objects.cpp:1849 +#: ../src/live_effects/parameter/originalpatharray.cpp:194 +#: ../src/ui/dialog/objects.cpp:1888 msgid "Move Up" msgstr "Færa upp" -#: ../src/live_effects/parameter/originalpatharray.cpp:231 +#: ../src/live_effects/parameter/originalpatharray.cpp:234 msgid "Move path up" msgstr "Færa feril upp" -#: ../src/live_effects/parameter/originalpatharray.cpp:261 +#: ../src/live_effects/parameter/originalpatharray.cpp:264 msgid "Move path down" msgstr "Færa feril niður" -#: ../src/live_effects/parameter/originalpatharray.cpp:279 +#: ../src/live_effects/parameter/originalpatharray.cpp:282 msgid "Remove path" msgstr "Fjarlægja feril" -#: ../src/live_effects/parameter/path.cpp:184 +#: ../src/live_effects/parameter/path.cpp:201 msgid "Edit on-canvas" msgstr "Breyta á myndfleti" -#: ../src/live_effects/parameter/path.cpp:194 +#: ../src/live_effects/parameter/path.cpp:214 msgid "Copy path" msgstr "Afrita feril" -#: ../src/live_effects/parameter/path.cpp:204 +#: ../src/live_effects/parameter/path.cpp:227 msgid "Paste path" msgstr "Líma feril" -#: ../src/live_effects/parameter/path.cpp:214 +#: ../src/live_effects/parameter/path.cpp:239 msgid "Link to path on clipboard" msgstr "Tengja við feril á klippispjaldi" -#: ../src/live_effects/parameter/path.cpp:476 +#: ../src/live_effects/parameter/path.cpp:507 msgid "Paste path parameter" -msgstr "" +msgstr "Líma viðfang ferils" -#: ../src/live_effects/parameter/point.cpp:131 +#: ../src/live_effects/parameter/point.cpp:139 msgid "Change point parameter" -msgstr "" +msgstr "Skipta um breytu punkts" #: ../src/live_effects/parameter/powerstrokepointarray.cpp:239 #: ../src/live_effects/parameter/powerstrokepointarray.cpp:256 @@ -11537,24 +11976,88 @@ msgid "" "+click launches width dialog." msgstr "" -#: ../src/live_effects/parameter/random.cpp:134 +#: ../src/live_effects/parameter/random.cpp:149 msgid "Change random parameter" msgstr "" -#: ../src/live_effects/parameter/text.cpp:127 +#: ../src/live_effects/parameter/satellitesarray.cpp:255 +msgid "" +"Chamfer: Ctrl+Click toggles type, Shift+Click open " +"dialog, Ctrl+Alt+Click reset" +msgstr "" +"Hornskurður: Ctrl+Click víxla tegund, Shift+Click opna " +"samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:259 +msgid "" +"Inverse Chamfer: Ctrl+Click toggles type, Shift+Click " +"open dialog, Ctrl+Alt+Click reset" +msgstr "" +"Öfugur hornskurður: Ctrl+Click víxla tegund, Shift+Click opna samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:263 +msgid "" +"Inverse Fillet: Ctrl+Click toggles type, Shift+Click " +"open dialog, Ctrl+Alt+Click reset" +msgstr "" +"Öfug kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click " +"opna samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:267 +msgid "" +"Fillet: Ctrl+Click toggles type, Shift+Click open " +"dialog, Ctrl+Alt+Click reset" +msgstr "" +"Kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click opna " +"samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:477 +msgid "" +"Chamfer: Ctrl+Click toggles type, Shift+Click open " +"dialog, Ctrl+Alt+Click resets" +msgstr "" +"Hornskurður: Ctrl+Click víxla tegund, Shift+Click opna " +"samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:481 +msgid "" +"Inverse Chamfer: Ctrl+Click toggles type, Shift+Click " +"open dialog, Ctrl+Alt+Click resets" +msgstr "" +"Öfugur hornskurður: Ctrl+Click víxla tegund, Shift+Click opna samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:485 +msgid "" +"Inverse Fillet: Ctrl+Click toggles type, Shift+Click " +"open dialog, Ctrl+Alt+Click resets" +msgstr "" +"Öfug kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click " +"opna samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/satellitesarray.cpp:489 +msgid "" +"Fillet: Ctrl+Click toggles type, Shift+Click open " +"dialog, Ctrl+Alt+Click resets" +msgstr "" +"Kverkrúnnun: Ctrl+Click víxla tegund, Shift+Click opna " +"samskiptaglugga, Ctrl+Alt+Click frumstilla" + +#: ../src/live_effects/parameter/text.cpp:126 msgid "Change text parameter" msgstr "" -#: ../src/live_effects/parameter/togglebutton.cpp:112 +#: ../src/live_effects/parameter/togglebutton.cpp:123 msgid "Change togglebutton parameter" msgstr "" -#: ../src/live_effects/parameter/transformedpoint.cpp:98 -#: ../src/live_effects/parameter/vector.cpp:98 +#: ../src/live_effects/parameter/transformedpoint.cpp:117 +#: ../src/live_effects/parameter/vector.cpp:117 msgid "Change vector parameter" msgstr "Skipta um færibreytu vigurs" -#: ../src/live_effects/parameter/unit.cpp:86 +#: ../src/live_effects/parameter/unit.cpp:87 msgid "Change unit parameter" msgstr "" @@ -11563,389 +12066,317 @@ msgstr "" msgid "Unable to find verb ID '%s' specified on the command line.\n" msgstr "" -#: ../src/main-cmdlineact.cpp:77 ../src/main-cmdlinexact.cpp:255 +#: ../src/main-cmdlineact.cpp:77 ../src/main-cmdlinexact.cpp:254 #, c-format msgid "Unable to find node ID: '%s'\n" -msgstr "" +msgstr "Get ekki fundið ID-auðkenni hnúts: '%s'\n" -#: ../src/main.cpp:294 +#: ../src/main.cpp:301 msgid "Print the Inkscape version number" -msgstr "" +msgstr "Prenta útgáfunúmer Inkscape" -#: ../src/main.cpp:299 +#: ../src/main.cpp:306 msgid "Do not use X server (only process files from console)" msgstr "" -#: ../src/main.cpp:304 +#: ../src/main.cpp:311 msgid "Try to use X server (even if $DISPLAY is not set)" msgstr "" -#: ../src/main.cpp:309 +#: ../src/main.cpp:316 msgid "Open specified document(s) (option string may be excluded)" msgstr "" -#: ../src/main.cpp:310 ../src/main.cpp:320 ../src/main.cpp:325 -#: ../src/main.cpp:397 ../src/main.cpp:402 ../src/main.cpp:407 -#: ../src/main.cpp:418 ../src/main.cpp:434 ../src/main.cpp:439 +#: ../src/main.cpp:317 ../src/main.cpp:327 ../src/main.cpp:332 +#: ../src/main.cpp:404 ../src/main.cpp:408 ../src/main.cpp:413 +#: ../src/main.cpp:418 ../src/main.cpp:429 ../src/main.cpp:445 +#: ../src/main.cpp:450 msgid "FILENAME" msgstr "SKRÁARHEITI" -#: ../src/main.cpp:314 +#: ../src/main.cpp:321 msgid "xverbs command" -msgstr "" +msgstr "xverbs skipun" -#: ../src/main.cpp:315 +#: ../src/main.cpp:322 msgid "XVERBS_FILENAME" msgstr "XVERBS_SKRÁARHEITI" -#: ../src/main.cpp:319 +#: ../src/main.cpp:326 msgid "Print document(s) to specified output file (use '| program' for pipe)" msgstr "" -#: ../src/main.cpp:324 +#: ../src/main.cpp:331 msgid "Export document to a PNG file" msgstr "Flytja skjal út í PNG-skrá" -#: ../src/main.cpp:329 +#: ../src/main.cpp:336 msgid "" "Resolution for exporting to bitmap and for rasterization of filters in PS/" "EPS/PDF (default 96)" msgstr "" -#: ../src/main.cpp:330 ../src/ui/widget/rendering-options.cpp:37 +#: ../src/main.cpp:337 ../src/ui/widget/rendering-options.cpp:37 msgid "DPI" msgstr "PÁT" -#: ../src/main.cpp:334 +#: ../src/main.cpp:341 msgid "" "Exported area in SVG user units (default is the page; 0,0 is lower-left " "corner)" msgstr "" -#: ../src/main.cpp:335 +#: ../src/main.cpp:342 msgid "x0:y0:x1:y1" msgstr "x0:y0:x1:y1" -#: ../src/main.cpp:339 +#: ../src/main.cpp:346 msgid "Exported area is the entire drawing (not page)" -msgstr "" +msgstr "Útflutt svæði er öll teikningin (ekki síðan)" -#: ../src/main.cpp:344 +#: ../src/main.cpp:351 msgid "Exported area is the entire page" -msgstr "" +msgstr "Útflutt svæði er öll síðan" -#: ../src/main.cpp:349 +#: ../src/main.cpp:356 msgid "Only for PS/EPS/PDF, sets margin in mm around exported area (default 0)" msgstr "" -#: ../src/main.cpp:350 ../src/main.cpp:392 +#: ../src/main.cpp:357 ../src/main.cpp:399 msgid "VALUE" msgstr "GILDI" -#: ../src/main.cpp:354 +#: ../src/main.cpp:361 msgid "" "Snap the bitmap export area outwards to the nearest integer values (in SVG " "user units)" msgstr "" -#: ../src/main.cpp:359 +#: ../src/main.cpp:366 msgid "The width of exported bitmap in pixels (overrides export-dpi)" msgstr "" -#: ../src/main.cpp:360 +#: ../src/main.cpp:367 msgid "WIDTH" msgstr "BREIDD" -#: ../src/main.cpp:364 +#: ../src/main.cpp:371 msgid "The height of exported bitmap in pixels (overrides export-dpi)" msgstr "" -#: ../src/main.cpp:365 +#: ../src/main.cpp:372 msgid "HEIGHT" msgstr "HÆÐ" -#: ../src/main.cpp:369 +#: ../src/main.cpp:376 msgid "The ID of the object to export" msgstr "" -#: ../src/main.cpp:370 ../src/main.cpp:483 -#: ../src/ui/dialog/inkscape-preferences.cpp:1545 +#: ../src/main.cpp:377 ../src/main.cpp:494 +#: ../src/ui/dialog/inkscape-preferences.cpp:1549 msgid "ID" msgstr "Auðkenni (ID)" #. TRANSLATORS: this means: "Only export the object whose id is given in --export-id". #. See "man inkscape" for details. -#: ../src/main.cpp:376 +#: ../src/main.cpp:383 msgid "" "Export just the object with export-id, hide all others (only with export-id)" msgstr "" -#: ../src/main.cpp:381 +#: ../src/main.cpp:388 msgid "Use stored filename and DPI hints when exporting (only with export-id)" msgstr "" -#: ../src/main.cpp:386 +#: ../src/main.cpp:393 msgid "Background color of exported bitmap (any SVG-supported color string)" msgstr "" -#: ../src/main.cpp:387 +#: ../src/main.cpp:394 msgid "COLOR" msgstr "LITUR" -#: ../src/main.cpp:391 +#: ../src/main.cpp:398 msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)" msgstr "" +"Ógegnsæi bakgrunns útfluttrar bitamyndar (annað hvort 0.0 til 1.0, eða 1 til " +"255)" + +#: ../src/main.cpp:403 +msgid "Export document to an inkscape SVG file (similar to save as.)" +msgstr "Flytja skjal út í inkscape SVG-skrá (svipar til 'Vista sem')" -#: ../src/main.cpp:396 +#: ../src/main.cpp:407 msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)" msgstr "" "Flytja skjal út sem venjulega SVG-skrá (ekki sodipodi eða inkscape " "nafnaskilgreiningar)" -#: ../src/main.cpp:401 +#: ../src/main.cpp:412 msgid "Export document to a PS file" msgstr "Flytja skjal út sem PS-skrá" -#: ../src/main.cpp:406 +#: ../src/main.cpp:417 msgid "Export document to an EPS file" msgstr "Flytja skjal út sem EPS-skrá" -#: ../src/main.cpp:411 +#: ../src/main.cpp:422 msgid "" "Choose the PostScript Level used to export. Possible choices are 2 and 3 " "(the default)" msgstr "" -#: ../src/main.cpp:413 +#: ../src/main.cpp:424 msgid "PS Level" msgstr "PS stig" -#: ../src/main.cpp:417 +#: ../src/main.cpp:428 msgid "Export document to a PDF file" msgstr "Flytja skjal út sem PDF-skrá" #. TRANSLATORS: "--export-pdf-version" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:423 +#: ../src/main.cpp:434 msgid "" -"Export PDF to given version. (hint: make sure to input the exact string " -"found in the PDF export dialog, e.g. \"PDF 1.4\" which is PDF-a conformant)" +"Export PDF to given version. (hint: make sure to input a version found in " +"the PDF export dialog, e.g. \"1.4\" which is PDF-a conformant)" msgstr "" -#: ../src/main.cpp:424 +#: ../src/main.cpp:435 msgid "PDF_VERSION" msgstr "PDF_VERSION" -#: ../src/main.cpp:428 +#: ../src/main.cpp:439 msgid "" "Export PDF/PS/EPS without text. Besides the PDF/PS/EPS, a LaTeX file is " "exported, putting the text on top of the PDF/PS/EPS file. Include the result " "in LaTeX like: \\input{latexfile.tex}" msgstr "" -#: ../src/main.cpp:433 +#: ../src/main.cpp:444 msgid "Export document to an Enhanced Metafile (EMF) File" msgstr "Flytja skjal út sem Enhanced Metafile (EMF)" -#: ../src/main.cpp:438 +#: ../src/main.cpp:449 msgid "Export document to a Windows Metafile (WMF) File" -msgstr "" +msgstr "Flytja skjal út sem Windows Metafile (WMF) skrá" -#: ../src/main.cpp:443 +#: ../src/main.cpp:454 msgid "Convert text object to paths on export (PS, EPS, PDF, SVG)" -msgstr "" +msgstr "Umbreyta textahlutum í ferla við útflutning (PS, EPS, PDF, SVG)" -#: ../src/main.cpp:448 +#: ../src/main.cpp:459 msgid "" "Render filtered objects without filters, instead of rasterizing (PS, EPS, " "PDF)" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:454 +#: ../src/main.cpp:465 msgid "" "Query the X coordinate of the drawing or, if specified, of the object with --" "query-id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:460 +#: ../src/main.cpp:471 msgid "" "Query the Y coordinate of the drawing or, if specified, of the object with --" "query-id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:466 +#: ../src/main.cpp:477 msgid "" "Query the width of the drawing or, if specified, of the object with --query-" "id" msgstr "" #. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help" -#: ../src/main.cpp:472 +#: ../src/main.cpp:483 msgid "" "Query the height of the drawing or, if specified, of the object with --query-" "id" msgstr "" -#: ../src/main.cpp:477 +#: ../src/main.cpp:488 msgid "List id,x,y,w,h for all objects" msgstr "" -#: ../src/main.cpp:482 +#: ../src/main.cpp:493 msgid "The ID of the object whose dimensions are queried" msgstr "" #. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory -#: ../src/main.cpp:488 +#: ../src/main.cpp:499 msgid "Print out the extension directory and exit" msgstr "" -#: ../src/main.cpp:493 +#: ../src/main.cpp:504 msgid "Remove unused definitions from the defs section(s) of the document" msgstr "" -#: ../src/main.cpp:499 +#: ../src/main.cpp:510 msgid "Enter a listening loop for D-Bus messages in console mode" msgstr "" -#: ../src/main.cpp:504 +#: ../src/main.cpp:515 msgid "" "Specify the D-Bus bus name to listen for messages on (default is org." "inkscape)" msgstr "" -#: ../src/main.cpp:505 +#: ../src/main.cpp:516 msgid "BUS-NAME" msgstr "BUS-NAME" -#: ../src/main.cpp:510 +#: ../src/main.cpp:521 msgid "List the IDs of all the verbs in Inkscape" msgstr "" -#: ../src/main.cpp:515 +#: ../src/main.cpp:526 msgid "Verb to call when Inkscape opens." msgstr "" -#: ../src/main.cpp:516 +#: ../src/main.cpp:527 msgid "VERB-ID" msgstr "VERB-ID" -#: ../src/main.cpp:520 +#: ../src/main.cpp:531 msgid "Object ID to select when Inkscape opens." msgstr "" -#: ../src/main.cpp:521 +#: ../src/main.cpp:532 msgid "OBJECT-ID" msgstr "OBJECT-ID" -#: ../src/main.cpp:525 +#: ../src/main.cpp:536 msgid "Start Inkscape in interactive shell mode." msgstr "" -#: ../src/main.cpp:875 ../src/main.cpp:1259 +#: ../src/main.cpp:541 +msgid "Do not fix legacy (pre-0.92) files' text baseline spacing on opening." +msgstr "" + +#: ../src/main.cpp:546 +msgid "Method used to convert pre-.92 document dpi, if needed." +msgstr "" + +#: ../src/main.cpp:865 ../src/main.cpp:1259 msgid "" "[OPTIONS...] [FILE...]\n" "\n" "Available options:" msgstr "" +"[VALKOSTIR...] [SKRÁ...]\n" +"\n" +"Tiltækir valkostir:" #. ## Add a menu for clear() #: ../src/menus-skeleton.h:18 ../src/ui/dialog/debug.cpp:73 +#: ../share/ui/menus.xml.h:1 msgid "_File" msgstr "_Skrá" -#. " \n" -#. " \n" -#: ../src/menus-skeleton.h:43 ../src/verbs.cpp:2767 ../src/verbs.cpp:2775 -msgid "_Edit" -msgstr "Br_eyta" - -#: ../src/menus-skeleton.h:53 ../src/verbs.cpp:2508 -msgid "Paste Si_ze" -msgstr "Líma stæ_rð" - -#: ../src/menus-skeleton.h:65 -msgid "Clo_ne" -msgstr "_Klóna" - -#: ../src/menus-skeleton.h:80 -msgid "Select Sa_me" -msgstr "Velja sa_ma" - -#: ../src/menus-skeleton.h:101 -msgid "_View" -msgstr "S_koða" - -#: ../src/menus-skeleton.h:102 -msgid "_Zoom" -msgstr "Aðdrá_ttur" - -#: ../src/menus-skeleton.h:118 -msgid "_Display mode" -msgstr "_Birtingarhamur" - -#. Better location in menu needs to be found -#. " \n" -#. " \n" -#: ../src/menus-skeleton.h:127 -msgid "_Color display mode" -msgstr "_Litbirtingarhamur" - -#. Better location in menu needs to be found -#. " \n" -#. " \n" -#: ../src/menus-skeleton.h:140 -msgid "Sh_ow/Hide" -msgstr "Birta/_Fela" - -#. Not quite ready to be in the menus. -#. " \n" -#: ../src/menus-skeleton.h:160 -msgid "_Layer" -msgstr "_Lag" - -#: ../src/menus-skeleton.h:184 -msgid "_Object" -msgstr "_Hlutur" - -#: ../src/menus-skeleton.h:196 -msgid "Cli_p" -msgstr "_Afmarka" - -#: ../src/menus-skeleton.h:200 -msgid "Mas_k" -msgstr "Hu_la" - -#: ../src/menus-skeleton.h:204 -msgid "Patter_n" -msgstr "_Mynstur" - -#: ../src/menus-skeleton.h:228 -msgid "_Path" -msgstr "_Ferill" - -#: ../src/menus-skeleton.h:260 ../src/ui/dialog/find.cpp:71 -#: ../src/ui/dialog/text-edit.cpp:64 -msgid "_Text" -msgstr "_Texti" - -#: ../src/menus-skeleton.h:278 -msgid "Filter_s" -msgstr "_Síur" - -#: ../src/menus-skeleton.h:284 -msgid "Exte_nsions" -msgstr "_Viðbætur" - -#: ../src/menus-skeleton.h:290 -msgid "_Help" -msgstr "_Hjálp" - -#: ../src/menus-skeleton.h:294 -msgid "Tutorials" -msgstr "Leiðbeiningar" - #: ../src/path-chemistry.cpp:63 msgid "Select object(s) to combine." msgstr "Veldu hluti sem á að sameina." @@ -11970,43 +12401,43 @@ msgstr "Veldu feril/ferla til að rjúfa í sundur." msgid "Breaking apart paths..." msgstr "Sundra ferlum..." -#: ../src/path-chemistry.cpp:288 +#: ../src/path-chemistry.cpp:289 msgid "Break apart" msgstr "Sundra" -#: ../src/path-chemistry.cpp:292 +#: ../src/path-chemistry.cpp:293 msgid "No path(s) to break apart in the selection." msgstr "Engir ferlar í valinu til að rjúfa í sundur." -#: ../src/path-chemistry.cpp:300 +#: ../src/path-chemistry.cpp:301 msgid "Select object(s) to convert to path." msgstr "Veldu hluti sem á að umbreyta í ferla." -#: ../src/path-chemistry.cpp:306 +#: ../src/path-chemistry.cpp:307 msgid "Converting objects to paths..." msgstr "Umbreyti hlutum í ferla..." -#: ../src/path-chemistry.cpp:326 +#: ../src/path-chemistry.cpp:327 msgid "Object to path" msgstr "Hlutur sem ferill" -#: ../src/path-chemistry.cpp:329 +#: ../src/path-chemistry.cpp:330 msgid "No objects to convert to path in the selection." msgstr "Engir hlutir í valinu sem hægt er að breyta í feril." -#: ../src/path-chemistry.cpp:613 +#: ../src/path-chemistry.cpp:614 msgid "Select path(s) to reverse." msgstr "Veldu feril/ferla til að snúa við." -#: ../src/path-chemistry.cpp:621 +#: ../src/path-chemistry.cpp:622 msgid "Reversing paths..." msgstr "Sný við ferlum..." -#: ../src/path-chemistry.cpp:659 +#: ../src/path-chemistry.cpp:660 msgid "Reverse path" msgstr "Snúa við ferlum" -#: ../src/path-chemistry.cpp:662 +#: ../src/path-chemistry.cpp:663 msgid "No paths to reverse in the selection." msgstr "Engir ferlar í valinu til að snúa við." @@ -12042,7 +12473,7 @@ msgstr "Slettandi" msgid "Tracing" msgstr "Línuteiknun" -#: ../src/preferences.cpp:136 +#: ../src/preferences.cpp:128 msgid "" "Inkscape will run with default settings, and new settings will not be saved. " msgstr "" @@ -12050,7 +12481,7 @@ msgstr "" #. the creation failed #. _reportError(Glib::ustring::compose(_("Cannot create profile directory %1."), #. Glib::filename_to_utf8(_prefs_dir)), not_saved); -#: ../src/preferences.cpp:151 +#: ../src/preferences.cpp:144 #, c-format msgid "Cannot create profile directory %s." msgstr "Get ekki búið til sniðmöppu %s." @@ -12058,7 +12489,7 @@ msgstr "Get ekki búið til sniðmöppu %s." #. The profile dir is not actually a directory #. _reportError(Glib::ustring::compose(_("%1 is not a valid directory."), #. Glib::filename_to_utf8(_prefs_dir)), not_saved); -#: ../src/preferences.cpp:169 +#: ../src/preferences.cpp:162 #, c-format msgid "%s is not a valid directory." msgstr "%s er ekki gild mappa." @@ -12066,27 +12497,27 @@ msgstr "%s er ekki gild mappa." #. The write failed. #. _reportError(Glib::ustring::compose(_("Failed to create the preferences file %1."), #. Glib::filename_to_utf8(_prefs_filename)), not_saved); -#: ../src/preferences.cpp:180 +#: ../src/preferences.cpp:172 #, c-format msgid "Failed to create the preferences file %s." msgstr "Mistókst að búa til kjörstillingaskrána %s." -#: ../src/preferences.cpp:216 +#: ../src/preferences.cpp:208 #, c-format msgid "The preferences file %s is not a regular file." msgstr "" -#: ../src/preferences.cpp:226 +#: ../src/preferences.cpp:218 #, c-format msgid "The preferences file %s could not be read." msgstr "" -#: ../src/preferences.cpp:237 +#: ../src/preferences.cpp:229 #, c-format msgid "The preferences file %s is not a valid XML document." msgstr "" -#: ../src/preferences.cpp:246 +#: ../src/preferences.cpp:238 #, c-format msgid "The file %s is not a valid Inkscape preferences file." msgstr "" @@ -12133,7 +12564,7 @@ msgstr "Open Font notkunarleyfi" #. Create the Title label and edit control #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkTitleAttribute -#: ../src/rdf.cpp:235 ../src/ui/dialog/filedialogimpl-win32.cpp:1956 +#: ../src/rdf.cpp:235 ../src/ui/dialog/filedialogimpl-win32.cpp:1881 #: ../src/ui/dialog/object-attributes.cpp:54 msgid "Title:" msgstr "Titill:" @@ -12206,15 +12637,15 @@ msgstr "Tengt:" #: ../src/rdf.cpp:265 msgid "A related resource" -msgstr "" +msgstr "Tengt tilfang" -#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1889 +#: ../src/rdf.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1897 msgid "Language:" msgstr "Tungumál:" #: ../src/rdf.cpp:268 msgid "A language of the resource" -msgstr "" +msgstr "Tungumál tilfangsins" #: ../src/rdf.cpp:270 msgid "Keywords:" @@ -12222,7 +12653,7 @@ msgstr "Stikkorð:" #: ../src/rdf.cpp:271 msgid "The topic of the resource" -msgstr "" +msgstr "Viðfangsefni tilfangsins" #. TRANSLATORS: "Coverage": the spatial or temporal characteristics of the content. #. For info, see Appendix D of http://www.w3.org/TR/1998/WD-rdf-schema-19980409/ @@ -12272,429 +12703,456 @@ msgstr "Hluti:" msgid "XML fragment for the RDF 'License' section" msgstr "" -#: ../src/resource-manager.cpp:334 +#: ../src/resource-manager.cpp:374 msgid "Fixup broken links" msgstr "Laga rofna tengla" -#: ../src/selection-chemistry.cpp:383 +#: ../src/selection-chemistry.cpp:385 msgid "Delete text" msgstr "Eyða texta" -#: ../src/selection-chemistry.cpp:389 +#: ../src/selection-chemistry.cpp:391 msgid "Nothing was deleted." -msgstr "" +msgstr "Enguvar eytt." -#: ../src/selection-chemistry.cpp:408 -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:54 -#: ../src/ui/dialog/swatches.cpp:268 ../src/ui/tools/text-tool.cpp:961 -#: ../src/widgets/eraser-toolbar.cpp:143 +#: ../src/selection-chemistry.cpp:410 ../src/ui/dialog/swatches.cpp:270 +#: ../src/ui/tools/text-tool.cpp:959 ../src/widgets/eraser-toolbar.cpp:145 #: ../src/widgets/gradient-toolbar.cpp:1182 #: ../src/widgets/gradient-toolbar.cpp:1196 -#: ../src/widgets/gradient-toolbar.cpp:1210 ../src/widgets/node-toolbar.cpp:399 +#: ../src/widgets/gradient-toolbar.cpp:1210 +#: ../src/widgets/node-toolbar.cpp:399 msgid "Delete" msgstr "Eyða" -#: ../src/selection-chemistry.cpp:443 +#: ../src/selection-chemistry.cpp:445 msgid "Select object(s) to duplicate." msgstr "Veldu hlut sem á að tvöfalda." -#: ../src/selection-chemistry.cpp:548 +#: ../src/selection-chemistry.cpp:550 #, c-format msgid "%s copy" msgstr "%s afrit" -#: ../src/selection-chemistry.cpp:571 +#: ../src/selection-chemistry.cpp:573 msgid "Delete all" msgstr "Eyða öllu" -#: ../src/selection-chemistry.cpp:695 +#: ../src/selection-chemistry.cpp:697 msgid "Select some objects to group." -msgstr "" +msgstr "Veldu einhverja hluti til að hópa." -#: ../src/selection-chemistry.cpp:763 +#: ../src/selection-chemistry.cpp:765 msgctxt "Verb" msgid "Group" msgstr "Hópur" -#: ../src/selection-chemistry.cpp:785 +#: ../src/selection-chemistry.cpp:787 msgid "No objects selected to pop out of group." msgstr "Engir hlutir valdir sem hægt er að henda út úr hóp." -#: ../src/selection-chemistry.cpp:794 +#: ../src/selection-chemistry.cpp:796 msgid "Selection not in a group." msgstr "Val er ekki í hóp." -#: ../src/selection-chemistry.cpp:809 +#: ../src/selection-chemistry.cpp:811 msgid "Pop selection from group" msgstr "Henda völdu út úr hóp" -#: ../src/selection-chemistry.cpp:873 +#: ../src/selection-chemistry.cpp:875 msgid "Select a group to ungroup." msgstr "Veldu hóp til að skipta upp." -#: ../src/selection-chemistry.cpp:879 +#: ../src/selection-chemistry.cpp:881 msgid "No groups to ungroup in the selection." msgstr "Engir hópar í valinu til að skipta upp." -#: ../src/selection-chemistry.cpp:886 ../src/sp-item-group.cpp:655 -#: ../src/ui/dialog/objects.cpp:1903 +#: ../src/selection-chemistry.cpp:888 ../src/sp-item-group.cpp:656 +#: ../src/ui/dialog/objects.cpp:1942 msgid "Ungroup" msgstr "Skipta upp hóp" -#: ../src/selection-chemistry.cpp:973 ../src/selection-chemistry.cpp:1025 +#: ../src/selection-chemistry.cpp:975 ../src/selection-chemistry.cpp:1027 msgid "Select object(s) to raise." msgstr "Veldu hluti sem á að hækka." -#: ../src/selection-chemistry.cpp:980 ../src/selection-chemistry.cpp:1031 -#: ../src/selection-chemistry.cpp:1057 ../src/selection-chemistry.cpp:1114 +#: ../src/selection-chemistry.cpp:982 ../src/selection-chemistry.cpp:1033 +#: ../src/selection-chemistry.cpp:1059 ../src/selection-chemistry.cpp:1116 msgid "" "You cannot raise/lower objects from different groups or layers." msgstr "" +"Ekki er hægt að hækka/lækka hluti úr mismunandi hópum eða lögum." #. TRANSLATORS: "Raise" means "to raise an object" in the undo history -#: ../src/selection-chemistry.cpp:1019 +#: ../src/selection-chemistry.cpp:1021 msgctxt "Undo action" msgid "Raise" msgstr "Hækka" -#: ../src/selection-chemistry.cpp:1045 +#: ../src/selection-chemistry.cpp:1047 msgid "Raise to top" msgstr "Setja efst" -#: ../src/selection-chemistry.cpp:1051 +#: ../src/selection-chemistry.cpp:1053 msgid "Select object(s) to lower." msgstr "Veldu hluti sem á að lækka." #. TRANSLATORS: "Lower" means "to lower an object" in the undo history -#: ../src/selection-chemistry.cpp:1100 +#: ../src/selection-chemistry.cpp:1102 msgctxt "Undo action" msgid "Lower" msgstr "Lækka" -#: ../src/selection-chemistry.cpp:1108 +#: ../src/selection-chemistry.cpp:1110 msgid "Select object(s) to lower to bottom." msgstr "Veldu hluti sem á að lækka neðst." -#: ../src/selection-chemistry.cpp:1138 +#: ../src/selection-chemistry.cpp:1140 msgid "Lower to bottom" msgstr "Setja neðst" -#: ../src/selection-chemistry.cpp:1150 +#: ../src/selection-chemistry.cpp:1146 +msgid "Select object(s) to stack up." +msgstr "Veldu hlut(i) sem á að stafla upp." + +#: ../src/selection-chemistry.cpp:1157 +msgid "We hit top." +msgstr "Komið efst upp." + +#. TRANSLATORS: undo history: "stack up" means to raise an object of its ordinal position by 1 +#: ../src/selection-chemistry.cpp:1165 +msgctxt "Undo action" +msgid "stack up" +msgstr "stafla upp" + +#: ../src/selection-chemistry.cpp:1170 +msgid "Select object(s) to stack down." +msgstr "Veldu hlut(i) sem á að stafla niður." + +#: ../src/selection-chemistry.cpp:1181 +msgid "We hit bottom." +msgstr "Komið neðst." + +#. TRANSLATORS: undo history: "stack down" means to lower an object of its ordinal position by 1 +#: ../src/selection-chemistry.cpp:1189 +msgctxt "Undo action" +msgid "stack down" +msgstr "stafla niður" + +#: ../src/selection-chemistry.cpp:1199 msgid "Nothing to undo." msgstr "Ekkert hægt að afturkalla." -#: ../src/selection-chemistry.cpp:1161 +#: ../src/selection-chemistry.cpp:1210 msgid "Nothing to redo." msgstr "Ekkert hægt að endurtaka." -#: ../src/selection-chemistry.cpp:1233 +#: ../src/selection-chemistry.cpp:1282 msgid "Paste" msgstr "Líma" -#: ../src/selection-chemistry.cpp:1241 +#: ../src/selection-chemistry.cpp:1290 msgid "Paste style" msgstr "Líma stíl" -#: ../src/selection-chemistry.cpp:1251 +#: ../src/selection-chemistry.cpp:1299 msgid "Paste live path effect" msgstr "" -#: ../src/selection-chemistry.cpp:1271 +#: ../src/selection-chemistry.cpp:1319 msgid "Select object(s) to remove live path effects from." msgstr "" -#: ../src/selection-chemistry.cpp:1284 +#: ../src/selection-chemistry.cpp:1332 msgid "Remove live path effect" msgstr "" -#: ../src/selection-chemistry.cpp:1293 +#: ../src/selection-chemistry.cpp:1341 msgid "Select object(s) to remove filters from." msgstr "Veldu hluti sem á að fjarlægja síur af." -#: ../src/selection-chemistry.cpp:1303 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1672 +#: ../src/selection-chemistry.cpp:1351 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1674 msgid "Remove filter" msgstr "Fjarlægja síu" -#: ../src/selection-chemistry.cpp:1312 +#: ../src/selection-chemistry.cpp:1360 msgid "Paste size" msgstr "Líma stærð" -#: ../src/selection-chemistry.cpp:1321 +#: ../src/selection-chemistry.cpp:1369 msgid "Paste size separately" msgstr "Líma stærð sér" -#: ../src/selection-chemistry.cpp:1351 +#: ../src/selection-chemistry.cpp:1399 msgid "Select object(s) to move to the layer above." msgstr "Veldu hluti sem á að færa á lagið fyrir ofan." -#: ../src/selection-chemistry.cpp:1377 +#: ../src/selection-chemistry.cpp:1425 msgid "Raise to next layer" msgstr "Hækka í næsta lag" -#: ../src/selection-chemistry.cpp:1384 +#: ../src/selection-chemistry.cpp:1432 msgid "No more layers above." msgstr "Engin fleiri lög fyrir ofan." -#: ../src/selection-chemistry.cpp:1397 +#: ../src/selection-chemistry.cpp:1445 msgid "Select object(s) to move to the layer below." msgstr "Veldu hluti sem á að færa á lagið fyrir neðan." -#: ../src/selection-chemistry.cpp:1423 +#: ../src/selection-chemistry.cpp:1471 msgid "Lower to previous layer" msgstr "Lækka í fyrra lag" -#: ../src/selection-chemistry.cpp:1430 +#: ../src/selection-chemistry.cpp:1478 msgid "No more layers below." msgstr "Engin fleiri lög fyrir neðan." -#: ../src/selection-chemistry.cpp:1443 +#: ../src/selection-chemistry.cpp:1491 msgid "Select object(s) to move." msgstr "Veldu hluti sem á að færa." -#: ../src/selection-chemistry.cpp:1461 ../src/verbs.cpp:2710 +#: ../src/selection-chemistry.cpp:1509 ../src/verbs.cpp:2819 msgid "Move selection to layer" msgstr "Flytja val á lagið" -#: ../src/selection-chemistry.cpp:1553 ../src/seltrans.cpp:385 +#: ../src/selection-chemistry.cpp:1601 ../src/seltrans.cpp:385 msgid "Cannot transform an embedded SVG." msgstr "Get ekki umbreytt ígræddu SVG." -#: ../src/selection-chemistry.cpp:1719 +#: ../src/selection-chemistry.cpp:1767 msgid "Remove transform" msgstr "Fjarlægja ummyndun" -#: ../src/selection-chemistry.cpp:1818 +#: ../src/selection-chemistry.cpp:1866 msgid "Rotate 90° CCW" msgstr "Snúa 90° rangsælis" -#: ../src/selection-chemistry.cpp:1818 +#: ../src/selection-chemistry.cpp:1866 msgid "Rotate 90° CW" msgstr "Snúa 90° réttsælis" -#: ../src/selection-chemistry.cpp:1837 ../src/seltrans.cpp:478 -#: ../src/ui/dialog/transformation.cpp:782 +#: ../src/selection-chemistry.cpp:1885 ../src/seltrans.cpp:478 +#: ../src/ui/dialog/transformation.cpp:784 msgid "Rotate" msgstr "Snúa" -#: ../src/selection-chemistry.cpp:2185 +#: ../src/selection-chemistry.cpp:2233 msgid "Rotate by pixels" msgstr "Snúa eftir mynddílum" -#: ../src/selection-chemistry.cpp:2214 ../src/seltrans.cpp:475 -#: ../src/ui/dialog/transformation.cpp:756 ../src/ui/widget/page-sizer.cpp:412 -#: ../share/extensions/interp_att_g.inx.h:14 -msgid "Scale" -msgstr "Kvarði" - -#: ../src/selection-chemistry.cpp:2238 +#: ../src/selection-chemistry.cpp:2286 msgid "Scale by whole factor" msgstr "Kvarða um heiltölugildi" -#: ../src/selection-chemistry.cpp:2252 +#: ../src/selection-chemistry.cpp:2300 msgid "Move vertically" msgstr "Færa lóðrétt" -#: ../src/selection-chemistry.cpp:2255 +#: ../src/selection-chemistry.cpp:2303 msgid "Move horizontally" msgstr "Færa lárétt" -#: ../src/selection-chemistry.cpp:2258 ../src/selection-chemistry.cpp:2283 -#: ../src/seltrans.cpp:472 ../src/ui/dialog/transformation.cpp:693 +#: ../src/selection-chemistry.cpp:2306 ../src/selection-chemistry.cpp:2331 +#: ../src/seltrans.cpp:472 ../src/ui/dialog/transformation.cpp:695 msgid "Move" msgstr "Færa" -#: ../src/selection-chemistry.cpp:2277 +#: ../src/selection-chemistry.cpp:2325 msgid "Move vertically by pixels" msgstr "Færa lóðrétt um mynddíla" -#: ../src/selection-chemistry.cpp:2280 +#: ../src/selection-chemistry.cpp:2328 msgid "Move horizontally by pixels" msgstr "Færa lárétt um mynddíla" -#: ../src/selection-chemistry.cpp:2484 +#: ../src/selection-chemistry.cpp:2532 msgid "The selection has no applied path effect." msgstr "" -#: ../src/selection-chemistry.cpp:2574 ../src/ui/dialog/clonetiler.cpp:2061 +#: ../src/selection-chemistry.cpp:2620 ../src/ui/dialog/clonetiler.cpp:2060 msgid "Select an object to clone." msgstr "Veldu hlut sem á að klóna." -#: ../src/selection-chemistry.cpp:2609 +#: ../src/selection-chemistry.cpp:2655 msgctxt "Action" msgid "Clone" msgstr "Klóna" -#: ../src/selection-chemistry.cpp:2618 +#: ../src/selection-chemistry.cpp:2664 msgid "Select clones to relink." msgstr "Veldu klóna sem á að endurtengja." -#: ../src/selection-chemistry.cpp:2626 +#: ../src/selection-chemistry.cpp:2672 msgid "Copy an object to clipboard to relink clones to." msgstr "" -#: ../src/selection-chemistry.cpp:2648 +#: ../src/selection-chemistry.cpp:2694 msgid "No clones to relink in the selection." msgstr "Engir klónar í valinu til að endurtengja." -#: ../src/selection-chemistry.cpp:2651 +#: ../src/selection-chemistry.cpp:2697 msgid "Relink clone" msgstr "Endurtengja klóna" -#: ../src/selection-chemistry.cpp:2660 ../src/selection-chemistry.cpp:2746 +#: ../src/selection-chemistry.cpp:2706 ../src/selection-chemistry.cpp:2792 msgid "Select clones to unlink." msgstr "Veldu klóna sem á að aftengja." -#: ../src/selection-chemistry.cpp:2733 ../src/selection-chemistry.cpp:2764 +#: ../src/selection-chemistry.cpp:2779 ../src/selection-chemistry.cpp:2810 msgid "No clones to unlink in the selection." msgstr "Engir klónar í valinu til að aftengja." -#: ../src/selection-chemistry.cpp:2738 +#: ../src/selection-chemistry.cpp:2784 msgid "Unlink clone" msgstr "Aftengja klóna" -#: ../src/selection-chemistry.cpp:2768 +#: ../src/selection-chemistry.cpp:2814 msgid "Unlink clone recursively" msgstr "Aftengja alla klóna" -#: ../src/selection-chemistry.cpp:2778 +#: ../src/selection-chemistry.cpp:2824 msgid "" "Select a clone to go to its original. Select a linked offset " "to go to its source. Select a text on path to go to the path. Select " "a flowed text to go to its frame." msgstr "" -#: ../src/selection-chemistry.cpp:2831 +#: ../src/selection-chemistry.cpp:2877 msgid "" "Cannot find the object to select (orphaned clone, offset, textpath, " "flowed text?)" msgstr "" -#: ../src/selection-chemistry.cpp:2838 +#: ../src/selection-chemistry.cpp:2884 msgid "" "The object you're trying to select is not visible (it is in <" "defs>)" msgstr "" -#: ../src/selection-chemistry.cpp:2924 +#: ../src/selection-chemistry.cpp:2970 msgid "Select path(s) to fill." msgstr "Veldu feril/ferla til að fylla." -#: ../src/selection-chemistry.cpp:2941 +#: ../src/selection-chemistry.cpp:2987 msgid "Select object(s) to convert to marker." msgstr "Veldu hluti sem á að umbreyta í línumerki." -#: ../src/selection-chemistry.cpp:3013 +#: ../src/selection-chemistry.cpp:3059 msgid "Objects to marker" msgstr "Hluti sem merkipunkt" -#: ../src/selection-chemistry.cpp:3036 +#: ../src/selection-chemistry.cpp:3082 msgid "Select object(s) to convert to guides." msgstr "Veldu hluti sem á að umbreyta í stoðlínur." -#: ../src/selection-chemistry.cpp:3057 +#: ../src/selection-chemistry.cpp:3103 msgid "Objects to guides" msgstr "Hlutir sem stoðlínur" -#: ../src/selection-chemistry.cpp:3089 +#: ../src/selection-chemistry.cpp:3135 msgid "Select objects to convert to symbol." msgstr "Veldu hlut sem á að umbreyta í tákn." -#: ../src/selection-chemistry.cpp:3190 +#: ../src/selection-chemistry.cpp:3239 msgid "Group to symbol" msgstr "Hóp sem tákn" -#: ../src/selection-chemistry.cpp:3204 +#: ../src/selection-chemistry.cpp:3253 msgid "Select a symbol to extract objects from." msgstr "" -#: ../src/selection-chemistry.cpp:3214 +#: ../src/selection-chemistry.cpp:3263 msgid "Select only one symbol in Symbol dialog to convert to group." msgstr "" -#: ../src/selection-chemistry.cpp:3270 +#: ../src/selection-chemistry.cpp:3319 msgid "Group from symbol" msgstr "Hóp úr tákni" -#: ../src/selection-chemistry.cpp:3285 +#: ../src/selection-chemistry.cpp:3334 msgid "Select object(s) to convert to pattern." msgstr "Veldu hluti sem á að umbreyta í mynstur." -#: ../src/selection-chemistry.cpp:3381 +#: ../src/selection-chemistry.cpp:3430 msgid "Objects to pattern" msgstr "Hlutir sem mynstur" -#: ../src/selection-chemistry.cpp:3393 +#: ../src/selection-chemistry.cpp:3442 msgid "Select an object with pattern fill to extract objects from." msgstr "" -#: ../src/selection-chemistry.cpp:3453 +#: ../src/selection-chemistry.cpp:3502 msgid "No pattern fills in the selection." msgstr "Engar mynsturfyllingar í myndvalinu." -#: ../src/selection-chemistry.cpp:3456 +#: ../src/selection-chemistry.cpp:3505 msgid "Pattern to objects" msgstr "Mynstur sem hlut" -#: ../src/selection-chemistry.cpp:3538 +#: ../src/selection-chemistry.cpp:3587 msgid "Select object(s) to make a bitmap copy." msgstr "Veldu hluti sem á að gera afrit af sem bitamynd." -#: ../src/selection-chemistry.cpp:3542 +#: ../src/selection-chemistry.cpp:3591 msgid "Rendering bitmap..." msgstr "Myndgeri bitamynd..." -#: ../src/selection-chemistry.cpp:3729 +#: ../src/selection-chemistry.cpp:3778 msgid "Create bitmap" msgstr "Búa til bitamynd" -#: ../src/selection-chemistry.cpp:3751 ../src/selection-chemistry.cpp:3861 +#: ../src/selection-chemistry.cpp:3800 ../src/selection-chemistry.cpp:3910 msgid "Select object(s) to create clippath or mask from." msgstr "" "Veldu hluti þar sem á að búa til afmörkunarferlil eða laghulu úr." -#: ../src/selection-chemistry.cpp:3837 ../src/ui/dialog/objects.cpp:1909 +#: ../src/selection-chemistry.cpp:3886 ../src/ui/dialog/objects.cpp:1948 msgid "Create Clip Group" msgstr "Búa til afmarkandi hóp" -#: ../src/selection-chemistry.cpp:3865 +#: ../src/selection-chemistry.cpp:3914 msgid "Select mask object and object(s) to apply clippath or mask to." msgstr "" -#: ../src/selection-chemistry.cpp:4008 +#: ../src/selection-chemistry.cpp:4058 msgid "Set clipping path" msgstr "Setja afmörkunarferil" -#: ../src/selection-chemistry.cpp:4010 +#: ../src/selection-chemistry.cpp:4060 msgid "Set mask" msgstr "Setja hulu" -#: ../src/selection-chemistry.cpp:4022 +#: ../src/selection-chemistry.cpp:4072 msgid "Select object(s) to remove clippath or mask from." msgstr "Veldu hluti sem á að fjarlægja afmörkunarferla eða laghulur af." -#: ../src/selection-chemistry.cpp:4139 +#: ../src/selection-chemistry.cpp:4189 msgid "Release clipping path" msgstr "Sleppa afmörkunarferli" -#: ../src/selection-chemistry.cpp:4141 +#: ../src/selection-chemistry.cpp:4191 msgid "Release mask" msgstr "Sleppa hulu" -#: ../src/selection-chemistry.cpp:4157 +#: ../src/selection-chemistry.cpp:4207 msgid "Select object(s) to fit canvas to." msgstr "Veldu hluti sem á að aðlaga myndflöt að." #. Fit Page -#: ../src/selection-chemistry.cpp:4165 ../src/verbs.cpp:3056 +#: ../src/selection-chemistry.cpp:4215 ../src/verbs.cpp:3186 msgid "Fit Page to Selection" msgstr "Laga síðu að vali" -#: ../src/selection-chemistry.cpp:4198 ../src/verbs.cpp:3058 +#: ../src/selection-chemistry.cpp:4289 ../src/verbs.cpp:2689 +msgid "Swap fill and stroke of an object" +msgstr "Víxla fyllingu og útlínu hlutar" + +#: ../src/selection-chemistry.cpp:4317 ../src/verbs.cpp:3188 msgid "Fit Page to Drawing" msgstr "Laga síðu að teikningu" -#: ../src/selection-chemistry.cpp:4219 +#: ../src/selection-chemistry.cpp:4338 msgid "Fit Page to Selection or Drawing" msgstr "Laga síðu að vali eða teikningu" @@ -12702,8 +13160,8 @@ msgstr "Laga síðu að vali eða teikningu" msgid "root" msgstr "rót (root)" -#: ../src/selection-describer.cpp:131 ../src/widgets/ege-paint-def.cpp:66 -#: ../src/widgets/ege-paint-def.cpp:90 +#: ../src/selection-describer.cpp:131 ../src/widgets/ege-paint-def.cpp:64 +#: ../src/widgets/ege-paint-def.cpp:88 msgid "none" msgstr "ekkert" @@ -12819,92 +13277,95 @@ msgid "" "Shift also uses this center" msgstr "" -#: ../src/seltrans.cpp:481 ../src/ui/dialog/transformation.cpp:871 +#: ../src/seltrans.cpp:481 ../src/ui/dialog/transformation.cpp:873 msgid "Skew" msgstr "Skekkja" -#: ../src/seltrans.cpp:495 +#: ../src/seltrans.cpp:497 msgid "Set center" msgstr "Setja miðju" -#: ../src/seltrans.cpp:568 +#: ../src/seltrans.cpp:570 msgid "Stamp" msgstr "Stimpill" -#: ../src/seltrans.cpp:718 +#: ../src/seltrans.cpp:720 msgid "Reset center" msgstr "Frumstilla miðju" -#: ../src/seltrans.cpp:956 ../src/seltrans.cpp:1060 +#: ../src/seltrans.cpp:958 ../src/seltrans.cpp:1062 #, c-format msgid "Scale: %0.2f%% x %0.2f%%; with Ctrl to lock ratio" msgstr "" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1197 +#: ../src/seltrans.cpp:1199 #, c-format msgid "Skew: %0.2f°; with Ctrl to snap angle" msgstr "Skekkja: %0.2f°; með Ctrl til að þrepa horn" #. TRANSLATORS: don't modify the first ";" #. (it will NOT be displayed as ";" - only the second one will be) -#: ../src/seltrans.cpp:1273 +#: ../src/seltrans.cpp:1275 #, c-format msgid "Rotate: %0.2f°; with Ctrl to snap angle" msgstr "Snúa: %0.2f°; með Ctrl til að þrepa horn" -#: ../src/seltrans.cpp:1310 +#: ../src/seltrans.cpp:1312 #, c-format msgid "Move center to %s, %s" -msgstr "" +msgstr "Færa miðju til %s, %s" -#: ../src/seltrans.cpp:1456 +#: ../src/seltrans.cpp:1458 #, c-format msgid "" "Move by %s, %s; with Ctrl to restrict to horizontal/vertical; " "with Shift to disable snapping" msgstr "" -#: ../src/shortcuts.cpp:224 -#, c-format -msgid "Keyboard directory (%s) is unavailable." -msgstr "" - -#: ../src/shortcuts.cpp:335 ../src/ui/dialog/export.cpp:1289 -#: ../src/ui/dialog/export.cpp:1323 +#: ../src/shortcuts.cpp:397 ../src/ui/dialog/export.cpp:1296 +#: ../src/ui/dialog/export.cpp:1330 msgid "Select a filename for exporting" msgstr "Veldu skráarheiti til útflutnings" -#: ../src/shortcuts.cpp:368 +#: ../src/shortcuts.cpp:402 +msgid "Inkscape shortcuts (*.xml)" +msgstr "Inkscape flýtilyklar (*.xml)" + +#: ../src/shortcuts.cpp:431 msgid "Select a file to import" msgstr "Veldu skrá til að flytja inn" -#: ../src/sp-anchor.cpp:111 +#: ../src/sp-anchor.cpp:147 #, c-format msgid "to %s" msgstr "í %s" -#: ../src/sp-anchor.cpp:115 +#: ../src/sp-anchor.cpp:151 msgid "without URI" msgstr "án URI-slóðar" -#: ../src/sp-ellipse.cpp:354 -msgid "Segment" -msgstr "Hluti" +#: ../src/sp-ellipse.cpp:385 ../src/widgets/arc-toolbar.cpp:364 +msgid "Slice" +msgstr "Sneiða" + +#: ../src/sp-ellipse.cpp:388 ../src/widgets/arc-toolbar.cpp:378 +msgid "Chord" +msgstr "Strengur" -#: ../src/sp-ellipse.cpp:356 +#: ../src/sp-ellipse.cpp:391 msgid "Arc" msgstr "Bogi" #. Ellipse -#: ../src/sp-ellipse.cpp:359 ../src/sp-ellipse.cpp:366 -#: ../src/ui/dialog/inkscape-preferences.cpp:409 +#: ../src/sp-ellipse.cpp:395 ../src/sp-ellipse.cpp:402 +#: ../src/ui/dialog/inkscape-preferences.cpp:407 #: ../src/widgets/pencil-toolbar.cpp:176 msgid "Ellipse" msgstr "Sporbaugur" -#: ../src/sp-ellipse.cpp:363 +#: ../src/sp-ellipse.cpp:399 msgid "Circle" msgstr "Hringur" @@ -12930,7 +13391,7 @@ msgid "Linked Flowed Text" msgstr "Tengdur flæðitexti" #: ../src/sp-flowtext.cpp:287 ../src/sp-text.cpp:368 -#: ../src/ui/tools/text-tool.cpp:1552 +#: ../src/ui/tools/text-tool.cpp:1602 msgid " [truncated]" msgstr " [afskorið]" @@ -12945,7 +13406,7 @@ msgstr[1] "(%d stafir%s)" msgid "Create Guides Around the Page" msgstr "Búa til stoðlínur í kringum síðu" -#: ../src/sp-guide.cpp:271 ../src/verbs.cpp:2582 +#: ../src/sp-guide.cpp:271 ../src/verbs.cpp:2681 msgid "Delete All Guides" msgstr "Eyða öllum stoðlínum" @@ -12991,7 +13452,7 @@ msgstr "[gölluð tilvísun]: %s" msgid "%d × %d: %s" msgstr "%d × %d: %s" -#: ../src/sp-item-group.cpp:312 ../src/ui/dialog/objects.cpp:1902 +#: ../src/sp-item-group.cpp:312 ../src/ui/dialog/objects.cpp:1941 msgid "Group" msgstr "Hópur" @@ -13005,26 +13466,26 @@ msgstr "af %d hlut" msgid "of %d objects" msgstr "af %d hlutum" -#: ../src/sp-item.cpp:1026 ../src/verbs.cpp:207 +#: ../src/sp-item.cpp:1032 ../src/verbs.cpp:208 msgid "Object" msgstr "Hlutur" -#: ../src/sp-item.cpp:1038 +#: ../src/sp-item.cpp:1044 #, c-format msgid "%s; clipped" msgstr "%s; afmarkað" -#: ../src/sp-item.cpp:1044 +#: ../src/sp-item.cpp:1050 #, c-format msgid "%s; masked" msgstr "%s; hulið" -#: ../src/sp-item.cpp:1054 +#: ../src/sp-item.cpp:1060 #, c-format msgid "%s; filtered (%s)" msgstr "%s; síað (%s)" -#: ../src/sp-item.cpp:1056 +#: ../src/sp-item.cpp:1062 #, c-format msgid "%s; filtered" msgstr "%s; síað" @@ -13033,29 +13494,29 @@ msgstr "%s; síað" msgid "Line" msgstr "Lína" -#: ../src/sp-lpe-item.cpp:255 ../src/sp-lpe-item.cpp:707 +#: ../src/sp-lpe-item.cpp:296 ../src/sp-lpe-item.cpp:765 msgid "An exception occurred during execution of the Path Effect." msgstr "" -#: ../src/sp-offset.cpp:326 +#: ../src/sp-offset.cpp:329 msgid "Linked Offset" msgstr "Tengd hliðrun" -#: ../src/sp-offset.cpp:328 +#: ../src/sp-offset.cpp:331 msgid "Dynamic Offset" msgstr "Breytileg hliðrun" #. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign -#: ../src/sp-offset.cpp:334 +#: ../src/sp-offset.cpp:337 #, c-format msgid "%s by %f pt" msgstr "%s um %f pt" -#: ../src/sp-offset.cpp:335 +#: ../src/sp-offset.cpp:338 msgid "outset" msgstr "útfella" -#: ../src/sp-offset.cpp:335 +#: ../src/sp-offset.cpp:338 msgid "inset" msgstr "innfella" @@ -13087,13 +13548,13 @@ msgid "Polyline" msgstr "Fjöllína" #. Rectangle -#: ../src/sp-rect.cpp:194 ../src/ui/dialog/inkscape-preferences.cpp:399 +#: ../src/sp-rect.cpp:194 ../src/ui/dialog/inkscape-preferences.cpp:397 msgid "Rectangle" msgstr "Rétthyrningur" #. Spiral -#: ../src/sp-spiral.cpp:218 ../src/ui/dialog/inkscape-preferences.cpp:417 -#: ../share/extensions/gcodetools_area.inx.h:11 +#: ../src/sp-spiral.cpp:218 ../src/ui/dialog/inkscape-preferences.cpp:415 +#: ../share/extensions/gcodetools_area.inx.h:16 msgid "Spiral" msgstr "Spírall" @@ -13105,7 +13566,7 @@ msgid "with %3f turns" msgstr "með %3f beygjum" #. Star -#: ../src/sp-star.cpp:245 ../src/ui/dialog/inkscape-preferences.cpp:413 +#: ../src/sp-star.cpp:245 ../src/ui/dialog/inkscape-preferences.cpp:411 #: ../src/widgets/star-toolbar.cpp:467 msgid "Star" msgstr "Stjarna" @@ -13131,10 +13592,10 @@ msgstr "með %d hliðum" msgid "Conditional Group" msgstr "Skilyrtur hópur" -#: ../src/sp-text.cpp:349 ../src/verbs.cpp:341 +#: ../src/sp-text.cpp:349 ../src/verbs.cpp:342 #: ../share/extensions/lorem_ipsum.inx.h:8 -#: ../share/extensions/replace_font.inx.h:11 ../share/extensions/split.inx.h:10 -#: ../share/extensions/text_braille.inx.h:2 +#: ../share/extensions/replace_font.inx.h:11 +#: ../share/extensions/split.inx.h:10 ../share/extensions/text_braille.inx.h:2 #: ../share/extensions/text_extract.inx.h:14 #: ../share/extensions/text_flipcase.inx.h:2 #: ../share/extensions/text_lowercase.inx.h:2 @@ -13156,151 +13617,151 @@ msgstr "á ferli%s (%s, %s)" msgid "%s (%s, %s)" msgstr "%s (%s, %s)" -#: ../src/sp-tref.cpp:213 +#: ../src/sp-tref.cpp:215 msgid "Cloned Character Data" -msgstr "" +msgstr "Klónuð stafgögn" -#: ../src/sp-tref.cpp:229 +#: ../src/sp-tref.cpp:231 msgid " from " msgstr " frá " -#: ../src/sp-tref.cpp:235 ../src/sp-use.cpp:270 +#: ../src/sp-tref.cpp:237 ../src/sp-use.cpp:272 msgid "[orphaned]" msgstr "[munaðarlaust]" #: ../src/sp-tspan.cpp:215 msgid "Text Span" -msgstr "" +msgstr "Spönnun texta" -#: ../src/sp-use.cpp:233 +#: ../src/sp-use.cpp:235 msgid "Symbol" msgstr "Tákn" -#: ../src/sp-use.cpp:235 +#: ../src/sp-use.cpp:237 msgid "Clone" msgstr "Klón" -#: ../src/sp-use.cpp:243 ../src/sp-use.cpp:245 ../src/sp-use.cpp:247 +#: ../src/sp-use.cpp:245 ../src/sp-use.cpp:247 ../src/sp-use.cpp:249 #, c-format msgid "called %s" msgstr "kallað %s" -#: ../src/sp-use.cpp:247 +#: ../src/sp-use.cpp:249 msgid "Unnamed Symbol" msgstr "Ónefnt tákn" #. TRANSLATORS: Used for statusbar description for long chains: #. * "Clone of: Clone of: ... in Layer 1". -#: ../src/sp-use.cpp:256 +#: ../src/sp-use.cpp:258 msgid "..." msgstr "..." -#: ../src/sp-use.cpp:265 +#: ../src/sp-use.cpp:267 #, c-format msgid "of: %s" msgstr "af: %s" -#: ../src/splivarot.cpp:58 +#: ../src/splivarot.cpp:59 msgid "Union" msgstr "Bræða saman" -#: ../src/splivarot.cpp:65 +#: ../src/splivarot.cpp:66 msgid "Intersection" msgstr "Skörun" -#: ../src/splivarot.cpp:86 +#: ../src/splivarot.cpp:87 msgid "Division" msgstr "Uppskipting" -#: ../src/splivarot.cpp:93 +#: ../src/splivarot.cpp:94 msgid "Cut path" msgstr "Klippa feril" -#: ../src/splivarot.cpp:317 +#: ../src/splivarot.cpp:318 msgid "Select at least 1 path to perform a boolean union." msgstr "" -#: ../src/splivarot.cpp:320 +#: ../src/splivarot.cpp:321 msgid "Select at least 2 paths to perform a boolean operation." msgstr "" -#: ../src/splivarot.cpp:323 +#: ../src/splivarot.cpp:324 msgid "" "One of the objects is not a path, cannot perform boolean operation." msgstr "" -#: ../src/splivarot.cpp:326 +#: ../src/splivarot.cpp:327 msgid "" "Unable to determine the z-order of the objects selected for " "difference, XOR, division, or path cut." msgstr "" -#: ../src/splivarot.cpp:1644 +#: ../src/splivarot.cpp:1663 msgid "Select stroked path(s) to convert stroke to path." msgstr "" -#: ../src/splivarot.cpp:1660 +#: ../src/splivarot.cpp:1679 msgid "Convert stroke to path" msgstr "Umbreyta útlínu í feril" #. TRANSLATORS: "to outline" means "to convert stroke to path" -#: ../src/splivarot.cpp:1663 +#: ../src/splivarot.cpp:1682 msgid "No stroked paths in the selection." msgstr "" -#: ../src/splivarot.cpp:1734 +#: ../src/splivarot.cpp:1753 msgid "Selected object is not a path, cannot inset/outset." -msgstr "" +msgstr "Valinn hlutur er ekki ferill, er ekki hægt að innfella/útfella." -#: ../src/splivarot.cpp:1825 ../src/splivarot.cpp:1892 +#: ../src/splivarot.cpp:1844 ../src/splivarot.cpp:1911 msgid "Create linked offset" msgstr "Búa til tengt hliðrað afrit" -#: ../src/splivarot.cpp:1826 ../src/splivarot.cpp:1893 +#: ../src/splivarot.cpp:1845 ../src/splivarot.cpp:1912 msgid "Create dynamic offset" msgstr "Búa til breytilega hliðrun" -#: ../src/splivarot.cpp:1918 +#: ../src/splivarot.cpp:1937 msgid "Select path(s) to inset/outset." -msgstr "" +msgstr "Veldu feril/ferla til að innfella/útfella." -#: ../src/splivarot.cpp:2114 +#: ../src/splivarot.cpp:2122 msgid "Outset path" msgstr "Útfella feril" -#: ../src/splivarot.cpp:2114 +#: ../src/splivarot.cpp:2122 msgid "Inset path" msgstr "Innfella feril" -#: ../src/splivarot.cpp:2116 +#: ../src/splivarot.cpp:2124 msgid "No paths to inset/outset in the selection." -msgstr "" +msgstr "Engir ferlar í valinu til að innfella/útfella." -#: ../src/splivarot.cpp:2278 +#: ../src/splivarot.cpp:2286 msgid "Simplifying paths (separately):" -msgstr "" +msgstr "Einföldun ferla (aðskilinna):" -#: ../src/splivarot.cpp:2280 +#: ../src/splivarot.cpp:2288 msgid "Simplifying paths:" msgstr "Einföldun ferla:" -#: ../src/splivarot.cpp:2317 +#: ../src/splivarot.cpp:2325 #, c-format msgid "%s %d of %d paths simplified..." -msgstr "" +msgstr "%s %d af %d ferlum einfaldaðir..." -#: ../src/splivarot.cpp:2330 +#: ../src/splivarot.cpp:2338 #, c-format msgid "%d paths simplified." -msgstr "" +msgstr "%d ferlar einfaldaðir." -#: ../src/splivarot.cpp:2344 +#: ../src/splivarot.cpp:2352 msgid "Select path(s) to simplify." -msgstr "" +msgstr "Veldu feril/ferla til að einfalda." -#: ../src/splivarot.cpp:2360 +#: ../src/splivarot.cpp:2368 msgid "No paths to simplify in the selection." -msgstr "" +msgstr "Engir ferlar í valinu til að einfalda." #: ../src/text-chemistry.cpp:90 msgid "Select a text and a path to put text on path." @@ -13325,19 +13786,19 @@ msgstr "" "Flæðitextinn verður að vera sýnilegur svo hægt sé að setja hann á " "feril." -#: ../src/text-chemistry.cpp:181 ../src/verbs.cpp:2607 +#: ../src/text-chemistry.cpp:181 ../src/verbs.cpp:2716 msgid "Put text on path" msgstr "Setja texta á feril" #: ../src/text-chemistry.cpp:193 msgid "Select a text on path to remove it from path." -msgstr "" +msgstr "Veldu texta á ferli til að fjarlægja hann af ferlinum." #: ../src/text-chemistry.cpp:212 msgid "No texts-on-paths in the selection." -msgstr "" +msgstr "Engir textar-á-ferli í valinu." -#: ../src/text-chemistry.cpp:215 ../src/verbs.cpp:2609 +#: ../src/text-chemistry.cpp:215 ../src/verbs.cpp:2718 msgid "Remove text from path" msgstr "Fjarlægja texta af ferli" @@ -13395,8 +13856,8 @@ msgstr "Línuteiknun: %1. %2 hnútar" #: ../src/trace/trace.cpp:59 ../src/trace/trace.cpp:124 #: ../src/trace/trace.cpp:132 ../src/trace/trace.cpp:225 -#: ../src/ui/dialog/pixelartdialog.cpp:364 -#: ../src/ui/dialog/pixelartdialog.cpp:396 +#: ../src/ui/dialog/pixelartdialog.cpp:363 +#: ../src/ui/dialog/pixelartdialog.cpp:395 msgid "Select an image to trace" msgstr "Veldu mynd til að draga línur eftir" @@ -13439,64 +13900,251 @@ msgid "Trace: Done. %ld nodes created" msgstr "Línuteiknun: Lokið. Gerði %ld hnúta" #. check whether something is selected -#: ../src/ui/clipboard.cpp:249 +#: ../src/ui/clipboard.cpp:258 msgid "Nothing was copied." msgstr "Ekkert var afritað." -#: ../src/ui/clipboard.cpp:380 ../src/ui/clipboard.cpp:595 -#: ../src/ui/clipboard.cpp:624 +#: ../src/ui/clipboard.cpp:389 ../src/ui/clipboard.cpp:604 +#: ../src/ui/clipboard.cpp:633 msgid "Nothing on the clipboard." msgstr "Ekkert á klippispjaldi." -#: ../src/ui/clipboard.cpp:437 +#: ../src/ui/clipboard.cpp:446 msgid "Select object(s) to paste style to." msgstr "Veldu hluti sem á að líma stíla á." -#: ../src/ui/clipboard.cpp:448 ../src/ui/clipboard.cpp:465 +#: ../src/ui/clipboard.cpp:457 ../src/ui/clipboard.cpp:474 msgid "No style on the clipboard." msgstr "Enginn stíll á klippispjaldi." -#: ../src/ui/clipboard.cpp:491 +#: ../src/ui/clipboard.cpp:500 msgid "Select object(s) to paste size to." msgstr "Veldu hluti sem á að líma stærð á." -#: ../src/ui/clipboard.cpp:499 +#: ../src/ui/clipboard.cpp:508 msgid "No size on the clipboard." msgstr "Engin stærð á klippispjaldi." -#: ../src/ui/clipboard.cpp:556 +#: ../src/ui/clipboard.cpp:565 msgid "Select object(s) to paste live path effect to." msgstr "" #. no_effect: -#: ../src/ui/clipboard.cpp:582 +#: ../src/ui/clipboard.cpp:591 msgid "No effect on the clipboard." msgstr "Engin brella á klippispjaldi." -#: ../src/ui/clipboard.cpp:601 ../src/ui/clipboard.cpp:638 +#: ../src/ui/clipboard.cpp:610 ../src/ui/clipboard.cpp:647 msgid "Clipboard does not contain a path." msgstr "Klippispjaldið inniheldur ekki nothæfan feril." +#: ../src/ui/contextmenu.cpp:58 +msgid "Go to parent" +msgstr "Fara í forvera" + +#: ../src/ui/contextmenu.cpp:96 +msgid "Hide selected objects" +msgstr "Fela valda hluti" + +#. insert(*mi,positionOfLastDialog++); +#: ../src/ui/contextmenu.cpp:104 +msgid "Unhide objects below" +msgstr "Birta hluti fyrir neðan" + +#. insert(*mi,positionOfLastDialog++); +#: ../src/ui/contextmenu.cpp:112 +msgid "Lock selected objects" +msgstr "Læsa völdum hlutum" + +#. insert(*mi,positionOfLastDialog++); +#: ../src/ui/contextmenu.cpp:120 +msgid "Unlock objects below" +msgstr "Aflæsa hlutum fyrir neðan" + +#. TRANSLATORS: #%1 is the id of the group e.g. , not a number. +#: ../src/ui/contextmenu.cpp:144 +msgid "Enter group #%1" +msgstr "Fara inn í hóp #%1" + +#. Pop selection out of group +#: ../src/ui/contextmenu.cpp:158 +msgid "_Pop selection out of group" +msgstr "_Henda völdu út úr hóp" + +#. Item dialog +#: ../src/ui/contextmenu.cpp:323 ../src/verbs.cpp:3118 +msgid "_Object Properties..." +msgstr "_Eiginleikar hlutar..." + +#: ../src/ui/contextmenu.cpp:332 +msgid "_Select This" +msgstr "_Velja þetta" + +#: ../src/ui/contextmenu.cpp:343 +msgid "Select Same" +msgstr "Velja sama" + +#. Select same fill and stroke +#: ../src/ui/contextmenu.cpp:353 +msgid "Fill and Stroke" +msgstr "Fylling og útlína" + +#. Select same fill color +#: ../src/ui/contextmenu.cpp:360 +msgid "Fill Color" +msgstr "Fyllilitur" + +#. Select same stroke color +#: ../src/ui/contextmenu.cpp:367 +msgid "Stroke Color" +msgstr "Útlínulitur" + +#. Select same stroke style +#: ../src/ui/contextmenu.cpp:374 +msgid "Stroke Style" +msgstr "Stíll útlínu" + +#. Select same stroke style +#: ../src/ui/contextmenu.cpp:381 +msgid "Object type" +msgstr "Tegund hlutar" + +#. Move to layer +#: ../src/ui/contextmenu.cpp:388 +msgid "_Move to layer ..." +msgstr "_Flytja á lag ..." + +#. Create link +#: ../src/ui/contextmenu.cpp:398 +msgid "Create _Link" +msgstr "Búa til ten_gil" + +#. Set mask +#: ../src/ui/contextmenu.cpp:421 ../src/ui/dialog/objects.cpp:1956 +msgid "Set Mask" +msgstr "Setja hulu" + +#. Release mask +#: ../src/ui/contextmenu.cpp:432 +msgid "Release Mask" +msgstr "Sleppa hulu" + +#. SSet Clip Group +#: ../src/ui/contextmenu.cpp:443 +msgid "Create Clip G_roup" +msgstr "Búa til afma_rkandi hóp" + +#. Set Clip +#: ../src/ui/contextmenu.cpp:450 +msgid "Set Cl_ip" +msgstr "Set_ja afmörkun" + +#. Release Clip +#: ../src/ui/contextmenu.cpp:461 +msgid "Release C_lip" +msgstr "S_leppa afmörkun" + +#. Group +#: ../src/ui/contextmenu.cpp:472 ../src/verbs.cpp:2708 +msgid "_Group" +msgstr "_Hópa" + +#: ../src/ui/contextmenu.cpp:543 +msgid "Create link" +msgstr "Búa til tengil" + +#. Ungroup +#: ../src/ui/contextmenu.cpp:578 ../src/verbs.cpp:2710 +msgid "_Ungroup" +msgstr "Skipta _upp hóp" + +#. Link dialog +#: ../src/ui/contextmenu.cpp:608 +msgid "Link _Properties..." +msgstr "_Eiginleikar tengils..." + +#. Select item +#: ../src/ui/contextmenu.cpp:614 +msgid "_Follow Link" +msgstr "_Fylgja tengli" + +#. Reset transformations +#: ../src/ui/contextmenu.cpp:620 +msgid "_Remove Link" +msgstr "Fja_rlægja tengil" + +#: ../src/ui/contextmenu.cpp:651 +msgid "Remove link" +msgstr "Fjarlægja tengil" + +#. Image properties +#: ../src/ui/contextmenu.cpp:661 +msgid "Image _Properties..." +msgstr "E_iginleikar myndar..." + +#. Edit externally +#: ../src/ui/contextmenu.cpp:667 +msgid "Edit Externally..." +msgstr "Breyta með öðru forriti..." + +#. Trace Bitmap +#. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) +#: ../src/ui/contextmenu.cpp:676 ../src/verbs.cpp:2789 +msgid "_Trace Bitmap..." +msgstr "Línu_teikna bitamynd..." + +#. Trace Pixel Art +#: ../src/ui/contextmenu.cpp:685 +msgid "Trace Pixel Art" +msgstr "Línuteikna Pixel Art" + +#: ../src/ui/contextmenu.cpp:695 +msgctxt "Context menu" +msgid "Embed Image" +msgstr "Ívefja mynd" + +#: ../src/ui/contextmenu.cpp:706 +msgctxt "Context menu" +msgid "Extract Image..." +msgstr "Ná í mynd..." + +#. Item dialog +#. Fill and Stroke dialog +#: ../src/ui/contextmenu.cpp:850 ../src/ui/contextmenu.cpp:870 +#: ../src/verbs.cpp:3081 +msgid "_Fill and Stroke..." +msgstr "_Fylling og útlína..." + +#. Edit Text dialog +#: ../src/ui/contextmenu.cpp:876 ../src/verbs.cpp:3100 +msgid "_Text and Font..." +msgstr "_Texti og letur..." + +#. Spellcheck dialog +#: ../src/ui/contextmenu.cpp:882 ../src/verbs.cpp:3108 +msgid "Check Spellin_g..." +msgstr "_Yfirfara stafsetningu..." + #. * #. * Constructor #. -#: ../src/ui/dialog/aboutbox.cpp:80 +#: ../src/ui/dialog/aboutbox.cpp:77 msgid "About Inkscape" msgstr "Um Inkscape" -#: ../src/ui/dialog/aboutbox.cpp:91 +#: ../src/ui/dialog/aboutbox.cpp:88 msgid "_Splash" msgstr "_Upphaf" -#: ../src/ui/dialog/aboutbox.cpp:95 +#: ../src/ui/dialog/aboutbox.cpp:92 msgid "_Authors" msgstr "_Höfundar" -#: ../src/ui/dialog/aboutbox.cpp:97 +#: ../src/ui/dialog/aboutbox.cpp:94 msgid "_Translators" msgstr "Þýð_endur" -#: ../src/ui/dialog/aboutbox.cpp:99 +#: ../src/ui/dialog/aboutbox.cpp:96 msgid "_License" msgstr "_Notkunarleyfi" @@ -13504,20 +14152,17 @@ msgstr "_Notkunarleyfi" #. the `screens' directory. Thus the translation of "about.svg" should be #. the filename of its translated version, e.g. about.zh.svg for Chinese. #. -#. N.B. about.svg changes once per release. (We should probably rename -#. the original to about-0.40.svg etc. as soon as we have a translation. -#. If we do so, then add an item to release-checklist saying that the -#. string here should be changed.) +#. Please don't translate the filename unless the translated picture exists. #. FIXME? INKSCAPE_SCREENSDIR and "about.svg" are in UTF-8, not the #. native filename encoding... and the filename passed to sp_document_new #. should be in UTF-*8.. -#: ../src/ui/dialog/aboutbox.cpp:167 +#: ../src/ui/dialog/aboutbox.cpp:188 msgid "about.svg" msgstr "about.svg" #. TRANSLATORS: Put here your name (and other national contributors') #. one per line in the form of: name surname (email). Use \n for newline. -#: ../src/ui/dialog/aboutbox.cpp:434 +#: ../src/ui/dialog/aboutbox.cpp:458 msgid "translator-credits" msgstr "Sveinn í Felli (sv1@fellsnet.is), 2014-2015" @@ -13587,7 +14232,7 @@ msgid "Rearrange" msgstr "Endurraða" #: ../src/ui/dialog/align-and-distribute.cpp:919 -#: ../src/widgets/toolbox.cpp:1767 +#: ../src/widgets/toolbox.cpp:1291 msgid "Nodes" msgstr "Hnútar" @@ -13601,53 +14246,53 @@ msgid "_Treat selection as group: " msgstr "_Meðhöndla valið sem hóp: " #. Align -#: ../src/ui/dialog/align-and-distribute.cpp:933 ../src/verbs.cpp:3088 -#: ../src/verbs.cpp:3089 +#: ../src/ui/dialog/align-and-distribute.cpp:933 ../src/verbs.cpp:3218 +#: ../src/verbs.cpp:3219 msgid "Align right edges of objects to the left edge of the anchor" msgstr "Jafna hægri jaðra hluta við vinstri jaðar festipunktsins" -#: ../src/ui/dialog/align-and-distribute.cpp:936 ../src/verbs.cpp:3090 -#: ../src/verbs.cpp:3091 +#: ../src/ui/dialog/align-and-distribute.cpp:936 ../src/verbs.cpp:3220 +#: ../src/verbs.cpp:3221 msgid "Align left edges" msgstr "Jafna vinstri jaðra" -#: ../src/ui/dialog/align-and-distribute.cpp:939 ../src/verbs.cpp:3092 -#: ../src/verbs.cpp:3093 +#: ../src/ui/dialog/align-and-distribute.cpp:939 ../src/verbs.cpp:3222 +#: ../src/verbs.cpp:3223 msgid "Center on vertical axis" msgstr "Miðja á lóðréttum ás" -#: ../src/ui/dialog/align-and-distribute.cpp:942 ../src/verbs.cpp:3094 -#: ../src/verbs.cpp:3095 +#: ../src/ui/dialog/align-and-distribute.cpp:942 ../src/verbs.cpp:3224 +#: ../src/verbs.cpp:3225 msgid "Align right sides" msgstr "Jafna hægri jaðra" -#: ../src/ui/dialog/align-and-distribute.cpp:945 ../src/verbs.cpp:3096 -#: ../src/verbs.cpp:3097 +#: ../src/ui/dialog/align-and-distribute.cpp:945 ../src/verbs.cpp:3226 +#: ../src/verbs.cpp:3227 msgid "Align left edges of objects to the right edge of the anchor" msgstr "Jafna vinstri jaðra hluta við hægri jaðar festipunktsins" -#: ../src/ui/dialog/align-and-distribute.cpp:948 ../src/verbs.cpp:3098 -#: ../src/verbs.cpp:3099 +#: ../src/ui/dialog/align-and-distribute.cpp:948 ../src/verbs.cpp:3228 +#: ../src/verbs.cpp:3229 msgid "Align bottom edges of objects to the top edge of the anchor" msgstr "Jafna neðri jaðra hluta við efri jaðar festipunktsins" -#: ../src/ui/dialog/align-and-distribute.cpp:951 ../src/verbs.cpp:3100 -#: ../src/verbs.cpp:3101 +#: ../src/ui/dialog/align-and-distribute.cpp:951 ../src/verbs.cpp:3230 +#: ../src/verbs.cpp:3231 msgid "Align top edges" msgstr "Jafna efri jaðra" -#: ../src/ui/dialog/align-and-distribute.cpp:954 ../src/verbs.cpp:3102 -#: ../src/verbs.cpp:3103 +#: ../src/ui/dialog/align-and-distribute.cpp:954 ../src/verbs.cpp:3232 +#: ../src/verbs.cpp:3233 msgid "Center on horizontal axis" msgstr "Miðja á láréttum ás" -#: ../src/ui/dialog/align-and-distribute.cpp:957 ../src/verbs.cpp:3104 -#: ../src/verbs.cpp:3105 +#: ../src/ui/dialog/align-and-distribute.cpp:957 ../src/verbs.cpp:3234 +#: ../src/verbs.cpp:3235 msgid "Align bottom edges" msgstr "Jafna neðri jaðra" -#: ../src/ui/dialog/align-and-distribute.cpp:960 ../src/verbs.cpp:3106 -#: ../src/verbs.cpp:3107 +#: ../src/ui/dialog/align-and-distribute.cpp:960 ../src/verbs.cpp:3236 +#: ../src/verbs.cpp:3237 msgid "Align top edges of objects to the bottom edge of the anchor" msgstr "Jafna efri jaðra hluta við neðri jaðar festipunktsins" @@ -13767,9 +14412,9 @@ msgid "Smallest object" msgstr "Minnsta hlutinn" #: ../src/ui/dialog/align-and-distribute.cpp:1059 -#: ../src/ui/dialog/document-properties.cpp:149 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1487 -#: ../src/widgets/desktop-widget.cpp:1929 +#: ../src/ui/dialog/document-properties.cpp:145 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1486 +#: ../src/widgets/desktop-widget.cpp:1984 #: ../share/extensions/empty_page.inx.h:1 #: ../share/extensions/voronoi2svg.inx.h:10 msgid "Page" @@ -13791,384 +14436,394 @@ msgstr "Lágmarksgildi" msgid "Max value" msgstr "Hámarksgildi" -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:31 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:30 #: ../src/ui/dialog/calligraphic-profile-rename.cpp:117 msgid "Edit profile" msgstr "Breyta sniði" -#: ../src/ui/dialog/calligraphic-profile-rename.cpp:39 +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:38 msgid "Profile name:" msgstr "Heiti sniðs:" +#: ../src/ui/dialog/calligraphic-profile-rename.cpp:54 +#: ../src/ui/dialog/guides.cpp:160 ../src/verbs.cpp:2627 +msgid "_Delete" +msgstr "_Eyða" + #: ../src/ui/dialog/calligraphic-profile-rename.cpp:59 -msgid "Save" -msgstr "Vista" +#: ../src/ui/dialog/export.cpp:1300 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1053 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1600 +#: ../src/ui/dialog/input.cpp:914 ../src/verbs.cpp:2565 +#: ../src/widgets/desktop-widget.cpp:1090 +msgid "_Save" +msgstr "_Vista" #: ../src/ui/dialog/calligraphic-profile-rename.cpp:113 msgid "Add profile" msgstr "Bæta við sniði" -#: ../src/ui/dialog/clonetiler.cpp:95 +#: ../src/ui/dialog/clonetiler.cpp:94 msgid "_Symmetry" msgstr "_Samhverfa" #. TRANSLATORS: "translation" means "shift" / "displacement" here. -#: ../src/ui/dialog/clonetiler.cpp:107 +#: ../src/ui/dialog/clonetiler.cpp:106 msgid "P1: simple translation" msgstr "P1: Einföld hliðrun" -#: ../src/ui/dialog/clonetiler.cpp:108 +#: ../src/ui/dialog/clonetiler.cpp:107 msgid "P2: 180° rotation" msgstr "P2: 180° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:109 +#: ../src/ui/dialog/clonetiler.cpp:108 msgid "PM: reflection" msgstr "PM: speglun" #. TRANSLATORS: "glide reflection" is a reflection and a translation combined. #. For more info, see http://mathforum.org/sum95/suzanne/symsusan.html -#: ../src/ui/dialog/clonetiler.cpp:112 +#: ../src/ui/dialog/clonetiler.cpp:111 msgid "PG: glide reflection" msgstr "PG: spegilhliðrun" -#: ../src/ui/dialog/clonetiler.cpp:113 +#: ../src/ui/dialog/clonetiler.cpp:112 msgid "CM: reflection + glide reflection" msgstr "CM: speglun + spegilhliðrun" -#: ../src/ui/dialog/clonetiler.cpp:114 +#: ../src/ui/dialog/clonetiler.cpp:113 msgid "PMM: reflection + reflection" msgstr "PMM: speglun + speglun" -#: ../src/ui/dialog/clonetiler.cpp:115 +#: ../src/ui/dialog/clonetiler.cpp:114 msgid "PMG: reflection + 180° rotation" msgstr "PMG: speglun + 180° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:116 +#: ../src/ui/dialog/clonetiler.cpp:115 msgid "PGG: glide reflection + 180° rotation" msgstr "PGG: spegilhliðrun + 180° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:117 +#: ../src/ui/dialog/clonetiler.cpp:116 msgid "CMM: reflection + reflection + 180° rotation" msgstr "CMM: speglun + speglun + 180° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:118 +#: ../src/ui/dialog/clonetiler.cpp:117 msgid "P4: 90° rotation" msgstr "P4: 90° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:119 +#: ../src/ui/dialog/clonetiler.cpp:118 msgid "P4M: 90° rotation + 45° reflection" msgstr "P4M: 90° snúningur + 45° speglun" -#: ../src/ui/dialog/clonetiler.cpp:120 +#: ../src/ui/dialog/clonetiler.cpp:119 msgid "P4G: 90° rotation + 90° reflection" msgstr "P4G: 90° snúningur + 90° speglun" -#: ../src/ui/dialog/clonetiler.cpp:121 +#: ../src/ui/dialog/clonetiler.cpp:120 msgid "P3: 120° rotation" msgstr "P3: 120° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:122 +#: ../src/ui/dialog/clonetiler.cpp:121 msgid "P31M: reflection + 120° rotation, dense" msgstr "P31M: speglun + 120° snúningur, þéttur" -#: ../src/ui/dialog/clonetiler.cpp:123 +#: ../src/ui/dialog/clonetiler.cpp:122 msgid "P3M1: reflection + 120° rotation, sparse" msgstr "P3M1: speglun + 120° snúningur, dreifður" -#: ../src/ui/dialog/clonetiler.cpp:124 +#: ../src/ui/dialog/clonetiler.cpp:123 msgid "P6: 60° rotation" msgstr "P6: 60° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:125 +#: ../src/ui/dialog/clonetiler.cpp:124 msgid "P6M: reflection + 60° rotation" msgstr "P6M: speglun + 60° snúningur" -#: ../src/ui/dialog/clonetiler.cpp:132 +#: ../src/ui/dialog/clonetiler.cpp:131 msgid "Select one of the 17 symmetry groups for the tiling" msgstr "Veldu einn af 17 samhverfuhópum fyrir tiglun" -#: ../src/ui/dialog/clonetiler.cpp:157 +#: ../src/ui/dialog/clonetiler.cpp:156 msgid "S_hift" msgstr "_Hliðra" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) horizontally by this amount -#: ../src/ui/dialog/clonetiler.cpp:167 +#: ../src/ui/dialog/clonetiler.cpp:166 #, no-c-format msgid "Shift X:" msgstr "X hliðrun:" -#: ../src/ui/dialog/clonetiler.cpp:175 +#: ../src/ui/dialog/clonetiler.cpp:174 #, no-c-format msgid "Horizontal shift per row (in % of tile width)" msgstr "Lárétt hliðrun á röð (í % af breidd flísar)" -#: ../src/ui/dialog/clonetiler.cpp:183 +#: ../src/ui/dialog/clonetiler.cpp:182 #, no-c-format msgid "Horizontal shift per column (in % of tile width)" msgstr "Lárétt hliðrun á dálk (í % af breidd flísar)" -#: ../src/ui/dialog/clonetiler.cpp:189 +#: ../src/ui/dialog/clonetiler.cpp:188 msgid "Randomize the horizontal shift by this percentage" msgstr "Slembin lárétt hliðrun um þessa prósentutölu" #. TRANSLATORS: "shift" means: the tiles will be shifted (offset) vertically by this amount -#: ../src/ui/dialog/clonetiler.cpp:199 +#: ../src/ui/dialog/clonetiler.cpp:198 #, no-c-format msgid "Shift Y:" msgstr "Y hliðrun:" -#: ../src/ui/dialog/clonetiler.cpp:207 +#: ../src/ui/dialog/clonetiler.cpp:206 #, no-c-format msgid "Vertical shift per row (in % of tile height)" msgstr "Lóðrétt hliðrun á röð (í % af hæð flísar)" -#: ../src/ui/dialog/clonetiler.cpp:215 +#: ../src/ui/dialog/clonetiler.cpp:214 #, no-c-format msgid "Vertical shift per column (in % of tile height)" msgstr "Lóðrétt hliðrun á dálk (í % af hæð flísar)" -#: ../src/ui/dialog/clonetiler.cpp:222 +#: ../src/ui/dialog/clonetiler.cpp:221 msgid "Randomize the vertical shift by this percentage" msgstr "Slembin lóðrétt hliðrun um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:230 ../src/ui/dialog/clonetiler.cpp:376 +#: ../src/ui/dialog/clonetiler.cpp:229 ../src/ui/dialog/clonetiler.cpp:375 msgid "Exponent:" msgstr "Veldisvísir:" -#: ../src/ui/dialog/clonetiler.cpp:237 +#: ../src/ui/dialog/clonetiler.cpp:236 msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "" "Hvort raðir eru með jafn miklu bili (1), eru samleitin (<1) eða ósamleitin " "(>1)" -#: ../src/ui/dialog/clonetiler.cpp:244 +#: ../src/ui/dialog/clonetiler.cpp:243 msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)" msgstr "" "Hvort dálkar eru með jafn miklu bili (1), eru samleitin (<1) eða ósamleitin " "(>1)" #. TRANSLATORS: "Alternate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:252 ../src/ui/dialog/clonetiler.cpp:416 -#: ../src/ui/dialog/clonetiler.cpp:492 ../src/ui/dialog/clonetiler.cpp:565 -#: ../src/ui/dialog/clonetiler.cpp:611 ../src/ui/dialog/clonetiler.cpp:734 +#: ../src/ui/dialog/clonetiler.cpp:251 ../src/ui/dialog/clonetiler.cpp:415 +#: ../src/ui/dialog/clonetiler.cpp:491 ../src/ui/dialog/clonetiler.cpp:564 +#: ../src/ui/dialog/clonetiler.cpp:610 ../src/ui/dialog/clonetiler.cpp:733 msgid "Alternate:" msgstr "Varaleið:" -#: ../src/ui/dialog/clonetiler.cpp:258 +#: ../src/ui/dialog/clonetiler.cpp:257 msgid "Alternate the sign of shifts for each row" msgstr "Víxla formerki hliðrunar fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:263 +#: ../src/ui/dialog/clonetiler.cpp:262 msgid "Alternate the sign of shifts for each column" msgstr "Víxla formerki hliðrunar fyrir hvern dálk" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:270 ../src/ui/dialog/clonetiler.cpp:434 -#: ../src/ui/dialog/clonetiler.cpp:510 +#: ../src/ui/dialog/clonetiler.cpp:269 ../src/ui/dialog/clonetiler.cpp:433 +#: ../src/ui/dialog/clonetiler.cpp:509 msgid "Cumulate:" msgstr "Taka saman:" -#: ../src/ui/dialog/clonetiler.cpp:276 +#: ../src/ui/dialog/clonetiler.cpp:275 msgid "Cumulate the shifts for each row" msgstr "Taka saman hliðranir fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:281 +#: ../src/ui/dialog/clonetiler.cpp:280 msgid "Cumulate the shifts for each column" msgstr "Taka saman hliðranir fyrir hvern dálk" #. TRANSLATORS: "Cumulate" is a verb here -#: ../src/ui/dialog/clonetiler.cpp:288 +#: ../src/ui/dialog/clonetiler.cpp:287 msgid "Exclude tile:" msgstr "Sleppa flís:" -#: ../src/ui/dialog/clonetiler.cpp:294 +#: ../src/ui/dialog/clonetiler.cpp:293 msgid "Exclude tile height in shift" msgstr "Sleppa hæð flísar í hliðrun" -#: ../src/ui/dialog/clonetiler.cpp:299 +#: ../src/ui/dialog/clonetiler.cpp:298 msgid "Exclude tile width in shift" msgstr "Sleppa breidd flísar í hliðrun" -#: ../src/ui/dialog/clonetiler.cpp:308 +#: ../src/ui/dialog/clonetiler.cpp:307 msgid "Sc_ale" msgstr "_Kvarða" -#: ../src/ui/dialog/clonetiler.cpp:316 +#: ../src/ui/dialog/clonetiler.cpp:315 msgid "Scale X:" msgstr "X kvarði:" -#: ../src/ui/dialog/clonetiler.cpp:324 +#: ../src/ui/dialog/clonetiler.cpp:323 #, no-c-format msgid "Horizontal scale per row (in % of tile width)" msgstr "Lárétt kvörðun á röð (í % af breidd flísar)" -#: ../src/ui/dialog/clonetiler.cpp:332 +#: ../src/ui/dialog/clonetiler.cpp:331 #, no-c-format msgid "Horizontal scale per column (in % of tile width)" msgstr "Lóðrétt kvörðun á dálk (í % af breidd flísar)" -#: ../src/ui/dialog/clonetiler.cpp:338 +#: ../src/ui/dialog/clonetiler.cpp:337 msgid "Randomize the horizontal scale by this percentage" msgstr "Slembin lárétt kvörðun um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:346 +#: ../src/ui/dialog/clonetiler.cpp:345 msgid "Scale Y:" msgstr "Y kvörðun:" -#: ../src/ui/dialog/clonetiler.cpp:354 +#: ../src/ui/dialog/clonetiler.cpp:353 #, no-c-format msgid "Vertical scale per row (in % of tile height)" msgstr "Lóðrétt kvörðun á röð (í % af hæð flísar)" -#: ../src/ui/dialog/clonetiler.cpp:362 +#: ../src/ui/dialog/clonetiler.cpp:361 #, no-c-format msgid "Vertical scale per column (in % of tile height)" msgstr "Lóðrétt kvörðun á dálki (í % af hæð flísar)" -#: ../src/ui/dialog/clonetiler.cpp:368 +#: ../src/ui/dialog/clonetiler.cpp:367 msgid "Randomize the vertical scale by this percentage" msgstr "Slembin lóðrétt kvörðun um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:382 +#: ../src/ui/dialog/clonetiler.cpp:381 msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "" "Hvort kvörðun raðar er einsleit (1), samleitin (<1) eða ósamleitin (>1)" -#: ../src/ui/dialog/clonetiler.cpp:388 +#: ../src/ui/dialog/clonetiler.cpp:387 msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)" msgstr "" "Hvort kvörðun dálks sé einsleit (1), samleitin (<1) eða ósamleitin (>1)" -#: ../src/ui/dialog/clonetiler.cpp:396 +#: ../src/ui/dialog/clonetiler.cpp:395 msgid "Base:" msgstr "Grunnur:" -#: ../src/ui/dialog/clonetiler.cpp:402 ../src/ui/dialog/clonetiler.cpp:408 +#: ../src/ui/dialog/clonetiler.cpp:401 ../src/ui/dialog/clonetiler.cpp:407 msgid "" "Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)" msgstr "" "Grunnur fyrir logra spírals: ekki notað (0), samleitið (<1), eða ósamleitið " "(>1)" -#: ../src/ui/dialog/clonetiler.cpp:422 +#: ../src/ui/dialog/clonetiler.cpp:421 msgid "Alternate the sign of scales for each row" msgstr "Víxla formerki kvörðunar í hverri röð" -#: ../src/ui/dialog/clonetiler.cpp:427 +#: ../src/ui/dialog/clonetiler.cpp:426 msgid "Alternate the sign of scales for each column" msgstr "Víxla formerki kvörðunar i hverjum dálki" -#: ../src/ui/dialog/clonetiler.cpp:440 +#: ../src/ui/dialog/clonetiler.cpp:439 msgid "Cumulate the scales for each row" msgstr "Safna saman kvörðum hverrar raðar" -#: ../src/ui/dialog/clonetiler.cpp:445 +#: ../src/ui/dialog/clonetiler.cpp:444 msgid "Cumulate the scales for each column" msgstr "Safna saman kvörðum hvers dálks" -#: ../src/ui/dialog/clonetiler.cpp:454 +#: ../src/ui/dialog/clonetiler.cpp:453 msgid "_Rotation" msgstr "_Snúningur" -#: ../src/ui/dialog/clonetiler.cpp:462 +#: ../src/ui/dialog/clonetiler.cpp:461 msgid "Angle:" msgstr "Horn:" -#: ../src/ui/dialog/clonetiler.cpp:470 +#: ../src/ui/dialog/clonetiler.cpp:469 #, no-c-format msgid "Rotate tiles by this angle for each row" msgstr "Snúa flísum um þetta horn fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:478 +#: ../src/ui/dialog/clonetiler.cpp:477 #, no-c-format msgid "Rotate tiles by this angle for each column" msgstr "Snúa flísum um þetta horn fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:484 +#: ../src/ui/dialog/clonetiler.cpp:483 msgid "Randomize the rotation angle by this percentage" msgstr "Slembið snúningshorn um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:498 +#: ../src/ui/dialog/clonetiler.cpp:497 msgid "Alternate the rotation direction for each row" msgstr "Víxla snúningsstefnu hverrar raðar" -#: ../src/ui/dialog/clonetiler.cpp:503 +#: ../src/ui/dialog/clonetiler.cpp:502 msgid "Alternate the rotation direction for each column" msgstr "Víxla snúningsstefnu hvers dálks" -#: ../src/ui/dialog/clonetiler.cpp:516 +#: ../src/ui/dialog/clonetiler.cpp:515 msgid "Cumulate the rotation for each row" msgstr "Safna saman snúningi fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:521 +#: ../src/ui/dialog/clonetiler.cpp:520 msgid "Cumulate the rotation for each column" msgstr "Safna saman snúningi fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:530 +#: ../src/ui/dialog/clonetiler.cpp:529 msgid "_Blur & opacity" msgstr "_Móðun og ógegnsæi" -#: ../src/ui/dialog/clonetiler.cpp:539 +#: ../src/ui/dialog/clonetiler.cpp:538 msgid "Blur:" msgstr "Móðun:" -#: ../src/ui/dialog/clonetiler.cpp:545 +#: ../src/ui/dialog/clonetiler.cpp:544 msgid "Blur tiles by this percentage for each row" msgstr "Afskerpa flísar um þessa prósentu fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:551 +#: ../src/ui/dialog/clonetiler.cpp:550 msgid "Blur tiles by this percentage for each column" msgstr "Afskerpa flísar um þessa prósentu fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:557 +#: ../src/ui/dialog/clonetiler.cpp:556 msgid "Randomize the tile blur by this percentage" msgstr "Slembin afskerping flísar um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:571 +#: ../src/ui/dialog/clonetiler.cpp:570 msgid "Alternate the sign of blur change for each row" msgstr "Víxla formerki afskerpingar fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:576 +#: ../src/ui/dialog/clonetiler.cpp:575 msgid "Alternate the sign of blur change for each column" msgstr "Víxla formerki afskerpingar fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:585 +#: ../src/ui/dialog/clonetiler.cpp:584 msgid "Opacity:" msgstr "Ógegnsæi:" -#: ../src/ui/dialog/clonetiler.cpp:591 +#: ../src/ui/dialog/clonetiler.cpp:590 msgid "Decrease tile opacity by this percentage for each row" msgstr "Minnka ógegnsæi flísar um þessa prósentu fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:597 +#: ../src/ui/dialog/clonetiler.cpp:596 msgid "Decrease tile opacity by this percentage for each column" msgstr "Minnka ógegnsæi flísar um þessa prósentu fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:603 +#: ../src/ui/dialog/clonetiler.cpp:602 msgid "Randomize the tile opacity by this percentage" msgstr "Slembið ógegnsæi flísar um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:617 +#: ../src/ui/dialog/clonetiler.cpp:616 msgid "Alternate the sign of opacity change for each row" msgstr "Víxla formerkjum ógegnsæis fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:622 +#: ../src/ui/dialog/clonetiler.cpp:621 msgid "Alternate the sign of opacity change for each column" msgstr "Víxla formerkjum ógegnsæis fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:630 +#: ../src/ui/dialog/clonetiler.cpp:629 msgid "Co_lor" msgstr "_Litur" -#: ../src/ui/dialog/clonetiler.cpp:636 +#: ../src/ui/dialog/clonetiler.cpp:635 msgid "Initial color: " msgstr "Upphafslitur: " -#: ../src/ui/dialog/clonetiler.cpp:640 +#: ../src/ui/dialog/clonetiler.cpp:639 msgid "Initial color of tiled clones" msgstr "Upphafslitur tiglaðra klóna" -#: ../src/ui/dialog/clonetiler.cpp:640 +#: ../src/ui/dialog/clonetiler.cpp:639 msgid "" "Initial color for clones (works only if the original has unset fill or " "stroke or on spray tool in copy mode)" @@ -14176,71 +14831,71 @@ msgstr "" "Upphafslitur klóna (virkar bara ef frumritið hefur ekki fyllingu eða " "útlínur, eða með sprautunaráhaldi í afritunarham)" -#: ../src/ui/dialog/clonetiler.cpp:655 +#: ../src/ui/dialog/clonetiler.cpp:654 msgid "H:" msgstr "H:" -#: ../src/ui/dialog/clonetiler.cpp:661 +#: ../src/ui/dialog/clonetiler.cpp:660 msgid "Change the tile hue by this percentage for each row" msgstr "Breyta litblæ flísar um þessa prósentu fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:667 +#: ../src/ui/dialog/clonetiler.cpp:666 msgid "Change the tile hue by this percentage for each column" msgstr "Breyta litblæ flísar um þessa prósentu fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:673 +#: ../src/ui/dialog/clonetiler.cpp:672 msgid "Randomize the tile hue by this percentage" msgstr "Slembinn litblær flísar um þessa prósentu" -#: ../src/ui/dialog/clonetiler.cpp:682 +#: ../src/ui/dialog/clonetiler.cpp:681 msgid "S:" msgstr "S:" -#: ../src/ui/dialog/clonetiler.cpp:688 +#: ../src/ui/dialog/clonetiler.cpp:687 msgid "Change the color saturation by this percentage for each row" msgstr "Breyta mettun litarins um þessa prósentu fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:694 +#: ../src/ui/dialog/clonetiler.cpp:693 msgid "Change the color saturation by this percentage for each column" msgstr "Breyta mettun litarins um þessa prósentu fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:700 +#: ../src/ui/dialog/clonetiler.cpp:699 msgid "Randomize the color saturation by this percentage" msgstr "Slembin litmettun um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:708 +#: ../src/ui/dialog/clonetiler.cpp:707 msgid "L:" msgstr "L:" -#: ../src/ui/dialog/clonetiler.cpp:714 +#: ../src/ui/dialog/clonetiler.cpp:713 msgid "Change the color lightness by this percentage for each row" msgstr "Breyta ljósleika litarins um þessa prósentu fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:720 +#: ../src/ui/dialog/clonetiler.cpp:719 msgid "Change the color lightness by this percentage for each column" msgstr "Breyta ljósleika litarins um þessa prósentu fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:726 +#: ../src/ui/dialog/clonetiler.cpp:725 msgid "Randomize the color lightness by this percentage" msgstr "Slembinn ljósleiki um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:740 +#: ../src/ui/dialog/clonetiler.cpp:739 msgid "Alternate the sign of color changes for each row" msgstr "Víxla formerkjum litabreytinga fyrir hverja röð" -#: ../src/ui/dialog/clonetiler.cpp:745 +#: ../src/ui/dialog/clonetiler.cpp:744 msgid "Alternate the sign of color changes for each column" msgstr "Breyta formerkjum litabreytinga fyrir hvern dálk" -#: ../src/ui/dialog/clonetiler.cpp:753 +#: ../src/ui/dialog/clonetiler.cpp:752 msgid "_Trace" msgstr "Línu_teikna" -#: ../src/ui/dialog/clonetiler.cpp:759 +#: ../src/ui/dialog/clonetiler.cpp:758 msgid "Trace the drawing under the clones/sprayed items" msgstr "Draga útlínur teikningarinnar undir klónuð/afrituð atriði" -#: ../src/ui/dialog/clonetiler.cpp:763 +#: ../src/ui/dialog/clonetiler.cpp:762 msgid "" "For each clone/sprayed item, pick a value from the drawing in its location " "and apply it" @@ -14248,180 +14903,180 @@ msgstr "" "Fyrir hvert klón/afrit, veldu gildi úr teikningunni á staðsetningu " "atriðisins og láta það gilda um atriðið" -#: ../src/ui/dialog/clonetiler.cpp:775 +#: ../src/ui/dialog/clonetiler.cpp:774 msgid "1. Pick from the drawing:" msgstr "Velja úr teikningunni:" -#: ../src/ui/dialog/clonetiler.cpp:786 +#: ../src/ui/dialog/clonetiler.cpp:785 msgid "Pick the visible color and opacity" msgstr "velja sýnilegan lit og gegnsæi" -#: ../src/ui/dialog/clonetiler.cpp:793 +#: ../src/ui/dialog/clonetiler.cpp:792 msgid "Pick the total accumulated opacity" msgstr "Veldu heildar uppsafnaða ógegnsæið" -#: ../src/ui/dialog/clonetiler.cpp:799 +#: ../src/ui/dialog/clonetiler.cpp:798 msgid "R" msgstr "R" -#: ../src/ui/dialog/clonetiler.cpp:800 +#: ../src/ui/dialog/clonetiler.cpp:799 msgid "Pick the Red component of the color" msgstr "Veldu rauða partinn af litnum" -#: ../src/ui/dialog/clonetiler.cpp:806 +#: ../src/ui/dialog/clonetiler.cpp:805 msgid "G" msgstr "G" -#: ../src/ui/dialog/clonetiler.cpp:807 +#: ../src/ui/dialog/clonetiler.cpp:806 msgid "Pick the Green component of the color" msgstr "Veldu græna partinn af litnum" -#: ../src/ui/dialog/clonetiler.cpp:813 +#: ../src/ui/dialog/clonetiler.cpp:812 msgid "B" msgstr "B" -#: ../src/ui/dialog/clonetiler.cpp:814 +#: ../src/ui/dialog/clonetiler.cpp:813 msgid "Pick the Blue component of the color" msgstr "Veldu bláa partinn af litnum" -#: ../src/ui/dialog/clonetiler.cpp:820 +#: ../src/ui/dialog/clonetiler.cpp:819 msgctxt "Clonetiler color hue" msgid "H" msgstr "H" -#: ../src/ui/dialog/clonetiler.cpp:821 +#: ../src/ui/dialog/clonetiler.cpp:820 msgid "Pick the hue of the color" msgstr "Veldu litblæ (hue) litarins" -#: ../src/ui/dialog/clonetiler.cpp:827 +#: ../src/ui/dialog/clonetiler.cpp:826 msgctxt "Clonetiler color saturation" msgid "S" msgstr "S" -#: ../src/ui/dialog/clonetiler.cpp:828 +#: ../src/ui/dialog/clonetiler.cpp:827 msgid "Pick the saturation of the color" msgstr "Veldu mettun (saturation) litarins" -#: ../src/ui/dialog/clonetiler.cpp:834 +#: ../src/ui/dialog/clonetiler.cpp:833 msgctxt "Clonetiler color lightness" msgid "L" msgstr "L" -#: ../src/ui/dialog/clonetiler.cpp:835 +#: ../src/ui/dialog/clonetiler.cpp:834 msgid "Pick the lightness of the color" msgstr "Veldu ljósleika (lightness) litarins" -#: ../src/ui/dialog/clonetiler.cpp:844 +#: ../src/ui/dialog/clonetiler.cpp:843 msgid "2. Tweak the picked value:" msgstr "2. Fiktaðu með valið gildi:" -#: ../src/ui/dialog/clonetiler.cpp:855 +#: ../src/ui/dialog/clonetiler.cpp:854 msgid "Gamma-correct:" msgstr "Gamma-leiðrétting:" -#: ../src/ui/dialog/clonetiler.cpp:859 +#: ../src/ui/dialog/clonetiler.cpp:858 msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:866 +#: ../src/ui/dialog/clonetiler.cpp:865 msgid "Randomize:" msgstr "Slembigera:" -#: ../src/ui/dialog/clonetiler.cpp:870 +#: ../src/ui/dialog/clonetiler.cpp:869 msgid "Randomize the picked value by this percentage" msgstr "Slembivelja valið gildi um þessa prósentutölu" -#: ../src/ui/dialog/clonetiler.cpp:877 +#: ../src/ui/dialog/clonetiler.cpp:876 msgid "Invert:" msgstr "Umsnúa:" -#: ../src/ui/dialog/clonetiler.cpp:881 +#: ../src/ui/dialog/clonetiler.cpp:880 msgid "Invert the picked value" msgstr "Snúa við valið gildi" -#: ../src/ui/dialog/clonetiler.cpp:887 +#: ../src/ui/dialog/clonetiler.cpp:886 msgid "3. Apply the value to the clones':" msgstr "3. Beita gildinu á klónin:" -#: ../src/ui/dialog/clonetiler.cpp:896 +#: ../src/ui/dialog/clonetiler.cpp:895 msgid "Presence" msgstr "Viðvera" -#: ../src/ui/dialog/clonetiler.cpp:899 +#: ../src/ui/dialog/clonetiler.cpp:898 msgid "" "Each clone is created with the probability determined by the picked value in " "that point" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:905 +#: ../src/ui/dialog/clonetiler.cpp:904 msgid "Size" msgstr "Stærð" -#: ../src/ui/dialog/clonetiler.cpp:908 +#: ../src/ui/dialog/clonetiler.cpp:907 msgid "Each clone's size is determined by the picked value in that point" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:917 +#: ../src/ui/dialog/clonetiler.cpp:916 msgid "" "Each clone is painted by the picked color (the original must have unset fill " "or stroke)" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:926 +#: ../src/ui/dialog/clonetiler.cpp:925 msgid "Each clone's opacity is determined by the picked value in that point" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:940 +#: ../src/ui/dialog/clonetiler.cpp:939 msgid "Apply to tiled clones:" msgstr "Beita á tíglaða klóna:" -#: ../src/ui/dialog/clonetiler.cpp:961 +#: ../src/ui/dialog/clonetiler.cpp:960 msgid "How many rows in the tiling" msgstr "Hve margar raðir í tigluninni" -#: ../src/ui/dialog/clonetiler.cpp:981 +#: ../src/ui/dialog/clonetiler.cpp:980 msgid "How many columns in the tiling" msgstr "Hve margir dálkar í tigluninni" -#: ../src/ui/dialog/clonetiler.cpp:1010 +#: ../src/ui/dialog/clonetiler.cpp:1009 msgid "Width of the rectangle to be filled" msgstr "Breidd rétthyrnings sem á að fylla" -#: ../src/ui/dialog/clonetiler.cpp:1033 +#: ../src/ui/dialog/clonetiler.cpp:1032 msgid "Height of the rectangle to be filled" msgstr "Hæð rétthyrnings sem á að fylla" -#: ../src/ui/dialog/clonetiler.cpp:1048 +#: ../src/ui/dialog/clonetiler.cpp:1047 msgid "Rows, columns: " msgstr "Raðir, dálkar: " -#: ../src/ui/dialog/clonetiler.cpp:1049 +#: ../src/ui/dialog/clonetiler.cpp:1048 msgid "Create the specified number of rows and columns" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1058 +#: ../src/ui/dialog/clonetiler.cpp:1057 msgid "Width, height: " msgstr "Breidd, hæð: " -#: ../src/ui/dialog/clonetiler.cpp:1059 +#: ../src/ui/dialog/clonetiler.cpp:1058 msgid "Fill the specified width and height with the tiling" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1075 +#: ../src/ui/dialog/clonetiler.cpp:1074 msgid "Use saved size and position of the tile" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1078 +#: ../src/ui/dialog/clonetiler.cpp:1077 msgid "" "Pretend that the size and position of the tile are the same as the last time " "you tiled it (if any), instead of using the current size" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1104 +#: ../src/ui/dialog/clonetiler.cpp:1103 msgid " _Create " msgstr " _Búa til " -#: ../src/ui/dialog/clonetiler.cpp:1106 +#: ../src/ui/dialog/clonetiler.cpp:1105 msgid "Create and tile the clones of the selection" msgstr "" @@ -14430,28 +15085,28 @@ msgstr "" #. diagrams on the left in the following screenshot: #. http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png #. So unclumping is the process of spreading a number of objects out more evenly. -#: ../src/ui/dialog/clonetiler.cpp:1122 +#: ../src/ui/dialog/clonetiler.cpp:1121 msgid " _Unclump " msgstr " Afkl_umpa " -#: ../src/ui/dialog/clonetiler.cpp:1123 +#: ../src/ui/dialog/clonetiler.cpp:1122 msgid "Spread out clones to reduce clumping; can be applied repeatedly" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1129 +#: ../src/ui/dialog/clonetiler.cpp:1128 msgid " Re_move " msgstr " Fja_rlægja: " -#: ../src/ui/dialog/clonetiler.cpp:1130 +#: ../src/ui/dialog/clonetiler.cpp:1129 msgid "Remove existing tiled clones of the selected object (siblings only)" msgstr "" -#: ../src/ui/dialog/clonetiler.cpp:1145 +#: ../src/ui/dialog/clonetiler.cpp:1144 msgid " R_eset " msgstr " _Frumstilla " #. TRANSLATORS: "change" is a noun here -#: ../src/ui/dialog/clonetiler.cpp:1147 +#: ../src/ui/dialog/clonetiler.cpp:1146 msgid "" "Reset all shifts, scales, rotates, opacity and color changes in the dialog " "to zero" @@ -14459,40 +15114,40 @@ msgstr "" "Frumstilla allar hliðranir, kvarðanir, snúninga, gegnsæi og litabreytingar í " "glugganum á núll" -#: ../src/ui/dialog/clonetiler.cpp:1207 +#: ../src/ui/dialog/clonetiler.cpp:1206 msgid "Nothing selected." msgstr "Ekkert valið." -#: ../src/ui/dialog/clonetiler.cpp:1213 +#: ../src/ui/dialog/clonetiler.cpp:1212 msgid "More than one object selected." msgstr "Meira en einn hlutur valinn" -#: ../src/ui/dialog/clonetiler.cpp:1220 +#: ../src/ui/dialog/clonetiler.cpp:1219 #, c-format msgid "Object has %d tiled clones." msgstr "Hlutur hefur %d tíglaða klóna.tile" -#: ../src/ui/dialog/clonetiler.cpp:1225 +#: ../src/ui/dialog/clonetiler.cpp:1224 msgid "Object has no tiled clones." msgstr "Hlutur hefur enga tíglaða klóna." -#: ../src/ui/dialog/clonetiler.cpp:1940 +#: ../src/ui/dialog/clonetiler.cpp:1939 msgid "Select one object whose tiled clones to unclump." msgstr "Veldu einn hlut hvers klóna á að afklumpa." -#: ../src/ui/dialog/clonetiler.cpp:1960 +#: ../src/ui/dialog/clonetiler.cpp:1959 msgid "Unclump tiled clones" msgstr "Afklumpa tiglaða klóna" -#: ../src/ui/dialog/clonetiler.cpp:1989 +#: ../src/ui/dialog/clonetiler.cpp:1988 msgid "Select one object whose tiled clones to remove." msgstr "Veldu einn hlut hvers tiglaða klóna á að fjarlægja." -#: ../src/ui/dialog/clonetiler.cpp:2014 +#: ../src/ui/dialog/clonetiler.cpp:2013 msgid "Delete tiled clones" msgstr "Eyða tigluðum klónum" -#: ../src/ui/dialog/clonetiler.cpp:2067 +#: ../src/ui/dialog/clonetiler.cpp:2066 msgid "" "If you want to clone several objects, group them and clone the " "group." @@ -14501,23 +15156,23 @@ msgstr "" "b>." #. set statusbar text -#: ../src/ui/dialog/clonetiler.cpp:2075 +#: ../src/ui/dialog/clonetiler.cpp:2074 msgid "Creating tiled clones..." msgstr "Bý til tigluð klón..." -#: ../src/ui/dialog/clonetiler.cpp:2492 +#: ../src/ui/dialog/clonetiler.cpp:2490 msgid "Create tiled clones" msgstr "Búa til tiglaða klóna" -#: ../src/ui/dialog/clonetiler.cpp:2685 +#: ../src/ui/dialog/clonetiler.cpp:2683 msgid "Per row:" msgstr "Á röð:" -#: ../src/ui/dialog/clonetiler.cpp:2699 +#: ../src/ui/dialog/clonetiler.cpp:2697 msgid "Per column:" msgstr "Á dálk:" -#: ../src/ui/dialog/clonetiler.cpp:2707 +#: ../src/ui/dialog/clonetiler.cpp:2705 msgid "Randomize:" msgstr "Slembigert:" @@ -14533,27 +15188,27 @@ msgstr "" msgid "Change color definition" msgstr "Breyta skilgreiningu litar" -#: ../src/ui/dialog/color-item.cpp:669 +#: ../src/ui/dialog/color-item.cpp:670 msgid "Remove stroke color" msgstr "Fjarlægja lit útlínu" -#: ../src/ui/dialog/color-item.cpp:669 +#: ../src/ui/dialog/color-item.cpp:670 msgid "Remove fill color" msgstr "Fjarlægja fyllilit" -#: ../src/ui/dialog/color-item.cpp:674 +#: ../src/ui/dialog/color-item.cpp:675 msgid "Set stroke color to none" msgstr "Setja útlínulit sem engan" -#: ../src/ui/dialog/color-item.cpp:674 +#: ../src/ui/dialog/color-item.cpp:675 msgid "Set fill color to none" msgstr "Setja fyllilit sem engan" -#: ../src/ui/dialog/color-item.cpp:692 +#: ../src/ui/dialog/color-item.cpp:693 msgid "Set stroke color from swatch" msgstr "Setja útlínulit af litaprufuspjaldi" -#: ../src/ui/dialog/color-item.cpp:692 +#: ../src/ui/dialog/color-item.cpp:693 msgid "Set fill color from swatch" msgstr "Setja fyllilit af litaprufuspjaldi" @@ -14561,10 +15216,6 @@ msgstr "Setja fyllilit af litaprufuspjaldi" msgid "Messages" msgstr "Skilaboð" -#: ../src/ui/dialog/debug.cpp:77 ../src/ui/dialog/messages.cpp:47 -msgid "_Clear" -msgstr "_Hreinsa" - #: ../src/ui/dialog/debug.cpp:81 ../src/ui/dialog/messages.cpp:48 msgid "Capture log messages" msgstr "Grípa meldingar" @@ -14574,306 +15225,313 @@ msgid "Release log messages" msgstr "Sleppa meldingum" #: ../src/ui/dialog/document-metadata.cpp:77 -#: ../src/ui/dialog/document-properties.cpp:155 +#: ../src/ui/dialog/document-properties.cpp:151 msgid "Metadata" msgstr "Lýsigögn" #: ../src/ui/dialog/document-metadata.cpp:78 -#: ../src/ui/dialog/document-properties.cpp:156 +#: ../src/ui/dialog/document-properties.cpp:152 msgid "License" msgstr "Notkunarleyfi" #: ../src/ui/dialog/document-metadata.cpp:115 -#: ../src/ui/dialog/document-properties.cpp:922 +#: ../src/ui/dialog/document-properties.cpp:958 msgid "Dublin Core Entities" msgstr "Dublin Core einindi" #: ../src/ui/dialog/document-metadata.cpp:147 -#: ../src/ui/dialog/document-properties.cpp:969 +#: ../src/ui/dialog/document-properties.cpp:1004 msgid "License" msgstr "Notkunarleyfi" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:102 msgid "Use antialiasing" msgstr "Nota afstöllun" -#: ../src/ui/dialog/document-properties.cpp:106 +#: ../src/ui/dialog/document-properties.cpp:102 msgid "If unset, no antialiasing will be done on the drawing" msgstr "" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:103 msgid "Checkerboard background" msgstr "Köflóttur bakgrunnur" -#: ../src/ui/dialog/document-properties.cpp:107 +#: ../src/ui/dialog/document-properties.cpp:103 msgid "" "If set, use checkerboard for background, otherwise use background color at " "full opacity." msgstr "" -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:104 msgid "Show page _border" msgstr "Sýna _jaðar síðu" -#: ../src/ui/dialog/document-properties.cpp:108 +#: ../src/ui/dialog/document-properties.cpp:104 msgid "If set, rectangular page border is shown" msgstr "" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:105 msgid "Border on _top of drawing" msgstr "Jaðar ofan á _teikningu" -#: ../src/ui/dialog/document-properties.cpp:109 +#: ../src/ui/dialog/document-properties.cpp:105 msgid "If set, border is always on top of the drawing" msgstr "" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:106 msgid "_Show border shadow" msgstr "_Sýna skugga jaðars" -#: ../src/ui/dialog/document-properties.cpp:110 +#: ../src/ui/dialog/document-properties.cpp:106 msgid "If set, page border shows a shadow on its right and lower side" msgstr "" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "Back_ground color:" msgstr "Bak_grunnslitur:" -#: ../src/ui/dialog/document-properties.cpp:111 +#: ../src/ui/dialog/document-properties.cpp:107 msgid "" "Color of the page background. Note: transparency setting ignored while " "editing if 'Checkerboard background' unset (but used when exporting to " "bitmap)." msgstr "" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Border _color:" msgstr "Lit_ur jaðars:" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Page border color" msgstr "Litur síðujaðra" -#: ../src/ui/dialog/document-properties.cpp:112 +#: ../src/ui/dialog/document-properties.cpp:108 msgid "Color of the page border" msgstr "Litur á jaðri síðu" -#: ../src/ui/dialog/document-properties.cpp:113 +#: ../src/ui/dialog/document-properties.cpp:109 msgid "Display _units:" msgstr "Sý_na einingar:" #. --------------------------------------------------------------- #. General snap options -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Show _guides" msgstr "Birta st_oðlínur" -#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:113 msgid "Show or hide guides" msgstr "Sýna eða fela stoðlínur" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Guide co_lor:" msgstr "_Litur stoðlínu:" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Guideline color" msgstr "Litur stoðlínu" -#: ../src/ui/dialog/document-properties.cpp:118 +#: ../src/ui/dialog/document-properties.cpp:114 msgid "Color of guidelines" msgstr "Litur stoðlína" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "_Highlight color:" msgstr "Litur á ljó_mun:" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "Highlighted guideline color" msgstr "Litur stoðlínu við ljómun" -#: ../src/ui/dialog/document-properties.cpp:119 +#: ../src/ui/dialog/document-properties.cpp:115 msgid "Color of a guideline when it is under mouse" msgstr "Litur stoðlínu þegar hún er undir músarbendlinum" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:121 +#: ../src/ui/dialog/document-properties.cpp:117 msgid "Snap _distance" msgstr "_Gripfjarlægð" -#: ../src/ui/dialog/document-properties.cpp:121 +#: ../src/ui/dialog/document-properties.cpp:117 msgid "Snap only when _closer than:" msgstr "Aðeins _grípa í þegar verið er nær en:" -#: ../src/ui/dialog/document-properties.cpp:121 -#: ../src/ui/dialog/document-properties.cpp:126 -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:117 +#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Always snap" msgstr "Alltaf grípa" -#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "Snapping distance, in screen pixels, for snapping to objects" msgstr "Gripfjarlægð, í skjádílum, við grip í hluti" -#: ../src/ui/dialog/document-properties.cpp:122 +#: ../src/ui/dialog/document-properties.cpp:118 msgid "Always snap to objects, regardless of their distance" msgstr "Alltaf grípa í hluti, sama hver fjarlægðin er" -#: ../src/ui/dialog/document-properties.cpp:123 +#: ../src/ui/dialog/document-properties.cpp:119 msgid "" "If set, objects only snap to another object when it's within the range " "specified below" msgstr "" +"Ef þetta er stillt, munu hlutir aðeins grípa í aðra hluti innan þeirrar " +"vegalengdar sem tilgreind er hér fyrir neðan" #. Options for snapping to grids -#: ../src/ui/dialog/document-properties.cpp:126 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "Snap d_istance" msgstr "Gri_pfjarlægð" -#: ../src/ui/dialog/document-properties.cpp:126 +#: ../src/ui/dialog/document-properties.cpp:122 msgid "Snap only when c_loser than:" msgstr "Aðeins grí_pa í þegar verið er nær en:" -#: ../src/ui/dialog/document-properties.cpp:127 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Snapping distance, in screen pixels, for snapping to grid" msgstr "Gripfjarlægð, í skjádílum, við grip í hnitanet" -#: ../src/ui/dialog/document-properties.cpp:127 +#: ../src/ui/dialog/document-properties.cpp:123 msgid "Always snap to grids, regardless of the distance" msgstr "Alltaf grípa í hnitanet, sama hver fjarlægðin er" -#: ../src/ui/dialog/document-properties.cpp:128 +#: ../src/ui/dialog/document-properties.cpp:124 msgid "" "If set, objects only snap to a grid line when it's within the range " "specified below" msgstr "" +"Ef þetta er stillt, munu hlutir aðeins grípa í hnitalínu innan þeirrar " +"vegalengdar sem tilgreind er hér fyrir neðan" #. Options for snapping to guides -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Snap dist_ance" msgstr "Grip_fjarlægð" -#: ../src/ui/dialog/document-properties.cpp:131 +#: ../src/ui/dialog/document-properties.cpp:127 msgid "Snap only when close_r than:" msgstr "Grípa í þegar verið er nær _en:" -#: ../src/ui/dialog/document-properties.cpp:132 +#: ../src/ui/dialog/document-properties.cpp:128 msgid "Snapping distance, in screen pixels, for snapping to guides" msgstr "Gripfjarlægð, í skjádílum, við grip í stoðlínur" -#: ../src/ui/dialog/document-properties.cpp:132 +#: ../src/ui/dialog/document-properties.cpp:128 msgid "Always snap to guides, regardless of the distance" msgstr "Alltaf grípa í stoðlínur, sama hver fjarlægðin er" -#: ../src/ui/dialog/document-properties.cpp:133 +#: ../src/ui/dialog/document-properties.cpp:129 msgid "" "If set, objects only snap to a guide when it's within the range specified " "below" msgstr "" +"Ef þetta er stillt, munu hlutir aðeins grípa í stoðlínu innan þeirrar " +"vegalengdar sem tilgreind er hér fyrir neðan" #. --------------------------------------------------------------- -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:132 msgid "Snap to clip paths" msgstr "Grípa í afmörkunarferla" -#: ../src/ui/dialog/document-properties.cpp:136 +#: ../src/ui/dialog/document-properties.cpp:132 msgid "When snapping to paths, then also try snapping to clip paths" msgstr "Þegar gripið er í ferla, grípa þá einnig í afmörkunarferla" -#: ../src/ui/dialog/document-properties.cpp:137 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "Snap to mask paths" msgstr "Grípa í huluferla" -#: ../src/ui/dialog/document-properties.cpp:137 +#: ../src/ui/dialog/document-properties.cpp:133 msgid "When snapping to paths, then also try snapping to mask paths" msgstr "Þegar gripið er í ferla, grípa þá einnig í huluferla" -#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "Snap perpendicularly" msgstr "Grípa hornrétt" -#: ../src/ui/dialog/document-properties.cpp:138 +#: ../src/ui/dialog/document-properties.cpp:134 msgid "" "When snapping to paths or guides, then also try snapping perpendicularly" msgstr "Þegar gripið er í ferla eða stoðlínur, grípa þá einnig hornrétt" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:135 msgid "Snap tangentially" msgstr "Grípa í snertilstefnu" -#: ../src/ui/dialog/document-properties.cpp:139 +#: ../src/ui/dialog/document-properties.cpp:135 msgid "When snapping to paths or guides, then also try snapping tangentially" msgstr "" "Þegar gripið er í ferla eða stoðlínur, grípa þá einnig í snertla (tangens)" -#: ../src/ui/dialog/document-properties.cpp:142 +#: ../src/ui/dialog/document-properties.cpp:138 msgctxt "Grid" msgid "_New" msgstr "_Nýtt" -#: ../src/ui/dialog/document-properties.cpp:142 +#: ../src/ui/dialog/document-properties.cpp:138 msgid "Create new grid." msgstr "Búa til nýtt hnitanet." -#: ../src/ui/dialog/document-properties.cpp:143 +#: ../src/ui/dialog/document-properties.cpp:139 msgctxt "Grid" msgid "_Remove" msgstr "_Fjarlægja" -#: ../src/ui/dialog/document-properties.cpp:143 +#: ../src/ui/dialog/document-properties.cpp:139 msgid "Remove selected grid." msgstr "Fjarlægja valið hnitanet." -#: ../src/ui/dialog/document-properties.cpp:150 ../src/widgets/toolbox.cpp:1874 +#: ../src/ui/dialog/document-properties.cpp:146 +#: ../src/widgets/toolbox.cpp:1398 msgid "Guides" msgstr "Stoðlínur" -#: ../src/ui/dialog/document-properties.cpp:152 ../src/verbs.cpp:2889 +#: ../src/ui/dialog/document-properties.cpp:148 ../src/verbs.cpp:3030 msgid "Snap" msgstr "Grip" -#: ../src/ui/dialog/document-properties.cpp:154 +#: ../src/ui/dialog/document-properties.cpp:150 msgid "Scripting" msgstr "Skriftun" -#: ../src/ui/dialog/document-properties.cpp:289 +#: ../src/ui/dialog/document-properties.cpp:290 msgid "General" msgstr "Almennt" -#: ../src/ui/dialog/document-properties.cpp:292 +#: ../src/ui/dialog/document-properties.cpp:293 msgid "Page Size" msgstr "Blaðsíðustærð" -#: ../src/ui/dialog/document-properties.cpp:295 +#: ../src/ui/dialog/document-properties.cpp:296 msgid "Background" msgstr "Bakgrunnur" -#: ../src/ui/dialog/document-properties.cpp:298 +#: ../src/ui/dialog/document-properties.cpp:299 msgid "Border" msgstr "Jaðar" -#: ../src/ui/dialog/document-properties.cpp:301 +#: ../src/ui/dialog/document-properties.cpp:302 msgid "Display" msgstr "Birting" -#: ../src/ui/dialog/document-properties.cpp:340 +#: ../src/ui/dialog/document-properties.cpp:359 msgid "Guides" msgstr "Stoðlínur" -#: ../src/ui/dialog/document-properties.cpp:358 +#: ../src/ui/dialog/document-properties.cpp:377 msgid "Snap to objects" msgstr "Grípa í hluti" -#: ../src/ui/dialog/document-properties.cpp:360 +#: ../src/ui/dialog/document-properties.cpp:379 msgid "Snap to grids" msgstr "Grípa í hnitanet" -#: ../src/ui/dialog/document-properties.cpp:362 +#: ../src/ui/dialog/document-properties.cpp:381 msgid "Snap to guides" msgstr "Grípa í stoðlínur" -#: ../src/ui/dialog/document-properties.cpp:364 +#: ../src/ui/dialog/document-properties.cpp:383 msgid "Miscellaneous" msgstr "Ýmislegt" @@ -14881,148 +15539,158 @@ msgstr "Ýmislegt" #. Inkscape::GC::release(defsRepr); #. inform the document, so we can undo #. Color Management -#: ../src/ui/dialog/document-properties.cpp:501 ../src/verbs.cpp:3072 +#: ../src/ui/dialog/document-properties.cpp:520 ../src/verbs.cpp:3202 msgid "Link Color Profile" msgstr "Tengja litasnið" -#: ../src/ui/dialog/document-properties.cpp:613 +#: ../src/ui/dialog/document-properties.cpp:587 +#: ../src/ui/dialog/document-properties.cpp:597 +#: ../src/ui/dialog/document-properties.cpp:606 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1308 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:299 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:308 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:317 +msgid "_Remove" +msgstr "Fja_rlægja" + +#: ../src/ui/dialog/document-properties.cpp:639 msgid "Remove linked color profile" msgstr "Fjarlægja tengt litasnið" -#: ../src/ui/dialog/document-properties.cpp:632 +#: ../src/ui/dialog/document-properties.cpp:658 msgid "Linked Color Profiles:" msgstr "Tengd litasnið:" -#: ../src/ui/dialog/document-properties.cpp:634 +#: ../src/ui/dialog/document-properties.cpp:660 msgid "Available Color Profiles:" msgstr "Tiltæk litasnið:" -#: ../src/ui/dialog/document-properties.cpp:636 +#: ../src/ui/dialog/document-properties.cpp:662 msgid "Link Profile" msgstr "Tengja litasnið" -#: ../src/ui/dialog/document-properties.cpp:639 +#: ../src/ui/dialog/document-properties.cpp:665 msgid "Unlink Profile" msgstr "Aftengja litasnið" -#: ../src/ui/dialog/document-properties.cpp:701 +#: ../src/ui/dialog/document-properties.cpp:730 msgid "Profile Name" msgstr "Heiti litasniðs" -#: ../src/ui/dialog/document-properties.cpp:737 +#: ../src/ui/dialog/document-properties.cpp:766 msgid "External scripts" msgstr "Ytri skriftuskrár" -#: ../src/ui/dialog/document-properties.cpp:738 +#: ../src/ui/dialog/document-properties.cpp:767 msgid "Embedded scripts" msgstr "ívafðar skriftur" -#: ../src/ui/dialog/document-properties.cpp:743 +#: ../src/ui/dialog/document-properties.cpp:772 msgid "External script files:" msgstr "Ytri skriftuskrár:" -#: ../src/ui/dialog/document-properties.cpp:745 +#: ../src/ui/dialog/document-properties.cpp:774 msgid "Add the current file name or browse for a file" msgstr "Bæta við núverandi skráarheiti eða vafra eftir skrá" -#: ../src/ui/dialog/document-properties.cpp:748 -#: ../src/ui/dialog/document-properties.cpp:806 -#: ../src/ui/widget/selected-style.cpp:339 +#: ../src/ui/dialog/document-properties.cpp:777 +#: ../src/ui/dialog/document-properties.cpp:842 +#: ../src/ui/widget/selected-style.cpp:361 msgid "Remove" msgstr "Fjarlægja" -#: ../src/ui/dialog/document-properties.cpp:793 +#: ../src/ui/dialog/document-properties.cpp:829 msgid "Filename" msgstr "Skráarheiti" -#: ../src/ui/dialog/document-properties.cpp:801 +#: ../src/ui/dialog/document-properties.cpp:837 msgid "Embedded script files:" msgstr "Ívafðar skriftuskrár:" -#: ../src/ui/dialog/document-properties.cpp:803 -#: ../src/ui/dialog/objects.cpp:1881 +#: ../src/ui/dialog/document-properties.cpp:839 +#: ../src/ui/dialog/objects.cpp:1920 msgid "New" msgstr "Nýtt" -#: ../src/ui/dialog/document-properties.cpp:846 +#: ../src/ui/dialog/document-properties.cpp:882 msgid "Script id" msgstr "Auðkenni skriftu" -#: ../src/ui/dialog/document-properties.cpp:852 +#: ../src/ui/dialog/document-properties.cpp:888 msgid "Content:" msgstr "Innihald:" -#: ../src/ui/dialog/document-properties.cpp:949 +#: ../src/ui/dialog/document-properties.cpp:984 msgid "_Save as default" msgstr "Vi_sta sem sjálfgefið" -#: ../src/ui/dialog/document-properties.cpp:950 +#: ../src/ui/dialog/document-properties.cpp:985 msgid "Save this metadata as the default metadata" msgstr "Vista þessi lýsigögn sem sjálfgefin lýsigögn" -#: ../src/ui/dialog/document-properties.cpp:951 +#: ../src/ui/dialog/document-properties.cpp:986 msgid "Use _default" msgstr "Nota _sjálfgefið" -#: ../src/ui/dialog/document-properties.cpp:952 +#: ../src/ui/dialog/document-properties.cpp:987 msgid "Use the previously saved default metadata here" msgstr "Nota það sem áður var vistað sem sjálfgefin lýsigögn" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1012 +#: ../src/ui/dialog/document-properties.cpp:1046 msgid "Add external script..." msgstr "Bæta við ytri skriftuskrá..." -#: ../src/ui/dialog/document-properties.cpp:1051 +#: ../src/ui/dialog/document-properties.cpp:1085 msgid "Select a script to load" msgstr "Veldu skriftu til að hlaða inn" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1079 +#: ../src/ui/dialog/document-properties.cpp:1113 msgid "Add embedded script..." msgstr "Bæta við ívafinni skriftu..." #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1110 +#: ../src/ui/dialog/document-properties.cpp:1144 msgid "Remove external script" msgstr "Fjarlægja skriftuskrá" #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1139 +#: ../src/ui/dialog/document-properties.cpp:1173 msgid "Remove embedded script" msgstr "Fjarlægja ívafða skriftu" #. TODO repr->set_content(_EmbeddedContent.get_buffer()->get_text()); #. inform the document, so we can undo -#: ../src/ui/dialog/document-properties.cpp:1233 +#: ../src/ui/dialog/document-properties.cpp:1267 msgid "Edit embedded script" msgstr "Breyta ívafinni skriftu" -#: ../src/ui/dialog/document-properties.cpp:1317 +#: ../src/ui/dialog/document-properties.cpp:1351 msgid "Creation" msgstr "Útbúa" -#: ../src/ui/dialog/document-properties.cpp:1318 +#: ../src/ui/dialog/document-properties.cpp:1352 msgid "Defined grids" msgstr "Skilgreind hnitanet" -#: ../src/ui/dialog/document-properties.cpp:1562 +#: ../src/ui/dialog/document-properties.cpp:1598 msgid "Remove grid" msgstr "Fjarlægja hnitanet" -#: ../src/ui/dialog/document-properties.cpp:1654 +#: ../src/ui/dialog/document-properties.cpp:1690 msgid "Changed default display unit" msgstr "Breytti sjálfgefinni birtingareiningu" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2939 +#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:3005 msgid "_Page" msgstr "_Síða" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2943 +#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:3009 msgid "_Drawing" msgstr "_Teikning" -#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:2945 +#: ../src/ui/dialog/export.cpp:124 ../src/verbs.cpp:3011 msgid "_Selection" msgstr "_Valið" @@ -15061,6 +15729,8 @@ msgid "" "Enables ADAM7 interlacing for PNG output. This results in slightly heavier " "images, but big images will look better sooner when loading the file" msgstr "" +"Virkjar ADAM7-brúun fyrir PNG frálag. Þetta gefur dálítið stærri myndir, en " +"stórar myndir munu fyrr líta betur út þegar mynd er hlaðið inn" #: ../src/ui/dialog/export.cpp:149 msgid "Bit depth" @@ -15072,28 +15742,24 @@ msgstr "Þjöppun" #: ../src/ui/dialog/export.cpp:153 msgid "pHYs dpi" -msgstr "" +msgstr "Pát pHY" -#: ../src/ui/dialog/export.cpp:156 -msgid "Hide a_ll except selected" -msgstr "_Fela allt nema það sem er valið" +#: ../src/ui/dialog/export.cpp:158 +msgid "Hide all except selected" +msgstr "Fela allt nema það sem er valið" -#: ../src/ui/dialog/export.cpp:156 +#: ../src/ui/dialog/export.cpp:158 msgid "In the exported image, hide all objects except those that are selected" msgstr "Í útfluttri mynd, fela allt nema það sem er valið" -#: ../src/ui/dialog/export.cpp:157 +#: ../src/ui/dialog/export.cpp:159 msgid "Close when complete" msgstr "Loka þegar er búið" -#: ../src/ui/dialog/export.cpp:157 +#: ../src/ui/dialog/export.cpp:159 msgid "Once the export completes, close this dialog" msgstr "Loka þessum skilaboðaglugga þegar útflutningi er lokið" -#: ../src/ui/dialog/export.cpp:159 -msgid "_Export" -msgstr "_Flytja út" - #: ../src/ui/dialog/export.cpp:177 msgid "Export area" msgstr "Flytja út svæði" @@ -15134,15 +15800,15 @@ msgstr "mynddílar í" msgid "dp_i" msgstr "_pát" -#: ../src/ui/dialog/export.cpp:268 ../src/ui/dialog/transformation.cpp:71 +#: ../src/ui/dialog/export.cpp:268 ../src/ui/dialog/transformation.cpp:69 #: ../src/ui/widget/page-sizer.cpp:221 msgid "_Height:" msgstr "_Hæð:" #: ../src/ui/dialog/export.cpp:276 -#: ../src/ui/dialog/inkscape-preferences.cpp:1474 #: ../src/ui/dialog/inkscape-preferences.cpp:1478 -#: ../src/ui/dialog/inkscape-preferences.cpp:1502 +#: ../src/ui/dialog/inkscape-preferences.cpp:1482 +#: ../src/ui/dialog/inkscape-preferences.cpp:1506 msgid "dpi" msgstr "pát" @@ -15150,133 +15816,128 @@ msgstr "pát" msgid "_Filename" msgstr "_Skráarheiti" -#: ../src/ui/dialog/export.cpp:326 +#: ../src/ui/dialog/export.cpp:322 +msgid "_Export" +msgstr "_Flytja út" + +#: ../src/ui/dialog/export.cpp:324 msgid "Export the bitmap file with these settings" msgstr "Flytja út bitamyndarskrá með þessum stillingum" #. Advanced -#: ../src/ui/dialog/export.cpp:332 +#: ../src/ui/dialog/export.cpp:330 msgid "Advanced" msgstr "Ítarlegt" -#: ../src/ui/dialog/export.cpp:346 +#: ../src/ui/dialog/export.cpp:344 msgid "" "Will force-set the physical dpi for the png file. Set this to 72 if you're " "planning to work on your png with Photoshop" msgstr "" +"Mun þvinga fram raunupplausn (pát/dpi) á PNG-skrá. Settu þetta á 72 ef þú " +"hefur í hyggju að vinna PNG-myndina í Photoshop" -#: ../src/ui/dialog/export.cpp:480 +#: ../src/ui/dialog/export.cpp:484 msgid "bitmap" msgstr "bitamynd" -#: ../src/ui/dialog/export.cpp:585 +#: ../src/ui/dialog/export.cpp:591 #, c-format msgid "B_atch export %d selected object" msgid_plural "B_atch export %d selected objects" msgstr[0] "M_agnflytja út %d valinn hlut" msgstr[1] "M_agnflytja út %d valda hluti" -#: ../src/ui/dialog/export.cpp:901 +#: ../src/ui/dialog/export.cpp:907 msgid "Export in progress" msgstr "Útflutningur í gangi" -#: ../src/ui/dialog/export.cpp:1001 +#: ../src/ui/dialog/export.cpp:1008 msgid "No items selected." msgstr "Engir hlutir valdir." -#: ../src/ui/dialog/export.cpp:1005 ../src/ui/dialog/export.cpp:1007 +#: ../src/ui/dialog/export.cpp:1012 ../src/ui/dialog/export.cpp:1014 msgid "Exporting %1 files" msgstr "Flyt út %1 skrár" -#: ../src/ui/dialog/export.cpp:1049 ../src/ui/dialog/export.cpp:1051 +#: ../src/ui/dialog/export.cpp:1056 ../src/ui/dialog/export.cpp:1058 #, c-format msgid "Exporting file %s..." msgstr "Flyt út skrána %s..." -#: ../src/ui/dialog/export.cpp:1062 ../src/ui/dialog/export.cpp:1157 +#: ../src/ui/dialog/export.cpp:1069 ../src/ui/dialog/export.cpp:1164 #, c-format msgid "Could not export to filename %s.\n" msgstr "Gat ekki flutt út í skráarnafnið %s.\n" -#: ../src/ui/dialog/export.cpp:1065 +#: ../src/ui/dialog/export.cpp:1072 #, c-format msgid "Could not export to filename %s." msgstr "Gat ekki flutt út í skráarheitið %s." -#: ../src/ui/dialog/export.cpp:1080 +#: ../src/ui/dialog/export.cpp:1087 #, c-format msgid "Successfully exported %d files from %d selected items." msgstr "Flutti út %d skrár úr %d völdum atriðum." -#: ../src/ui/dialog/export.cpp:1091 +#: ../src/ui/dialog/export.cpp:1098 msgid "You have to enter a filename." msgstr "Þú verður að setja inn skráarheiti." -#: ../src/ui/dialog/export.cpp:1092 +#: ../src/ui/dialog/export.cpp:1099 msgid "You have to enter a filename" msgstr "Þú verður að velja skráarnafn" -#: ../src/ui/dialog/export.cpp:1107 +#: ../src/ui/dialog/export.cpp:1114 msgid "The chosen area to be exported is invalid." msgstr "Valið svæði sem á að flytja út er ógilt." -#: ../src/ui/dialog/export.cpp:1108 +#: ../src/ui/dialog/export.cpp:1115 msgid "The chosen area to be exported is invalid" msgstr "Valið svæði sem á að flytja út er ógilt" -#: ../src/ui/dialog/export.cpp:1123 +#: ../src/ui/dialog/export.cpp:1130 #, c-format msgid "Directory %s does not exist or is not a directory.\n" msgstr "Mappan %s er ekki til, eða slóðin er ekki mappa.\n" #. TRANSLATORS: %1 will be the filename, %2 the width, and %3 the height of the image -#: ../src/ui/dialog/export.cpp:1137 ../src/ui/dialog/export.cpp:1139 +#: ../src/ui/dialog/export.cpp:1144 ../src/ui/dialog/export.cpp:1146 msgid "Exporting %1 (%2 x %3)" msgstr "Flyt út %1 (%2 x %3)" -#: ../src/ui/dialog/export.cpp:1168 +#: ../src/ui/dialog/export.cpp:1175 #, c-format msgid "Drawing exported to %s." msgstr "Teikning flutt út í %s." -#: ../src/ui/dialog/export.cpp:1172 +#: ../src/ui/dialog/export.cpp:1179 msgid "Export aborted." msgstr "Hætt við útflutning." -#: ../src/ui/dialog/export.cpp:1292 ../src/ui/interface.cpp:1361 -#: ../src/widgets/desktop-widget.cpp:1047 -#: ../src/widgets/desktop-widget.cpp:1109 -msgid "_Cancel" -msgstr "_Hætta við" - -#: ../src/ui/dialog/export.cpp:1293 ../src/ui/dialog/input.cpp:953 -#: ../src/verbs.cpp:2468 ../src/widgets/desktop-widget.cpp:1048 -msgid "_Save" -msgstr "_Vista" - -#: ../src/ui/dialog/extension-editor.cpp:79 +#: ../src/ui/dialog/extension-editor.cpp:78 msgid "Information" msgstr "Upplýsingar" -#: ../src/ui/dialog/extension-editor.cpp:80 ../src/verbs.cpp:303 -#: ../src/verbs.cpp:322 ../share/extensions/color_HSL_adjust.inx.h:11 +#: ../src/ui/dialog/extension-editor.cpp:79 ../src/verbs.cpp:304 +#: ../src/verbs.cpp:323 ../share/extensions/color_HSL_adjust.inx.h:11 #: ../share/extensions/color_custom.inx.h:7 #: ../share/extensions/color_randomize.inx.h:11 #: ../share/extensions/dots.inx.h:7 #: ../share/extensions/draw_from_triangle.inx.h:35 #: ../share/extensions/dxf_input.inx.h:10 #: ../share/extensions/dxf_outlines.inx.h:24 -#: ../share/extensions/gcodetools_about.inx.h:3 -#: ../share/extensions/gcodetools_area.inx.h:53 +#: ../share/extensions/gcodetools_about.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:69 #: ../share/extensions/gcodetools_check_for_updates.inx.h:3 -#: ../share/extensions/gcodetools_dxf_points.inx.h:25 -#: ../share/extensions/gcodetools_engraving.inx.h:31 -#: ../share/extensions/gcodetools_graffiti.inx.h:42 -#: ../share/extensions/gcodetools_lathe.inx.h:46 -#: ../share/extensions/gcodetools_orientation_points.inx.h:14 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:35 +#: ../share/extensions/gcodetools_dxf_points.inx.h:30 +#: ../share/extensions/gcodetools_engraving.inx.h:39 +#: ../share/extensions/gcodetools_graffiti.inx.h:53 +#: ../share/extensions/gcodetools_lathe.inx.h:52 +#: ../share/extensions/gcodetools_orientation_points.inx.h:25 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:39 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:17 -#: ../share/extensions/gcodetools_tools_library.inx.h:12 +#: ../share/extensions/gcodetools_tools_library.inx.h:18 #: ../share/extensions/generate_voronoi.inx.h:5 #: ../share/extensions/gimp_xcf.inx.h:7 #: ../share/extensions/interp_att_g.inx.h:29 @@ -15295,7 +15956,8 @@ msgstr "Upplýsingar" #: ../share/extensions/jitternodes.inx.h:12 #: ../share/extensions/layout_nup.inx.h:24 #: ../share/extensions/lindenmayer.inx.h:13 -#: ../share/extensions/lorem_ipsum.inx.h:6 ../share/extensions/measure.inx.h:33 +#: ../share/extensions/lorem_ipsum.inx.h:6 +#: ../share/extensions/measure.inx.h:33 #: ../share/extensions/pathalongpath.inx.h:16 #: ../share/extensions/pathscatter.inx.h:18 #: ../share/extensions/restack.inx.h:25 ../share/extensions/split.inx.h:8 @@ -15307,15 +15969,10 @@ msgstr "Upplýsingar" msgid "Help" msgstr "Hjálp" -#: ../src/ui/dialog/extension-editor.cpp:81 +#: ../src/ui/dialog/extension-editor.cpp:80 msgid "Parameters" msgstr "Viðföng" -#. Fill in the template -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:427 -msgid "No preview" -msgstr "Engin forskoðun" - #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:531 msgid "too large for preview" msgstr "of stórt fyrir forskoðun" @@ -15324,85 +15981,89 @@ msgstr "of stórt fyrir forskoðun" msgid "Enable preview" msgstr "Virkja forskoðun" +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:739 +msgid "_Open" +msgstr "_Opna" + #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:760 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:772 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:774 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:781 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:795 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:282 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:413 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:267 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:398 msgid "All Files" msgstr "Allar skrár" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:778 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:792 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:283 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:268 msgid "All Inkscape Files" msgstr "Allar Inkscape-skrár" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:785 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:798 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:284 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:269 msgid "All Images" msgstr "Allar myndir" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:788 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:801 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:285 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:270 msgid "All Vectors" msgstr "Allir vigrar" #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:791 #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:804 -#: ../src/ui/dialog/filedialogimpl-win32.cpp:286 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:271 msgid "All Bitmaps" msgstr "Allar bitamyndir" #. ###### File options #. ###### Do we want the .xxx extension automatically added? #: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:997 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1550 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1549 msgid "Append filename extension automatically" msgstr "Bæta skráarendingu við sjálfkrafa" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1165 -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1418 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1164 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1417 msgid "Guess from extension" msgstr "Giska út frá endingu" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1437 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1436 msgid "Left edge of source" msgstr "Vinstri brún upprunalegs" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1438 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1437 msgid "Top edge of source" msgstr "Efri brún upprunalegs" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1439 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1438 msgid "Right edge of source" msgstr "Hægri brún upprunalegs" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1440 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1439 msgid "Bottom edge of source" msgstr "Neðri brún upprunalegs" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1441 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1440 msgid "Source width" msgstr "Upprunabreidd" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1442 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1441 msgid "Source height" msgstr "Upprunahæð" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1443 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1442 msgid "Destination width" msgstr "Úttaksbreidd" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1444 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1443 msgid "Destination height" msgstr "Úttakshæð" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1445 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1444 msgid "Resolution (dots per inch)" msgstr "Upplausn (mynddílar á tommu - PÁT)" @@ -15410,61 +16071,61 @@ msgstr "Upplausn (mynddílar á tommu - PÁT)" #. ## EXTRA WIDGET -- SOURCE SIDE #. ######################################### #. ##### Export options buttons/spinners, etc -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1483 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1482 #: ../share/extensions/docinfo.inx.h:4 ../share/extensions/dpi90to96.inx.h:2 #: ../share/extensions/dpi96to90.inx.h:2 msgid "Document" msgstr "Skjal" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1491 ../src/verbs.cpp:169 -#: ../src/widgets/desktop-widget.cpp:1937 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1490 ../src/verbs.cpp:170 +#: ../src/widgets/desktop-widget.cpp:1992 #: ../share/extensions/printing_marks.inx.h:18 msgid "Selection" msgstr "Myndval" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1495 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1494 msgctxt "Export dialog" msgid "Custom" msgstr "Sérsniðið" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1515 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1514 msgid "Source" msgstr "Uppruni" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1535 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1534 msgid "Cairo" msgstr "Cairo" -#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1538 +#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1537 msgid "Antialias" msgstr "Afstöllun" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:414 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:399 msgid "All Executable Files" msgstr "Allar keyranlegar skrár" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:606 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:591 msgid "Show Preview" msgstr "Forskoða" -#: ../src/ui/dialog/filedialogimpl-win32.cpp:744 +#: ../src/ui/dialog/filedialogimpl-win32.cpp:729 msgid "No file selected" msgstr "Engin skrá valin" -#: ../src/ui/dialog/fill-and-stroke.cpp:58 +#: ../src/ui/dialog/fill-and-stroke.cpp:57 msgid "_Fill" msgstr "_Fylla" -#: ../src/ui/dialog/fill-and-stroke.cpp:59 +#: ../src/ui/dialog/fill-and-stroke.cpp:58 msgid "Stroke _paint" msgstr "Litur útlín_u" -#: ../src/ui/dialog/fill-and-stroke.cpp:60 +#: ../src/ui/dialog/fill-and-stroke.cpp:59 msgid "Stroke st_yle" msgstr "Stíll ú_tlínu" #. TRANSLATORS: this dialog is accessible via menu Filters - Filter editor -#: ../src/ui/dialog/filter-effects-dialog.cpp:514 +#: ../src/ui/dialog/filter-effects-dialog.cpp:513 msgid "" "This matrix determines a linear transform on color space. Each line affects " "one of the color components. Each column determines how much of each color " @@ -15472,116 +16133,116 @@ msgid "" "depend on input colors, so can be used to adjust a constant component value." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:517 +#: ../src/ui/dialog/filter-effects-dialog.cpp:516 #: ../share/extensions/grid_polar.inx.h:4 msgctxt "Label" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/filter-effects-dialog.cpp:624 +#: ../src/ui/dialog/filter-effects-dialog.cpp:623 msgid "Image File" msgstr "Myndskrá" -#: ../src/ui/dialog/filter-effects-dialog.cpp:627 +#: ../src/ui/dialog/filter-effects-dialog.cpp:626 msgid "Selected SVG Element" msgstr "Valið SVG eigindi" #. TODO: any image, not just svg -#: ../src/ui/dialog/filter-effects-dialog.cpp:697 +#: ../src/ui/dialog/filter-effects-dialog.cpp:696 msgid "Select an image to be used as feImage input" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:789 +#: ../src/ui/dialog/filter-effects-dialog.cpp:788 msgid "This SVG filter effect does not require any parameters." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:795 +#: ../src/ui/dialog/filter-effects-dialog.cpp:794 msgid "This SVG filter effect is not yet implemented in Inkscape." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1020 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1019 msgid "Slope" msgstr "Hallatala" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1021 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1020 msgid "Intercept" msgstr "Skurðpunktur" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1024 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1023 msgid "Amplitude" msgstr "Útslag" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1025 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1024 msgid "Exponent" msgstr "Veldisvísir" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1121 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1120 msgid "New transfer function type" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1156 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1155 msgid "Light Source:" msgstr "Ljósgjafi:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1172 msgid "Direction angle for the light source on the XY plane, in degrees" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1174 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1173 msgid "Direction angle for the light source on the YZ plane, in degrees" msgstr "" #. default x: #. default y: #. default z: -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1176 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1179 msgid "Location:" msgstr "Staðsetning:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1176 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1179 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1182 msgid "X coordinate" msgstr "X hnit" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1176 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1179 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1182 msgid "Y coordinate" msgstr "Y hnit" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1177 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1180 -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1176 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1179 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1182 msgid "Z coordinate" msgstr "Z hnit" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1182 msgid "Points At" msgstr "Beinist að" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1184 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 msgid "Specular Exponent" msgstr "Veldisvísir endurkasts" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1184 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1183 msgid "Exponent value controlling the focus for the light source" msgstr "" #. TODO: here I have used 100 degrees as default value. But spec says that if not specified, no limiting cone is applied. So, there should be a way for the user to set a "no limiting cone" option. -#: ../src/ui/dialog/filter-effects-dialog.cpp:1186 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1185 msgid "Cone Angle" msgstr "Horn keilu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1186 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1185 msgid "" "This is the angle between the spot light axis (i.e. the axis between the " "light source and the point to which it is pointing at) and the spot light " "cone. No light is projected outside this cone." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1252 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1251 msgid "New light source" msgstr "Nýr ljósgjafi" @@ -15589,103 +16250,111 @@ msgstr "Nýr ljósgjafi" msgid "_Duplicate" msgstr "_Tvöfalda" +#. File +#. Tag +#: ../src/ui/dialog/filter-effects-dialog.cpp:1322 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:987 ../src/verbs.cpp:2559 +#: ../src/verbs.cpp:2889 +msgid "_New" +msgstr "_Nýtt" + #: ../src/ui/dialog/filter-effects-dialog.cpp:1337 msgid "_Filter" msgstr "_Sía" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1365 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1367 msgid "R_ename" msgstr "Endu_rnefna" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1499 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1501 msgid "Rename filter" msgstr "Endurnefna síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1551 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1553 msgid "Apply filter" msgstr "Beita síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1631 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1633 msgid "filter" msgstr "sía" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1638 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1640 msgid "Add filter" msgstr "Bæta við síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1688 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1690 msgid "Duplicate filter" msgstr "Tvítaka síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1760 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1762 msgid "_Effect" msgstr "Sjón_brella" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1770 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1772 msgid "Connections" msgstr "Tengingar" -#: ../src/ui/dialog/filter-effects-dialog.cpp:1907 +#: ../src/ui/dialog/filter-effects-dialog.cpp:1911 msgid "Remove filter primitive" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2434 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2438 msgid "Remove merge node" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2556 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2560 msgid "Reorder filter primitive" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2611 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2615 msgid "Add Effect:" msgstr "Bæta við sjónhverfingu:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2612 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2616 msgid "No effect selected" msgstr "Engin brella valin" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2613 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2617 msgid "No filter selected" msgstr "Engin sía valin" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2675 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2680 msgid "Effect parameters" msgstr "Viðföng sjónbrellu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2676 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2681 msgid "Filter General Settings" msgstr "Almennar stillingar fyrir síu" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2741 msgid "Coordinates:" msgstr "Hnit:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2741 msgid "X coordinate of the left corners of filter effects region" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2736 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2741 msgid "Y coordinate of the upper corners of filter effects region" msgstr "" #. default width: #. default height: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2742 msgid "Dimensions:" msgstr "Hlutföll:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2742 msgid "Width of filter effects region" msgstr "Breidd áhrifasvæðis síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2737 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2742 msgid "Height of filter effects region" msgstr "Hæð áhrifasvæðis síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2743 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2748 msgid "" "Indicates the type of matrix operation. The keyword 'matrix' indicates that " "a full 5x4 matrix of values will be provided. The other keywords represent " @@ -15693,78 +16362,79 @@ msgid "" "performed without specifying a complete matrix." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2744 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2749 msgid "Value(s):" msgstr "Gildi:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2748 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2753 +#: ../src/widgets/desktop-widget.cpp:648 msgid "R:" msgstr "R:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2749 -#: ../src/ui/widget/color-icc-selector.cpp:167 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2754 +#: ../src/ui/widget/color-icc-selector.cpp:158 msgid "G:" msgstr "G:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2750 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2755 msgid "B:" msgstr "B:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2751 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 msgid "A:" msgstr "A:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2754 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2794 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2759 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2799 msgid "Operator:" msgstr "Stýritákn:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2755 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2760 msgid "K1:" msgstr "K1:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2755 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2757 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2758 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2760 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2763 msgid "" "If the arithmetic operation is chosen, each result pixel is computed using " "the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel " "values of the first and second inputs respectively." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2756 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 msgid "K2:" msgstr "K2:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2757 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 msgid "K3:" msgstr "K3:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2758 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2763 msgid "K4:" msgstr "K4:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 msgid "Size:" msgstr "Stærð:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 msgid "width of the convolve matrix" msgstr "breidd samvindufylkis" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2761 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 msgid "height of the convolve matrix" msgstr "hæð samvindufylkis" #. default x: #. default y: -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 #: ../src/ui/dialog/object-attributes.cpp:45 msgid "Target:" msgstr "Úttak:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 msgid "" "X coordinate of the target point in the convolve matrix. The convolution is " "applied to pixels around this point." @@ -15772,7 +16442,7 @@ msgstr "" "X-hnit markpunkts í samvindufylkinu. Samvindan hefur áhrif á mynddíla í " "kringum þennan punkt." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2762 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 msgid "" "Y coordinate of the target point in the convolve matrix. The convolution is " "applied to pixels around this point." @@ -15781,11 +16451,11 @@ msgstr "" "kringum þennan punkt." #. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix) -#: ../src/ui/dialog/filter-effects-dialog.cpp:2764 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 msgid "Kernel:" msgstr "Kjarni:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2764 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 msgid "" "This matrix describes the convolve operation that is applied to the input " "image in order to calculate the pixel colors at the output. Different " @@ -15795,11 +16465,11 @@ msgid "" "would lead to a common blur effect." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2771 msgid "Divisor:" msgstr "Deilir:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2766 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2771 msgid "" "After applying the kernelMatrix to the input image to yield a number, that " "number is divided by divisor to yield the final destination color value. A " @@ -15807,191 +16477,191 @@ msgid "" "effect on the overall color intensity of the result." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 msgid "Bias:" -msgstr "" +msgstr "Tilhneiging:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2767 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 msgid "" "This value is added to each component. This is useful to define a constant " "value as the zero response of the filter." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2768 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 msgid "Edge Mode:" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2768 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 msgid "" "Determines how to extend the input image as necessary with color values so " "that the matrix operations can be applied when the kernel is positioned at " "or near the edge of the input image." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2806 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 msgid "Preserve Alpha" msgstr "Varðveita alfa" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2769 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2806 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 msgid "If set, the alpha channel won't be altered by this filter primitive." msgstr "" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2777 msgid "Diffuse Color:" msgstr "Dreifilitur:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2772 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2777 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2816 msgid "Defines the color of the light source" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2778 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2817 msgid "Surface Scale:" msgstr "Kvörðun yfirborðs:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2773 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2778 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2817 msgid "" "This value amplifies the heights of the bump map defined by the input alpha " "channel" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2818 msgid "Constant:" msgstr "Fasti:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2774 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2818 msgid "This constant affects the Phong lighting model." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2775 -#: ../src/ui/dialog/filter-effects-dialog.cpp:2815 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2820 msgid "Kernel Unit Length:" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2779 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 msgid "This defines the intensity of the displacement effect." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2785 msgid "X displacement:" msgstr "X færsla:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2780 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2785 msgid "Color component that controls the displacement in the X direction" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2781 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2786 msgid "Y displacement:" msgstr "Y færsla:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2781 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2786 msgid "Color component that controls the displacement in the Y direction" msgstr "" #. default: black -#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2789 msgid "Flood Color:" msgstr "Flæðilitur:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2784 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2789 msgid "The whole filter region will be filled with this color." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2788 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2793 msgid "Standard Deviation:" msgstr "Staðalfrávik:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2788 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2793 msgid "The standard deviation for the blur operation." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2794 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2799 msgid "" "Erode: performs \"thinning\" of input image.\n" "Dilate: performs \"fattenning\" of input image." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2798 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2803 msgid "Source of Image:" msgstr "Uppruni myndar:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2807 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 msgid "Delta X:" msgstr "Mismunur X:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2807 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2812 msgid "This is how far the input image gets shifted to the right" msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2808 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 msgid "Delta Y:" msgstr "Mismunur Y:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2808 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2813 msgid "This is how far the input image gets shifted downwards" msgstr "" #. default: white -#: ../src/ui/dialog/filter-effects-dialog.cpp:2811 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2816 msgid "Specular Color:" msgstr "Endurkastslitur:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2814 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2819 #: ../share/extensions/interp.inx.h:2 msgid "Exponent:" msgstr "Veldisvísir:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2814 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2819 msgid "Exponent for specular term, larger is more \"shiny\"." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2823 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2828 msgid "" "Indicates whether the filter primitive should perform a noise or turbulence " "function." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2824 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2829 msgid "Base Frequency:" msgstr "Grunntíðni:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2825 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2830 msgid "Octaves:" msgstr "Áttundir:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2826 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2831 msgid "Seed:" msgstr "Sáðtala:" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2826 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2831 msgid "The starting number for the pseudo random number generator." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2838 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2843 msgid "Add filter primitive" msgstr "Bæta við viðfangi á síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2853 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2858 msgid "" "The feBlend filter primitive provides 4 image blending modes: screen, " "multiply, darken and lighten." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2857 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2862 msgid "" "The feColorMatrix filter primitive applies a matrix transformation to " "color of each rendered pixel. This allows for effects like turning object to " "grayscale, modifying color saturation and changing color hue." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2861 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2866 msgid "" "The feComponentTransfer filter primitive manipulates the input's " "color components (red, green, blue, and alpha) according to particular " @@ -15999,7 +16669,7 @@ msgid "" "adjustment, color balance, and thresholding." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2865 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2870 msgid "" "The feComposite filter primitive composites two images using one of " "the Porter-Duff blending modes or the arithmetic mode described in SVG " @@ -16007,7 +16677,7 @@ msgid "" "between the corresponding pixel values of the images." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2869 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2874 msgid "" "The feConvolveMatrix lets you specify a Convolution to be applied on " "the image. Common effects created using convolution matrices are blur, " @@ -16022,7 +16692,7 @@ msgstr "" "þessari síubreytu, þá er hin sértæka gaussíska afskerping mun hraðvirkari, " "auk þess að vera óháð upplausn." -#: ../src/ui/dialog/filter-effects-dialog.cpp:2873 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2878 msgid "" "The feDiffuseLighting and feSpecularLighting filter primitives create " "\"embossed\" shadings. The input's alpha channel is used to provide depth " @@ -16030,7 +16700,7 @@ msgid "" "opacity areas recede away from the viewer." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2877 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2882 msgid "" "The feDisplacementMap filter primitive displaces the pixels in the " "first input using the second input as a displacement map, that shows from " @@ -16038,26 +16708,26 @@ msgid "" "effects." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2881 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2886 msgid "" "The feFlood filter primitive fills the region with a given color and " "opacity. It is usually used as an input to other filters to apply color to " "a graphic." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2885 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2890 msgid "" "The feGaussianBlur filter primitive uniformly blurs its input. It is " "commonly used together with feOffset to create a drop shadow effect." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2889 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2894 msgid "" "The feImage filter primitive fills the region with an external image " "or another part of the document." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2893 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2898 msgid "" "The feMerge filter primitive composites several temporary images " "inside the filter primitive to a single image. It uses normal alpha " @@ -16065,21 +16735,21 @@ msgid "" "in 'normal' mode or several feComposite primitives in 'over' mode." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2897 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2902 msgid "" "The feMorphology filter primitive provides erode and dilate effects. " "For single-color objects erode makes the object thinner and dilate makes it " "thicker." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2901 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2906 msgid "" "The feOffset filter primitive offsets the image by an user-defined " "amount. For example, this is useful for drop shadows, where the shadow is in " "a slightly different position than the actual object." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2905 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2910 msgid "" "The feDiffuseLighting and feSpecularLighting filter primitives " "create \"embossed\" shadings. The input's alpha channel is used to provide " @@ -16087,24 +16757,24 @@ msgid "" "lower opacity areas recede away from the viewer." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2909 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2914 msgid "" "The feTile filter primitive tiles a region with an input graphic. The " "source tile is defined by the filter primitive subregion of the input." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2913 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2918 msgid "" "The feTurbulence filter primitive renders Perlin noise. This kind of " "noise is useful in simulating several nature phenomena like clouds, fire and " "smoke and in generating complex textures like marble or granite." msgstr "" -#: ../src/ui/dialog/filter-effects-dialog.cpp:2933 +#: ../src/ui/dialog/filter-effects-dialog.cpp:2938 msgid "Duplicate filter primitive" msgstr "Tvítaka viðfang síu" -#: ../src/ui/dialog/filter-effects-dialog.cpp:3013 +#: ../src/ui/dialog/filter-effects-dialog.cpp:3018 msgid "Set filter primitive attribute" msgstr "Setja viðfang síu" @@ -16148,6 +16818,11 @@ msgstr "Myn_dval" msgid "Limit search to the current selection" msgstr "Takmarka leit við núverandi val" +#: ../src/ui/dialog/find.cpp:71 ../src/ui/dialog/text-edit.cpp:61 +#: ../share/ui/menus.xml.h:17 +msgid "_Text" +msgstr "_Texti" + #: ../src/ui/dialog/find.cpp:71 msgid "Search in text objects" msgstr "Leita í textahlutum" @@ -16288,7 +16963,7 @@ msgstr "Spíralar" msgid "Search spirals" msgstr "Leita í spírölum" -#: ../src/ui/dialog/find.cpp:96 ../src/widgets/toolbox.cpp:1775 +#: ../src/ui/dialog/find.cpp:96 ../src/widgets/toolbox.cpp:1299 msgid "Paths" msgstr "Ferlar" @@ -16438,720 +17113,720 @@ msgstr "Ekki birta þessa aðvörun aftur" msgid "Font '%1' substituted with '%2'" msgstr "Letrinu '%1' skipt út fyrir '%2'" -#: ../src/ui/dialog/glyphs.cpp:50 ../src/ui/dialog/glyphs.cpp:142 +#: ../src/ui/dialog/glyphs.cpp:49 ../src/ui/dialog/glyphs.cpp:141 msgid "all" msgstr "allt" -#: ../src/ui/dialog/glyphs.cpp:51 +#: ../src/ui/dialog/glyphs.cpp:50 msgid "common" msgstr "almennt" -#: ../src/ui/dialog/glyphs.cpp:52 +#: ../src/ui/dialog/glyphs.cpp:51 msgid "inherited" msgstr "erft" -#: ../src/ui/dialog/glyphs.cpp:53 ../src/ui/dialog/glyphs.cpp:155 +#: ../src/ui/dialog/glyphs.cpp:52 ../src/ui/dialog/glyphs.cpp:154 msgid "Arabic" msgstr "Arabískt" -#: ../src/ui/dialog/glyphs.cpp:54 ../src/ui/dialog/glyphs.cpp:153 +#: ../src/ui/dialog/glyphs.cpp:53 ../src/ui/dialog/glyphs.cpp:152 msgid "Armenian" msgstr "Armeskt" -#: ../src/ui/dialog/glyphs.cpp:55 ../src/ui/dialog/glyphs.cpp:162 +#: ../src/ui/dialog/glyphs.cpp:54 ../src/ui/dialog/glyphs.cpp:161 msgid "Bengali" msgstr "Bengalskt" -#: ../src/ui/dialog/glyphs.cpp:56 ../src/ui/dialog/glyphs.cpp:244 +#: ../src/ui/dialog/glyphs.cpp:55 ../src/ui/dialog/glyphs.cpp:243 msgid "Bopomofo" msgstr "Bopomofo" -#: ../src/ui/dialog/glyphs.cpp:57 ../src/ui/dialog/glyphs.cpp:179 +#: ../src/ui/dialog/glyphs.cpp:56 ../src/ui/dialog/glyphs.cpp:178 msgid "Cherokee" msgstr "Cherokee" -#: ../src/ui/dialog/glyphs.cpp:58 ../src/ui/dialog/glyphs.cpp:232 +#: ../src/ui/dialog/glyphs.cpp:57 ../src/ui/dialog/glyphs.cpp:231 msgid "Coptic" msgstr "Koptískt" -#: ../src/ui/dialog/glyphs.cpp:59 ../src/ui/dialog/glyphs.cpp:151 +#: ../src/ui/dialog/glyphs.cpp:58 ../src/ui/dialog/glyphs.cpp:150 #: ../share/extensions/hershey.inx.h:22 msgid "Cyrillic" msgstr "Kýrílskt" -#: ../src/ui/dialog/glyphs.cpp:60 +#: ../src/ui/dialog/glyphs.cpp:59 msgid "Deseret" msgstr "Deseret" -#: ../src/ui/dialog/glyphs.cpp:61 ../src/ui/dialog/glyphs.cpp:161 +#: ../src/ui/dialog/glyphs.cpp:60 ../src/ui/dialog/glyphs.cpp:160 msgid "Devanagari" msgstr "Devanagarí" -#: ../src/ui/dialog/glyphs.cpp:62 ../src/ui/dialog/glyphs.cpp:177 +#: ../src/ui/dialog/glyphs.cpp:61 ../src/ui/dialog/glyphs.cpp:176 msgid "Ethiopic" msgstr "Eþíópískt" -#: ../src/ui/dialog/glyphs.cpp:63 ../src/ui/dialog/glyphs.cpp:175 +#: ../src/ui/dialog/glyphs.cpp:62 ../src/ui/dialog/glyphs.cpp:174 msgid "Georgian" msgstr "Georgískt" -#: ../src/ui/dialog/glyphs.cpp:64 +#: ../src/ui/dialog/glyphs.cpp:63 msgid "Gothic" msgstr "Gotneskt" -#: ../src/ui/dialog/glyphs.cpp:65 +#: ../src/ui/dialog/glyphs.cpp:64 msgid "Greek" msgstr "Grískt" -#: ../src/ui/dialog/glyphs.cpp:66 ../src/ui/dialog/glyphs.cpp:164 +#: ../src/ui/dialog/glyphs.cpp:65 ../src/ui/dialog/glyphs.cpp:163 msgid "Gujarati" msgstr "Gújaratí" -#: ../src/ui/dialog/glyphs.cpp:67 ../src/ui/dialog/glyphs.cpp:163 +#: ../src/ui/dialog/glyphs.cpp:66 ../src/ui/dialog/glyphs.cpp:162 msgid "Gurmukhi" msgstr "Gúrmúkí" -#: ../src/ui/dialog/glyphs.cpp:68 +#: ../src/ui/dialog/glyphs.cpp:67 msgid "Han" msgstr "Han" -#: ../src/ui/dialog/glyphs.cpp:69 +#: ../src/ui/dialog/glyphs.cpp:68 msgid "Hangul" msgstr "Hangúl" -#: ../src/ui/dialog/glyphs.cpp:70 ../src/ui/dialog/glyphs.cpp:154 +#: ../src/ui/dialog/glyphs.cpp:69 ../src/ui/dialog/glyphs.cpp:153 msgid "Hebrew" msgstr "Hebreskt" -#: ../src/ui/dialog/glyphs.cpp:71 ../src/ui/dialog/glyphs.cpp:242 +#: ../src/ui/dialog/glyphs.cpp:70 ../src/ui/dialog/glyphs.cpp:241 msgid "Hiragana" msgstr "Híragana" -#: ../src/ui/dialog/glyphs.cpp:72 ../src/ui/dialog/glyphs.cpp:168 +#: ../src/ui/dialog/glyphs.cpp:71 ../src/ui/dialog/glyphs.cpp:167 msgid "Kannada" msgstr "Kannada" -#: ../src/ui/dialog/glyphs.cpp:73 ../src/ui/dialog/glyphs.cpp:243 +#: ../src/ui/dialog/glyphs.cpp:72 ../src/ui/dialog/glyphs.cpp:242 msgid "Katakana" msgstr "Katakana" -#: ../src/ui/dialog/glyphs.cpp:74 ../src/ui/dialog/glyphs.cpp:187 +#: ../src/ui/dialog/glyphs.cpp:73 ../src/ui/dialog/glyphs.cpp:186 msgid "Khmer" msgstr "Khmerískt" -#: ../src/ui/dialog/glyphs.cpp:75 ../src/ui/dialog/glyphs.cpp:172 +#: ../src/ui/dialog/glyphs.cpp:74 ../src/ui/dialog/glyphs.cpp:171 msgid "Lao" msgstr "Laó" -#: ../src/ui/dialog/glyphs.cpp:76 +#: ../src/ui/dialog/glyphs.cpp:75 msgid "Latin" msgstr "Latneskt" -#: ../src/ui/dialog/glyphs.cpp:77 ../src/ui/dialog/glyphs.cpp:169 +#: ../src/ui/dialog/glyphs.cpp:76 ../src/ui/dialog/glyphs.cpp:168 msgid "Malayalam" msgstr "Malaíalam" -#: ../src/ui/dialog/glyphs.cpp:78 ../src/ui/dialog/glyphs.cpp:188 +#: ../src/ui/dialog/glyphs.cpp:77 ../src/ui/dialog/glyphs.cpp:187 msgid "Mongolian" msgstr "Mongólskt" -#: ../src/ui/dialog/glyphs.cpp:79 ../src/ui/dialog/glyphs.cpp:174 +#: ../src/ui/dialog/glyphs.cpp:78 ../src/ui/dialog/glyphs.cpp:173 msgid "Myanmar" msgstr "Mjanmar" -#: ../src/ui/dialog/glyphs.cpp:80 ../src/ui/dialog/glyphs.cpp:181 +#: ../src/ui/dialog/glyphs.cpp:79 ../src/ui/dialog/glyphs.cpp:180 msgid "Ogham" msgstr "Ógam" -#: ../src/ui/dialog/glyphs.cpp:81 +#: ../src/ui/dialog/glyphs.cpp:80 msgid "Old Italic" msgstr "Fornítalskt" -#: ../src/ui/dialog/glyphs.cpp:82 ../src/ui/dialog/glyphs.cpp:165 +#: ../src/ui/dialog/glyphs.cpp:81 ../src/ui/dialog/glyphs.cpp:164 msgid "Oriya" msgstr "Oryanskt" -#: ../src/ui/dialog/glyphs.cpp:83 ../src/ui/dialog/glyphs.cpp:182 +#: ../src/ui/dialog/glyphs.cpp:82 ../src/ui/dialog/glyphs.cpp:181 msgid "Runic" msgstr "Rúnir" -#: ../src/ui/dialog/glyphs.cpp:84 ../src/ui/dialog/glyphs.cpp:170 +#: ../src/ui/dialog/glyphs.cpp:83 ../src/ui/dialog/glyphs.cpp:169 msgid "Sinhala" msgstr "Sínhala" -#: ../src/ui/dialog/glyphs.cpp:85 ../src/ui/dialog/glyphs.cpp:156 +#: ../src/ui/dialog/glyphs.cpp:84 ../src/ui/dialog/glyphs.cpp:155 msgid "Syriac" msgstr "Sýrlenskt" -#: ../src/ui/dialog/glyphs.cpp:86 ../src/ui/dialog/glyphs.cpp:166 +#: ../src/ui/dialog/glyphs.cpp:85 ../src/ui/dialog/glyphs.cpp:165 msgid "Tamil" msgstr "Tamílskt" -#: ../src/ui/dialog/glyphs.cpp:87 ../src/ui/dialog/glyphs.cpp:167 +#: ../src/ui/dialog/glyphs.cpp:86 ../src/ui/dialog/glyphs.cpp:166 msgid "Telugu" msgstr "Telúgú" -#: ../src/ui/dialog/glyphs.cpp:88 ../src/ui/dialog/glyphs.cpp:158 +#: ../src/ui/dialog/glyphs.cpp:87 ../src/ui/dialog/glyphs.cpp:157 msgid "Thaana" msgstr "Thaanískt" -#: ../src/ui/dialog/glyphs.cpp:89 ../src/ui/dialog/glyphs.cpp:171 +#: ../src/ui/dialog/glyphs.cpp:88 ../src/ui/dialog/glyphs.cpp:170 msgid "Thai" msgstr "Tælenskt" -#: ../src/ui/dialog/glyphs.cpp:90 ../src/ui/dialog/glyphs.cpp:173 +#: ../src/ui/dialog/glyphs.cpp:89 ../src/ui/dialog/glyphs.cpp:172 msgid "Tibetan" msgstr "Tíbetskt" -#: ../src/ui/dialog/glyphs.cpp:91 +#: ../src/ui/dialog/glyphs.cpp:90 msgid "Canadian Aboriginal" msgstr "Kanadískt frumbyggja" -#: ../src/ui/dialog/glyphs.cpp:92 +#: ../src/ui/dialog/glyphs.cpp:91 msgid "Yi" msgstr "Yi" -#: ../src/ui/dialog/glyphs.cpp:93 ../src/ui/dialog/glyphs.cpp:183 +#: ../src/ui/dialog/glyphs.cpp:92 ../src/ui/dialog/glyphs.cpp:182 msgid "Tagalog" msgstr "Tagalog" -#: ../src/ui/dialog/glyphs.cpp:94 ../src/ui/dialog/glyphs.cpp:184 +#: ../src/ui/dialog/glyphs.cpp:93 ../src/ui/dialog/glyphs.cpp:183 msgid "Hanunoo" msgstr "Hanunoo" -#: ../src/ui/dialog/glyphs.cpp:95 ../src/ui/dialog/glyphs.cpp:185 +#: ../src/ui/dialog/glyphs.cpp:94 ../src/ui/dialog/glyphs.cpp:184 msgid "Buhid" msgstr "Búhid" -#: ../src/ui/dialog/glyphs.cpp:96 ../src/ui/dialog/glyphs.cpp:186 +#: ../src/ui/dialog/glyphs.cpp:95 ../src/ui/dialog/glyphs.cpp:185 msgid "Tagbanwa" msgstr "Tagbanva" -#: ../src/ui/dialog/glyphs.cpp:97 +#: ../src/ui/dialog/glyphs.cpp:96 msgid "Braille" msgstr "Braille blindraletur" -#: ../src/ui/dialog/glyphs.cpp:98 +#: ../src/ui/dialog/glyphs.cpp:97 msgid "Cypriot" msgstr "Kýpverskt" -#: ../src/ui/dialog/glyphs.cpp:99 ../src/ui/dialog/glyphs.cpp:190 +#: ../src/ui/dialog/glyphs.cpp:98 ../src/ui/dialog/glyphs.cpp:189 msgid "Limbu" msgstr "Limbú" -#: ../src/ui/dialog/glyphs.cpp:100 +#: ../src/ui/dialog/glyphs.cpp:99 msgid "Osmanya" msgstr "Ósmanía" -#: ../src/ui/dialog/glyphs.cpp:101 +#: ../src/ui/dialog/glyphs.cpp:100 msgid "Shavian" msgstr "Shavískt" -#: ../src/ui/dialog/glyphs.cpp:102 +#: ../src/ui/dialog/glyphs.cpp:101 msgid "Linear B" msgstr "Línulegt B" -#: ../src/ui/dialog/glyphs.cpp:103 ../src/ui/dialog/glyphs.cpp:191 +#: ../src/ui/dialog/glyphs.cpp:102 ../src/ui/dialog/glyphs.cpp:190 msgid "Tai Le" msgstr "Tai Le" -#: ../src/ui/dialog/glyphs.cpp:104 +#: ../src/ui/dialog/glyphs.cpp:103 msgid "Ugaritic" msgstr "Ugaritískt" -#: ../src/ui/dialog/glyphs.cpp:105 ../src/ui/dialog/glyphs.cpp:192 +#: ../src/ui/dialog/glyphs.cpp:104 ../src/ui/dialog/glyphs.cpp:191 msgid "New Tai Lue" msgstr "Nýja Tai Lue" -#: ../src/ui/dialog/glyphs.cpp:106 ../src/ui/dialog/glyphs.cpp:194 +#: ../src/ui/dialog/glyphs.cpp:105 ../src/ui/dialog/glyphs.cpp:193 msgid "Buginese" msgstr "Buginískt" -#: ../src/ui/dialog/glyphs.cpp:107 ../src/ui/dialog/glyphs.cpp:230 +#: ../src/ui/dialog/glyphs.cpp:106 ../src/ui/dialog/glyphs.cpp:229 msgid "Glagolitic" msgstr "Glagolitískt" -#: ../src/ui/dialog/glyphs.cpp:108 ../src/ui/dialog/glyphs.cpp:234 +#: ../src/ui/dialog/glyphs.cpp:107 ../src/ui/dialog/glyphs.cpp:233 msgid "Tifinagh" msgstr "Tifinagh" -#: ../src/ui/dialog/glyphs.cpp:109 ../src/ui/dialog/glyphs.cpp:263 +#: ../src/ui/dialog/glyphs.cpp:108 ../src/ui/dialog/glyphs.cpp:262 msgid "Syloti Nagri" msgstr "Syloti Nagri" -#: ../src/ui/dialog/glyphs.cpp:110 +#: ../src/ui/dialog/glyphs.cpp:109 msgid "Old Persian" msgstr "Forn-persneskt" -#: ../src/ui/dialog/glyphs.cpp:111 +#: ../src/ui/dialog/glyphs.cpp:110 msgid "Kharoshthi" msgstr "Kharoshthi" -#: ../src/ui/dialog/glyphs.cpp:112 +#: ../src/ui/dialog/glyphs.cpp:111 msgid "unassigned" msgstr "ekki úthlutað" -#: ../src/ui/dialog/glyphs.cpp:113 ../src/ui/dialog/glyphs.cpp:196 +#: ../src/ui/dialog/glyphs.cpp:112 ../src/ui/dialog/glyphs.cpp:195 msgid "Balinese" msgstr "Balískt" -#: ../src/ui/dialog/glyphs.cpp:114 +#: ../src/ui/dialog/glyphs.cpp:113 msgid "Cuneiform" msgstr "Leirtöfluskrift" -#: ../src/ui/dialog/glyphs.cpp:115 +#: ../src/ui/dialog/glyphs.cpp:114 msgid "Phoenician" msgstr "Fönikískt" -#: ../src/ui/dialog/glyphs.cpp:116 ../src/ui/dialog/glyphs.cpp:265 +#: ../src/ui/dialog/glyphs.cpp:115 ../src/ui/dialog/glyphs.cpp:264 msgid "Phags-pa" msgstr "Phags-pa" -#: ../src/ui/dialog/glyphs.cpp:117 +#: ../src/ui/dialog/glyphs.cpp:116 msgid "N'Ko" msgstr "N'Ko" -#: ../src/ui/dialog/glyphs.cpp:118 ../src/ui/dialog/glyphs.cpp:268 +#: ../src/ui/dialog/glyphs.cpp:117 ../src/ui/dialog/glyphs.cpp:267 msgid "Kayah Li" msgstr "Kayah Li" -#: ../src/ui/dialog/glyphs.cpp:119 ../src/ui/dialog/glyphs.cpp:198 +#: ../src/ui/dialog/glyphs.cpp:118 ../src/ui/dialog/glyphs.cpp:197 msgid "Lepcha" msgstr "Lepcha" -#: ../src/ui/dialog/glyphs.cpp:120 ../src/ui/dialog/glyphs.cpp:269 +#: ../src/ui/dialog/glyphs.cpp:119 ../src/ui/dialog/glyphs.cpp:268 msgid "Rejang" msgstr "Rejang" -#: ../src/ui/dialog/glyphs.cpp:121 ../src/ui/dialog/glyphs.cpp:197 +#: ../src/ui/dialog/glyphs.cpp:120 ../src/ui/dialog/glyphs.cpp:196 msgid "Sundanese" msgstr "Sundaneskt" -#: ../src/ui/dialog/glyphs.cpp:122 ../src/ui/dialog/glyphs.cpp:266 +#: ../src/ui/dialog/glyphs.cpp:121 ../src/ui/dialog/glyphs.cpp:265 msgid "Saurashtra" msgstr "Saurashtra" -#: ../src/ui/dialog/glyphs.cpp:123 ../src/ui/dialog/glyphs.cpp:272 +#: ../src/ui/dialog/glyphs.cpp:122 ../src/ui/dialog/glyphs.cpp:271 msgid "Cham" msgstr "Cham" -#: ../src/ui/dialog/glyphs.cpp:124 ../src/ui/dialog/glyphs.cpp:199 +#: ../src/ui/dialog/glyphs.cpp:123 ../src/ui/dialog/glyphs.cpp:198 msgid "Ol Chiki" msgstr "Ol Chiki" -#: ../src/ui/dialog/glyphs.cpp:125 ../src/ui/dialog/glyphs.cpp:258 +#: ../src/ui/dialog/glyphs.cpp:124 ../src/ui/dialog/glyphs.cpp:257 msgid "Vai" msgstr "Vai" -#: ../src/ui/dialog/glyphs.cpp:126 +#: ../src/ui/dialog/glyphs.cpp:125 msgid "Carian" msgstr "Carian" -#: ../src/ui/dialog/glyphs.cpp:127 +#: ../src/ui/dialog/glyphs.cpp:126 msgid "Lycian" msgstr "Lycian" -#: ../src/ui/dialog/glyphs.cpp:128 +#: ../src/ui/dialog/glyphs.cpp:127 msgid "Lydian" msgstr "Lydian" -#: ../src/ui/dialog/glyphs.cpp:143 +#: ../src/ui/dialog/glyphs.cpp:142 msgid "Basic Latin" msgstr "Grunn-latneskt" -#: ../src/ui/dialog/glyphs.cpp:144 +#: ../src/ui/dialog/glyphs.cpp:143 msgid "Latin-1 Supplement" msgstr "Latína-1 viðbótar" -#: ../src/ui/dialog/glyphs.cpp:145 +#: ../src/ui/dialog/glyphs.cpp:144 msgid "Latin Extended-A" msgstr "Latínuviðauki-A" -#: ../src/ui/dialog/glyphs.cpp:146 +#: ../src/ui/dialog/glyphs.cpp:145 msgid "Latin Extended-B" msgstr "Latínuviðauki-B" -#: ../src/ui/dialog/glyphs.cpp:147 +#: ../src/ui/dialog/glyphs.cpp:146 msgid "IPA Extensions" msgstr "IPA-hljóðfræðitákn" -#: ../src/ui/dialog/glyphs.cpp:148 +#: ../src/ui/dialog/glyphs.cpp:147 msgid "Spacing Modifier Letters" msgstr "Bilbreytistafir" -#: ../src/ui/dialog/glyphs.cpp:149 +#: ../src/ui/dialog/glyphs.cpp:148 msgid "Combining Diacritical Marks" msgstr "Samsetning broddmerkja" -#: ../src/ui/dialog/glyphs.cpp:150 +#: ../src/ui/dialog/glyphs.cpp:149 msgid "Greek and Coptic" msgstr "Grískt og koptískt" -#: ../src/ui/dialog/glyphs.cpp:152 +#: ../src/ui/dialog/glyphs.cpp:151 msgid "Cyrillic Supplement" msgstr "Kýrílskt viðbótar" -#: ../src/ui/dialog/glyphs.cpp:157 +#: ../src/ui/dialog/glyphs.cpp:156 msgid "Arabic Supplement" msgstr "Arabískt viðbótar" -#: ../src/ui/dialog/glyphs.cpp:159 +#: ../src/ui/dialog/glyphs.cpp:158 msgid "NKo" msgstr "NKo" -#: ../src/ui/dialog/glyphs.cpp:160 +#: ../src/ui/dialog/glyphs.cpp:159 msgid "Samaritan" msgstr "Samarískt" -#: ../src/ui/dialog/glyphs.cpp:176 +#: ../src/ui/dialog/glyphs.cpp:175 msgid "Hangul Jamo" msgstr "Hangúl Jamó" -#: ../src/ui/dialog/glyphs.cpp:178 +#: ../src/ui/dialog/glyphs.cpp:177 msgid "Ethiopic Supplement" msgstr "Eþíópískt viðbótar" -#: ../src/ui/dialog/glyphs.cpp:180 +#: ../src/ui/dialog/glyphs.cpp:179 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Samræmd kanadísk atkvæðaskrift" -#: ../src/ui/dialog/glyphs.cpp:189 +#: ../src/ui/dialog/glyphs.cpp:188 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Sameinuð atkvæðamál kanadískra frumbyggja - viðauki" -#: ../src/ui/dialog/glyphs.cpp:193 +#: ../src/ui/dialog/glyphs.cpp:192 msgid "Khmer Symbols" msgstr "Khmer-tákn" -#: ../src/ui/dialog/glyphs.cpp:195 +#: ../src/ui/dialog/glyphs.cpp:194 msgid "Tai Tham" msgstr "Tai Tham" -#: ../src/ui/dialog/glyphs.cpp:200 +#: ../src/ui/dialog/glyphs.cpp:199 msgid "Vedic Extensions" msgstr "Vedískar viðbætur" -#: ../src/ui/dialog/glyphs.cpp:201 +#: ../src/ui/dialog/glyphs.cpp:200 msgid "Phonetic Extensions" msgstr "Hljóðfræðitákn" -#: ../src/ui/dialog/glyphs.cpp:202 +#: ../src/ui/dialog/glyphs.cpp:201 msgid "Phonetic Extensions Supplement" msgstr "Hljóðfræðiviðbætur auknar" -#: ../src/ui/dialog/glyphs.cpp:203 +#: ../src/ui/dialog/glyphs.cpp:202 msgid "Combining Diacritical Marks Supplement" msgstr "Viðbótar samsetningar broddstafamerkja" -#: ../src/ui/dialog/glyphs.cpp:204 +#: ../src/ui/dialog/glyphs.cpp:203 msgid "Latin Extended Additional" msgstr "Latneskir aukalegir viðaukar" -#: ../src/ui/dialog/glyphs.cpp:205 +#: ../src/ui/dialog/glyphs.cpp:204 msgid "Greek Extended" msgstr "Grískt viðauki" -#: ../src/ui/dialog/glyphs.cpp:206 +#: ../src/ui/dialog/glyphs.cpp:205 msgid "General Punctuation" msgstr "Almenn greinamerki" -#: ../src/ui/dialog/glyphs.cpp:207 +#: ../src/ui/dialog/glyphs.cpp:206 msgid "Superscripts and Subscripts" msgstr "Yfir- og undirskrift" -#: ../src/ui/dialog/glyphs.cpp:208 +#: ../src/ui/dialog/glyphs.cpp:207 msgid "Currency Symbols" msgstr "Gjaldmiðlatákn" -#: ../src/ui/dialog/glyphs.cpp:209 +#: ../src/ui/dialog/glyphs.cpp:208 msgid "Combining Diacritical Marks for Symbols" msgstr "Samlagandi broddstafamerki fyrir tákn" -#: ../src/ui/dialog/glyphs.cpp:210 +#: ../src/ui/dialog/glyphs.cpp:209 msgid "Letterlike Symbols" msgstr "Staflík tákn" -#: ../src/ui/dialog/glyphs.cpp:211 +#: ../src/ui/dialog/glyphs.cpp:210 msgid "Number Forms" msgstr "Töluform" -#: ../src/ui/dialog/glyphs.cpp:212 +#: ../src/ui/dialog/glyphs.cpp:211 msgid "Arrows" msgstr "Örvar" -#: ../src/ui/dialog/glyphs.cpp:213 +#: ../src/ui/dialog/glyphs.cpp:212 msgid "Mathematical Operators" msgstr "Stærðfræðiaðgerðatákn" -#: ../src/ui/dialog/glyphs.cpp:214 +#: ../src/ui/dialog/glyphs.cpp:213 msgid "Miscellaneous Technical" msgstr "Ýmis tæknileg tákn" -#: ../src/ui/dialog/glyphs.cpp:215 +#: ../src/ui/dialog/glyphs.cpp:214 msgid "Control Pictures" msgstr "Stjórnmyndir" -#: ../src/ui/dialog/glyphs.cpp:216 +#: ../src/ui/dialog/glyphs.cpp:215 msgid "Optical Character Recognition" msgstr "Myndlestur (OCR)" -#: ../src/ui/dialog/glyphs.cpp:217 +#: ../src/ui/dialog/glyphs.cpp:216 msgid "Enclosed Alphanumerics" msgstr "Umlukt leturtákn" -#: ../src/ui/dialog/glyphs.cpp:218 +#: ../src/ui/dialog/glyphs.cpp:217 msgid "Box Drawing" msgstr "Rammateikning" -#: ../src/ui/dialog/glyphs.cpp:219 +#: ../src/ui/dialog/glyphs.cpp:218 msgid "Block Elements" msgstr "Blokkareiningar" -#: ../src/ui/dialog/glyphs.cpp:220 +#: ../src/ui/dialog/glyphs.cpp:219 msgid "Geometric Shapes" msgstr "Rúmfræðiform" -#: ../src/ui/dialog/glyphs.cpp:221 +#: ../src/ui/dialog/glyphs.cpp:220 msgid "Miscellaneous Symbols" msgstr "Ýmis tákn" -#: ../src/ui/dialog/glyphs.cpp:222 +#: ../src/ui/dialog/glyphs.cpp:221 msgid "Dingbats" msgstr "Dingbats tákn" -#: ../src/ui/dialog/glyphs.cpp:223 +#: ../src/ui/dialog/glyphs.cpp:222 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Ýmis stærðfræðitákn-A" -#: ../src/ui/dialog/glyphs.cpp:224 +#: ../src/ui/dialog/glyphs.cpp:223 msgid "Supplemental Arrows-A" msgstr "Aukaörvar-A" -#: ../src/ui/dialog/glyphs.cpp:225 +#: ../src/ui/dialog/glyphs.cpp:224 msgid "Braille Patterns" msgstr "Braille-mynstur" -#: ../src/ui/dialog/glyphs.cpp:226 +#: ../src/ui/dialog/glyphs.cpp:225 msgid "Supplemental Arrows-B" msgstr "Aukaörvar-B" -#: ../src/ui/dialog/glyphs.cpp:227 +#: ../src/ui/dialog/glyphs.cpp:226 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Ýmis stærðfræðitákn-B" -#: ../src/ui/dialog/glyphs.cpp:228 +#: ../src/ui/dialog/glyphs.cpp:227 msgid "Supplemental Mathematical Operators" msgstr "Viðbótar stærðfræðiaðgerðatákn" -#: ../src/ui/dialog/glyphs.cpp:229 +#: ../src/ui/dialog/glyphs.cpp:228 msgid "Miscellaneous Symbols and Arrows" msgstr "Ýmis tákn og örvar" -#: ../src/ui/dialog/glyphs.cpp:231 +#: ../src/ui/dialog/glyphs.cpp:230 msgid "Latin Extended-C" msgstr "Latínuviðauki-C" -#: ../src/ui/dialog/glyphs.cpp:233 +#: ../src/ui/dialog/glyphs.cpp:232 msgid "Georgian Supplement" msgstr "Georgískt viðbótar" -#: ../src/ui/dialog/glyphs.cpp:235 +#: ../src/ui/dialog/glyphs.cpp:234 msgid "Ethiopic Extended" msgstr "Eþíópískt viðauki" -#: ../src/ui/dialog/glyphs.cpp:236 +#: ../src/ui/dialog/glyphs.cpp:235 msgid "Cyrillic Extended-A" msgstr "Kyrilískt viðauki-A" -#: ../src/ui/dialog/glyphs.cpp:237 +#: ../src/ui/dialog/glyphs.cpp:236 msgid "Supplemental Punctuation" msgstr "Auka greinamerki" -#: ../src/ui/dialog/glyphs.cpp:238 +#: ../src/ui/dialog/glyphs.cpp:237 msgid "CJK Radicals Supplement" msgstr "CJK sérhljóðaviðbót (radicals)" -#: ../src/ui/dialog/glyphs.cpp:239 +#: ../src/ui/dialog/glyphs.cpp:238 msgid "Kangxi Radicals" msgstr "Kangxi sérhljóðar" -#: ../src/ui/dialog/glyphs.cpp:240 +#: ../src/ui/dialog/glyphs.cpp:239 msgid "Ideographic Description Characters" msgstr "Stafir til lýsingar myndleturs" -#: ../src/ui/dialog/glyphs.cpp:241 +#: ../src/ui/dialog/glyphs.cpp:240 msgid "CJK Symbols and Punctuation" msgstr "CJK-tákn og kommusetning" -#: ../src/ui/dialog/glyphs.cpp:245 +#: ../src/ui/dialog/glyphs.cpp:244 msgid "Hangul Compatibility Jamo" msgstr "Hangúl-samhæft Jamó" -#: ../src/ui/dialog/glyphs.cpp:246 +#: ../src/ui/dialog/glyphs.cpp:245 msgid "Kanbun" msgstr "Kanbún" -#: ../src/ui/dialog/glyphs.cpp:247 +#: ../src/ui/dialog/glyphs.cpp:246 msgid "Bopomofo Extended" msgstr "Bopomofo viðauki" -#: ../src/ui/dialog/glyphs.cpp:248 +#: ../src/ui/dialog/glyphs.cpp:247 msgid "CJK Strokes" msgstr "CJK útlínur" -#: ../src/ui/dialog/glyphs.cpp:249 +#: ../src/ui/dialog/glyphs.cpp:248 msgid "Katakana Phonetic Extensions" msgstr "Katakana-hljóðfræðiviðbætur" -#: ../src/ui/dialog/glyphs.cpp:250 +#: ../src/ui/dialog/glyphs.cpp:249 msgid "Enclosed CJK Letters and Months" msgstr "Umlykjandi CJK stafir og mánuðir" -#: ../src/ui/dialog/glyphs.cpp:251 +#: ../src/ui/dialog/glyphs.cpp:250 msgid "CJK Compatibility" msgstr "CJK samhæfni" -#: ../src/ui/dialog/glyphs.cpp:252 +#: ../src/ui/dialog/glyphs.cpp:251 msgid "CJK Unified Ideographs Extension A" msgstr "CJK samræmt myndletur viðauki A" -#: ../src/ui/dialog/glyphs.cpp:253 +#: ../src/ui/dialog/glyphs.cpp:252 msgid "Yijing Hexagram Symbols" msgstr "Jijing-sexröndungar" -#: ../src/ui/dialog/glyphs.cpp:254 +#: ../src/ui/dialog/glyphs.cpp:253 msgid "CJK Unified Ideographs" msgstr "CJK samræmt myndletur" -#: ../src/ui/dialog/glyphs.cpp:255 +#: ../src/ui/dialog/glyphs.cpp:254 msgid "Yi Syllables" msgstr "Ji-atkvæðatákn" -#: ../src/ui/dialog/glyphs.cpp:256 +#: ../src/ui/dialog/glyphs.cpp:255 msgid "Yi Radicals" msgstr "Yi sérhljóðar" -#: ../src/ui/dialog/glyphs.cpp:257 +#: ../src/ui/dialog/glyphs.cpp:256 msgid "Lisu" msgstr "Lisu" -#: ../src/ui/dialog/glyphs.cpp:259 +#: ../src/ui/dialog/glyphs.cpp:258 msgid "Cyrillic Extended-B" msgstr "Kyrilískt viðauki-B" -#: ../src/ui/dialog/glyphs.cpp:260 +#: ../src/ui/dialog/glyphs.cpp:259 msgid "Bamum" msgstr "Bamum" -#: ../src/ui/dialog/glyphs.cpp:261 +#: ../src/ui/dialog/glyphs.cpp:260 msgid "Modifier Tone Letters" msgstr "Tónbreytar" -#: ../src/ui/dialog/glyphs.cpp:262 +#: ../src/ui/dialog/glyphs.cpp:261 msgid "Latin Extended-D" msgstr "Latínuviðauki-D" -#: ../src/ui/dialog/glyphs.cpp:264 +#: ../src/ui/dialog/glyphs.cpp:263 msgid "Common Indic Number Forms" msgstr "Algeng indversk talnasnið" -#: ../src/ui/dialog/glyphs.cpp:267 +#: ../src/ui/dialog/glyphs.cpp:266 msgid "Devanagari Extended" msgstr "Devanagari viðaukið" -#: ../src/ui/dialog/glyphs.cpp:270 +#: ../src/ui/dialog/glyphs.cpp:269 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo viðauki-A" -#: ../src/ui/dialog/glyphs.cpp:271 +#: ../src/ui/dialog/glyphs.cpp:270 msgid "Javanese" msgstr "Javaneskt" -#: ../src/ui/dialog/glyphs.cpp:273 +#: ../src/ui/dialog/glyphs.cpp:272 msgid "Myanmar Extended-A" msgstr "Myanmar viðauki-A" -#: ../src/ui/dialog/glyphs.cpp:274 +#: ../src/ui/dialog/glyphs.cpp:273 msgid "Tai Viet" msgstr "Tai Viet" -#: ../src/ui/dialog/glyphs.cpp:275 +#: ../src/ui/dialog/glyphs.cpp:274 msgid "Meetei Mayek" msgstr "Meetei Mayek" -#: ../src/ui/dialog/glyphs.cpp:276 +#: ../src/ui/dialog/glyphs.cpp:275 msgid "Hangul Syllables" msgstr "Hangúl-atkvæðatákn" -#: ../src/ui/dialog/glyphs.cpp:277 +#: ../src/ui/dialog/glyphs.cpp:276 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo viðauki-B" -#: ../src/ui/dialog/glyphs.cpp:278 +#: ../src/ui/dialog/glyphs.cpp:277 msgid "High Surrogates" msgstr "Háir staðgenglar" -#: ../src/ui/dialog/glyphs.cpp:279 +#: ../src/ui/dialog/glyphs.cpp:278 msgid "High Private Use Surrogates" msgstr "Háir einkanotastaðgenglar" -#: ../src/ui/dialog/glyphs.cpp:280 +#: ../src/ui/dialog/glyphs.cpp:279 msgid "Low Surrogates" msgstr "Lágir staðgenglar" -#: ../src/ui/dialog/glyphs.cpp:281 +#: ../src/ui/dialog/glyphs.cpp:280 msgid "Private Use Area" msgstr "Einkanotasvæði" -#: ../src/ui/dialog/glyphs.cpp:282 +#: ../src/ui/dialog/glyphs.cpp:281 msgid "CJK Compatibility Ideographs" msgstr "CJK-samhæfð myndtákn" -#: ../src/ui/dialog/glyphs.cpp:283 +#: ../src/ui/dialog/glyphs.cpp:282 msgid "Alphabetic Presentation Forms" msgstr "Hljóðstafa-samhengisform" -#: ../src/ui/dialog/glyphs.cpp:284 +#: ../src/ui/dialog/glyphs.cpp:283 msgid "Arabic Presentation Forms-A" msgstr "Arabísk samhengisform-A" -#: ../src/ui/dialog/glyphs.cpp:285 +#: ../src/ui/dialog/glyphs.cpp:284 msgid "Variation Selectors" msgstr "Afbrigðaveljarar" -#: ../src/ui/dialog/glyphs.cpp:286 +#: ../src/ui/dialog/glyphs.cpp:285 msgid "Vertical Forms" msgstr "Lóðrétt form" -#: ../src/ui/dialog/glyphs.cpp:287 +#: ../src/ui/dialog/glyphs.cpp:286 msgid "Combining Half Marks" msgstr "Samsetning hálfmerkja" -#: ../src/ui/dialog/glyphs.cpp:288 +#: ../src/ui/dialog/glyphs.cpp:287 msgid "CJK Compatibility Forms" msgstr "CJK samræmingarform" -#: ../src/ui/dialog/glyphs.cpp:289 +#: ../src/ui/dialog/glyphs.cpp:288 msgid "Small Form Variants" msgstr "Smáformaafbrigði" -#: ../src/ui/dialog/glyphs.cpp:290 +#: ../src/ui/dialog/glyphs.cpp:289 msgid "Arabic Presentation Forms-B" msgstr "Arabísk samhengisform-B" -#: ../src/ui/dialog/glyphs.cpp:291 +#: ../src/ui/dialog/glyphs.cpp:290 msgid "Halfwidth and Fullwidth Forms" msgstr "Hálfbreið og fullbreið form" -#: ../src/ui/dialog/glyphs.cpp:292 +#: ../src/ui/dialog/glyphs.cpp:291 msgid "Specials" msgstr "Sértákn" -#: ../src/ui/dialog/glyphs.cpp:355 +#: ../src/ui/dialog/glyphs.cpp:354 msgid "Script: " msgstr "Skrift: " -#: ../src/ui/dialog/glyphs.cpp:380 +#: ../src/ui/dialog/glyphs.cpp:379 msgid "Range: " msgstr "Svið: " @@ -17163,47 +17838,47 @@ msgstr "Bæta við" msgid "Append text" msgstr "Bæta við texta" -#: ../src/ui/dialog/grid-arrange-tab.cpp:342 +#: ../src/ui/dialog/grid-arrange-tab.cpp:340 msgid "Arrange in a grid" msgstr "Raða á hnitanet" -#: ../src/ui/dialog/grid-arrange-tab.cpp:570 +#: ../src/ui/dialog/grid-arrange-tab.cpp:568 #: ../src/ui/dialog/object-attributes.cpp:63 #: ../src/ui/dialog/object-attributes.cpp:72 -#: ../src/ui/widget/page-sizer.cpp:230 ../src/widgets/desktop-widget.cpp:609 +#: ../src/ui/widget/page-sizer.cpp:230 ../src/widgets/desktop-widget.cpp:635 #: ../src/widgets/node-toolbar.cpp:579 msgid "X:" msgstr "X:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:570 +#: ../src/ui/dialog/grid-arrange-tab.cpp:568 msgid "Horizontal spacing between columns." msgstr "Lárétt millibil dálka." -#: ../src/ui/dialog/grid-arrange-tab.cpp:571 +#: ../src/ui/dialog/grid-arrange-tab.cpp:569 #: ../src/ui/dialog/object-attributes.cpp:64 #: ../src/ui/dialog/object-attributes.cpp:73 -#: ../src/ui/widget/page-sizer.cpp:231 ../src/widgets/desktop-widget.cpp:610 +#: ../src/ui/widget/page-sizer.cpp:231 ../src/widgets/desktop-widget.cpp:636 #: ../src/widgets/node-toolbar.cpp:597 msgid "Y:" msgstr "Y:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:571 +#: ../src/ui/dialog/grid-arrange-tab.cpp:569 msgid "Vertical spacing between rows." msgstr "Lóðrétt millibil raða." -#: ../src/ui/dialog/grid-arrange-tab.cpp:613 +#: ../src/ui/dialog/grid-arrange-tab.cpp:611 msgid "_Rows:" msgstr "_Raðir:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:622 +#: ../src/ui/dialog/grid-arrange-tab.cpp:621 msgid "Number of rows" msgstr "Fjöldi raða" -#: ../src/ui/dialog/grid-arrange-tab.cpp:626 +#: ../src/ui/dialog/grid-arrange-tab.cpp:625 msgid "Equal _height" msgstr "Jöfn _hæð" -#: ../src/ui/dialog/grid-arrange-tab.cpp:637 +#: ../src/ui/dialog/grid-arrange-tab.cpp:636 msgid "If not set, each row has the height of the tallest object in it" msgstr "" @@ -17212,75 +17887,75 @@ msgstr "" msgid "_Columns:" msgstr "_Dálkar:" -#: ../src/ui/dialog/grid-arrange-tab.cpp:662 +#: ../src/ui/dialog/grid-arrange-tab.cpp:663 msgid "Number of columns" msgstr "Fjöldi dálka" -#: ../src/ui/dialog/grid-arrange-tab.cpp:666 +#: ../src/ui/dialog/grid-arrange-tab.cpp:667 msgid "Equal _width" msgstr "Jöfn _breidd" -#: ../src/ui/dialog/grid-arrange-tab.cpp:676 +#: ../src/ui/dialog/grid-arrange-tab.cpp:677 msgid "If not set, each column has the width of the widest object in it" msgstr "" #. Anchor selection widget -#: ../src/ui/dialog/grid-arrange-tab.cpp:687 +#: ../src/ui/dialog/grid-arrange-tab.cpp:689 msgid "Alignment:" msgstr "Jöfnun:" #. #### Radio buttons to control spacing manually or to fit selection bbox #### -#: ../src/ui/dialog/grid-arrange-tab.cpp:696 +#: ../src/ui/dialog/grid-arrange-tab.cpp:699 msgid "_Fit into selection box" msgstr "La_ga að valsvæði" -#: ../src/ui/dialog/grid-arrange-tab.cpp:703 +#: ../src/ui/dialog/grid-arrange-tab.cpp:706 msgid "_Set spacing:" msgstr "_Setja millibil:" -#: ../src/ui/dialog/guides.cpp:43 +#: ../src/ui/dialog/guides.cpp:41 msgid "Lo_cked" msgstr "_Læst" -#: ../src/ui/dialog/guides.cpp:43 +#: ../src/ui/dialog/guides.cpp:41 msgid "Lock the movement of guides" msgstr "Læsa tilfærslu stoðlína" -#: ../src/ui/dialog/guides.cpp:44 +#: ../src/ui/dialog/guides.cpp:42 msgid "Rela_tive change" msgstr "Afs_tæð breyting" -#: ../src/ui/dialog/guides.cpp:44 +#: ../src/ui/dialog/guides.cpp:42 msgid "Move and/or rotate the guide relative to current settings" msgstr "Færa og/eða snúa stoðlínu afstætt við núverandi stillingar" -#: ../src/ui/dialog/guides.cpp:45 +#: ../src/ui/dialog/guides.cpp:43 msgctxt "Guides" msgid "_X:" msgstr "_X:" -#: ../src/ui/dialog/guides.cpp:46 +#: ../src/ui/dialog/guides.cpp:44 msgctxt "Guides" msgid "_Y:" msgstr "_Y:" -#: ../src/ui/dialog/guides.cpp:47 ../src/ui/dialog/object-properties.cpp:51 +#: ../src/ui/dialog/guides.cpp:45 ../src/ui/dialog/object-properties.cpp:51 msgid "_Label:" msgstr "S_kýring:" -#: ../src/ui/dialog/guides.cpp:47 +#: ../src/ui/dialog/guides.cpp:45 msgid "Optionally give this guideline a name" msgstr "" -#: ../src/ui/dialog/guides.cpp:48 +#: ../src/ui/dialog/guides.cpp:46 msgid "_Angle:" msgstr "H_orn:" -#: ../src/ui/dialog/guides.cpp:130 +#: ../src/ui/dialog/guides.cpp:128 msgid "Set guide properties" msgstr "Stilla eiginleika stoðlínu" -#: ../src/ui/dialog/guides.cpp:160 +#: ../src/ui/dialog/guides.cpp:158 msgid "Guideline" msgstr "Stoðlína" @@ -17303,75 +17978,75 @@ msgstr "%d × %d" msgid "Magnified:" msgstr "Stækkað:" -#: ../src/ui/dialog/icon-preview.cpp:233 +#: ../src/ui/dialog/icon-preview.cpp:232 msgid "Actual Size:" msgstr "Raunstærð:" -#: ../src/ui/dialog/icon-preview.cpp:238 +#: ../src/ui/dialog/icon-preview.cpp:237 msgctxt "Icon preview window" msgid "Sele_ction" msgstr "Myn_dval" -#: ../src/ui/dialog/icon-preview.cpp:240 +#: ../src/ui/dialog/icon-preview.cpp:239 msgid "Selection only or whole document" msgstr "Aðeins myndval eða allt skjalið" -#: ../src/ui/dialog/inkscape-preferences.cpp:171 +#: ../src/ui/dialog/inkscape-preferences.cpp:170 msgid "Show selection cue" msgstr "Sýna valmerkingu" -#: ../src/ui/dialog/inkscape-preferences.cpp:172 +#: ../src/ui/dialog/inkscape-preferences.cpp:171 msgid "" "Whether selected objects display a selection cue (the same as in selector)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:178 +#: ../src/ui/dialog/inkscape-preferences.cpp:177 msgid "Enable gradient editing" msgstr "Leyfa breytingar á litstiglum" -#: ../src/ui/dialog/inkscape-preferences.cpp:179 +#: ../src/ui/dialog/inkscape-preferences.cpp:178 msgid "Whether selected objects display gradient editing controls" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:184 +#: ../src/ui/dialog/inkscape-preferences.cpp:183 msgid "Conversion to guides uses edges instead of bounding box" msgstr "Umbreyting í stoðlínur notar jaðra í stað umgjarðar" -#: ../src/ui/dialog/inkscape-preferences.cpp:185 +#: ../src/ui/dialog/inkscape-preferences.cpp:184 msgid "" "Converting an object to guides places these along the object's true edges " "(imitating the object's shape), not along the bounding box" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:192 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 msgid "Ctrl+click _dot size:" msgstr "Ctrl+smella _punktstærð:" -#: ../src/ui/dialog/inkscape-preferences.cpp:192 +#: ../src/ui/dialog/inkscape-preferences.cpp:191 msgid "times current stroke width" msgstr "sinnum núverandi línubreidd" -#: ../src/ui/dialog/inkscape-preferences.cpp:193 +#: ../src/ui/dialog/inkscape-preferences.cpp:192 msgid "Size of dots created with Ctrl+click (relative to current stroke width)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:201 +#: ../src/ui/dialog/inkscape-preferences.cpp:200 msgid "Base simplify:" msgstr "Einfalda grunn:" -#: ../src/ui/dialog/inkscape-preferences.cpp:201 +#: ../src/ui/dialog/inkscape-preferences.cpp:200 msgid "on dynamic LPE simplify" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:202 +#: ../src/ui/dialog/inkscape-preferences.cpp:201 msgid "Base simplify of dynamic LPE based simplify" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:217 +#: ../src/ui/dialog/inkscape-preferences.cpp:216 msgid "No objects selected to take the style from." msgstr "Engir hlutir valdir sem hægt er að taka stíl eftir." -#: ../src/ui/dialog/inkscape-preferences.cpp:226 +#: ../src/ui/dialog/inkscape-preferences.cpp:225 msgid "" "More than one object selected. Cannot take style from multiple " "objects." @@ -17379,289 +18054,289 @@ msgstr "" "Meira en einn hlutur valinn. Get ekki tekið við stíl frá mörgum " "hlutum." -#: ../src/ui/dialog/inkscape-preferences.cpp:262 +#: ../src/ui/dialog/inkscape-preferences.cpp:261 msgid "Style of new objects" msgstr "Stíll nýrra hluta" -#: ../src/ui/dialog/inkscape-preferences.cpp:264 +#: ../src/ui/dialog/inkscape-preferences.cpp:263 msgid "Last used style" msgstr "Síðast notaða stíl" -#: ../src/ui/dialog/inkscape-preferences.cpp:266 +#: ../src/ui/dialog/inkscape-preferences.cpp:265 msgid "Apply the style you last set on an object" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:271 +#: ../src/ui/dialog/inkscape-preferences.cpp:269 msgid "This tool's own style:" msgstr "Eigin stíl þessa verkfæris:" -#: ../src/ui/dialog/inkscape-preferences.cpp:275 +#: ../src/ui/dialog/inkscape-preferences.cpp:273 msgid "" "Each tool may store its own style to apply to the newly created objects. Use " "the button below to set it." msgstr "" #. style swatch -#: ../src/ui/dialog/inkscape-preferences.cpp:279 +#: ../src/ui/dialog/inkscape-preferences.cpp:277 msgid "Take from selection" msgstr "Taka frá myndvali" -#: ../src/ui/dialog/inkscape-preferences.cpp:288 +#: ../src/ui/dialog/inkscape-preferences.cpp:286 msgid "This tool's style of new objects" msgstr "Stíl þessa verkfæris fyrir nýja hluti" -#: ../src/ui/dialog/inkscape-preferences.cpp:295 +#: ../src/ui/dialog/inkscape-preferences.cpp:293 msgid "Remember the style of the (first) selected object as this tool's style" msgstr "Muna stíl (fyrst) valins hlutar sem eigin stíl þessa verkfæris" -#: ../src/ui/dialog/inkscape-preferences.cpp:300 +#: ../src/ui/dialog/inkscape-preferences.cpp:298 msgid "Tools" msgstr "Verkfæri" -#: ../src/ui/dialog/inkscape-preferences.cpp:303 +#: ../src/ui/dialog/inkscape-preferences.cpp:301 msgid "Bounding box to use" msgstr "Umgjörð sem á að nota" -#: ../src/ui/dialog/inkscape-preferences.cpp:304 +#: ../src/ui/dialog/inkscape-preferences.cpp:302 msgid "Visual bounding box" msgstr "Myndræn umgjörð" -#: ../src/ui/dialog/inkscape-preferences.cpp:306 +#: ../src/ui/dialog/inkscape-preferences.cpp:304 msgid "This bounding box includes stroke width, markers, filter margins, etc." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:307 +#: ../src/ui/dialog/inkscape-preferences.cpp:305 msgid "Geometric bounding box" msgstr "Rúmfræðileg umgjörð" -#: ../src/ui/dialog/inkscape-preferences.cpp:309 +#: ../src/ui/dialog/inkscape-preferences.cpp:307 msgid "This bounding box includes only the bare path" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:311 +#: ../src/ui/dialog/inkscape-preferences.cpp:309 msgid "Conversion to guides" msgstr "Umbreyting í stoðlínur" -#: ../src/ui/dialog/inkscape-preferences.cpp:312 +#: ../src/ui/dialog/inkscape-preferences.cpp:310 msgid "Keep objects after conversion to guides" msgstr "Halda hlutum eftir umbreytingu í stoðlínur" -#: ../src/ui/dialog/inkscape-preferences.cpp:314 +#: ../src/ui/dialog/inkscape-preferences.cpp:312 msgid "" "When converting an object to guides, don't delete the object after the " "conversion" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:315 +#: ../src/ui/dialog/inkscape-preferences.cpp:313 msgid "Treat groups as a single object" msgstr "Meðhöndla hópa sem staka hluti" -#: ../src/ui/dialog/inkscape-preferences.cpp:317 +#: ../src/ui/dialog/inkscape-preferences.cpp:315 msgid "" "Treat groups as a single object during conversion to guides rather than " "converting each child separately" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:319 +#: ../src/ui/dialog/inkscape-preferences.cpp:317 msgid "Average all sketches" msgstr "Meðaltal allra skissa" -#: ../src/ui/dialog/inkscape-preferences.cpp:320 +#: ../src/ui/dialog/inkscape-preferences.cpp:318 msgid "Width is in absolute units" msgstr "Breidd er í algildum einingum" -#: ../src/ui/dialog/inkscape-preferences.cpp:321 +#: ../src/ui/dialog/inkscape-preferences.cpp:319 msgid "Select new path" msgstr "Veldu nýjan feril" -#: ../src/ui/dialog/inkscape-preferences.cpp:322 +#: ../src/ui/dialog/inkscape-preferences.cpp:320 msgid "Don't attach connectors to text objects" msgstr "Ekki festa tengilínur við textahluti" #. Selector -#: ../src/ui/dialog/inkscape-preferences.cpp:325 +#: ../src/ui/dialog/inkscape-preferences.cpp:323 msgid "Selector" msgstr "Valtól" -#: ../src/ui/dialog/inkscape-preferences.cpp:330 +#: ../src/ui/dialog/inkscape-preferences.cpp:328 msgid "When transforming, show" msgstr "Við umbreytingu, birta" -#: ../src/ui/dialog/inkscape-preferences.cpp:331 +#: ../src/ui/dialog/inkscape-preferences.cpp:329 msgid "Objects" msgstr "Hlutir" -#: ../src/ui/dialog/inkscape-preferences.cpp:333 +#: ../src/ui/dialog/inkscape-preferences.cpp:331 msgid "Show the actual objects when moving or transforming" msgstr "Birta raunverulega hluti við færslu eða umbreytingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:334 +#: ../src/ui/dialog/inkscape-preferences.cpp:332 msgid "Box outline" msgstr "Umgjörð kassa" -#: ../src/ui/dialog/inkscape-preferences.cpp:336 +#: ../src/ui/dialog/inkscape-preferences.cpp:334 msgid "Show only a box outline of the objects when moving or transforming" msgstr "Birta aðeins kassalaga umgjörð hluta við færslu eða umbreytingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:337 +#: ../src/ui/dialog/inkscape-preferences.cpp:335 msgid "Per-object selection cue" msgstr "Valmerking á hvern hlut" -#: ../src/ui/dialog/inkscape-preferences.cpp:338 +#: ../src/ui/dialog/inkscape-preferences.cpp:336 msgctxt "Selection cue" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/inkscape-preferences.cpp:340 +#: ../src/ui/dialog/inkscape-preferences.cpp:338 msgid "No per-object selection indication" msgstr "Engin valmerking á hvern hlut" -#: ../src/ui/dialog/inkscape-preferences.cpp:341 +#: ../src/ui/dialog/inkscape-preferences.cpp:339 msgid "Mark" msgstr "Merki" -#: ../src/ui/dialog/inkscape-preferences.cpp:343 +#: ../src/ui/dialog/inkscape-preferences.cpp:341 msgid "Each selected object has a diamond mark in the top left corner" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:344 +#: ../src/ui/dialog/inkscape-preferences.cpp:342 msgid "Box" msgstr "Kassi" -#: ../src/ui/dialog/inkscape-preferences.cpp:346 +#: ../src/ui/dialog/inkscape-preferences.cpp:344 msgid "Each selected object displays its bounding box" msgstr "Hver valinn hlutur birtir umgjörð sína" #. Node -#: ../src/ui/dialog/inkscape-preferences.cpp:349 +#: ../src/ui/dialog/inkscape-preferences.cpp:347 msgid "Node" msgstr "Hnútur" -#: ../src/ui/dialog/inkscape-preferences.cpp:352 +#: ../src/ui/dialog/inkscape-preferences.cpp:350 msgid "Path outline" msgstr "Útlína ferils" -#: ../src/ui/dialog/inkscape-preferences.cpp:353 +#: ../src/ui/dialog/inkscape-preferences.cpp:351 msgid "Path outline color" msgstr "Litur útlínu ferils" -#: ../src/ui/dialog/inkscape-preferences.cpp:354 +#: ../src/ui/dialog/inkscape-preferences.cpp:352 msgid "Selects the color used for showing the path outline" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:355 +#: ../src/ui/dialog/inkscape-preferences.cpp:353 msgid "Always show outline" msgstr "Ávallt birta útlínu" -#: ../src/ui/dialog/inkscape-preferences.cpp:356 +#: ../src/ui/dialog/inkscape-preferences.cpp:354 msgid "Show outlines for all paths, not only invisible paths" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:357 +#: ../src/ui/dialog/inkscape-preferences.cpp:355 msgid "Update outline when dragging nodes" msgstr "Uppfæra útlínu við að draga hnúta" -#: ../src/ui/dialog/inkscape-preferences.cpp:358 +#: ../src/ui/dialog/inkscape-preferences.cpp:356 msgid "" "Update the outline when dragging or transforming nodes; if this is off, the " "outline will only update when completing a drag" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:359 +#: ../src/ui/dialog/inkscape-preferences.cpp:357 msgid "Update paths when dragging nodes" msgstr "Uppfæra ferla við að draga hnúta" -#: ../src/ui/dialog/inkscape-preferences.cpp:360 +#: ../src/ui/dialog/inkscape-preferences.cpp:358 msgid "" "Update paths when dragging or transforming nodes; if this is off, paths will " "only be updated when completing a drag" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:361 +#: ../src/ui/dialog/inkscape-preferences.cpp:359 msgid "Show path direction on outlines" msgstr "Birta stefnu ferils á útlínum" -#: ../src/ui/dialog/inkscape-preferences.cpp:362 +#: ../src/ui/dialog/inkscape-preferences.cpp:360 msgid "" "Visualize the direction of selected paths by drawing small arrows in the " "middle of each outline segment" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:363 +#: ../src/ui/dialog/inkscape-preferences.cpp:361 msgid "Show temporary path outline" msgstr "Birta bráðabirgðaútlínur ferla" -#: ../src/ui/dialog/inkscape-preferences.cpp:364 +#: ../src/ui/dialog/inkscape-preferences.cpp:362 msgid "When hovering over a path, briefly flash its outline" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:365 +#: ../src/ui/dialog/inkscape-preferences.cpp:363 msgid "Show temporary outline for selected paths" msgstr "Birta bráðabirgðaútlínur valinna ferla" -#: ../src/ui/dialog/inkscape-preferences.cpp:366 +#: ../src/ui/dialog/inkscape-preferences.cpp:364 msgid "Show temporary outline even when a path is selected for editing" msgstr "Birta bráðabirgðaútlínur jafnvel þegar ferill er valinn til breytinga" -#: ../src/ui/dialog/inkscape-preferences.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:366 msgid "_Flash time:" msgstr "_Blikktími:" -#: ../src/ui/dialog/inkscape-preferences.cpp:368 +#: ../src/ui/dialog/inkscape-preferences.cpp:366 msgid "" "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" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:369 +#: ../src/ui/dialog/inkscape-preferences.cpp:367 msgid "Editing preferences" msgstr "Kjörstillingar fyrir breytingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:370 +#: ../src/ui/dialog/inkscape-preferences.cpp:368 msgid "Show transform handles for single nodes" msgstr "Sýna umbreytingarhaldföng fyrir staka hnúta" -#: ../src/ui/dialog/inkscape-preferences.cpp:371 +#: ../src/ui/dialog/inkscape-preferences.cpp:369 msgid "Show transform handles even when only a single node is selected" msgstr "Sýna umbreytingarhaldföng jafnvel þótt stakur hnútur sé valinn" -#: ../src/ui/dialog/inkscape-preferences.cpp:372 +#: ../src/ui/dialog/inkscape-preferences.cpp:370 msgid "Deleting nodes preserves shape" msgstr "Eyðing hnúta viðheldur lögun" -#: ../src/ui/dialog/inkscape-preferences.cpp:373 +#: ../src/ui/dialog/inkscape-preferences.cpp:371 msgid "" "Move handles next to deleted nodes to resemble original shape; hold Ctrl to " "get the other behavior" msgstr "" #. Tweak -#: ../src/ui/dialog/inkscape-preferences.cpp:376 +#: ../src/ui/dialog/inkscape-preferences.cpp:374 msgid "Tweak" msgstr "Aflaga" -#: ../src/ui/dialog/inkscape-preferences.cpp:377 +#: ../src/ui/dialog/inkscape-preferences.cpp:375 msgid "Object paint style" msgstr "Málunarstíll hlutar" #. Zoom -#: ../src/ui/dialog/inkscape-preferences.cpp:382 -#: ../src/widgets/desktop-widget.cpp:584 +#: ../src/ui/dialog/inkscape-preferences.cpp:380 +#: ../src/widgets/desktop-widget.cpp:574 msgid "Zoom" msgstr "Aðdráttur" #. Measure -#: ../src/ui/dialog/inkscape-preferences.cpp:387 ../src/verbs.cpp:2815 +#: ../src/ui/dialog/inkscape-preferences.cpp:385 ../src/verbs.cpp:2924 msgctxt "ContextVerb" msgid "Measure" msgstr "Mæla" -#: ../src/ui/dialog/inkscape-preferences.cpp:389 +#: ../src/ui/dialog/inkscape-preferences.cpp:387 msgid "Ignore first and last points" msgstr "Hunsa fyrsta og síðasta punkt" -#: ../src/ui/dialog/inkscape-preferences.cpp:390 +#: ../src/ui/dialog/inkscape-preferences.cpp:388 msgid "" "The start and end of the measurement tool's control line will not be " "considered for calculating lengths. Only lengths between actual curve " @@ -17669,63 +18344,63 @@ msgid "" msgstr "" #. Shapes -#: ../src/ui/dialog/inkscape-preferences.cpp:393 +#: ../src/ui/dialog/inkscape-preferences.cpp:391 msgid "Shapes" msgstr "Form" -#: ../src/ui/dialog/inkscape-preferences.cpp:426 +#: ../src/ui/dialog/inkscape-preferences.cpp:424 msgid "Sketch mode" msgstr "Skissuhamur" -#: ../src/ui/dialog/inkscape-preferences.cpp:428 +#: ../src/ui/dialog/inkscape-preferences.cpp:426 msgid "" "If on, the sketch result will be the normal average of all sketches made, " "instead of averaging the old result with the new sketch" msgstr "" #. Pen -#: ../src/ui/dialog/inkscape-preferences.cpp:431 -#: ../src/ui/dialog/input.cpp:1351 +#: ../src/ui/dialog/inkscape-preferences.cpp:429 +#: ../src/ui/dialog/input.cpp:1311 msgid "Pen" msgstr "Penni" #. Calligraphy -#: ../src/ui/dialog/inkscape-preferences.cpp:437 +#: ../src/ui/dialog/inkscape-preferences.cpp:435 msgid "Calligraphy" msgstr "Skrautskrift" -#: ../src/ui/dialog/inkscape-preferences.cpp:441 +#: ../src/ui/dialog/inkscape-preferences.cpp:439 msgid "" "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" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:443 +#: ../src/ui/dialog/inkscape-preferences.cpp:441 msgid "" "If on, each newly created object will be selected (deselecting previous " "selection)" msgstr "" #. Text -#: ../src/ui/dialog/inkscape-preferences.cpp:446 ../src/verbs.cpp:2807 +#: ../src/ui/dialog/inkscape-preferences.cpp:444 ../src/verbs.cpp:2916 msgctxt "ContextVerb" msgid "Text" msgstr "Texti" -#: ../src/ui/dialog/inkscape-preferences.cpp:451 +#: ../src/ui/dialog/inkscape-preferences.cpp:449 msgid "Show font samples in the drop-down list" msgstr "Birta sýnishorn af letri í fellilistanum" -#: ../src/ui/dialog/inkscape-preferences.cpp:452 +#: ../src/ui/dialog/inkscape-preferences.cpp:450 msgid "" "Show font samples alongside font names in the drop-down list in Text bar" msgstr "Birta sýnishorn af letri í fellilistanum á textastiku" -#: ../src/ui/dialog/inkscape-preferences.cpp:454 +#: ../src/ui/dialog/inkscape-preferences.cpp:452 msgid "Show font substitution warning dialog" msgstr "Birta aðvörunarglugga við útskiptingu á letri" -#: ../src/ui/dialog/inkscape-preferences.cpp:455 +#: ../src/ui/dialog/inkscape-preferences.cpp:453 msgid "" "Show font substitution warning dialog when requested fonts are not available " "on the system" @@ -17733,733 +18408,733 @@ msgstr "" "Birta aðvörunarglugga við útskiptingu á letri þegar það er ekki tiltækt á " "kerfinu" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Pixel" msgstr "Mynddíll" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Pica" msgstr "Pica" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Millimeter" msgstr "Millímetri" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Centimeter" msgstr "Sentímetri" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Inch" msgstr "Tomma" -#: ../src/ui/dialog/inkscape-preferences.cpp:458 +#: ../src/ui/dialog/inkscape-preferences.cpp:456 msgid "Em square" msgstr "Em square" #. , _("Ex square"), _("Percent") #. , SP_CSS_UNIT_EX, SP_CSS_UNIT_PERCENT -#: ../src/ui/dialog/inkscape-preferences.cpp:461 +#: ../src/ui/dialog/inkscape-preferences.cpp:459 msgid "Text units" msgstr "Textaeiningar" -#: ../src/ui/dialog/inkscape-preferences.cpp:463 +#: ../src/ui/dialog/inkscape-preferences.cpp:461 msgid "Text size unit type:" msgstr "Tegund einingar fyrir stærð texta:" -#: ../src/ui/dialog/inkscape-preferences.cpp:464 +#: ../src/ui/dialog/inkscape-preferences.cpp:462 msgid "Set the type of unit used in the text toolbar and text dialogs" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:465 +#: ../src/ui/dialog/inkscape-preferences.cpp:463 msgid "Always output text size in pixels (px)" msgstr "Alltaf gefa upp stærð texta í mynddílum (px)" #. Spray -#: ../src/ui/dialog/inkscape-preferences.cpp:471 +#: ../src/ui/dialog/inkscape-preferences.cpp:469 msgid "Spray" msgstr "Sprauta" #. Eraser -#: ../src/ui/dialog/inkscape-preferences.cpp:476 +#: ../src/ui/dialog/inkscape-preferences.cpp:474 msgid "Eraser" msgstr "Strokleður" #. Paint Bucket -#: ../src/ui/dialog/inkscape-preferences.cpp:481 +#: ../src/ui/dialog/inkscape-preferences.cpp:479 msgid "Paint Bucket" msgstr "Fötufylla" #. Gradient -#: ../src/ui/dialog/inkscape-preferences.cpp:487 -#: ../src/widgets/gradient-selector.cpp:135 -#: ../src/widgets/gradient-selector.cpp:281 +#: ../src/ui/dialog/inkscape-preferences.cpp:485 +#: ../src/widgets/gradient-selector.cpp:134 +#: ../src/widgets/gradient-selector.cpp:280 msgid "Gradient" msgstr "Litstigull" -#: ../src/ui/dialog/inkscape-preferences.cpp:489 +#: ../src/ui/dialog/inkscape-preferences.cpp:487 msgid "Prevent sharing of gradient definitions" msgstr "Hindra sameiginlegar skilgreiningar litstigla" -#: ../src/ui/dialog/inkscape-preferences.cpp:491 +#: ../src/ui/dialog/inkscape-preferences.cpp:489 msgid "" "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" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:492 +#: ../src/ui/dialog/inkscape-preferences.cpp:490 msgid "Use legacy Gradient Editor" msgstr "Nota eldri litstiglaritil" -#: ../src/ui/dialog/inkscape-preferences.cpp:494 +#: ../src/ui/dialog/inkscape-preferences.cpp:492 msgid "" "When on, the Gradient Edit button in the Fill & Stroke dialog will show the " "legacy Gradient Editor dialog, when off the Gradient Tool will be used" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:497 +#: ../src/ui/dialog/inkscape-preferences.cpp:495 msgid "Linear gradient _angle:" msgstr "_Horn línulegs litstiguls:" -#: ../src/ui/dialog/inkscape-preferences.cpp:498 +#: ../src/ui/dialog/inkscape-preferences.cpp:496 msgid "" "Default angle of new linear gradients in degrees (clockwise from horizontal)" msgstr "" #. Dropper -#: ../src/ui/dialog/inkscape-preferences.cpp:502 +#: ../src/ui/dialog/inkscape-preferences.cpp:500 msgid "Dropper" msgstr "Litaplokkari" #. Connector -#: ../src/ui/dialog/inkscape-preferences.cpp:507 +#: ../src/ui/dialog/inkscape-preferences.cpp:505 msgid "Connector" msgstr "Tengilína" -#: ../src/ui/dialog/inkscape-preferences.cpp:510 +#: ../src/ui/dialog/inkscape-preferences.cpp:508 msgid "If on, connector attachment points will not be shown for text objects" msgstr "" #. LPETool #. disabled, because the LPETool is not finished yet. -#: ../src/ui/dialog/inkscape-preferences.cpp:515 +#: ../src/ui/dialog/inkscape-preferences.cpp:513 msgid "LPE Tool" msgstr "LPE verkfæri (LivePathEffects)" -#: ../src/ui/dialog/inkscape-preferences.cpp:522 +#: ../src/ui/dialog/inkscape-preferences.cpp:520 msgid "Interface" msgstr "Viðmót" -#: ../src/ui/dialog/inkscape-preferences.cpp:525 +#: ../src/ui/dialog/inkscape-preferences.cpp:523 msgid "System default" msgstr "Sjálfgefið í kerfinu" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Albanian (sq)" msgstr "Albanska (sq)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Amharic (am)" msgstr "Amharíska (am)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Arabic (ar)" msgstr "Arabíska (ar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Armenian (hy)" msgstr "Armenska (hy)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Assamese (as)" msgstr "Assamíska (as)" -#: ../src/ui/dialog/inkscape-preferences.cpp:526 +#: ../src/ui/dialog/inkscape-preferences.cpp:524 msgid "Azerbaijani (az)" msgstr "Azerbaijanska (az)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Basque (eu)" msgstr "Baskneska (eu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Belarusian (be)" msgstr "Hvítrússneska (be)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Bulgarian (bg)" msgstr "Búlgarska (bg)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Bengali (bn)" msgstr "Bengalska (bn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Bengali/Bangladesh (bn_BD)" msgstr "Bengali/Bangladesh (bn_BD)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Bodo (brx)" msgstr "Bodo (brx)" -#: ../src/ui/dialog/inkscape-preferences.cpp:527 +#: ../src/ui/dialog/inkscape-preferences.cpp:525 msgid "Breton (br)" msgstr "Bretónska (br)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Catalan (ca)" msgstr "Katalónska (ca)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Valencian Catalan (ca@valencia)" msgstr "Valensísk-katalónska (ca@valencia)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Chinese/China (zh_CN)" msgstr "Kínverska/Kína (zh_CN)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Chinese/Taiwan (zh_TW)" msgstr "Kínverska/Taívan (zh_TW)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Croatian (hr)" msgstr "Króatíska (hr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:528 +#: ../src/ui/dialog/inkscape-preferences.cpp:526 msgid "Czech (cs)" msgstr "Tékkneska (cs)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Danish (da)" msgstr "Danska (da)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Dogri (doi)" msgstr "Dogri (doi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Dutch (nl)" msgstr "Hollenska (nl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:529 +#: ../src/ui/dialog/inkscape-preferences.cpp:527 msgid "Dzongkha (dz)" msgstr "Dzongkha (dz)" -#: ../src/ui/dialog/inkscape-preferences.cpp:530 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "German (de)" msgstr "Þýska (de)" -#: ../src/ui/dialog/inkscape-preferences.cpp:530 +#: ../src/ui/dialog/inkscape-preferences.cpp:528 msgid "Greek (el)" msgstr "Gríska (el)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "English (en)" msgstr "Enska (en)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "English/Australia (en_AU)" msgstr "Enska/Ástralía (en_AU)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "English/Canada (en_CA)" msgstr "Enska/Kanada (en_CA)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "English/Great Britain (en_GB)" msgstr "Enska/Stóra Bretland (en_GB)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Pig Latin (en_US@piglatin)" msgstr "Pig Latin (en_US@piglatin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Esperanto (eo)" msgstr "Esperantó (eo)" -#: ../src/ui/dialog/inkscape-preferences.cpp:531 +#: ../src/ui/dialog/inkscape-preferences.cpp:529 msgid "Estonian (et)" msgstr "Eistneska (et)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:530 msgid "Farsi (fa)" msgstr "Farsí (fa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:530 msgid "Finnish (fi)" msgstr "Finnska (fi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:532 +#: ../src/ui/dialog/inkscape-preferences.cpp:530 msgid "French (fr)" msgstr "Franska (fr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:533 +#: ../src/ui/dialog/inkscape-preferences.cpp:531 msgid "Galician (gl)" msgstr "Galisíska (gl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:533 +#: ../src/ui/dialog/inkscape-preferences.cpp:531 msgid "Gujarati (gu)" msgstr "Gújaratí (gu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:532 msgid "Hebrew (he)" msgstr "Hebreska (he)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:532 msgid "Hindi (hi)" msgstr "Hindí (hi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:534 +#: ../src/ui/dialog/inkscape-preferences.cpp:532 msgid "Hungarian (hu)" msgstr "Ungverska (hu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:533 msgid "Icelandic (is)" msgstr "Íslenska (is)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:533 msgid "Indonesian (id)" msgstr "Indónesíska (id)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:533 msgid "Irish (ga)" msgstr "Írska (ga)" -#: ../src/ui/dialog/inkscape-preferences.cpp:535 +#: ../src/ui/dialog/inkscape-preferences.cpp:533 msgid "Italian (it)" msgstr "Ítalska (it)" -#: ../src/ui/dialog/inkscape-preferences.cpp:536 +#: ../src/ui/dialog/inkscape-preferences.cpp:534 msgid "Japanese (ja)" msgstr "Japanska (ja)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Kannada (kn)" msgstr "Kannada (kn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Kashmiri in Perso-Arabic script (ks@aran)" msgstr "Kashmírska með Peso-Arabísku letri (ks@aran)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Kashmiri in Devanagari script (ks@deva)" msgstr "Kashmírska með Devanagarí letur (ks@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Khmer (km)" msgstr "Khmeríska (km)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Kinyarwanda (rw)" msgstr "Kinyarwanda (rw)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Konkani (kok)" msgstr "Konkaní (kok)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Konkani in Latin script (kok@latin)" msgstr "Konkaní með latneskt letur (kok@latin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:537 +#: ../src/ui/dialog/inkscape-preferences.cpp:535 msgid "Korean (ko)" msgstr "Kóreska (ko)" -#: ../src/ui/dialog/inkscape-preferences.cpp:538 +#: ../src/ui/dialog/inkscape-preferences.cpp:536 msgid "Latvian (lv)" msgstr "Lettlenska (lv)" -#: ../src/ui/dialog/inkscape-preferences.cpp:538 +#: ../src/ui/dialog/inkscape-preferences.cpp:536 msgid "Lithuanian (lt)" msgstr "Litháíska (lt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Macedonian (mk)" msgstr "Makedónska (mk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Maithili (mai)" msgstr "Maithilí (mai)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Malayalam (ml)" msgstr "Malaíalam (ml)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Manipuri (mni)" msgstr "Manipurí (mni)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Manipuri in Bengali script (mni@beng)" msgstr "Manipurí með Bengalí letri (mni@beng)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Marathi (mr)" msgstr "Marathí (mr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:539 +#: ../src/ui/dialog/inkscape-preferences.cpp:537 msgid "Mongolian (mn)" msgstr "Mongólska (mn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Nepali (ne)" msgstr "Nepalska (ne)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Norwegian Bokmål (nb)" msgstr "Norskt bókmál (nb)" -#: ../src/ui/dialog/inkscape-preferences.cpp:540 +#: ../src/ui/dialog/inkscape-preferences.cpp:538 msgid "Norwegian Nynorsk (nn)" msgstr "Nýnorska (nn)" -#: ../src/ui/dialog/inkscape-preferences.cpp:541 +#: ../src/ui/dialog/inkscape-preferences.cpp:539 msgid "Odia (or)" msgstr "Odia (or)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Panjabi (pa)" msgstr "Panjabi (pa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Polish (pl)" msgstr "Pólska (pl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Portuguese (pt)" msgstr "Portúgalska (pt)" -#: ../src/ui/dialog/inkscape-preferences.cpp:542 +#: ../src/ui/dialog/inkscape-preferences.cpp:540 msgid "Portuguese/Brazil (pt_BR)" msgstr "Portúgalska/Brasilía (pt_BR)" -#: ../src/ui/dialog/inkscape-preferences.cpp:543 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Romanian (ro)" msgstr "Rúmenska (ro)" -#: ../src/ui/dialog/inkscape-preferences.cpp:543 +#: ../src/ui/dialog/inkscape-preferences.cpp:541 msgid "Russian (ru)" msgstr "Rússneska (ru)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Sanskrit (sa)" msgstr "Sanskrít (sa)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Santali (sat)" msgstr "Santalí (sat)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Santali in Devanagari script (sat@deva)" msgstr "Santalí með Devanagarí letur (sd@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Serbian (sr)" msgstr "Serbneska (sr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:544 +#: ../src/ui/dialog/inkscape-preferences.cpp:542 msgid "Serbian in Latin script (sr@latin)" msgstr "Serbneska með latneskt letur (sr@latin)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Sindhi (sd)" msgstr "Shindí (sd)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Sindhi in Devanagari script (sd@deva)" msgstr "Sindhí með Devanagarí letur (sd@deva)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Slovak (sk)" msgstr "Slóvakíska (sk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Slovenian (sl)" msgstr "Slóvenska (sl)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Spanish (es)" msgstr "Spænska (es)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Spanish/Mexico (es_MX)" msgstr "Spænska/Mexíkó (es_MX)" -#: ../src/ui/dialog/inkscape-preferences.cpp:545 +#: ../src/ui/dialog/inkscape-preferences.cpp:543 msgid "Swedish (sv)" msgstr "Sænska (sv)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Tamil (ta)" msgstr "Tamílska (ta)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Telugu (te)" msgstr "Telugu (te)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Thai (th)" msgstr "Tælenska (th)" -#: ../src/ui/dialog/inkscape-preferences.cpp:546 +#: ../src/ui/dialog/inkscape-preferences.cpp:544 msgid "Turkish (tr)" msgstr "Tyrkneska (tr)" -#: ../src/ui/dialog/inkscape-preferences.cpp:547 +#: ../src/ui/dialog/inkscape-preferences.cpp:545 msgid "Ukrainian (uk)" msgstr "Úkraínska (uk)" -#: ../src/ui/dialog/inkscape-preferences.cpp:547 +#: ../src/ui/dialog/inkscape-preferences.cpp:545 msgid "Urdu (ur)" msgstr "Úrdú (ur)" -#: ../src/ui/dialog/inkscape-preferences.cpp:548 +#: ../src/ui/dialog/inkscape-preferences.cpp:546 msgid "Vietnamese (vi)" msgstr "Víetnamska (vi)" -#: ../src/ui/dialog/inkscape-preferences.cpp:600 +#: ../src/ui/dialog/inkscape-preferences.cpp:598 msgid "Language (requires restart):" msgstr "Tungumál (krefst endurræsingar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:601 +#: ../src/ui/dialog/inkscape-preferences.cpp:599 msgid "Set the language for menus and number formats" msgstr "Stilltu tungumál fyrir valmyndir og talnasnið" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:602 msgctxt "Icon size" msgid "Larger" msgstr "Stærra" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:602 msgctxt "Icon size" msgid "Large" msgstr "Stór" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:602 msgctxt "Icon size" msgid "Small" msgstr "Lítil" -#: ../src/ui/dialog/inkscape-preferences.cpp:604 +#: ../src/ui/dialog/inkscape-preferences.cpp:602 msgctxt "Icon size" msgid "Smaller" msgstr "Minni" -#: ../src/ui/dialog/inkscape-preferences.cpp:609 +#: ../src/ui/dialog/inkscape-preferences.cpp:607 msgid "Toolbox icon size:" msgstr "Táknmyndastærð verkfærakassa:" -#: ../src/ui/dialog/inkscape-preferences.cpp:610 +#: ../src/ui/dialog/inkscape-preferences.cpp:608 msgid "Set the size for the tool icons (requires restart)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:613 +#: ../src/ui/dialog/inkscape-preferences.cpp:611 msgid "Control bar icon size:" msgstr "Táknmyndastærð stjórnslár:" -#: ../src/ui/dialog/inkscape-preferences.cpp:614 +#: ../src/ui/dialog/inkscape-preferences.cpp:612 msgid "" "Set the size for the icons in tools' control bars to use (requires restart)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:617 +#: ../src/ui/dialog/inkscape-preferences.cpp:615 msgid "Secondary toolbar icon size:" msgstr "Stærð táknmynda á aukaverkfærastiku:" -#: ../src/ui/dialog/inkscape-preferences.cpp:618 +#: ../src/ui/dialog/inkscape-preferences.cpp:616 msgid "" "Set the size for the icons in secondary toolbars to use (requires restart)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:621 +#: ../src/ui/dialog/inkscape-preferences.cpp:619 msgid "Work-around color sliders not drawing" msgstr "Hjáleið þegar litasleðar virka ekki" -#: ../src/ui/dialog/inkscape-preferences.cpp:623 +#: ../src/ui/dialog/inkscape-preferences.cpp:621 msgid "" "When on, will attempt to work around bugs in certain GTK themes drawing " "color sliders" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:628 +#: ../src/ui/dialog/inkscape-preferences.cpp:626 msgid "Clear list" msgstr "Hreinsa lista" -#: ../src/ui/dialog/inkscape-preferences.cpp:631 +#: ../src/ui/dialog/inkscape-preferences.cpp:629 msgid "Maximum documents in Open _Recent:" msgstr "Hámarksfjöldi _nýlegra skjala:" -#: ../src/ui/dialog/inkscape-preferences.cpp:632 +#: ../src/ui/dialog/inkscape-preferences.cpp:630 msgid "" "Set the maximum length of the Open Recent list in the File menu, or clear " "the list" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:635 +#: ../src/ui/dialog/inkscape-preferences.cpp:633 msgid "_Zoom correction factor (in %):" msgstr "_Leiðrétting á aðdrætti (í %):" -#: ../src/ui/dialog/inkscape-preferences.cpp:636 +#: ../src/ui/dialog/inkscape-preferences.cpp:634 msgid "" "Adjust the slider until the length of the ruler on your screen matches its " "real length. This information is used when zooming to 1:1, 1:2, etc., to " "display objects in their true sizes" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:639 +#: ../src/ui/dialog/inkscape-preferences.cpp:637 msgid "Enable dynamic relayout for incomplete sections" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:641 +#: ../src/ui/dialog/inkscape-preferences.cpp:639 msgid "" "When on, will allow dynamic layout of components that are not completely " "finished being refactored" msgstr "" #. show infobox -#: ../src/ui/dialog/inkscape-preferences.cpp:644 +#: ../src/ui/dialog/inkscape-preferences.cpp:642 msgid "Show filter primitives infobox (requires restart)" msgstr "Birta upplýsingar um frumstillingar sía (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:646 +#: ../src/ui/dialog/inkscape-preferences.cpp:644 msgid "" "Show icons and descriptions for the filter primitives available at the " "filter effects dialog" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:647 +#: ../src/ui/dialog/inkscape-preferences.cpp:655 msgid "Icons only" msgstr "Einungis táknmyndir" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:647 +#: ../src/ui/dialog/inkscape-preferences.cpp:655 msgid "Text only" msgstr "Einungis texti" -#: ../src/ui/dialog/inkscape-preferences.cpp:649 -#: ../src/ui/dialog/inkscape-preferences.cpp:657 +#: ../src/ui/dialog/inkscape-preferences.cpp:647 +#: ../src/ui/dialog/inkscape-preferences.cpp:655 msgid "Icons and text" msgstr "Táknmyndir og texti" -#: ../src/ui/dialog/inkscape-preferences.cpp:654 +#: ../src/ui/dialog/inkscape-preferences.cpp:652 msgid "Dockbar style (requires restart):" msgstr "Tengjanlegur stíll (krefst endurræsingar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:655 +#: ../src/ui/dialog/inkscape-preferences.cpp:653 msgid "" "Selects whether the vertical bars on the dockbar will show text labels, " "icons, or both" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:662 +#: ../src/ui/dialog/inkscape-preferences.cpp:660 msgid "Switcher style (requires restart):" msgstr "Stíll flettis (krefst endurræsingar):" -#: ../src/ui/dialog/inkscape-preferences.cpp:663 +#: ../src/ui/dialog/inkscape-preferences.cpp:661 msgid "" "Selects whether the dockbar switcher will show text labels, icons, or both" msgstr "" #. Windows -#: ../src/ui/dialog/inkscape-preferences.cpp:667 +#: ../src/ui/dialog/inkscape-preferences.cpp:665 msgid "Save and restore window geometry for each document" msgstr "Vista og endurheimta stærð og stöðu glugga fyrir hvert skjal" -#: ../src/ui/dialog/inkscape-preferences.cpp:668 +#: ../src/ui/dialog/inkscape-preferences.cpp:666 msgid "Remember and use last window's geometry" msgstr "Geyma og nota síðustu stærð og stöðu glugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:669 +#: ../src/ui/dialog/inkscape-preferences.cpp:667 msgid "Don't save window geometry" msgstr "Ekki vista stærðir glugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:671 +#: ../src/ui/dialog/inkscape-preferences.cpp:669 msgid "Save and restore dialogs status" msgstr "Vista og endurheimta stöðu samskiptaglugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:672 -#: ../src/ui/dialog/inkscape-preferences.cpp:708 +#: ../src/ui/dialog/inkscape-preferences.cpp:670 +#: ../src/ui/dialog/inkscape-preferences.cpp:706 msgid "Don't save dialogs status" msgstr "Ekki vista stöðu samskiptaglugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:674 -#: ../src/ui/dialog/inkscape-preferences.cpp:716 +#: ../src/ui/dialog/inkscape-preferences.cpp:672 +#: ../src/ui/dialog/inkscape-preferences.cpp:714 msgid "Dockable" msgstr "Tengjanlegt" -#: ../src/ui/dialog/inkscape-preferences.cpp:675 -#: ../src/ui/dialog/inkscape-preferences.cpp:718 +#: ../src/ui/dialog/inkscape-preferences.cpp:673 +#: ../src/ui/dialog/inkscape-preferences.cpp:716 msgid "Floating" msgstr "Fljótandi" -#: ../src/ui/dialog/inkscape-preferences.cpp:678 +#: ../src/ui/dialog/inkscape-preferences.cpp:676 msgid "Native open/save dialogs" msgstr "Innbyggðar Opna/Vista glugga úr stýrikerfi" -#: ../src/ui/dialog/inkscape-preferences.cpp:679 +#: ../src/ui/dialog/inkscape-preferences.cpp:677 msgid "GTK open/save dialogs" msgstr "Nota Opna/Vista glugga úr GTK" -#: ../src/ui/dialog/inkscape-preferences.cpp:681 +#: ../src/ui/dialog/inkscape-preferences.cpp:679 msgid "Dialogs are hidden in taskbar" msgstr "Samskiptagluggar eru faldir í verkefnaslá" -#: ../src/ui/dialog/inkscape-preferences.cpp:682 +#: ../src/ui/dialog/inkscape-preferences.cpp:680 msgid "Save and restore documents viewport" msgstr "Vista og endurheimta stöðu sýnisglugga skjala" -#: ../src/ui/dialog/inkscape-preferences.cpp:683 +#: ../src/ui/dialog/inkscape-preferences.cpp:681 msgid "Zoom when window is resized" msgstr "Breyta aðdrætti þegar stærð glugga breytist" -#: ../src/ui/dialog/inkscape-preferences.cpp:684 +#: ../src/ui/dialog/inkscape-preferences.cpp:682 msgid "Show close button on dialogs" msgstr "Birta lokunarhnapp á samskiptagluggum" -#: ../src/ui/dialog/inkscape-preferences.cpp:685 +#: ../src/ui/dialog/inkscape-preferences.cpp:683 msgctxt "Dialog on top" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/inkscape-preferences.cpp:687 +#: ../src/ui/dialog/inkscape-preferences.cpp:685 msgid "Aggressive" msgstr "Ýkt" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgctxt "Window size" msgid "Small" msgstr "Lítill" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgctxt "Window size" msgid "Large" msgstr "Stór" -#: ../src/ui/dialog/inkscape-preferences.cpp:690 +#: ../src/ui/dialog/inkscape-preferences.cpp:688 msgctxt "Window size" msgid "Maximized" msgstr "Hámarkaður" -#: ../src/ui/dialog/inkscape-preferences.cpp:694 +#: ../src/ui/dialog/inkscape-preferences.cpp:692 msgid "Default window size:" msgstr "Sjálfgefin stærð glugga:" -#: ../src/ui/dialog/inkscape-preferences.cpp:695 +#: ../src/ui/dialog/inkscape-preferences.cpp:693 msgid "Set the default window size" msgstr "Stilla sjálfgefna stærð glugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:698 +#: ../src/ui/dialog/inkscape-preferences.cpp:696 msgid "Saving window geometry (size and position)" msgstr "Vista stærð og stöðu glugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:700 +#: ../src/ui/dialog/inkscape-preferences.cpp:698 msgid "Let the window manager determine placement of all windows" msgstr "Láta gluggastjórann um að ákveða staðsetningar allra glugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:702 +#: ../src/ui/dialog/inkscape-preferences.cpp:700 msgid "" "Remember and use the last window's geometry (saves geometry to user " "preferences)" @@ -18467,7 +19142,7 @@ msgstr "" "Geyma og nota síðustu stærð og stöðu glugga (vistar upplýsingarnar í " "kjörstillingar notandans)" -#: ../src/ui/dialog/inkscape-preferences.cpp:704 +#: ../src/ui/dialog/inkscape-preferences.cpp:702 msgid "" "Save and restore window geometry for each document (saves geometry in the " "document)" @@ -18475,11 +19150,11 @@ msgstr "" "Vista og endurheimta stærð og stöðu glugga fyrir hvert skjal (vistar " "upplýsingarnar í skjalið)" -#: ../src/ui/dialog/inkscape-preferences.cpp:706 +#: ../src/ui/dialog/inkscape-preferences.cpp:704 msgid "Saving dialogs status" msgstr "Vista stöðu samskiptaglugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:710 +#: ../src/ui/dialog/inkscape-preferences.cpp:708 msgid "" "Save and restore dialogs status (the last open windows dialogs are saved " "when it closes)" @@ -18487,63 +19162,63 @@ msgstr "" "Vista og endurheimta stöðu samskiptaglugga (síðast opnir gluggar eru " "vistaðir þegar hætt er)" -#: ../src/ui/dialog/inkscape-preferences.cpp:714 +#: ../src/ui/dialog/inkscape-preferences.cpp:712 msgid "Dialog behavior (requires restart)" msgstr "Hegðun glugga (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:720 +#: ../src/ui/dialog/inkscape-preferences.cpp:718 msgid "Desktop integration" msgstr "Innbygging í skjáborðsumhverfi" -#: ../src/ui/dialog/inkscape-preferences.cpp:722 +#: ../src/ui/dialog/inkscape-preferences.cpp:720 msgid "Use Windows like open and save dialogs" msgstr "Nota Opna/Vista glugga eins og í Windows" -#: ../src/ui/dialog/inkscape-preferences.cpp:724 +#: ../src/ui/dialog/inkscape-preferences.cpp:722 msgid "Use GTK open and save dialogs " msgstr "Nota Opna/Vista glugga eins og í GTK " -#: ../src/ui/dialog/inkscape-preferences.cpp:728 +#: ../src/ui/dialog/inkscape-preferences.cpp:726 msgid "Dialogs on top:" msgstr "Samskiptagluggar ofan á:" -#: ../src/ui/dialog/inkscape-preferences.cpp:731 +#: ../src/ui/dialog/inkscape-preferences.cpp:729 msgid "Dialogs are treated as regular windows" msgstr "Samskiptagluggar eru meðhöndlaðir eins og venjulegir gluggar" -#: ../src/ui/dialog/inkscape-preferences.cpp:733 +#: ../src/ui/dialog/inkscape-preferences.cpp:731 msgid "Dialogs stay on top of document windows" msgstr "Samskiptagluggar haldast ofan á vinnugluggum" -#: ../src/ui/dialog/inkscape-preferences.cpp:735 +#: ../src/ui/dialog/inkscape-preferences.cpp:733 msgid "Same as Normal but may work better with some window managers" msgstr "Sama og venjulegt nema að það gæti virkað betur í sumum gluggastjórum" -#: ../src/ui/dialog/inkscape-preferences.cpp:738 +#: ../src/ui/dialog/inkscape-preferences.cpp:736 msgid "Dialog Transparency" msgstr "Gegnsæi samskiptaglugga" -#: ../src/ui/dialog/inkscape-preferences.cpp:740 +#: ../src/ui/dialog/inkscape-preferences.cpp:738 msgid "_Opacity when focused:" msgstr "Ó_gegnsæi þegar er virkt:" -#: ../src/ui/dialog/inkscape-preferences.cpp:742 +#: ../src/ui/dialog/inkscape-preferences.cpp:740 msgid "Opacity when _unfocused:" msgstr "Óg_egnsæi þegar er óvirkt:" -#: ../src/ui/dialog/inkscape-preferences.cpp:744 +#: ../src/ui/dialog/inkscape-preferences.cpp:742 msgid "_Time of opacity change animation:" msgstr "_Tími skiptingar við breytingu á gegnsæi:" -#: ../src/ui/dialog/inkscape-preferences.cpp:747 +#: ../src/ui/dialog/inkscape-preferences.cpp:745 msgid "Miscellaneous" msgstr "Ýmislegt" -#: ../src/ui/dialog/inkscape-preferences.cpp:750 +#: ../src/ui/dialog/inkscape-preferences.cpp:748 msgid "Whether dialog windows are to be hidden in the window manager taskbar" msgstr "Hvort fela eigi samskiptaglugga á verkefnastiku gluggastjórans" -#: ../src/ui/dialog/inkscape-preferences.cpp:753 +#: ../src/ui/dialog/inkscape-preferences.cpp:751 msgid "" "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 " @@ -18553,7 +19228,7 @@ msgstr "" "svæði sé sýnilegt (þetta er sjálfgefið og má breyta með því að smella á " "hnappinn sem er fyrir ofan skrunstikuna til hægri)" -#: ../src/ui/dialog/inkscape-preferences.cpp:755 +#: ../src/ui/dialog/inkscape-preferences.cpp:753 msgid "" "Save documents viewport (zoom and panning position). Useful to turn off when " "sharing version controlled files." @@ -18561,101 +19236,101 @@ msgstr "" "Vista stöðu sýnisglugga skjala (aðdráttur og hliðrun). Gott að geta slökkt á " "þessu ef verið er að deila skrám í útgáfustýringarkerfum." -#: ../src/ui/dialog/inkscape-preferences.cpp:757 +#: ../src/ui/dialog/inkscape-preferences.cpp:755 msgid "Whether dialog windows have a close button (requires restart)" msgstr "Hvort samskiptagluggar hafi lokunarhnapp (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:758 +#: ../src/ui/dialog/inkscape-preferences.cpp:756 msgid "Windows" msgstr "Gluggar" #. Grids -#: ../src/ui/dialog/inkscape-preferences.cpp:761 +#: ../src/ui/dialog/inkscape-preferences.cpp:759 msgid "Line color when zooming out" msgstr "Litur línu þegar rennt er frá" -#: ../src/ui/dialog/inkscape-preferences.cpp:764 +#: ../src/ui/dialog/inkscape-preferences.cpp:762 msgid "The gridlines will be shown in minor grid line color" msgstr "Hnitalínur verða sýndar í lit fyrir aukahnitalínur" -#: ../src/ui/dialog/inkscape-preferences.cpp:766 +#: ../src/ui/dialog/inkscape-preferences.cpp:764 msgid "The gridlines will be shown in major grid line color" msgstr "Hnitalínur verða sýndar í lit fyrir aðalhnitalínur" -#: ../src/ui/dialog/inkscape-preferences.cpp:768 +#: ../src/ui/dialog/inkscape-preferences.cpp:766 msgid "Default grid settings" msgstr "Sjálfgefnar stillingar hnitanets" -#: ../src/ui/dialog/inkscape-preferences.cpp:774 -#: ../src/ui/dialog/inkscape-preferences.cpp:799 +#: ../src/ui/dialog/inkscape-preferences.cpp:772 +#: ../src/ui/dialog/inkscape-preferences.cpp:797 msgid "Grid units:" msgstr "Einingar hnitanets:" -#: ../src/ui/dialog/inkscape-preferences.cpp:779 -#: ../src/ui/dialog/inkscape-preferences.cpp:804 +#: ../src/ui/dialog/inkscape-preferences.cpp:777 +#: ../src/ui/dialog/inkscape-preferences.cpp:802 msgid "Origin X:" msgstr "Upphaf X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:780 -#: ../src/ui/dialog/inkscape-preferences.cpp:805 +#: ../src/ui/dialog/inkscape-preferences.cpp:778 +#: ../src/ui/dialog/inkscape-preferences.cpp:803 msgid "Origin Y:" msgstr "Upphaf Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:785 +#: ../src/ui/dialog/inkscape-preferences.cpp:783 msgid "Spacing X:" msgstr "Millibil X:" -#: ../src/ui/dialog/inkscape-preferences.cpp:786 -#: ../src/ui/dialog/inkscape-preferences.cpp:808 +#: ../src/ui/dialog/inkscape-preferences.cpp:784 +#: ../src/ui/dialog/inkscape-preferences.cpp:806 msgid "Spacing Y:" msgstr "Millibil Y:" -#: ../src/ui/dialog/inkscape-preferences.cpp:788 -#: ../src/ui/dialog/inkscape-preferences.cpp:789 -#: ../src/ui/dialog/inkscape-preferences.cpp:813 -#: ../src/ui/dialog/inkscape-preferences.cpp:814 +#: ../src/ui/dialog/inkscape-preferences.cpp:786 +#: ../src/ui/dialog/inkscape-preferences.cpp:787 +#: ../src/ui/dialog/inkscape-preferences.cpp:811 +#: ../src/ui/dialog/inkscape-preferences.cpp:812 msgid "Minor grid line color:" msgstr "Litur á aukahnitalínu:" -#: ../src/ui/dialog/inkscape-preferences.cpp:789 -#: ../src/ui/dialog/inkscape-preferences.cpp:814 +#: ../src/ui/dialog/inkscape-preferences.cpp:787 +#: ../src/ui/dialog/inkscape-preferences.cpp:812 msgid "Color used for normal grid lines" msgstr "Litur á venjulegum hnitalínum" -#: ../src/ui/dialog/inkscape-preferences.cpp:790 -#: ../src/ui/dialog/inkscape-preferences.cpp:791 -#: ../src/ui/dialog/inkscape-preferences.cpp:815 -#: ../src/ui/dialog/inkscape-preferences.cpp:816 +#: ../src/ui/dialog/inkscape-preferences.cpp:788 +#: ../src/ui/dialog/inkscape-preferences.cpp:789 +#: ../src/ui/dialog/inkscape-preferences.cpp:813 +#: ../src/ui/dialog/inkscape-preferences.cpp:814 msgid "Major grid line color:" msgstr "Litur á aðalásum hnitalínu:" -#: ../src/ui/dialog/inkscape-preferences.cpp:791 -#: ../src/ui/dialog/inkscape-preferences.cpp:816 +#: ../src/ui/dialog/inkscape-preferences.cpp:789 +#: ../src/ui/dialog/inkscape-preferences.cpp:814 msgid "Color used for major (highlighted) grid lines" msgstr "Litur á aðalhnitalínum (áherslulínum)" -#: ../src/ui/dialog/inkscape-preferences.cpp:793 -#: ../src/ui/dialog/inkscape-preferences.cpp:818 +#: ../src/ui/dialog/inkscape-preferences.cpp:791 +#: ../src/ui/dialog/inkscape-preferences.cpp:816 msgid "Major grid line every:" msgstr "Aðalhnitalínur hverja:" -#: ../src/ui/dialog/inkscape-preferences.cpp:794 +#: ../src/ui/dialog/inkscape-preferences.cpp:792 msgid "Show dots instead of lines" msgstr "Sýna punkta í stað lína" -#: ../src/ui/dialog/inkscape-preferences.cpp:795 +#: ../src/ui/dialog/inkscape-preferences.cpp:793 msgid "If set, display dots at gridpoints instead of gridlines" msgstr "Ef þetta er virkjað eru sýndir punktar í stað hnitalína" -#: ../src/ui/dialog/inkscape-preferences.cpp:869 +#: ../src/ui/dialog/inkscape-preferences.cpp:867 msgid "Input/Output" msgstr "Ílag/Frálag" -#: ../src/ui/dialog/inkscape-preferences.cpp:872 +#: ../src/ui/dialog/inkscape-preferences.cpp:870 msgid "Use current directory for \"Save As ...\"" msgstr "Nota núverandi möppu fyrir \"Vista sem ...\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:874 +#: ../src/ui/dialog/inkscape-preferences.cpp:872 msgid "" "When this option is on, the \"Save as...\" and \"Save a Copy...\" dialogs " "will always open in the directory where the currently open document is; when " @@ -18663,21 +19338,21 @@ msgid "" "it" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:876 +#: ../src/ui/dialog/inkscape-preferences.cpp:874 msgid "Add label comments to printing output" msgstr "Bæta skýringum á prentað úttak" -#: ../src/ui/dialog/inkscape-preferences.cpp:878 +#: ../src/ui/dialog/inkscape-preferences.cpp:876 msgid "" "When on, a comment will be added to the raw print output, marking the " "rendered output for an object with its label" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:880 +#: ../src/ui/dialog/inkscape-preferences.cpp:878 msgid "Add default metadata to new documents" msgstr "Bæta sjálfgefnum lýsigögnum við ný skjöl" -#: ../src/ui/dialog/inkscape-preferences.cpp:882 +#: ../src/ui/dialog/inkscape-preferences.cpp:880 msgid "" "Add default metadata to new documents. Default metadata can be set from " "Document Properties->Metadata." @@ -18685,156 +19360,156 @@ msgstr "" "Bæta sjálfgefnum lýsigögnum við ný skjöl. Sjálfgefin lýsigögn er hægt að " "stilla með því að fara í Skráareiginleikar -> Lýsigögn." -#: ../src/ui/dialog/inkscape-preferences.cpp:886 +#: ../src/ui/dialog/inkscape-preferences.cpp:884 msgid "_Grab sensitivity:" msgstr "_Næmi við grip:" -#: ../src/ui/dialog/inkscape-preferences.cpp:886 +#: ../src/ui/dialog/inkscape-preferences.cpp:884 msgid "pixels (requires restart)" msgstr "mynddílar (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:887 +#: ../src/ui/dialog/inkscape-preferences.cpp:885 msgid "" "How close on the screen you need to be to an object to be able to grab it " "with mouse (in screen pixels)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 +#: ../src/ui/dialog/inkscape-preferences.cpp:887 msgid "_Click/drag threshold:" msgstr "Skynjunar_mörk við smell/drátt:" -#: ../src/ui/dialog/inkscape-preferences.cpp:889 -#: ../src/ui/dialog/inkscape-preferences.cpp:1226 -#: ../src/ui/dialog/inkscape-preferences.cpp:1230 -#: ../src/ui/dialog/inkscape-preferences.cpp:1240 +#: ../src/ui/dialog/inkscape-preferences.cpp:887 +#: ../src/ui/dialog/inkscape-preferences.cpp:1223 +#: ../src/ui/dialog/inkscape-preferences.cpp:1227 +#: ../src/ui/dialog/inkscape-preferences.cpp:1237 msgid "pixels" msgstr "mynddílar" -#: ../src/ui/dialog/inkscape-preferences.cpp:890 +#: ../src/ui/dialog/inkscape-preferences.cpp:888 msgid "" "Maximum mouse drag (in screen pixels) which is considered a click, not a drag" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:893 +#: ../src/ui/dialog/inkscape-preferences.cpp:891 msgid "_Handle size:" msgstr "Stærð _haldfangs:" -#: ../src/ui/dialog/inkscape-preferences.cpp:894 +#: ../src/ui/dialog/inkscape-preferences.cpp:892 msgid "Set the relative size of node handles" msgstr "Stilla afstæða stærð haldfanga á hnútum" -#: ../src/ui/dialog/inkscape-preferences.cpp:896 +#: ../src/ui/dialog/inkscape-preferences.cpp:894 msgid "Use pressure-sensitive tablet (requires restart)" msgstr "Nota þrýstinæmt teiknispjald (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:898 +#: ../src/ui/dialog/inkscape-preferences.cpp:896 msgid "" "Use the capabilities of a tablet or other pressure-sensitive device. Disable " "this only if you have problems with the tablet (you can still use it as a " "mouse)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:900 +#: ../src/ui/dialog/inkscape-preferences.cpp:898 msgid "Switch tool based on tablet device (requires restart)" msgstr "Skipta um verkfæri eftir teiknispjaldstæki (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:902 +#: ../src/ui/dialog/inkscape-preferences.cpp:900 msgid "" "Change tool as different devices are used on the tablet (pen, eraser, mouse)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:903 +#: ../src/ui/dialog/inkscape-preferences.cpp:901 msgid "Input devices" msgstr "Inntakstæki" #. SVG output options -#: ../src/ui/dialog/inkscape-preferences.cpp:906 +#: ../src/ui/dialog/inkscape-preferences.cpp:904 msgid "Use named colors" msgstr "Nota nefnda liti" -#: ../src/ui/dialog/inkscape-preferences.cpp:907 +#: ../src/ui/dialog/inkscape-preferences.cpp:905 msgid "" "If set, write the CSS name of the color when available (e.g. 'red' or " "'magenta') instead of the numeric value" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:909 +#: ../src/ui/dialog/inkscape-preferences.cpp:907 msgid "XML formatting" msgstr "XML-snið" -#: ../src/ui/dialog/inkscape-preferences.cpp:911 +#: ../src/ui/dialog/inkscape-preferences.cpp:909 msgid "Inline attributes" msgstr "Eigindi innan línu" -#: ../src/ui/dialog/inkscape-preferences.cpp:912 +#: ../src/ui/dialog/inkscape-preferences.cpp:910 msgid "Put attributes on the same line as the element tag" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:913 msgid "_Indent, spaces:" msgstr "_Inndráttur, bil:" -#: ../src/ui/dialog/inkscape-preferences.cpp:915 +#: ../src/ui/dialog/inkscape-preferences.cpp:913 msgid "" "The number of spaces to use for indenting nested elements; set to 0 for no " "indentation" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:917 +#: ../src/ui/dialog/inkscape-preferences.cpp:915 msgid "Path data" msgstr "Gögn ferils" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 +#: ../src/ui/dialog/inkscape-preferences.cpp:918 msgid "Absolute" msgstr "Algild" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 +#: ../src/ui/dialog/inkscape-preferences.cpp:918 msgid "Relative" msgstr "Hlutfallsleg" -#: ../src/ui/dialog/inkscape-preferences.cpp:920 -#: ../src/ui/dialog/inkscape-preferences.cpp:1205 +#: ../src/ui/dialog/inkscape-preferences.cpp:918 +#: ../src/ui/dialog/inkscape-preferences.cpp:1202 msgid "Optimized" msgstr "Bestað" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:922 msgid "Path string format:" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:924 +#: ../src/ui/dialog/inkscape-preferences.cpp:922 msgid "" "Path data should be written: only with absolute coordinates, only with " "relative coordinates, or optimized for string length (mixed absolute and " "relative coordinates)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:926 +#: ../src/ui/dialog/inkscape-preferences.cpp:924 msgid "Force repeat commands" msgstr "Þvinga endurtekningu skipana" -#: ../src/ui/dialog/inkscape-preferences.cpp:927 +#: ../src/ui/dialog/inkscape-preferences.cpp:925 msgid "" "Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead " "of 'L 1,2 3,4')" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:929 +#: ../src/ui/dialog/inkscape-preferences.cpp:927 msgid "Numbers" msgstr "Tölur" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:930 msgid "_Numeric precision:" msgstr "Töluleg _nákvæmni:" -#: ../src/ui/dialog/inkscape-preferences.cpp:932 +#: ../src/ui/dialog/inkscape-preferences.cpp:930 msgid "Significant figures of the values written to the SVG file" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:935 +#: ../src/ui/dialog/inkscape-preferences.cpp:933 msgid "Minimum _exponent:" msgstr "Lágmarksv_eldisvísir:" -#: ../src/ui/dialog/inkscape-preferences.cpp:935 +#: ../src/ui/dialog/inkscape-preferences.cpp:933 msgid "" "The smallest number written to SVG is 10 to the power of this exponent; " "anything smaller is written as zero" @@ -18844,56 +19519,56 @@ msgstr "" #. Code to add controls for attribute checking options #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:940 +#: ../src/ui/dialog/inkscape-preferences.cpp:938 msgid "Improper Attributes Actions" msgstr "Aðgerðir vegna óviðeigandi eiginda" -#: ../src/ui/dialog/inkscape-preferences.cpp:942 -#: ../src/ui/dialog/inkscape-preferences.cpp:950 -#: ../src/ui/dialog/inkscape-preferences.cpp:958 +#: ../src/ui/dialog/inkscape-preferences.cpp:940 +#: ../src/ui/dialog/inkscape-preferences.cpp:948 +#: ../src/ui/dialog/inkscape-preferences.cpp:956 msgid "Print warnings" msgstr "Birta aðvaranir" -#: ../src/ui/dialog/inkscape-preferences.cpp:943 +#: ../src/ui/dialog/inkscape-preferences.cpp:941 msgid "" "Print warning if invalid or non-useful attributes found. Database files " "located in inkscape_data_dir/attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:944 +#: ../src/ui/dialog/inkscape-preferences.cpp:942 msgid "Remove attributes" msgstr "Fjarlægja eigindi" -#: ../src/ui/dialog/inkscape-preferences.cpp:945 +#: ../src/ui/dialog/inkscape-preferences.cpp:943 msgid "Delete invalid or non-useful attributes from element tag" msgstr "" #. Add incorrect style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:948 +#: ../src/ui/dialog/inkscape-preferences.cpp:946 msgid "Inappropriate Style Properties Actions" msgstr "Aðgerðir vegna óviðeigandi stíla" -#: ../src/ui/dialog/inkscape-preferences.cpp:951 +#: ../src/ui/dialog/inkscape-preferences.cpp:949 msgid "" "Print warning if inappropriate style properties found (i.e. 'font-family' " "set on a ). Database files located in inkscape_data_dir/attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:952 -#: ../src/ui/dialog/inkscape-preferences.cpp:960 +#: ../src/ui/dialog/inkscape-preferences.cpp:950 +#: ../src/ui/dialog/inkscape-preferences.cpp:958 msgid "Remove style properties" msgstr "Fjarlægja stíleiginleika" -#: ../src/ui/dialog/inkscape-preferences.cpp:953 +#: ../src/ui/dialog/inkscape-preferences.cpp:951 msgid "Delete inappropriate style properties" msgstr "Eyða óviðeigandi stíleiginleikum" #. Add default or inherited style properties options -#: ../src/ui/dialog/inkscape-preferences.cpp:956 +#: ../src/ui/dialog/inkscape-preferences.cpp:954 msgid "Non-useful Style Properties Actions" msgstr "Aðgerðir vegna ónotaðra óviðeigandi stíla" -#: ../src/ui/dialog/inkscape-preferences.cpp:959 +#: ../src/ui/dialog/inkscape-preferences.cpp:957 msgid "" "Print warning if redundant style properties found (i.e. if a property has " "the default value and a different value is not inherited or if value is the " @@ -18901,19 +19576,19 @@ msgid "" "attributes." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:961 +#: ../src/ui/dialog/inkscape-preferences.cpp:959 msgid "Delete redundant style properties" msgstr "Eyða umfram-stíleiginleikum" -#: ../src/ui/dialog/inkscape-preferences.cpp:963 +#: ../src/ui/dialog/inkscape-preferences.cpp:961 msgid "Check Attributes and Style Properties on" msgstr "Athuga eigindi og stíla við" -#: ../src/ui/dialog/inkscape-preferences.cpp:965 +#: ../src/ui/dialog/inkscape-preferences.cpp:963 msgid "Reading" msgstr "Lestur" -#: ../src/ui/dialog/inkscape-preferences.cpp:966 +#: ../src/ui/dialog/inkscape-preferences.cpp:964 msgid "" "Check attributes and style properties on reading in SVG files (including " "those internal to Inkscape which will slow down startup)" @@ -18921,11 +19596,11 @@ msgstr "" "Athuga eigindi og stíla þegar SVG-skrár eru lesnar inn (þar með talið þeim " "sem eru innbyggðar í Inkscape sem gæti hægt á ræsingu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:967 +#: ../src/ui/dialog/inkscape-preferences.cpp:965 msgid "Editing" msgstr "Breytingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:968 +#: ../src/ui/dialog/inkscape-preferences.cpp:966 msgid "" "Check attributes and style properties while editing SVG files (may slow down " "Inkscape, mostly useful for debugging)" @@ -18933,42 +19608,42 @@ msgstr "" "Athuga eigindi og stíla þegar SVG-skrám er breytt (gæti hægt á Inkscape, " "aðallega notadrjúgt við aflúsun)" -#: ../src/ui/dialog/inkscape-preferences.cpp:969 +#: ../src/ui/dialog/inkscape-preferences.cpp:967 msgid "Writing" msgstr "Ritun" -#: ../src/ui/dialog/inkscape-preferences.cpp:970 +#: ../src/ui/dialog/inkscape-preferences.cpp:968 msgid "Check attributes and style properties on writing out SVG files" msgstr "Athuga eigindi og stíla þegar SVG-skrár eru skrifaðar" -#: ../src/ui/dialog/inkscape-preferences.cpp:972 +#: ../src/ui/dialog/inkscape-preferences.cpp:970 msgid "SVG output" msgstr "SVG frálag" #. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 msgid "Perceptual" msgstr "Skynjanlegt" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 msgid "Relative Colorimetric" msgstr "Afstæð litmæling" -#: ../src/ui/dialog/inkscape-preferences.cpp:978 +#: ../src/ui/dialog/inkscape-preferences.cpp:976 msgid "Absolute Colorimetric" msgstr "Algild litmæling" -#: ../src/ui/dialog/inkscape-preferences.cpp:982 +#: ../src/ui/dialog/inkscape-preferences.cpp:980 msgid "(Note: Color management has been disabled in this build)" msgstr "" "(Ath: Litastýring (color management) hefur verið gerð óvirk í þessari " "útgáfubyggingu)" -#: ../src/ui/dialog/inkscape-preferences.cpp:986 +#: ../src/ui/dialog/inkscape-preferences.cpp:984 msgid "Display adjustment" msgstr "Aðlögun skjás" -#: ../src/ui/dialog/inkscape-preferences.cpp:996 +#: ../src/ui/dialog/inkscape-preferences.cpp:993 #, c-format msgid "" "The ICC profile to use to calibrate display output.\n" @@ -18977,110 +19652,110 @@ msgstr "" "ICC litasniðið sem nota á til að kvarða skjá.\n" "Leitað í möppum: %s" -#: ../src/ui/dialog/inkscape-preferences.cpp:997 +#: ../src/ui/dialog/inkscape-preferences.cpp:994 msgid "Display profile:" msgstr "Litasnið skjás:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1002 +#: ../src/ui/dialog/inkscape-preferences.cpp:999 msgid "Retrieve profile from display" msgstr "Ná í litasnið frá skjá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1005 +#: ../src/ui/dialog/inkscape-preferences.cpp:1002 msgid "Retrieve profiles from those attached to displays via XICC" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1007 +#: ../src/ui/dialog/inkscape-preferences.cpp:1004 msgid "Retrieve profiles from those attached to displays" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1012 +#: ../src/ui/dialog/inkscape-preferences.cpp:1009 msgid "Display rendering intent:" msgstr "Myndgerðarmarkmið fyrir skjá:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1013 +#: ../src/ui/dialog/inkscape-preferences.cpp:1010 msgid "The rendering intent to use to calibrate display output" msgstr "Tegund myndgerðarmarkmiðs sem nota á til að kvarða skjá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1015 +#: ../src/ui/dialog/inkscape-preferences.cpp:1012 msgid "Proofing" msgstr "Próförk" -#: ../src/ui/dialog/inkscape-preferences.cpp:1017 +#: ../src/ui/dialog/inkscape-preferences.cpp:1014 msgid "Simulate output on screen" msgstr "Líkja eftir úttaki á skjá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1019 +#: ../src/ui/dialog/inkscape-preferences.cpp:1016 msgid "Simulates output of target device" msgstr "Líkir eftir útkomu á úttakstæki" -#: ../src/ui/dialog/inkscape-preferences.cpp:1021 +#: ../src/ui/dialog/inkscape-preferences.cpp:1018 msgid "Mark out of gamut colors" msgstr "Merkja liti utan litrófs" -#: ../src/ui/dialog/inkscape-preferences.cpp:1023 +#: ../src/ui/dialog/inkscape-preferences.cpp:1020 msgid "Highlights colors that are out of gamut for the target device" msgstr "Merkir liti sem eru utan litrófs úttakstækisins" -#: ../src/ui/dialog/inkscape-preferences.cpp:1030 +#: ../src/ui/dialog/inkscape-preferences.cpp:1027 msgid "Out of gamut warning color:" msgstr "Litur merkingar fyrir liti utan litrófs:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1031 +#: ../src/ui/dialog/inkscape-preferences.cpp:1028 msgid "Selects the color used for out of gamut warning" msgstr "Velur lit fyrir merkingar á litum utan litrófs" -#: ../src/ui/dialog/inkscape-preferences.cpp:1033 +#: ../src/ui/dialog/inkscape-preferences.cpp:1030 msgid "Device profile:" msgstr "Litasnið tækis:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1034 +#: ../src/ui/dialog/inkscape-preferences.cpp:1031 msgid "The ICC profile to use to simulate device output" msgstr "ICC litasniðið sem nota á til að kvarða úttak tækis" -#: ../src/ui/dialog/inkscape-preferences.cpp:1037 +#: ../src/ui/dialog/inkscape-preferences.cpp:1034 msgid "Device rendering intent:" msgstr "Myndgerðarmarkmið tækis:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1038 +#: ../src/ui/dialog/inkscape-preferences.cpp:1035 msgid "The rendering intent to use to calibrate device output" msgstr "Tegund myndgerðarmarkmiðs sem nota á til að kvarða úttak tækis" -#: ../src/ui/dialog/inkscape-preferences.cpp:1040 +#: ../src/ui/dialog/inkscape-preferences.cpp:1037 msgid "Black point compensation" msgstr "BPC svartgildisjöfnun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1042 +#: ../src/ui/dialog/inkscape-preferences.cpp:1039 msgid "Enables black point compensation" msgstr "Virkjar BPC svartgildisjöfnun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1044 +#: ../src/ui/dialog/inkscape-preferences.cpp:1041 msgid "Preserve black" msgstr "Varðveita svart" -#: ../src/ui/dialog/inkscape-preferences.cpp:1051 +#: ../src/ui/dialog/inkscape-preferences.cpp:1048 msgid "(LittleCMS 1.15 or later required)" msgstr "(LittleCMS 1.15 eða nýrra er krafist)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1053 +#: ../src/ui/dialog/inkscape-preferences.cpp:1050 msgid "Preserve K channel in CMYK -> CMYK transforms" msgstr "Vernda K litrás í CMYK -> CMYK umbreytingum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1067 -#: ../src/ui/widget/color-icc-selector.cpp:381 -#: ../src/ui/widget/color-icc-selector.cpp:677 +#: ../src/ui/dialog/inkscape-preferences.cpp:1064 +#: ../src/ui/widget/color-icc-selector.cpp:372 +#: ../src/ui/widget/color-icc-selector.cpp:671 msgid "" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1112 +#: ../src/ui/dialog/inkscape-preferences.cpp:1109 msgid "Color management" msgstr "Litastýring" #. Autosave options -#: ../src/ui/dialog/inkscape-preferences.cpp:1115 +#: ../src/ui/dialog/inkscape-preferences.cpp:1112 msgid "Enable autosave (requires restart)" msgstr "Virkja sjálfvirka vistun (krefst endurræsingar)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1116 +#: ../src/ui/dialog/inkscape-preferences.cpp:1113 msgid "" "Automatically save the current document(s) at a given interval, thus " "minimizing loss in case of a crash" @@ -19088,12 +19763,12 @@ msgstr "" "Vista sjálfkrafa núverandi skjöl með ákveðnu millibili, og þannig minnka " "líkurnar á gagnatapi við kerfishrun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1119 msgctxt "Filesystem" msgid "Autosave _directory:" msgstr "_Mappa fyrir sjálfvirka vistun:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1122 +#: ../src/ui/dialog/inkscape-preferences.cpp:1119 msgid "" "The directory where autosaves will be written. This should be an absolute " "path (starts with / on UNIX or a drive letter such as C: on Windows). " @@ -19101,19 +19776,19 @@ msgstr "" "Mappan þar sem sjálfvirkar vistunarskrár verða skrifaðar. Þetta ætti að vera " "algild slóð (byrjar með / á UNIX eða bókstaf drifs eins og C: á Windows). " -#: ../src/ui/dialog/inkscape-preferences.cpp:1124 +#: ../src/ui/dialog/inkscape-preferences.cpp:1121 msgid "_Interval (in minutes):" msgstr "_Bið á milli (í mínútum):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1124 +#: ../src/ui/dialog/inkscape-preferences.cpp:1121 msgid "Interval (in minutes) at which document will be autosaved" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1126 +#: ../src/ui/dialog/inkscape-preferences.cpp:1123 msgid "_Maximum number of autosaves:" msgstr "_Hámarksfjöldi sjálfvirkra vistana:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1126 +#: ../src/ui/dialog/inkscape-preferences.cpp:1123 msgid "" "Maximum number of autosaved files; use this to limit the storage space used" msgstr "" @@ -19130,15 +19805,15 @@ msgstr "" #. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE ); #. #. ----------- -#: ../src/ui/dialog/inkscape-preferences.cpp:1141 +#: ../src/ui/dialog/inkscape-preferences.cpp:1138 msgid "Autosave" msgstr "Sjálfvirk vistun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1145 +#: ../src/ui/dialog/inkscape-preferences.cpp:1142 msgid "Open Clip Art Library _Server Name:" msgstr "Vefþjónn _klippimyndasafns (Open Clip Art Library):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1146 +#: ../src/ui/dialog/inkscape-preferences.cpp:1143 msgid "" "The server name of the Open Clip Art Library webdav server; it's used by the " "Import and Export to OCAL function" @@ -19146,81 +19821,81 @@ msgstr "" "Nafn Open Clip Art Library webdav vefþjónsins; það er notað í inn- og " "útflutningi fyrir OCAL aðgerðir" -#: ../src/ui/dialog/inkscape-preferences.cpp:1148 +#: ../src/ui/dialog/inkscape-preferences.cpp:1145 msgid "Open Clip Art Library _Username:" msgstr "_Notandanafn klippimyndasafns:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1149 +#: ../src/ui/dialog/inkscape-preferences.cpp:1146 msgid "The username used to log into Open Clip Art Library" msgstr "" "Notandanafn til innskráningar á Open Clip Art Library klippimyndasafnið" -#: ../src/ui/dialog/inkscape-preferences.cpp:1151 +#: ../src/ui/dialog/inkscape-preferences.cpp:1148 msgid "Open Clip Art Library _Password:" msgstr "_Lykilorð klippimyndasafns:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1152 +#: ../src/ui/dialog/inkscape-preferences.cpp:1149 msgid "The password used to log into Open Clip Art Library" msgstr "Lykilorð til innskráningar á Open Clip Art Library klippimyndasafnið" -#: ../src/ui/dialog/inkscape-preferences.cpp:1153 +#: ../src/ui/dialog/inkscape-preferences.cpp:1150 msgid "Open Clip Art" msgstr "Open Clip Art klippimyndasafn" -#: ../src/ui/dialog/inkscape-preferences.cpp:1158 +#: ../src/ui/dialog/inkscape-preferences.cpp:1155 msgid "Behavior" msgstr "Hegðun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1162 +#: ../src/ui/dialog/inkscape-preferences.cpp:1159 msgid "_Simplification threshold:" msgstr "_Takmörk einföldunar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1163 +#: ../src/ui/dialog/inkscape-preferences.cpp:1160 msgid "" "How strong is the Node tool's 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." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1165 +#: ../src/ui/dialog/inkscape-preferences.cpp:1162 msgid "Color stock markers the same color as object" msgstr "Lita venjuleg línumerki eins og hlutinn" -#: ../src/ui/dialog/inkscape-preferences.cpp:1166 +#: ../src/ui/dialog/inkscape-preferences.cpp:1163 msgid "Color custom markers the same color as object" msgstr "Lita sérsniðin línumerki eins og hlutinn" -#: ../src/ui/dialog/inkscape-preferences.cpp:1167 +#: ../src/ui/dialog/inkscape-preferences.cpp:1164 #: ../src/ui/dialog/inkscape-preferences.cpp:1387 msgid "Update marker color when object color changes" msgstr "Uppfæra lit línumerkis þegar litur hlutar breytist" #. Selecting options -#: ../src/ui/dialog/inkscape-preferences.cpp:1170 +#: ../src/ui/dialog/inkscape-preferences.cpp:1167 msgid "Select in all layers" msgstr "Velja í öllum lögum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1171 +#: ../src/ui/dialog/inkscape-preferences.cpp:1168 msgid "Select only within current layer" msgstr "Velja aðeins innan núverandi lags" -#: ../src/ui/dialog/inkscape-preferences.cpp:1172 +#: ../src/ui/dialog/inkscape-preferences.cpp:1169 msgid "Select in current layer and sublayers" msgstr "Velja innan núverandi lags og í undirlögum þess" -#: ../src/ui/dialog/inkscape-preferences.cpp:1173 +#: ../src/ui/dialog/inkscape-preferences.cpp:1170 msgid "Ignore hidden objects and layers" msgstr "Hunsa falda hluti og lög" -#: ../src/ui/dialog/inkscape-preferences.cpp:1174 +#: ../src/ui/dialog/inkscape-preferences.cpp:1171 msgid "Ignore locked objects and layers" msgstr "Hunsa læsta hluti og lög" -#: ../src/ui/dialog/inkscape-preferences.cpp:1175 +#: ../src/ui/dialog/inkscape-preferences.cpp:1172 msgid "Deselect upon layer change" msgstr "Afvelja við að skipta um lag" -#: ../src/ui/dialog/inkscape-preferences.cpp:1178 +#: ../src/ui/dialog/inkscape-preferences.cpp:1175 msgid "" "Uncheck this to be able to keep the current objects selected when the " "current layer changes" @@ -19228,20 +19903,20 @@ msgstr "" "Taka hakið úr þessu til að halda völdum hlutum áfram völdum eftir að skipt " "eru um virkt lag" -#: ../src/ui/dialog/inkscape-preferences.cpp:1180 +#: ../src/ui/dialog/inkscape-preferences.cpp:1177 msgid "Ctrl+A, Tab, Shift+Tab" msgstr "Ctrl+A, Tab, Shift+Tab" -#: ../src/ui/dialog/inkscape-preferences.cpp:1182 +#: ../src/ui/dialog/inkscape-preferences.cpp:1179 msgid "Make keyboard selection commands work on objects in all layers" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1184 +#: ../src/ui/dialog/inkscape-preferences.cpp:1181 msgid "Make keyboard selection commands work on objects in current layer only" msgstr "" "Láta valskipanir með lyklaborði einungis virka á hluti innan núverandi lags" -#: ../src/ui/dialog/inkscape-preferences.cpp:1186 +#: ../src/ui/dialog/inkscape-preferences.cpp:1183 msgid "" "Make keyboard selection commands work on objects in current layer and all " "its sublayers" @@ -19249,103 +19924,103 @@ msgstr "" "Láta valskipanir með lyklaborði virka á hluti innan núverandi lags og í " "undirlögum þess" -#: ../src/ui/dialog/inkscape-preferences.cpp:1188 +#: ../src/ui/dialog/inkscape-preferences.cpp:1185 msgid "" "Uncheck this to be able to select objects that are hidden (either by " "themselves or by being in a hidden layer)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1190 +#: ../src/ui/dialog/inkscape-preferences.cpp:1187 msgid "" "Uncheck this to be able to select objects that are locked (either by " "themselves or by being in a locked layer)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1192 +#: ../src/ui/dialog/inkscape-preferences.cpp:1189 msgid "Wrap when cycling objects in z-order" msgstr "Fara í hring þegar flett er í gegnum atriði í z-röð þeirra" -#: ../src/ui/dialog/inkscape-preferences.cpp:1194 +#: ../src/ui/dialog/inkscape-preferences.cpp:1191 msgid "Alt+Scroll Wheel" msgstr "Alt+skrunhjól" -#: ../src/ui/dialog/inkscape-preferences.cpp:1196 +#: ../src/ui/dialog/inkscape-preferences.cpp:1193 msgid "Wrap around at start and end when cycling objects in z-order" msgstr "" -"Fara í hring milli upphafs og endaatriða þegar flett er í gegnum atriði í " -"z-röð þeirra (dýpt á lagi)." +"Fara í hring milli upphafs og endaatriða þegar flett er í gegnum atriði í z-" +"röð þeirra (dýpt á lagi)." -#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/ui/dialog/inkscape-preferences.cpp:1195 msgid "Selecting" msgstr "Val" #. Transforms options -#: ../src/ui/dialog/inkscape-preferences.cpp:1201 -#: ../src/widgets/select-toolbar.cpp:557 +#: ../src/ui/dialog/inkscape-preferences.cpp:1198 +#: ../src/widgets/select-toolbar.cpp:554 msgid "Scale stroke width" msgstr "Kvarða breidd útlínu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1202 +#: ../src/ui/dialog/inkscape-preferences.cpp:1199 msgid "Scale rounded corners in rectangles" msgstr "Kvarða rúnnuð horn í rétthyrningum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1203 +#: ../src/ui/dialog/inkscape-preferences.cpp:1200 msgid "Transform gradients" msgstr "Ummynda litstigla" -#: ../src/ui/dialog/inkscape-preferences.cpp:1204 +#: ../src/ui/dialog/inkscape-preferences.cpp:1201 msgid "Transform patterns" msgstr "Ummynda mynstur" -#: ../src/ui/dialog/inkscape-preferences.cpp:1206 +#: ../src/ui/dialog/inkscape-preferences.cpp:1203 msgid "Preserved" msgstr "Varðveita" -#: ../src/ui/dialog/inkscape-preferences.cpp:1209 -#: ../src/widgets/select-toolbar.cpp:558 +#: ../src/ui/dialog/inkscape-preferences.cpp:1206 +#: ../src/widgets/select-toolbar.cpp:555 msgid "When scaling objects, scale the stroke width by the same proportion" msgstr "Þegar hlutir eru kvarðaðir, láta útlínur kvarðast í sömu hlutföllum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1211 -#: ../src/widgets/select-toolbar.cpp:569 +#: ../src/ui/dialog/inkscape-preferences.cpp:1208 +#: ../src/widgets/select-toolbar.cpp:566 msgid "When scaling rectangles, scale the radii of rounded corners" msgstr "" "Þegar rétthyrningar eru kvarðaðir, láta radíus horna kvarðast í sömu " "hlutföllum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1213 -#: ../src/widgets/select-toolbar.cpp:580 +#: ../src/ui/dialog/inkscape-preferences.cpp:1210 +#: ../src/widgets/select-toolbar.cpp:577 msgid "Move gradients (in fill or stroke) along with the objects" msgstr "Færa litstigla (í fyllingu eða útlínu) ásamt hlutum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1215 -#: ../src/widgets/select-toolbar.cpp:591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1212 +#: ../src/widgets/select-toolbar.cpp:588 msgid "Move patterns (in fill or stroke) along with the objects" msgstr "Færa mynstur (í fyllingu eða útlínu) ásamt hlutum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1216 +#: ../src/ui/dialog/inkscape-preferences.cpp:1213 msgid "Store transformation" msgstr "Geyma umbreytingu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1218 +#: ../src/ui/dialog/inkscape-preferences.cpp:1215 msgid "" "If possible, apply transformation to objects without adding a transform= " "attribute" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1220 +#: ../src/ui/dialog/inkscape-preferences.cpp:1217 msgid "Always store transformation as a transform= attribute on objects" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1222 +#: ../src/ui/dialog/inkscape-preferences.cpp:1219 msgid "Transforms" msgstr "Ummyndanir" -#: ../src/ui/dialog/inkscape-preferences.cpp:1226 +#: ../src/ui/dialog/inkscape-preferences.cpp:1223 msgid "Mouse _wheel scrolls by:" msgstr "Renni_hjól músar skrunar um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1227 +#: ../src/ui/dialog/inkscape-preferences.cpp:1224 msgid "" "One mouse wheel notch scrolls by this distance in screen pixels " "(horizontally with Shift)" @@ -19353,142 +20028,142 @@ msgstr "" "Eitt hak á rennihjóli músar skrunar um þetta marga mynddíla á skjá (lárétt " "með Shift)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1228 +#: ../src/ui/dialog/inkscape-preferences.cpp:1225 msgid "Ctrl+arrows" msgstr "Ctrl+örvar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1230 +#: ../src/ui/dialog/inkscape-preferences.cpp:1227 msgid "Sc_roll by:" msgstr "Sk_runa um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1231 +#: ../src/ui/dialog/inkscape-preferences.cpp:1228 msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1233 +#: ../src/ui/dialog/inkscape-preferences.cpp:1230 msgid "_Acceleration:" msgstr "_Hröðun:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1234 +#: ../src/ui/dialog/inkscape-preferences.cpp:1231 msgid "" "Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no " "acceleration)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1235 +#: ../src/ui/dialog/inkscape-preferences.cpp:1232 msgid "Autoscrolling" msgstr "Sjálfvirkt skrun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1237 +#: ../src/ui/dialog/inkscape-preferences.cpp:1234 msgid "_Speed:" msgstr "_Hraði:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1238 +#: ../src/ui/dialog/inkscape-preferences.cpp:1235 msgid "" "How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn " "autoscroll off)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1240 -#: ../src/ui/dialog/tracedialog.cpp:521 ../src/ui/dialog/tracedialog.cpp:720 +#: ../src/ui/dialog/inkscape-preferences.cpp:1237 +#: ../src/ui/dialog/tracedialog.cpp:520 ../src/ui/dialog/tracedialog.cpp:719 msgid "_Threshold:" msgstr "_Takmörk:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1241 +#: ../src/ui/dialog/inkscape-preferences.cpp:1238 msgid "" "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" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1242 +#: ../src/ui/dialog/inkscape-preferences.cpp:1239 msgid "Mouse move pans when Space is pressed" msgstr "Músarhreyfing hliðrar þegar ýtt er á bilslá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1244 +#: ../src/ui/dialog/inkscape-preferences.cpp:1241 msgid "When on, pressing and holding Space and dragging pans canvas" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1245 +#: ../src/ui/dialog/inkscape-preferences.cpp:1242 msgid "Mouse wheel zooms by default" msgstr "Músarhjól stýrir sjálfgefið aðdrætti" -#: ../src/ui/dialog/inkscape-preferences.cpp:1247 +#: ../src/ui/dialog/inkscape-preferences.cpp:1244 msgid "" "When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when " "off, it zooms with Ctrl and scrolls without Ctrl" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1248 +#: ../src/ui/dialog/inkscape-preferences.cpp:1245 msgid "Scrolling" msgstr "Skrun" #. Snapping options -#: ../src/ui/dialog/inkscape-preferences.cpp:1251 +#: ../src/ui/dialog/inkscape-preferences.cpp:1248 msgid "Snap indicator" msgstr "Vísbending um grip" -#: ../src/ui/dialog/inkscape-preferences.cpp:1253 +#: ../src/ui/dialog/inkscape-preferences.cpp:1250 msgid "Enable snap indicator" msgstr "Virkja merki um grip" -#: ../src/ui/dialog/inkscape-preferences.cpp:1255 +#: ../src/ui/dialog/inkscape-preferences.cpp:1252 msgid "After snapping, a symbol is drawn at the point that has snapped" msgstr "Eftir grip er tákn teiknað við hnútinn sem gripið er í" -#: ../src/ui/dialog/inkscape-preferences.cpp:1260 +#: ../src/ui/dialog/inkscape-preferences.cpp:1257 msgid "Snap indicator persistence (in seconds):" msgstr "Þrjóska vísbendingar um grip (í sekúndum):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1261 +#: ../src/ui/dialog/inkscape-preferences.cpp:1258 msgid "" "Controls how long the snap indicator message will be shown, before it " "disappears" msgstr "Stýrir hversu lengi vísbending um grip er birt, áður en hún hverfur" -#: ../src/ui/dialog/inkscape-preferences.cpp:1263 +#: ../src/ui/dialog/inkscape-preferences.cpp:1260 msgid "What should snap" msgstr "Hvað ætti að grípa" -#: ../src/ui/dialog/inkscape-preferences.cpp:1265 +#: ../src/ui/dialog/inkscape-preferences.cpp:1262 msgid "Only snap the node closest to the pointer" msgstr "Einungis grípa í hnútinn sem næstur er músarbendli" -#: ../src/ui/dialog/inkscape-preferences.cpp:1267 +#: ../src/ui/dialog/inkscape-preferences.cpp:1264 msgid "" "Only try to snap the node that is initially closest to the mouse pointer" msgstr "Einungis grípa í hnútinn sem upprunalegast er næstur músarbendlinum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1270 +#: ../src/ui/dialog/inkscape-preferences.cpp:1267 msgid "_Weight factor:" msgstr "_Forgangsstuðull:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1271 +#: ../src/ui/dialog/inkscape-preferences.cpp:1268 msgid "" "When multiple snap solutions are found, then Inkscape can either prefer the " "closest transformation (when set to 0), or prefer the node that was " "initially the closest to the pointer (when set to 1)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1273 +#: ../src/ui/dialog/inkscape-preferences.cpp:1270 msgid "Snap the mouse pointer when dragging a constrained knot" msgstr "Grípa í músarbendil þegar skilyrtur hnútur er dreginn" -#: ../src/ui/dialog/inkscape-preferences.cpp:1275 +#: ../src/ui/dialog/inkscape-preferences.cpp:1272 msgid "" "When dragging a knot along a constraint line, then snap the position of the " "mouse pointer instead of snapping the projection of the knot onto the " "constraint line" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1277 +#: ../src/ui/dialog/inkscape-preferences.cpp:1274 msgid "Delayed snap" msgstr "Tafið grip" -#: ../src/ui/dialog/inkscape-preferences.cpp:1280 +#: ../src/ui/dialog/inkscape-preferences.cpp:1277 msgid "Delay (in seconds):" msgstr "Seinkun (í sekúndum):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1281 +#: ../src/ui/dialog/inkscape-preferences.cpp:1278 msgid "" "Postpone snapping as long as the mouse is moving, and then wait an " "additional fraction of a second. This additional delay is specified here. " @@ -19498,93 +20173,102 @@ msgstr "" "aukatöf er skilgreind hér. Þegar þetta er stillt á núll eða mjög lága tölu, " "er gripið samstundis." -#: ../src/ui/dialog/inkscape-preferences.cpp:1283 +#: ../src/ui/dialog/inkscape-preferences.cpp:1280 msgid "Snapping" msgstr "Grip" #. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1288 +#: ../src/ui/dialog/inkscape-preferences.cpp:1285 msgid "_Arrow keys move by:" msgstr "Örv_alyklar færa um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1289 +#: ../src/ui/dialog/inkscape-preferences.cpp:1286 msgid "" "Pressing an arrow key moves selected object(s) or node(s) by this distance" msgstr "" #. defaultscale is limited to 1000 in select-context.cpp: use the same limit here -#: ../src/ui/dialog/inkscape-preferences.cpp:1292 +#: ../src/ui/dialog/inkscape-preferences.cpp:1289 msgid "> and < _scale by:" msgstr "> og < kvarða um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1293 +#: ../src/ui/dialog/inkscape-preferences.cpp:1290 msgid "Pressing > or < scales selection up or down by this increment" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1295 +#: ../src/ui/dialog/inkscape-preferences.cpp:1292 msgid "_Inset/Outset by:" msgstr "_Innfella/Útfella um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1296 +#: ../src/ui/dialog/inkscape-preferences.cpp:1293 msgid "Inset and Outset commands displace the path by this distance" -msgstr "" +msgstr "Innfella/Útfella skipanirnar hliðra ferlinum um þessa vegalengd" -#: ../src/ui/dialog/inkscape-preferences.cpp:1297 +#: ../src/ui/dialog/inkscape-preferences.cpp:1294 msgid "Compass-like display of angles" msgstr "Áttavitastíll við birtingu á hornum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1299 +#: ../src/ui/dialog/inkscape-preferences.cpp:1296 msgid "" "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" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1301 +#: ../src/ui/dialog/inkscape-preferences.cpp:1298 msgctxt "Rotation angle" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/inkscape-preferences.cpp:1305 +#: ../src/ui/dialog/inkscape-preferences.cpp:1302 msgid "_Rotation snaps every:" msgstr "Snúningu_r grípur hverjar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1305 +#: ../src/ui/dialog/inkscape-preferences.cpp:1302 +#: ../src/ui/dialog/inkscape-preferences.cpp:1311 msgid "degrees" msgstr "gráður" -#: ../src/ui/dialog/inkscape-preferences.cpp:1306 +#: ../src/ui/dialog/inkscape-preferences.cpp:1303 msgid "" "Rotating with Ctrl pressed snaps every that much degrees; also, pressing " "[ or ] rotates by this amount" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1307 +#: ../src/ui/dialog/inkscape-preferences.cpp:1304 msgid "Relative snapping of guideline angles" msgstr "Hlutfallslegt grip í horn milli stoðlína" -#: ../src/ui/dialog/inkscape-preferences.cpp:1309 +#: ../src/ui/dialog/inkscape-preferences.cpp:1306 msgid "" "When on, the snap angles when rotating a guideline will be relative to the " "original angle" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1311 +#: ../src/ui/dialog/inkscape-preferences.cpp:1308 msgid "_Zoom in/out by:" msgstr "_Renna að/frá um:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1311 -#: ../src/ui/dialog/objects.cpp:1630 +#: ../src/ui/dialog/inkscape-preferences.cpp:1308 +#: ../src/ui/dialog/objects.cpp:1651 #: ../src/ui/widget/filter-effect-chooser.cpp:23 msgid "%" msgstr "%" -#: ../src/ui/dialog/inkscape-preferences.cpp:1312 +#: ../src/ui/dialog/inkscape-preferences.cpp:1309 msgid "" "Zoom tool click, +/- keys, and middle click zoom in and out by this " "multiplier" msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1311 +msgid "_Rotate canvas by:" +msgstr "Snúa m_yndfleti um:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1312 +msgid "Rotate canvas clockwise and counter-clockwise by this amount." +msgstr "Snúa myndfleti réttsælis og rangsælis um þetta horn." + #: ../src/ui/dialog/inkscape-preferences.cpp:1313 msgid "Steps" msgstr "Þrepun" @@ -19711,7 +20395,7 @@ msgstr "Beita afmörkun/hulu á hópa sem innihalda alla hlutina" #: ../src/ui/dialog/inkscape-preferences.cpp:1372 msgid "After releasing" -msgstr "" +msgstr "Eftir að sleppt er" #: ../src/ui/dialog/inkscape-preferences.cpp:1374 msgid "Ungroup automatically created groups" @@ -19763,7 +20447,7 @@ msgid "Number of _Threads:" msgstr "_Fjöldi þráða:" #: ../src/ui/dialog/inkscape-preferences.cpp:1404 -#: ../src/ui/dialog/inkscape-preferences.cpp:1928 +#: ../src/ui/dialog/inkscape-preferences.cpp:1936 msgid "(requires restart)" msgstr "(krefst endurræsingar)" @@ -19786,39 +20470,53 @@ msgid "" "parts of the drawing for later reuse; set to zero to disable caching" msgstr "" +#: ../src/ui/dialog/inkscape-preferences.cpp:1413 +msgid "Rendering tile multiplier:" +msgstr "Margfaldari myndgerðarflísa:" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1413 +msgid "requires restart" +msgstr "krefst endurræsingar" + +#: ../src/ui/dialog/inkscape-preferences.cpp:1413 +msgid "" +"Set the relative size of tiles used to render the canvas. The larger the " +"value, the bigger the tile size." +msgstr "" + #. blur quality #. filter quality -#: ../src/ui/dialog/inkscape-preferences.cpp:1412 -#: ../src/ui/dialog/inkscape-preferences.cpp:1436 +#: ../src/ui/dialog/inkscape-preferences.cpp:1416 +#: ../src/ui/dialog/inkscape-preferences.cpp:1440 msgid "Best quality (slowest)" msgstr "Bestu gæði (hægvirkast)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1414 -#: ../src/ui/dialog/inkscape-preferences.cpp:1438 +#: ../src/ui/dialog/inkscape-preferences.cpp:1418 +#: ../src/ui/dialog/inkscape-preferences.cpp:1442 msgid "Better quality (slower)" msgstr "Betri gæði (hægvirkara)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1416 -#: ../src/ui/dialog/inkscape-preferences.cpp:1440 +#: ../src/ui/dialog/inkscape-preferences.cpp:1420 +#: ../src/ui/dialog/inkscape-preferences.cpp:1444 msgid "Average quality" msgstr "Meðalgæði" -#: ../src/ui/dialog/inkscape-preferences.cpp:1418 -#: ../src/ui/dialog/inkscape-preferences.cpp:1442 +#: ../src/ui/dialog/inkscape-preferences.cpp:1422 +#: ../src/ui/dialog/inkscape-preferences.cpp:1446 msgid "Lower quality (faster)" msgstr "Minni gæði (hraðara)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1420 -#: ../src/ui/dialog/inkscape-preferences.cpp:1444 +#: ../src/ui/dialog/inkscape-preferences.cpp:1424 +#: ../src/ui/dialog/inkscape-preferences.cpp:1448 msgid "Lowest quality (fastest)" msgstr "Lægstu gæði (hraðast)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1423 +#: ../src/ui/dialog/inkscape-preferences.cpp:1427 msgid "Gaussian blur quality for display" msgstr "Gæði gaussískrar afskerpingar sem birtist" -#: ../src/ui/dialog/inkscape-preferences.cpp:1425 -#: ../src/ui/dialog/inkscape-preferences.cpp:1449 +#: ../src/ui/dialog/inkscape-preferences.cpp:1429 +#: ../src/ui/dialog/inkscape-preferences.cpp:1453 msgid "" "Best quality, but display may be very slow at high zooms (bitmap export " "always uses best quality)" @@ -19826,158 +20524,160 @@ msgstr "" "Bestu gæði, en birting gæti verið mjög hægvirk við mikinn aðdrátt " "(útflutningur bitamynda notar alltaf bestu gæði)" -#: ../src/ui/dialog/inkscape-preferences.cpp:1427 -#: ../src/ui/dialog/inkscape-preferences.cpp:1451 +#: ../src/ui/dialog/inkscape-preferences.cpp:1431 +#: ../src/ui/dialog/inkscape-preferences.cpp:1455 msgid "Better quality, but slower display" msgstr "Betri gæði, en hægvirkari birting" -#: ../src/ui/dialog/inkscape-preferences.cpp:1429 -#: ../src/ui/dialog/inkscape-preferences.cpp:1453 +#: ../src/ui/dialog/inkscape-preferences.cpp:1433 +#: ../src/ui/dialog/inkscape-preferences.cpp:1457 msgid "Average quality, acceptable display speed" msgstr "Meðalgæði, ásættanlegur hraði birtingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1431 -#: ../src/ui/dialog/inkscape-preferences.cpp:1455 +#: ../src/ui/dialog/inkscape-preferences.cpp:1435 +#: ../src/ui/dialog/inkscape-preferences.cpp:1459 msgid "Lower quality (some artifacts), but display is faster" msgstr "Minni gæði (einhverjar truflanir), en birting er hraðari" -#: ../src/ui/dialog/inkscape-preferences.cpp:1433 -#: ../src/ui/dialog/inkscape-preferences.cpp:1457 +#: ../src/ui/dialog/inkscape-preferences.cpp:1437 +#: ../src/ui/dialog/inkscape-preferences.cpp:1461 msgid "Lowest quality (considerable artifacts), but display is fastest" msgstr "Lægstu gæði (umtalsverðar truflanir), en birting er hröðust" -#: ../src/ui/dialog/inkscape-preferences.cpp:1447 +#: ../src/ui/dialog/inkscape-preferences.cpp:1451 msgid "Filter effects quality for display" msgstr "Gæði síuáhrifa sem birtast" #. build custom preferences tab -#: ../src/ui/dialog/inkscape-preferences.cpp:1459 -#: ../src/ui/dialog/print.cpp:214 +#: ../src/ui/dialog/inkscape-preferences.cpp:1463 +#: ../src/ui/dialog/print.cpp:204 msgid "Rendering" msgstr "Myndgerð" #. Note: /options/bitmapoversample removed with Cairo renderer -#: ../src/ui/dialog/inkscape-preferences.cpp:1465 ../src/verbs.cpp:150 +#: ../src/ui/dialog/inkscape-preferences.cpp:1469 ../src/verbs.cpp:151 #: ../src/widgets/calligraphy-toolbar.cpp:626 msgid "Edit" msgstr "Breyta" -#: ../src/ui/dialog/inkscape-preferences.cpp:1466 +#: ../src/ui/dialog/inkscape-preferences.cpp:1470 msgid "Automatically reload bitmaps" msgstr "Endurhlaða bitamyndum sjálfkrafa" -#: ../src/ui/dialog/inkscape-preferences.cpp:1468 +#: ../src/ui/dialog/inkscape-preferences.cpp:1472 msgid "Automatically reload linked images when file is changed on disk" msgstr "Endurhlaða tengdum bitamyndum sjálfkrafa þegar skrá er breytt á diski" -#: ../src/ui/dialog/inkscape-preferences.cpp:1470 +#: ../src/ui/dialog/inkscape-preferences.cpp:1474 msgid "_Bitmap editor:" msgstr "Forrit til vinnslu _bitamynda:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1472 +#: ../src/ui/dialog/inkscape-preferences.cpp:1476 #: ../share/extensions/guillotine.inx.h:5 ../share/extensions/plotter.inx.h:65 +#: ../share/extensions/prepare_file_save_as.inx.h:2 +#: ../share/extensions/prepare_print_win32_vector.inx.h:2 #: ../share/extensions/print_win32_vector.inx.h:2 msgid "Export" msgstr "Flytja út" -#: ../src/ui/dialog/inkscape-preferences.cpp:1474 +#: ../src/ui/dialog/inkscape-preferences.cpp:1478 msgid "Default export _resolution:" msgstr "Sjálfgefin _upplausn fyrir útflutning:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1475 +#: ../src/ui/dialog/inkscape-preferences.cpp:1479 msgid "Default bitmap resolution (in dots per inch) in the Export dialog" msgstr "" "Sjálfgefin upplausn bitamynda (mynddílar á tommu - PÁT) í " "útflutningsglugganum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1476 -#: ../src/ui/dialog/xml-tree.cpp:898 +#: ../src/ui/dialog/inkscape-preferences.cpp:1480 +#: ../src/ui/dialog/xml-tree.cpp:911 msgid "Create" msgstr "Búa til" -#: ../src/ui/dialog/inkscape-preferences.cpp:1478 +#: ../src/ui/dialog/inkscape-preferences.cpp:1482 msgid "Resolution for Create Bitmap _Copy:" msgstr "Upplausn við að búa til _afrit af bitamynd:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1479 +#: ../src/ui/dialog/inkscape-preferences.cpp:1483 msgid "Resolution used by the Create Bitmap Copy command" msgstr "" "Upplausn sem notuð er við að nota \"Búa til afrit af bitamynd\" skipunin" -#: ../src/ui/dialog/inkscape-preferences.cpp:1482 +#: ../src/ui/dialog/inkscape-preferences.cpp:1486 msgid "Ask about linking and scaling when importing" msgstr "Spyrja um tengingar og kvörðun við innflutning" -#: ../src/ui/dialog/inkscape-preferences.cpp:1484 +#: ../src/ui/dialog/inkscape-preferences.cpp:1488 msgid "Pop-up linking and scaling dialog when importing bitmap image." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1490 +#: ../src/ui/dialog/inkscape-preferences.cpp:1494 msgid "Bitmap link:" msgstr "Tengill á bitamynd:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1497 +#: ../src/ui/dialog/inkscape-preferences.cpp:1501 msgid "Bitmap scale (image-rendering):" msgstr "Kvarði bitamyndar (myndgerð):" -#: ../src/ui/dialog/inkscape-preferences.cpp:1502 +#: ../src/ui/dialog/inkscape-preferences.cpp:1506 msgid "Default _import resolution:" msgstr "Sjálfgefin upplausn fyrir _innflutning:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1503 +#: ../src/ui/dialog/inkscape-preferences.cpp:1507 msgid "Default bitmap resolution (in dots per inch) for bitmap import" msgstr "" "Sjálfgefin upplausn bitamynda (mynddílar á tommu - PÁT) við innflutning" -#: ../src/ui/dialog/inkscape-preferences.cpp:1504 +#: ../src/ui/dialog/inkscape-preferences.cpp:1508 msgid "Override file resolution" msgstr "Skrifa yfir upplausn í skrá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1506 +#: ../src/ui/dialog/inkscape-preferences.cpp:1510 msgid "Use default bitmap resolution in favor of information from file" msgstr "" "Nota sjálfgefna upplausn bitamynda í stað þeirra sem gefnar eru upp í skrá" #. rendering outlines for pixmap image tags -#: ../src/ui/dialog/inkscape-preferences.cpp:1510 +#: ../src/ui/dialog/inkscape-preferences.cpp:1514 msgid "Images in Outline Mode" msgstr "Myndir sjást í útlínuham" -#: ../src/ui/dialog/inkscape-preferences.cpp:1511 +#: ../src/ui/dialog/inkscape-preferences.cpp:1515 msgid "" "When active will render images while in outline mode instead of a red box " "with an x. This is useful for manual tracing." msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1513 +#: ../src/ui/dialog/inkscape-preferences.cpp:1517 msgid "Bitmaps" msgstr "Bitamyndir" -#: ../src/ui/dialog/inkscape-preferences.cpp:1525 +#: ../src/ui/dialog/inkscape-preferences.cpp:1529 msgid "" "Select a file of predefined shortcuts to use. Any customized shortcuts you " "create will be added separately to " msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1528 +#: ../src/ui/dialog/inkscape-preferences.cpp:1532 msgid "Shortcut file:" msgstr "Flýtilyklaskrá:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1531 -#: ../src/ui/dialog/template-load-tab.cpp:41 +#: ../src/ui/dialog/inkscape-preferences.cpp:1535 +#: ../src/ui/dialog/template-load-tab.cpp:43 msgid "Search:" msgstr "Leita:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1543 +#: ../src/ui/dialog/inkscape-preferences.cpp:1547 msgid "Shortcut" msgstr "Flýtilykill" -#: ../src/ui/dialog/inkscape-preferences.cpp:1544 +#: ../src/ui/dialog/inkscape-preferences.cpp:1548 #: ../src/ui/widget/page-sizer.cpp:270 msgid "Description" msgstr "Lýsing" -#: ../src/ui/dialog/inkscape-preferences.cpp:1587 +#: ../src/ui/dialog/inkscape-preferences.cpp:1591 msgid "" "Remove all your customized keyboard shortcuts, and revert to the shortcuts " "in the shortcut file listed above" @@ -19985,182 +20685,182 @@ msgstr "" "Fjarlægja alla sérsniðnu flýtilyklana þína og endurheimta flýtilyklana sem " "eru í flýtilyklaskránni hér fyrir ofan" -#: ../src/ui/dialog/inkscape-preferences.cpp:1591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1595 msgid "Import ..." msgstr "Flytja inn..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1591 +#: ../src/ui/dialog/inkscape-preferences.cpp:1595 msgid "Import custom keyboard shortcuts from a file" msgstr "Flytja inn sérsniðnar flýtileiðir fyrir lyklaborð úr skrá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1594 +#: ../src/ui/dialog/inkscape-preferences.cpp:1598 msgid "Export ..." msgstr "Flytja út ..." -#: ../src/ui/dialog/inkscape-preferences.cpp:1594 +#: ../src/ui/dialog/inkscape-preferences.cpp:1598 msgid "Export custom keyboard shortcuts to a file" msgstr "Flytja sérsniðnar flýtileiðir fyrir lyklaborð út í skrá" -#: ../src/ui/dialog/inkscape-preferences.cpp:1604 +#: ../src/ui/dialog/inkscape-preferences.cpp:1608 msgid "Keyboard Shortcuts" msgstr "Flýtilyklar" #. Find this group in the tree -#: ../src/ui/dialog/inkscape-preferences.cpp:1767 +#: ../src/ui/dialog/inkscape-preferences.cpp:1771 msgid "Misc" msgstr "Ýmislegt" -#: ../src/ui/dialog/inkscape-preferences.cpp:1869 +#: ../src/ui/dialog/inkscape-preferences.cpp:1877 msgctxt "Spellchecker language" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/inkscape-preferences.cpp:1890 +#: ../src/ui/dialog/inkscape-preferences.cpp:1898 msgid "Set the main spell check language" msgstr "Stilla aðaltungumál fyrir stafsetningaryfirferð" -#: ../src/ui/dialog/inkscape-preferences.cpp:1893 +#: ../src/ui/dialog/inkscape-preferences.cpp:1901 msgid "Second language:" msgstr "Annað tungumál:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1894 +#: ../src/ui/dialog/inkscape-preferences.cpp:1902 msgid "" "Set the second spell check language; checking will only stop on words " "unknown in ALL chosen languages" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1897 +#: ../src/ui/dialog/inkscape-preferences.cpp:1905 msgid "Third language:" msgstr "Þriðja tungumál:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1898 +#: ../src/ui/dialog/inkscape-preferences.cpp:1906 msgid "" "Set the third spell check language; checking will only stop on words unknown " "in ALL chosen languages" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1900 +#: ../src/ui/dialog/inkscape-preferences.cpp:1908 msgid "Ignore words with digits" msgstr "Hunsa orð með tölum" -#: ../src/ui/dialog/inkscape-preferences.cpp:1902 +#: ../src/ui/dialog/inkscape-preferences.cpp:1910 msgid "Ignore words containing digits, such as \"R2D2\"" msgstr "Hunsa orð með tölustöfum eins og \"R2D2\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:1904 +#: ../src/ui/dialog/inkscape-preferences.cpp:1912 msgid "Ignore words in ALL CAPITALS" msgstr "Hunsa orð með EINGÖNGU HÁSTÖFUM" -#: ../src/ui/dialog/inkscape-preferences.cpp:1906 +#: ../src/ui/dialog/inkscape-preferences.cpp:1914 msgid "Ignore words in all capitals, such as \"IUPAC\"" msgstr "Hunsa orð með einungis hástöfum, eins og \"BSRB\"" -#: ../src/ui/dialog/inkscape-preferences.cpp:1908 +#: ../src/ui/dialog/inkscape-preferences.cpp:1916 msgid "Spellcheck" msgstr "Skoða stafsetningu" -#: ../src/ui/dialog/inkscape-preferences.cpp:1928 +#: ../src/ui/dialog/inkscape-preferences.cpp:1936 msgid "Latency _skew:" msgstr "_Skekkja v/seinkunar:" -#: ../src/ui/dialog/inkscape-preferences.cpp:1929 +#: ../src/ui/dialog/inkscape-preferences.cpp:1937 msgid "" "Factor by which the event clock is skewed from the actual time (0.9766 on " "some systems)" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1931 +#: ../src/ui/dialog/inkscape-preferences.cpp:1939 msgid "Pre-render named icons" msgstr "Forvinna nefndar táknmyndir" -#: ../src/ui/dialog/inkscape-preferences.cpp:1933 +#: ../src/ui/dialog/inkscape-preferences.cpp:1941 msgid "" "When on, named icons will be rendered before displaying the ui. This is for " "working around bugs in GTK+ named icon notification" msgstr "" -#: ../src/ui/dialog/inkscape-preferences.cpp:1941 +#: ../src/ui/dialog/inkscape-preferences.cpp:1949 msgid "System info" msgstr "Kerfisupplýsingar" -#: ../src/ui/dialog/inkscape-preferences.cpp:1945 +#: ../src/ui/dialog/inkscape-preferences.cpp:1953 msgid "User config: " msgstr "Stillingar notanda: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1945 +#: ../src/ui/dialog/inkscape-preferences.cpp:1953 msgid "Location of users configuration" -msgstr "" +msgstr "Staðsetning uppsetningar notenda" -#: ../src/ui/dialog/inkscape-preferences.cpp:1949 +#: ../src/ui/dialog/inkscape-preferences.cpp:1957 msgid "User preferences: " msgstr "Kjörstillingar notanda: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1949 +#: ../src/ui/dialog/inkscape-preferences.cpp:1957 msgid "Location of the users preferences file" -msgstr "" +msgstr "Staðsetning kjörstillingaskrár notandans" -#: ../src/ui/dialog/inkscape-preferences.cpp:1953 +#: ../src/ui/dialog/inkscape-preferences.cpp:1961 msgid "User extensions: " msgstr "Viðbætur notanda: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1953 +#: ../src/ui/dialog/inkscape-preferences.cpp:1961 msgid "Location of the users extensions" -msgstr "" +msgstr "Staðsetning forritsviðbóta notandans" -#: ../src/ui/dialog/inkscape-preferences.cpp:1957 +#: ../src/ui/dialog/inkscape-preferences.cpp:1965 msgid "User cache: " msgstr "Skyndiminni notanda: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1957 +#: ../src/ui/dialog/inkscape-preferences.cpp:1965 msgid "Location of users cache" -msgstr "" +msgstr "Staðsetning skyndiminnis notenda" -#: ../src/ui/dialog/inkscape-preferences.cpp:1965 +#: ../src/ui/dialog/inkscape-preferences.cpp:1973 msgid "Temporary files: " msgstr "Bráðabirgðaskrár: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1965 +#: ../src/ui/dialog/inkscape-preferences.cpp:1973 msgid "Location of the temporary files used for autosave" -msgstr "" +msgstr "Staðsetning bráðabirgðaskráa sem notaðar eru við sjálfvirka vistun" -#: ../src/ui/dialog/inkscape-preferences.cpp:1969 +#: ../src/ui/dialog/inkscape-preferences.cpp:1977 msgid "Inkscape data: " msgstr "Inkscape gögn: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1969 +#: ../src/ui/dialog/inkscape-preferences.cpp:1977 msgid "Location of Inkscape data" msgstr "Staðsetning Inkscape gagna" -#: ../src/ui/dialog/inkscape-preferences.cpp:1973 +#: ../src/ui/dialog/inkscape-preferences.cpp:1981 msgid "Inkscape extensions: " msgstr "Inkscape viðbætur: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1973 +#: ../src/ui/dialog/inkscape-preferences.cpp:1981 msgid "Location of the Inkscape extensions" -msgstr "" +msgstr "Staðsetning forritsviðbóta Inkscape" -#: ../src/ui/dialog/inkscape-preferences.cpp:1982 +#: ../src/ui/dialog/inkscape-preferences.cpp:1990 msgid "System data: " msgstr "Kerfisgögn: " -#: ../src/ui/dialog/inkscape-preferences.cpp:1982 +#: ../src/ui/dialog/inkscape-preferences.cpp:1990 msgid "Locations of system data" -msgstr "" +msgstr "Staðsetningar kerfisgagna" -#: ../src/ui/dialog/inkscape-preferences.cpp:2006 +#: ../src/ui/dialog/inkscape-preferences.cpp:2014 msgid "Icon theme: " msgstr "Táknmyndaþema: " -#: ../src/ui/dialog/inkscape-preferences.cpp:2006 +#: ../src/ui/dialog/inkscape-preferences.cpp:2014 msgid "Locations of icon themes" -msgstr "" +msgstr "Staðsetningar á táknmyndaþemum" -#: ../src/ui/dialog/inkscape-preferences.cpp:2008 +#: ../src/ui/dialog/inkscape-preferences.cpp:2016 msgid "System" msgstr "Kerfi" #: ../src/ui/dialog/input.cpp:345 ../src/ui/dialog/input.cpp:366 -#: ../src/ui/dialog/input.cpp:1507 +#: ../src/ui/dialog/input.cpp:1467 ../src/widgets/toolbox.cpp:227 msgid "Disabled" msgstr "Óvirkt" @@ -20181,342 +20881,344 @@ msgstr "Prufusvæði" msgid "Axis" msgstr "Ás" -#: ../src/ui/dialog/input.cpp:642 ../share/extensions/svgcalendar.inx.h:2 +#: ../src/ui/dialog/input.cpp:651 ../share/extensions/svgcalendar.inx.h:2 msgid "Configuration" msgstr "Stillingar" -#: ../src/ui/dialog/input.cpp:643 +#: ../src/ui/dialog/input.cpp:652 msgid "Hardware" msgstr "Vélbúnaður" -#: ../src/ui/dialog/input.cpp:666 +#: ../src/ui/dialog/input.cpp:665 msgid "Link:" msgstr "Tengill:" -#: ../src/ui/dialog/input.cpp:668 ../src/ui/dialog/input.cpp:669 -#: ../src/ui/dialog/input.cpp:1437 ../src/ui/widget/color-scales.cpp:43 +#: ../src/ui/dialog/input.cpp:667 ../src/ui/dialog/input.cpp:668 +#: ../src/ui/dialog/input.cpp:1397 ../src/ui/widget/color-scales.cpp:43 #: ../share/extensions/plotter.inx.h:24 msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/input.cpp:675 +#: ../src/ui/dialog/input.cpp:674 msgid "Axes count:" msgstr "Fjöldi ása:" -#: ../src/ui/dialog/input.cpp:694 +#: ../src/ui/dialog/input.cpp:680 msgid "axis:" msgstr "ás:" -#: ../src/ui/dialog/input.cpp:707 +#: ../src/ui/dialog/input.cpp:693 msgid "Button count:" msgstr "Fjöldi hnappa:" -#: ../src/ui/dialog/input.cpp:881 +#: ../src/ui/dialog/input.cpp:842 msgid "Tablet" msgstr "Teiknitafla" -#: ../src/ui/dialog/input.cpp:910 ../src/ui/dialog/input.cpp:1794 +#: ../src/ui/dialog/input.cpp:871 ../src/ui/dialog/input.cpp:1754 msgid "pad" msgstr "platti" -#: ../src/ui/dialog/input.cpp:952 +#: ../src/ui/dialog/input.cpp:913 msgid "_Use pressure-sensitive tablet (requires restart)" msgstr "No_ta þrýstinæmt teiknispjald (krefst endurræsingar)" -#: ../src/ui/dialog/input.cpp:957 +#: ../src/ui/dialog/input.cpp:918 msgid "Axes" msgstr "Ásar" -#: ../src/ui/dialog/input.cpp:958 +#: ../src/ui/dialog/input.cpp:919 msgid "Keys" msgstr "Lyklar" -#: ../src/ui/dialog/input.cpp:1036 +#: ../src/ui/dialog/input.cpp:996 msgid "" "A device can be 'Disabled', its co-ordinates mapped to the whole 'Screen', " "or to a single (usually focused) 'Window'" msgstr "" -#: ../src/ui/dialog/input.cpp:1482 ../src/widgets/calligraphy-toolbar.cpp:578 +#: ../src/ui/dialog/input.cpp:1442 ../src/widgets/calligraphy-toolbar.cpp:578 #: ../src/widgets/spray-toolbar.cpp:311 ../src/widgets/spray-toolbar.cpp:427 #: ../src/widgets/spray-toolbar.cpp:476 ../src/widgets/tweak-toolbar.cpp:372 msgid "Pressure" msgstr "Þrýstingur" -#: ../src/ui/dialog/input.cpp:1482 +#: ../src/ui/dialog/input.cpp:1442 msgid "X tilt" msgstr "X halli" -#: ../src/ui/dialog/input.cpp:1482 +#: ../src/ui/dialog/input.cpp:1442 msgid "Y tilt" msgstr "Y halli" -#: ../src/ui/dialog/input.cpp:1482 ../src/ui/widget/color-wheel-selector.cpp:25 +#: ../src/ui/dialog/input.cpp:1442 +#: ../src/ui/widget/color-wheel-selector.cpp:25 msgid "Wheel" msgstr "Litahringur" -#: ../src/ui/dialog/input.cpp:1491 +#: ../src/ui/dialog/input.cpp:1451 msgctxt "Input device axe" msgid "None" msgstr "Ekkert" -#: ../src/ui/dialog/knot-properties.cpp:50 +#: ../src/ui/dialog/knot-properties.cpp:57 msgid "Position X:" msgstr "Staðsetning X:" -#: ../src/ui/dialog/knot-properties.cpp:57 +#: ../src/ui/dialog/knot-properties.cpp:66 msgid "Position Y:" msgstr "Staðsetning Y:" -#: ../src/ui/dialog/knot-properties.cpp:111 +#: ../src/ui/dialog/knot-properties.cpp:117 msgid "Modify Knot Position" msgstr "Breyta staðsetningu hnúts" -#: ../src/ui/dialog/knot-properties.cpp:112 -#: ../src/ui/dialog/layer-properties.cpp:380 -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:112 -#: ../src/ui/dialog/transformation.cpp:103 +#: ../src/ui/dialog/knot-properties.cpp:118 +#: ../src/ui/dialog/layer-properties.cpp:383 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:114 +#: ../src/ui/dialog/transformation.cpp:101 msgid "_Move" msgstr "_Færa" -#: ../src/ui/dialog/knot-properties.cpp:171 +#: ../src/ui/dialog/knot-properties.cpp:177 #, c-format msgid "Position X (%s):" msgstr "Staðsetning X (%s):" -#: ../src/ui/dialog/knot-properties.cpp:172 +#: ../src/ui/dialog/knot-properties.cpp:178 #, c-format msgid "Position Y (%s):" msgstr "Staðsetning Y (%s):" -#: ../src/ui/dialog/layer-properties.cpp:47 +#: ../src/ui/dialog/layer-properties.cpp:50 msgid "Layer name:" msgstr "Heiti lags:" -#: ../src/ui/dialog/layer-properties.cpp:121 +#: ../src/ui/dialog/layer-properties.cpp:123 msgid "Add layer" msgstr "Bæta við lagi" -#: ../src/ui/dialog/layer-properties.cpp:157 +#: ../src/ui/dialog/layer-properties.cpp:159 msgid "Above current" msgstr "Ofan við núverandi" -#: ../src/ui/dialog/layer-properties.cpp:161 +#: ../src/ui/dialog/layer-properties.cpp:163 msgid "Below current" msgstr "Undir núverandi" -#: ../src/ui/dialog/layer-properties.cpp:164 +#: ../src/ui/dialog/layer-properties.cpp:166 msgid "As sublayer of current" msgstr "Sem undirlag núverandi" -#: ../src/ui/dialog/layer-properties.cpp:321 +#: ../src/ui/dialog/layer-properties.cpp:324 msgid "Rename Layer" msgstr "Endurnefna lag" #. TODO: find an unused layer number, forming name from _("Layer ") + "%d" -#: ../src/ui/dialog/layer-properties.cpp:323 -#: ../src/ui/dialog/layer-properties.cpp:379 ../src/verbs.cpp:188 -#: ../src/verbs.cpp:2399 +#: ../src/ui/dialog/layer-properties.cpp:326 +#: ../src/ui/dialog/layer-properties.cpp:382 ../src/verbs.cpp:189 +#: ../src/verbs.cpp:2496 msgid "Layer" msgstr "Lag" -#: ../src/ui/dialog/layer-properties.cpp:324 +#: ../src/ui/dialog/layer-properties.cpp:327 msgid "_Rename" msgstr "Endu_rnefna" -#: ../src/ui/dialog/layer-properties.cpp:337 ../src/ui/dialog/layers.cpp:750 +#: ../src/ui/dialog/layer-properties.cpp:340 ../src/ui/dialog/layers.cpp:756 msgid "Rename layer" msgstr "Endurnefna lag" #. TRANSLATORS: This means "The layer has been renamed" -#: ../src/ui/dialog/layer-properties.cpp:339 +#: ../src/ui/dialog/layer-properties.cpp:342 msgid "Renamed layer" msgstr "Endurnefnt lag" -#: ../src/ui/dialog/layer-properties.cpp:343 +#: ../src/ui/dialog/layer-properties.cpp:346 msgid "Add Layer" msgstr "Bæta við lagi" -#: ../src/ui/dialog/layer-properties.cpp:349 +#: ../src/ui/dialog/layer-properties.cpp:352 +#: ../src/ui/dialog/livepatheffect-add.cpp:25 msgid "_Add" msgstr "_Bæta við" -#: ../src/ui/dialog/layer-properties.cpp:373 +#: ../src/ui/dialog/layer-properties.cpp:376 msgid "New layer created." msgstr "Nýtt lag búið til." -#: ../src/ui/dialog/layer-properties.cpp:377 +#: ../src/ui/dialog/layer-properties.cpp:380 msgid "Move to Layer" msgstr "Flytja á lag" -#: ../src/ui/dialog/layers.cpp:517 ../src/ui/widget/layer-selector.cpp:602 +#: ../src/ui/dialog/layers.cpp:523 ../src/ui/widget/layer-selector.cpp:603 msgid "Unhide layer" msgstr "Birta lag" -#: ../src/ui/dialog/layers.cpp:517 ../src/ui/widget/layer-selector.cpp:602 +#: ../src/ui/dialog/layers.cpp:523 ../src/ui/widget/layer-selector.cpp:603 msgid "Hide layer" msgstr "Fela lag" -#: ../src/ui/dialog/layers.cpp:528 ../src/ui/widget/layer-selector.cpp:594 +#: ../src/ui/dialog/layers.cpp:534 ../src/ui/widget/layer-selector.cpp:595 msgid "Lock layer" msgstr "Læsa lagi" -#: ../src/ui/dialog/layers.cpp:528 ../src/ui/widget/layer-selector.cpp:594 +#: ../src/ui/dialog/layers.cpp:534 ../src/ui/widget/layer-selector.cpp:595 msgid "Unlock layer" msgstr "Aflæsa lagi" -#: ../src/ui/dialog/layers.cpp:616 ../src/ui/dialog/objects.cpp:831 -#: ../src/verbs.cpp:1458 +#: ../src/ui/dialog/layers.cpp:622 ../src/ui/dialog/objects.cpp:852 +#: ../src/verbs.cpp:1471 msgid "Toggle layer solo" msgstr "" -#: ../src/ui/dialog/layers.cpp:619 ../src/ui/dialog/objects.cpp:834 -#: ../src/verbs.cpp:1482 +#: ../src/ui/dialog/layers.cpp:625 ../src/ui/dialog/objects.cpp:855 +#: ../src/verbs.cpp:1495 msgid "Lock other layers" msgstr "Læsa hinum lögunum" -#: ../src/ui/dialog/layers.cpp:722 +#: ../src/ui/dialog/layers.cpp:728 msgid "Move layer" msgstr "Flytja lag" -#: ../src/ui/dialog/layers.cpp:880 +#: ../src/ui/dialog/layers.cpp:886 msgctxt "Layers" msgid "New" msgstr "Nýtt" -#: ../src/ui/dialog/layers.cpp:885 +#: ../src/ui/dialog/layers.cpp:891 msgctxt "Layers" msgid "Bot" msgstr "Neðst" -#: ../src/ui/dialog/layers.cpp:891 +#: ../src/ui/dialog/layers.cpp:897 msgctxt "Layers" msgid "Dn" msgstr "Niður" -#: ../src/ui/dialog/layers.cpp:897 +#: ../src/ui/dialog/layers.cpp:903 msgctxt "Layers" msgid "Up" msgstr "Upp" -#: ../src/ui/dialog/layers.cpp:903 +#: ../src/ui/dialog/layers.cpp:909 msgctxt "Layers" msgid "Top" msgstr "Efst" -#: ../src/ui/dialog/livepatheffect-add.cpp:31 +#: ../src/ui/dialog/livepatheffect-add.cpp:30 msgid "Add Path Effect" msgstr "Bæta við ferilbrellu" -#: ../src/ui/dialog/livepatheffect-editor.cpp:111 +#: ../src/ui/dialog/livepatheffect-editor.cpp:115 msgid "Add path effect" msgstr "Bæta við ferilbrellu" -#: ../src/ui/dialog/livepatheffect-editor.cpp:115 +#: ../src/ui/dialog/livepatheffect-editor.cpp:119 msgid "Delete current path effect" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:119 +#: ../src/ui/dialog/livepatheffect-editor.cpp:123 msgid "Raise the current path effect" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:123 +#: ../src/ui/dialog/livepatheffect-editor.cpp:127 msgid "Lower the current path effect" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:289 +#: ../src/ui/dialog/livepatheffect-editor.cpp:311 msgid "Unknown effect is applied" msgstr "Óþekktri sjónbrellu er beitt" -#: ../src/ui/dialog/livepatheffect-editor.cpp:292 +#: ../src/ui/dialog/livepatheffect-editor.cpp:314 msgid "Click button to add an effect" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:307 +#: ../src/ui/dialog/livepatheffect-editor.cpp:329 msgid "Click add button to convert clone" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:312 -#: ../src/ui/dialog/livepatheffect-editor.cpp:316 -#: ../src/ui/dialog/livepatheffect-editor.cpp:325 +#: ../src/ui/dialog/livepatheffect-editor.cpp:334 +#: ../src/ui/dialog/livepatheffect-editor.cpp:338 +#: ../src/ui/dialog/livepatheffect-editor.cpp:347 msgid "Select a path or shape" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:321 +#: ../src/ui/dialog/livepatheffect-editor.cpp:343 msgid "Only one item can be selected" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:353 +#: ../src/ui/dialog/livepatheffect-editor.cpp:375 msgid "Unknown effect" msgstr "Óþekkt sjónbrella" -#: ../src/ui/dialog/livepatheffect-editor.cpp:429 +#: ../src/ui/dialog/livepatheffect-editor.cpp:451 msgid "Create and apply path effect" msgstr "Búa til og beita ferilbrellu" -#: ../src/ui/dialog/livepatheffect-editor.cpp:469 +#: ../src/ui/dialog/livepatheffect-editor.cpp:491 msgid "Create and apply Clone original path effect" msgstr "" -#: ../src/ui/dialog/livepatheffect-editor.cpp:497 +#: ../src/ui/dialog/livepatheffect-editor.cpp:513 msgid "Remove path effect" msgstr "Fjarlægja ferilbrellu" -#: ../src/ui/dialog/livepatheffect-editor.cpp:515 +#: ../src/ui/dialog/livepatheffect-editor.cpp:531 msgid "Move path effect up" msgstr "Færa ferilbrellu upp" -#: ../src/ui/dialog/livepatheffect-editor.cpp:532 +#: ../src/ui/dialog/livepatheffect-editor.cpp:548 msgid "Move path effect down" msgstr "Færa ferilbrellu niður" -#: ../src/ui/dialog/livepatheffect-editor.cpp:587 +#: ../src/ui/dialog/livepatheffect-editor.cpp:603 msgid "Activate path effect" msgstr "Virkja ferilbrellu" -#: ../src/ui/dialog/livepatheffect-editor.cpp:587 +#: ../src/ui/dialog/livepatheffect-editor.cpp:603 msgid "Deactivate path effect" msgstr "Gera ferilbrellu óvirka" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:43 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:46 msgid "Radius (pixels):" msgstr "Radíus (mynddílar):" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:55 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:57 msgid "Chamfer subdivisions:" msgstr "Uppskipting hornskurðar:" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:126 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:128 msgid "Modify Fillet-Chamfer" msgstr "Breyta kverkrúnnun-hornskurði" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:127 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:129 msgid "_Modify" msgstr "_Breyta" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:191 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:197 msgid "Radius" msgstr "Radíus" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:193 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:199 msgid "Radius approximated" msgstr "Nálgaður radíus" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:196 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:202 msgid "Knot distance" -msgstr "" +msgstr "Fjarlægð hnúts" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:203 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:207 msgid "Position (%):" msgstr "Staðsetning (%):" -#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:206 +#: ../src/ui/dialog/lpe-fillet-chamfer-properties.cpp:210 msgid "%1:" msgstr "%1:" -#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:111 +#: ../src/ui/dialog/lpe-powerstroke-properties.cpp:113 msgid "Modify Node Position" -msgstr "" +msgstr "Breyta staðsetningu liðs" #: ../src/ui/dialog/memory.cpp:97 msgid "Heap" @@ -20565,11 +21267,11 @@ msgstr "Annálsritun hafin." msgid "Log capture stopped." msgstr "Annálsritun stöðvuð." -#: ../src/ui/dialog/new-from-template.cpp:26 +#: ../src/ui/dialog/new-from-template.cpp:23 msgid "Create from template" msgstr "Búa til út frá sniðmáti" -#: ../src/ui/dialog/new-from-template.cpp:28 +#: ../src/ui/dialog/new-from-template.cpp:25 msgid "New From Template" msgstr "Nýtt út frá sniðmáti" @@ -20608,9 +21310,9 @@ msgid "Image Rendering:" msgstr "Myndgerð myndar:" #: ../src/ui/dialog/object-properties.cpp:50 -#: ../src/ui/dialog/object-properties.cpp:308 -#: ../src/ui/dialog/object-properties.cpp:379 -#: ../src/ui/dialog/object-properties.cpp:386 +#: ../src/ui/dialog/object-properties.cpp:305 +#: ../src/ui/dialog/object-properties.cpp:376 +#: ../src/ui/dialog/object-properties.cpp:383 msgid "_ID:" msgstr "Auðkenni (_ID):" @@ -20637,16 +21339,16 @@ msgid "" msgstr "" #. Create the entry box for the object label -#: ../src/ui/dialog/object-properties.cpp:137 +#: ../src/ui/dialog/object-properties.cpp:136 msgid "A freeform label for the object" msgstr "Frjálslega löguð skýring á hlutnum" #. Create the frame for the object description -#: ../src/ui/dialog/object-properties.cpp:170 +#: ../src/ui/dialog/object-properties.cpp:168 msgid "_Description:" msgstr "_Lýsing:" -#: ../src/ui/dialog/object-properties.cpp:199 +#: ../src/ui/dialog/object-properties.cpp:196 msgid "" "The 'image-rendering' property can influence how a bitmap is up-scaled:\n" "\t'auto' no preference;\n" @@ -20657,262 +21359,257 @@ msgid "" msgstr "" #. Hide -#: ../src/ui/dialog/object-properties.cpp:222 +#: ../src/ui/dialog/object-properties.cpp:219 msgid "Check to make the object invisible" msgstr "Haka við til að gera hlutinn ósýnilegan" #. Lock #. TRANSLATORS: "Lock" is a verb here -#: ../src/ui/dialog/object-properties.cpp:231 +#: ../src/ui/dialog/object-properties.cpp:228 msgid "Check to make the object insensitive (not selectable by mouse)" msgstr "Haka við til að gera hlutinn ónæman (ekki veljanlegan með bendli)" #. Button for setting the object's id, label, title and description. -#: ../src/ui/dialog/object-properties.cpp:240 ../src/verbs.cpp:2765 -#: ../src/verbs.cpp:2771 +#: ../src/ui/dialog/object-properties.cpp:237 ../src/verbs.cpp:2874 +#: ../src/verbs.cpp:2880 msgid "_Set" msgstr "_Setja" #. Create the frame for interactivity options -#: ../src/ui/dialog/object-properties.cpp:248 +#: ../src/ui/dialog/object-properties.cpp:245 msgid "_Interactivity" msgstr "Gagnv_irkni" -#: ../src/ui/dialog/object-properties.cpp:295 -#: ../src/ui/dialog/object-properties.cpp:300 +#: ../src/ui/dialog/object-properties.cpp:292 +#: ../src/ui/dialog/object-properties.cpp:297 msgid "Ref" msgstr "Ref" -#: ../src/ui/dialog/object-properties.cpp:381 +#: ../src/ui/dialog/object-properties.cpp:378 msgid "Id invalid! " msgstr "Ógilt auðkenni! " -#: ../src/ui/dialog/object-properties.cpp:383 +#: ../src/ui/dialog/object-properties.cpp:380 msgid "Id exists! " msgstr "Auðkenni þegar til! " -#: ../src/ui/dialog/object-properties.cpp:389 +#: ../src/ui/dialog/object-properties.cpp:386 msgid "Set object ID" msgstr "Setja auðkenni hlutar" -#: ../src/ui/dialog/object-properties.cpp:403 +#: ../src/ui/dialog/object-properties.cpp:400 msgid "Set object label" msgstr "Setja skýringu hlutar" -#: ../src/ui/dialog/object-properties.cpp:409 +#: ../src/ui/dialog/object-properties.cpp:406 msgid "Set object title" msgstr "Setja titil hlutar" -#: ../src/ui/dialog/object-properties.cpp:418 +#: ../src/ui/dialog/object-properties.cpp:415 msgid "Set object description" msgstr "Setja lýsingu hlutar" -#: ../src/ui/dialog/object-properties.cpp:444 +#: ../src/ui/dialog/object-properties.cpp:441 msgid "Set image rendering option" msgstr "Setja valkost myndgerðarmarkmiðs:" -#: ../src/ui/dialog/object-properties.cpp:463 +#: ../src/ui/dialog/object-properties.cpp:460 msgid "Lock object" msgstr "Læsa hlut" -#: ../src/ui/dialog/object-properties.cpp:463 +#: ../src/ui/dialog/object-properties.cpp:460 msgid "Unlock object" msgstr "Aflæsa hlut" -#: ../src/ui/dialog/object-properties.cpp:479 +#: ../src/ui/dialog/object-properties.cpp:476 msgid "Hide object" msgstr "Fela hlut" -#: ../src/ui/dialog/object-properties.cpp:479 +#: ../src/ui/dialog/object-properties.cpp:476 msgid "Unhide object" msgstr "Birta hlut" -#: ../src/ui/dialog/objects.cpp:861 +#: ../src/ui/dialog/objects.cpp:882 msgid "Unhide objects" msgstr "Birta hluti" -#: ../src/ui/dialog/objects.cpp:861 +#: ../src/ui/dialog/objects.cpp:882 msgid "Hide objects" msgstr "Fela hluti" -#: ../src/ui/dialog/objects.cpp:881 +#: ../src/ui/dialog/objects.cpp:902 msgid "Lock objects" msgstr "Læsa hlutum" -#: ../src/ui/dialog/objects.cpp:881 +#: ../src/ui/dialog/objects.cpp:902 msgid "Unlock objects" msgstr "Aflæsa hlutum" -#: ../src/ui/dialog/objects.cpp:893 +#: ../src/ui/dialog/objects.cpp:914 msgid "Layer to group" msgstr "Lag sem hóp" -#: ../src/ui/dialog/objects.cpp:893 +#: ../src/ui/dialog/objects.cpp:914 msgid "Group to layer" msgstr "Hóp sem lag" -#: ../src/ui/dialog/objects.cpp:1091 +#: ../src/ui/dialog/objects.cpp:1112 msgid "Moved objects" msgstr "Færðir hlutir" -#: ../src/ui/dialog/objects.cpp:1340 ../src/ui/dialog/tags.cpp:839 -#: ../src/ui/dialog/tags.cpp:846 +#: ../src/ui/dialog/objects.cpp:1361 ../src/ui/dialog/tags.cpp:838 +#: ../src/ui/dialog/tags.cpp:845 msgid "Rename object" msgstr "Endurnefna hlut" -#: ../src/ui/dialog/objects.cpp:1447 +#: ../src/ui/dialog/objects.cpp:1468 msgid "Set object highlight color" msgstr "Setja áherslulit hlutar" -#: ../src/ui/dialog/objects.cpp:1457 +#: ../src/ui/dialog/objects.cpp:1478 msgid "Set object opacity" msgstr "Stilla ógegnsæi hlutar" -#: ../src/ui/dialog/objects.cpp:1486 +#: ../src/ui/dialog/objects.cpp:1507 msgid "Set object blend mode" msgstr "Stilla blöndunarham hlutar" -#: ../src/ui/dialog/objects.cpp:1555 +#: ../src/ui/dialog/objects.cpp:1576 msgid "Set object blur" msgstr "Stilla móðun hlutar" -#: ../src/ui/dialog/objects.cpp:1621 +#: ../src/ui/dialog/objects.cpp:1642 msgctxt "Visibility" msgid "V" msgstr "S" -#: ../src/ui/dialog/objects.cpp:1622 +#: ../src/ui/dialog/objects.cpp:1643 msgctxt "Lock" msgid "L" msgstr "L" -#: ../src/ui/dialog/objects.cpp:1623 +#: ../src/ui/dialog/objects.cpp:1644 msgctxt "Type" msgid "T" msgstr "T" -#: ../src/ui/dialog/objects.cpp:1624 +#: ../src/ui/dialog/objects.cpp:1645 msgctxt "Clip and mask" msgid "CM" msgstr "AH" -#: ../src/ui/dialog/objects.cpp:1625 +#: ../src/ui/dialog/objects.cpp:1646 msgctxt "Highlight" msgid "HL" msgstr "ÁH" -#: ../src/ui/dialog/objects.cpp:1626 +#: ../src/ui/dialog/objects.cpp:1647 msgid "Label" msgstr "Skýring" #. In order to get tooltips on header, we must create our own label. -#: ../src/ui/dialog/objects.cpp:1664 +#: ../src/ui/dialog/objects.cpp:1683 msgid "Toggle visibility of Layer, Group, or Object." msgstr "Víxla sýnileika lags, hóps eða hlutar." -#: ../src/ui/dialog/objects.cpp:1677 +#: ../src/ui/dialog/objects.cpp:1696 msgid "Toggle lock of Layer, Group, or Object." msgstr "Víxla læsingu lags, hóps eða hlutar." -#: ../src/ui/dialog/objects.cpp:1689 +#: ../src/ui/dialog/objects.cpp:1708 msgid "" "Type: Layer, Group, or Object. Clicking on Layer or Group icon, toggles " "between the two types." msgstr "" -#: ../src/ui/dialog/objects.cpp:1708 +#: ../src/ui/dialog/objects.cpp:1727 msgid "Is object clipped and/or masked?" msgstr "Er hluturinn afmarkaður og/eða hulinn?" -#: ../src/ui/dialog/objects.cpp:1719 +#: ../src/ui/dialog/objects.cpp:1738 msgid "" "Highlight color of outline in Node tool. Click to set. If alpha is zero, use " "inherited color." msgstr "" -#: ../src/ui/dialog/objects.cpp:1730 +#: ../src/ui/dialog/objects.cpp:1749 msgid "" "Layer/Group/Object label (inkscape:label). Double-click to set. Default " "value is object 'id'." msgstr "" -#: ../src/ui/dialog/objects.cpp:1818 +#: ../src/ui/dialog/objects.cpp:1857 msgid "Add layer..." msgstr "Bæta við lagi..." -#: ../src/ui/dialog/objects.cpp:1825 +#: ../src/ui/dialog/objects.cpp:1864 msgid "Remove object" msgstr "Fjarlægja hlut" -#: ../src/ui/dialog/objects.cpp:1833 +#: ../src/ui/dialog/objects.cpp:1872 msgid "Move To Bottom" msgstr "Færa neðst" -#: ../src/ui/dialog/objects.cpp:1857 +#: ../src/ui/dialog/objects.cpp:1896 msgid "Move To Top" msgstr "Færa efst" -#: ../src/ui/dialog/objects.cpp:1865 +#: ../src/ui/dialog/objects.cpp:1904 msgid "Collapse All" msgstr "Fella allt saman" -#: ../src/ui/dialog/objects.cpp:1879 +#: ../src/ui/dialog/objects.cpp:1918 msgid "Rename" msgstr "Endurnefna" -#: ../src/ui/dialog/objects.cpp:1885 +#: ../src/ui/dialog/objects.cpp:1924 msgid "Solo" msgstr "Sóló" -#: ../src/ui/dialog/objects.cpp:1886 +#: ../src/ui/dialog/objects.cpp:1925 msgid "Show All" msgstr "Birta allt" -#: ../src/ui/dialog/objects.cpp:1887 +#: ../src/ui/dialog/objects.cpp:1926 msgid "Hide All" msgstr "Fela allt" -#: ../src/ui/dialog/objects.cpp:1891 +#: ../src/ui/dialog/objects.cpp:1930 msgid "Lock Others" msgstr "Læsa öðru" -#: ../src/ui/dialog/objects.cpp:1892 +#: ../src/ui/dialog/objects.cpp:1931 msgid "Lock All" msgstr "Læsa öllu" #. LockAndHide -#: ../src/ui/dialog/objects.cpp:1893 ../src/verbs.cpp:3063 +#: ../src/ui/dialog/objects.cpp:1932 ../src/verbs.cpp:3193 msgid "Unlock All" msgstr "Aflæsa öllu" -#: ../src/ui/dialog/objects.cpp:1897 +#: ../src/ui/dialog/objects.cpp:1936 msgid "Up" msgstr "Upp" -#: ../src/ui/dialog/objects.cpp:1898 +#: ../src/ui/dialog/objects.cpp:1937 msgid "Down" msgstr "Niður" -#: ../src/ui/dialog/objects.cpp:1907 +#: ../src/ui/dialog/objects.cpp:1946 msgid "Set Clip" msgstr "Setja afmörkun" #. will never be implemented #. _watching.push_back( &_addPopupItem( targetDesktop, SP_VERB_OBJECT_SET_INVERSE_CLIPPATH, 0, "Set Inverse Clip", (int)BUTTON_SETINVCLIP ) ); -#: ../src/ui/dialog/objects.cpp:1913 +#: ../src/ui/dialog/objects.cpp:1952 msgid "Unset Clip" msgstr "Aftengja afmörkun" -#. Set mask -#: ../src/ui/dialog/objects.cpp:1917 ../src/ui/interface.cpp:1714 -msgid "Set Mask" -msgstr "Setja hulu" - -#: ../src/ui/dialog/objects.cpp:1918 +#: ../src/ui/dialog/objects.cpp:1957 msgid "Unset Mask" msgstr "Aftengja hulu" -#: ../src/ui/dialog/objects.cpp:1940 +#: ../src/ui/dialog/objects.cpp:1979 msgid "Select Highlight Color" msgstr "Veldu áherslulit" @@ -20966,96 +21663,101 @@ msgstr "" msgid "Search" msgstr "Leita" -#: ../src/ui/dialog/ocaldialogs.cpp:1090 -msgid "Close" -msgstr "Loka" - -#: ../src/ui/dialog/pixelartdialog.cpp:184 +#: ../src/ui/dialog/pixelartdialog.cpp:183 msgid "_Curves (multiplier):" msgstr "Svei_glínur (margfaldari):" -#: ../src/ui/dialog/pixelartdialog.cpp:187 +#: ../src/ui/dialog/pixelartdialog.cpp:186 msgid "Favors connections that are part of a long curve" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:198 +#: ../src/ui/dialog/pixelartdialog.cpp:197 msgid "_Islands (weight):" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:201 +#: ../src/ui/dialog/pixelartdialog.cpp:200 msgid "Avoid single disconnected pixels" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:203 +#: ../src/ui/dialog/pixelartdialog.cpp:202 msgid "A constant vote value" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:213 +#: ../src/ui/dialog/pixelartdialog.cpp:212 msgid "Sparse pixels (window _radius):" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:222 +#: ../src/ui/dialog/pixelartdialog.cpp:221 msgid "The radius of the window analyzed" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:223 +#: ../src/ui/dialog/pixelartdialog.cpp:222 msgid "Sparse pixels (_multiplier):" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:234 +#: ../src/ui/dialog/pixelartdialog.cpp:233 msgid "Favors connections that are part of foreground color" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:240 +#: ../src/ui/dialog/pixelartdialog.cpp:239 msgid "The heuristic computed vote will be multiplied by this value" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:253 +#: ../src/ui/dialog/pixelartdialog.cpp:252 msgid "Heuristics" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:260 +#: ../src/ui/dialog/pixelartdialog.cpp:259 msgid "_Voronoi diagram" msgstr "_Voronoi skýringamynd" -#: ../src/ui/dialog/pixelartdialog.cpp:261 +#: ../src/ui/dialog/pixelartdialog.cpp:260 msgid "Output composed of straight lines" msgstr "Útkoma samsett úr beinum línum" -#: ../src/ui/dialog/pixelartdialog.cpp:267 +#: ../src/ui/dialog/pixelartdialog.cpp:266 msgid "Convert to _B-spline curves" msgstr "Umbreyta í _B-splínu sveiglínur" -#: ../src/ui/dialog/pixelartdialog.cpp:268 +#: ../src/ui/dialog/pixelartdialog.cpp:267 msgid "Preserve staircasing artifacts" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:275 +#: ../src/ui/dialog/pixelartdialog.cpp:274 msgid "_Smooth curves" msgstr "Mýktar _sveiglínur" -#: ../src/ui/dialog/pixelartdialog.cpp:276 +#: ../src/ui/dialog/pixelartdialog.cpp:275 msgid "The Kopf-Lischinski algorithm" msgstr "Kopf-Lischinski reikniritið" -#: ../src/ui/dialog/pixelartdialog.cpp:283 +#: ../src/ui/dialog/pixelartdialog.cpp:282 msgid "Output" msgstr "Frálag" -#: ../src/ui/dialog/pixelartdialog.cpp:291 ../src/ui/dialog/tracedialog.cpp:813 +#: ../src/ui/dialog/pixelartdialog.cpp:290 +#: ../src/ui/dialog/tracedialog.cpp:812 msgid "Reset all settings to defaults" msgstr "Endurstilla allt á upphaflegar sjálfgefnar stillingar" -#: ../src/ui/dialog/pixelartdialog.cpp:296 ../src/ui/dialog/tracedialog.cpp:818 +#. ## The OK button +#: ../src/ui/dialog/pixelartdialog.cpp:293 ../src/ui/dialog/spellcheck.cpp:70 +#: ../src/ui/dialog/tracedialog.cpp:815 +msgid "_Stop" +msgstr "_Stöðva" + +#: ../src/ui/dialog/pixelartdialog.cpp:295 +#: ../src/ui/dialog/tracedialog.cpp:817 msgid "Abort a trace in progress" msgstr "Hætta við línuteikningu í vinnslu" -#: ../src/ui/dialog/pixelartdialog.cpp:300 ../src/ui/dialog/tracedialog.cpp:822 +#: ../src/ui/dialog/pixelartdialog.cpp:299 +#: ../src/ui/dialog/tracedialog.cpp:821 msgid "Execute the trace" msgstr "Framkvæma línuteiknun" -#: ../src/ui/dialog/pixelartdialog.cpp:382 -#: ../src/ui/dialog/pixelartdialog.cpp:416 +#: ../src/ui/dialog/pixelartdialog.cpp:381 +#: ../src/ui/dialog/pixelartdialog.cpp:415 msgid "" "Image looks too big. Process may take a while and it is wise to save your " "document before continuing.\n" @@ -21063,570 +21765,597 @@ msgid "" "Continue the procedure (without saving)?" msgstr "" -#: ../src/ui/dialog/pixelartdialog.cpp:493 +#: ../src/ui/dialog/pixelartdialog.cpp:492 msgid "Trace pixel art" msgstr "Línuteikna Pixel Art" -#: ../src/ui/dialog/polar-arrange-tab.cpp:35 +#: ../src/ui/dialog/polar-arrange-tab.cpp:34 msgctxt "Polar arrange tab" msgid "Y coordinate of the center" msgstr "Y hnit miðju" -#: ../src/ui/dialog/polar-arrange-tab.cpp:36 +#: ../src/ui/dialog/polar-arrange-tab.cpp:35 msgctxt "Polar arrange tab" msgid "X coordinate of the center" msgstr "X hnit miðju" -#: ../src/ui/dialog/polar-arrange-tab.cpp:37 +#: ../src/ui/dialog/polar-arrange-tab.cpp:36 msgctxt "Polar arrange tab" msgid "Y coordinate of the radius" msgstr "Y hnit radíus" -#: ../src/ui/dialog/polar-arrange-tab.cpp:38 +#: ../src/ui/dialog/polar-arrange-tab.cpp:37 msgctxt "Polar arrange tab" msgid "X coordinate of the radius" msgstr "X hnit radíus" -#: ../src/ui/dialog/polar-arrange-tab.cpp:39 +#: ../src/ui/dialog/polar-arrange-tab.cpp:38 msgctxt "Polar arrange tab" msgid "Starting angle" msgstr "Upphafshorn" -#: ../src/ui/dialog/polar-arrange-tab.cpp:40 +#: ../src/ui/dialog/polar-arrange-tab.cpp:39 msgctxt "Polar arrange tab" msgid "End angle" msgstr "Lokahorn" -#: ../src/ui/dialog/polar-arrange-tab.cpp:42 +#: ../src/ui/dialog/polar-arrange-tab.cpp:41 msgctxt "Polar arrange tab" msgid "Anchor point:" msgstr "Festipunktur:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:46 +#: ../src/ui/dialog/polar-arrange-tab.cpp:45 msgctxt "Polar arrange tab" -msgid "Object's bounding box:" -msgstr "Umgjörð hlutar:" +msgid "Objects' bounding boxes:" +msgstr "Umgjarðir hlutar:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:53 +#: ../src/ui/dialog/polar-arrange-tab.cpp:52 msgctxt "Polar arrange tab" -msgid "Object's rotational center" -msgstr "Snúningsmiðja hlutar" +msgid "Objects' rotational centers" +msgstr "Snúningsmiðjur hlutar" -#: ../src/ui/dialog/polar-arrange-tab.cpp:58 +#: ../src/ui/dialog/polar-arrange-tab.cpp:57 msgctxt "Polar arrange tab" msgid "Arrange on:" msgstr "Raða upp á:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:62 +#: ../src/ui/dialog/polar-arrange-tab.cpp:61 msgctxt "Polar arrange tab" msgid "First selected circle/ellipse/arc" msgstr "Fyrst valinn hringur/sporbaugur/bogi" -#: ../src/ui/dialog/polar-arrange-tab.cpp:67 +#: ../src/ui/dialog/polar-arrange-tab.cpp:66 msgctxt "Polar arrange tab" msgid "Last selected circle/ellipse/arc" msgstr "Síðast valinn hringur/sporbaugur/bogi" -#: ../src/ui/dialog/polar-arrange-tab.cpp:72 +#: ../src/ui/dialog/polar-arrange-tab.cpp:71 msgctxt "Polar arrange tab" msgid "Parameterized:" msgstr "Parametrískt:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:77 +#: ../src/ui/dialog/polar-arrange-tab.cpp:76 msgctxt "Polar arrange tab" msgid "Center X/Y:" msgstr "Miðja X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:90 +#: ../src/ui/dialog/polar-arrange-tab.cpp:89 msgctxt "Polar arrange tab" msgid "Radius X/Y:" msgstr "Radíus X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:103 +#: ../src/ui/dialog/polar-arrange-tab.cpp:102 msgid "Angle X/Y:" msgstr "Horn X/Y:" -#: ../src/ui/dialog/polar-arrange-tab.cpp:117 +#: ../src/ui/dialog/polar-arrange-tab.cpp:116 msgid "Rotate objects" msgstr "Snúa hlutum" -#: ../src/ui/dialog/polar-arrange-tab.cpp:303 +#: ../src/ui/dialog/polar-arrange-tab.cpp:302 msgid "Couldn't find an ellipse in selection" msgstr "Fann ekki sporbaug í myndvali" -#: ../src/ui/dialog/polar-arrange-tab.cpp:366 +#: ../src/ui/dialog/polar-arrange-tab.cpp:365 msgid "Arrange on ellipse" msgstr "Raða upp á sporbaug" -#: ../src/ui/dialog/print.cpp:110 +#: ../src/ui/dialog/print.cpp:100 msgid "Could not open temporary PNG for bitmap printing" msgstr "Gat ekki opnað PNG-bráðabirgðaskrá til að prenta bitamynd" -#: ../src/ui/dialog/print.cpp:137 +#: ../src/ui/dialog/print.cpp:127 msgid "Could not set up Document" msgstr "Gat ekki sett upp skjal" -#: ../src/ui/dialog/print.cpp:141 +#: ../src/ui/dialog/print.cpp:131 msgid "Failed to set CairoRenderContext" msgstr "Gat ekki sett CairoRenderContext" #. set up dialog title, based on document name -#: ../src/ui/dialog/print.cpp:179 +#: ../src/ui/dialog/print.cpp:169 msgid "SVG Document" msgstr "SVG skjal" -#: ../src/ui/dialog/print.cpp:180 +#: ../src/ui/dialog/print.cpp:170 msgid "Print" msgstr "Prenta" -#: ../src/ui/dialog/spellcheck.cpp:66 +#: ../src/ui/dialog/save-template-dialog.cpp:17 +msgid "Save Document as Template" +msgstr "Vista skjal sem sniðmát" + +#: ../src/ui/dialog/save-template-dialog.cpp:18 +msgid "Name: " +msgstr "Heiti: " + +#: ../src/ui/dialog/save-template-dialog.cpp:19 +msgid "Author: " +msgstr "Höfundur: " + +#: ../src/ui/dialog/save-template-dialog.cpp:20 +#: ../src/ui/dialog/template-widget.cpp:127 +msgid "Description: " +msgstr "Lýsing: " + +#: ../src/ui/dialog/save-template-dialog.cpp:21 +#: ../src/ui/dialog/template-widget.cpp:129 +msgid "Keywords: " +msgstr "Stikkorð: " + +#: ../src/ui/dialog/spellcheck.cpp:65 msgid "_Accept" msgstr "S_amþykkja" -#: ../src/ui/dialog/spellcheck.cpp:67 +#: ../src/ui/dialog/spellcheck.cpp:66 msgid "_Ignore once" msgstr "Hunsa einu s_inni" -#: ../src/ui/dialog/spellcheck.cpp:68 +#: ../src/ui/dialog/spellcheck.cpp:67 msgid "_Ignore" msgstr "_Hunsa" -#: ../src/ui/dialog/spellcheck.cpp:69 +#: ../src/ui/dialog/spellcheck.cpp:68 msgid "A_dd" msgstr "Bæt_a við" #: ../src/ui/dialog/spellcheck.cpp:71 -msgid "_Stop" -msgstr "_Stöðva" - -#: ../src/ui/dialog/spellcheck.cpp:72 msgid "_Start" msgstr "_Ræsa" -#: ../src/ui/dialog/spellcheck.cpp:102 +#: ../src/ui/dialog/spellcheck.cpp:101 msgid "Suggestions:" msgstr "Tillögur:" -#: ../src/ui/dialog/spellcheck.cpp:117 +#: ../src/ui/dialog/spellcheck.cpp:116 msgid "Accept the chosen suggestion" msgstr "Samþykkja valda tillögu" -#: ../src/ui/dialog/spellcheck.cpp:118 +#: ../src/ui/dialog/spellcheck.cpp:117 msgid "Ignore this word only once" msgstr "Hunsa þetta orð aðeins einu sinni" -#: ../src/ui/dialog/spellcheck.cpp:119 +#: ../src/ui/dialog/spellcheck.cpp:118 msgid "Ignore this word in this session" msgstr "Hunsa þetta orð í þessari setu" -#: ../src/ui/dialog/spellcheck.cpp:120 +#: ../src/ui/dialog/spellcheck.cpp:119 msgid "Add this word to the chosen dictionary" msgstr "Bæta orði við valið orðasafn" -#: ../src/ui/dialog/spellcheck.cpp:134 +#: ../src/ui/dialog/spellcheck.cpp:133 msgid "Stop the check" msgstr "Stöðva yfirferð" -#: ../src/ui/dialog/spellcheck.cpp:135 +#: ../src/ui/dialog/spellcheck.cpp:134 msgid "Start the check" msgstr "Hefja yfirferð" -#: ../src/ui/dialog/spellcheck.cpp:453 +#: ../src/ui/dialog/spellcheck.cpp:452 #, c-format msgid "Finished, %d words added to dictionary" msgstr "Lokið, %d orðum bætt við orðasafn" -#: ../src/ui/dialog/spellcheck.cpp:455 +#: ../src/ui/dialog/spellcheck.cpp:454 msgid "Finished, nothing suspicious found" msgstr "Lokið, ekkert aðfinnsluvert fannst" -#: ../src/ui/dialog/spellcheck.cpp:571 +#: ../src/ui/dialog/spellcheck.cpp:570 #, c-format msgid "Not in dictionary (%s): %s" msgstr "Ekki í orðasafninu (%s): %s" -#: ../src/ui/dialog/spellcheck.cpp:720 +#: ../src/ui/dialog/spellcheck.cpp:719 msgid "Checking..." msgstr "Skoða..." -#: ../src/ui/dialog/spellcheck.cpp:789 +#: ../src/ui/dialog/spellcheck.cpp:788 msgid "Fix spelling" msgstr "Laga stafsetningu" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:148 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:216 +#: ../src/ui/dialog/styledialog.cpp:533 +msgid "Edited style element." +msgstr "Breytt stíleinindi." + +#: ../src/ui/dialog/styledialog.cpp:881 ../src/ui/dialog/xml-tree.cpp:905 +msgid "Cancel" +msgstr "Hætta við" + +#: ../src/ui/dialog/styledialog.cpp:882 +msgid "Add" +msgstr "Bæta við" + +#: ../src/ui/dialog/styledialog.cpp:888 +msgid "Invalid entry: Not an id (#), class (.), or element CSS selector." +msgstr "" + +#: ../src/ui/dialog/styledialog.cpp:1496 +msgid "Deleted property from style attribute." +msgstr "Eytt eigindi ur stíleinindi." + +#: ../src/ui/dialog/svg-fonts-dialog.cpp:145 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:213 msgid "Set SVG Font attribute" msgstr "Setja eigindi SVG leturs" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:272 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:269 msgid "Adjust kerning value" msgstr "Breyta hnikunargildi" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:455 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:452 msgid "Font Attributes" msgstr "Eigindi leturs" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:456 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:453 msgid "Horiz. Advance X" -msgstr "" +msgstr "Lárétt X-framskrið" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:457 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:454 msgid "Horiz. Origin X " msgstr "Lár. upphaf X " -#: ../src/ui/dialog/svg-fonts-dialog.cpp:458 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:455 msgid "Horiz. Origin Y " msgstr "Lóðr. upphaf Y " -#: ../src/ui/dialog/svg-fonts-dialog.cpp:459 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:456 msgid "Font Face Attributes" msgstr "Eigindi leturgerðar" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:460 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:457 msgid "Family Name:" msgstr "Heiti leturgerðar:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:461 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:458 msgid "Units per em" msgstr "Einingar á em" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:462 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:459 msgid "Ascent:" msgstr "Hálína:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:463 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:460 msgid "Descent:" msgstr "Láglína:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:464 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:461 msgid "Cap Height:" msgstr "Hástafalína:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:465 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:462 msgid "x Height:" msgstr "Hæð x:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:538 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:535 msgid "glyph" msgstr "staftákn" #. SPGlyph* glyph = -#: ../src/ui/dialog/svg-fonts-dialog.cpp:570 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:567 msgid "Add glyph" msgstr "Bæta við staftákni" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:601 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:643 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:598 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:640 msgid "Select a path to define the curves of a glyph" msgstr "" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:609 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:651 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:606 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:648 msgid "The selected object does not have a path description." msgstr "" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:616 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:613 msgid "No glyph selected in the SVGFonts dialog." msgstr "" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:627 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:665 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:624 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:662 msgid "Set glyph curves" msgstr "" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:684 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:681 msgid "Reset missing-glyph" msgstr "Endurstilla staftákn sem vantar" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:700 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:697 msgid "Edit glyph name" msgstr "Breyta heiti staftákns" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:714 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:711 msgid "Set glyph unicode" msgstr "Setja Unicode-staftákn" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:731 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:728 msgid "Set glyph advance" msgstr "Setja framskrið staftákns" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:746 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:743 msgid "Remove font" msgstr "Fjarlægja letur" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:763 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:760 msgid "Remove glyph" msgstr "Fjarlægja staftákn" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:780 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:777 msgid "Remove kerning pair" msgstr "Fjarlægja stafþjöppunarpar" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:790 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:787 msgid "Missing Glyph:" msgstr "Vantar staftákn:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:794 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:791 msgid "From selection..." msgstr "Frá vali..." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:807 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:804 msgid "Glyph name" msgstr "Heiti staftákns" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:808 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:805 msgid "Matching string" msgstr "Samsvarandi strengur" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:809 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:806 msgid "Advance" msgstr "Framskrið" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:811 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:808 msgid "Add Glyph" msgstr "Bæta við staftákni" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:818 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:815 msgid "Get curves from selection..." msgstr "Fá sveiglínur úr vali..." -#: ../src/ui/dialog/svg-fonts-dialog.cpp:870 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:867 msgid "Add kerning pair" msgstr "Bæta við stafþjöppunarpari" #. Kerning Setup: -#: ../src/ui/dialog/svg-fonts-dialog.cpp:878 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:875 msgid "Kerning Setup" msgstr "Uppsetning stafþjöppunar" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:880 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:877 msgid "1st Glyph:" msgstr "1. staftákn" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:882 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:879 msgid "2nd Glyph:" msgstr "2. staftákn" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:885 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:882 msgid "Add pair" msgstr "Bæta við pari" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:897 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:894 msgid "First Unicode range" msgstr "Fyrsta Unicode-svið" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:898 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:895 msgid "Second Unicode range" msgstr "Annað Unicode-svið" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:905 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:902 msgid "Kerning value:" msgstr "Hnikunargildi:" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:962 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:959 msgid "Set font family" msgstr "Stilla leturgerð" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:971 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:968 msgid "font" msgstr "letur" #. select_font(font); -#: ../src/ui/dialog/svg-fonts-dialog.cpp:985 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:982 msgid "Add font" msgstr "Bæta við letri" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1006 ../src/ui/dialog/text-edit.cpp:62 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1004 +#: ../src/ui/dialog/text-edit.cpp:60 msgid "_Font" msgstr "_Letur" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1014 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1012 msgid "_Global Settings" msgstr "_Víðværar stillingar" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1015 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1013 msgid "_Glyphs" msgstr "Sta_ftákn" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1016 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1014 msgid "_Kerning" msgstr "Stafþjö_ppun" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1023 -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1024 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1021 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1022 msgid "Sample Text" msgstr "Textadæmi" -#: ../src/ui/dialog/svg-fonts-dialog.cpp:1028 +#: ../src/ui/dialog/svg-fonts-dialog.cpp:1026 msgid "Preview Text:" msgstr "Forskoða texta:" -#: ../src/ui/dialog/swatches.cpp:193 ../src/ui/tools/gradient-tool.cpp:359 -#: ../src/ui/tools/gradient-tool.cpp:457 ../src/widgets/gradient-vector.cpp:765 +#: ../src/ui/dialog/swatches.cpp:195 ../src/ui/tools/gradient-tool.cpp:359 +#: ../src/ui/tools/gradient-tool.cpp:457 +#: ../src/widgets/gradient-vector.cpp:765 msgid "Add gradient stop" msgstr "Bæta við stoppmerki í litstigul" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:248 +#: ../src/ui/dialog/swatches.cpp:250 msgid "Set fill" msgstr "Setja fyllingu" #. TRANSLATORS: An item in context menu on a colour in the swatches -#: ../src/ui/dialog/swatches.cpp:256 +#: ../src/ui/dialog/swatches.cpp:258 msgid "Set stroke" msgstr "Setja útlínu" -#: ../src/ui/dialog/swatches.cpp:277 +#: ../src/ui/dialog/swatches.cpp:279 msgid "Edit..." msgstr "Breyta..." -#: ../src/ui/dialog/swatches.cpp:289 +#: ../src/ui/dialog/swatches.cpp:291 msgid "Convert" msgstr "Umbreyta" -#: ../src/ui/dialog/swatches.cpp:534 -#, c-format -msgid "Palettes directory (%s) is unavailable." -msgstr "Mappa fyrir litaspjöld (%s) er ekki tiltæk." - #. ******************* Symbol Sets ************************ -#: ../src/ui/dialog/symbols.cpp:120 +#: ../src/ui/dialog/symbols.cpp:124 msgid "Symbol set: " msgstr "Táknasett: " #. Fill in later -#: ../src/ui/dialog/symbols.cpp:123 ../src/ui/dialog/symbols.cpp:124 +#: ../src/ui/dialog/symbols.cpp:127 ../src/ui/dialog/symbols.cpp:128 msgid "Current Document" msgstr "Núverandi skjal" -#: ../src/ui/dialog/symbols.cpp:176 +#: ../src/ui/dialog/symbols.cpp:182 msgid "Add Symbol from the current document." msgstr "Bæta við tákni úr núverandi skjali." -#: ../src/ui/dialog/symbols.cpp:185 +#: ../src/ui/dialog/symbols.cpp:193 msgid "Remove Symbol from the current document." msgstr "Fjarlægja tákn úr núverandi skjali." -#: ../src/ui/dialog/symbols.cpp:199 +#: ../src/ui/dialog/symbols.cpp:210 msgid "Display more icons in row." msgstr "Birta fleiri táknmyndir í röð." -#: ../src/ui/dialog/symbols.cpp:208 +#: ../src/ui/dialog/symbols.cpp:221 msgid "Display fewer icons in row." msgstr "Birta færri táknmyndir í röð." -#: ../src/ui/dialog/symbols.cpp:218 +#: ../src/ui/dialog/symbols.cpp:233 msgid "Toggle 'fit' symbols in icon space." msgstr "Víxla af/á að tákn passi í táknmyndareitinn." -#: ../src/ui/dialog/symbols.cpp:230 +#: ../src/ui/dialog/symbols.cpp:247 msgid "Make symbols smaller by zooming out." msgstr "Minnka tákn með því að renna frá." -#: ../src/ui/dialog/symbols.cpp:240 +#: ../src/ui/dialog/symbols.cpp:259 msgid "Make symbols bigger by zooming in." msgstr "Stækka tákn með því að renna að." -#: ../src/ui/dialog/symbols.cpp:588 +#: ../src/ui/dialog/symbols.cpp:602 msgid "Unnamed Symbols" msgstr "Ónefnd tákn" -#: ../src/ui/dialog/tags.cpp:257 ../src/ui/dialog/tags.cpp:555 -#: ../src/ui/dialog/tags.cpp:669 ../src/ui/dialog/tags.cpp:932 +#: ../src/ui/dialog/tags.cpp:256 ../src/ui/dialog/tags.cpp:554 +#: ../src/ui/dialog/tags.cpp:668 ../src/ui/dialog/tags.cpp:931 msgid "Remove from selection set" msgstr "Fjarlægja úr vali" -#: ../src/ui/dialog/tags.cpp:414 +#: ../src/ui/dialog/tags.cpp:413 msgid "Items" msgstr "Atriði" -#: ../src/ui/dialog/tags.cpp:652 ../src/ui/dialog/tags.cpp:930 +#: ../src/ui/dialog/tags.cpp:651 ../src/ui/dialog/tags.cpp:929 msgid "Add selection to set" msgstr "Bæta völdu í sett" -#: ../src/ui/dialog/tags.cpp:810 +#: ../src/ui/dialog/tags.cpp:809 msgid "Moved sets" msgstr "Færð sett" -#: ../src/ui/dialog/tags.cpp:986 +#: ../src/ui/dialog/tags.cpp:985 msgid "Add a new selection set" msgstr "Bæta við nýju vali" -#: ../src/ui/dialog/tags.cpp:995 +#: ../src/ui/dialog/tags.cpp:994 msgid "Remove Item/Set" msgstr "Fjarlægja atriði/sett" -#: ../src/ui/dialog/template-widget.cpp:32 +#: ../src/ui/dialog/template-widget.cpp:31 msgid "More info" msgstr "Nánari upplýsingar" -#: ../src/ui/dialog/template-widget.cpp:34 +#: ../src/ui/dialog/template-widget.cpp:33 msgid "no template selected" msgstr "Ekkert sniðmát valið" -#: ../src/ui/dialog/template-widget.cpp:126 +#: ../src/ui/dialog/template-widget.cpp:124 msgid "Path: " msgstr "Ferill: " -#: ../src/ui/dialog/template-widget.cpp:129 -msgid "Description: " -msgstr "Lýsing: " - -#: ../src/ui/dialog/template-widget.cpp:131 -msgid "Keywords: " -msgstr "Stikkorð: " - -#: ../src/ui/dialog/template-widget.cpp:138 +#: ../src/ui/dialog/template-widget.cpp:136 msgid "By: " msgstr "Eftir: " -#: ../src/ui/dialog/text-edit.cpp:65 +#: ../src/ui/dialog/text-edit.cpp:62 msgid "_Variants" msgstr "Til_brigði" -#: ../src/ui/dialog/text-edit.cpp:66 +#: ../src/ui/dialog/text-edit.cpp:63 msgid "Set as _default" msgstr "Setja sem sjálf_gefið" -#: ../src/ui/dialog/text-edit.cpp:80 +#: ../src/ui/dialog/text-edit.cpp:77 msgid "AaBbCcIiPpQq12369$€¢?.;/()" msgstr "AaBbÞþÆæÐðÁáÝýÉé@12369$€¢?.;/()" #. Align buttons -#: ../src/ui/dialog/text-edit.cpp:90 ../src/widgets/text-toolbar.cpp:1776 -#: ../src/widgets/text-toolbar.cpp:1777 +#: ../src/ui/dialog/text-edit.cpp:87 ../src/widgets/text-toolbar.cpp:1813 +#: ../src/widgets/text-toolbar.cpp:1814 msgid "Align left" msgstr "Jafna til vinstri" -#: ../src/ui/dialog/text-edit.cpp:91 ../src/widgets/text-toolbar.cpp:1784 -#: ../src/widgets/text-toolbar.cpp:1785 +#: ../src/ui/dialog/text-edit.cpp:88 ../src/widgets/text-toolbar.cpp:1819 +#: ../src/widgets/text-toolbar.cpp:1820 msgid "Align center" msgstr "Miðjujafna" -#: ../src/ui/dialog/text-edit.cpp:92 ../src/widgets/text-toolbar.cpp:1792 -#: ../src/widgets/text-toolbar.cpp:1793 +#: ../src/ui/dialog/text-edit.cpp:89 ../src/widgets/text-toolbar.cpp:1825 +#: ../src/widgets/text-toolbar.cpp:1826 msgid "Align right" msgstr "Jafna til hægri" -#: ../src/ui/dialog/text-edit.cpp:93 ../src/widgets/text-toolbar.cpp:1801 +#: ../src/ui/dialog/text-edit.cpp:90 ../src/widgets/text-toolbar.cpp:1832 msgid "Justify (only flowed text)" msgstr "Hliðjafna (aðeins flæðitexti)" #. Direction buttons -#: ../src/ui/dialog/text-edit.cpp:100 ../src/widgets/text-toolbar.cpp:1836 +#: ../src/ui/dialog/text-edit.cpp:97 ../src/widgets/text-toolbar.cpp:1863 msgid "Horizontal text" msgstr "Láréttur texti" -#: ../src/ui/dialog/text-edit.cpp:101 +#: ../src/ui/dialog/text-edit.cpp:98 msgid "Vertical text" msgstr "Lóðréttur texti" -#: ../src/ui/dialog/text-edit.cpp:138 +#: ../src/ui/dialog/text-edit.cpp:115 msgid "Text path offset" msgstr "Hliðrun textaferils" -#: ../src/ui/dialog/text-edit.cpp:577 ../src/ui/dialog/text-edit.cpp:664 -#: ../src/ui/tools/text-tool.cpp:1442 +#: ../src/ui/dialog/text-edit.cpp:550 ../src/ui/dialog/text-edit.cpp:637 +#: ../src/ui/tools/text-tool.cpp:1493 msgid "Set text style" msgstr "Setja textastíl" @@ -21654,37 +22383,37 @@ msgstr "Raða völdum hlutum" #. ## begin mode page #. # begin single scan #. brightness -#: ../src/ui/dialog/tracedialog.cpp:507 +#: ../src/ui/dialog/tracedialog.cpp:506 msgid "_Brightness cutoff" msgstr "_Birtustigsfall" -#: ../src/ui/dialog/tracedialog.cpp:511 +#: ../src/ui/dialog/tracedialog.cpp:510 msgid "Trace by a given brightness level" msgstr "Linuteikna eftir tilteknu birtustigi" -#: ../src/ui/dialog/tracedialog.cpp:518 +#: ../src/ui/dialog/tracedialog.cpp:517 msgid "Brightness cutoff for black/white" msgstr "Birtustigsfall fyrir svart/hvítt" -#: ../src/ui/dialog/tracedialog.cpp:528 +#: ../src/ui/dialog/tracedialog.cpp:527 msgid "Single scan: creates a path" msgstr "Einföld umferð: útbýr feril" #. canny edge detection #. TRANSLATORS: "Canny" is the name of the inventor of this edge detection method -#: ../src/ui/dialog/tracedialog.cpp:533 +#: ../src/ui/dialog/tracedialog.cpp:532 msgid "_Edge detection" msgstr "Gr_eining brúna" -#: ../src/ui/dialog/tracedialog.cpp:537 +#: ../src/ui/dialog/tracedialog.cpp:536 msgid "Trace with optimal edge detection by J. Canny's algorithm" msgstr "Línuteiknun með bestaðri greiningu brúna eftir reikniriti J. Canny" -#: ../src/ui/dialog/tracedialog.cpp:555 +#: ../src/ui/dialog/tracedialog.cpp:554 msgid "Brightness cutoff for adjacent pixels (determines edge thickness)" msgstr "Birtustigsfall milli samliggjandi mynddíla (ákvarðar þykkt jaðars)" -#: ../src/ui/dialog/tracedialog.cpp:558 +#: ../src/ui/dialog/tracedialog.cpp:557 msgid "T_hreshold:" msgstr "Litmör_k:" @@ -21692,80 +22421,80 @@ msgstr "Litmör_k:" #. TRANSLATORS: Color Quantization: the process of reducing the number #. of colors in an image by selecting an optimized set of representative #. colors and then re-applying this reduced set to the original image. -#: ../src/ui/dialog/tracedialog.cpp:570 +#: ../src/ui/dialog/tracedialog.cpp:569 msgid "Color _quantization" msgstr "_Fjöldi lita" -#: ../src/ui/dialog/tracedialog.cpp:574 +#: ../src/ui/dialog/tracedialog.cpp:573 msgid "Trace along the boundaries of reduced colors" msgstr "Línuteiknun meðfram mörkum fækkaðra lita" -#: ../src/ui/dialog/tracedialog.cpp:582 +#: ../src/ui/dialog/tracedialog.cpp:581 msgid "The number of reduced colors" msgstr "Fjöldi fækkaðra lita" -#: ../src/ui/dialog/tracedialog.cpp:585 +#: ../src/ui/dialog/tracedialog.cpp:584 msgid "_Colors:" msgstr "_Litir:" #. swap black and white -#: ../src/ui/dialog/tracedialog.cpp:593 +#: ../src/ui/dialog/tracedialog.cpp:592 msgid "_Invert image" msgstr "Snúa við l_itum myndar" -#: ../src/ui/dialog/tracedialog.cpp:598 +#: ../src/ui/dialog/tracedialog.cpp:597 msgid "Invert black and white regions" msgstr "Víxla svörtum og hvítum svæðum" #. # end single scan #. # begin multiple scan -#: ../src/ui/dialog/tracedialog.cpp:608 +#: ../src/ui/dialog/tracedialog.cpp:607 msgid "B_rightness steps" msgstr "Bi_rtustigsþrep" -#: ../src/ui/dialog/tracedialog.cpp:612 +#: ../src/ui/dialog/tracedialog.cpp:611 msgid "Trace the given number of brightness levels" msgstr "Linuteikna eftir tilteknum fjölda birtustiga" -#: ../src/ui/dialog/tracedialog.cpp:620 +#: ../src/ui/dialog/tracedialog.cpp:619 msgid "Sc_ans:" msgstr "_Umferðir:" -#: ../src/ui/dialog/tracedialog.cpp:624 +#: ../src/ui/dialog/tracedialog.cpp:623 msgid "The desired number of scans" msgstr "Umbeðinn fjöldi umferða" -#: ../src/ui/dialog/tracedialog.cpp:629 +#: ../src/ui/dialog/tracedialog.cpp:628 msgid "Co_lors" msgstr "_Litir" -#: ../src/ui/dialog/tracedialog.cpp:633 +#: ../src/ui/dialog/tracedialog.cpp:632 msgid "Trace the given number of reduced colors" msgstr "Línuteiknun ákveðins fjölda fækkaðra lita" -#: ../src/ui/dialog/tracedialog.cpp:638 +#: ../src/ui/dialog/tracedialog.cpp:637 msgid "_Grays" msgstr "_Grátónar" -#: ../src/ui/dialog/tracedialog.cpp:642 +#: ../src/ui/dialog/tracedialog.cpp:641 msgid "Same as Colors, but the result is converted to grayscale" msgstr "Sama og fyrir liti, en útkomunni er umbreytt í í grátóna" #. TRANSLATORS: "Smooth" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:648 +#: ../src/ui/dialog/tracedialog.cpp:647 msgid "S_mooth" msgstr "_Mýking" -#: ../src/ui/dialog/tracedialog.cpp:652 +#: ../src/ui/dialog/tracedialog.cpp:651 msgid "Apply Gaussian blur to the bitmap before tracing" msgstr "Beita Gaussískri afskerpingu á bitamynd áður en hún er línuteiknuð" #. TRANSLATORS: "Stack" is a verb here -#: ../src/ui/dialog/tracedialog.cpp:656 +#: ../src/ui/dialog/tracedialog.cpp:655 msgid "Stac_k scans" msgstr "Sta_fla umferðum" -#: ../src/ui/dialog/tracedialog.cpp:660 +#: ../src/ui/dialog/tracedialog.cpp:659 msgid "" "Stack scans on top of one another (no gaps) instead of tiling (usually with " "gaps)" @@ -21773,80 +22502,80 @@ msgstr "" "Staflar umferðum hverri ofan á aðra (án bila) í stað þess að flísaleggja " "(venjulega með bilum)" -#: ../src/ui/dialog/tracedialog.cpp:664 +#: ../src/ui/dialog/tracedialog.cpp:663 msgid "Remo_ve background" msgstr "Fjarlægja bakgrunn" #. TRANSLATORS: "Layer" refers to one of the stacked paths in the multiscan -#: ../src/ui/dialog/tracedialog.cpp:669 +#: ../src/ui/dialog/tracedialog.cpp:668 msgid "Remove bottom (background) layer when done" msgstr "Fjarlægja neðsta lagið (bakgrunn) þegar ferli er lokið" -#: ../src/ui/dialog/tracedialog.cpp:674 +#: ../src/ui/dialog/tracedialog.cpp:673 msgid "Multiple scans: creates a group of paths" msgstr "Margþrepa: útbýr hópa af ferlum" #. # end multiple scan #. ## end mode page -#: ../src/ui/dialog/tracedialog.cpp:683 +#: ../src/ui/dialog/tracedialog.cpp:682 msgid "_Mode" msgstr "Ha_mur" #. ## begin option page #. # potrace parameters -#: ../src/ui/dialog/tracedialog.cpp:689 +#: ../src/ui/dialog/tracedialog.cpp:688 msgid "Suppress _speckles" msgstr "Útrýma _freknum" -#: ../src/ui/dialog/tracedialog.cpp:691 +#: ../src/ui/dialog/tracedialog.cpp:690 msgid "Ignore small spots (speckles) in the bitmap" msgstr "Hunsa litla bletti (freknur) í bitamyndinni" -#: ../src/ui/dialog/tracedialog.cpp:699 +#: ../src/ui/dialog/tracedialog.cpp:698 msgid "Speckles of up to this many pixels will be suppressed" msgstr "Freknum upp að þessari stærð (í mynddílum) verður útrýmt" -#: ../src/ui/dialog/tracedialog.cpp:702 +#: ../src/ui/dialog/tracedialog.cpp:701 msgid "S_ize:" msgstr "S_tærð:" -#: ../src/ui/dialog/tracedialog.cpp:707 +#: ../src/ui/dialog/tracedialog.cpp:706 msgid "Smooth _corners" msgstr "Mýkja _horn" -#: ../src/ui/dialog/tracedialog.cpp:709 +#: ../src/ui/dialog/tracedialog.cpp:708 msgid "Smooth out sharp corners of the trace" msgstr "Mýkja skörp horn línuteikningarinnar" -#: ../src/ui/dialog/tracedialog.cpp:718 +#: ../src/ui/dialog/tracedialog.cpp:717 msgid "Increase this to smooth corners more" msgstr "Auka þetta til að mýkja horn meira" -#: ../src/ui/dialog/tracedialog.cpp:725 +#: ../src/ui/dialog/tracedialog.cpp:724 msgid "Optimize p_aths" msgstr "_Besta ferla" -#: ../src/ui/dialog/tracedialog.cpp:728 +#: ../src/ui/dialog/tracedialog.cpp:727 msgid "Try to optimize paths by joining adjacent Bezier curve segments" msgstr "Reyna að besta ferla með því að sameina samliggjandi Bezier-ferilbúta" -#: ../src/ui/dialog/tracedialog.cpp:736 +#: ../src/ui/dialog/tracedialog.cpp:735 msgid "" "Increase this to reduce the number of nodes in the trace by more aggressive " "optimization" msgstr "Auka þetta til að fækka hnútum í línurakningunni með ákveðnari bestun" -#: ../src/ui/dialog/tracedialog.cpp:738 +#: ../src/ui/dialog/tracedialog.cpp:737 msgid "To_lerance:" msgstr "Þo_lmörk:" #. ## end option page -#: ../src/ui/dialog/tracedialog.cpp:752 +#: ../src/ui/dialog/tracedialog.cpp:751 msgid "O_ptions" msgstr "_Valkostir" #. ### credits -#: ../src/ui/dialog/tracedialog.cpp:756 +#: ../src/ui/dialog/tracedialog.cpp:755 msgid "" "Inkscape bitmap tracing\n" "is based on Potrace,\n" @@ -21860,30 +22589,30 @@ msgstr "" "\n" "http://potrace.sourceforge.net" -#: ../src/ui/dialog/tracedialog.cpp:759 +#: ../src/ui/dialog/tracedialog.cpp:758 msgid "Credits" msgstr "Framlög" #. #### begin right panel #. ## SIOX -#: ../src/ui/dialog/tracedialog.cpp:773 +#: ../src/ui/dialog/tracedialog.cpp:772 msgid "SIOX _foreground selection" msgstr "SIOX _forgrunnsval" -#: ../src/ui/dialog/tracedialog.cpp:776 +#: ../src/ui/dialog/tracedialog.cpp:775 msgid "Cover the area you want to select as the foreground" msgstr "Hyldu svæðið sem þú vilt velja sem forgrunn" -#: ../src/ui/dialog/tracedialog.cpp:781 +#: ../src/ui/dialog/tracedialog.cpp:780 msgid "Live Preview" msgstr "Gagnvirk forskoðun" -#: ../src/ui/dialog/tracedialog.cpp:787 +#: ../src/ui/dialog/tracedialog.cpp:786 msgid "_Update" msgstr "_Uppfæra" #. I guess it's correct to call the "intermediate bitmap" a preview of the trace -#: ../src/ui/dialog/tracedialog.cpp:795 +#: ../src/ui/dialog/tracedialog.cpp:794 msgid "" "Preview the intermediate bitmap with the current settings, without actual " "tracing" @@ -21891,46 +22620,46 @@ msgstr "" "Forskoða útkomu bitamyndarinnar með núverandi stillingum, án þess þó að " "framkvæma línurakninguna" -#: ../src/ui/dialog/tracedialog.cpp:799 +#: ../src/ui/dialog/tracedialog.cpp:798 msgid "Preview" msgstr "Forskoðun" -#: ../src/ui/dialog/transformation.cpp:65 -#: ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/dialog/transformation.cpp:63 +#: ../src/ui/dialog/transformation.cpp:73 msgid "_Horizontal:" msgstr "_Lárétt:" -#: ../src/ui/dialog/transformation.cpp:65 +#: ../src/ui/dialog/transformation.cpp:63 msgid "Horizontal displacement (relative) or position (absolute)" msgstr "Lárétt færsla (afstæð) eða staðsetning (algild)" -#: ../src/ui/dialog/transformation.cpp:67 -#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:65 +#: ../src/ui/dialog/transformation.cpp:75 msgid "_Vertical:" msgstr "Lóð_rétt:" -#: ../src/ui/dialog/transformation.cpp:67 +#: ../src/ui/dialog/transformation.cpp:65 msgid "Vertical displacement (relative) or position (absolute)" msgstr "Lóðrétt færsla (afstæð) eða staðsetning (algild)" -#: ../src/ui/dialog/transformation.cpp:69 +#: ../src/ui/dialog/transformation.cpp:67 msgid "Horizontal size (absolute or percentage of current)" msgstr "Lárétt stærð (algild eða í prósentuhlutfalli við núverandi stærð)" -#: ../src/ui/dialog/transformation.cpp:71 +#: ../src/ui/dialog/transformation.cpp:69 msgid "Vertical size (absolute or percentage of current)" msgstr "Lóðrétt stærð (algild eða í prósentuhlutfalli við núverandi stærð)" -#: ../src/ui/dialog/transformation.cpp:73 +#: ../src/ui/dialog/transformation.cpp:71 msgid "A_ngle:" msgstr "H_orn:" -#: ../src/ui/dialog/transformation.cpp:73 -#: ../src/ui/dialog/transformation.cpp:994 +#: ../src/ui/dialog/transformation.cpp:71 +#: ../src/ui/dialog/transformation.cpp:996 msgid "Rotation angle (positive = counterclockwise)" msgstr "Snúningshorn (jákvætt = rangsælis)" -#: ../src/ui/dialog/transformation.cpp:75 +#: ../src/ui/dialog/transformation.cpp:73 msgid "" "Horizontal skew angle (positive = counterclockwise), or absolute " "displacement, or percentage displacement" @@ -21938,7 +22667,7 @@ msgstr "" "Láðrétt skekkingarhorn (jákvætt = rangsælis), eða algild tilfærsla eða " "tilfærsla í prósentuhlutfalli" -#: ../src/ui/dialog/transformation.cpp:77 +#: ../src/ui/dialog/transformation.cpp:75 msgid "" "Vertical skew angle (positive = counterclockwise), or absolute displacement, " "or percentage displacement" @@ -21946,53 +22675,53 @@ msgstr "" "Lóðrétt skekkingarhorn (jákvætt = rangsælis), eða algild tilfærsla eða " "tilfærsla í prósentuhlutfalli" -#: ../src/ui/dialog/transformation.cpp:80 +#: ../src/ui/dialog/transformation.cpp:78 msgid "Transformation matrix element A" msgstr "Umbreytingarfylki eining A" -#: ../src/ui/dialog/transformation.cpp:81 +#: ../src/ui/dialog/transformation.cpp:79 msgid "Transformation matrix element B" msgstr "Umbreytingarfylki eining B" -#: ../src/ui/dialog/transformation.cpp:82 +#: ../src/ui/dialog/transformation.cpp:80 msgid "Transformation matrix element C" msgstr "Umbreytingarfylki eining C" -#: ../src/ui/dialog/transformation.cpp:83 +#: ../src/ui/dialog/transformation.cpp:81 msgid "Transformation matrix element D" msgstr "Umbreytingarfylki eining D" -#: ../src/ui/dialog/transformation.cpp:84 +#: ../src/ui/dialog/transformation.cpp:82 msgid "Transformation matrix element E" msgstr "Umbreytingarfylki eining E" -#: ../src/ui/dialog/transformation.cpp:85 +#: ../src/ui/dialog/transformation.cpp:83 msgid "Transformation matrix element F" msgstr "Umbreytingarfylki eining F" -#: ../src/ui/dialog/transformation.cpp:90 +#: ../src/ui/dialog/transformation.cpp:88 msgid "Rela_tive move" msgstr "Afs_tæð færsla" -#: ../src/ui/dialog/transformation.cpp:90 +#: ../src/ui/dialog/transformation.cpp:88 msgid "" "Add the specified relative displacement to the current position; otherwise, " "edit the current absolute position directly" msgstr "" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:89 msgid "_Scale proportionally" msgstr "_Kvarða hlutfallslega" -#: ../src/ui/dialog/transformation.cpp:91 +#: ../src/ui/dialog/transformation.cpp:89 msgid "Preserve the width/height ratio of the scaled objects" msgstr "Halda stærðarhlutföllum kvarðaðra hluta" -#: ../src/ui/dialog/transformation.cpp:92 +#: ../src/ui/dialog/transformation.cpp:90 msgid "Apply to each _object separately" msgstr "Beita á _hvern hlut sérstaklega" -#: ../src/ui/dialog/transformation.cpp:92 +#: ../src/ui/dialog/transformation.cpp:90 msgid "" "Apply the scale/rotate/skew to each selected object separately; otherwise, " "transform the selection as a whole" @@ -22000,37 +22729,37 @@ msgstr "" "Beita kvarða/snúningi/skekkingu á hvern hlut sérstaklega; annars er valinu " "umbreytt sem heild" -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:91 msgid "Edit c_urrent matrix" msgstr "Breyta núverandi f_ylki" -#: ../src/ui/dialog/transformation.cpp:93 +#: ../src/ui/dialog/transformation.cpp:91 msgid "" "Edit the current transform= matrix; otherwise, post-multiply transform= by " "this matrix" msgstr "" -#: ../src/ui/dialog/transformation.cpp:106 +#: ../src/ui/dialog/transformation.cpp:104 msgid "_Scale" msgstr "_Kvarða" -#: ../src/ui/dialog/transformation.cpp:109 +#: ../src/ui/dialog/transformation.cpp:107 msgid "_Rotate" msgstr "S_núa" -#: ../src/ui/dialog/transformation.cpp:112 +#: ../src/ui/dialog/transformation.cpp:110 msgid "Ske_w" msgstr "Ske_kkja" -#: ../src/ui/dialog/transformation.cpp:115 +#: ../src/ui/dialog/transformation.cpp:113 msgid "Matri_x" msgstr "_Fylki" -#: ../src/ui/dialog/transformation.cpp:139 +#: ../src/ui/dialog/transformation.cpp:137 msgid "Reset the values on the current tab to defaults" msgstr "Frumstilla gildin á þessum flipa á sjálfgefin gildi" -#: ../src/ui/dialog/transformation.cpp:146 +#: ../src/ui/dialog/transformation.cpp:144 msgid "Apply transformation to selection" msgstr "Beita umbreytingu á valið" @@ -22038,95 +22767,91 @@ msgstr "Beita umbreytingu á valið" msgid "Rotate in a counterclockwise direction" msgstr "Snúa rangsælis" -#: ../src/ui/dialog/transformation.cpp:292 +#: ../src/ui/dialog/transformation.cpp:294 msgid "Rotate in a clockwise direction" msgstr "Snúa réttsælis" -#: ../src/ui/dialog/transformation.cpp:797 -#: ../src/ui/dialog/transformation.cpp:808 -#: ../src/ui/dialog/transformation.cpp:822 -#: ../src/ui/dialog/transformation.cpp:841 -#: ../src/ui/dialog/transformation.cpp:852 -#: ../src/ui/dialog/transformation.cpp:862 -#: ../src/ui/dialog/transformation.cpp:886 +#: ../src/ui/dialog/transformation.cpp:799 +#: ../src/ui/dialog/transformation.cpp:810 +#: ../src/ui/dialog/transformation.cpp:824 +#: ../src/ui/dialog/transformation.cpp:843 +#: ../src/ui/dialog/transformation.cpp:854 +#: ../src/ui/dialog/transformation.cpp:864 +#: ../src/ui/dialog/transformation.cpp:888 msgid "Transform matrix is singular, not used." msgstr "" -#: ../src/ui/dialog/transformation.cpp:902 +#: ../src/ui/dialog/transformation.cpp:904 msgid "Edit transformation matrix" msgstr "Breyta umbreytingarfylki" -#: ../src/ui/dialog/transformation.cpp:1001 +#: ../src/ui/dialog/transformation.cpp:1003 msgid "Rotation angle (positive = clockwise)" msgstr "Snúningshorn (jákvætt = réttsælis)" -#: ../src/ui/dialog/xml-tree.cpp:65 ../src/ui/dialog/xml-tree.cpp:115 +#: ../src/ui/dialog/xml-tree.cpp:63 ../src/ui/dialog/xml-tree.cpp:117 msgid "New element node" msgstr "Nýr stakliður" -#: ../src/ui/dialog/xml-tree.cpp:66 ../src/ui/dialog/xml-tree.cpp:121 +#: ../src/ui/dialog/xml-tree.cpp:64 ../src/ui/dialog/xml-tree.cpp:125 msgid "New text node" msgstr "Nýr textaliður" -#: ../src/ui/dialog/xml-tree.cpp:67 ../src/ui/dialog/xml-tree.cpp:135 +#: ../src/ui/dialog/xml-tree.cpp:65 ../src/ui/dialog/xml-tree.cpp:143 msgid "nodeAsInXMLdialogTooltip|Delete node" msgstr "Eyða lið" -#: ../src/ui/dialog/xml-tree.cpp:68 ../src/ui/dialog/xml-tree.cpp:127 -#: ../src/ui/dialog/xml-tree.cpp:963 +#: ../src/ui/dialog/xml-tree.cpp:66 ../src/ui/dialog/xml-tree.cpp:133 +#: ../src/ui/dialog/xml-tree.cpp:976 msgid "Duplicate node" msgstr "Tvöfalda lið" -#: ../src/ui/dialog/xml-tree.cpp:74 ../src/ui/dialog/xml-tree.cpp:188 -#: ../src/ui/dialog/xml-tree.cpp:999 +#: ../src/ui/dialog/xml-tree.cpp:72 ../src/ui/dialog/xml-tree.cpp:207 +#: ../src/ui/dialog/xml-tree.cpp:1012 msgid "Delete attribute" msgstr "Eyða eigindi" -#: ../src/ui/dialog/xml-tree.cpp:78 -msgid "Set" -msgstr "Setja" - -#: ../src/ui/dialog/xml-tree.cpp:110 +#: ../src/ui/dialog/xml-tree.cpp:109 msgid "Drag to reorder nodes" msgstr "Draga til að endurraða liðum" -#: ../src/ui/dialog/xml-tree.cpp:143 ../src/ui/dialog/xml-tree.cpp:144 -#: ../src/ui/dialog/xml-tree.cpp:1121 +#: ../src/ui/dialog/xml-tree.cpp:153 ../src/ui/dialog/xml-tree.cpp:154 +#: ../src/ui/dialog/xml-tree.cpp:1134 msgid "Unindent node" msgstr "Fjarlægja inndrátt liðar" -#: ../src/ui/dialog/xml-tree.cpp:150 ../src/ui/dialog/xml-tree.cpp:151 -#: ../src/ui/dialog/xml-tree.cpp:1099 +#: ../src/ui/dialog/xml-tree.cpp:162 ../src/ui/dialog/xml-tree.cpp:163 +#: ../src/ui/dialog/xml-tree.cpp:1112 msgid "Indent node" msgstr "Draga inn lið" -#: ../src/ui/dialog/xml-tree.cpp:157 ../src/ui/dialog/xml-tree.cpp:158 -#: ../src/ui/dialog/xml-tree.cpp:1050 +#: ../src/ui/dialog/xml-tree.cpp:171 ../src/ui/dialog/xml-tree.cpp:172 +#: ../src/ui/dialog/xml-tree.cpp:1063 msgid "Raise node" msgstr "Hækka lið" -#: ../src/ui/dialog/xml-tree.cpp:164 ../src/ui/dialog/xml-tree.cpp:165 -#: ../src/ui/dialog/xml-tree.cpp:1068 +#: ../src/ui/dialog/xml-tree.cpp:180 ../src/ui/dialog/xml-tree.cpp:181 +#: ../src/ui/dialog/xml-tree.cpp:1081 msgid "Lower node" msgstr "Lækka lið" -#: ../src/ui/dialog/xml-tree.cpp:205 +#: ../src/ui/dialog/xml-tree.cpp:224 msgid "Attribute name" msgstr "Heiti á eigindi" -#: ../src/ui/dialog/xml-tree.cpp:220 +#: ../src/ui/dialog/xml-tree.cpp:239 msgid "Attribute value" msgstr "Gildi eigindis" -#: ../src/ui/dialog/xml-tree.cpp:308 +#: ../src/ui/dialog/xml-tree.cpp:327 msgid "Click to select nodes, drag to rearrange." msgstr "Smelltu til að velja liði, dragðu til að endurraða." -#: ../src/ui/dialog/xml-tree.cpp:319 +#: ../src/ui/dialog/xml-tree.cpp:338 msgid "Click attribute to edit." msgstr "Smelltu á eigindi til að breyta." -#: ../src/ui/dialog/xml-tree.cpp:323 +#: ../src/ui/dialog/xml-tree.cpp:342 #, c-format msgid "" "Attribute %s selected. Press Ctrl+Enter when done editing to " @@ -22135,96 +22860,92 @@ msgstr "" "Eigindið %s valið. Ýttu á Ctrl+Enter þegar breytingum er lokið " "til að staðfesta breytingar." -#: ../src/ui/dialog/xml-tree.cpp:563 +#: ../src/ui/dialog/xml-tree.cpp:576 msgid "Drag XML subtree" msgstr "Draga XML undirgreinar" -#: ../src/ui/dialog/xml-tree.cpp:866 +#: ../src/ui/dialog/xml-tree.cpp:879 msgid "New element node..." msgstr "Nýr stakliður..." -#: ../src/ui/dialog/xml-tree.cpp:892 -msgid "Cancel" -msgstr "Hætta við" - -#: ../src/ui/dialog/xml-tree.cpp:929 +#: ../src/ui/dialog/xml-tree.cpp:942 msgid "Create new element node" msgstr "Búa til nýjan staklið" -#: ../src/ui/dialog/xml-tree.cpp:945 +#: ../src/ui/dialog/xml-tree.cpp:958 msgid "Create new text node" msgstr "Búa til nýjan textalið" -#: ../src/ui/dialog/xml-tree.cpp:980 +#: ../src/ui/dialog/xml-tree.cpp:993 msgid "nodeAsInXMLinHistoryDialog|Delete node" msgstr "Eyða lið" -#: ../src/ui/dialog/xml-tree.cpp:1024 +#: ../src/ui/dialog/xml-tree.cpp:1037 msgid "Change attribute" msgstr "Breyta eigindi" -#: ../src/ui/interface.cpp:727 +#: ../src/ui/interface.cpp:767 msgctxt "Interface setup" msgid "Default" msgstr "Sjálfgefið" -#: ../src/ui/interface.cpp:727 +#: ../src/ui/interface.cpp:767 msgid "Default interface setup" msgstr "Uppsetning sjálfgefins viðmóts" -#: ../src/ui/interface.cpp:728 +#: ../src/ui/interface.cpp:768 msgctxt "Interface setup" msgid "Custom" msgstr "Sérsniðið" -#: ../src/ui/interface.cpp:728 +#: ../src/ui/interface.cpp:768 msgid "Setup for custom task" msgstr "Stilla fyrir sérsniðið verk" -#: ../src/ui/interface.cpp:729 +#: ../src/ui/interface.cpp:769 msgctxt "Interface setup" msgid "Wide" msgstr "Breitt" -#: ../src/ui/interface.cpp:729 +#: ../src/ui/interface.cpp:769 msgid "Setup for widescreen work" msgstr "Setja upp fyrir vinnu á breiðskjá" -#: ../src/ui/interface.cpp:835 +#: ../src/ui/interface.cpp:888 #, c-format msgid "Verb \"%s\" Unknown" msgstr "Sögnin \"%s\" óþekkt" -#: ../src/ui/interface.cpp:870 +#: ../src/ui/interface.cpp:923 msgid "Open _Recent" msgstr "O_pna nýlegt" -#: ../src/ui/interface.cpp:978 ../src/ui/interface.cpp:1064 -#: ../src/ui/interface.cpp:1167 ../src/ui/widget/selected-style.cpp:509 +#: ../src/ui/interface.cpp:1031 ../src/ui/interface.cpp:1117 +#: ../src/ui/interface.cpp:1220 ../src/ui/widget/selected-style.cpp:531 msgid "Drop color" msgstr "Sleppa lit" -#: ../src/ui/interface.cpp:1017 ../src/ui/interface.cpp:1127 +#: ../src/ui/interface.cpp:1070 ../src/ui/interface.cpp:1180 msgid "Drop color on gradient" msgstr "Sleppa lit á litstigul" -#: ../src/ui/interface.cpp:1180 +#: ../src/ui/interface.cpp:1233 msgid "Could not parse SVG data" msgstr "Gat ekki þáttað SVG-gögn" -#: ../src/ui/interface.cpp:1219 +#: ../src/ui/interface.cpp:1272 msgid "Drop SVG" msgstr "Sleppa SVG" -#: ../src/ui/interface.cpp:1232 +#: ../src/ui/interface.cpp:1285 msgid "Drop Symbol" msgstr "Sleppa tákni" -#: ../src/ui/interface.cpp:1263 +#: ../src/ui/interface.cpp:1308 msgid "Drop bitmap image" msgstr "Sleppa bitamynd" -#: ../src/ui/interface.cpp:1355 +#: ../src/ui/interface.cpp:1400 #, c-format msgid "" "A file named \"%s\" already exists. Do " @@ -22238,175 +22959,12 @@ msgstr "" "Skráin er þegar til í \"%s\". Verði henni skipt út verður skrifað yfir " "innihaldið." -#: ../src/ui/interface.cpp:1362 ../share/extensions/web-set-att.inx.h:21 +#: ../src/ui/interface.cpp:1407 ../share/extensions/web-set-att.inx.h:21 #: ../share/extensions/web-transmit-att.inx.h:19 msgid "Replace" msgstr "Skipta út" -#: ../src/ui/interface.cpp:1433 -msgid "Go to parent" -msgstr "Fara í forvera" - -#. TRANSLATORS: #%1 is the id of the group e.g. , not a number. -#: ../src/ui/interface.cpp:1474 -msgid "Enter group #%1" -msgstr "Fara inn í hóp #%1" - -#. Pop selection out of group -#: ../src/ui/interface.cpp:1488 -msgid "_Pop selection out of group" -msgstr "_Henda völdu út úr hóp" - -#. Item dialog -#: ../src/ui/interface.cpp:1616 ../src/verbs.cpp:2992 -msgid "_Object Properties..." -msgstr "_Eiginleikar hlutar..." - -#: ../src/ui/interface.cpp:1625 -msgid "_Select This" -msgstr "_Velja þetta" - -#: ../src/ui/interface.cpp:1636 -msgid "Select Same" -msgstr "Velja sama" - -#. Select same fill and stroke -#: ../src/ui/interface.cpp:1646 -msgid "Fill and Stroke" -msgstr "Fylling og útlína" - -#. Select same fill color -#: ../src/ui/interface.cpp:1653 -msgid "Fill Color" -msgstr "Fyllilitur" - -#. Select same stroke color -#: ../src/ui/interface.cpp:1660 -msgid "Stroke Color" -msgstr "Útlínulitur" - -#. Select same stroke style -#: ../src/ui/interface.cpp:1667 -msgid "Stroke Style" -msgstr "Stíll útlínu" - -#. Select same stroke style -#: ../src/ui/interface.cpp:1674 -msgid "Object type" -msgstr "Tegund hlutar" - -#. Move to layer -#: ../src/ui/interface.cpp:1681 -msgid "_Move to layer ..." -msgstr "_Flytja á lag ..." - -#. Create link -#: ../src/ui/interface.cpp:1691 -msgid "Create _Link" -msgstr "Búa til ten_gil" - -#. Release mask -#: ../src/ui/interface.cpp:1725 -msgid "Release Mask" -msgstr "Sleppa hulu" - -#. SSet Clip Group -#: ../src/ui/interface.cpp:1736 -msgid "Create Clip G_roup" -msgstr "Búa til afma_rkandi hóp" - -#. Set Clip -#: ../src/ui/interface.cpp:1743 -msgid "Set Cl_ip" -msgstr "Set_ja afmörkun" - -#. Release Clip -#: ../src/ui/interface.cpp:1754 -msgid "Release C_lip" -msgstr "S_leppa afmörkun" - -#. Group -#: ../src/ui/interface.cpp:1765 ../src/verbs.cpp:2599 -msgid "_Group" -msgstr "_Hópa" - -#: ../src/ui/interface.cpp:1836 -msgid "Create link" -msgstr "Búa til tengil" - -#. Ungroup -#: ../src/ui/interface.cpp:1871 ../src/verbs.cpp:2601 -msgid "_Ungroup" -msgstr "Skipta _upp hóp" - -#. Link dialog -#: ../src/ui/interface.cpp:1901 -msgid "Link _Properties..." -msgstr "_Eiginleikar tengils..." - -#. Select item -#: ../src/ui/interface.cpp:1907 -msgid "_Follow Link" -msgstr "_Fylgja tengli" - -#. Reset transformations -#: ../src/ui/interface.cpp:1913 -msgid "_Remove Link" -msgstr "Fja_rlægja tengil" - -#: ../src/ui/interface.cpp:1944 -msgid "Remove link" -msgstr "Fjarlægja tengil" - -#. Image properties -#: ../src/ui/interface.cpp:1954 -msgid "Image _Properties..." -msgstr "E_iginleikar myndar..." - -#. Edit externally -#: ../src/ui/interface.cpp:1960 -msgid "Edit Externally..." -msgstr "Breyta með öðru forriti..." - -#. Trace Bitmap -#. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/ui/interface.cpp:1969 ../src/verbs.cpp:2680 -msgid "_Trace Bitmap..." -msgstr "Línu_teikna bitamynd..." - -#. Trace Pixel Art -#: ../src/ui/interface.cpp:1978 -msgid "Trace Pixel Art" -msgstr "Línuteikna Pixel Art" - -#: ../src/ui/interface.cpp:1988 -msgctxt "Context menu" -msgid "Embed Image" -msgstr "Ívefja mynd" - -#: ../src/ui/interface.cpp:1999 -msgctxt "Context menu" -msgid "Extract Image..." -msgstr "Ná í mynd..." - -#. Item dialog -#. Fill and Stroke dialog -#: ../src/ui/interface.cpp:2143 ../src/ui/interface.cpp:2163 -#: ../src/verbs.cpp:2955 -msgid "_Fill and Stroke..." -msgstr "_Fylling og útlína..." - -#. Edit Text dialog -#: ../src/ui/interface.cpp:2169 ../src/verbs.cpp:2974 -msgid "_Text and Font..." -msgstr "_Texti og letur..." - -#. Spellcheck dialog -#: ../src/ui/interface.cpp:2175 ../src/verbs.cpp:2982 -msgid "Check Spellin_g..." -msgstr "_Yfirfara stafsetningu..." - -#: ../src/ui/object-edit.cpp:445 +#: ../src/ui/object-edit.cpp:479 msgid "" "Adjust the horizontal rounding radius; with Ctrl to make the " "vertical radius the same" @@ -22414,7 +22972,7 @@ msgstr "" "Aðlaga radíus láréttrar rúnnunar; með Ctrl má láta lóðréttan " "radíus vera þann sama" -#: ../src/ui/object-edit.cpp:450 +#: ../src/ui/object-edit.cpp:484 msgid "" "Adjust the vertical rounding radius; with Ctrl to make the " "horizontal radius the same" @@ -22422,7 +22980,7 @@ msgstr "" "Aðlaga radíus lóðréttrar rúnnunar; með Ctrl má láta láréttan " "radíus vera þann sama" -#: ../src/ui/object-edit.cpp:455 ../src/ui/object-edit.cpp:460 +#: ../src/ui/object-edit.cpp:489 ../src/ui/object-edit.cpp:494 msgid "" "Adjust the width and height of the rectangle; with Ctrl to " "lock ratio or stretch in one dimension only" @@ -22430,8 +22988,12 @@ msgstr "" "Aðlaga breidd og hæð rétthyrningsins; með Ctrl til að læsa " "hlutföllum eða teygja einungis í eina átt" -#: ../src/ui/object-edit.cpp:707 ../src/ui/object-edit.cpp:711 -#: ../src/ui/object-edit.cpp:715 ../src/ui/object-edit.cpp:719 +#: ../src/ui/object-edit.cpp:499 +msgid "Drag to move the rectangle" +msgstr "Draga til að flytja rétthyrninginn" + +#: ../src/ui/object-edit.cpp:746 ../src/ui/object-edit.cpp:750 +#: ../src/ui/object-edit.cpp:754 ../src/ui/object-edit.cpp:758 msgid "" "Resize box in X/Y direction; with Shift along the Z axis; with " "Ctrl to constrain to the directions of edges or diagonals" @@ -22439,8 +23001,8 @@ msgstr "" "Breyta stærð kassa í X/Y stefnu; með Shift eftir Z ás; með Ctrl til að skilyrða í stefnur jaðra eða skálína" -#: ../src/ui/object-edit.cpp:723 ../src/ui/object-edit.cpp:727 -#: ../src/ui/object-edit.cpp:731 ../src/ui/object-edit.cpp:735 +#: ../src/ui/object-edit.cpp:762 ../src/ui/object-edit.cpp:766 +#: ../src/ui/object-edit.cpp:770 ../src/ui/object-edit.cpp:774 msgid "" "Resize box along the Z axis; with Shift in X/Y direction; with " "Ctrl to constrain to the directions of edges or diagonals" @@ -22448,41 +23010,45 @@ msgstr "" "Breyta stærð kassa eftir Z ás; með Shift í X/Y stefnu; með Ctrl til að skilyrða í stefnur jaðra eða skálína" -#: ../src/ui/object-edit.cpp:739 +#: ../src/ui/object-edit.cpp:778 msgid "Move the box in perspective" msgstr "Færa kassa í fjarvídd" -#: ../src/ui/object-edit.cpp:991 +#: ../src/ui/object-edit.cpp:1065 msgid "Adjust ellipse width, with Ctrl to make circle" msgstr "Aðlaga breidd sporöskju, með Ctrl til að gera hring" -#: ../src/ui/object-edit.cpp:995 +#: ../src/ui/object-edit.cpp:1069 msgid "Adjust ellipse height, with Ctrl to make circle" msgstr "Aðlaga hæð sporöskju, með Ctrl til að gera hring" -#: ../src/ui/object-edit.cpp:999 +#: ../src/ui/object-edit.cpp:1073 msgid "" "Position the start point of the arc or segment; with Shift to " "move with end point; with Ctrl to snap angle; drag inside the ellipse for arc, outside for segment" msgstr "" -"Staðsettu upphafspunkt boglínu eða geira; með Shift til að færa " -"með endapunkti; með Ctrl til að " -"þrepa hornin; dragðu innan í til að breyta sporbaugnum í boglínu, " -"utan við til að mynda geira/sneið" +"Staðsettu upphafspunkt boglínu eða geira; með Shift til að " +"færa með endapunkti; með Ctrl til að þrepa hornin; dragðu " +"innan í til að breyta sporbaugnum í boglínu, utan við til að " +"mynda geira/sneið" -#: ../src/ui/object-edit.cpp:1005 +#: ../src/ui/object-edit.cpp:1079 msgid "" "Position the end point of the arc or segment; with Shift to " "move with start point; with Ctrl to snap angle; drag " "inside the ellipse for arc, outside for segment" msgstr "" "Staðsettu endapunkt boglínu eða geira; með Shift til að færa " -"með upphafspunkti; með Ctrl til að " -"þrepa hornin; dragðu innan í til að breyta sporbaugnum í boglínu, " -"utan við til að mynda geira/sneið" +"með upphafspunkti; með Ctrl til að þrepa hornin; dragðu " +"innan í til að breyta sporbaugnum í boglínu, utan við til að " +"mynda geira/sneið" + +#: ../src/ui/object-edit.cpp:1085 +msgid "Drag to move the ellipse" +msgstr "Draga til að flytja sporbauginn" -#: ../src/ui/object-edit.cpp:1152 +#: ../src/ui/object-edit.cpp:1259 msgid "" "Adjust the tip radius of the star or polygon; with Shift to " "round; with Alt to randomize" @@ -22490,7 +23056,7 @@ msgstr "" "Fínstilla radíus odds á stjörnu eða marghyrningi; með Shift " "til að rúnna; með Alt til að slembigera" -#: ../src/ui/object-edit.cpp:1160 +#: ../src/ui/object-edit.cpp:1267 msgid "" "Adjust the base radius of the star; with Ctrl to keep star " "rays radial (no skew); with Shift to round; with Alt to " @@ -22500,7 +23066,15 @@ msgstr "" "stjörnu miðlægum (engin skekkja); með Shift til að rúnna; með Alt til að slembigera" -#: ../src/ui/object-edit.cpp:1355 +#: ../src/ui/object-edit.cpp:1274 +msgid "Drag to move the star" +msgstr "Draga til að flytja stjörnuna" + +#: ../src/ui/object-edit.cpp:1510 +msgid "Drag to move the spiral" +msgstr "Draga til að flytja spíralinn" + +#: ../src/ui/object-edit.cpp:1514 msgid "" "Roll/unroll the spiral from inside; with Ctrl to snap angle; " "with Alt to converge/diverge" @@ -22508,7 +23082,7 @@ msgstr "" "Vinda/afvinda spíral að innan; með Ctrl til að þrepa horn; með " "Alt til að leita inn/út" -#: ../src/ui/object-edit.cpp:1359 +#: ../src/ui/object-edit.cpp:1518 msgid "" "Roll/unroll the spiral from outside; with Ctrl to snap angle; " "with Shift to scale/rotate; with Alt to lock radius" @@ -22516,11 +23090,11 @@ msgstr "" "Vinda/afvinda spíral að utan; með Ctrl til að þrepa horn; með " "Shift til að kvarða/snúa; með Alt til að læsa radíus" -#: ../src/ui/object-edit.cpp:1408 +#: ../src/ui/object-edit.cpp:1568 msgid "Adjust the offset distance" msgstr "Laga vegalengd hliðrunar" -#: ../src/ui/object-edit.cpp:1445 +#: ../src/ui/object-edit.cpp:1605 msgid "Drag to resize the flowed text frame" msgstr "Dragðu til að breyta stærð ramma með flæðitexta" @@ -22861,73 +23435,74 @@ msgstr "Samhverfur hnútur" msgid "Auto-smooth node" msgstr "Sjálfvirkt mýktur hnútur" -#: ../src/ui/tool/path-manipulator.cpp:283 +#: ../src/ui/tool/path-manipulator.cpp:282 msgid "Add node" msgstr "Bæta við hnút" -#: ../src/ui/tool/path-manipulator.cpp:848 +#: ../src/ui/tool/path-manipulator.cpp:847 msgid "Scale handle" msgstr "Kvarða haldfang" -#: ../src/ui/tool/path-manipulator.cpp:872 +#: ../src/ui/tool/path-manipulator.cpp:871 msgid "Rotate handle" msgstr "Snúa haldfangi" #. We need to call MPM's method because it could have been our last node -#: ../src/ui/tool/path-manipulator.cpp:1545 ../src/widgets/node-toolbar.cpp:395 +#: ../src/ui/tool/path-manipulator.cpp:1537 +#: ../src/widgets/node-toolbar.cpp:395 msgid "Delete node" msgstr "Eyða hnút" -#: ../src/ui/tool/path-manipulator.cpp:1553 +#: ../src/ui/tool/path-manipulator.cpp:1545 msgid "Cycle node type" msgstr "Fletta í gegnum tegundir hnúta" -#: ../src/ui/tool/path-manipulator.cpp:1568 +#: ../src/ui/tool/path-manipulator.cpp:1560 msgid "Drag handle" msgstr "Draga haldfang" -#: ../src/ui/tool/path-manipulator.cpp:1577 +#: ../src/ui/tool/path-manipulator.cpp:1569 msgid "Retract handle" msgstr "Draga haldfang inn" -#: ../src/ui/tool/transform-handle-set.cpp:199 +#: ../src/ui/tool/transform-handle-set.cpp:204 msgctxt "Transform handle tip" msgid "Shift+Ctrl: scale uniformly about the rotation center" msgstr "Shift+Ctrl: kvarða jafnt um snúningsmiðjuna" -#: ../src/ui/tool/transform-handle-set.cpp:201 +#: ../src/ui/tool/transform-handle-set.cpp:206 msgctxt "Transform handle tip" msgid "Ctrl: scale uniformly" msgstr "Ctrl: kvarða jafnt" -#: ../src/ui/tool/transform-handle-set.cpp:206 +#: ../src/ui/tool/transform-handle-set.cpp:211 msgctxt "Transform handle tip" msgid "" "Shift+Alt: scale using an integer ratio about the rotation center" msgstr "Shift+Alt: kvarða með heiltöluhlutfalli um snúningsmiðjuna" -#: ../src/ui/tool/transform-handle-set.cpp:208 +#: ../src/ui/tool/transform-handle-set.cpp:213 msgctxt "Transform handle tip" msgid "Shift: scale from the rotation center" msgstr "Shift: kvarða frá snúningsmiðjunni" -#: ../src/ui/tool/transform-handle-set.cpp:211 +#: ../src/ui/tool/transform-handle-set.cpp:216 msgctxt "Transform handle tip" msgid "Alt: scale using an integer ratio" msgstr "Alt: kvarða með heiltöluhlutfalli" -#: ../src/ui/tool/transform-handle-set.cpp:213 +#: ../src/ui/tool/transform-handle-set.cpp:218 msgctxt "Transform handle tip" msgid "Scale handle: drag to scale the selection" msgstr "Kvörðunarhaldfang: dragðu til að kvarða valið" -#: ../src/ui/tool/transform-handle-set.cpp:218 +#: ../src/ui/tool/transform-handle-set.cpp:223 #, c-format msgctxt "Transform handle tip" msgid "Scale by %.2f%% x %.2f%%" msgstr "Kvarða um %.2f%% x %.2f%%" -#: ../src/ui/tool/transform-handle-set.cpp:445 +#: ../src/ui/tool/transform-handle-set.cpp:450 #, c-format msgctxt "Transform handle tip" msgid "" @@ -22936,18 +23511,18 @@ msgid "" msgstr "" "Shift+Ctrl: snúa um gagnstætt horn og þrepa snúningshorn í %f° bilum" -#: ../src/ui/tool/transform-handle-set.cpp:448 +#: ../src/ui/tool/transform-handle-set.cpp:453 msgctxt "Transform handle tip" msgid "Shift: rotate around the opposite corner" msgstr "Shift: snúa um gagnstætt horn" -#: ../src/ui/tool/transform-handle-set.cpp:452 +#: ../src/ui/tool/transform-handle-set.cpp:457 #, c-format msgctxt "Transform handle tip" msgid "Ctrl: snap angle to %f° increments" msgstr "Ctrl: þrepa horn í %f° bilum" -#: ../src/ui/tool/transform-handle-set.cpp:454 +#: ../src/ui/tool/transform-handle-set.cpp:459 msgctxt "Transform handle tip" msgid "" "Rotation handle: drag to rotate the selection around the rotation " @@ -22956,13 +23531,13 @@ msgstr "" "Snúninghaldfang: dragðu til að snúa valinu í kringum snúningsmiðju" #. event -#: ../src/ui/tool/transform-handle-set.cpp:459 +#: ../src/ui/tool/transform-handle-set.cpp:464 #, c-format msgctxt "Transform handle tip" msgid "Rotate by %.2f°" msgstr "Snúa um %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:584 +#: ../src/ui/tool/transform-handle-set.cpp:589 #, c-format msgctxt "Transform handle tip" msgid "" @@ -22971,18 +23546,18 @@ msgid "" msgstr "" "Shift+Ctrl: skekkja um snúningsmiðjuna og þrepa horn í %f° bilum" -#: ../src/ui/tool/transform-handle-set.cpp:587 +#: ../src/ui/tool/transform-handle-set.cpp:592 msgctxt "Transform handle tip" msgid "Shift: skew about the rotation center" msgstr "Shift: skekkja um snúningsmiðjuna" -#: ../src/ui/tool/transform-handle-set.cpp:591 +#: ../src/ui/tool/transform-handle-set.cpp:596 #, c-format msgctxt "Transform handle tip" msgid "Ctrl: snap skew angle to %f° increments" msgstr "Ctrl: þrepa skekkingarhorn í %f° bilum" -#: ../src/ui/tool/transform-handle-set.cpp:594 +#: ../src/ui/tool/transform-handle-set.cpp:599 msgctxt "Transform handle tip" msgid "" "Skew handle: drag to skew (shear) selection about the opposite handle" @@ -22990,19 +23565,19 @@ msgstr "" "Skekkingarhaldfang: dragðu til að skekkja valið (horn-í-horn) um " "mótstætt haldfang" -#: ../src/ui/tool/transform-handle-set.cpp:600 +#: ../src/ui/tool/transform-handle-set.cpp:605 #, c-format msgctxt "Transform handle tip" msgid "Skew horizontally by %.2f°" msgstr "Skew horizontally by %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:603 +#: ../src/ui/tool/transform-handle-set.cpp:608 #, c-format msgctxt "Transform handle tip" msgid "Skew vertically by %.2f°" msgstr "Skew vertically by %.2f°" -#: ../src/ui/tool/transform-handle-set.cpp:662 +#: ../src/ui/tool/transform-handle-set.cpp:667 msgctxt "Transform handle tip" msgid "Rotation center: drag to change the origin of transforms" msgstr "Snúningsmiðja: draga til að breyta upphafspunkti ummyndana" @@ -23101,7 +23676,7 @@ msgstr "" "fylgja stuðningsferli. Örvalyklar aðlaga breidd (vinstri/hægri) og " "halla (upp/niður)." -#: ../src/ui/tools-switch.cpp:107 ../src/ui/tools/text-tool.cpp:1579 +#: ../src/ui/tools-switch.cpp:107 ../src/ui/tools/text-tool.cpp:1629 msgid "" "Click to select or create text, drag to create flowed text; " "then type." @@ -23137,7 +23712,7 @@ msgstr "" msgid "Drag to measure the dimensions of objects." msgstr "Dragðu til að mæla stærðir hluta." -#: ../src/ui/tools-switch.cpp:112 ../src/ui/tools/dropper-tool.cpp:263 +#: ../src/ui/tools-switch.cpp:112 ../src/ui/tools/dropper-tool.cpp:375 msgid "" "Click to set fill, Shift+click to set stroke; drag to " "average color in area; with Alt to pick inverse color; Ctrl+C " @@ -23181,7 +23756,7 @@ msgstr "" msgid "Shift: draw around the starting point" msgstr "Shift: teikna hring í kringum upphafspunkt" -#: ../src/ui/tools/arc-tool.cpp:411 +#: ../src/ui/tools/arc-tool.cpp:402 #, c-format msgid "" "Ellipse: %s × %s (constrained to ratio %d:%d); with Shift " @@ -23190,7 +23765,7 @@ msgstr "" "Sporbaugur: %s × %s (takmarkað að hlutfallinu %d:%d); með " "Shift til að teikna umhverfis upphafspunkt" -#: ../src/ui/tools/arc-tool.cpp:413 +#: ../src/ui/tools/arc-tool.cpp:404 #, c-format msgid "" "Ellipse: %s × %s; with Ctrl to make square or integer-" @@ -23200,7 +23775,7 @@ msgstr "" "heiltölu-hlutfalls sporbaug; með Shift til að teikna umhverfis " "upphafspunkt" -#: ../src/ui/tools/arc-tool.cpp:436 +#: ../src/ui/tools/arc-tool.cpp:427 msgid "Create ellipse" msgstr "Útbúa sporbaug" @@ -23219,28 +23794,28 @@ msgstr "3D kassi; með Shift til að stækka eftir Z ás" msgid "Create 3D box" msgstr "Búa til 3D kassa" -#: ../src/ui/tools/calligraphic-tool.cpp:516 +#: ../src/ui/tools/calligraphic-tool.cpp:517 msgid "" "Guide path selected; start drawing along the guide with Ctrl" msgstr "" -#: ../src/ui/tools/calligraphic-tool.cpp:518 +#: ../src/ui/tools/calligraphic-tool.cpp:519 msgid "Select a guide path to track with Ctrl" msgstr "" -#: ../src/ui/tools/calligraphic-tool.cpp:653 +#: ../src/ui/tools/calligraphic-tool.cpp:654 msgid "Tracking: connection to guide path lost!" msgstr "" -#: ../src/ui/tools/calligraphic-tool.cpp:653 +#: ../src/ui/tools/calligraphic-tool.cpp:654 msgid "Tracking a guide path" msgstr "" -#: ../src/ui/tools/calligraphic-tool.cpp:656 +#: ../src/ui/tools/calligraphic-tool.cpp:657 msgid "Drawing a calligraphic stroke" msgstr "Teikna skrautskriftardrátt" -#: ../src/ui/tools/calligraphic-tool.cpp:957 +#: ../src/ui/tools/calligraphic-tool.cpp:960 msgid "Draw calligraphic stroke" msgstr "Teikna skrautskriftardrætti" @@ -23264,51 +23839,51 @@ msgstr "Búa til tengilínu" msgid "Finishing connector" msgstr "Enda tengilínu" -#: ../src/ui/tools/connector-tool.cpp:1174 +#: ../src/ui/tools/connector-tool.cpp:1173 msgid "Connector endpoint: drag to reroute or connect to new shapes" msgstr "" "Tengiendapunktur: dragðu til að endurtengja eða tengja við ný form" -#: ../src/ui/tools/connector-tool.cpp:1317 +#: ../src/ui/tools/connector-tool.cpp:1316 msgid "Select at least one non-connector object." msgstr "Veldu að minnsta kosti einn hlut sem er ekki tengilína." -#: ../src/ui/tools/connector-tool.cpp:1322 +#: ../src/ui/tools/connector-tool.cpp:1321 #: ../src/widgets/connector-toolbar.cpp:307 msgid "Make connectors avoid selected objects" msgstr "Láta tengilínur forðast valda hluti" -#: ../src/ui/tools/connector-tool.cpp:1323 +#: ../src/ui/tools/connector-tool.cpp:1322 #: ../src/widgets/connector-toolbar.cpp:317 msgid "Make connectors ignore selected objects" msgstr "Láta tengilínur hundsa valda hluti" +#: ../src/ui/tools/dropper-tool.cpp:328 +msgid "Set picked color" +msgstr "Stilla plokkaðan lit" + #. alpha of color under cursor, to show in the statusbar #. locale-sensitive printf is OK, since this goes to the UI, not into SVG -#: ../src/ui/tools/dropper-tool.cpp:259 +#: ../src/ui/tools/dropper-tool.cpp:371 #, c-format msgid " alpha %.3g" msgstr " alfa %.3g" #. where the color is picked, to show in the statusbar -#: ../src/ui/tools/dropper-tool.cpp:261 +#: ../src/ui/tools/dropper-tool.cpp:373 #, c-format msgid ", averaged with radius %d" msgstr ", meðaltal með radíus %d" -#: ../src/ui/tools/dropper-tool.cpp:261 +#: ../src/ui/tools/dropper-tool.cpp:373 msgid " under cursor" msgstr " undir bendli" #. message, to show in the statusbar -#: ../src/ui/tools/dropper-tool.cpp:263 +#: ../src/ui/tools/dropper-tool.cpp:375 msgid "Release mouse to set color." msgstr "Sleppa músarhnapp til að stilla lit." -#: ../src/ui/tools/dropper-tool.cpp:311 -msgid "Set picked color" -msgstr "Stilla plokkaðan lit" - #: ../src/ui/tools/eraser-tool.cpp:431 msgid "Drawing an eraser stroke" msgstr "Teikna útstrokunardrátt" @@ -23317,35 +23892,35 @@ msgstr "Teikna útstrokunardrátt" msgid "Draw eraser stroke" msgstr "Teikna útstrokunardrætti" -#: ../src/ui/tools/flood-tool.cpp:80 +#: ../src/ui/tools/flood-tool.cpp:81 msgid "Visible Colors" msgstr "Sýnilegir litir" -#: ../src/ui/tools/flood-tool.cpp:92 +#: ../src/ui/tools/flood-tool.cpp:93 msgctxt "Flood autogap" msgid "None" msgstr "Ekkert" -#: ../src/ui/tools/flood-tool.cpp:93 +#: ../src/ui/tools/flood-tool.cpp:94 msgctxt "Flood autogap" msgid "Small" msgstr "Lítið" -#: ../src/ui/tools/flood-tool.cpp:94 +#: ../src/ui/tools/flood-tool.cpp:95 msgctxt "Flood autogap" msgid "Medium" msgstr "Miðlungs" -#: ../src/ui/tools/flood-tool.cpp:95 +#: ../src/ui/tools/flood-tool.cpp:96 msgctxt "Flood autogap" msgid "Large" msgstr "Stórt" -#: ../src/ui/tools/flood-tool.cpp:405 +#: ../src/ui/tools/flood-tool.cpp:428 msgid "Too much inset, the result is empty." -msgstr "" +msgstr "Of mikil innfelling, útkoman verður tóm." -#: ../src/ui/tools/flood-tool.cpp:446 +#: ../src/ui/tools/flood-tool.cpp:469 #, c-format msgid "" "Area filled, path with %d node created and unioned with selection." @@ -23354,32 +23929,32 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../src/ui/tools/flood-tool.cpp:452 +#: ../src/ui/tools/flood-tool.cpp:475 #, c-format msgid "Area filled, path with %d node created." msgid_plural "Area filled, path with %d nodes created." msgstr[0] "" msgstr[1] "" -#: ../src/ui/tools/flood-tool.cpp:720 ../src/ui/tools/flood-tool.cpp:1030 +#: ../src/ui/tools/flood-tool.cpp:743 ../src/ui/tools/flood-tool.cpp:1053 msgid "Area is not bounded, cannot fill." msgstr "Svæði er ekki afmarkað, get ekki fyllt." -#: ../src/ui/tools/flood-tool.cpp:1035 +#: ../src/ui/tools/flood-tool.cpp:1058 msgid "" "Only the visible part of the bounded area was filled. If you want to " "fill all of the area, undo, zoom out, and fill again." msgstr "" -#: ../src/ui/tools/flood-tool.cpp:1053 ../src/ui/tools/flood-tool.cpp:1204 +#: ../src/ui/tools/flood-tool.cpp:1076 ../src/ui/tools/flood-tool.cpp:1227 msgid "Fill bounded area" msgstr "Fylla afmarkað svæði" -#: ../src/ui/tools/flood-tool.cpp:1069 +#: ../src/ui/tools/flood-tool.cpp:1092 msgid "Set style on object" msgstr "Setja stíl á hlut" -#: ../src/ui/tools/flood-tool.cpp:1129 +#: ../src/ui/tools/flood-tool.cpp:1152 msgid "Draw over areas to add to fill, hold Alt for touch fill" msgstr "" "Draga yfir svæði til að bæta við fyllingu, halda niðri Alt " @@ -23399,11 +23974,11 @@ msgstr "Loka ferli." msgid "Draw path" msgstr "Teikna feril" -#: ../src/ui/tools/freehand-base.cpp:971 +#: ../src/ui/tools/freehand-base.cpp:975 msgid "Creating single dot" msgstr "Bý til einn punkt" -#: ../src/ui/tools/freehand-base.cpp:972 +#: ../src/ui/tools/freehand-base.cpp:976 msgid "Create single dot" msgstr "Búa til stakan punkt" @@ -23694,7 +24269,7 @@ msgstr "" "Smella eða smella og draga til að halda áfram með ferilinn frá " "þessum punkti. Shift+smella til að gera frjálsan hnút" -#: ../src/ui/tools/pen-tool.cpp:1785 +#: ../src/ui/tools/pen-tool.cpp:1779 #, c-format msgid "" "Curve segment: angle %3.2f°, distance %s; with Ctrl to " @@ -23703,7 +24278,7 @@ msgstr "" "Bútur sveiglínu: horn %3.2f°, lengd %s; með Ctrl til að " "þrepa horn, með Enter eða Shift til að ljúka ferlinum" -#: ../src/ui/tools/pen-tool.cpp:1786 +#: ../src/ui/tools/pen-tool.cpp:1780 #, c-format msgid "" "Line segment: angle %3.2f°, distance %s; with Ctrl to " @@ -23712,7 +24287,7 @@ msgstr "" "Línubútur: horn %3.2f°, lengd %s; með Ctrl til að þrepa " "horn, með Enter eða Shift til að ljúka ferlinum" -#: ../src/ui/tools/pen-tool.cpp:1789 +#: ../src/ui/tools/pen-tool.cpp:1783 #, c-format msgid "" "Curve segment: angle %3.2f°, distance %s; with Shift+ClickEnter eða Shift+Enter til að " "ljúka ferlinum" -#: ../src/ui/tools/pen-tool.cpp:1790 +#: ../src/ui/tools/pen-tool.cpp:1784 #, c-format msgid "" "Line segment: angle %3.2f°, distance %s; with Shift+Click " @@ -23732,7 +24307,7 @@ msgstr "" "gera frjálsan hnút, með Enter eða Shift+Enter til að ljúka " "ferlinum" -#: ../src/ui/tools/pen-tool.cpp:1807 +#: ../src/ui/tools/pen-tool.cpp:1801 #, c-format msgid "" "Curve handle: angle %3.2f°, length %s; with Ctrl to snap " @@ -23741,7 +24316,7 @@ msgstr "" "Haldfang boglínu: horn %3.2f°, lengd %s; með Ctrl til að " "þrepa horn" -#: ../src/ui/tools/pen-tool.cpp:1831 +#: ../src/ui/tools/pen-tool.cpp:1825 #, c-format msgid "" "Curve handle, symmetric: angle %3.2f°, length %s; with CtrlHaldfang boglínu, samhverft: horn %3.2f°, lengd %s; með Ctrl til að þrepa horn, með Shift til að færa einungis þetta haldfang" -#: ../src/ui/tools/pen-tool.cpp:1832 +#: ../src/ui/tools/pen-tool.cpp:1826 #, c-format msgid "" "Curve handle: angle %3.2f°, length %s; with Ctrl to snap " @@ -23759,7 +24334,7 @@ msgstr "" "Haldfang boglínu: horn %3.2f°, lengd %s; með Ctrl til að " "þrepa horn, með Shift til að færa einungis þetta haldfang" -#: ../src/ui/tools/pen-tool.cpp:1966 +#: ../src/ui/tools/pen-tool.cpp:1960 msgid "Drawing finished" msgstr "Teikningu lokið" @@ -23798,7 +24373,7 @@ msgid "" "circular" msgstr "" -#: ../src/ui/tools/rect-tool.cpp:433 +#: ../src/ui/tools/rect-tool.cpp:424 #, c-format msgid "" "Rectangle: %s × %s (constrained to ratio %d:%d); with ShiftFerhyrningur: %s  %s (takmarkaður að hlutfallinu %d:%d); með " "Shift til að teikna umhverfis upphafspunkt" -#: ../src/ui/tools/rect-tool.cpp:436 +#: ../src/ui/tools/rect-tool.cpp:427 #, c-format msgid "" "Rectangle: %s × %s (constrained to golden ratio 1.618 : 1); with " @@ -23816,7 +24391,7 @@ msgstr "" "Ferhyrningur: %s  %s (takmarkaður að gullinsniðinu 1.618 : 1); " "með Shift til að teikna umhverfis upphafspunkt" -#: ../src/ui/tools/rect-tool.cpp:438 +#: ../src/ui/tools/rect-tool.cpp:429 #, c-format msgid "" "Rectangle: %s × %s (constrained to golden ratio 1 : 1.618); with " @@ -23825,7 +24400,7 @@ msgstr "" "Ferhyrningur: %s × %s (takmarkaður að gullinsniðinu 1 : 1.618); " "með Shift til að teikna umhverfis upphafspunkt" -#: ../src/ui/tools/rect-tool.cpp:442 +#: ../src/ui/tools/rect-tool.cpp:433 #, c-format msgid "" "Rectangle: %s × %s; with Ctrl to make square or integer-" @@ -23835,13 +24410,15 @@ msgstr "" "heiltölu-hlutfalls rétthyrning; með Shift til að teikna umhverfis " "upphafspunkt" -#: ../src/ui/tools/rect-tool.cpp:465 +#: ../src/ui/tools/rect-tool.cpp:456 msgid "Create rectangle" msgstr "Búa til rétthyrning" #: ../src/ui/tools/select-tool.cpp:145 -msgid "Click selection to toggle scale/rotation handles" -msgstr "Smelltu á valið til að víxla á milli kvörðunar-/snúnings-haldfanga" +msgid "Click selection to toggle scale/rotation handles (or Shift+s)" +msgstr "" +"Smelltu á valið til að víxla á milli kvörðunar-/snúnings-haldfanga (eða " +"Shift+s)" #: ../src/ui/tools/select-tool.cpp:146 msgid "" @@ -23859,33 +24436,33 @@ msgstr "Hætt við færslu." msgid "Selection canceled." msgstr "Hætt við val." -#: ../src/ui/tools/select-tool.cpp:635 +#: ../src/ui/tools/select-tool.cpp:637 msgid "" "Draw over objects to select them; release Alt to switch to " "rubberband selection" msgstr "" -#: ../src/ui/tools/select-tool.cpp:637 +#: ../src/ui/tools/select-tool.cpp:639 msgid "" "Drag around objects to select them; press Alt to switch to " "touch selection" msgstr "" -#: ../src/ui/tools/select-tool.cpp:878 +#: ../src/ui/tools/select-tool.cpp:880 msgid "Ctrl: click to select in groups; drag to move hor/vert" msgstr "" -#: ../src/ui/tools/select-tool.cpp:879 +#: ../src/ui/tools/select-tool.cpp:881 msgid "Shift: click to toggle select; drag for rubberband selection" msgstr "" -#: ../src/ui/tools/select-tool.cpp:880 +#: ../src/ui/tools/select-tool.cpp:882 msgid "" "Alt: click to select under; scroll mouse-wheel to cycle-select; drag " "to move selected or select by touch" msgstr "" -#: ../src/ui/tools/select-tool.cpp:1058 +#: ../src/ui/tools/select-tool.cpp:1060 msgid "Selected object is not a group. Cannot enter." msgstr "Valinn hlutur er ekki hópur. Get ekki opnað." @@ -23897,14 +24474,14 @@ msgstr "Ctrl: þrepa horn" msgid "Alt: lock spiral radius" msgstr "Alt: læsa radíus spírals" -#: ../src/ui/tools/spiral-tool.cpp:385 +#: ../src/ui/tools/spiral-tool.cpp:377 #, c-format msgid "" "Spiral: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" "Spírall: radíus %s, horn %5g°; með Ctrl til að þrepa horn" -#: ../src/ui/tools/spiral-tool.cpp:406 +#: ../src/ui/tools/spiral-tool.cpp:398 msgid "Create spiral" msgstr "Búa til spíral" @@ -23966,7 +24543,7 @@ msgstr "Sprauta á einum ferli" msgid "Ctrl: snap angle; keep rays radial" msgstr "Ctrl: þrepa horn, heldur geislum út í radíus" -#: ../src/ui/tools/star-tool.cpp:404 +#: ../src/ui/tools/star-tool.cpp:395 #, c-format msgid "" "Polygon: radius %s, angle %5g°; with Ctrl to snap angle" @@ -23974,13 +24551,13 @@ msgstr "" "Marghyrningur: radíus %s, horn %5g°; með Ctrl til að " "þrepa horn" -#: ../src/ui/tools/star-tool.cpp:405 +#: ../src/ui/tools/star-tool.cpp:396 #, c-format msgid "Star: radius %s, angle %5g°; with Ctrl to snap angle" msgstr "" "Stjarna: radíus %s, horn %5g°; með Ctrl til að þrepa horn" -#: ../src/ui/tools/star-tool.cpp:433 +#: ../src/ui/tools/star-tool.cpp:424 msgid "Create star" msgstr "Búa til stjörnu" @@ -24014,28 +24591,28 @@ msgstr "Setja inn Unicode-tákn" msgid "Unicode (Enter to finish): %s: %s" msgstr "Unicode (Enter til að ljúka): %s: %s" -#: ../src/ui/tools/text-tool.cpp:499 ../src/ui/tools/text-tool.cpp:804 +#: ../src/ui/tools/text-tool.cpp:499 ../src/ui/tools/text-tool.cpp:802 msgid "Unicode (Enter to finish): " msgstr "Unicode (Enter til að ljúka): " -#: ../src/ui/tools/text-tool.cpp:582 +#: ../src/ui/tools/text-tool.cpp:580 #, c-format msgid "Flowed text frame: %s × %s" msgstr "Rammi með flæðitexta: %s × %s" -#: ../src/ui/tools/text-tool.cpp:640 +#: ../src/ui/tools/text-tool.cpp:638 msgid "Type text; Enter to start new line." msgstr "Skrifaðu texta; Enter til að byrja nýja línu." -#: ../src/ui/tools/text-tool.cpp:651 +#: ../src/ui/tools/text-tool.cpp:649 msgid "Flowed text is created." msgstr "Bjó til flæðitexta." -#: ../src/ui/tools/text-tool.cpp:652 +#: ../src/ui/tools/text-tool.cpp:650 msgid "Create flowed text" msgstr "Búa til flæðitexta" -#: ../src/ui/tools/text-tool.cpp:654 +#: ../src/ui/tools/text-tool.cpp:652 msgid "" "The frame is too small for the current font size. Flowed text not " "created." @@ -24043,75 +24620,75 @@ msgstr "" "Ramminn er of lítill miðað við þessa stærð leturs. Flæðitexti er ekki " "útbúinn." -#: ../src/ui/tools/text-tool.cpp:790 +#: ../src/ui/tools/text-tool.cpp:788 msgid "No-break space" msgstr "Órjúfanlegt bil" -#: ../src/ui/tools/text-tool.cpp:791 +#: ../src/ui/tools/text-tool.cpp:789 msgid "Insert no-break space" msgstr "Setja inn órjúfanlegt bil" -#: ../src/ui/tools/text-tool.cpp:827 +#: ../src/ui/tools/text-tool.cpp:825 msgid "Make bold" msgstr "Gera feitletrað" -#: ../src/ui/tools/text-tool.cpp:844 +#: ../src/ui/tools/text-tool.cpp:842 msgid "Make italic" msgstr "Gera skáletrað" -#: ../src/ui/tools/text-tool.cpp:882 +#: ../src/ui/tools/text-tool.cpp:880 msgid "New line" msgstr "Ný lína" -#: ../src/ui/tools/text-tool.cpp:923 +#: ../src/ui/tools/text-tool.cpp:921 msgid "Backspace" msgstr "Baklykill (backspace)" -#: ../src/ui/tools/text-tool.cpp:977 +#: ../src/ui/tools/text-tool.cpp:975 msgid "Kern to the left" msgstr "Hnikun til vinstri" -#: ../src/ui/tools/text-tool.cpp:1001 +#: ../src/ui/tools/text-tool.cpp:999 msgid "Kern to the right" msgstr "Hnikun til hægri" -#: ../src/ui/tools/text-tool.cpp:1025 +#: ../src/ui/tools/text-tool.cpp:1023 msgid "Kern up" msgstr "Hnikun upp" -#: ../src/ui/tools/text-tool.cpp:1049 +#: ../src/ui/tools/text-tool.cpp:1047 msgid "Kern down" msgstr "Hnikun niður" -#: ../src/ui/tools/text-tool.cpp:1124 +#: ../src/ui/tools/text-tool.cpp:1122 msgid "Rotate counterclockwise" msgstr "Snúa rangsælis" -#: ../src/ui/tools/text-tool.cpp:1144 +#: ../src/ui/tools/text-tool.cpp:1142 msgid "Rotate clockwise" msgstr "Snúa réttsælis" -#: ../src/ui/tools/text-tool.cpp:1160 +#: ../src/ui/tools/text-tool.cpp:1158 msgid "Contract line spacing" msgstr "Minnka línubil" -#: ../src/ui/tools/text-tool.cpp:1166 +#: ../src/ui/tools/text-tool.cpp:1164 msgid "Contract letter spacing" msgstr "Minnka stafabil" -#: ../src/ui/tools/text-tool.cpp:1183 +#: ../src/ui/tools/text-tool.cpp:1181 msgid "Expand line spacing" msgstr "Auka línubil" -#: ../src/ui/tools/text-tool.cpp:1189 +#: ../src/ui/tools/text-tool.cpp:1187 msgid "Expand letter spacing" msgstr "Auka stafabil" -#: ../src/ui/tools/text-tool.cpp:1319 +#: ../src/ui/tools/text-tool.cpp:1317 msgid "Paste text" msgstr "Líma texta" -#: ../src/ui/tools/text-tool.cpp:1569 +#: ../src/ui/tools/text-tool.cpp:1619 #, c-format msgid "" "Type or edit flowed text (%d character%s); Enter to start new " @@ -24126,7 +24703,7 @@ msgstr[1] "" "Skrifaðu eða breyttu flæðitexta (%d stafir%s); Enter til að byrja " "nýja málsgrein." -#: ../src/ui/tools/text-tool.cpp:1571 +#: ../src/ui/tools/text-tool.cpp:1621 #, c-format msgid "Type or edit text (%d character%s); Enter to start new line." msgid_plural "" @@ -24138,11 +24715,11 @@ msgstr[1] "" "Skrifaðu eða breyttu texta (%d stafir%s); Enter til að byrja nýja " "málsgrein." -#: ../src/ui/tools/text-tool.cpp:1681 +#: ../src/ui/tools/text-tool.cpp:1731 msgid "Type text" msgstr "Sláðu inn texta" -#: ../src/ui/tools/tool-base.cpp:679 +#: ../src/ui/tools/tool-base.cpp:713 msgid "Space+mouse move to pan canvas" msgstr "Bilslá+bendilhreyfing til að hliðra myndfleti" @@ -24286,120 +24863,120 @@ msgstr "Aflögun afskerpingar" msgid "Hexadecimal RGBA value of the color" msgstr "Hexadesímalt RGBA litagildi" -#: ../src/ui/widget/color-icc-selector.cpp:163 -#: ../src/ui/widget/color-scales.cpp:354 +#: ../src/ui/widget/color-icc-selector.cpp:154 +#: ../src/ui/widget/color-scales.cpp:355 msgid "_R:" msgstr "_R:" #. TYPE_RGB_16 -#: ../src/ui/widget/color-icc-selector.cpp:164 -#: ../src/ui/widget/color-scales.cpp:357 +#: ../src/ui/widget/color-icc-selector.cpp:155 +#: ../src/ui/widget/color-scales.cpp:358 msgid "_G:" msgstr "_G:" -#: ../src/ui/widget/color-icc-selector.cpp:165 -#: ../src/ui/widget/color-scales.cpp:360 +#: ../src/ui/widget/color-icc-selector.cpp:156 +#: ../src/ui/widget/color-scales.cpp:361 msgid "_B:" msgstr "_B:" -#: ../src/ui/widget/color-icc-selector.cpp:167 +#: ../src/ui/widget/color-icc-selector.cpp:158 #: ../share/extensions/nicechart.inx.h:35 msgid "Gray" msgstr "Grátt" #. TYPE_GRAY_16 -#: ../src/ui/widget/color-icc-selector.cpp:169 -#: ../src/ui/widget/color-icc-selector.cpp:173 -#: ../src/ui/widget/color-scales.cpp:380 +#: ../src/ui/widget/color-icc-selector.cpp:160 +#: ../src/ui/widget/color-icc-selector.cpp:164 +#: ../src/ui/widget/color-scales.cpp:381 msgid "_H:" msgstr "_H:" #. TYPE_HSV_16 -#: ../src/ui/widget/color-icc-selector.cpp:170 -#: ../src/ui/widget/color-icc-selector.cpp:175 -#: ../src/ui/widget/color-scales.cpp:383 +#: ../src/ui/widget/color-icc-selector.cpp:161 +#: ../src/ui/widget/color-icc-selector.cpp:166 +#: ../src/ui/widget/color-scales.cpp:384 msgid "_S:" msgstr "_S:" #. TYPE_HLS_16 -#: ../src/ui/widget/color-icc-selector.cpp:174 -#: ../src/ui/widget/color-scales.cpp:386 +#: ../src/ui/widget/color-icc-selector.cpp:165 +#: ../src/ui/widget/color-scales.cpp:387 msgid "_L:" msgstr "_L:" -#: ../src/ui/widget/color-icc-selector.cpp:177 -#: ../src/ui/widget/color-icc-selector.cpp:182 -#: ../src/ui/widget/color-scales.cpp:408 +#: ../src/ui/widget/color-icc-selector.cpp:168 +#: ../src/ui/widget/color-icc-selector.cpp:173 +#: ../src/ui/widget/color-scales.cpp:409 msgid "_C:" msgstr "_C:" #. TYPE_CMYK_16 #. TYPE_CMY_16 -#: ../src/ui/widget/color-icc-selector.cpp:178 -#: ../src/ui/widget/color-icc-selector.cpp:183 -#: ../src/ui/widget/color-scales.cpp:411 +#: ../src/ui/widget/color-icc-selector.cpp:169 +#: ../src/ui/widget/color-icc-selector.cpp:174 +#: ../src/ui/widget/color-scales.cpp:412 msgid "_M:" msgstr "_M:" -#: ../src/ui/widget/color-icc-selector.cpp:179 -#: ../src/ui/widget/color-icc-selector.cpp:184 -#: ../src/ui/widget/color-scales.cpp:414 +#: ../src/ui/widget/color-icc-selector.cpp:170 +#: ../src/ui/widget/color-icc-selector.cpp:175 +#: ../src/ui/widget/color-scales.cpp:415 msgid "_Y:" msgstr "_Y:" -#: ../src/ui/widget/color-icc-selector.cpp:180 -#: ../src/ui/widget/color-scales.cpp:417 +#: ../src/ui/widget/color-icc-selector.cpp:171 +#: ../src/ui/widget/color-scales.cpp:418 msgid "_K:" msgstr "_K:" -#: ../src/ui/widget/color-icc-selector.cpp:297 +#: ../src/ui/widget/color-icc-selector.cpp:288 msgid "CMS" msgstr "CMS" -#: ../src/ui/widget/color-icc-selector.cpp:362 +#: ../src/ui/widget/color-icc-selector.cpp:353 msgid "Fix" msgstr "Laga" -#: ../src/ui/widget/color-icc-selector.cpp:366 +#: ../src/ui/widget/color-icc-selector.cpp:357 msgid "Fix RGB fallback to match icc-color() value." msgstr "Laga varaleið samsvörunar RGB við ICC-litgildi [icc-color()]." #. Label -#: ../src/ui/widget/color-icc-selector.cpp:478 -#: ../src/ui/widget/color-scales.cpp:363 ../src/ui/widget/color-scales.cpp:389 -#: ../src/ui/widget/color-scales.cpp:420 +#: ../src/ui/widget/color-icc-selector.cpp:469 +#: ../src/ui/widget/color-scales.cpp:364 ../src/ui/widget/color-scales.cpp:390 +#: ../src/ui/widget/color-scales.cpp:421 #: ../src/ui/widget/color-wheel-selector.cpp:64 msgid "_A:" msgstr "_A:" -#: ../src/ui/widget/color-icc-selector.cpp:490 -#: ../src/ui/widget/color-icc-selector.cpp:501 -#: ../src/ui/widget/color-scales.cpp:364 ../src/ui/widget/color-scales.cpp:365 -#: ../src/ui/widget/color-scales.cpp:390 ../src/ui/widget/color-scales.cpp:391 -#: ../src/ui/widget/color-scales.cpp:421 ../src/ui/widget/color-scales.cpp:422 -#: ../src/ui/widget/color-wheel-selector.cpp:86 -#: ../src/ui/widget/color-wheel-selector.cpp:108 +#: ../src/ui/widget/color-icc-selector.cpp:481 +#: ../src/ui/widget/color-icc-selector.cpp:492 +#: ../src/ui/widget/color-scales.cpp:365 ../src/ui/widget/color-scales.cpp:366 +#: ../src/ui/widget/color-scales.cpp:391 ../src/ui/widget/color-scales.cpp:392 +#: ../src/ui/widget/color-scales.cpp:422 ../src/ui/widget/color-scales.cpp:423 +#: ../src/ui/widget/color-wheel-selector.cpp:87 +#: ../src/ui/widget/color-wheel-selector.cpp:109 msgid "Alpha (opacity)" msgstr "Alfa (ógegnsæi)" -#: ../src/ui/widget/color-notebook.cpp:156 +#: ../src/ui/widget/color-notebook.cpp:155 msgid "Color Managed" msgstr "Litastýrt" -#: ../src/ui/widget/color-notebook.cpp:163 +#: ../src/ui/widget/color-notebook.cpp:162 msgid "Out of gamut!" msgstr "Utan litrófs!" -#: ../src/ui/widget/color-notebook.cpp:170 +#: ../src/ui/widget/color-notebook.cpp:169 msgid "Too much ink!" msgstr "Of mikið blek!" -#: ../src/ui/widget/color-notebook.cpp:181 ../src/verbs.cpp:2818 +#: ../src/ui/widget/color-notebook.cpp:180 ../src/verbs.cpp:2927 msgid "Pick colors from image" msgstr "Sækja liti í mynddíla" #. Create RGBA entry and color preview -#: ../src/ui/widget/color-notebook.cpp:186 +#: ../src/ui/widget/color-notebook.cpp:185 msgid "RGBA_:" msgstr "RGBA_:" @@ -24599,11 +25176,11 @@ msgstr "Venjuleg staðsetning." #: ../src/ui/widget/font-variants.cpp:105 msgid "Subscript. OpenType table: 'subs'" -msgstr "" +msgstr "Lágletur. OpenType tafla: 'subs'" #: ../src/ui/widget/font-variants.cpp:106 msgid "Superscript. OpenType table: 'sups'" -msgstr "" +msgstr "Háletur. OpenType tafla: 'sups'" #. Caps ---------------------------------- #. Add tooltips @@ -24693,19 +25270,19 @@ msgstr "Skástrikuð núll. OpenType tafla: 'zero'" msgid "Feature settings in CSS form. No sanity checking is performed." msgstr "" -#: ../src/ui/widget/layer-selector.cpp:118 +#: ../src/ui/widget/layer-selector.cpp:119 msgid "Toggle current layer visibility" msgstr "Víxla sýnileika þessa lags" -#: ../src/ui/widget/layer-selector.cpp:138 +#: ../src/ui/widget/layer-selector.cpp:139 msgid "Lock or unlock current layer" msgstr "Aflæsa eða læsa núverandi lagi" -#: ../src/ui/widget/layer-selector.cpp:141 +#: ../src/ui/widget/layer-selector.cpp:142 msgid "Current layer" msgstr "Núverandi lag" -#: ../src/ui/widget/layer-selector.cpp:572 +#: ../src/ui/widget/layer-selector.cpp:573 msgid "(root)" msgstr "(rót/root)" @@ -24721,19 +25298,19 @@ msgstr "Annað" msgid "Document license updated" msgstr "Notkunarleyfi skjals uppfært" -#: ../src/ui/widget/object-composite-settings.cpp:40 -#: ../src/ui/widget/selected-style.cpp:1090 -#: ../src/ui/widget/selected-style.cpp:1091 +#: ../src/ui/widget/object-composite-settings.cpp:39 +#: ../src/ui/widget/selected-style.cpp:1057 +#: ../src/ui/widget/selected-style.cpp:1058 msgid "Opacity (%)" msgstr "Ógegnsæi (%)" -#: ../src/ui/widget/object-composite-settings.cpp:153 +#: ../src/ui/widget/object-composite-settings.cpp:152 msgid "Change blur" msgstr "Breyta móðun" -#: ../src/ui/widget/object-composite-settings.cpp:193 -#: ../src/ui/widget/selected-style.cpp:914 -#: ../src/ui/widget/selected-style.cpp:1208 +#: ../src/ui/widget/object-composite-settings.cpp:192 +#: ../src/ui/widget/selected-style.cpp:881 +#: ../src/ui/widget/selected-style.cpp:1175 msgid "Change opacity" msgstr "Breyta ógegnsæi" @@ -24794,8 +25371,14 @@ msgid "Scale _y:" msgstr "_Y-kvarði:" #: ../src/ui/widget/page-sizer.cpp:228 -msgid "Scale Y" -msgstr "Y-kvarði" +msgid "" +"While SVG allows non-uniform scaling it is recommended to use only uniform " +"scaling in Inkscape. To set a non-uniform scaling, set the 'viewBox' " +"directly." +msgstr "" +"Þrátt fyrir að SVG leyfi óreglulega kvörðun er mælt með því að nota aðeins " +"reglulega kvörðun í Inkscape. Til að stilla óreglulega kvörðun, stilltu " +"'viewBox' sýnikassa beint." #: ../src/ui/widget/page-sizer.cpp:306 msgid "Orientation:" @@ -24818,146 +25401,140 @@ msgstr "Sérsniðin stærð" msgid "Resi_ze page to content..." msgstr "Aðlaga stærð að _innihaldi..." -#: ../src/ui/widget/page-sizer.cpp:409 +#: ../src/ui/widget/page-sizer.cpp:403 msgid "_Resize page to drawing or selection (Ctrl+Shift+R)" msgstr "_Laga síðu að teikningu eða vali (Ctrl+Shift+R)" -#: ../src/ui/widget/page-sizer.cpp:410 +#: ../src/ui/widget/page-sizer.cpp:404 msgid "" "Resize the page to fit the current selection, or the entire drawing if there " "is no selection" msgstr "" "Aðlaga síðuna að því sem nú er valið eða að teikningu ef ekkert er valið" -#: ../src/ui/widget/page-sizer.cpp:430 -msgid "" -"While SVG allows non-uniform scaling it is recommended to use only uniform " -"scaling in Inkscape. To set a non-uniform scaling, set the 'viewBox' " -"directly." -msgstr "" -"Þrátt fyrir að SVG leyfi óreglulega kvörðun er mælt með því að nota aðeins " -"reglulega kvörðun í Inkscape. Til að stilla óreglulega kvörðun, stilltu " -"'viewBox' sýnikassa beint." - -#: ../src/ui/widget/page-sizer.cpp:434 +#: ../src/ui/widget/page-sizer.cpp:424 msgid "_Viewbox..." msgstr "Sýni_kassi..." -#: ../src/ui/widget/page-sizer.cpp:530 +#: ../src/ui/widget/page-sizer.cpp:520 msgid "Set page size" msgstr "Stilla síðustærð" -#: ../src/ui/widget/page-sizer.cpp:776 +#: ../src/ui/widget/page-sizer.cpp:766 msgid "User units per " msgstr "Notandaeiningar á " -#: ../src/ui/widget/page-sizer.cpp:872 +#: ../src/ui/widget/page-sizer.cpp:862 msgid "Set page scale" msgstr "Stilla kvarða síðu" -#: ../src/ui/widget/panel.cpp:112 +#: ../src/ui/widget/page-sizer.cpp:888 +msgid "Set 'viewBox'" +msgstr "Setja 'viewBox' sýnikassa" + +#: ../src/ui/widget/panel.cpp:111 msgid "List" msgstr "Listi" -#: ../src/ui/widget/panel.cpp:135 +#: ../src/ui/widget/panel.cpp:134 msgctxt "Swatches" msgid "Size" msgstr "Stærð" -#: ../src/ui/widget/panel.cpp:139 +#: ../src/ui/widget/panel.cpp:138 msgctxt "Swatches height" msgid "Tiny" msgstr "Örsmátt" -#: ../src/ui/widget/panel.cpp:140 +#: ../src/ui/widget/panel.cpp:139 msgctxt "Swatches height" msgid "Small" msgstr "Lítið" -#: ../src/ui/widget/panel.cpp:141 +#: ../src/ui/widget/panel.cpp:140 msgctxt "Swatches height" msgid "Medium" msgstr "Miðlungs" -#: ../src/ui/widget/panel.cpp:142 +#: ../src/ui/widget/panel.cpp:141 msgctxt "Swatches height" msgid "Large" msgstr "Stórt" -#: ../src/ui/widget/panel.cpp:143 +#: ../src/ui/widget/panel.cpp:142 msgctxt "Swatches height" msgid "Huge" msgstr "Flennistórt" -#: ../src/ui/widget/panel.cpp:165 +#: ../src/ui/widget/panel.cpp:164 msgctxt "Swatches" msgid "Width" msgstr "Breidd" -#: ../src/ui/widget/panel.cpp:169 +#: ../src/ui/widget/panel.cpp:168 msgctxt "Swatches width" msgid "Narrower" msgstr "Grennra" -#: ../src/ui/widget/panel.cpp:170 +#: ../src/ui/widget/panel.cpp:169 msgctxt "Swatches width" msgid "Narrow" msgstr "Grannt" -#: ../src/ui/widget/panel.cpp:171 +#: ../src/ui/widget/panel.cpp:170 msgctxt "Swatches width" msgid "Medium" msgstr "Miðlungs" -#: ../src/ui/widget/panel.cpp:172 +#: ../src/ui/widget/panel.cpp:171 msgctxt "Swatches width" msgid "Wide" msgstr "Breitt" -#: ../src/ui/widget/panel.cpp:173 +#: ../src/ui/widget/panel.cpp:172 msgctxt "Swatches width" msgid "Wider" msgstr "Breiðara" -#: ../src/ui/widget/panel.cpp:203 +#: ../src/ui/widget/panel.cpp:202 msgctxt "Swatches" msgid "Border" msgstr "Jaðar" -#: ../src/ui/widget/panel.cpp:207 +#: ../src/ui/widget/panel.cpp:206 msgctxt "Swatches border" msgid "None" msgstr "Enginn" -#: ../src/ui/widget/panel.cpp:208 +#: ../src/ui/widget/panel.cpp:207 msgctxt "Swatches border" msgid "Solid" msgstr "Gegnheill" -#: ../src/ui/widget/panel.cpp:209 +#: ../src/ui/widget/panel.cpp:208 msgctxt "Swatches border" msgid "Wide" msgstr "Breitt" #. TRANSLATORS: "Wrap" indicates how colour swatches are displayed -#: ../src/ui/widget/panel.cpp:240 +#: ../src/ui/widget/panel.cpp:239 msgctxt "Swatches" msgid "Wrap" msgstr "Pökkun" -#: ../src/ui/widget/preferences-widget.cpp:715 +#: ../src/ui/widget/preferences-widget.cpp:709 msgid "_Browse..." msgstr "_Finna..." -#: ../src/ui/widget/preferences-widget.cpp:801 +#: ../src/ui/widget/preferences-widget.cpp:795 msgid "Select a bitmap editor" msgstr "Veldu forrit til vinnslu bitamynda" -#: ../src/ui/widget/random.cpp:80 +#: ../src/ui/widget/random.cpp:81 msgid "" "Reseed the random number generator; this creates a different sequence of " "random numbers." -msgstr "" +msgstr "Endursá í slembitölugjafann; þetta býr til öðruvísi runu slembitalna." #: ../src/ui/widget/rendering-options.cpp:33 msgid "Backend" @@ -25008,352 +25585,347 @@ msgstr "Fylling:" msgid "O:" msgstr "O:" -#: ../src/ui/widget/selected-style.cpp:161 +#: ../src/ui/widget/selected-style.cpp:183 msgid "N/A" msgstr "Ekki tiltækt" -#: ../src/ui/widget/selected-style.cpp:164 -#: ../src/ui/widget/selected-style.cpp:1083 -#: ../src/ui/widget/selected-style.cpp:1084 +#: ../src/ui/widget/selected-style.cpp:186 +#: ../src/ui/widget/selected-style.cpp:1050 +#: ../src/ui/widget/selected-style.cpp:1051 #: ../src/widgets/gradient-toolbar.cpp:163 msgid "Nothing selected" msgstr "Ekkert valið" -#: ../src/ui/widget/selected-style.cpp:167 +#: ../src/ui/widget/selected-style.cpp:189 msgctxt "Fill" msgid "None" msgstr "Ekkert" -#: ../src/ui/widget/selected-style.cpp:169 +#: ../src/ui/widget/selected-style.cpp:191 msgctxt "Stroke" msgid "None" msgstr "Ekkert" -#: ../src/ui/widget/selected-style.cpp:173 -#: ../src/ui/widget/style-swatch.cpp:296 +#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/style-swatch.cpp:316 msgctxt "Fill and stroke" msgid "No fill" msgstr "Engin fylling" -#: ../src/ui/widget/selected-style.cpp:173 -#: ../src/ui/widget/style-swatch.cpp:296 +#: ../src/ui/widget/selected-style.cpp:195 +#: ../src/ui/widget/style-swatch.cpp:316 msgctxt "Fill and stroke" msgid "No stroke" msgstr "Engin útlína" -#: ../src/ui/widget/selected-style.cpp:175 -#: ../src/ui/widget/style-swatch.cpp:275 ../src/widgets/paint-selector.cpp:220 +#: ../src/ui/widget/selected-style.cpp:197 +#: ../src/ui/widget/style-swatch.cpp:295 ../src/widgets/paint-selector.cpp:219 msgid "Pattern" msgstr "Mynstur" -#: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:277 +#: ../src/ui/widget/selected-style.cpp:200 +#: ../src/ui/widget/style-swatch.cpp:297 msgid "Pattern fill" msgstr "Mynsturfylla" -#: ../src/ui/widget/selected-style.cpp:178 -#: ../src/ui/widget/style-swatch.cpp:277 +#: ../src/ui/widget/selected-style.cpp:200 +#: ../src/ui/widget/style-swatch.cpp:297 msgid "Pattern stroke" msgstr "Mynstur á útlínu" -#: ../src/ui/widget/selected-style.cpp:180 +#: ../src/ui/widget/selected-style.cpp:202 msgid "L" msgstr "L" -#: ../src/ui/widget/selected-style.cpp:183 -#: ../src/ui/widget/style-swatch.cpp:269 +#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/style-swatch.cpp:289 msgid "Linear gradient fill" msgstr "Línuleg litstigulsfylling" -#: ../src/ui/widget/selected-style.cpp:183 -#: ../src/ui/widget/style-swatch.cpp:269 +#: ../src/ui/widget/selected-style.cpp:205 +#: ../src/ui/widget/style-swatch.cpp:289 msgid "Linear gradient stroke" msgstr "Línuleg litstigulsútlína" -#: ../src/ui/widget/selected-style.cpp:190 +#: ../src/ui/widget/selected-style.cpp:212 msgid "R" msgstr "R" -#: ../src/ui/widget/selected-style.cpp:193 -#: ../src/ui/widget/style-swatch.cpp:273 +#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/style-swatch.cpp:293 msgid "Radial gradient fill" msgstr "Hringlaga litstigulsfylling" -#: ../src/ui/widget/selected-style.cpp:193 -#: ../src/ui/widget/style-swatch.cpp:273 +#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/style-swatch.cpp:293 msgid "Radial gradient stroke" msgstr "Hringlaga litstigulsstroka" -#: ../src/ui/widget/selected-style.cpp:201 +#: ../src/ui/widget/selected-style.cpp:223 msgid "M" msgstr "M" -#: ../src/ui/widget/selected-style.cpp:204 +#: ../src/ui/widget/selected-style.cpp:226 msgid "Mesh gradient fill" msgstr "Litstigulsfylling möskva" -#: ../src/ui/widget/selected-style.cpp:204 +#: ../src/ui/widget/selected-style.cpp:226 msgid "Mesh gradient stroke" msgstr "Litstigulsútlína möskva" -#: ../src/ui/widget/selected-style.cpp:212 +#: ../src/ui/widget/selected-style.cpp:234 msgid "Different" msgstr "Mismunandi" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:237 msgid "Different fills" msgstr "Mismunandi fyllingar" -#: ../src/ui/widget/selected-style.cpp:215 +#: ../src/ui/widget/selected-style.cpp:237 msgid "Different strokes" msgstr "Mismunandi útlínur" -#: ../src/ui/widget/selected-style.cpp:217 -#: ../src/ui/widget/style-swatch.cpp:299 +#: ../src/ui/widget/selected-style.cpp:239 +#: ../src/ui/widget/style-swatch.cpp:319 msgid "Unset" msgstr "Óstillt" #. TRANSLATORS COMMENT: unset is a verb here -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:540 -#: ../src/ui/widget/style-swatch.cpp:301 ../src/widgets/fill-style.cpp:811 +#: ../src/ui/widget/selected-style.cpp:242 +#: ../src/ui/widget/selected-style.cpp:300 +#: ../src/ui/widget/selected-style.cpp:562 +#: ../src/ui/widget/style-swatch.cpp:321 ../src/widgets/fill-style.cpp:811 msgid "Unset fill" msgstr "Afstilla fyllingu" -#: ../src/ui/widget/selected-style.cpp:220 -#: ../src/ui/widget/selected-style.cpp:278 -#: ../src/ui/widget/selected-style.cpp:556 -#: ../src/ui/widget/style-swatch.cpp:301 ../src/widgets/fill-style.cpp:811 +#: ../src/ui/widget/selected-style.cpp:242 +#: ../src/ui/widget/selected-style.cpp:300 +#: ../src/ui/widget/selected-style.cpp:578 +#: ../src/ui/widget/style-swatch.cpp:321 ../src/widgets/fill-style.cpp:811 msgid "Unset stroke" msgstr "Afstilla útlínu" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:245 msgid "Flat color fill" msgstr "Flöt litfylling" -#: ../src/ui/widget/selected-style.cpp:223 +#: ../src/ui/widget/selected-style.cpp:245 msgid "Flat color stroke" msgstr "Flatur útlínulitur" #. TRANSLATOR COMMENT: A means "Averaged" -#: ../src/ui/widget/selected-style.cpp:226 +#: ../src/ui/widget/selected-style.cpp:248 msgid "a" msgstr "a" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:251 msgid "Fill is averaged over selected objects" -msgstr "" +msgstr "Fylling er meðaltal valinna atriða" -#: ../src/ui/widget/selected-style.cpp:229 +#: ../src/ui/widget/selected-style.cpp:251 msgid "Stroke is averaged over selected objects" -msgstr "" +msgstr "Útlína er meðaltal valinna atriða" #. TRANSLATOR COMMENT: M means "Multiple" -#: ../src/ui/widget/selected-style.cpp:232 +#: ../src/ui/widget/selected-style.cpp:254 msgid "m" msgstr "m" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:257 msgid "Multiple selected objects have the same fill" msgstr "Margir af völdu hlutunum eru með sömu fyllingu" -#: ../src/ui/widget/selected-style.cpp:235 +#: ../src/ui/widget/selected-style.cpp:257 msgid "Multiple selected objects have the same stroke" msgstr "Margir af völdu hlutunum eru með sömu útlínu" -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:259 msgid "Edit fill..." msgstr "Breyta fyllingu..." -#: ../src/ui/widget/selected-style.cpp:237 +#: ../src/ui/widget/selected-style.cpp:259 msgid "Edit stroke..." msgstr "Breyta útlínu..." -#: ../src/ui/widget/selected-style.cpp:241 +#: ../src/ui/widget/selected-style.cpp:263 msgid "Last set color" msgstr "Síðast stillti litur" -#: ../src/ui/widget/selected-style.cpp:245 +#: ../src/ui/widget/selected-style.cpp:267 msgid "Last selected color" msgstr "Síðast valinn litur" -#: ../src/ui/widget/selected-style.cpp:261 +#: ../src/ui/widget/selected-style.cpp:283 msgid "Copy color" msgstr "Afrita lit" -#: ../src/ui/widget/selected-style.cpp:265 +#: ../src/ui/widget/selected-style.cpp:287 msgid "Paste color" msgstr "Líma lit" -#: ../src/ui/widget/selected-style.cpp:269 -#: ../src/ui/widget/selected-style.cpp:839 +#: ../src/ui/widget/selected-style.cpp:291 ../src/verbs.cpp:2688 msgid "Swap fill and stroke" msgstr "Víxla fyllingu og útlínu" -#: ../src/ui/widget/selected-style.cpp:273 -#: ../src/ui/widget/selected-style.cpp:565 -#: ../src/ui/widget/selected-style.cpp:574 +#: ../src/ui/widget/selected-style.cpp:295 +#: ../src/ui/widget/selected-style.cpp:587 +#: ../src/ui/widget/selected-style.cpp:596 msgid "Make fill opaque" msgstr "Gera lit ógegnsæjan" -#: ../src/ui/widget/selected-style.cpp:273 +#: ../src/ui/widget/selected-style.cpp:295 msgid "Make stroke opaque" msgstr "Gera útlínu ógegnsæja" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:522 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:304 +#: ../src/ui/widget/selected-style.cpp:544 ../src/widgets/fill-style.cpp:510 msgid "Remove fill" msgstr "Fjarlægja fyllingu" -#: ../src/ui/widget/selected-style.cpp:282 -#: ../src/ui/widget/selected-style.cpp:531 ../src/widgets/fill-style.cpp:510 +#: ../src/ui/widget/selected-style.cpp:304 +#: ../src/ui/widget/selected-style.cpp:553 ../src/widgets/fill-style.cpp:510 msgid "Remove stroke" msgstr "Fjarlægja útlínu" -#: ../src/ui/widget/selected-style.cpp:586 +#: ../src/ui/widget/selected-style.cpp:608 msgid "Apply last set color to fill" msgstr "Beita síðasta stillta lit á fyllingu" -#: ../src/ui/widget/selected-style.cpp:598 +#: ../src/ui/widget/selected-style.cpp:620 msgid "Apply last set color to stroke" msgstr "Beita síðasta stillta lit á útlínu" -#: ../src/ui/widget/selected-style.cpp:609 +#: ../src/ui/widget/selected-style.cpp:631 msgid "Apply last selected color to fill" msgstr "Beita síðasta valda lit á fyllingu" -#: ../src/ui/widget/selected-style.cpp:620 +#: ../src/ui/widget/selected-style.cpp:642 msgid "Apply last selected color to stroke" msgstr "Beita síðasta valda lit á útlínu" -#: ../src/ui/widget/selected-style.cpp:646 +#: ../src/ui/widget/selected-style.cpp:668 msgid "Invert fill" msgstr "Umhverfa fyllingu" -#: ../src/ui/widget/selected-style.cpp:670 +#: ../src/ui/widget/selected-style.cpp:692 msgid "Invert stroke" msgstr "Umhverfa útlínu" -#: ../src/ui/widget/selected-style.cpp:682 +#: ../src/ui/widget/selected-style.cpp:704 msgid "White fill" msgstr "Hvít fylling" -#: ../src/ui/widget/selected-style.cpp:694 +#: ../src/ui/widget/selected-style.cpp:716 msgid "White stroke" msgstr "Hvít útlína" -#: ../src/ui/widget/selected-style.cpp:706 +#: ../src/ui/widget/selected-style.cpp:728 msgid "Black fill" msgstr "Svört fylling" -#: ../src/ui/widget/selected-style.cpp:718 +#: ../src/ui/widget/selected-style.cpp:740 msgid "Black stroke" msgstr "Svört útlína" -#: ../src/ui/widget/selected-style.cpp:761 +#: ../src/ui/widget/selected-style.cpp:783 msgid "Paste fill" msgstr "Líma fyllingu" -#: ../src/ui/widget/selected-style.cpp:779 +#: ../src/ui/widget/selected-style.cpp:801 msgid "Paste stroke" msgstr "Líma útlínu" -#: ../src/ui/widget/selected-style.cpp:941 +#: ../src/ui/widget/selected-style.cpp:908 msgid "Change stroke width" msgstr "Breyta breidd útlínu" -#: ../src/ui/widget/selected-style.cpp:1044 +#: ../src/ui/widget/selected-style.cpp:1011 msgid ", drag to adjust" msgstr ", draga til að aðlaga" -#: ../src/ui/widget/selected-style.cpp:1125 +#: ../src/ui/widget/selected-style.cpp:1092 #, c-format msgid "Stroke width: %.5g%s%s" msgstr "Breidd útlínu: %.5g%s%s" -#: ../src/ui/widget/selected-style.cpp:1129 +#: ../src/ui/widget/selected-style.cpp:1096 msgid " (averaged)" msgstr " (meðalgildi)" -#: ../src/ui/widget/selected-style.cpp:1155 +#: ../src/ui/widget/selected-style.cpp:1122 msgid "0 (transparent)" msgstr "0 (gegnsætt)" -#: ../src/ui/widget/selected-style.cpp:1179 +#: ../src/ui/widget/selected-style.cpp:1146 msgid "100% (opaque)" msgstr "100% (ógegnsætt)" -#: ../src/ui/widget/selected-style.cpp:1345 +#: ../src/ui/widget/selected-style.cpp:1312 msgid "Adjust alpha" msgstr "Aðlaga alfa-gegnsæi" -#: ../src/ui/widget/selected-style.cpp:1347 +#: ../src/ui/widget/selected-style.cpp:1314 #, c-format msgid "" "Adjusting alpha: was %.3g, now %.3g (diff %.3g); with Ctrl to adjust lightness, with Shift to adjust saturation, without " "modifiers to adjust hue" msgstr "" -"Aðlaga gegnsæi: var %.3g, er núna %.3g (mismunur %.3g); með " -"Ctrl til að aðlaga ljósleika, með Shift til að aðlaga litmettun, án " -"breytilykla til að aðlaga litblæ" +"Aðlaga gegnsæi: var %.3g, er núna %.3g (mismunur %.3g); með " +"Ctrl til að aðlaga ljósleika, með Shift til að aðlaga " +"litmettun, án breytilykla til að aðlaga litblæ" -#: ../src/ui/widget/selected-style.cpp:1351 +#: ../src/ui/widget/selected-style.cpp:1318 msgid "Adjust saturation" msgstr "Aðlaga litmettun" -#: ../src/ui/widget/selected-style.cpp:1353 +#: ../src/ui/widget/selected-style.cpp:1320 #, c-format msgid "" "Adjusting saturation: was %.3g, now %.3g (diff %.3g); with " "Ctrl to adjust lightness, with Alt to adjust alpha, without " "modifiers to adjust hue" msgstr "" -"Aðlaga litmettun: var %.3g, er núna %.3g (mismunur %.3g); með <" -"b>Ctrl til að aðlaga ljósleika, með Alt til að aðlaga gegnsæi, án " -"breytilykla til að aðlaga litblæ" +"Aðlaga litmettun: var %.3g, er núna %.3g (mismunur %.3g); með " +"Ctrl til að aðlaga ljósleika, með Alt til að aðlaga gegnsæi, " +"án breytilykla til að aðlaga litblæ" -#: ../src/ui/widget/selected-style.cpp:1357 +#: ../src/ui/widget/selected-style.cpp:1324 msgid "Adjust lightness" msgstr "Aðlaga ljósleika" -#: ../src/ui/widget/selected-style.cpp:1359 +#: ../src/ui/widget/selected-style.cpp:1326 #, c-format msgid "" "Adjusting lightness: was %.3g, now %.3g (diff %.3g); with " "Shift to adjust saturation, with Alt to adjust alpha, without " "modifiers to adjust hue" msgstr "" -"Aðlaga ljósleika: var %.3g, er núna %.3g (mismunur %.3g); með <" -"b>Shift til að aðlaga litmettun, með Alt til að aðlaga gegnsæi, án " -"breytilykla til að aðlaga litblæ" +"Aðlaga ljósleika: var %.3g, er núna %.3g (mismunur %.3g); með " +"Shift til að aðlaga litmettun, með Alt til að aðlaga gegnsæi, " +"án breytilykla til að aðlaga litblæ" -#: ../src/ui/widget/selected-style.cpp:1363 +#: ../src/ui/widget/selected-style.cpp:1330 msgid "Adjust hue" msgstr "Aðlaga litblæ" -#: ../src/ui/widget/selected-style.cpp:1365 +#: ../src/ui/widget/selected-style.cpp:1332 #, c-format msgid "" "Adjusting hue: was %.3g, now %.3g (diff %.3g); with Shift to adjust saturation, with Alt to adjust alpha, with Ctrl " "to adjust lightness" msgstr "" -"Aðlaga litblæ: var %.3g, er núna %.3g (mismunur %.3g); með " -"Shift til að aðlaga litmettun, með Alt til að aðlaga gegnsæi, með " -"Ctrl til að aðlaga ljósleika" +"Aðlaga litblæ: var %.3g, er núna %.3g (mismunur %.3g); með " +"Shift til að aðlaga litmettun, með Alt til að aðlaga gegnsæi, " +"með Ctrl til að aðlaga ljósleika" -#: ../src/ui/widget/selected-style.cpp:1479 -#: ../src/ui/widget/selected-style.cpp:1493 +#: ../src/ui/widget/selected-style.cpp:1442 +#: ../src/ui/widget/selected-style.cpp:1456 msgid "Adjust stroke width" msgstr "Aðlaga breidd útlínu" -#: ../src/ui/widget/selected-style.cpp:1480 +#: ../src/ui/widget/selected-style.cpp:1443 #, c-format msgid "Adjusting stroke width: was %.3g, now %.3g (diff %.3g)" msgstr "" @@ -25365,64 +25937,66 @@ msgctxt "Sliders" msgid "Link" msgstr "Tengja" -#: ../src/ui/widget/style-swatch.cpp:267 +#: ../src/ui/widget/style-swatch.cpp:287 msgid "L Gradient" msgstr "V litstigull" -#: ../src/ui/widget/style-swatch.cpp:271 +#: ../src/ui/widget/style-swatch.cpp:291 msgid "R Gradient" msgstr "H litstigull" -#: ../src/ui/widget/style-swatch.cpp:287 +#: ../src/ui/widget/style-swatch.cpp:307 #, c-format msgid "Fill: %06x/%.3g" msgstr "Fylling: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:289 +#: ../src/ui/widget/style-swatch.cpp:309 #, c-format msgid "Stroke: %06x/%.3g" msgstr "Útlína: %06x/%.3g" -#: ../src/ui/widget/style-swatch.cpp:294 +#: ../src/ui/widget/style-swatch.cpp:314 msgctxt "Fill and stroke" msgid "None" msgstr "Ekkert" -#: ../src/ui/widget/style-swatch.cpp:321 +#: ../src/ui/widget/style-swatch.cpp:341 #, c-format msgid "Stroke width: %.5g%s" msgstr "Breidd útlínu: %.5g%s" -#: ../src/ui/widget/style-swatch.cpp:337 +#: ../src/ui/widget/style-swatch.cpp:357 #, c-format msgid "O: %2.0f" msgstr "O: %2.0f" -#: ../src/ui/widget/style-swatch.cpp:342 +#: ../src/ui/widget/style-swatch.cpp:362 #, c-format msgid "Opacity: %2.1f %%" msgstr "Ógegnsæi: %2.1f %%" -#: ../src/vanishing-point.cpp:131 +#: ../src/vanishing-point.cpp:126 msgid "Split vanishing points" msgstr "Kljúfa hvarfpunkta" -#: ../src/vanishing-point.cpp:176 +#: ../src/vanishing-point.cpp:173 msgid "Merge vanishing points" msgstr "Sameina hvarfpunkta" -#: ../src/vanishing-point.cpp:244 +#: ../src/vanishing-point.cpp:240 msgid "3D box: Move vanishing point" msgstr "Þrívíddarkassi: Færa hvarfpunkt" -#: ../src/vanishing-point.cpp:327 +#: ../src/vanishing-point.cpp:325 #, c-format msgid "Finite vanishing point shared by %d box" msgid_plural "" "Finite vanishing point shared by %d boxes; drag with Shift to separate selected box(es)" -msgstr[0] "" +msgstr[0] "Endanlegur hvarfpunktur deilt með %d kassanum" msgstr[1] "" +"Endanlegur hvarfpunktur deilt með %d kössunum; draga með " +"Shift til að aðskilja valda kassa" #. This won't make sense any more when infinite VPs are not shown on the canvas, #. but currently we update the status message anyway @@ -25432,10 +26006,12 @@ msgid "Infinite vanishing point shared by %d box" msgid_plural "" "Infinite vanishing point shared by %d boxes; drag with " "Shift to separate selected box(es)" -msgstr[0] "" +msgstr[0] "Óendanlegur hvarfpunktur deilt með %d kassanum" msgstr[1] "" +"Óendanlegur hvarfpunktur deilt með %d kössunum; draga með " +"Shift til að aðskilja valda kassa" -#: ../src/vanishing-point.cpp:342 +#: ../src/vanishing-point.cpp:345 #, c-format msgid "" "shared by %d box; drag with Shift to separate selected box(es)" @@ -25443,489 +26019,490 @@ msgid_plural "" "shared by %d boxes; drag with Shift to separate selected " "box(es)" msgstr[0] "" +"deilt með %d kassanum; draga með Shift til að aðskilja valda " +"kassa" msgstr[1] "" +"deilt með %d kössunum; draga með Shift til að aðskilja valda " +"kassa" -#: ../src/verbs.cpp:131 +#: ../src/verbs.cpp:132 msgid "File" msgstr "Skrá" -#: ../src/verbs.cpp:226 ../share/extensions/interp_att_g.inx.h:24 +#: ../src/verbs.cpp:227 ../share/extensions/interp_att_g.inx.h:24 msgid "Tag" msgstr "Merki" -#: ../src/verbs.cpp:245 +#: ../src/verbs.cpp:246 msgid "Context" msgstr "Samhengi" -#: ../src/verbs.cpp:264 ../src/verbs.cpp:2333 +#: ../src/verbs.cpp:265 ../src/verbs.cpp:2430 #: ../share/extensions/jessyInk_view.inx.h:1 #: ../share/extensions/polyhedron_3d.inx.h:26 msgid "View" msgstr "Skoða" -#: ../src/verbs.cpp:284 +#: ../src/verbs.cpp:285 msgid "Dialog" msgstr "Samskiptagluggi" -#: ../src/verbs.cpp:1310 +#: ../src/verbs.cpp:1323 msgid "Switch to next layer" msgstr "Skipta yfir á næsta lag" -#: ../src/verbs.cpp:1311 +#: ../src/verbs.cpp:1324 msgid "Switched to next layer." msgstr "Skipti yfir á næsta lag." -#: ../src/verbs.cpp:1313 +#: ../src/verbs.cpp:1326 msgid "Cannot go past last layer." msgstr "Get ekki farið aftar en síðasta lag." -#: ../src/verbs.cpp:1322 +#: ../src/verbs.cpp:1335 msgid "Switch to previous layer" msgstr "Skipta yfir á fyrra lag" -#: ../src/verbs.cpp:1323 +#: ../src/verbs.cpp:1336 msgid "Switched to previous layer." msgstr "Skipti yfir á fyrra lag." -#: ../src/verbs.cpp:1325 +#: ../src/verbs.cpp:1338 msgid "Cannot go before first layer." msgstr "Get ekki farið framar en fyrsta lag." -#: ../src/verbs.cpp:1346 ../src/verbs.cpp:1413 ../src/verbs.cpp:1449 -#: ../src/verbs.cpp:1455 ../src/verbs.cpp:1479 ../src/verbs.cpp:1494 +#: ../src/verbs.cpp:1359 ../src/verbs.cpp:1426 ../src/verbs.cpp:1462 +#: ../src/verbs.cpp:1468 ../src/verbs.cpp:1492 ../src/verbs.cpp:1507 msgid "No current layer." msgstr "Ekkert virkt lag." -#: ../src/verbs.cpp:1375 ../src/verbs.cpp:1379 +#: ../src/verbs.cpp:1388 ../src/verbs.cpp:1392 #, c-format msgid "Raised layer %s." msgstr "Hækkaði lagið %s." -#: ../src/verbs.cpp:1376 +#: ../src/verbs.cpp:1389 msgid "Layer to top" msgstr "Færa lag efst" -#: ../src/verbs.cpp:1380 +#: ../src/verbs.cpp:1393 msgid "Raise layer" msgstr "Hækka lag" -#: ../src/verbs.cpp:1383 ../src/verbs.cpp:1387 +#: ../src/verbs.cpp:1396 ../src/verbs.cpp:1400 #, c-format msgid "Lowered layer %s." msgstr "Lækkaði lagið %s." -#: ../src/verbs.cpp:1384 +#: ../src/verbs.cpp:1397 msgid "Layer to bottom" msgstr "Færa lag neðst" -#: ../src/verbs.cpp:1388 +#: ../src/verbs.cpp:1401 msgid "Lower layer" msgstr "Lækka lag" -#: ../src/verbs.cpp:1397 +#: ../src/verbs.cpp:1410 msgid "Cannot move layer any further." msgstr "Get ekki fært lagið neitt lengra." -#: ../src/verbs.cpp:1408 +#: ../src/verbs.cpp:1421 msgid "Duplicate layer" msgstr "Tvöfalda lag" #. TRANSLATORS: this means "The layer has been duplicated." -#: ../src/verbs.cpp:1411 +#: ../src/verbs.cpp:1424 msgid "Duplicated layer." msgstr "Tvöfaldað lag." -#: ../src/verbs.cpp:1444 +#: ../src/verbs.cpp:1457 msgid "Delete layer" msgstr "Eyða lagi" #. TRANSLATORS: this means "The layer has been deleted." -#: ../src/verbs.cpp:1447 +#: ../src/verbs.cpp:1460 msgid "Deleted layer." msgstr "Eyddi lagi." -#: ../src/verbs.cpp:1464 +#: ../src/verbs.cpp:1477 msgid "Show all layers" msgstr "Birta öll lög" -#: ../src/verbs.cpp:1469 +#: ../src/verbs.cpp:1482 msgid "Hide all layers" msgstr "Fela öll lög" -#: ../src/verbs.cpp:1474 +#: ../src/verbs.cpp:1487 msgid "Lock all layers" msgstr "Læsa öllum lögum" -#: ../src/verbs.cpp:1488 +#: ../src/verbs.cpp:1501 msgid "Unlock all layers" msgstr "Aflæsa öllum lögum" -#: ../src/verbs.cpp:1572 +#: ../src/verbs.cpp:1585 msgid "Flip horizontally" msgstr "Spegla lárétt" -#: ../src/verbs.cpp:1577 +#: ../src/verbs.cpp:1590 msgid "Flip vertically" msgstr "Spegla lóðrétt" -#: ../src/verbs.cpp:1625 +#: ../src/verbs.cpp:1638 #, c-format msgid "Set %d" msgstr "Setja %d" -#: ../src/verbs.cpp:1634 ../src/verbs.cpp:2781 +#: ../src/verbs.cpp:1647 ../src/verbs.cpp:2890 msgid "Create new selection set" msgstr "Búa til nýtt valsett" #. TRANSLATORS: If you have translated the tutorial-basic.en.svgz file to your language, #. then translate this string as "tutorial-basic.LANG.svgz" (where LANG is your language #. code); otherwise leave as "tutorial-basic.svg". -#: ../src/verbs.cpp:2211 +#: ../src/verbs.cpp:2308 msgid "tutorial-basic.svg" msgstr "tutorial-basic.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2215 +#: ../src/verbs.cpp:2312 msgid "tutorial-shapes.svg" msgstr "tutorial-shapes.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2219 +#: ../src/verbs.cpp:2316 msgid "tutorial-advanced.svg" msgstr "tutorial-advanced.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2225 +#: ../src/verbs.cpp:2322 msgid "tutorial-tracing.svg" msgstr "tutorial-tracing.svg" -#: ../src/verbs.cpp:2230 +#: ../src/verbs.cpp:2327 msgid "tutorial-tracing-pixelart.svg" msgstr "tutorial-tracing-pixelart.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2234 +#: ../src/verbs.cpp:2331 msgid "tutorial-calligraphy.svg" msgstr "tutorial-calligraphy.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2238 +#: ../src/verbs.cpp:2335 msgid "tutorial-interpolate.svg" msgstr "tutorial-interpolate.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2242 +#: ../src/verbs.cpp:2339 msgid "tutorial-elements.svg" msgstr "tutorial-elements.svg" #. TRANSLATORS: See "tutorial-basic.svg" comment. -#: ../src/verbs.cpp:2246 +#: ../src/verbs.cpp:2343 msgid "tutorial-tips.svg" msgstr "tutorial-tips.svg" -#: ../src/verbs.cpp:2432 ../src/verbs.cpp:3064 +#: ../src/verbs.cpp:2529 ../src/verbs.cpp:3194 msgid "Unlock all objects in the current layer" msgstr "Aflæsa öllum hlutum í núverandi lagi" -#: ../src/verbs.cpp:2436 ../src/verbs.cpp:3066 +#: ../src/verbs.cpp:2533 ../src/verbs.cpp:3196 msgid "Unlock all objects in all layers" msgstr "Aflæsa öllum hlutum í öllum lögum" -#: ../src/verbs.cpp:2440 ../src/verbs.cpp:3068 +#: ../src/verbs.cpp:2537 ../src/verbs.cpp:3198 msgid "Unhide all objects in the current layer" msgstr "Birta alla hluti í núverandi lagi" -#: ../src/verbs.cpp:2444 ../src/verbs.cpp:3070 +#: ../src/verbs.cpp:2541 ../src/verbs.cpp:3200 msgid "Unhide all objects in all layers" msgstr "Birta alla hluti í öllum lögum" -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2556 msgctxt "Verb" msgid "None" msgstr "Ekkert" -#: ../src/verbs.cpp:2459 +#: ../src/verbs.cpp:2556 msgid "Does nothing" msgstr "Gerir ekkert" -#. File -#. Tag -#: ../src/verbs.cpp:2462 ../src/verbs.cpp:2780 -msgid "_New" -msgstr "_Nýtt" - -#: ../src/verbs.cpp:2462 +#: ../src/verbs.cpp:2559 msgid "Create new document from the default template" msgstr "Búa til nýtt skjal út frá sjálfgefnu sniðmáti" -#: ../src/verbs.cpp:2464 +#: ../src/verbs.cpp:2561 msgid "_Open..." msgstr "_Opna..." -#: ../src/verbs.cpp:2465 +#: ../src/verbs.cpp:2562 msgid "Open an existing document" msgstr "Opna skjal" -#: ../src/verbs.cpp:2466 +#: ../src/verbs.cpp:2563 msgid "Re_vert" msgstr "Endur_heimta" -#: ../src/verbs.cpp:2467 +#: ../src/verbs.cpp:2564 msgid "Revert to the last saved version of document (changes will be lost)" msgstr "" "Hunsa breytingar og kalla fram síðustu vistuðu útgáfu skjalsins (breytingar " "munu tapast)" -#: ../src/verbs.cpp:2468 +#: ../src/verbs.cpp:2565 msgid "Save document" msgstr "Vista skjal" -#: ../src/verbs.cpp:2470 +#: ../src/verbs.cpp:2567 msgid "Save _As..." msgstr "Vist_a sem..." -#: ../src/verbs.cpp:2471 +#: ../src/verbs.cpp:2568 msgid "Save document under a new name" msgstr "Vista skjal með nýju heiti" -#: ../src/verbs.cpp:2472 +#: ../src/verbs.cpp:2569 msgid "Save a Cop_y..." msgstr "Vista a_frit..." -#: ../src/verbs.cpp:2473 +#: ../src/verbs.cpp:2570 msgid "Save a copy of the document under a new name" msgstr "Vista afrit af skjalinu með nýju heiti" -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2571 +msgid "Save template ..." +msgstr "Vista sniðmát ..." + +#: ../src/verbs.cpp:2572 +msgid "Save a copy of the document as template" +msgstr "Vista afrit af skjalinu sem sniðmát" + +#: ../src/verbs.cpp:2573 msgid "_Print..." msgstr "_Prenta..." -#: ../src/verbs.cpp:2474 +#: ../src/verbs.cpp:2573 msgid "Print document" msgstr "Prenta skjal" #. TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions) -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2576 msgid "Clean _up document" msgstr "_Hreinsa skjalið" -#: ../src/verbs.cpp:2477 +#: ../src/verbs.cpp:2576 msgid "" "Remove unused definitions (such as gradients or clipping paths) from the <" "defs> of the document" msgstr "" "Fjarlægja ónotaðar skilgreiningar (eins og litstigla eða afmörkunarferla) úr " -"<" -"defs> í skjalinu" +"<defs> í skjalinu" -#: ../src/verbs.cpp:2479 +#: ../src/verbs.cpp:2578 msgid "_Import..." msgstr "Flytja _inn..." -#: ../src/verbs.cpp:2480 +#: ../src/verbs.cpp:2579 msgid "Import a bitmap or SVG image into this document" msgstr "Flytja bitamynd eða SVG-teikningu inn í þetta skjal" #. new FileVerb(SP_VERB_FILE_EXPORT, "FileExport", N_("_Export Bitmap..."), N_("Export this document or a selection as a bitmap image"), INKSCAPE_ICON("document-export")), -#: ../src/verbs.cpp:2482 +#: ../src/verbs.cpp:2581 msgid "Import Clip Art..." msgstr "Flytja inn klippimynd..." -#: ../src/verbs.cpp:2483 +#: ../src/verbs.cpp:2582 msgid "Import clipart from Open Clip Art Library" msgstr "Flytja inn úr Open Clip Art klippimyndasafninu" #. new FileVerb(SP_VERB_FILE_EXPORT_TO_OCAL, "FileExportToOCAL", N_("Export To Open Clip Art Library"), N_("Export this document to Open Clip Art Library"), INKSCAPE_ICON_DOCUMENT_EXPORT_OCAL), -#: ../src/verbs.cpp:2485 +#: ../src/verbs.cpp:2584 msgid "N_ext Window" msgstr "_Næsti gluggi" -#: ../src/verbs.cpp:2486 +#: ../src/verbs.cpp:2585 msgid "Switch to the next document window" msgstr "Skipta yfir í næsta vinnuglugga" -#: ../src/verbs.cpp:2487 +#: ../src/verbs.cpp:2586 msgid "P_revious Window" msgstr "Fy_rri gluggi" -#: ../src/verbs.cpp:2488 +#: ../src/verbs.cpp:2587 msgid "Switch to the previous document window" msgstr "Skipta yfir í fyrri vinnuglugga" -#: ../src/verbs.cpp:2489 -msgid "_Close" -msgstr "_Loka" - -#: ../src/verbs.cpp:2490 +#: ../src/verbs.cpp:2589 msgid "Close this document window" msgstr "Loka þessum vinnuglugga" -#: ../src/verbs.cpp:2491 +#: ../src/verbs.cpp:2590 msgid "_Quit" msgstr "_Hætta" -#: ../src/verbs.cpp:2491 +#: ../src/verbs.cpp:2590 msgid "Quit Inkscape" msgstr "Hætta í Inkscape" -#: ../src/verbs.cpp:2492 +#: ../src/verbs.cpp:2591 msgid "New from _Template..." msgstr "Ný_tt út frá sniðmáti..." -#: ../src/verbs.cpp:2493 +#: ../src/verbs.cpp:2592 msgid "Create new project from template" msgstr "Búa til nýtt verkefni út frá sniðmáti" -#: ../src/verbs.cpp:2496 +#: ../src/verbs.cpp:2595 msgid "Undo last action" msgstr "Afturkalla síðustu aðgerð" -#: ../src/verbs.cpp:2499 +#: ../src/verbs.cpp:2598 msgid "Do again the last undone action" msgstr "Endurtaka síðustu afturkölluðu aðgerð" -#: ../src/verbs.cpp:2500 +#: ../src/verbs.cpp:2599 msgid "Cu_t" msgstr "_Klippa" -#: ../src/verbs.cpp:2501 +#: ../src/verbs.cpp:2600 msgid "Cut selection to clipboard" msgstr "Klippa val á klippispjald" -#: ../src/verbs.cpp:2502 +#: ../src/verbs.cpp:2601 msgid "_Copy" msgstr "_Afrita" -#: ../src/verbs.cpp:2503 +#: ../src/verbs.cpp:2602 msgid "Copy selection to clipboard" msgstr "Afrita val á klippispjald" -#: ../src/verbs.cpp:2504 +#: ../src/verbs.cpp:2603 msgid "_Paste" msgstr "_Líma" -#: ../src/verbs.cpp:2505 +#: ../src/verbs.cpp:2604 msgid "Paste objects from clipboard to mouse point, or paste text" msgstr "" "Líma hluti af klippispjaldi á staðsetningu músarbendils, eða líma texta" -#: ../src/verbs.cpp:2506 +#: ../src/verbs.cpp:2605 msgid "Paste _Style" msgstr "Líma _stíl" -#: ../src/verbs.cpp:2507 +#: ../src/verbs.cpp:2606 msgid "Apply the style of the copied object to selection" msgstr "Beita stíl afritaða hlutarins á valið" -#: ../src/verbs.cpp:2509 +#: ../src/verbs.cpp:2607 ../share/ui/menus.xml.h:3 +msgid "Paste Si_ze" +msgstr "Líma stæ_rð" + +#: ../src/verbs.cpp:2608 msgid "Scale selection to match the size of the copied object" msgstr "" -#: ../src/verbs.cpp:2510 +#: ../src/verbs.cpp:2609 msgid "Paste _Width" msgstr "Líma _breidd" -#: ../src/verbs.cpp:2511 +#: ../src/verbs.cpp:2610 msgid "Scale selection horizontally to match the width of the copied object" msgstr "" -#: ../src/verbs.cpp:2512 +#: ../src/verbs.cpp:2611 msgid "Paste _Height" msgstr "Líma _hæð" -#: ../src/verbs.cpp:2513 +#: ../src/verbs.cpp:2612 msgid "Scale selection vertically to match the height of the copied object" msgstr "" -#: ../src/verbs.cpp:2514 +#: ../src/verbs.cpp:2613 msgid "Paste Size Separately" msgstr "Líma stærð sér" -#: ../src/verbs.cpp:2515 +#: ../src/verbs.cpp:2614 msgid "Scale each selected object to match the size of the copied object" msgstr "" -#: ../src/verbs.cpp:2516 +#: ../src/verbs.cpp:2615 msgid "Paste Width Separately" msgstr "Líma breidd sér" -#: ../src/verbs.cpp:2517 +#: ../src/verbs.cpp:2616 msgid "" "Scale each selected object horizontally to match the width of the copied " "object" msgstr "" -#: ../src/verbs.cpp:2518 +#: ../src/verbs.cpp:2617 msgid "Paste Height Separately" msgstr "Líma hæð sér" -#: ../src/verbs.cpp:2519 +#: ../src/verbs.cpp:2618 msgid "" "Scale each selected object vertically to match the height of the copied " "object" msgstr "" -#: ../src/verbs.cpp:2520 +#: ../src/verbs.cpp:2619 msgid "Paste _In Place" msgstr "Líma á st_aðnum" -#: ../src/verbs.cpp:2521 +#: ../src/verbs.cpp:2620 msgid "Paste objects from clipboard to the original location" msgstr "Líma hluti af klippispjaldi á upprunalega staðsetningu" -#: ../src/verbs.cpp:2522 +#: ../src/verbs.cpp:2621 msgid "Paste Path _Effect" msgstr "Líma ferilbr_ellu" -#: ../src/verbs.cpp:2523 +#: ../src/verbs.cpp:2622 msgid "Apply the path effect of the copied object to selection" msgstr "Beita ferilbrellu afritaða hlutarins á valið" -#: ../src/verbs.cpp:2524 +#: ../src/verbs.cpp:2623 msgid "Remove Path _Effect" msgstr "Fjarlægja ferilbr_ellu" -#: ../src/verbs.cpp:2525 +#: ../src/verbs.cpp:2624 msgid "Remove any path effects from selected objects" msgstr "Fjarlægir allar ferilbrellur af völdum hlutum" -#: ../src/verbs.cpp:2526 +#: ../src/verbs.cpp:2625 msgid "_Remove Filters" msgstr "Fja_rlægja síur" -#: ../src/verbs.cpp:2527 +#: ../src/verbs.cpp:2626 msgid "Remove any filters from selected objects" msgstr "Fjarlægir allar síur af völdum hlutum" -#: ../src/verbs.cpp:2528 -msgid "_Delete" -msgstr "_Eyða" - -#: ../src/verbs.cpp:2529 +#: ../src/verbs.cpp:2628 msgid "Delete selection" msgstr "Eyða vali" -#: ../src/verbs.cpp:2530 +#: ../src/verbs.cpp:2629 msgid "Duplic_ate" msgstr "Tvöf_alda" -#: ../src/verbs.cpp:2531 +#: ../src/verbs.cpp:2630 msgid "Duplicate selected objects" msgstr "Tvöfalda valda hluti" -#: ../src/verbs.cpp:2532 +#: ../src/verbs.cpp:2631 msgid "Create Clo_ne" msgstr "Búa til kló_n" -#: ../src/verbs.cpp:2533 +#: ../src/verbs.cpp:2632 msgid "Create a clone (a copy linked to the original) of selected object" msgstr "Búa til klón (afrit sem tengt er upprunahlut) af völdu atriði" -#: ../src/verbs.cpp:2534 +#: ../src/verbs.cpp:2633 msgid "Unlin_k Clone" msgstr "Aftengja _klóna" -#: ../src/verbs.cpp:2535 +#: ../src/verbs.cpp:2634 msgid "" "Cut the selected clones' links to the originals, turning them into " "standalone objects" @@ -25933,757 +26510,774 @@ msgstr "" "Rjúfa tengsl valinna klóna við upprunahluti, sem herir þá að sjálfstæðum " "hlutum" -#: ../src/verbs.cpp:2536 +#: ../src/verbs.cpp:2635 msgid "Unlink Clones _recursively" msgstr "Aftengja alla _klóna" -#: ../src/verbs.cpp:2537 +#: ../src/verbs.cpp:2636 msgid "Unlink all clones in the selection, even if they are in groups." msgstr "Aftengja alla klóna í valinu, jafnvel þó þeir séu inni í hópum." -#: ../src/verbs.cpp:2538 +#: ../src/verbs.cpp:2637 msgid "Relink to Copied" msgstr "Endurtengja við afritað" -#: ../src/verbs.cpp:2539 +#: ../src/verbs.cpp:2638 msgid "Relink the selected clones to the object currently on the clipboard" msgstr "" -#: ../src/verbs.cpp:2540 +#: ../src/verbs.cpp:2639 msgid "Select _Original" msgstr "Velja _upprunalegt" -#: ../src/verbs.cpp:2541 +#: ../src/verbs.cpp:2640 msgid "Select the object to which the selected clone is linked" msgstr "Velja hlutinn sem valdi klóninn er tengdur" -#: ../src/verbs.cpp:2542 +#: ../src/verbs.cpp:2641 msgid "Clone original path (LPE)" msgstr "Klóna upprunalegan feril (LPE)" -#: ../src/verbs.cpp:2543 +#: ../src/verbs.cpp:2642 msgid "" "Creates a new path, applies the Clone original LPE, and refers it to the " "selected path" msgstr "" -#: ../src/verbs.cpp:2544 +#: ../src/verbs.cpp:2643 msgid "Objects to _Marker" msgstr "Hluti sem _merkipunkt" -#: ../src/verbs.cpp:2545 +#: ../src/verbs.cpp:2644 msgid "Convert selection to a line marker" msgstr "Umbreyta vali í línumerki" -#: ../src/verbs.cpp:2546 +#: ../src/verbs.cpp:2645 msgid "Objects to Gu_ides" msgstr "Hluti í st_oðlínur" -#: ../src/verbs.cpp:2547 +#: ../src/verbs.cpp:2646 msgid "" "Convert selected objects to a collection of guidelines aligned with their " "edges" msgstr "" -#: ../src/verbs.cpp:2548 +#: ../src/verbs.cpp:2647 msgid "Objects to Patter_n" msgstr "Hlutir sem m_ynstur" -#: ../src/verbs.cpp:2549 +#: ../src/verbs.cpp:2648 msgid "Convert selection to a rectangle with tiled pattern fill" msgstr "" -#: ../src/verbs.cpp:2550 +#: ../src/verbs.cpp:2649 msgid "Pattern to _Objects" msgstr "_Mynstur í hluti" -#: ../src/verbs.cpp:2551 +#: ../src/verbs.cpp:2650 msgid "Extract objects from a tiled pattern fill" msgstr "" -#: ../src/verbs.cpp:2552 +#: ../src/verbs.cpp:2651 msgid "Group to Symbol" msgstr "Hóp í tákn" -#: ../src/verbs.cpp:2553 +#: ../src/verbs.cpp:2652 msgid "Convert group to a symbol" msgstr "Umbreyta hópi í tákn" -#: ../src/verbs.cpp:2554 +#: ../src/verbs.cpp:2653 msgid "Symbol to Group" msgstr "Tákn í hóp" -#: ../src/verbs.cpp:2555 +#: ../src/verbs.cpp:2654 msgid "Extract group from a symbol" -msgstr "" +msgstr "Ná í hóp úr tákni" -#: ../src/verbs.cpp:2556 +#: ../src/verbs.cpp:2655 msgid "Clea_r All" msgstr "_Hreinsa allt" -#: ../src/verbs.cpp:2557 +#: ../src/verbs.cpp:2656 msgid "Delete all objects from document" msgstr "Eyða öllum hlutum í skjalinu" -#: ../src/verbs.cpp:2558 +#: ../src/verbs.cpp:2657 msgid "Select Al_l" msgstr "Velja _allt" -#: ../src/verbs.cpp:2559 +#: ../src/verbs.cpp:2658 msgid "Select all objects or all nodes" msgstr "Velja alla hluti eða alla hnúta" -#: ../src/verbs.cpp:2560 +#: ../src/verbs.cpp:2659 msgid "Select All in All La_yers" msgstr "Velja allt í öllum lö_gum" -#: ../src/verbs.cpp:2561 +#: ../src/verbs.cpp:2660 msgid "Select all objects in all visible and unlocked layers" msgstr "Velja alla hluti í öllum sýnilegum og ólæstum lögum" -#: ../src/verbs.cpp:2562 +#: ../src/verbs.cpp:2661 msgid "Fill _and Stroke" msgstr "F_ylling og útlína" -#: ../src/verbs.cpp:2563 +#: ../src/verbs.cpp:2662 msgid "" "Select all objects with the same fill and stroke as the selected objects" msgstr "Velja alla hluti með sömu útlínu og fyllingu og völdu hlutirnir" -#: ../src/verbs.cpp:2564 +#: ../src/verbs.cpp:2663 msgid "_Fill Color" msgstr "_Fyllilitur" -#: ../src/verbs.cpp:2565 +#: ../src/verbs.cpp:2664 msgid "Select all objects with the same fill as the selected objects" msgstr "Velja alla hluti með sömu fyllingu og völdu hlutirnir" -#: ../src/verbs.cpp:2566 +#: ../src/verbs.cpp:2665 msgid "_Stroke Color" msgstr "Ú_tlínulitur" -#: ../src/verbs.cpp:2567 +#: ../src/verbs.cpp:2666 msgid "Select all objects with the same stroke as the selected objects" msgstr "Velja alla hluti með sömu útlínu og völdu hlutirnir" -#: ../src/verbs.cpp:2568 +#: ../src/verbs.cpp:2667 msgid "Stroke St_yle" msgstr "Stíll ú_tlínu" -#: ../src/verbs.cpp:2569 +#: ../src/verbs.cpp:2668 msgid "" "Select all objects with the same stroke style (width, dash, markers) as the " "selected objects" msgstr "" -"Velja alla hluti með sama línustíl (breidd, strikun, merki) og völdu hlutirnir" +"Velja alla hluti með sama línustíl (breidd, strikun, merki) og völdu " +"hlutirnir" -#: ../src/verbs.cpp:2570 +#: ../src/verbs.cpp:2669 msgid "_Object Type" msgstr "Tegund _hlutar" -#: ../src/verbs.cpp:2571 +#: ../src/verbs.cpp:2670 msgid "" "Select all objects with the same object type (rect, arc, text, path, bitmap " "etc) as the selected objects" msgstr "" -"Velja alla hluti af sömu gerð (ferningur, bogi, texti, ferill, bitamynd " -"o.s.frv.) og völdu hlutirnir" +"Velja alla hluti af sömu gerð (ferningur, bogi, texti, ferill, bitamynd o.s." +"frv.) og völdu hlutirnir" -#: ../src/verbs.cpp:2572 +#: ../src/verbs.cpp:2671 msgid "In_vert Selection" msgstr "Umhverfa _myndvali" -#: ../src/verbs.cpp:2573 +#: ../src/verbs.cpp:2672 msgid "Invert selection (unselect what is selected and select everything else)" msgstr "Umhverfa myndvali (afvelja það sem er valið og velja allt annað)" -#: ../src/verbs.cpp:2574 +#: ../src/verbs.cpp:2673 msgid "Invert in All Layers" msgstr "Umsnúa í öllum lögum" -#: ../src/verbs.cpp:2575 +#: ../src/verbs.cpp:2674 msgid "Invert selection in all visible and unlocked layers" msgstr "Snúa við vali í öllum sýnilegum og ólæstum lögum" -#: ../src/verbs.cpp:2576 +#: ../src/verbs.cpp:2675 msgid "Select Next" msgstr "Velja næsta" -#: ../src/verbs.cpp:2577 +#: ../src/verbs.cpp:2676 msgid "Select next object or node" msgstr "Veldu næsta hlut eða hnút" -#: ../src/verbs.cpp:2578 +#: ../src/verbs.cpp:2677 msgid "Select Previous" msgstr "Velja fyrra" -#: ../src/verbs.cpp:2579 +#: ../src/verbs.cpp:2678 msgid "Select previous object or node" msgstr "Veldu fyrri hlut eða hnút" -#: ../src/verbs.cpp:2580 +#: ../src/verbs.cpp:2679 msgid "D_eselect" msgstr "Afv_elja" -#: ../src/verbs.cpp:2581 +#: ../src/verbs.cpp:2680 msgid "Deselect any selected objects or nodes" msgstr "Afvelja valda hluti eða hnúta" -#: ../src/verbs.cpp:2583 +#: ../src/verbs.cpp:2682 msgid "Delete all the guides in the document" msgstr "Eyða öllum stoðlínum í skjalinu" -#: ../src/verbs.cpp:2584 +#: ../src/verbs.cpp:2683 msgid "Lock All Guides" msgstr "Læsa öllum stoðlínum" -#: ../src/verbs.cpp:2584 ../src/widgets/desktop-widget.cpp:372 +#: ../src/verbs.cpp:2683 ../src/widgets/desktop-widget.cpp:363 msgid "Toggle lock of all guides in the document" msgstr "Víxla læsingu á öllum stoðlínum í skjalinu" -#: ../src/verbs.cpp:2585 +#: ../src/verbs.cpp:2684 msgid "Create _Guides Around the Page" msgstr "_Búa til stoðlínur í kringum síðu" -#: ../src/verbs.cpp:2586 +#: ../src/verbs.cpp:2685 msgid "Create four guides aligned with the page borders" msgstr "Búa til fjórar stoðlínur sem fylgja jöðrum síðu" -#: ../src/verbs.cpp:2587 +#: ../src/verbs.cpp:2686 msgid "Next path effect parameter" msgstr "Næsta viðfang ferilbrellu" -#: ../src/verbs.cpp:2588 +#: ../src/verbs.cpp:2687 msgid "Show next editable path effect parameter" msgstr "Birta næsta breytanlega viðfang ferilbrellu" #. Selection -#: ../src/verbs.cpp:2591 +#: ../src/verbs.cpp:2692 msgid "Raise to _Top" msgstr "Færa _efst" -#: ../src/verbs.cpp:2592 +#: ../src/verbs.cpp:2693 msgid "Raise selection to top" msgstr "Setja valið efst" -#: ../src/verbs.cpp:2593 +#: ../src/verbs.cpp:2694 msgid "Lower to _Bottom" msgstr "Setja _neðst" -#: ../src/verbs.cpp:2594 +#: ../src/verbs.cpp:2695 msgid "Lower selection to bottom" msgstr "Setja valið neðst" -#: ../src/verbs.cpp:2595 +#: ../src/verbs.cpp:2696 msgid "_Raise" msgstr "_Hækka" -#: ../src/verbs.cpp:2596 +#: ../src/verbs.cpp:2697 msgid "Raise selection one step" msgstr "Hækka valið um eina hæð" -#: ../src/verbs.cpp:2597 +#: ../src/verbs.cpp:2698 msgid "_Lower" msgstr "_Lækka" -#: ../src/verbs.cpp:2598 +#: ../src/verbs.cpp:2699 msgid "Lower selection one step" msgstr "Lækka valið um eina hæð" -#: ../src/verbs.cpp:2600 +#: ../src/verbs.cpp:2702 +msgid "_Stack up" +msgstr "_Stafla upp" + +#: ../src/verbs.cpp:2703 +msgid "Stack selection one step up" +msgstr "Stafla valið upp um eina hæð" + +#: ../src/verbs.cpp:2704 +msgid "_Stack down" +msgstr "_Stafla niður" + +#: ../src/verbs.cpp:2705 +msgid "Stack selection one step down" +msgstr "Stafla valið niður um eina hæð" + +#: ../src/verbs.cpp:2709 msgid "Group selected objects" msgstr "Hópa valda hluti saman" -#: ../src/verbs.cpp:2602 +#: ../src/verbs.cpp:2711 msgid "Ungroup selected groups" msgstr "Skipta upp völdum hópum" -#: ../src/verbs.cpp:2603 +#: ../src/verbs.cpp:2712 msgid "_Pop selected objects out of group" msgstr "_Henda völdum hlutum út úr hóp" -#: ../src/verbs.cpp:2604 +#: ../src/verbs.cpp:2713 msgid "Pop selected objects out of group" msgstr "Henda völdum hlutum út úr hóp" -#: ../src/verbs.cpp:2606 +#: ../src/verbs.cpp:2715 msgid "_Put on Path" msgstr "_Setja á feril" -#: ../src/verbs.cpp:2608 +#: ../src/verbs.cpp:2717 msgid "_Remove from Path" msgstr "_Taka af ferli" -#: ../src/verbs.cpp:2610 +#: ../src/verbs.cpp:2719 msgid "Remove Manual _Kerns" msgstr "Fjar_lægja handvirk stafabil" #. TRANSLATORS: "glyph": An image used in the visual representation of characters; #. roughly speaking, how a character looks. A font is a set of glyphs. -#: ../src/verbs.cpp:2613 +#: ../src/verbs.cpp:2722 msgid "Remove all manual kerns and glyph rotations from a text object" msgstr "" "Fjarlægja öll handvirk stafabil (hnikun) og snúning staftákna af textahlut" -#: ../src/verbs.cpp:2615 +#: ../src/verbs.cpp:2724 msgid "_Union" msgstr "_Bræða saman" -#: ../src/verbs.cpp:2616 +#: ../src/verbs.cpp:2725 msgid "Create union of selected paths" msgstr "Sameina valda ferla í eitt form" -#: ../src/verbs.cpp:2617 +#: ../src/verbs.cpp:2726 msgid "_Intersection" msgstr "S_körun" -#: ../src/verbs.cpp:2618 +#: ../src/verbs.cpp:2727 msgid "Create intersection of selected paths" msgstr "" -#: ../src/verbs.cpp:2619 +#: ../src/verbs.cpp:2728 msgid "_Difference" msgstr "_Mismunur" -#: ../src/verbs.cpp:2620 +#: ../src/verbs.cpp:2729 msgid "Create difference of selected paths (bottom minus top)" msgstr "" -#: ../src/verbs.cpp:2621 +#: ../src/verbs.cpp:2730 msgid "E_xclusion" msgstr "Úti_lokun" -#: ../src/verbs.cpp:2622 +#: ../src/verbs.cpp:2731 msgid "" "Create exclusive OR of selected paths (those parts that belong to only one " "path)" msgstr "" -#: ../src/verbs.cpp:2623 +#: ../src/verbs.cpp:2732 msgid "Di_vision" msgstr "U_ppskipting" -#: ../src/verbs.cpp:2624 +#: ../src/verbs.cpp:2733 msgid "Cut the bottom path into pieces" msgstr "Klippa botnferil í parta" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2627 +#: ../src/verbs.cpp:2736 msgid "Cut _Path" msgstr "Klippa _feril" -#: ../src/verbs.cpp:2628 +#: ../src/verbs.cpp:2737 msgid "Cut the bottom path's stroke into pieces, removing fill" msgstr "" -#: ../src/verbs.cpp:2629 +#: ../src/verbs.cpp:2738 msgid "_Grow" msgstr "_Vaxa" -#: ../src/verbs.cpp:2630 +#: ../src/verbs.cpp:2739 msgid "Make selected objects bigger" msgstr "Gera valda hluti stærri" -#: ../src/verbs.cpp:2631 +#: ../src/verbs.cpp:2740 msgid "_Grow on screen" msgstr "_Vaxa á skjá" -#: ../src/verbs.cpp:2632 +#: ../src/verbs.cpp:2741 msgid "Make selected objects bigger relative to screen" msgstr "Gera valda hluti stærri miðað við skjá" -#: ../src/verbs.cpp:2633 +#: ../src/verbs.cpp:2742 msgid "_Double size" msgstr "Tvö_falda stærð" -#: ../src/verbs.cpp:2634 +#: ../src/verbs.cpp:2743 msgid "Double the size of selected objects" msgstr "Tvöfalda stærð á völdum hlutum" -#: ../src/verbs.cpp:2635 +#: ../src/verbs.cpp:2744 msgid "_Shrink" msgstr "_Minnka" -#: ../src/verbs.cpp:2636 +#: ../src/verbs.cpp:2745 msgid "Make selected objects smaller" msgstr "Gera valda hluti minni" -#: ../src/verbs.cpp:2637 +#: ../src/verbs.cpp:2746 msgid "_Shrink on screen" msgstr "_Minnka á skjá" -#: ../src/verbs.cpp:2638 +#: ../src/verbs.cpp:2747 msgid "Make selected objects smaller relative to screen" msgstr "Gera valda hluti minni miðað við skjá" -#: ../src/verbs.cpp:2639 +#: ../src/verbs.cpp:2748 msgid "_Halve size" msgstr "_Helminga stærð" -#: ../src/verbs.cpp:2640 +#: ../src/verbs.cpp:2749 msgid "Halve the size of selected objects" msgstr "Helminga stærð á völdum hlutum" #. TRANSLATORS: "outset": expand a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2644 +#: ../src/verbs.cpp:2753 msgid "Outs_et" msgstr "Útf_ella" -#: ../src/verbs.cpp:2645 +#: ../src/verbs.cpp:2754 msgid "Outset selected paths" msgstr "Útfella valda ferla" -#: ../src/verbs.cpp:2647 +#: ../src/verbs.cpp:2756 msgid "O_utset Path by 1 px" msgstr "Ú_tfella feril um 1 px" -#: ../src/verbs.cpp:2648 +#: ../src/verbs.cpp:2757 msgid "Outset selected paths by 1 px" msgstr "Útfella valda ferla um 1 px" -#: ../src/verbs.cpp:2650 +#: ../src/verbs.cpp:2759 msgid "O_utset Path by 10 px" msgstr "Ú_tfella feril um 10 px" -#: ../src/verbs.cpp:2651 +#: ../src/verbs.cpp:2760 msgid "Outset selected paths by 10 px" msgstr "Útfella valda ferla um 10 px" #. TRANSLATORS: "inset": contract a shape by offsetting the object's path, #. i.e. by displacing it perpendicular to the path in each point. #. See also the Advanced Tutorial for explanation. -#: ../src/verbs.cpp:2655 +#: ../src/verbs.cpp:2764 msgid "I_nset" msgstr "I_nnfella" -#: ../src/verbs.cpp:2656 +#: ../src/verbs.cpp:2765 msgid "Inset selected paths" msgstr "Innfella valda ferla" -#: ../src/verbs.cpp:2658 +#: ../src/verbs.cpp:2767 msgid "I_nset Path by 1 px" msgstr "I_nnfella feril um 1 px" -#: ../src/verbs.cpp:2659 +#: ../src/verbs.cpp:2768 msgid "Inset selected paths by 1 px" msgstr "Innfella valda ferla um 1 px" -#: ../src/verbs.cpp:2661 +#: ../src/verbs.cpp:2770 msgid "I_nset Path by 10 px" msgstr "I_nnfella feril um 10 px" -#: ../src/verbs.cpp:2662 +#: ../src/verbs.cpp:2771 msgid "Inset selected paths by 10 px" msgstr "Innfella valda ferla um 10 px" -#: ../src/verbs.cpp:2664 +#: ../src/verbs.cpp:2773 msgid "D_ynamic Offset" msgstr "Bre_ytileg hliðrun" -#: ../src/verbs.cpp:2664 +#: ../src/verbs.cpp:2773 msgid "Create a dynamic offset object" msgstr "Búa til breytilegan hliðraðan hlut" -#: ../src/verbs.cpp:2666 +#: ../src/verbs.cpp:2775 msgid "_Linked Offset" msgstr "_Tengt hliðrað" -#: ../src/verbs.cpp:2667 +#: ../src/verbs.cpp:2776 msgid "Create a dynamic offset object linked to the original path" msgstr "Búa til breytilegan hliðraðan hlut tengdan við upprunalegan feril" -#: ../src/verbs.cpp:2669 +#: ../src/verbs.cpp:2778 msgid "_Stroke to Path" msgstr "Út_lína í feril" -#: ../src/verbs.cpp:2670 +#: ../src/verbs.cpp:2779 msgid "Convert selected object's stroke to paths" msgstr "Umbreyta útlínum valins hlutar í feril" -#: ../src/verbs.cpp:2671 +#: ../src/verbs.cpp:2780 msgid "_Stroke to Path Legacy" msgstr "Eldri _gerð útlínu í feril" -#: ../src/verbs.cpp:2672 +#: ../src/verbs.cpp:2781 msgid "Convert selected object's stroke to paths legacy mode" msgstr "Umbreyta útlínum valins hlutar í feril samkvæmt gömlu aðferðinni" -#: ../src/verbs.cpp:2673 +#: ../src/verbs.cpp:2782 msgid "Si_mplify" msgstr "Ein_falda" -#: ../src/verbs.cpp:2674 +#: ../src/verbs.cpp:2783 msgid "Simplify selected paths (remove extra nodes)" msgstr "Einfalda valda ferla (fjarlægir aukahnúta)" -#: ../src/verbs.cpp:2675 +#: ../src/verbs.cpp:2784 msgid "_Reverse" msgstr "_Snúa við" -#: ../src/verbs.cpp:2676 +#: ../src/verbs.cpp:2785 msgid "Reverse the direction of selected paths (useful for flipping markers)" msgstr "Snúa við stefnu valinna ferla (nýtist til að snúa við merkjum ferla)" -#: ../src/verbs.cpp:2681 +#: ../src/verbs.cpp:2790 msgid "Create one or more paths from a bitmap by tracing it" msgstr "" "Búa til einn eða fleiri ferla út frá bitamynd með því að draga eftir henni" -#: ../src/verbs.cpp:2684 +#: ../src/verbs.cpp:2793 msgid "Trace Pixel Art..." msgstr "Línuteikna Pixel Art..." -#: ../src/verbs.cpp:2685 +#: ../src/verbs.cpp:2794 msgid "Create paths using Kopf-Lischinski algorithm to vectorize pixel art" msgstr "" "Útbúa ferla með Kopf-Lischinski reikniritinu til að vigurgera pixel art " "myndir" -#: ../src/verbs.cpp:2686 +#: ../src/verbs.cpp:2795 msgid "Make a _Bitmap Copy" msgstr "_Gera afrit sem bitamynd" -#: ../src/verbs.cpp:2687 +#: ../src/verbs.cpp:2796 msgid "Export selection to a bitmap and insert it into document" -msgstr "" +msgstr "Flytja val út í bitamynd og setja hana inn í skjal" -#: ../src/verbs.cpp:2688 +#: ../src/verbs.cpp:2797 msgid "_Combine" msgstr "Sa_meina" -#: ../src/verbs.cpp:2689 +#: ../src/verbs.cpp:2798 msgid "Combine several paths into one" msgstr "Gera einn feril úr nokkrum" #. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the #. Advanced tutorial for more info -#: ../src/verbs.cpp:2692 +#: ../src/verbs.cpp:2801 msgid "Break _Apart" msgstr "_Sundra" -#: ../src/verbs.cpp:2693 +#: ../src/verbs.cpp:2802 msgid "Break selected paths into subpaths" msgstr "Rjúfa valda ferla í undirferla" -#: ../src/verbs.cpp:2694 +#: ../src/verbs.cpp:2803 msgid "_Arrange..." msgstr "R_aða upp..." -#: ../src/verbs.cpp:2695 +#: ../src/verbs.cpp:2804 msgid "Arrange selected objects in a table or circle" msgstr "Raða völdum hlutum í raðir/dálka eða hring" #. Layer -#: ../src/verbs.cpp:2697 +#: ../src/verbs.cpp:2806 msgid "_Add Layer..." msgstr "_Bæta við lagi..." -#: ../src/verbs.cpp:2698 +#: ../src/verbs.cpp:2807 msgid "Create a new layer" msgstr "Búa til nýtt lag" -#: ../src/verbs.cpp:2699 +#: ../src/verbs.cpp:2808 msgid "Re_name Layer..." msgstr "Endur_nefna lag..." -#: ../src/verbs.cpp:2700 +#: ../src/verbs.cpp:2809 msgid "Rename the current layer" msgstr "Endurnefna núverandi lag" -#: ../src/verbs.cpp:2701 +#: ../src/verbs.cpp:2810 msgid "Switch to Layer Abov_e" msgstr "Skipta yfir á næsta lag fyrir _ofan" -#: ../src/verbs.cpp:2702 +#: ../src/verbs.cpp:2811 msgid "Switch to the layer above the current" msgstr "Skipta yfir á lagið sem er fyrir ofan lagið sem þú ert að vinna á núna" -#: ../src/verbs.cpp:2703 +#: ../src/verbs.cpp:2812 msgid "Switch to Layer Belo_w" msgstr "Skipta yfir á næsta lag fyrir _neðan" -#: ../src/verbs.cpp:2704 +#: ../src/verbs.cpp:2813 msgid "Switch to the layer below the current" msgstr "" "Skipta yfir á lagið sem er fyrir neðan lagið sem þú ert að vinna á núna" -#: ../src/verbs.cpp:2705 +#: ../src/verbs.cpp:2814 msgid "Move Selection to Layer Abo_ve" msgstr "Flytja val á næsta lag fyrir _ofan" -#: ../src/verbs.cpp:2706 +#: ../src/verbs.cpp:2815 msgid "Move selection to the layer above the current" msgstr "Flytja val á næsta lag fyrir ofan lagið sem þú ert að vinna á núna" -#: ../src/verbs.cpp:2707 +#: ../src/verbs.cpp:2816 msgid "Move Selection to Layer Bel_ow" msgstr "Flytja val á næsta lag fyrir _neðan" -#: ../src/verbs.cpp:2708 +#: ../src/verbs.cpp:2817 msgid "Move selection to the layer below the current" msgstr "Flytja val á næsta lag fyrir neðan lagið sem þú ert að vinna á núna" -#: ../src/verbs.cpp:2709 +#: ../src/verbs.cpp:2818 msgid "Move Selection to Layer..." msgstr "Flytja val á lagið..." -#: ../src/verbs.cpp:2711 +#: ../src/verbs.cpp:2820 msgid "Layer to _Top" msgstr "Færa lag efs_t" -#: ../src/verbs.cpp:2712 +#: ../src/verbs.cpp:2821 msgid "Raise the current layer to the top" msgstr "Hækka núverandi lag efst" -#: ../src/verbs.cpp:2713 +#: ../src/verbs.cpp:2822 msgid "Layer to _Bottom" msgstr "Færa lag _neðst" -#: ../src/verbs.cpp:2714 +#: ../src/verbs.cpp:2823 msgid "Lower the current layer to the bottom" msgstr "Lækka núverandi lag neðst" -#: ../src/verbs.cpp:2715 +#: ../src/verbs.cpp:2824 msgid "_Raise Layer" msgstr "_Hækka lag" -#: ../src/verbs.cpp:2716 +#: ../src/verbs.cpp:2825 msgid "Raise the current layer" msgstr "Hækka núverandi lag" -#: ../src/verbs.cpp:2717 +#: ../src/verbs.cpp:2826 msgid "_Lower Layer" msgstr "_Lækka lag" -#: ../src/verbs.cpp:2718 +#: ../src/verbs.cpp:2827 msgid "Lower the current layer" msgstr "Lækka núverandi lag" -#: ../src/verbs.cpp:2719 +#: ../src/verbs.cpp:2828 msgid "D_uplicate Current Layer" msgstr "_Tvöfalda núverandi lag" -#: ../src/verbs.cpp:2720 +#: ../src/verbs.cpp:2829 msgid "Duplicate an existing layer" msgstr "Tvöfalda tiltækt lag" -#: ../src/verbs.cpp:2721 +#: ../src/verbs.cpp:2830 msgid "_Delete Current Layer" msgstr "E_yða núverandi lagi" -#: ../src/verbs.cpp:2722 +#: ../src/verbs.cpp:2831 msgid "Delete the current layer" msgstr "Eyða núverandi lagi" -#: ../src/verbs.cpp:2723 +#: ../src/verbs.cpp:2832 msgid "_Show/hide other layers" msgstr "_Birta/Fela önnur lög" -#: ../src/verbs.cpp:2724 +#: ../src/verbs.cpp:2833 msgid "Solo the current layer" msgstr "Einungis núverandi lag" -#: ../src/verbs.cpp:2725 +#: ../src/verbs.cpp:2834 msgid "_Show all layers" msgstr "_Birta öll lög" -#: ../src/verbs.cpp:2726 +#: ../src/verbs.cpp:2835 msgid "Show all the layers" msgstr "Birta öll lögin" -#: ../src/verbs.cpp:2727 +#: ../src/verbs.cpp:2836 msgid "_Hide all layers" msgstr "_Fela öll lög" -#: ../src/verbs.cpp:2728 +#: ../src/verbs.cpp:2837 msgid "Hide all the layers" msgstr "Fela öll lögin" -#: ../src/verbs.cpp:2729 +#: ../src/verbs.cpp:2838 msgid "_Lock all layers" msgstr "_Læsa öllum lögum" -#: ../src/verbs.cpp:2730 +#: ../src/verbs.cpp:2839 msgid "Lock all the layers" msgstr "Læsa öllum lögunum" -#: ../src/verbs.cpp:2731 +#: ../src/verbs.cpp:2840 msgid "Lock/Unlock _other layers" msgstr "Læsa/Aflæsa öðru_m lögum" -#: ../src/verbs.cpp:2732 +#: ../src/verbs.cpp:2841 msgid "Lock all the other layers" msgstr "Læsa öllum hinum lögunum" -#: ../src/verbs.cpp:2733 +#: ../src/verbs.cpp:2842 msgid "_Unlock all layers" msgstr "A_flæsa öllum lögum" -#: ../src/verbs.cpp:2734 +#: ../src/verbs.cpp:2843 msgid "Unlock all the layers" msgstr "Aflæsa öllum lögunum" -#: ../src/verbs.cpp:2735 +#: ../src/verbs.cpp:2844 msgid "_Lock/Unlock Current Layer" msgstr "_Læsa/Aflæsa núverandi lagi" -#: ../src/verbs.cpp:2736 +#: ../src/verbs.cpp:2845 msgid "Toggle lock on current layer" msgstr "Víxla læsingu þessa lags" -#: ../src/verbs.cpp:2737 +#: ../src/verbs.cpp:2846 msgid "_Show/hide Current Layer" msgstr "_Birta/Fela núverandi lag" -#: ../src/verbs.cpp:2738 +#: ../src/verbs.cpp:2847 msgid "Toggle visibility of current layer" msgstr "Víxla sýnileika virks lags" #. Object -#: ../src/verbs.cpp:2741 +#: ../src/verbs.cpp:2850 msgid "Rotate _90° CW" msgstr "Snúa _90° réttsælis" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2744 +#: ../src/verbs.cpp:2853 msgid "Rotate selection 90° clockwise" msgstr "Snúa völdu 90° réttsælis" -#: ../src/verbs.cpp:2745 +#: ../src/verbs.cpp:2854 msgid "Rotate 9_0° CCW" msgstr "Snúa 9_0° rangsælis" #. This is shared between tooltips and statusbar, so they #. must use UTF-8, not HTML entities for special characters. -#: ../src/verbs.cpp:2748 +#: ../src/verbs.cpp:2857 msgid "Rotate selection 90° counter-clockwise" msgstr "Snúa völdu 90° rangsælis" -#: ../src/verbs.cpp:2749 +#: ../src/verbs.cpp:2858 msgid "Remove _Transformations" msgstr "F_jarlægja umbreytingar" -#: ../src/verbs.cpp:2750 +#: ../src/verbs.cpp:2859 msgid "Remove transformations from object" msgstr "Fjarlægja umbreytingar af hlut" -#: ../src/verbs.cpp:2751 +#: ../src/verbs.cpp:2860 msgid "_Object to Path" msgstr "Hlutur í _feril" -#: ../src/verbs.cpp:2752 +#: ../src/verbs.cpp:2861 msgid "Convert selected object to path" msgstr "Umbreyta völdum hlut í feril" -#: ../src/verbs.cpp:2753 +#: ../src/verbs.cpp:2862 msgid "_Flow into Frame" msgstr "Textas_krið í ramma" -#: ../src/verbs.cpp:2754 +#: ../src/verbs.cpp:2863 msgid "" "Put text into a frame (path or shape), creating a flowed text linked to the " "frame object" @@ -26691,738 +27285,800 @@ msgstr "" "Setja texta inn í ramma (feril eða form), búa þannig til flæðitexta sem " "tengdur er rammahlutnum" -#: ../src/verbs.cpp:2755 +#: ../src/verbs.cpp:2864 msgid "_Unflow" msgstr "_Taka af textaskrið" -#: ../src/verbs.cpp:2756 +#: ../src/verbs.cpp:2865 msgid "Remove text from frame (creates a single-line text object)" -msgstr "" +msgstr "Fjarlægja texta af ramma (útbýr einnar-línu textahlut)" -#: ../src/verbs.cpp:2757 +#: ../src/verbs.cpp:2866 msgid "_Convert to Text" msgstr "_Breyta í texta" -#: ../src/verbs.cpp:2758 +#: ../src/verbs.cpp:2867 msgid "Convert flowed text to regular text object (preserves appearance)" msgstr "Umbreyta flæðitexta í venjulegan textahlut (heldur í útlit)" -#: ../src/verbs.cpp:2760 +#: ../src/verbs.cpp:2869 msgid "Flip _Horizontal" msgstr "Spegla _lárétt" -#: ../src/verbs.cpp:2760 +#: ../src/verbs.cpp:2869 msgid "Flip selected objects horizontally" msgstr "Fletta völdum hlutum lárétt" -#: ../src/verbs.cpp:2763 +#: ../src/verbs.cpp:2872 msgid "Flip _Vertical" msgstr "Spegla lóð_rétt" -#: ../src/verbs.cpp:2763 +#: ../src/verbs.cpp:2872 msgid "Flip selected objects vertically" msgstr "Fletta völdum hlutum lóðrétt" -#: ../src/verbs.cpp:2766 +#: ../src/verbs.cpp:2875 msgid "Apply mask to selection (using the topmost object as mask)" msgstr "Beita hulu á myndval (nota efsta hlutinn sem hulu)" -#: ../src/verbs.cpp:2768 +#: ../src/verbs.cpp:2876 ../src/verbs.cpp:2884 ../share/ui/menus.xml.h:2 +msgid "_Edit" +msgstr "Br_eyta" + +#: ../src/verbs.cpp:2877 msgid "Edit mask" msgstr "Breyta hulu" -#: ../src/verbs.cpp:2769 ../src/verbs.cpp:2777 +#: ../src/verbs.cpp:2878 ../src/verbs.cpp:2886 msgid "_Release" msgstr "_Sleppa" -#: ../src/verbs.cpp:2770 +#: ../src/verbs.cpp:2879 msgid "Remove mask from selection" msgstr "Fjarlægja hulu af völdu" -#: ../src/verbs.cpp:2772 +#: ../src/verbs.cpp:2881 msgid "" "Apply clipping path to selection (using the topmost object as clipping path)" msgstr "" "Beita afmörkunarferli á myndval (nota efsta hlutinn sem afmörkunarferil)" -#: ../src/verbs.cpp:2773 +#: ../src/verbs.cpp:2882 msgid "Create Cl_ip Group" msgstr "Búa til afma_rkandi hóp" -#: ../src/verbs.cpp:2774 +#: ../src/verbs.cpp:2883 msgid "Creates a clip group using the selected objects as a base" msgstr "Býr til afmarkandi hóp með völdum atriðum" -#: ../src/verbs.cpp:2776 +#: ../src/verbs.cpp:2885 msgid "Edit clipping path" msgstr "Breyta afmörkunarferli" -#: ../src/verbs.cpp:2778 +#: ../src/verbs.cpp:2887 msgid "Remove clipping path from selection" msgstr "Fjarlægja afmörkunarferil af valinni mynd" #. Tools -#: ../src/verbs.cpp:2783 +#: ../src/verbs.cpp:2892 msgctxt "ContextVerb" msgid "Select" msgstr "Velja" -#: ../src/verbs.cpp:2784 +#: ../src/verbs.cpp:2893 msgid "Select and transform objects" msgstr "Velja og umbreyta hlutum" -#: ../src/verbs.cpp:2785 +#: ../src/verbs.cpp:2894 msgctxt "ContextVerb" msgid "Node Edit" msgstr "Breyta hnútum" -#: ../src/verbs.cpp:2786 +#: ../src/verbs.cpp:2895 msgid "Edit paths by nodes" msgstr "Breyta ferlum með hnútum" -#: ../src/verbs.cpp:2787 +#: ../src/verbs.cpp:2896 msgctxt "ContextVerb" msgid "Tweak" msgstr "Aflaga" -#: ../src/verbs.cpp:2788 +#: ../src/verbs.cpp:2897 msgid "Tweak objects by sculpting or painting" msgstr "Aflaga hluti með málun eða mótun" -#: ../src/verbs.cpp:2789 +#: ../src/verbs.cpp:2898 msgctxt "ContextVerb" msgid "Spray" msgstr "Sprauta" -#: ../src/verbs.cpp:2790 +#: ../src/verbs.cpp:2899 msgid "Spray objects by sculpting or painting" msgstr "Sprauta hluti með málun eða mótun" -#: ../src/verbs.cpp:2791 +#: ../src/verbs.cpp:2900 msgctxt "ContextVerb" msgid "Rectangle" msgstr "Rétthyrningur" -#: ../src/verbs.cpp:2792 +#: ../src/verbs.cpp:2901 msgid "Create rectangles and squares" msgstr "Teiknar rétthyrninga og ferninga" -#: ../src/verbs.cpp:2793 +#: ../src/verbs.cpp:2902 msgctxt "ContextVerb" msgid "3D Box" msgstr "Þrívíddarkassi" -#: ../src/verbs.cpp:2794 +#: ../src/verbs.cpp:2903 msgid "Create 3D boxes" msgstr "Búa til þrívíddarkassa" -#: ../src/verbs.cpp:2795 +#: ../src/verbs.cpp:2904 msgctxt "ContextVerb" msgid "Ellipse" msgstr "Sporbaugur" -#: ../src/verbs.cpp:2796 +#: ../src/verbs.cpp:2905 msgid "Create circles, ellipses, and arcs" msgstr "Teiknar hringi, sporbauga, hringgeira og boga" -#: ../src/verbs.cpp:2797 +#: ../src/verbs.cpp:2906 msgctxt "ContextVerb" msgid "Star" msgstr "Stjarna" -#: ../src/verbs.cpp:2798 +#: ../src/verbs.cpp:2907 msgid "Create stars and polygons" msgstr "Teikna stjörnur og marghyrninga" -#: ../src/verbs.cpp:2799 +#: ../src/verbs.cpp:2908 msgctxt "ContextVerb" msgid "Spiral" msgstr "Spírall" -#: ../src/verbs.cpp:2800 +#: ../src/verbs.cpp:2909 msgid "Create spirals" msgstr "Búa til spírala" -#: ../src/verbs.cpp:2801 +#: ../src/verbs.cpp:2910 msgctxt "ContextVerb" msgid "Pencil" msgstr "Blýantur" -#: ../src/verbs.cpp:2802 +#: ../src/verbs.cpp:2911 msgid "Draw freehand lines" msgstr "Teikna fríhendislínur" -#: ../src/verbs.cpp:2803 +#: ../src/verbs.cpp:2912 msgctxt "ContextVerb" msgid "Pen" msgstr "Penni" -#: ../src/verbs.cpp:2804 +#: ../src/verbs.cpp:2913 msgid "Draw Bezier curves and straight lines" msgstr "Teiknar Bezier-ferla og beinar línur" -#: ../src/verbs.cpp:2805 +#: ../src/verbs.cpp:2914 msgctxt "ContextVerb" msgid "Calligraphy" msgstr "Skrautskrift" -#: ../src/verbs.cpp:2806 +#: ../src/verbs.cpp:2915 msgid "Draw calligraphic or brush strokes" msgstr "Teiknar skrautskriftar- eða pensildrætti" -#: ../src/verbs.cpp:2808 +#: ../src/verbs.cpp:2917 msgid "Create and edit text objects" msgstr "Búa til og breyta textahlutum" -#: ../src/verbs.cpp:2809 +#: ../src/verbs.cpp:2918 msgctxt "ContextVerb" msgid "Gradient" msgstr "Litstigull" -#: ../src/verbs.cpp:2810 +#: ../src/verbs.cpp:2919 msgid "Create and edit gradients" msgstr "Búa til og breyta litstiglum" -#: ../src/verbs.cpp:2811 +#: ../src/verbs.cpp:2920 msgctxt "ContextVerb" msgid "Mesh" msgstr "Möskvi" -#: ../src/verbs.cpp:2812 +#: ../src/verbs.cpp:2921 msgid "Create and edit meshes" msgstr "Búa til og breyta möskvum" -#: ../src/verbs.cpp:2813 +#: ../src/verbs.cpp:2922 msgctxt "ContextVerb" msgid "Zoom" msgstr "Aðdráttur" -#: ../src/verbs.cpp:2814 +#: ../src/verbs.cpp:2923 msgid "Zoom in or out" msgstr "Renna að eða frá" -#: ../src/verbs.cpp:2816 +#: ../src/verbs.cpp:2925 msgid "Measurement tool" msgstr "Málband" -#: ../src/verbs.cpp:2817 +#: ../src/verbs.cpp:2926 msgctxt "ContextVerb" msgid "Dropper" msgstr "Litaplokkari" -#: ../src/verbs.cpp:2819 +#: ../src/verbs.cpp:2928 msgctxt "ContextVerb" msgid "Connector" msgstr "Tengilína" -#: ../src/verbs.cpp:2820 +#: ../src/verbs.cpp:2929 msgid "Create diagram connectors" msgstr "Búa til tengilínur fyrir flæðirit" -#: ../src/verbs.cpp:2823 +#: ../src/verbs.cpp:2932 msgctxt "ContextVerb" msgid "Paint Bucket" msgstr "Fötufylla" -#: ../src/verbs.cpp:2824 +#: ../src/verbs.cpp:2933 msgid "Fill bounded areas" msgstr "Fylla afmörkuð svæði" -#: ../src/verbs.cpp:2827 +#: ../src/verbs.cpp:2936 msgctxt "ContextVerb" msgid "LPE Edit" msgstr "LPE breyting" -#: ../src/verbs.cpp:2828 +#: ../src/verbs.cpp:2937 msgid "Edit Path Effect parameters" msgstr "Breyta viðföngum ferilbrellna" -#: ../src/verbs.cpp:2829 +#: ../src/verbs.cpp:2938 msgctxt "ContextVerb" msgid "Eraser" msgstr "Strokleður" -#: ../src/verbs.cpp:2830 +#: ../src/verbs.cpp:2939 msgid "Erase existing paths" msgstr "Stroka út ferla" -#: ../src/verbs.cpp:2831 +#: ../src/verbs.cpp:2940 msgctxt "ContextVerb" msgid "LPE Tool" msgstr "LPE verkfæri" -#: ../src/verbs.cpp:2832 +#: ../src/verbs.cpp:2941 msgid "Do geometric constructions" msgstr "Gera rúmfræðilega byggingu" #. Tool prefs -#: ../src/verbs.cpp:2834 +#: ../src/verbs.cpp:2943 msgid "Selector Preferences" msgstr "Stillingar valtóls" -#: ../src/verbs.cpp:2835 +#: ../src/verbs.cpp:2944 msgid "Open Preferences for the Selector tool" msgstr "Opna stillingar fyrir valverkfærið" -#: ../src/verbs.cpp:2836 +#: ../src/verbs.cpp:2945 msgid "Node Tool Preferences" msgstr "Kjörstillingar hnútaverkfæris" -#: ../src/verbs.cpp:2837 +#: ../src/verbs.cpp:2946 msgid "Open Preferences for the Node tool" msgstr "Opna stillingar fyrir hnútaverkfærið" -#: ../src/verbs.cpp:2838 +#: ../src/verbs.cpp:2947 msgid "Tweak Tool Preferences" msgstr "Kjörstillingar aflögunar" -#: ../src/verbs.cpp:2839 +#: ../src/verbs.cpp:2948 msgid "Open Preferences for the Tweak tool" msgstr "Opna stillingar fyrir aflögunarverkfærið" -#: ../src/verbs.cpp:2840 +#: ../src/verbs.cpp:2949 msgid "Spray Tool Preferences" msgstr "Kjörstillingar sprautunar" -#: ../src/verbs.cpp:2841 +#: ../src/verbs.cpp:2950 msgid "Open Preferences for the Spray tool" msgstr "Opna stillingar fyrir sprautuverkfærið" -#: ../src/verbs.cpp:2842 +#: ../src/verbs.cpp:2951 msgid "Rectangle Preferences" msgstr "Eiginleikar rétthyrnings" -#: ../src/verbs.cpp:2843 +#: ../src/verbs.cpp:2952 msgid "Open Preferences for the Rectangle tool" msgstr "Opna stillingar fyrir rétthyrningaverkfærið" -#: ../src/verbs.cpp:2844 +#: ../src/verbs.cpp:2953 msgid "3D Box Preferences" msgstr "Stillingar þrívíddarkassa" -#: ../src/verbs.cpp:2845 +#: ../src/verbs.cpp:2954 msgid "Open Preferences for the 3D Box tool" msgstr "Opna stillingar fyrir þrívíddarkassaverkfærið" -#: ../src/verbs.cpp:2846 +#: ../src/verbs.cpp:2955 msgid "Ellipse Preferences" msgstr "Kjörstillingar sporbaugs" -#: ../src/verbs.cpp:2847 +#: ../src/verbs.cpp:2956 msgid "Open Preferences for the Ellipse tool" msgstr "Opna stillingar fyrir sporbaugsverkfærið" -#: ../src/verbs.cpp:2848 +#: ../src/verbs.cpp:2957 msgid "Star Preferences" msgstr "Kjörstillingar stjörnu" -#: ../src/verbs.cpp:2849 +#: ../src/verbs.cpp:2958 msgid "Open Preferences for the Star tool" msgstr "Opna stillingar fyrir stjörnuverkfærið" -#: ../src/verbs.cpp:2850 +#: ../src/verbs.cpp:2959 msgid "Spiral Preferences" msgstr "Eiginleikar spírals" -#: ../src/verbs.cpp:2851 +#: ../src/verbs.cpp:2960 msgid "Open Preferences for the Spiral tool" msgstr "Opna stillingar fyrir spíralverkfærið" -#: ../src/verbs.cpp:2852 +#: ../src/verbs.cpp:2961 msgid "Pencil Preferences" msgstr "Kjörstillingar blýants" -#: ../src/verbs.cpp:2853 +#: ../src/verbs.cpp:2962 msgid "Open Preferences for the Pencil tool" msgstr "Opna stillingar fyrir blýantsverkfærið" -#: ../src/verbs.cpp:2854 +#: ../src/verbs.cpp:2963 msgid "Pen Preferences" msgstr "Kjörstillingar penna" -#: ../src/verbs.cpp:2855 +#: ../src/verbs.cpp:2964 msgid "Open Preferences for the Pen tool" msgstr "Opna stillingar fyrir pennaverkfærið" -#: ../src/verbs.cpp:2856 +#: ../src/verbs.cpp:2965 msgid "Calligraphic Preferences" msgstr "Kjörstillingar skrautskriftar" -#: ../src/verbs.cpp:2857 +#: ../src/verbs.cpp:2966 msgid "Open Preferences for the Calligraphy tool" msgstr "Opna stillingar fyrir skrautskriftarverkfærið" -#: ../src/verbs.cpp:2858 +#: ../src/verbs.cpp:2967 msgid "Text Preferences" msgstr "Kjörstillingar texta" -#: ../src/verbs.cpp:2859 +#: ../src/verbs.cpp:2968 msgid "Open Preferences for the Text tool" msgstr "Opna stillingar fyrir pennaverkfærið" -#: ../src/verbs.cpp:2860 +#: ../src/verbs.cpp:2969 msgid "Gradient Preferences" msgstr "Kjörstillingar litstiguls" -#: ../src/verbs.cpp:2861 +#: ../src/verbs.cpp:2970 msgid "Open Preferences for the Gradient tool" msgstr "Opna stillingar fyrir litstiglaverkfærið" -#: ../src/verbs.cpp:2862 +#: ../src/verbs.cpp:2971 msgid "Mesh Preferences" msgstr "Kjörstillingar möskva" -#: ../src/verbs.cpp:2863 +#: ../src/verbs.cpp:2972 msgid "Open Preferences for the Mesh tool" msgstr "Opna stillingar fyrir möskvaverkfærið" -#: ../src/verbs.cpp:2864 +#: ../src/verbs.cpp:2973 msgid "Zoom Preferences" msgstr "Kjörstillingar aðdráttar" -#: ../src/verbs.cpp:2865 +#: ../src/verbs.cpp:2974 msgid "Open Preferences for the Zoom tool" msgstr "Opna stillingar fyrir aðdráttarverkfærið" -#: ../src/verbs.cpp:2866 +#: ../src/verbs.cpp:2975 msgid "Measure Preferences" msgstr "Kjörstillingar málbands" -#: ../src/verbs.cpp:2867 +#: ../src/verbs.cpp:2976 msgid "Open Preferences for the Measure tool" msgstr "Opna stillingar fyrir málbandið" -#: ../src/verbs.cpp:2868 +#: ../src/verbs.cpp:2977 msgid "Dropper Preferences" msgstr "Kjörstillingar litplokkara" -#: ../src/verbs.cpp:2869 +#: ../src/verbs.cpp:2978 msgid "Open Preferences for the Dropper tool" msgstr "Opna stillingar fyrir litplokkaraverkfærið" -#: ../src/verbs.cpp:2870 +#: ../src/verbs.cpp:2979 msgid "Connector Preferences" msgstr "Kjörstillingar tengilínu" -#: ../src/verbs.cpp:2871 +#: ../src/verbs.cpp:2980 msgid "Open Preferences for the Connector tool" msgstr "Opna stillingar fyrir tengilínuverkfærið" -#: ../src/verbs.cpp:2874 +#: ../src/verbs.cpp:2983 msgid "Paint Bucket Preferences" msgstr "Kjörstillingar fötufyllingar" -#: ../src/verbs.cpp:2875 +#: ../src/verbs.cpp:2984 msgid "Open Preferences for the Paint Bucket tool" msgstr "Opna stillingar fyrir fötufyllingarverkfærið" -#: ../src/verbs.cpp:2878 +#: ../src/verbs.cpp:2987 msgid "Eraser Preferences" msgstr "Eiginleikar strokleðurs" -#: ../src/verbs.cpp:2879 +#: ../src/verbs.cpp:2988 msgid "Open Preferences for the Eraser tool" msgstr "Opna stillingar fyrir strokleðurverkfærið" -#: ../src/verbs.cpp:2880 +#: ../src/verbs.cpp:2989 msgid "LPE Tool Preferences" msgstr "Kjörstillingar LPE-verkfæris" -#: ../src/verbs.cpp:2881 +#: ../src/verbs.cpp:2990 msgid "Open Preferences for the LPETool tool" msgstr "Opna stillingar fyrir LPETool verkfærið" -#. Zoom/View -#: ../src/verbs.cpp:2883 +#. Zoom +#: ../src/verbs.cpp:2993 msgid "Zoom In" msgstr "Renna að" -#: ../src/verbs.cpp:2883 +#: ../src/verbs.cpp:2993 msgid "Zoom in" msgstr "Renna að" -#: ../src/verbs.cpp:2884 +#: ../src/verbs.cpp:2994 msgid "Zoom Out" msgstr "Renna frá" -#: ../src/verbs.cpp:2884 +#: ../src/verbs.cpp:2994 msgid "Zoom out" msgstr "Renna frá" -#: ../src/verbs.cpp:2885 +#: ../src/verbs.cpp:2995 +msgid "Nex_t Zoom" +msgstr "Næs_ti aðdráttur" + +#: ../src/verbs.cpp:2995 +msgid "Next zoom (from the history of zooms)" +msgstr "Næsti aðdráttur (úr ferli aðdrátta)" + +#: ../src/verbs.cpp:2997 +msgid "Pre_vious Zoom" +msgstr "Fy_rri aðdráttur" + +#: ../src/verbs.cpp:2997 +msgid "Previous zoom (from the history of zooms)" +msgstr "Fyrri aðdráttur (úr ferli aðdrátta)" + +#: ../src/verbs.cpp:2999 +msgid "Zoom 1:_1" +msgstr "Aðdráttur 1:_1" + +#: ../src/verbs.cpp:2999 +msgid "Zoom to 1:1" +msgstr "Aðdráttur í 1:1" + +#: ../src/verbs.cpp:3001 +msgid "Zoom 1:_2" +msgstr "Aðdráttur 1:_2" + +#: ../src/verbs.cpp:3001 +msgid "Zoom to 1:2" +msgstr "Aðdráttur í 1:2" + +#: ../src/verbs.cpp:3003 +msgid "_Zoom 2:1" +msgstr "Aðdrá_ttur 2:1" + +#: ../src/verbs.cpp:3003 +msgid "Zoom to 2:1" +msgstr "Aðdráttur í 2:1" + +#: ../src/verbs.cpp:3006 +msgid "Zoom to fit page in window" +msgstr "Laga aðdrátt síðu að glugga" + +#: ../src/verbs.cpp:3007 +msgid "Page _Width" +msgstr "_Breidd síðu" + +#: ../src/verbs.cpp:3008 +msgid "Zoom to fit page width in window" +msgstr "Laga aðdrátt breiddar síðu að glugga" + +#: ../src/verbs.cpp:3010 +msgid "Zoom to fit drawing in window" +msgstr "Laga aðdrátt teikningar að glugga" + +#: ../src/verbs.cpp:3012 +msgid "Zoom to fit selection in window" +msgstr "Laga aðdrátt valins að glugga" + +#: ../src/verbs.cpp:3014 +msgid "Rotate Clockwise" +msgstr "Snúa réttsælis" + +#: ../src/verbs.cpp:3014 +msgid "Rotate canvas clockwise" +msgstr "Snúa myndfleti réttsælis" + +#: ../src/verbs.cpp:3015 +msgid "Rotate Counter-Clockwise" +msgstr "Snúa rangsælis" + +#: ../src/verbs.cpp:3015 +msgid "Rotate canvas counter-clockwise" +msgstr "Snúa myndfleti rangsælis" + +#: ../src/verbs.cpp:3016 +msgid "Rotate Zero" +msgstr "Enginn snúningur" + +#: ../src/verbs.cpp:3016 +msgid "Reset canvas rotation to zero" +msgstr "Núllstilla snúning myndflatar" + +#: ../src/verbs.cpp:3018 +msgid "Flip Horizontal" +msgstr "Fletta lárétt" + +#: ../src/verbs.cpp:3018 +msgid "Flip canvas horizontally" +msgstr "Fletta myndfleti lárétt" + +#: ../src/verbs.cpp:3019 +msgid "Flip Vertical" +msgstr "Fletta lóðrétt" + +#: ../src/verbs.cpp:3019 +msgid "Flip canvas vertically" +msgstr "Fletta myndfleti lóðrétt" + +#: ../src/verbs.cpp:3020 +msgid "Flip None" +msgstr "Engin fletting" + +#: ../src/verbs.cpp:3020 +msgid "Undo any flip" +msgstr "Afturkalla allar flettingar" + +#. WHY ARE THE FOLLOWING ZoomVerbs??? +#. View +#: ../src/verbs.cpp:3026 msgid "_Rulers" msgstr "_Mælistikur" -#: ../src/verbs.cpp:2885 +#: ../src/verbs.cpp:3026 msgid "Show or hide the canvas rulers" msgstr "Birta eða fela mælistikur myndflatar" -#: ../src/verbs.cpp:2886 +#: ../src/verbs.cpp:3027 msgid "Scroll_bars" msgstr "S_krunstikur" -#: ../src/verbs.cpp:2886 +#: ../src/verbs.cpp:3027 msgid "Show or hide the canvas scrollbars" msgstr "Birta eða fela skrunstikur myndflatar" -#: ../src/verbs.cpp:2887 +#: ../src/verbs.cpp:3028 msgid "Page _Grid" msgstr "_Hnitanet síðu" -#: ../src/verbs.cpp:2887 +#: ../src/verbs.cpp:3028 msgid "Show or hide the page grid" msgstr "Birta eða fela hnitanet síðu" -#: ../src/verbs.cpp:2888 +#: ../src/verbs.cpp:3029 msgid "G_uides" msgstr "St_oðlínur" -#: ../src/verbs.cpp:2888 +#: ../src/verbs.cpp:3029 msgid "Show or hide guides (drag from a ruler to create a guide)" msgstr "Birta eða fela stoðlínur (draga af mælistiku til að búa til stoðlínu)" -#: ../src/verbs.cpp:2889 +#: ../src/verbs.cpp:3030 msgid "Enable snapping" msgstr "Virkja grip" -#: ../src/verbs.cpp:2890 +#: ../src/verbs.cpp:3031 msgid "_Commands Bar" msgstr "Ski_panaslá" -#: ../src/verbs.cpp:2890 +#: ../src/verbs.cpp:3031 msgid "Show or hide the Commands bar (under the menu)" msgstr "Birta eða fela skipanaslána (undir valmyndinni)" -#: ../src/verbs.cpp:2891 +#: ../src/verbs.cpp:3032 msgid "Sn_ap Controls Bar" msgstr "_Gripstýrislá" -#: ../src/verbs.cpp:2891 +#: ../src/verbs.cpp:3032 msgid "Show or hide the snapping controls" msgstr "Birta eða fela stjórntæki fyrir grip" -#: ../src/verbs.cpp:2892 +#: ../src/verbs.cpp:3033 msgid "T_ool Controls Bar" msgstr "Ver_kfærastýrislá" -#: ../src/verbs.cpp:2892 +#: ../src/verbs.cpp:3033 msgid "Show or hide the Tool Controls bar" msgstr "Birta eða fela verkfærastýrislá" -#: ../src/verbs.cpp:2893 +#: ../src/verbs.cpp:3034 msgid "_Toolbox" msgstr "_Verkfærakassi" -#: ../src/verbs.cpp:2893 +#: ../src/verbs.cpp:3034 msgid "Show or hide the main toolbox (on the left)" msgstr "Birta eða fela aðalverfærakassann (til vinstri)" -#: ../src/verbs.cpp:2894 +#: ../src/verbs.cpp:3035 msgid "_Palette" msgstr "_Litaspjald" -#: ../src/verbs.cpp:2894 +#: ../src/verbs.cpp:3035 msgid "Show or hide the color palette" msgstr "Birta eða fela litaspjaldið" -#: ../src/verbs.cpp:2895 +#: ../src/verbs.cpp:3036 msgid "_Statusbar" msgstr "_Stöðustika" -#: ../src/verbs.cpp:2895 +#: ../src/verbs.cpp:3036 msgid "Show or hide the statusbar (at the bottom of the window)" msgstr "Birta eða fela stöðustikuna (neðst í þessum glugga)" -#: ../src/verbs.cpp:2896 -msgid "Nex_t Zoom" -msgstr "Næs_ti aðdráttur" - -#: ../src/verbs.cpp:2896 -msgid "Next zoom (from the history of zooms)" -msgstr "Næsti aðdráttur (úr ferli aðdrátta)" - -#: ../src/verbs.cpp:2898 -msgid "Pre_vious Zoom" -msgstr "Fy_rri aðdráttur" - -#: ../src/verbs.cpp:2898 -msgid "Previous zoom (from the history of zooms)" -msgstr "Fyrri aðdráttur (úr ferli aðdrátta)" - -#: ../src/verbs.cpp:2900 -msgid "Zoom 1:_1" -msgstr "Aðdráttur 1:_1" - -#: ../src/verbs.cpp:2900 -msgid "Zoom to 1:1" -msgstr "Aðdráttur í 1:1" - -#: ../src/verbs.cpp:2902 -msgid "Zoom 1:_2" -msgstr "Aðdráttur 1:_2" - -#: ../src/verbs.cpp:2902 -msgid "Zoom to 1:2" -msgstr "Aðdráttur í 1:2" - -#: ../src/verbs.cpp:2904 -msgid "_Zoom 2:1" -msgstr "Aðdrá_ttur 2:1" - -#: ../src/verbs.cpp:2904 -msgid "Zoom to 2:1" -msgstr "Aðdráttur í 2:1" - -#: ../src/verbs.cpp:2906 +#: ../src/verbs.cpp:3038 msgid "_Fullscreen" msgstr "_Heilskjár" -#: ../src/verbs.cpp:2906 ../src/verbs.cpp:2908 +#: ../src/verbs.cpp:3038 ../src/verbs.cpp:3040 msgid "Stretch this document window to full screen" msgstr "Skoða þennan vinnuglugga á öllum skjánum" -#: ../src/verbs.cpp:2908 +#: ../src/verbs.cpp:3040 msgid "Fullscreen & Focus Mode" msgstr "Skjáfylli & Áhersluhamur" -#: ../src/verbs.cpp:2910 +#: ../src/verbs.cpp:3042 msgid "Toggle _Focus Mode" msgstr "Ví_xla áhersluham" -#: ../src/verbs.cpp:2910 +#: ../src/verbs.cpp:3042 msgid "Remove excess toolbars to focus on drawing" msgstr "Fjarlægja umfram verkfærastikur þegar áhersla er á teikningu" -#: ../src/verbs.cpp:2912 +#: ../src/verbs.cpp:3044 msgid "Duplic_ate Window" msgstr "_Afrita glugga" -#: ../src/verbs.cpp:2912 +#: ../src/verbs.cpp:3044 msgid "Open a new window with the same document" msgstr "Opna nýjan glugga með sama skjali" -#: ../src/verbs.cpp:2914 +#: ../src/verbs.cpp:3046 msgid "_New View Preview" msgstr "Forskoðun _nýrrar sýnar" -#: ../src/verbs.cpp:2915 +#: ../src/verbs.cpp:3047 msgid "New View Preview" msgstr "Forskoðun nýrrar sýnar" #. "view_new_preview" -#: ../src/verbs.cpp:2917 ../src/verbs.cpp:2925 +#: ../src/verbs.cpp:3049 ../src/verbs.cpp:3057 msgid "_Normal" msgstr "_Venjulegt" -#: ../src/verbs.cpp:2918 +#: ../src/verbs.cpp:3050 msgid "Switch to normal display mode" msgstr "Fara í venjulegan birtingarham" -#: ../src/verbs.cpp:2919 +#: ../src/verbs.cpp:3051 msgid "No _Filters" msgstr "En_gar síur" -#: ../src/verbs.cpp:2920 +#: ../src/verbs.cpp:3052 msgid "Switch to normal display without filters" msgstr "Fara í venjulegan birtingarham án sía" -#: ../src/verbs.cpp:2921 +#: ../src/verbs.cpp:3053 msgid "_Outline" msgstr "Útlín_ur" -#: ../src/verbs.cpp:2922 +#: ../src/verbs.cpp:3054 msgid "Switch to outline (wireframe) display mode" msgstr "Fara í birtingarham fyrir útlínur (víravirki)" #. new ZoomVerb(SP_VERB_VIEW_COLOR_MODE_PRINT_COLORS_PREVIEW, "ViewColorModePrintColorsPreview", N_("_Print Colors Preview"), #. N_("Switch to print colors preview mode"), NULL), -#: ../src/verbs.cpp:2923 ../src/verbs.cpp:2931 +#: ../src/verbs.cpp:3055 ../src/verbs.cpp:3063 msgid "_Toggle" msgstr "Ví_xla" -#: ../src/verbs.cpp:2924 +#: ../src/verbs.cpp:3056 msgid "Toggle between normal and outline display modes" msgstr "Víxla milli venjulegs og útlínubirtingarhams" -#: ../src/verbs.cpp:2926 +#: ../src/verbs.cpp:3058 msgid "Switch to normal color display mode" msgstr "Fara í venjulegan litbirtingarham" -#: ../src/verbs.cpp:2927 +#: ../src/verbs.cpp:3059 msgid "_Grayscale" msgstr "_Grátóna" -#: ../src/verbs.cpp:2928 +#: ../src/verbs.cpp:3060 msgid "Switch to grayscale display mode" msgstr "Fara í grátóna birtingarham" -#: ../src/verbs.cpp:2932 +#: ../src/verbs.cpp:3064 msgid "Toggle between normal and grayscale color display modes" msgstr "Víxla milli venjulegs og grátónabirtingarhams" -#: ../src/verbs.cpp:2934 +#: ../src/verbs.cpp:3066 msgid "Color-managed view" msgstr "Litstýrð sýn" -#: ../src/verbs.cpp:2935 +#: ../src/verbs.cpp:3067 msgid "Toggle color-managed display for this document window" msgstr "Víxla af/á litstýrðri sýn í þessum vinnuglugga" -#: ../src/verbs.cpp:2937 +#: ../src/verbs.cpp:3069 msgid "Ico_n Preview..." msgstr "Ták_nmyndaforskoðun..." -#: ../src/verbs.cpp:2938 +#: ../src/verbs.cpp:3070 msgid "Open a window to preview objects at different icon resolutions" msgstr "" "Opna glugga til að forskoða hluti sem táknmyndir í mismunandi upplausnum" -#: ../src/verbs.cpp:2940 -msgid "Zoom to fit page in window" -msgstr "Laga aðdrátt síðu að glugga" - -#: ../src/verbs.cpp:2941 -msgid "Page _Width" -msgstr "_Breidd síðu" - -#: ../src/verbs.cpp:2942 -msgid "Zoom to fit page width in window" -msgstr "Laga aðdrátt breiddar síðu að glugga" - -#: ../src/verbs.cpp:2944 -msgid "Zoom to fit drawing in window" -msgstr "Laga aðdrátt teikningar að glugga" +#. Dialogs +#: ../src/verbs.cpp:3073 +msgid "Prototype..." +msgstr "Frumgerð..." -#: ../src/verbs.cpp:2946 -msgid "Zoom to fit selection in window" -msgstr "Laga aðdrátt valins að glugga" +#: ../src/verbs.cpp:3074 +msgid "Prototype Dialog" +msgstr "Samskiptagluggi fyrir frumgerð" -#. Dialogs -#: ../src/verbs.cpp:2949 +#: ../src/verbs.cpp:3075 msgid "P_references..." msgstr "_Kjörstillingar..." -#: ../src/verbs.cpp:2950 +#: ../src/verbs.cpp:3076 msgid "Edit global Inkscape preferences" msgstr "Sýsla með víðværar kjörstillingar Inkscape" -#: ../src/verbs.cpp:2951 +#: ../src/verbs.cpp:3077 msgid "_Document Properties..." msgstr "Skráarei_ginleikar..." -#: ../src/verbs.cpp:2952 +#: ../src/verbs.cpp:3078 msgid "Edit properties of this document (to be saved with the document)" msgstr "Breyta eiginleikum þessa skjals (til vistunar með skjalinu)" -#: ../src/verbs.cpp:2953 +#: ../src/verbs.cpp:3079 msgid "Document _Metadata..." msgstr "Lýsi_gögn skjals..." -#: ../src/verbs.cpp:2954 +#: ../src/verbs.cpp:3080 msgid "Edit document metadata (to be saved with the document)" msgstr "Breyta lýsigögnum skjals (til vistunar með skjali)" -#: ../src/verbs.cpp:2956 +#: ../src/verbs.cpp:3082 msgid "" "Edit objects' colors, gradients, arrowheads, and other fill and stroke " "properties..." @@ -27431,421 +28087,439 @@ msgstr "" "fyllingar og útlínu..." #. FIXME: Probably better to either use something from the icon naming spec or ship our own "select-font" icon -#: ../src/verbs.cpp:2958 +#: ../src/verbs.cpp:3084 msgid "Gl_yphs..." msgstr "Sta_ftákn..." -#: ../src/verbs.cpp:2959 +#: ../src/verbs.cpp:3085 msgid "Select characters from a glyphs palette" msgstr "Veldu stafi úr staftáknatöflu" #. FIXME: Probably better to either use something from the icon naming spec or ship our own "select-color" icon #. TRANSLATORS: "Swatches" means: color samples -#: ../src/verbs.cpp:2962 +#: ../src/verbs.cpp:3088 msgid "S_watches..." msgstr "Lita_prufur..." -#: ../src/verbs.cpp:2963 +#: ../src/verbs.cpp:3089 msgid "Select colors from a swatches palette" msgstr "Velja liti af litaprufuspjaldi" -#: ../src/verbs.cpp:2964 +#: ../src/verbs.cpp:3090 msgid "S_ymbols..." msgstr "Tá_kn..." -#: ../src/verbs.cpp:2965 +#: ../src/verbs.cpp:3091 msgid "Select symbol from a symbols palette" msgstr "Veldu tákn úr táknatöflu" -#: ../src/verbs.cpp:2966 +#: ../src/verbs.cpp:3092 msgid "Transfor_m..." msgstr "U_mmynda..." -#: ../src/verbs.cpp:2967 +#: ../src/verbs.cpp:3093 msgid "Precisely control objects' transformations" msgstr "Stýra umbreytingum hluta nákvæmt" -#: ../src/verbs.cpp:2968 +#: ../src/verbs.cpp:3094 msgid "_Align and Distribute..." msgstr "J_afna og dreifa..." -#: ../src/verbs.cpp:2969 +#: ../src/verbs.cpp:3095 msgid "Align and distribute objects" msgstr "Jafna og dreifa hlutum" -#: ../src/verbs.cpp:2970 +#: ../src/verbs.cpp:3096 msgid "_Spray options..." msgstr "Valkostir _sprautunar..." -#: ../src/verbs.cpp:2971 +#: ../src/verbs.cpp:3097 msgid "Some options for the spray" msgstr "Nokkrir valkostir fyrir sprautun" -#: ../src/verbs.cpp:2972 +#: ../src/verbs.cpp:3098 msgid "Undo _History..." msgstr "_Ferill afturkallana..." -#: ../src/verbs.cpp:2973 +#: ../src/verbs.cpp:3099 msgid "Undo History" msgstr "Ferill afturkallana" -#: ../src/verbs.cpp:2975 +#: ../src/verbs.cpp:3101 msgid "View and select font family, font size and other text properties" msgstr "Skoða og velja leturgerð, leturstærð og aðra eiginleika texta" -#: ../src/verbs.cpp:2976 +#: ../src/verbs.cpp:3102 msgid "_XML Editor..." msgstr "_XML ritill..." -#: ../src/verbs.cpp:2977 +#: ../src/verbs.cpp:3103 msgid "View and edit the XML tree of the document" msgstr "Skoða og breyta XML-greinum skjalsins" -#: ../src/verbs.cpp:2978 +#: ../src/verbs.cpp:3104 msgid "_Find/Replace..." msgstr "_Finna og skipta út..." -#: ../src/verbs.cpp:2979 +#: ../src/verbs.cpp:3105 msgid "Find objects in document" msgstr "Leita að hlutum í skjali" -#: ../src/verbs.cpp:2980 +#: ../src/verbs.cpp:3106 msgid "Find and _Replace Text..." msgstr "Finna og skipta út te_xta..." -#: ../src/verbs.cpp:2981 +#: ../src/verbs.cpp:3107 msgid "Find and replace text in document" msgstr "Finna og skipta út texta í skjali" -#: ../src/verbs.cpp:2983 +#: ../src/verbs.cpp:3109 msgid "Check spelling of text in document" msgstr "Yfirfara stafsetningu í skjali" -#: ../src/verbs.cpp:2984 +#: ../src/verbs.cpp:3110 msgid "_Messages..." msgstr "Skila_boð..." -#: ../src/verbs.cpp:2985 +#: ../src/verbs.cpp:3111 msgid "View debug messages" msgstr "Skoða aflúsunarmeldingar" -#: ../src/verbs.cpp:2986 +#: ../src/verbs.cpp:3112 msgid "Show/Hide D_ialogs" msgstr "Birta/Fela samskipta_glugga" -#: ../src/verbs.cpp:2987 +#: ../src/verbs.cpp:3113 msgid "Show or hide all open dialogs" msgstr "Birta eða fela alla opna glugga" -#: ../src/verbs.cpp:2988 +#: ../src/verbs.cpp:3114 msgid "Create Tiled Clones..." msgstr "Búa til tiglaða klóna..." -#: ../src/verbs.cpp:2989 +#: ../src/verbs.cpp:3115 msgid "" "Create multiple clones of selected object, arranging them into a pattern or " "scattering" msgstr "Búa til marga klóna afvöldum hlut, raða þeim upp í mynstur eða dreif" -#: ../src/verbs.cpp:2990 +#: ../src/verbs.cpp:3116 msgid "_Object attributes..." msgstr "_Eigindi hlutar..." -#: ../src/verbs.cpp:2991 +#: ../src/verbs.cpp:3117 msgid "Edit the object attributes..." msgstr "Breyta eigindum hlutar..." -#: ../src/verbs.cpp:2993 +#: ../src/verbs.cpp:3119 msgid "Edit the ID, locked and visible status, and other object properties" msgstr "" "Breyttu auðkenni, stöðu læsinga og sýnileika, ásamt öðrum eiginleikum hlutar" -#: ../src/verbs.cpp:2994 +#: ../src/verbs.cpp:3120 msgid "_Input Devices..." msgstr "_Inntakstæki..." -#: ../src/verbs.cpp:2995 +#: ../src/verbs.cpp:3121 msgid "Configure extended input devices, such as a graphics tablet" msgstr "Stilla aukaleg inntakstæki, eins og teiknitöflur" -#: ../src/verbs.cpp:2996 +#: ../src/verbs.cpp:3122 msgid "_Extensions..." msgstr "_Viðbætur..." -#: ../src/verbs.cpp:2997 +#: ../src/verbs.cpp:3123 msgid "Query information about extensions" msgstr "Nálgast upplýsingar um viðbætur" -#: ../src/verbs.cpp:2998 +#: ../src/verbs.cpp:3124 msgid "Layer_s..." msgstr "_Lög..." -#: ../src/verbs.cpp:2999 +#: ../src/verbs.cpp:3125 msgid "View Layers" msgstr "Skoða lög" -#: ../src/verbs.cpp:3000 +#: ../src/verbs.cpp:3126 msgid "Object_s..." msgstr "_Hlutir..." -#: ../src/verbs.cpp:3001 +#: ../src/verbs.cpp:3127 msgid "View Objects" msgstr "Skoða hluti" -#: ../src/verbs.cpp:3002 +#: ../src/verbs.cpp:3128 msgid "Selection se_ts..." msgstr "Myndvalsse_tt..." -#: ../src/verbs.cpp:3003 +#: ../src/verbs.cpp:3129 msgid "View Tags" msgstr "Skoða merki" -#: ../src/verbs.cpp:3004 +#: ../src/verbs.cpp:3130 +msgid "Style Dialog..." +msgstr "Stílstillingagluggi..." + +#: ../src/verbs.cpp:3131 +msgid "View Style Dialog" +msgstr "Skoða stílstillingaglugga" + +#: ../src/verbs.cpp:3132 +msgid "Css Dialog..." +msgstr "CSS-samskiptagluggi..." + +#: ../src/verbs.cpp:3133 +msgid "View Css Dialog" +msgstr "Skoða CSS-samskiptaglugga" + +#: ../src/verbs.cpp:3134 msgid "Path E_ffects ..." msgstr "_Ferilbrellur ..." -#: ../src/verbs.cpp:3005 +#: ../src/verbs.cpp:3135 msgid "Manage, edit, and apply path effects" msgstr "Sýsla með, breyta og beita ferilbrellum" -#: ../src/verbs.cpp:3006 +#: ../src/verbs.cpp:3136 msgid "Filter _Editor..." msgstr "Sí_uritill..." -#: ../src/verbs.cpp:3007 +#: ../src/verbs.cpp:3137 msgid "Manage, edit, and apply SVG filters" msgstr "Sýsla með, breyta og beita SVG-síum" -#: ../src/verbs.cpp:3008 +#: ../src/verbs.cpp:3138 msgid "SVG Font Editor..." msgstr "SVG leturritill..." -#: ../src/verbs.cpp:3009 +#: ../src/verbs.cpp:3139 msgid "Edit SVG fonts" msgstr "Breyta SVG letri" -#: ../src/verbs.cpp:3010 +#: ../src/verbs.cpp:3140 msgid "Print Colors..." msgstr "Prentlitir..." -#: ../src/verbs.cpp:3011 +#: ../src/verbs.cpp:3141 msgid "" "Select which color separations to render in Print Colors Preview rendermode" msgstr "" +"Veldu hvaða litagreinar eigi að birta í myndgerðarham forskoðunar " +"litaprentunar" -#: ../src/verbs.cpp:3012 +#: ../src/verbs.cpp:3142 msgid "_Export PNG Image..." msgstr "_Flytja út PNG mynd..." -#: ../src/verbs.cpp:3013 +#: ../src/verbs.cpp:3143 msgid "Export this document or a selection as a PNG image" msgstr "Flytja þetta skjal út eða valin atriði sem PNG bitamynd" #. Help -#: ../src/verbs.cpp:3015 +#: ../src/verbs.cpp:3145 msgid "About E_xtensions" msgstr "Um _viðbætur" -#: ../src/verbs.cpp:3016 +#: ../src/verbs.cpp:3146 msgid "Information on Inkscape extensions" msgstr "Upplýsingar um Inkscape-viðbætur" -#: ../src/verbs.cpp:3017 +#: ../src/verbs.cpp:3147 msgid "About _Memory" msgstr "Um vinnslu_minni" -#: ../src/verbs.cpp:3018 +#: ../src/verbs.cpp:3148 msgid "Memory usage information" msgstr "Upplýsingar um vinnsluminni" -#: ../src/verbs.cpp:3019 +#: ../src/verbs.cpp:3149 msgid "_About Inkscape" msgstr "_Um Inkscape" -#: ../src/verbs.cpp:3020 +#: ../src/verbs.cpp:3150 msgid "Inkscape version, authors, license" msgstr "Inkscape útgáfa, höfundar, notkunarskilmálar" #. new HelpVerb(SP_VERB_SHOW_LICENSE, "ShowLicense", N_("_License"), #. N_("Distribution terms"), /*"show_license"*/"inkscape_options"), #. Tutorials -#: ../src/verbs.cpp:3025 +#: ../src/verbs.cpp:3155 msgid "Inkscape: _Basic" msgstr "Inkscape: _Grunnur" -#: ../src/verbs.cpp:3026 +#: ../src/verbs.cpp:3156 msgid "Getting started with Inkscape" msgstr "Til að komast í gang með Inkscape" #. "tutorial_basic" -#: ../src/verbs.cpp:3027 +#: ../src/verbs.cpp:3157 msgid "Inkscape: _Shapes" msgstr "Inkscape: _Lögun" -#: ../src/verbs.cpp:3028 +#: ../src/verbs.cpp:3158 msgid "Using shape tools to create and edit shapes" msgstr "Notkun umbreytingartóla til að búa til og breyta formum" -#: ../src/verbs.cpp:3029 +#: ../src/verbs.cpp:3159 msgid "Inkscape: _Advanced" msgstr "Inkscape: Í_tarlegt" -#: ../src/verbs.cpp:3030 +#: ../src/verbs.cpp:3160 msgid "Advanced Inkscape topics" msgstr "Fyrir lengra komna í Inkcape" #. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize) -#: ../src/verbs.cpp:3034 +#: ../src/verbs.cpp:3164 msgid "Inkscape: T_racing" msgstr "Inkscape: Línu_rakning" -#: ../src/verbs.cpp:3035 +#: ../src/verbs.cpp:3165 msgid "Using bitmap tracing" msgstr "Línuteiknun bitamynda, breyta svæðum bitamynda í ferla" -#: ../src/verbs.cpp:3038 +#: ../src/verbs.cpp:3168 msgid "Inkscape: Tracing Pixel Art" msgstr "Inkscape: Línurakning Pixel Art mynda" -#: ../src/verbs.cpp:3039 +#: ../src/verbs.cpp:3169 msgid "Using Trace Pixel Art dialog" msgstr "Nota Trace Pixel Art línuteikningargluggann" -#: ../src/verbs.cpp:3040 +#: ../src/verbs.cpp:3170 msgid "Inkscape: _Calligraphy" msgstr "Inkscape: _Skrautskrift" -#: ../src/verbs.cpp:3041 +#: ../src/verbs.cpp:3171 msgid "Using the Calligraphy pen tool" msgstr "Nota skrautskriftarverkfærið" -#: ../src/verbs.cpp:3042 +#: ../src/verbs.cpp:3172 msgid "Inkscape: _Interpolate" msgstr "Inkscape: _Brúun" -#: ../src/verbs.cpp:3043 +#: ../src/verbs.cpp:3173 msgid "Using the interpolate extension" msgstr "Notkun brúunarviðbótarinnar (interpolate)" #. "tutorial_interpolate" -#: ../src/verbs.cpp:3044 +#: ../src/verbs.cpp:3174 msgid "_Elements of Design" msgstr "Grunnþættir _hönnunar" -#: ../src/verbs.cpp:3045 +#: ../src/verbs.cpp:3175 msgid "Principles of design in the tutorial form" msgstr "Kennsla um grunnþætti hönnunar" #. "tutorial_design" -#: ../src/verbs.cpp:3046 +#: ../src/verbs.cpp:3176 msgid "_Tips and Tricks" msgstr "Á_bendingar og góð ráð" -#: ../src/verbs.cpp:3047 +#: ../src/verbs.cpp:3177 msgid "Miscellaneous tips and tricks" msgstr "Ýmsar ábendingar og góð ráð" #. "tutorial_tips" #. Effect -- renamed Extension -#: ../src/verbs.cpp:3050 +#: ../src/verbs.cpp:3180 msgid "Previous Exte_nsion" msgstr "Síðasta _viðbót" -#: ../src/verbs.cpp:3051 +#: ../src/verbs.cpp:3181 msgid "Repeat the last extension with the same settings" msgstr "Keyra aftur síðustu viðbót með sömu stillingum og áður" -#: ../src/verbs.cpp:3052 +#: ../src/verbs.cpp:3182 msgid "_Previous Extension Settings..." msgstr "Stillin_gar síðustu viðbótar..." -#: ../src/verbs.cpp:3053 +#: ../src/verbs.cpp:3183 msgid "Repeat the last extension with new settings" msgstr "Keyra aftur síðustu viðbót með nýjum stillingum" -#: ../src/verbs.cpp:3057 +#: ../src/verbs.cpp:3187 msgid "Fit the page to the current selection" msgstr "Aðlaga síðuna að því sem nú er valið" -#: ../src/verbs.cpp:3059 +#: ../src/verbs.cpp:3189 msgid "Fit the page to the drawing" msgstr "Aðlaga síðuna að teikningu" -#: ../src/verbs.cpp:3060 +#: ../src/verbs.cpp:3190 msgid "_Resize Page to Selection" msgstr "Laga stæ_rð síðu að myndvali" -#: ../src/verbs.cpp:3061 +#: ../src/verbs.cpp:3191 msgid "" "Fit the page to the current selection or the drawing if there is no selection" msgstr "" "Aðlaga síðuna að því sem nú er valið eða að teikningu ef ekkert er valið" -#: ../src/verbs.cpp:3065 +#: ../src/verbs.cpp:3195 msgid "Unlock All in All Layers" msgstr "Aflæsa öllu í öllum lögum" -#: ../src/verbs.cpp:3067 +#: ../src/verbs.cpp:3197 msgid "Unhide All" msgstr "Birta allt" -#: ../src/verbs.cpp:3069 +#: ../src/verbs.cpp:3199 msgid "Unhide All in All Layers" msgstr "Birta allt í öllum lögum" -#: ../src/verbs.cpp:3073 +#: ../src/verbs.cpp:3203 msgid "Link an ICC color profile" msgstr "Tengja ICC litasnið" -#: ../src/verbs.cpp:3074 +#: ../src/verbs.cpp:3204 msgid "Remove Color Profile" msgstr "Fjarlægja litasnið" -#: ../src/verbs.cpp:3075 +#: ../src/verbs.cpp:3205 msgid "Remove a linked ICC color profile" msgstr "Fjarlægja tengt ICC litasnið" -#: ../src/verbs.cpp:3078 +#: ../src/verbs.cpp:3208 msgid "Add External Script" msgstr "Bæta við ytri skriftu" -#: ../src/verbs.cpp:3078 +#: ../src/verbs.cpp:3208 msgid "Add an external script" msgstr "Bæta við ytri skriftus" -#: ../src/verbs.cpp:3080 +#: ../src/verbs.cpp:3210 msgid "Add Embedded Script" msgstr "Bæta við ívafinni skriftu" -#: ../src/verbs.cpp:3080 +#: ../src/verbs.cpp:3210 msgid "Add an embedded script" msgstr "Bæta við ívafinni skriftu" -#: ../src/verbs.cpp:3082 +#: ../src/verbs.cpp:3212 msgid "Edit Embedded Script" msgstr "Breyta ívafinni skriftu" -#: ../src/verbs.cpp:3082 +#: ../src/verbs.cpp:3212 msgid "Edit an embedded script" msgstr "Breyta ívafinni skriftu" -#: ../src/verbs.cpp:3084 +#: ../src/verbs.cpp:3214 msgid "Remove External Script" msgstr "Fjarlægja ytri skriftu" -#: ../src/verbs.cpp:3084 +#: ../src/verbs.cpp:3214 msgid "Remove an external script" msgstr "Fjarlægja ytri skriftu" -#: ../src/verbs.cpp:3086 +#: ../src/verbs.cpp:3216 msgid "Remove Embedded Script" msgstr "Fjarlægja ívafða skriftu" -#: ../src/verbs.cpp:3086 +#: ../src/verbs.cpp:3216 msgid "Remove an embedded script" msgstr "Fjarlægja ívafða skriftu" -#: ../src/verbs.cpp:3108 ../src/verbs.cpp:3109 +#: ../src/verbs.cpp:3238 ../src/verbs.cpp:3239 msgid "Center on horizontal and vertical axis" msgstr "Miðja á láréttum og lóðréttum ásum" @@ -27853,11 +28527,11 @@ msgstr "Miðja á láréttum og lóðréttum ásum" msgid "Arc: Change start/end" msgstr "Bogi: Breyta upphafi/enda" -#: ../src/widgets/arc-toolbar.cpp:190 -msgid "Arc: Change open/closed" -msgstr "Bogi: Víxla opinn/lokaður" +#: ../src/widgets/arc-toolbar.cpp:198 +msgid "Arc: Changed arc type" +msgstr "Bogi: Breytt gerð boga" -#: ../src/widgets/arc-toolbar.cpp:279 ../src/widgets/arc-toolbar.cpp:309 +#: ../src/widgets/arc-toolbar.cpp:295 ../src/widgets/arc-toolbar.cpp:325 #: ../src/widgets/rect-toolbar.cpp:256 ../src/widgets/rect-toolbar.cpp:295 #: ../src/widgets/spiral-toolbar.cpp:207 ../src/widgets/spiral-toolbar.cpp:231 #: ../src/widgets/star-toolbar.cpp:380 ../src/widgets/star-toolbar.cpp:442 @@ -27866,50 +28540,50 @@ msgstr "Nýtt:" #. FIXME: implement averaging of all parameters for multiple selected #. gtk_label_set_markup(GTK_LABEL(l), _("Average:")); -#: ../src/widgets/arc-toolbar.cpp:282 ../src/widgets/arc-toolbar.cpp:293 +#: ../src/widgets/arc-toolbar.cpp:298 ../src/widgets/arc-toolbar.cpp:309 #: ../src/widgets/rect-toolbar.cpp:264 ../src/widgets/rect-toolbar.cpp:282 #: ../src/widgets/spiral-toolbar.cpp:209 ../src/widgets/spiral-toolbar.cpp:220 #: ../src/widgets/star-toolbar.cpp:382 msgid "Change:" msgstr "Breyta:" -#: ../src/widgets/arc-toolbar.cpp:318 +#: ../src/widgets/arc-toolbar.cpp:334 msgid "Start:" msgstr "Upphaf:" -#: ../src/widgets/arc-toolbar.cpp:319 +#: ../src/widgets/arc-toolbar.cpp:335 msgid "The angle (in degrees) from the horizontal to the arc's start point" msgstr "Hornið (í gráðum) frá láréttri stöðu að upphafi bogans" -#: ../src/widgets/arc-toolbar.cpp:331 +#: ../src/widgets/arc-toolbar.cpp:347 msgid "End:" msgstr "Endir:" -#: ../src/widgets/arc-toolbar.cpp:332 +#: ../src/widgets/arc-toolbar.cpp:348 msgid "The angle (in degrees) from the horizontal to the arc's end point" msgstr "Hornið (í gráðum) frá láréttri stöðu að enda bogans" -#: ../src/widgets/arc-toolbar.cpp:348 -msgid "Closed arc" -msgstr "Lokaður bogi" - -#: ../src/widgets/arc-toolbar.cpp:349 -msgid "Switch to segment (closed shape with two radii)" -msgstr "Skipta yfir í búta (lokað form með tveimur geirum)" +#: ../src/widgets/arc-toolbar.cpp:365 +msgid "Switch to slice (closed shape with two radii)" +msgstr "Skipta yfir í sneið (lokað form með tveimur geirum)" -#: ../src/widgets/arc-toolbar.cpp:355 -msgid "Open Arc" -msgstr "Opinn bogi" +#: ../src/widgets/arc-toolbar.cpp:371 +msgid "Arc (Open)" +msgstr "Bogi (opinn)" -#: ../src/widgets/arc-toolbar.cpp:356 +#: ../src/widgets/arc-toolbar.cpp:372 msgid "Switch to arc (unclosed shape)" msgstr "Skipta yfir í boga (ólokað form)" #: ../src/widgets/arc-toolbar.cpp:379 +msgid "Switch to chord (closed shape)" +msgstr "Skipta yfir í streng (lokað form)" + +#: ../src/widgets/arc-toolbar.cpp:402 msgid "Make whole" msgstr "Gera heilt" -#: ../src/widgets/arc-toolbar.cpp:380 +#: ../src/widgets/arc-toolbar.cpp:403 msgid "Make the shape a whole ellipse, not arc or segment" msgstr "Gera formið að sporbaug, ekki að boga eða bút" @@ -27935,6 +28609,7 @@ msgstr "Staða hvarfpunkts í X-stefnu" #: ../src/widgets/box3d-toolbar.cpp:326 msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)" msgstr "" +"Víxla hvarfpunkti í X-stefnu milli 'endanlegs' og 'óendanlegs' (=samhliða)" #: ../src/widgets/box3d-toolbar.cpp:341 msgid "Angle in Y direction" @@ -27957,6 +28632,7 @@ msgstr "Staða hvarfpunkts í Y-stefnu" #: ../src/widgets/box3d-toolbar.cpp:365 msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)" msgstr "" +"Víxla hvarfpunkti í Y-stefnu milli 'endanlegs' og 'óendanlegs' (=samhliða)" #: ../src/widgets/box3d-toolbar.cpp:380 msgid "Angle in Z direction" @@ -27975,6 +28651,7 @@ msgstr "Staða hvarfpunkts í Z-stefnu" #: ../src/widgets/box3d-toolbar.cpp:404 msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)" msgstr "" +"Víxla hvarfpunkti í Z-stefnu milli 'endanlegs' og 'óendanlegs' (=samhliða)" #. gint preset_index = ege_select_one_action_get_active( sel ); #: ../src/widgets/calligraphy-toolbar.cpp:218 @@ -27985,7 +28662,7 @@ msgstr "Engin forstilling" #. Width #: ../src/widgets/calligraphy-toolbar.cpp:427 -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:184 msgid "(hairline)" msgstr "(hárlína)" @@ -27994,7 +28671,7 @@ msgstr "(hárlína)" #. Scale #: ../src/widgets/calligraphy-toolbar.cpp:427 #: ../src/widgets/calligraphy-toolbar.cpp:460 -#: ../src/widgets/eraser-toolbar.cpp:182 ../src/widgets/pencil-toolbar.cpp:374 +#: ../src/widgets/eraser-toolbar.cpp:184 ../src/widgets/pencil-toolbar.cpp:374 #: ../src/widgets/spray-toolbar.cpp:294 ../src/widgets/spray-toolbar.cpp:323 #: ../src/widgets/spray-toolbar.cpp:339 ../src/widgets/spray-toolbar.cpp:408 #: ../src/widgets/spray-toolbar.cpp:438 ../src/widgets/spray-toolbar.cpp:456 @@ -28004,12 +28681,12 @@ msgid "(default)" msgstr "(sjálfgefið)" #: ../src/widgets/calligraphy-toolbar.cpp:427 -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:184 msgid "(broad stroke)" msgstr "(breið útlína)" #: ../src/widgets/calligraphy-toolbar.cpp:430 -#: ../src/widgets/eraser-toolbar.cpp:185 +#: ../src/widgets/eraser-toolbar.cpp:187 msgid "Pen Width" msgstr "Pennabreidd" @@ -28019,27 +28696,27 @@ msgstr "Breidd skrautskriftaroddsins (miðað við sýnilegan myndflöt)" #. Thinning #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 +#: ../src/widgets/eraser-toolbar.cpp:214 msgid "(speed blows up stroke)" msgstr "(hraði sprengir upp útlínu)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 +#: ../src/widgets/eraser-toolbar.cpp:214 msgid "(slight widening)" msgstr "(örlítil breikkun)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 +#: ../src/widgets/eraser-toolbar.cpp:214 msgid "(constant width)" msgstr "(föst breidd)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 +#: ../src/widgets/eraser-toolbar.cpp:214 msgid "(slight thinning, default)" msgstr "(örlítil þynning, sjálfgefið)" #: ../src/widgets/calligraphy-toolbar.cpp:444 -#: ../src/widgets/eraser-toolbar.cpp:212 +#: ../src/widgets/eraser-toolbar.cpp:214 msgid "(speed deflates stroke)" msgstr "(hraði minnkar útlínu)" @@ -28048,12 +28725,12 @@ msgid "Stroke Thinning" msgstr "Þynning línu" #: ../src/widgets/calligraphy-toolbar.cpp:447 -#: ../src/widgets/eraser-toolbar.cpp:215 +#: ../src/widgets/eraser-toolbar.cpp:217 msgid "Thinning:" msgstr "Þynning:" #: ../src/widgets/calligraphy-toolbar.cpp:448 -#: ../src/widgets/eraser-toolbar.cpp:216 +#: ../src/widgets/eraser-toolbar.cpp:218 msgid "" "How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 " "makes them broader, 0 makes width independent of velocity)" @@ -28120,22 +28797,22 @@ msgstr "" #. Cap Rounding #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 +#: ../src/widgets/eraser-toolbar.cpp:230 msgid "(blunt caps, default)" msgstr "(sljóir endar, sjálfgefið)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 +#: ../src/widgets/eraser-toolbar.cpp:230 msgid "(slightly bulging)" msgstr "(örlítil bunga)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 +#: ../src/widgets/eraser-toolbar.cpp:230 msgid "(approximately round)" msgstr "(um það bil rúnnað)" #: ../src/widgets/calligraphy-toolbar.cpp:494 -#: ../src/widgets/eraser-toolbar.cpp:228 +#: ../src/widgets/eraser-toolbar.cpp:230 msgid "(long protruding caps)" msgstr "(langir útskagandi endar)" @@ -28144,12 +28821,12 @@ msgid "Cap rounding" msgstr "Rúnnun enda" #: ../src/widgets/calligraphy-toolbar.cpp:498 -#: ../src/widgets/eraser-toolbar.cpp:232 +#: ../src/widgets/eraser-toolbar.cpp:234 msgid "Caps:" msgstr "Endar:" #: ../src/widgets/calligraphy-toolbar.cpp:499 -#: ../src/widgets/eraser-toolbar.cpp:233 +#: ../src/widgets/eraser-toolbar.cpp:235 msgid "" "Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = " "round caps)" @@ -28158,22 +28835,22 @@ msgstr "" #. Tremor #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 +#: ../src/widgets/eraser-toolbar.cpp:248 msgid "(smooth line)" msgstr "(mýkt lína)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 +#: ../src/widgets/eraser-toolbar.cpp:248 msgid "(slight tremor)" msgstr "(smáslag)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 +#: ../src/widgets/eraser-toolbar.cpp:248 msgid "(noticeable tremor)" msgstr "(sjáanlegt slag)" #: ../src/widgets/calligraphy-toolbar.cpp:511 -#: ../src/widgets/eraser-toolbar.cpp:246 +#: ../src/widgets/eraser-toolbar.cpp:248 msgid "(maximum tremor)" msgstr "(hámarksslag)" @@ -28182,12 +28859,12 @@ msgid "Stroke Tremor" msgstr "Slag í stroku" #: ../src/widgets/calligraphy-toolbar.cpp:514 -#: ../src/widgets/eraser-toolbar.cpp:249 +#: ../src/widgets/eraser-toolbar.cpp:251 msgid "Tremor:" msgstr "Slag:" #: ../src/widgets/calligraphy-toolbar.cpp:515 -#: ../src/widgets/eraser-toolbar.cpp:250 +#: ../src/widgets/eraser-toolbar.cpp:252 msgid "Increase to make strokes rugged and trembling" msgstr "Auka til að gera strokur hrjúfar og hristar" @@ -28218,22 +28895,22 @@ msgstr "Auka til að láta penna vagga og velta" #. Mass #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:266 msgid "(no inertia)" msgstr "(enginn skriðþungi)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:266 msgid "(slight smoothing, default)" msgstr "(örlítil mýking, sjálfgefið)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:266 msgid "(noticeable lagging)" msgstr "(sjáanlegur dráttur)" #: ../src/widgets/calligraphy-toolbar.cpp:546 -#: ../src/widgets/eraser-toolbar.cpp:264 +#: ../src/widgets/eraser-toolbar.cpp:266 msgid "(maximum inertia)" msgstr "(hámarks skriðþungi)" @@ -28242,7 +28919,7 @@ msgid "Pen Mass" msgstr "Þungi penna" #: ../src/widgets/calligraphy-toolbar.cpp:549 -#: ../src/widgets/eraser-toolbar.cpp:267 +#: ../src/widgets/eraser-toolbar.cpp:269 msgid "Mass:" msgstr "Þungi:" @@ -28264,7 +28941,7 @@ msgstr "" "svart - hámarksbreidd)" #: ../src/widgets/calligraphy-toolbar.cpp:579 -#: ../src/widgets/eraser-toolbar.cpp:201 +#: ../src/widgets/eraser-toolbar.cpp:203 msgid "Use the pressure of the input device to alter the width of the pen" msgstr "Notaðu þrýsting frá inntakstæki til að breyta breidd penna" @@ -28308,6 +28985,10 @@ msgstr "Breyta millibili tengilína" msgid "Avoid" msgstr "Forðast" +#: ../src/widgets/connector-toolbar.cpp:316 +msgid "Ignore" +msgstr "Hunsa" + #: ../src/widgets/connector-toolbar.cpp:327 msgid "Orthogonal" msgstr "Hornrétt" @@ -28377,12 +29058,12 @@ msgstr "Strikamynstur" msgid "Pattern offset" msgstr "Hliðrun mynsturs" -#: ../src/widgets/desktop-widget.cpp:431 +#: ../src/widgets/desktop-widget.cpp:422 msgid "Zoom drawing if window size changes" msgstr "Breyta aðdrætti myndar þegar stærð glugga breytist" #. Display the initial welcome message in the statusbar -#: ../src/widgets/desktop-widget.cpp:576 +#: ../src/widgets/desktop-widget.cpp:566 msgid "" "Welcome to Inkscape! Use shape or freehand tools to create objects; " "use selector (arrow) to move or transform them." @@ -28390,85 +29071,51 @@ msgstr "" "Velkomin í Inkscape! Notaðu teiknihluti eða fríhendisverkfæri til að " "búa til hluti; notaðu valbendilinn (örina) til að færa þá eða umbreyta þeim." -#: ../src/widgets/desktop-widget.cpp:608 +#: ../src/widgets/desktop-widget.cpp:600 +msgid "Rotation. (Also Ctrl+Shift+Scroll)" +msgstr "Snúningur. (Einnig Ctrl+Shift+skrun)" + +#: ../src/widgets/desktop-widget.cpp:634 msgid "Cursor coordinates" msgstr "Hnit bendils" -#: ../src/widgets/desktop-widget.cpp:620 +#: ../src/widgets/desktop-widget.cpp:646 msgid "Z:" msgstr "Z:" -#: ../src/widgets/desktop-widget.cpp:731 -msgid "grayscale" -msgstr "grátóna" - -#: ../src/widgets/desktop-widget.cpp:732 -msgid ", grayscale" -msgstr ", grátóna" - -#: ../src/widgets/desktop-widget.cpp:733 -msgid "print colors preview" -msgstr "forskoðun prentunar" - -#: ../src/widgets/desktop-widget.cpp:734 -msgid ", print colors preview" -msgstr ", forskoðun prentunar" - -#: ../src/widgets/desktop-widget.cpp:735 +#: ../src/widgets/desktop-widget.cpp:786 msgid "outline" msgstr "línuteikna" -#: ../src/widgets/desktop-widget.cpp:736 +#: ../src/widgets/desktop-widget.cpp:788 msgid "no filters" msgstr "engar síur" -#: ../src/widgets/desktop-widget.cpp:763 -#, c-format -msgid "%s%s: %d (%s%s) - Inkscape" -msgstr "%s%s: %d (%s%s) - Inkscape" - -#: ../src/widgets/desktop-widget.cpp:765 ../src/widgets/desktop-widget.cpp:769 -#, c-format -msgid "%s%s: %d (%s) - Inkscape" -msgstr "%s%s: %d (%s) - Inkscape" - -#: ../src/widgets/desktop-widget.cpp:771 -#, c-format -msgid "%s%s: %d - Inkscape" -msgstr "%s%s: %d - Inkscape" - -#: ../src/widgets/desktop-widget.cpp:777 -#, c-format -msgid "%s%s (%s%s) - Inkscape" -msgstr "%s%s (%s%s) - Inkscape" - -#: ../src/widgets/desktop-widget.cpp:779 ../src/widgets/desktop-widget.cpp:783 -#, c-format -msgid "%s%s (%s) - Inkscape" -msgstr "%s%s (%s) - Inkscape" +#: ../src/widgets/desktop-widget.cpp:797 +msgid "grayscale" +msgstr "grátóna" -#: ../src/widgets/desktop-widget.cpp:785 -#, c-format -msgid "%s%s - Inkscape" -msgstr "%s%s - Inkscape" +#: ../src/widgets/desktop-widget.cpp:799 +msgid "print colors preview" +msgstr "forskoðun prentunar" -#: ../src/widgets/desktop-widget.cpp:957 +#: ../src/widgets/desktop-widget.cpp:999 msgid "Locked all guides" msgstr "Læsti öllum stoðlínum" -#: ../src/widgets/desktop-widget.cpp:959 +#: ../src/widgets/desktop-widget.cpp:1001 msgid "Unlocked all guides" msgstr "Aflæsti öllum stoðlínum" -#: ../src/widgets/desktop-widget.cpp:976 +#: ../src/widgets/desktop-widget.cpp:1018 msgid "Color-managed display is enabled in this window" msgstr "Litstýrð sýn er virk í þessum vinnuglugga" -#: ../src/widgets/desktop-widget.cpp:978 +#: ../src/widgets/desktop-widget.cpp:1020 msgid "Color-managed display is disabled in this window" msgstr "Litstýrð sýn er óvirk í þessum vinnuglugga" -#: ../src/widgets/desktop-widget.cpp:1033 +#: ../src/widgets/desktop-widget.cpp:1075 #, c-format msgid "" "Save changes to document \"%s\" before " @@ -28481,12 +29128,12 @@ msgstr "" "\n" "Ef þú lokar án þess að vista, munu breytingar sem þú gerðir tapast." -#: ../src/widgets/desktop-widget.cpp:1043 -#: ../src/widgets/desktop-widget.cpp:1102 +#: ../src/widgets/desktop-widget.cpp:1085 +#: ../src/widgets/desktop-widget.cpp:1144 msgid "Close _without saving" msgstr "Loka án þess að _vista" -#: ../src/widgets/desktop-widget.cpp:1092 +#: ../src/widgets/desktop-widget.cpp:1134 #, c-format msgid "" "The file \"%s\" was saved with a " @@ -28499,11 +29146,11 @@ msgstr "" "\n" "Viltu vista þessa skrá sem Inkscape SVG?" -#: ../src/widgets/desktop-widget.cpp:1104 +#: ../src/widgets/desktop-widget.cpp:1146 msgid "_Save as Inkscape SVG" msgstr "Vi_sta sem Inkscape SVG" -#: ../src/widgets/desktop-widget.cpp:1318 +#: ../src/widgets/desktop-widget.cpp:1360 msgid "Note:" msgstr "Athugið:" @@ -28534,66 +29181,66 @@ msgstr "" msgid "Assign" msgstr "Úthluta" -#: ../src/widgets/ege-paint-def.cpp:87 +#: ../src/widgets/ege-paint-def.cpp:85 msgid "remove" msgstr "fjarlægja" -#: ../src/widgets/eraser-toolbar.cpp:144 +#: ../src/widgets/eraser-toolbar.cpp:146 msgid "Delete objects touched by the eraser" msgstr "Eyða hlutum sem strokleðrið snertir" -#: ../src/widgets/eraser-toolbar.cpp:150 +#: ../src/widgets/eraser-toolbar.cpp:152 msgid "Cut" msgstr "Klippa" -#: ../src/widgets/eraser-toolbar.cpp:151 +#: ../src/widgets/eraser-toolbar.cpp:153 msgid "Cut out from paths and shapes" msgstr "Klippa út úr ferlum og formum" -#: ../src/widgets/eraser-toolbar.cpp:157 +#: ../src/widgets/eraser-toolbar.cpp:159 msgid "Clip" msgstr "Afmarka" -#: ../src/widgets/eraser-toolbar.cpp:158 +#: ../src/widgets/eraser-toolbar.cpp:160 msgid "Clip from objects" msgstr "Afmarka af hlutum" #. Width -#: ../src/widgets/eraser-toolbar.cpp:182 +#: ../src/widgets/eraser-toolbar.cpp:184 msgid "(no width)" msgstr "(engin breidd)" -#: ../src/widgets/eraser-toolbar.cpp:186 +#: ../src/widgets/eraser-toolbar.cpp:188 msgid "The width of the eraser pen (relative to the visible canvas area)" msgstr "Breidd strokleðurflatarins (miðað við sýnilegan myndflöt)" -#: ../src/widgets/eraser-toolbar.cpp:200 +#: ../src/widgets/eraser-toolbar.cpp:202 msgid "Eraser Pressure" msgstr "Þrýstingur útstrokunar" -#: ../src/widgets/eraser-toolbar.cpp:215 +#: ../src/widgets/eraser-toolbar.cpp:217 msgid "Eraser Stroke Thinning" msgstr "Þynning útstrokunarlínu" -#: ../src/widgets/eraser-toolbar.cpp:232 +#: ../src/widgets/eraser-toolbar.cpp:234 msgid "Eraser Cap rounding" msgstr "Rúnnun enda útstrokunar" -#: ../src/widgets/eraser-toolbar.cpp:249 +#: ../src/widgets/eraser-toolbar.cpp:251 msgid "EraserStroke Tremor" msgstr "Slag í stroku útstrokunar" -#: ../src/widgets/eraser-toolbar.cpp:267 +#: ../src/widgets/eraser-toolbar.cpp:269 msgid "Eraser Mass" msgstr "Þungi strokleðurs" -#: ../src/widgets/eraser-toolbar.cpp:268 +#: ../src/widgets/eraser-toolbar.cpp:270 msgid "Increase to make the eraser drag behind, as if slowed by inertia" msgstr "" "Auka til að láta strokleðrið dragast á eftir, eins og hægt sé á því með " "mótstöðu" -#: ../src/widgets/eraser-toolbar.cpp:282 ../src/widgets/eraser-toolbar.cpp:283 +#: ../src/widgets/eraser-toolbar.cpp:284 ../src/widgets/eraser-toolbar.cpp:285 msgid "Break apart cut items" msgstr "Brjóta í burtu klippt atriði" @@ -28633,8 +29280,8 @@ msgstr "Setja mynstur í fyllingu" msgid "Set pattern on stroke" msgstr "Setja mynstur á útlínu" -#: ../src/widgets/font-selector.cpp:103 ../src/widgets/text-toolbar.cpp:1316 -#: ../src/widgets/text-toolbar.cpp:1702 +#: ../src/widgets/font-selector.cpp:103 ../src/widgets/text-toolbar.cpp:1366 +#: ../src/widgets/text-toolbar.cpp:1738 msgid "Font size" msgstr "Leturstærð" @@ -28660,60 +29307,56 @@ msgstr "Leturgerð" msgid "Font size:" msgstr "Leturstærð:" -#: ../src/widgets/gimp/ruler.cpp:184 +#: ../src/widgets/gimp/ruler.cpp:185 msgid "The orientation of the ruler" msgstr "Stefna mælistikunnar" -#: ../src/widgets/gimp/ruler.cpp:194 +#: ../src/widgets/gimp/ruler.cpp:195 msgid "Unit of the ruler" msgstr "Einingar mælistikunnar" -#: ../src/widgets/gimp/ruler.cpp:201 +#: ../src/widgets/gimp/ruler.cpp:202 msgid "Lower" msgstr "Neðri" -#: ../src/widgets/gimp/ruler.cpp:202 +#: ../src/widgets/gimp/ruler.cpp:203 msgid "Lower limit of ruler" msgstr "Neðri mörk mælistiku" -#: ../src/widgets/gimp/ruler.cpp:211 +#: ../src/widgets/gimp/ruler.cpp:212 msgid "Upper" msgstr "Efri" -#: ../src/widgets/gimp/ruler.cpp:212 +#: ../src/widgets/gimp/ruler.cpp:213 msgid "Upper limit of ruler" msgstr "Efri mörk mælistiku" -#: ../src/widgets/gimp/ruler.cpp:221 -msgid "Position" -msgstr "Staðsetning" - -#: ../src/widgets/gimp/ruler.cpp:222 +#: ../src/widgets/gimp/ruler.cpp:223 msgid "Position of mark on the ruler" msgstr "Staða merkis á mælistikunni" -#: ../src/widgets/gimp/ruler.cpp:231 +#: ../src/widgets/gimp/ruler.cpp:232 msgid "Max Size" msgstr "Hámarksstærð" -#: ../src/widgets/gimp/ruler.cpp:232 +#: ../src/widgets/gimp/ruler.cpp:233 msgid "Maximum size of the ruler" msgstr "Mesta stærð mælistikunnar" -#: ../src/widgets/gradient-selector.cpp:187 +#: ../src/widgets/gradient-selector.cpp:186 msgid "Create a duplicate gradient" msgstr "Búa til tvítekningu litstiguls" -#: ../src/widgets/gradient-selector.cpp:198 +#: ../src/widgets/gradient-selector.cpp:197 msgid "Edit gradient" msgstr "Breyta litstigli" -#: ../src/widgets/gradient-selector.cpp:267 -#: ../src/widgets/paint-selector.cpp:222 +#: ../src/widgets/gradient-selector.cpp:266 +#: ../src/widgets/paint-selector.cpp:221 msgid "Swatch" msgstr "Litaprufa" -#: ../src/widgets/gradient-selector.cpp:317 +#: ../src/widgets/gradient-selector.cpp:316 msgid "Rename gradient" msgstr "Endurnefna litstigul" @@ -28766,27 +29409,33 @@ msgstr "frá miðju" msgid "Create radial (elliptic or circular) gradient" msgstr "Búa til hringlaga (sporaskja eða geisli) litstigul" -#: ../src/widgets/gradient-toolbar.cpp:1045 ../src/widgets/mesh-toolbar.cpp:396 +#: ../src/widgets/gradient-toolbar.cpp:1045 +#: ../src/widgets/mesh-toolbar.cpp:396 msgid "New:" msgstr "Nýtt:" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1068 +#: ../src/widgets/mesh-toolbar.cpp:419 msgid "fill" msgstr "fylling" -#: ../src/widgets/gradient-toolbar.cpp:1068 ../src/widgets/mesh-toolbar.cpp:419 +#: ../src/widgets/gradient-toolbar.cpp:1068 +#: ../src/widgets/mesh-toolbar.cpp:419 msgid "Create gradient in the fill" msgstr "Búa til litstigul í fyllingu" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1072 +#: ../src/widgets/mesh-toolbar.cpp:423 msgid "stroke" msgstr "útlína" -#: ../src/widgets/gradient-toolbar.cpp:1072 ../src/widgets/mesh-toolbar.cpp:423 +#: ../src/widgets/gradient-toolbar.cpp:1072 +#: ../src/widgets/mesh-toolbar.cpp:423 msgid "Create gradient in the stroke" msgstr "Búa til litstigul í útlínu" -#: ../src/widgets/gradient-toolbar.cpp:1075 ../src/widgets/mesh-toolbar.cpp:426 +#: ../src/widgets/gradient-toolbar.cpp:1075 +#: ../src/widgets/mesh-toolbar.cpp:426 msgid "on:" msgstr "á:" @@ -28882,9 +29531,10 @@ msgstr "Tengja litstigla" msgid "Link gradients to change all related gradients" msgstr "Tengja litstigla þannig að hægt sé að breyta öllum tengdum litstiglum" -#: ../src/widgets/gradient-vector.cpp:289 ../src/widgets/paint-selector.cpp:918 -#: ../src/widgets/paint-selector.cpp:1270 -#: ../src/widgets/stroke-marker-selector.cpp:148 +#: ../src/widgets/gradient-vector.cpp:289 +#: ../src/widgets/paint-selector.cpp:917 +#: ../src/widgets/paint-selector.cpp:1269 +#: ../src/widgets/stroke-marker-selector.cpp:149 msgid "No document selected" msgstr "Ekkert skjal valið" @@ -28922,30 +29572,6 @@ msgstr "Litstiglaritill" msgid "Change gradient stop color" msgstr "Breyta stopplit litstiguls" -#: ../src/widgets/image-menu-item.c:151 -msgid "Image widget" -msgstr "Myndviðmótshluti (widget)" - -#: ../src/widgets/image-menu-item.c:152 -msgid "Child widget to appear next to the menu text" -msgstr "Undirviðmótshluti sem birtist næst texta valmyndarinnar" - -#: ../src/widgets/image-menu-item.c:167 -msgid "Use stock" -msgstr "Nota innbyggt" - -#: ../src/widgets/image-menu-item.c:168 -msgid "Whether to use the label text to create a stock menu item" -msgstr "Hvort nota eigi textamerkið til að búa til innbyggt valmyndaratriði" - -#: ../src/widgets/image-menu-item.c:183 -msgid "Accel Group" -msgstr "Flýtilyklahópur" - -#: ../src/widgets/image-menu-item.c:184 -msgid "The Accel Group to use for stock accelerator keys" -msgstr "Flýtilyklahópurinn er fyrir innbyggða flýtilykla" - #: ../src/widgets/lpe-toolbar.cpp:226 msgid "Closed" msgstr "Lokað" @@ -29005,8 +29631,8 @@ msgstr "Birta mælingaupplýsingar fyrir valda hluti" #. Add the units menu. #: ../src/widgets/lpe-toolbar.cpp:380 ../src/widgets/node-toolbar.cpp:611 #: ../src/widgets/paintbucket-toolbar.cpp:166 -#: ../src/widgets/rect-toolbar.cpp:374 ../src/widgets/select-toolbar.cpp:523 -#: ../src/widgets/text-toolbar.cpp:1972 +#: ../src/widgets/rect-toolbar.cpp:374 ../src/widgets/select-toolbar.cpp:520 +#: ../src/widgets/text-toolbar.cpp:2020 msgid "Units" msgstr "Einingar" @@ -29050,7 +29676,7 @@ msgstr "Reikna öll einindi." msgid "Compute max length." msgstr "Reikna hámarkslengd." -#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1705 +#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1741 msgid "Font Size" msgstr "Leturstærð" @@ -29075,10 +29701,6 @@ msgstr "Nákvæmni:" msgid "Decimal precision of measure" msgstr "Tugabrotsnákvæmni mælingar" -#: ../src/widgets/measure-toolbar.cpp:315 -msgid "Scale %" -msgstr "Kvarði %" - #: ../src/widgets/measure-toolbar.cpp:315 msgid "Scale %:" msgstr "Kvarði %:" @@ -29088,8 +29710,8 @@ msgid "Scale the results" msgstr "Kvarða útkomuna" #: ../src/widgets/measure-toolbar.cpp:329 -msgid "The offset size" -msgstr "Stærð hliðrunar" +msgid "Mark dimension offset" +msgstr "Merkja stærð málsetningalínu" #: ../src/widgets/measure-toolbar.cpp:341 #: ../src/widgets/measure-toolbar.cpp:342 @@ -29226,65 +29848,66 @@ msgstr "Coons" msgid "Bicubic" msgstr "Býkúpulag" -#: ../src/widgets/mesh-toolbar.cpp:541 +#. TRANSLATORS: Type of Smoothing. See https://en.wikipedia.org/wiki/Coons_patch +#: ../src/widgets/mesh-toolbar.cpp:542 msgid "Coons" msgstr "Coons" -#: ../src/widgets/mesh-toolbar.cpp:542 +#: ../src/widgets/mesh-toolbar.cpp:543 msgid "Coons: no smoothing. Bicubic: smoothing across patch boundaries." msgstr "Coons: engin mýking. Býkúpulag: mýking yfir útjaðra möskvanets." -#: ../src/widgets/mesh-toolbar.cpp:544 ../src/widgets/pencil-toolbar.cpp:377 +#: ../src/widgets/mesh-toolbar.cpp:545 ../src/widgets/pencil-toolbar.cpp:377 msgid "Smoothing:" msgstr "Mýking:" -#: ../src/widgets/mesh-toolbar.cpp:554 +#: ../src/widgets/mesh-toolbar.cpp:555 msgid "Toggle Sides" msgstr "Víxla hliðum" -#: ../src/widgets/mesh-toolbar.cpp:555 +#: ../src/widgets/mesh-toolbar.cpp:556 msgid "Toggle selected sides between Beziers and lines." msgstr "Víxla völdum hliðum milli þess að vera Bezier-ferlar eða línur." -#: ../src/widgets/mesh-toolbar.cpp:558 +#: ../src/widgets/mesh-toolbar.cpp:559 msgid "Toggle side:" msgstr "Víxla hlið:" -#: ../src/widgets/mesh-toolbar.cpp:565 +#: ../src/widgets/mesh-toolbar.cpp:566 msgid "Make elliptical" msgstr "Gera sporöskjulaga" -#: ../src/widgets/mesh-toolbar.cpp:566 +#: ../src/widgets/mesh-toolbar.cpp:567 msgid "" "Make selected sides elliptical by changing length of handles. Works best if " "handles already approximate ellipse." msgstr "" -#: ../src/widgets/mesh-toolbar.cpp:569 +#: ../src/widgets/mesh-toolbar.cpp:570 msgid "Make elliptical:" msgstr "Gera sporöskjulaga:" -#: ../src/widgets/mesh-toolbar.cpp:576 +#: ../src/widgets/mesh-toolbar.cpp:577 msgid "Pick colors:" msgstr "Plokkaðir litir:" -#: ../src/widgets/mesh-toolbar.cpp:577 +#: ../src/widgets/mesh-toolbar.cpp:578 msgid "Pick colors for selected corner nodes from underneath mesh." msgstr "" -#: ../src/widgets/mesh-toolbar.cpp:580 +#: ../src/widgets/mesh-toolbar.cpp:581 msgid "Pick Color" msgstr "Plokkaður litur" -#: ../src/widgets/mesh-toolbar.cpp:588 +#: ../src/widgets/mesh-toolbar.cpp:589 msgid "Scale mesh to bounding box:" msgstr "Kvarða möskva inn í umgjörð:" -#: ../src/widgets/mesh-toolbar.cpp:589 +#: ../src/widgets/mesh-toolbar.cpp:590 msgid "Scale mesh to fit inside bounding box." msgstr "Kvarða möskva til að passa inn í umgjörð." -#: ../src/widgets/mesh-toolbar.cpp:592 +#: ../src/widgets/mesh-toolbar.cpp:593 msgid "Fit mesh" msgstr "Láta möskva passa" @@ -29480,32 +30103,32 @@ msgstr "Y hnit:" msgid "Y coordinate of selected node(s)" msgstr "Y-hnit valinna hnúta" -#: ../src/widgets/paint-selector.cpp:208 +#: ../src/widgets/paint-selector.cpp:207 msgid "No paint" msgstr "Enginn litur" -#: ../src/widgets/paint-selector.cpp:210 +#: ../src/widgets/paint-selector.cpp:209 msgid "Flat color" msgstr "Flatur litur" -#: ../src/widgets/paint-selector.cpp:212 +#: ../src/widgets/paint-selector.cpp:211 msgid "Linear gradient" msgstr "Línulegur litstigull" -#: ../src/widgets/paint-selector.cpp:214 +#: ../src/widgets/paint-selector.cpp:213 msgid "Radial gradient" msgstr "Hringlaga litstigull" -#: ../src/widgets/paint-selector.cpp:217 +#: ../src/widgets/paint-selector.cpp:216 msgid "Mesh gradient" msgstr "Litstigull möskva" -#: ../src/widgets/paint-selector.cpp:224 +#: ../src/widgets/paint-selector.cpp:223 msgid "Unset paint (make it undefined so it can be inherited)" msgstr "Afstilla lit (gera hann óskilgreindan svo hann geti erfst)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty -#: ../src/widgets/paint-selector.cpp:237 +#: ../src/widgets/paint-selector.cpp:236 msgid "" "Any path self-intersections or subpaths create holes in the fill (fill-rule: " "evenodd)" @@ -29514,61 +30137,61 @@ msgstr "" "fyllingu (fylliregla: sléttodda)" #. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty -#: ../src/widgets/paint-selector.cpp:248 +#: ../src/widgets/paint-selector.cpp:247 msgid "" "Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)" msgstr "" "Fylling er gegnheil nema ef undirferill er gagnstæður (fylliregla: ekkinúll)" -#: ../src/widgets/paint-selector.cpp:590 +#: ../src/widgets/paint-selector.cpp:589 msgid "No objects" msgstr "Engir hlutir" -#: ../src/widgets/paint-selector.cpp:601 +#: ../src/widgets/paint-selector.cpp:600 msgid "Multiple styles" msgstr "Margir stílar" -#: ../src/widgets/paint-selector.cpp:612 +#: ../src/widgets/paint-selector.cpp:611 msgid "Paint is undefined" msgstr "Litur er óskilgreindur" -#: ../src/widgets/paint-selector.cpp:623 +#: ../src/widgets/paint-selector.cpp:622 msgid "No paint" msgstr "Enginn litur" -#: ../src/widgets/paint-selector.cpp:703 +#: ../src/widgets/paint-selector.cpp:702 msgid "Flat color" msgstr "Flatur litur" #. sp_gradient_selector_set_mode(SP_GRADIENT_SELECTOR(gsel), SP_GRADIENT_SELECTOR_MODE_LINEAR); -#: ../src/widgets/paint-selector.cpp:767 +#: ../src/widgets/paint-selector.cpp:766 msgid "Linear gradient" msgstr "Línulegur litstigull" -#: ../src/widgets/paint-selector.cpp:770 +#: ../src/widgets/paint-selector.cpp:769 msgid "Radial gradient" msgstr "Hringlaga litstigull" -#: ../src/widgets/paint-selector.cpp:1039 +#: ../src/widgets/paint-selector.cpp:1038 msgid "Use the Mesh tool to modify the mesh." -msgstr "" +msgstr "Notaðu Möskvaverkfærið til að breyta möskvanum." -#: ../src/widgets/paint-selector.cpp:1052 +#: ../src/widgets/paint-selector.cpp:1051 msgid "Mesh fill" msgstr "Möskvafylling" -#: ../src/widgets/paint-selector.cpp:1391 +#: ../src/widgets/paint-selector.cpp:1390 msgid "" "Use the Node tool to adjust position, scale, and rotation of the " "pattern on canvas. Use Object > Pattern > Objects to Pattern to " "create a new pattern from selection." msgstr "" -#: ../src/widgets/paint-selector.cpp:1404 +#: ../src/widgets/paint-selector.cpp:1403 msgid "Pattern fill" msgstr "Mynsturfylling" -#: ../src/widgets/paint-selector.cpp:1498 +#: ../src/widgets/paint-selector.cpp:1497 msgid "Swatch fill" msgstr "Litaprufufylling" @@ -29786,147 +30409,147 @@ msgstr "Ekki rúnnað" msgid "Make corners sharp" msgstr "Gera horn hvöss" -#: ../src/widgets/select-toolbar.cpp:259 +#: ../src/widgets/select-toolbar.cpp:258 msgid "Transform by toolbar" msgstr "Ummynda með verkfærastiku" -#: ../src/widgets/select-toolbar.cpp:277 +#: ../src/widgets/select-toolbar.cpp:276 msgid "Now stroke width is scaled when objects are scaled." msgstr "" -#: ../src/widgets/select-toolbar.cpp:279 +#: ../src/widgets/select-toolbar.cpp:278 msgid "Now stroke width is not scaled when objects are scaled." msgstr "" -#: ../src/widgets/select-toolbar.cpp:290 +#: ../src/widgets/select-toolbar.cpp:289 msgid "" "Now rounded rectangle corners are scaled when rectangles are " "scaled." msgstr "" -#: ../src/widgets/select-toolbar.cpp:292 +#: ../src/widgets/select-toolbar.cpp:291 msgid "" "Now rounded rectangle corners are not scaled when rectangles " "are scaled." msgstr "" -#: ../src/widgets/select-toolbar.cpp:303 +#: ../src/widgets/select-toolbar.cpp:302 msgid "" "Now gradients are transformed along with their objects when " "those are transformed (moved, scaled, rotated, or skewed)." msgstr "" -#: ../src/widgets/select-toolbar.cpp:305 +#: ../src/widgets/select-toolbar.cpp:304 msgid "" "Now gradients remain fixed when objects are transformed " "(moved, scaled, rotated, or skewed)." msgstr "" -#: ../src/widgets/select-toolbar.cpp:316 +#: ../src/widgets/select-toolbar.cpp:315 msgid "" "Now patterns are transformed along with their objects when " "those are transformed (moved, scaled, rotated, or skewed)." msgstr "" -#: ../src/widgets/select-toolbar.cpp:318 +#: ../src/widgets/select-toolbar.cpp:317 msgid "" "Now patterns remain fixed when objects are transformed (moved, " "scaled, rotated, or skewed)." msgstr "" #. name -#: ../src/widgets/select-toolbar.cpp:434 +#: ../src/widgets/select-toolbar.cpp:431 msgctxt "Select toolbar" msgid "X position" msgstr "X staðsetning" #. label -#: ../src/widgets/select-toolbar.cpp:435 +#: ../src/widgets/select-toolbar.cpp:432 msgctxt "Select toolbar" msgid "X:" msgstr "X:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:436 +#: ../src/widgets/select-toolbar.cpp:433 msgctxt "Select toolbar" msgid "Horizontal coordinate of selection" msgstr "Lárétt hnit myndvals" #. name -#: ../src/widgets/select-toolbar.cpp:453 +#: ../src/widgets/select-toolbar.cpp:450 msgctxt "Select toolbar" msgid "Y position" msgstr "Y staðsetning" #. label -#: ../src/widgets/select-toolbar.cpp:454 +#: ../src/widgets/select-toolbar.cpp:451 msgctxt "Select toolbar" msgid "Y:" msgstr "Y:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:455 +#: ../src/widgets/select-toolbar.cpp:452 msgctxt "Select toolbar" msgid "Vertical coordinate of selection" msgstr "Lóðrétt hnit myndvals" #. name -#: ../src/widgets/select-toolbar.cpp:472 +#: ../src/widgets/select-toolbar.cpp:469 msgctxt "Select toolbar" msgid "Width" msgstr "Breidd" #. label -#: ../src/widgets/select-toolbar.cpp:473 +#: ../src/widgets/select-toolbar.cpp:470 msgctxt "Select toolbar" msgid "W:" msgstr "B:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:474 +#: ../src/widgets/select-toolbar.cpp:471 msgctxt "Select toolbar" msgid "Width of selection" msgstr "Breidd myndvals" -#: ../src/widgets/select-toolbar.cpp:492 +#: ../src/widgets/select-toolbar.cpp:489 msgid "Lock width and height" msgstr "Læsa breidd og hæð" -#: ../src/widgets/select-toolbar.cpp:493 +#: ../src/widgets/select-toolbar.cpp:490 msgid "When locked, change both width and height by the same proportion" msgstr "Þegar þessu er læst, breytast breidd og hæð í sömu hlutföllum" #. name -#: ../src/widgets/select-toolbar.cpp:504 +#: ../src/widgets/select-toolbar.cpp:501 msgctxt "Select toolbar" msgid "Height" msgstr "Hæð" #. label -#: ../src/widgets/select-toolbar.cpp:505 +#: ../src/widgets/select-toolbar.cpp:502 msgctxt "Select toolbar" msgid "H:" msgstr "H:" #. shortLabel -#: ../src/widgets/select-toolbar.cpp:506 +#: ../src/widgets/select-toolbar.cpp:503 msgctxt "Select toolbar" msgid "Height of selection" msgstr "Hæð myndvals" -#: ../src/widgets/select-toolbar.cpp:568 +#: ../src/widgets/select-toolbar.cpp:565 msgid "Scale rounded corners" msgstr "Kvarða rúnnuð horn" -#: ../src/widgets/select-toolbar.cpp:579 +#: ../src/widgets/select-toolbar.cpp:576 msgid "Move gradients" msgstr "Færa litstigla" -#: ../src/widgets/select-toolbar.cpp:590 +#: ../src/widgets/select-toolbar.cpp:587 msgid "Move patterns" msgstr "Færa mynstur" -#: ../src/widgets/sp-attribute-widget.cpp:270 +#: ../src/widgets/sp-attribute-widget.cpp:281 msgid "Set attribute" msgstr "Setja eigindi" @@ -30192,7 +30815,7 @@ msgstr "" #: ../src/widgets/spray-toolbar.cpp:502 ../src/widgets/spray-toolbar.cpp:503 msgid "Pick from center instead average area." -msgstr "" +msgstr "Plokka af miðju í stað meðaltals svæðis." #: ../src/widgets/spray-toolbar.cpp:515 ../src/widgets/spray-toolbar.cpp:516 msgid "Inverted pick value, retaining color in advanced trace mode" @@ -30240,7 +30863,7 @@ msgstr "Hliðrun %:" #: ../src/widgets/spray-toolbar.cpp:609 msgid "Increase to segregate objects more (value in percent)" -msgstr "" +msgstr "Auka til að aðskilja hluti meira (gildi í prósentum)" #: ../src/widgets/star-toolbar.cpp:101 msgid "Star: Change number of corners" @@ -30412,37 +31035,37 @@ msgstr "Slembigert:" msgid "Scatter randomly the corners and angles" msgstr "Tvístra hornum tilviljanakennt" -#: ../src/widgets/stroke-marker-selector.cpp:382 +#: ../src/widgets/stroke-marker-selector.cpp:383 msgctxt "Marker" msgid "None" msgstr "Ekkert" -#: ../src/widgets/stroke-style.cpp:176 +#: ../src/widgets/stroke-style.cpp:177 msgid "Stroke width" msgstr "Breidd útlínu" -#: ../src/widgets/stroke-style.cpp:178 +#: ../src/widgets/stroke-style.cpp:179 msgctxt "Stroke width" msgid "_Width:" msgstr "_Breidd:" #. Dash -#: ../src/widgets/stroke-style.cpp:204 +#: ../src/widgets/stroke-style.cpp:205 msgid "Dashes:" msgstr "Strikun:" #. Drop down marker selectors #. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes #. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path. -#: ../src/widgets/stroke-style.cpp:224 +#: ../src/widgets/stroke-style.cpp:225 msgid "Markers:" msgstr "Línumerki:" -#: ../src/widgets/stroke-style.cpp:230 +#: ../src/widgets/stroke-style.cpp:231 msgid "Start Markers are drawn on the first node of a path or shape" msgstr "Upphafsmerki eru teiknuð á fyrsta hnút ferils eða forms" -#: ../src/widgets/stroke-style.cpp:239 +#: ../src/widgets/stroke-style.cpp:240 msgid "" "Mid Markers are drawn on every node of a path or shape except the first and " "last nodes" @@ -30450,89 +31073,89 @@ msgstr "" "Miðjumerki eru teiknuð á alla hnúta ferils eða forms nema þann fyrsta og " "þann síðasta" -#: ../src/widgets/stroke-style.cpp:248 +#: ../src/widgets/stroke-style.cpp:249 msgid "End Markers are drawn on the last node of a path or shape" msgstr "Endamerki eru teiknuð á síðasta hnút ferils eða forms" #. TRANSLATORS: Round join: joining lines with a rounded corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:273 +#: ../src/widgets/stroke-style.cpp:274 msgid "Round join" msgstr "Rúnnað" #. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:281 +#: ../src/widgets/stroke-style.cpp:282 msgid "Bevel join" msgstr "Skáskeyting" #. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner. #. For an example, draw a triangle with a large stroke width and modify the #. "Join" option (in the Fill and Stroke dialog). -#: ../src/widgets/stroke-style.cpp:289 +#: ../src/widgets/stroke-style.cpp:290 msgid "Miter join" msgstr "Hornskeyting" #. Cap type #. TRANSLATORS: cap type specifies the shape for the ends of lines #. spw_label(t, _("_Cap:"), 0, i); -#: ../src/widgets/stroke-style.cpp:312 +#: ../src/widgets/stroke-style.cpp:313 msgid "Cap:" msgstr "Endastíll:" #. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point #. of the line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:323 +#: ../src/widgets/stroke-style.cpp:324 msgid "Butt cap" msgstr "Þverskorinn endi" #. TRANSLATORS: Round cap: the line shape extends beyond the end point of the #. line; the ends of the line are rounded -#: ../src/widgets/stroke-style.cpp:330 +#: ../src/widgets/stroke-style.cpp:331 msgid "Round cap" msgstr "Rúnnaður endi" #. TRANSLATORS: Square cap: the line shape extends beyond the end point of the #. line; the ends of the line are square -#: ../src/widgets/stroke-style.cpp:337 +#: ../src/widgets/stroke-style.cpp:338 msgid "Square cap" msgstr "Ferningslaga endi" -#: ../src/widgets/stroke-style.cpp:351 +#: ../src/widgets/stroke-style.cpp:352 msgid "Fill, Stroke, Markers" msgstr "Fylling, útlína, línumerki" -#: ../src/widgets/stroke-style.cpp:355 +#: ../src/widgets/stroke-style.cpp:356 msgid "Stroke, Fill, Markers" msgstr "Útlína, fylling, línumerki" -#: ../src/widgets/stroke-style.cpp:359 +#: ../src/widgets/stroke-style.cpp:360 msgid "Fill, Markers, Stroke" msgstr "Fylling, línumerki, útlína" -#: ../src/widgets/stroke-style.cpp:367 +#: ../src/widgets/stroke-style.cpp:368 msgid "Markers, Fill, Stroke" msgstr "Línumerki, fylling, útlína" -#: ../src/widgets/stroke-style.cpp:371 +#: ../src/widgets/stroke-style.cpp:372 msgid "Stroke, Markers, Fill" msgstr "Útlína, línumerki, fylling" -#: ../src/widgets/stroke-style.cpp:375 +#: ../src/widgets/stroke-style.cpp:376 msgid "Markers, Stroke, Fill" msgstr "Línumerki, útlína, fylling" -#: ../src/widgets/stroke-style.cpp:495 +#: ../src/widgets/stroke-style.cpp:496 msgid "Set markers" msgstr "Setja línumerki" -#: ../src/widgets/stroke-style.cpp:1058 ../src/widgets/stroke-style.cpp:1147 +#: ../src/widgets/stroke-style.cpp:1059 ../src/widgets/stroke-style.cpp:1148 msgid "Set stroke style" msgstr "Setja stíl útlínu" -#: ../src/widgets/stroke-style.cpp:1252 +#: ../src/widgets/stroke-style.cpp:1253 msgid "Set marker color" msgstr "Setja lit línumerkja" @@ -30544,487 +31167,516 @@ msgstr "Skipta um prufulit" msgid "Text: Change font family" msgstr "Texti: Breyta leturgerð" -#: ../src/widgets/text-toolbar.cpp:271 +#: ../src/widgets/text-toolbar.cpp:272 msgid "Text: Change font size" msgstr "Texti: Breyta leturstærð" -#: ../src/widgets/text-toolbar.cpp:307 +#: ../src/widgets/text-toolbar.cpp:317 msgid "Text: Change font style" msgstr "Texti: Breyta leturstíl" -#: ../src/widgets/text-toolbar.cpp:342 +#: ../src/widgets/text-toolbar.cpp:356 msgid "Text: Unset line height." msgstr "Texti: Losa um hæð línu." -#: ../src/widgets/text-toolbar.cpp:419 +#: ../src/widgets/text-toolbar.cpp:433 msgid "Text: Change superscript or subscript" msgstr "Texti: Breyta í háletur/lágletur" -#: ../src/widgets/text-toolbar.cpp:562 +#: ../src/widgets/text-toolbar.cpp:574 msgid "Text: Change alignment" msgstr "Texti: Breyta jöfnun" -#: ../src/widgets/text-toolbar.cpp:668 +#: ../src/widgets/text-toolbar.cpp:677 msgid "Text: Change line-height" msgstr "Texti: Breyta hæð línu" -#: ../src/widgets/text-toolbar.cpp:823 +#: ../src/widgets/text-toolbar.cpp:832 msgid "Text: Change line-height unit" msgstr "Texti: Breyta einingum línuhæðar" -#: ../src/widgets/text-toolbar.cpp:872 +#: ../src/widgets/text-toolbar.cpp:881 msgid "Text: Change word-spacing" msgstr "Texti: Breyta orðabili" -#: ../src/widgets/text-toolbar.cpp:912 +#: ../src/widgets/text-toolbar.cpp:921 msgid "Text: Change letter-spacing" msgstr "Texti: Breyta stafabili" -#: ../src/widgets/text-toolbar.cpp:950 +#: ../src/widgets/text-toolbar.cpp:959 msgid "Text: Change dx (kern)" msgstr "Texti: Breyta dx (hnikun)" -#: ../src/widgets/text-toolbar.cpp:984 +#: ../src/widgets/text-toolbar.cpp:993 msgid "Text: Change dy" msgstr "Texti: Breyta dy (hnikun)" -#: ../src/widgets/text-toolbar.cpp:1019 +#: ../src/widgets/text-toolbar.cpp:1028 msgid "Text: Change rotate" msgstr "Texti: Breyta snúningi" -#: ../src/widgets/text-toolbar.cpp:1072 +#: ../src/widgets/text-toolbar.cpp:1079 msgid "Text: Change writing mode" msgstr "Texti: Breyta skrifstefnu" -#: ../src/widgets/text-toolbar.cpp:1126 +#: ../src/widgets/text-toolbar.cpp:1131 msgid "Text: Change orientation" msgstr "Texti: Breyta stefnu" -#: ../src/widgets/text-toolbar.cpp:1654 +#: ../src/widgets/text-toolbar.cpp:1177 +msgid "Text: Change direction" +msgstr "Texti: Breyta stefnu" + +#: ../src/widgets/text-toolbar.cpp:1690 msgid "Font Family" msgstr "Leturgerð" -#: ../src/widgets/text-toolbar.cpp:1655 +#: ../src/widgets/text-toolbar.cpp:1691 msgid "Select Font Family (Alt-X to access)" msgstr "Veldu leturgerð (Alt-X til að opna)" #. Focus widget #. Enable entry completion -#: ../src/widgets/text-toolbar.cpp:1665 +#: ../src/widgets/text-toolbar.cpp:1701 msgid "Select all text with this font-family" msgstr "Velja allan texta með þessari leturgerð" -#: ../src/widgets/text-toolbar.cpp:1669 +#: ../src/widgets/text-toolbar.cpp:1705 msgid "Font not found on system" msgstr "Letrið fannst ekki á kerfinu" -#: ../src/widgets/text-toolbar.cpp:1727 +#: ../src/widgets/text-toolbar.cpp:1763 msgid "Font Style" msgstr "Leturstíll" -#: ../src/widgets/text-toolbar.cpp:1728 +#: ../src/widgets/text-toolbar.cpp:1764 msgid "Font style" msgstr "Leturstíll" #. Name -#: ../src/widgets/text-toolbar.cpp:1745 +#: ../src/widgets/text-toolbar.cpp:1781 msgid "Toggle Superscript" msgstr "Víxla háletruðu af/á" #. Label -#: ../src/widgets/text-toolbar.cpp:1746 +#: ../src/widgets/text-toolbar.cpp:1782 msgid "Toggle superscript" msgstr "Víxla háletruðu af/á" #. Name -#: ../src/widgets/text-toolbar.cpp:1758 +#: ../src/widgets/text-toolbar.cpp:1794 msgid "Toggle Subscript" msgstr "Víxla lágletruðu af/á" #. Label -#: ../src/widgets/text-toolbar.cpp:1759 +#: ../src/widgets/text-toolbar.cpp:1795 msgid "Toggle subscript" msgstr "Víxla lágletruðu af/á" -#: ../src/widgets/text-toolbar.cpp:1800 +#: ../src/widgets/text-toolbar.cpp:1831 msgid "Justify" msgstr "Hliðjöfnun" #. Name -#: ../src/widgets/text-toolbar.cpp:1807 +#: ../src/widgets/text-toolbar.cpp:1838 msgid "Alignment" msgstr "Jöfnun" #. Label -#: ../src/widgets/text-toolbar.cpp:1808 +#: ../src/widgets/text-toolbar.cpp:1839 msgid "Text alignment" msgstr "Jöfnun texta" -#: ../src/widgets/text-toolbar.cpp:1842 +#: ../src/widgets/text-toolbar.cpp:1868 msgid "Vertical — RL" msgstr "Lóðrétt — HV" -#: ../src/widgets/text-toolbar.cpp:1843 +#: ../src/widgets/text-toolbar.cpp:1869 msgid "Vertical text — lines: right to left" msgstr "Lóðréttur texti — línur: hægri til vinstri" -#: ../src/widgets/text-toolbar.cpp:1849 +#: ../src/widgets/text-toolbar.cpp:1874 msgid "Vertical — LR" msgstr "Lóðrétt — VH" -#: ../src/widgets/text-toolbar.cpp:1850 +#: ../src/widgets/text-toolbar.cpp:1875 msgid "Vertical text — lines: left to right" msgstr "Lóðréttur texti — línur: vinstri til hægri" #. Name -#: ../src/widgets/text-toolbar.cpp:1855 +#: ../src/widgets/text-toolbar.cpp:1881 msgid "Writing mode" msgstr "Skrifhamur" #. Label -#: ../src/widgets/text-toolbar.cpp:1856 +#: ../src/widgets/text-toolbar.cpp:1882 msgid "Block progression" msgstr "Framvinda í blokkum" -#: ../src/widgets/text-toolbar.cpp:1885 +#: ../src/widgets/text-toolbar.cpp:1906 msgid "Auto glyph orientation" msgstr "Sjálfvirk stefna staftákna" -#: ../src/widgets/text-toolbar.cpp:1892 +#: ../src/widgets/text-toolbar.cpp:1911 msgid "Upright" msgstr "Upprétt" -#: ../src/widgets/text-toolbar.cpp:1893 +#: ../src/widgets/text-toolbar.cpp:1912 msgid "Upright glyph orientation" msgstr "Stefna staftákna upprétt" -#: ../src/widgets/text-toolbar.cpp:1900 +#: ../src/widgets/text-toolbar.cpp:1917 msgid "Sideways" msgstr "Til hliðar" -#: ../src/widgets/text-toolbar.cpp:1901 +#: ../src/widgets/text-toolbar.cpp:1918 msgid "Sideways glyph orientation" msgstr "Stefna staftákna til hliðar" #. Name -#: ../src/widgets/text-toolbar.cpp:1907 +#: ../src/widgets/text-toolbar.cpp:1924 msgid "Text orientation" msgstr "Stefna texta" #. Label -#: ../src/widgets/text-toolbar.cpp:1908 +#: ../src/widgets/text-toolbar.cpp:1925 msgid "Text (glyph) orientation in vertical text." msgstr "Stefna texta (staftákna) í lóðréttum texta." +#: ../src/widgets/text-toolbar.cpp:1949 +msgid "LTR" +msgstr "LTR" + +#: ../src/widgets/text-toolbar.cpp:1950 +msgid "Left to right text" +msgstr "Texti frá vinstri til hægri" + +#: ../src/widgets/text-toolbar.cpp:1955 +msgid "RTL" +msgstr "RTL" + +#: ../src/widgets/text-toolbar.cpp:1956 +msgid "Right to left text" +msgstr "Texti frá hægri til vinstri" + +#. Name +#: ../src/widgets/text-toolbar.cpp:1962 +msgid "Text direction" +msgstr "Textastefna" + +#. Label +#: ../src/widgets/text-toolbar.cpp:1963 +msgid "Text direction for normally horizontal text." +msgstr "Textastefna fyrir texta sem venjulega er láréttur." + #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1941 +#: ../src/widgets/text-toolbar.cpp:1989 msgid "Smaller spacing" msgstr "Minna millibil" -#: ../src/widgets/text-toolbar.cpp:1941 ../src/widgets/text-toolbar.cpp:1980 -#: ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:1989 ../src/widgets/text-toolbar.cpp:2028 +#: ../src/widgets/text-toolbar.cpp:2059 msgctxt "Text tool" msgid "Normal" msgstr "Venjulegt" -#: ../src/widgets/text-toolbar.cpp:1941 +#: ../src/widgets/text-toolbar.cpp:1989 msgid "Larger spacing" msgstr "Meira millibil" #. name -#: ../src/widgets/text-toolbar.cpp:1946 +#: ../src/widgets/text-toolbar.cpp:1994 msgid "Line Height" msgstr "Línuhæð" #. label -#: ../src/widgets/text-toolbar.cpp:1947 +#: ../src/widgets/text-toolbar.cpp:1995 msgid "Line:" msgstr "Lína:" #. short label -#: ../src/widgets/text-toolbar.cpp:1948 +#: ../src/widgets/text-toolbar.cpp:1996 msgid "Spacing between baselines" msgstr "Bil milli grunnlína" #. Drop down menu -#: ../src/widgets/text-toolbar.cpp:1980 ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:2028 ../src/widgets/text-toolbar.cpp:2059 msgid "Negative spacing" msgstr "Neikvætt bil" -#: ../src/widgets/text-toolbar.cpp:1980 ../src/widgets/text-toolbar.cpp:2011 +#: ../src/widgets/text-toolbar.cpp:2028 ../src/widgets/text-toolbar.cpp:2059 msgid "Positive spacing" msgstr "Jákvætt bil" #. name -#: ../src/widgets/text-toolbar.cpp:1985 +#: ../src/widgets/text-toolbar.cpp:2033 msgid "Word spacing" msgstr "Orðabil" #. label -#: ../src/widgets/text-toolbar.cpp:1986 +#: ../src/widgets/text-toolbar.cpp:2034 msgid "Word:" msgstr "Orð:" #. short label -#: ../src/widgets/text-toolbar.cpp:1987 +#: ../src/widgets/text-toolbar.cpp:2035 msgid "Spacing between words (px)" msgstr "Bil á milli orða (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2016 +#: ../src/widgets/text-toolbar.cpp:2064 msgid "Letter spacing" msgstr "Stafabil" #. label -#: ../src/widgets/text-toolbar.cpp:2017 +#: ../src/widgets/text-toolbar.cpp:2065 msgid "Letter:" msgstr "Stafur:" #. short label -#: ../src/widgets/text-toolbar.cpp:2018 +#: ../src/widgets/text-toolbar.cpp:2066 msgid "Spacing between letters (px)" msgstr "Bil á milli stafa (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2047 +#: ../src/widgets/text-toolbar.cpp:2095 msgid "Kerning" msgstr "Stafþjöppun" #. label -#: ../src/widgets/text-toolbar.cpp:2048 +#: ../src/widgets/text-toolbar.cpp:2096 msgid "Kern:" msgstr "Stafþjöppun:" #. short label -#: ../src/widgets/text-toolbar.cpp:2049 +#: ../src/widgets/text-toolbar.cpp:2097 msgid "Horizontal kerning (px)" msgstr "Lárétt stafþjöppun (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2078 +#: ../src/widgets/text-toolbar.cpp:2126 msgid "Vertical Shift" msgstr "Lóðrétt hliðrun" #. label -#: ../src/widgets/text-toolbar.cpp:2079 +#: ../src/widgets/text-toolbar.cpp:2127 msgid "Vert:" msgstr "Lóðr:" #. short label -#: ../src/widgets/text-toolbar.cpp:2080 +#: ../src/widgets/text-toolbar.cpp:2128 msgid "Vertical shift (px)" msgstr "Lóðrétt hliðrun (px)" #. name -#: ../src/widgets/text-toolbar.cpp:2109 +#: ../src/widgets/text-toolbar.cpp:2157 msgid "Letter rotation" msgstr "Snúningur stafa" #. label -#: ../src/widgets/text-toolbar.cpp:2110 +#: ../src/widgets/text-toolbar.cpp:2158 msgid "Rot:" msgstr "Snú:" #. short label -#: ../src/widgets/text-toolbar.cpp:2111 +#: ../src/widgets/text-toolbar.cpp:2159 msgid "Character rotation (degrees)" msgstr "Snúningur staftákna (gráður)" #. Name -#: ../src/widgets/text-toolbar.cpp:2135 +#: ../src/widgets/text-toolbar.cpp:2183 msgid "Unset line height" msgstr "Losa um hæð línu" #. Label -#: ../src/widgets/text-toolbar.cpp:2136 +#: ../src/widgets/text-toolbar.cpp:2184 msgid "If enabled, line height is set on part of selection. Click to unset." msgstr "" #. Name -#: ../src/widgets/text-toolbar.cpp:2148 -#, fuzzy +#: ../src/widgets/text-toolbar.cpp:2196 msgid "Show outer style" -msgstr "Setja textastíl" +msgstr "Sýna ytri stíl" #. Label -#: ../src/widgets/text-toolbar.cpp:2149 +#: ../src/widgets/text-toolbar.cpp:2197 msgid "" "Show style of outermost text element. The 'font-size' and 'line-height' " "values of the outermost text element determine the minimum line spacing in " "the block." msgstr "" -#: ../src/widgets/toolbox.cpp:180 +#: ../src/widgets/toolbox.cpp:185 msgid "Color/opacity used for color tweaking" msgstr "Litur/gegnsæi notað í litaaflögun" -#: ../src/widgets/toolbox.cpp:188 +#: ../src/widgets/toolbox.cpp:193 msgid "Style of new stars" msgstr "Stíll nýrra stjarna" -#: ../src/widgets/toolbox.cpp:190 +#: ../src/widgets/toolbox.cpp:195 msgid "Style of new rectangles" msgstr "Stíll nýrra rétthyrninga" -#: ../src/widgets/toolbox.cpp:192 +#: ../src/widgets/toolbox.cpp:197 msgid "Style of new 3D boxes" msgstr "Stíll nýrra þrívíddarkassa" -#: ../src/widgets/toolbox.cpp:194 +#: ../src/widgets/toolbox.cpp:199 msgid "Style of new ellipses" msgstr "Stíll nýrra sporbauga" -#: ../src/widgets/toolbox.cpp:196 +#: ../src/widgets/toolbox.cpp:201 msgid "Style of new spirals" msgstr "Stíll nýrra spírala" -#: ../src/widgets/toolbox.cpp:198 +#: ../src/widgets/toolbox.cpp:203 msgid "Style of new paths created by Pencil" msgstr "Stíll nýrra ferla sem búnir eru til með blýanti" -#: ../src/widgets/toolbox.cpp:200 +#: ../src/widgets/toolbox.cpp:205 msgid "Style of new paths created by Pen" msgstr "Stíll nýrra ferla sem búnir eru til með penna" -#: ../src/widgets/toolbox.cpp:202 +#: ../src/widgets/toolbox.cpp:207 msgid "Style of new calligraphic strokes" msgstr "Stíll nýrra skrautskriftardrátta" -#: ../src/widgets/toolbox.cpp:204 ../src/widgets/toolbox.cpp:206 +#: ../src/widgets/toolbox.cpp:209 ../src/widgets/toolbox.cpp:211 msgid "TBD" -msgstr "" +msgstr "TBD" -#: ../src/widgets/toolbox.cpp:219 +#: ../src/widgets/toolbox.cpp:225 msgid "Style of Paint Bucket fill objects" msgstr "Stíll fötyfyllingarhluta" -#: ../src/widgets/toolbox.cpp:1721 +#: ../src/widgets/toolbox.cpp:1245 msgid "Bounding box" msgstr "Umgjörð" -#: ../src/widgets/toolbox.cpp:1721 +#: ../src/widgets/toolbox.cpp:1245 msgid "Snap bounding boxes" msgstr "Grípa í umgjarðir" -#: ../src/widgets/toolbox.cpp:1730 +#: ../src/widgets/toolbox.cpp:1254 msgid "Bounding box edges" msgstr "Hliðar umgjarða" -#: ../src/widgets/toolbox.cpp:1730 +#: ../src/widgets/toolbox.cpp:1254 msgid "Snap to edges of a bounding box" msgstr "Grípa í hliðar umgjarðar" -#: ../src/widgets/toolbox.cpp:1739 +#: ../src/widgets/toolbox.cpp:1263 msgid "Bounding box corners" msgstr "Horn umgjarðar" -#: ../src/widgets/toolbox.cpp:1739 +#: ../src/widgets/toolbox.cpp:1263 msgid "Snap bounding box corners" msgstr "Grípa í horn umgjarðar" -#: ../src/widgets/toolbox.cpp:1748 +#: ../src/widgets/toolbox.cpp:1272 msgid "BBox Edge Midpoints" msgstr "Miðpunktar á hliðum umgjarðar" -#: ../src/widgets/toolbox.cpp:1748 +#: ../src/widgets/toolbox.cpp:1272 msgid "Snap midpoints of bounding box edges" msgstr "Grípa í miðpunkta á hliðum umgjarðar" -#: ../src/widgets/toolbox.cpp:1758 +#: ../src/widgets/toolbox.cpp:1282 msgid "BBox Centers" msgstr "Miðjur umgjarða" -#: ../src/widgets/toolbox.cpp:1758 +#: ../src/widgets/toolbox.cpp:1282 msgid "Snapping centers of bounding boxes" msgstr "Grípa í miðjur umgjarða" -#: ../src/widgets/toolbox.cpp:1767 +#: ../src/widgets/toolbox.cpp:1291 msgid "Snap nodes, paths, and handles" msgstr "Grípa í hnúta, ferla og haldföng" -#: ../src/widgets/toolbox.cpp:1775 +#: ../src/widgets/toolbox.cpp:1299 msgid "Snap to paths" msgstr "Grípa í ferla" -#: ../src/widgets/toolbox.cpp:1784 +#: ../src/widgets/toolbox.cpp:1308 msgid "Path intersections" msgstr "Skaranir ferla" -#: ../src/widgets/toolbox.cpp:1784 +#: ../src/widgets/toolbox.cpp:1308 msgid "Snap to path intersections" msgstr "Grípa í skaranir ferla" -#: ../src/widgets/toolbox.cpp:1793 +#: ../src/widgets/toolbox.cpp:1317 msgid "To nodes" msgstr "Í hnúta" -#: ../src/widgets/toolbox.cpp:1793 +#: ../src/widgets/toolbox.cpp:1317 msgid "Snap cusp nodes, incl. rectangle corners" msgstr "Grípa í frjálsa hnúta, þar með talin horn ferhyrninga" -#: ../src/widgets/toolbox.cpp:1802 +#: ../src/widgets/toolbox.cpp:1326 msgid "Smooth nodes" msgstr "Mýkja hnúta" -#: ../src/widgets/toolbox.cpp:1802 +#: ../src/widgets/toolbox.cpp:1326 msgid "Snap smooth nodes, incl. quadrant points of ellipses" msgstr "Grípa í mjúka hnúta, þ.m.t. fjórðungsboga sporbauga" -#: ../src/widgets/toolbox.cpp:1811 +#: ../src/widgets/toolbox.cpp:1335 msgid "Line Midpoints" msgstr "Miðpunktar á línum" -#: ../src/widgets/toolbox.cpp:1811 +#: ../src/widgets/toolbox.cpp:1335 msgid "Snap midpoints of line segments" msgstr "Grípa í miðpunkta á línubútum" -#: ../src/widgets/toolbox.cpp:1820 +#: ../src/widgets/toolbox.cpp:1344 msgid "Others" msgstr "Annað" -#: ../src/widgets/toolbox.cpp:1820 +#: ../src/widgets/toolbox.cpp:1344 msgid "Snap other points (centers, guide origins, gradient handles, etc.)" msgstr "" "Grípa í aðra punkta (miðjur, upphafspunkta stoðlína, litstigulshaldföng, o.s." "frv.)" -#: ../src/widgets/toolbox.cpp:1828 +#: ../src/widgets/toolbox.cpp:1352 msgid "Object Centers" msgstr "Miðjur hluta" -#: ../src/widgets/toolbox.cpp:1828 +#: ../src/widgets/toolbox.cpp:1352 msgid "Snap centers of objects" msgstr "Grípa í miðjur hluta" -#: ../src/widgets/toolbox.cpp:1837 +#: ../src/widgets/toolbox.cpp:1361 msgid "Rotation Centers" msgstr "Snúningsmiðjur" -#: ../src/widgets/toolbox.cpp:1837 +#: ../src/widgets/toolbox.cpp:1361 msgid "Snap an item's rotation center" msgstr "Grípa í snúningsmiðjur hlutar" -#: ../src/widgets/toolbox.cpp:1846 +#: ../src/widgets/toolbox.cpp:1370 msgid "Text baseline" msgstr "Grunnlína texta" -#: ../src/widgets/toolbox.cpp:1846 +#: ../src/widgets/toolbox.cpp:1370 msgid "Snap text anchors and baselines" msgstr "Grípa í festingar og grunnlínur texta" -#: ../src/widgets/toolbox.cpp:1856 +#: ../src/widgets/toolbox.cpp:1380 msgid "Page border" msgstr "Jaðar síðu" -#: ../src/widgets/toolbox.cpp:1856 +#: ../src/widgets/toolbox.cpp:1380 msgid "Snap to the page border" msgstr "Grípa í jaðar síðu" -#: ../src/widgets/toolbox.cpp:1865 +#: ../src/widgets/toolbox.cpp:1389 msgid "Snap to grids" msgstr "Grípa í hnitanet" -#: ../src/widgets/toolbox.cpp:1874 +#: ../src/widgets/toolbox.cpp:1398 msgid "Snap guides" msgstr "Grípa í stoðlínur" @@ -31241,7 +31893,7 @@ msgstr "Notaðu þrýsting frá inntakstæki til að breyta krafti aðgerðar" #: ../share/extensions/convert2dashes.py:56 msgid "Total number of objects not converted: {}\n" -msgstr "" +msgstr "Fjöldi hluta sem ekki var umbreytt: {}\n" #: ../share/extensions/dimension.py:108 msgid "Please select an object." @@ -31250,38 +31902,43 @@ msgstr "Veldu einhvern hlut." #: ../share/extensions/dimension.py:133 msgid "Unable to process this object. Try changing it into a path first." msgstr "" - -#: ../share/extensions/draw_from_triangle.py:179 -msgid "Side Length 'a' (" -msgstr "Lengd hliðar 'a' (" +"Tókst ekki að vinna með þennan hlut. Prófaðu að umbreyta honum fyrst í feril." #: ../share/extensions/draw_from_triangle.py:180 -msgid "Side Length 'b' (" -msgstr "Lengd hliðar 'b' (" +#, python-brace-format +msgid "Side Length 'a' ({0}): {1}" +msgstr "Lengd hliðar 'a' ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:181 -msgid "Side Length 'c' (" -msgstr "Lengd hliðar 'c' (" +#, python-brace-format +msgid "Side Length 'b' ({0}): {1}" +msgstr "Lengd hliðar 'b' ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:182 -msgid "Angle 'A' (radians): " -msgstr "Horn 'A' (radíanar): " +#, python-brace-format +msgid "Side Length 'c' ({0}): {1}" +msgstr "Lengd hliðar 'c' ({0}): {1}" #: ../share/extensions/draw_from_triangle.py:183 -msgid "Angle 'B' (radians): " -msgstr "Horn 'B' (radíanar): " +msgid "Angle 'A' (radians): {}" +msgstr "Horn 'A' (radíanar): {}" #: ../share/extensions/draw_from_triangle.py:184 -msgid "Angle 'C' (radians): " -msgstr "Horn 'C' (radíanar): " +msgid "Angle 'B' (radians): {}" +msgstr "Horn 'B' (radíanar): {}" #: ../share/extensions/draw_from_triangle.py:185 -msgid "Semiperimeter (px): " -msgstr "" +msgid "Angle 'C' (radians): {}" +msgstr "Horn 'C' (radíanar): {}" #: ../share/extensions/draw_from_triangle.py:186 -msgid "Area (" -msgstr "Svæði (" +msgid "Semiperimeter (px): {}" +msgstr "Hálft ummál (px): {}" + +#: ../share/extensions/draw_from_triangle.py:187 +#, python-brace-format +msgid "Area ({0}^2): {1}" +msgstr "Flötur ({0}^2): {1}" #: ../share/extensions/dxf_input.py:530 #, python-format @@ -31290,19 +31947,19 @@ msgid "" "to Release 13 format using QCad." msgstr "" -#: ../share/extensions/dxf_outlines.py:47 +#: ../share/extensions/dxf_outlines.py:49 msgid "" "Failed to import the numpy or numpy.linalg modules. These modules are " "required by this extension. Please install them and try again." msgstr "" -#: ../share/extensions/dxf_outlines.py:313 +#: ../share/extensions/dxf_outlines.py:315 msgid "" "Error: Field 'Layer match name' must be filled when using 'By name match' " "option" msgstr "" -#: ../share/extensions/dxf_outlines.py:354 +#: ../share/extensions/dxf_outlines.py:364 #, python-format msgid "Warning: Layer '%s' not found!" msgstr "Aðvörun: Lagið '%s' fannst ekki!" @@ -31334,13 +31991,13 @@ msgstr "" #: ../share/extensions/extractimage.py:66 #, python-format msgid "Image extracted to: %s" -msgstr "" +msgstr "Mynd afþjappað í: %s" #: ../share/extensions/extractimage.py:73 msgid "Unable to find image data." msgstr "Get ekki fundið myndgögn." -#: ../share/extensions/extrude.py:41 +#: ../share/extensions/extrude.py:42 msgid "Need at least 2 paths selected" msgstr "Þarf að minnsta kosti 2 valda ferla" @@ -31383,6 +32040,8 @@ msgid "" "Can not write to specified file!\n" "%s" msgstr "" +"Get ekki skrifað í uppgefna skrá!\n" +"%s" #: ../share/extensions/gcodetools.py:4038 #, python-format @@ -31532,7 +32191,7 @@ msgstr "" #: ../share/extensions/gcodetools.py:6006 msgid "Selection is empty! Will compute whole drawing." -msgstr "" +msgstr "Myndvalið er tómt. Mun reikna alla teikninguna." #: ../share/extensions/gcodetools.py:6060 msgid "" @@ -31589,7 +32248,7 @@ msgstr "" #: ../share/extensions/generate_voronoi.py:34 msgid "Python version is: " -msgstr "" +msgstr "Python útgáfa: " #: ../share/extensions/generate_voronoi.py:92 msgid "Please select an object" @@ -31605,11 +32264,11 @@ msgstr "" #: ../share/extensions/gimp_xcf.py:45 msgid "An error occurred while processing the XCF file." -msgstr "" +msgstr "Villa kom upp við að vinna með XFC-skrána." #: ../share/extensions/gimp_xcf.py:183 msgid "This extension requires at least one non empty layer." -msgstr "" +msgstr "Viðbótin krefst að minnsta kosti eins lags sem ekki sé tómt." #: ../share/extensions/guillotine.py:248 msgid "The sliced bitmaps have been saved as:" @@ -31624,11 +32283,11 @@ msgid "Pen " msgstr "Penni " #. issue error if no hpgl data found -#: ../share/extensions/hpgl_input.py:56 +#: ../share/extensions/hpgl_input.py:58 msgid "No HPGL data found." msgstr "Engin HPGL gögn fundust." -#: ../share/extensions/hpgl_input.py:64 +#: ../share/extensions/hpgl_input.py:66 msgid "" "The HPGL data contained unknown (unsupported) commands, there is a " "possibility that the drawing is missing some content." @@ -31655,7 +32314,7 @@ msgstr "" #: ../share/extensions/inkex.py:184 #, python-format msgid "Unable to open specified file: %s" -msgstr "" +msgstr "Tókst ekki að opna tilgreinda skrá: %s" #: ../share/extensions/inkex.py:193 #, python-format @@ -31762,21 +32421,21 @@ msgstr "{0}Heiti lags: {1}" #: ../share/extensions/jessyInk_summary.py:101 msgid "{0}Transition in: {1} ({2!s} s)" -msgstr "" +msgstr "{0}Millifærsla inn: {1} ({2!s} s)" #: ../share/extensions/jessyInk_summary.py:103 #, python-brace-format msgid "{0}Transition in: {1}" -msgstr "" +msgstr "{0}Millifærsla inn: {1}" #: ../share/extensions/jessyInk_summary.py:110 msgid "{0}Transition out: {1} ({2!s} s)" -msgstr "" +msgstr "{0}Millifærsla út: {1} ({2!s} s)" #: ../share/extensions/jessyInk_summary.py:112 #, python-brace-format msgid "{0}Transition out: {1}" -msgstr "" +msgstr "{0}Millifærsla út: {1}" #: ../share/extensions/jessyInk_summary.py:119 #, python-brace-format @@ -31784,11 +32443,14 @@ msgid "" "\n" "{0}Auto-texts:" msgstr "" +"\n" +"{0}Sjálfvirkir textar:" #: ../share/extensions/jessyInk_summary.py:122 #, python-brace-format msgid "{0}\t\"{1}\" (object id \"{2}\") will be replaced by \"{3}\"." msgstr "" +"{0}\t\"{1}\" (hlut með auðkennið \"{2}\") verður skipt út fyrir \"{3}\"." #: ../share/extensions/jessyInk_summary.py:167 #, python-brace-format @@ -31840,7 +32502,7 @@ msgstr "Lagið fannst ekki.\n" #: ../share/extensions/jessyInk_transitions.py:56 msgid "More than one layer with this name found.\n" -msgstr "" +msgstr "Fleiri en eitt lag með þessu heiti fundust.\n" #: ../share/extensions/jessyInk_transitions.py:69 msgid "Please enter a layer name.\n" @@ -31875,19 +32537,20 @@ msgstr "" msgid "unable to locate marker: %s" msgstr "Gat ekki fundið merki: %s" -#: ../share/extensions/measure.py:58 +#: ../share/extensions/measure.py:61 msgid "" "Failed to import the numpy modules. These modules are required by this " "extension. Please install them and try again. On a Debian-like system this " "can be done with the command, sudo apt-get install python-numpy." msgstr "" -#: ../share/extensions/measure.py:120 +#: ../share/extensions/measure.py:123 msgid "Area is zero, cannot calculate Center of Mass" msgstr "" #: ../share/extensions/pathalongpath.py:207 -#: ../share/extensions/pathscatter.py:226 ../share/extensions/perspective.py:50 +#: ../share/extensions/pathscatter.py:226 +#: ../share/extensions/perspective.py:52 msgid "This extension requires two selected paths." msgstr "" @@ -31896,19 +32559,24 @@ msgid "" "The total length of the pattern is too small :\n" "Please choose a larger object or set 'Space between copies' > 0" msgstr "" +"Heildarlengd mynstursins er of lítil :\n" +"Veldu stærri hlut eða stilltu 'Bil á milli eintaka' > 0" #: ../share/extensions/pathalongpath.py:276 msgid "" "The 'stretch' option requires that the pattern must have non-zero width :\n" "Please edit the pattern width." msgstr "" +"Valkosturinn 'teygja' krefst þess að mynstrið sé með breidd sem ekki er " +"núll:\n" +"Breyttu breidd mynstursins." #: ../share/extensions/pathmodifier.py:235 #, python-format msgid "Please first convert objects to paths! (Got [%s].)" msgstr "" -#: ../share/extensions/perspective.py:42 +#: ../share/extensions/perspective.py:44 msgid "" "Failed to import the numpy or numpy.linalg modules. These modules are " "required by this extension. Please install them and try again. On a Debian-" @@ -31916,31 +32584,36 @@ msgid "" "numpy." msgstr "" -#: ../share/extensions/perspective.py:58 ../share/extensions/summersnight.py:49 +#: ../share/extensions/perspective.py:60 +#: ../share/extensions/summersnight.py:49 #, python-format msgid "" "The first selected object is of type '%s'.\n" "Try using the procedure Path->Object to Path." msgstr "" -#: ../share/extensions/perspective.py:65 ../share/extensions/summersnight.py:57 +#: ../share/extensions/perspective.py:67 +#: ../share/extensions/summersnight.py:57 msgid "" "This extension requires that the second selected path be four nodes long." msgstr "" -#: ../share/extensions/perspective.py:91 ../share/extensions/summersnight.py:90 +#: ../share/extensions/perspective.py:93 +#: ../share/extensions/summersnight.py:90 msgid "" "The second selected object is a group, not a path.\n" "Try using the procedure Object->Ungroup." msgstr "" -#: ../share/extensions/perspective.py:93 ../share/extensions/summersnight.py:92 +#: ../share/extensions/perspective.py:95 +#: ../share/extensions/summersnight.py:92 msgid "" "The second selected object is not a path.\n" "Try using the procedure Path->Object to Path." msgstr "" -#: ../share/extensions/perspective.py:96 ../share/extensions/summersnight.py:95 +#: ../share/extensions/perspective.py:98 +#: ../share/extensions/summersnight.py:95 msgid "" "The first selected object is not a path.\n" "Try using the procedure Path->Object to Path." @@ -31954,26 +32627,30 @@ msgstr "" #: ../share/extensions/plotter.py:146 msgid "pySerial is not installed. Please follow these steps:" -msgstr "" +msgstr "pySerial er ekki uppsett. Farðu í gegnum þessi skref:" #: ../share/extensions/plotter.py:147 msgid "1. Download and extract (unzip) this file to your local harddisk:" -msgstr "" +msgstr "1. Sæktu og afþjappaðu (unzip) þessari skrá á harða diskinn þinn:" #: ../share/extensions/plotter.py:149 msgid "" "2. Copy the \"serial\" folder (Can be found inside the just extracted folder)" msgstr "" +"2. Afritaðu \"serial\" möppuna (má finna inni ú skránni sem var verið að " +"afþjappa)" #: ../share/extensions/plotter.py:150 msgid "" " into the following Inkscape folder: C:\\[Program files]\\inkscape\\python" "\\Lib\\" msgstr "" +" inn í eftirfarandi Inkscape möppu: C:\\[Program files]\\inkscape\\python" +"\\Lib\\" #: ../share/extensions/plotter.py:151 msgid "3. Close and restart Inkscape." -msgstr "" +msgstr "3. Lokaðu og endurræstu Inkscape." #: ../share/extensions/plotter.py:200 msgid "" @@ -31981,47 +32658,48 @@ msgid "" "and the settings are correct." msgstr "" -#: ../share/extensions/polyhedron_3d.py:64 +#: ../share/extensions/polyhedron_3d.py:67 msgid "" "Failed to import the numpy module. This module is required by this " "extension. Please install it and try again. On a Debian-like system this " "can be done with the command 'sudo apt-get install python-numpy'." msgstr "" -#: ../share/extensions/polyhedron_3d.py:335 +#: ../share/extensions/polyhedron_3d.py:338 msgid "No face data found in specified file." -msgstr "" +msgstr "Engin gögn fundust í umbeðinni skrá." -#: ../share/extensions/polyhedron_3d.py:336 +#: ../share/extensions/polyhedron_3d.py:339 msgid "Try selecting \"Edge Specified\" in the Model File tab.\n" msgstr "" -#: ../share/extensions/polyhedron_3d.py:342 +#: ../share/extensions/polyhedron_3d.py:345 msgid "No edge data found in specified file." msgstr "" -#: ../share/extensions/polyhedron_3d.py:343 +#: ../share/extensions/polyhedron_3d.py:346 msgid "Try selecting \"Face Specified\" in the Model File tab.\n" msgstr "" #. we cannot generate a list of faces from the edges without a lot of computation -#: ../share/extensions/polyhedron_3d.py:522 +#: ../share/extensions/polyhedron_3d.py:525 msgid "" "Face Data Not Found. Ensure file contains face data, and check the file is " "imported as \"Face-Specified\" under the \"Model File\" tab.\n" msgstr "" -#: ../share/extensions/polyhedron_3d.py:524 +#: ../share/extensions/polyhedron_3d.py:527 msgid "Internal Error. No view type selected\n" msgstr "" -#: ../share/extensions/print_win32_vector.py:39 +#: ../share/extensions/prepare_print_win32_vector.py:43 +#: ../share/extensions/print_win32_vector.py:40 msgid "sorry, this will run only on Windows, exiting..." -msgstr "" +msgstr "Því miður, þetta keyrir einungis á Windows, hætti..." -#: ../share/extensions/print_win32_vector.py:177 +#: ../share/extensions/print_win32_vector.py:178 msgid "Failed to open default printer" -msgstr "" +msgstr "Mistókst að opna sjálfgefinn prentara" #: ../share/extensions/render_barcode_datamatrix.py:201 msgid "Unrecognised DataMatrix size" @@ -32035,7 +32713,7 @@ msgstr "" #. abort if converting blank text #: ../share/extensions/render_barcode_datamatrix.py:677 msgid "Please enter an input string" -msgstr "" +msgstr "Settu inn inntaksstreng" #. abort if converting blank text #: ../share/extensions/render_barcode_qrcode.py:1053 @@ -32075,7 +32753,7 @@ msgstr "Ekkert var valið" #: ../share/extensions/replace_font.py:242 msgid "Please enter a search string in the find box." -msgstr "" +msgstr "Þú verður að gefa upp leitarstreng í leitarreitinn." #: ../share/extensions/replace_font.py:246 msgid "Please enter a replacement font in the replace with box." @@ -32103,21 +32781,23 @@ msgstr "Gat ekki staðsett skrá: %s" #: ../share/extensions/svgcalendar.py:265 #: ../share/extensions/svgcalendar.py:287 msgid "You must select a correct system encoding." -msgstr "" +msgstr "Þú verður að velja rétta stafatöflu kerfis." -#: ../share/extensions/uniconv-ext.py:54 -#: ../share/extensions/uniconv_output.py:121 +#: ../share/extensions/uniconv-ext.py:55 +#: ../share/extensions/uniconv_output.py:122 msgid "" "You need to install the UniConvertor software.\n" "For GNU/Linux: install the package python-uniconvertor.\n" "For Windows: download it from\n" -"http://sk1project.org/modules.php?name=Products&product=uniconvertor\n" +"https://sk1project.net/modules.php?" +"name=Products&product=uniconvertor&op=download\n" "and install into your Inkscape's Python location\n" msgstr "" "Þú þarft að setja upp UniConvertor hugbúnaðinn.\n" "Fyrir GNU/Linux: settu inn pakkann python-uniconvertor.\n" "Fyrir Windows: náðu í hann frá\n" -"http://sk1project.org/modules.php?name=Products&product=uniconvertor\n" +"https://sk1project.net/modules.php?" +"name=Products&product=uniconvertor&op=download\n" "og settu það upp þar sem Inkscape geymir Python-uppsetninguna\n" #: ../share/extensions/voronoi2svg.py:205 @@ -32174,17 +32854,17 @@ msgstr "Ekkert sneiðingalag fannst." #: ../share/extensions/webslicer_export.py:106 #, python-format msgid "You have more than one element with \"%s\" html-id." -msgstr "" +msgstr "Þú ert með fleiri en eitt stak með \"%s\" html-auðkenni." #: ../share/extensions/webslicer_export.py:336 msgid "You must install the ImageMagick to get JPG and GIF." -msgstr "" +msgstr "Þú verður að setja upp ImageMagick til að vinna með JPG og GIF." #. PARAMETER PROCESSING #. lines of longitude are odd : abort #: ../share/extensions/wireframe_sphere.py:116 msgid "Please enter an even number of lines of longitude." -msgstr "" +msgstr "Settu inn jafna tölu lengdargráðulína." #. vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99 #: ../share/extensions/addnodes.inx.h:1 @@ -32227,8 +32907,8 @@ msgid "AI 8.0 Input" msgstr "AI 8.0 ílag" #: ../share/extensions/ai_input.inx.h:2 -msgid "Adobe Illustrator 8.0 and below (*.ai)" -msgstr "Adobe Illustrator 8.0 og undir (*.ai)" +msgid "Adobe Illustrator 8.0 and below (UC) (*.ai)" +msgstr "Adobe Illustrator 8.0 og eldra (UC) (*.ai)" #: ../share/extensions/ai_input.inx.h:3 msgid "Open files saved with Adobe Illustrator 8.0 or older" @@ -32287,8 +32967,8 @@ msgid "Computer Graphics Metafile files input" msgstr "Computer Graphics Metafile skráaílag" #: ../share/extensions/cgm_input.inx.h:2 -msgid "Computer Graphics Metafile files (*.cgm)" -msgstr "Computer Graphics Metafile skrár (*.cgm)" +msgid "Computer Graphics Metafile files (UC) (*.cgm)" +msgstr "Computer Graphics Metafile skrár (UC) (*.cgm)" #: ../share/extensions/cgm_input.inx.h:3 msgid "Open Computer Graphics Metafile files" @@ -32582,12 +33262,11 @@ msgid "Show page info" msgstr "Birta upplýsingar um síðu" #: ../share/extensions/docinfo.inx.h:3 -#, fuzzy msgid "" "Choose this tab if you would like to see page info previously to apply DPI " "Switcher." msgstr "" -"Lokaðu þessum flipa ef þú vilt sjá lista yfir allt letur sem fannst/er notað." +"Veldu þennan flipa ef þú vilt sjá síðuupplýsingar áður en upplausn er breytt." #: ../share/extensions/dots.inx.h:1 msgid "Number Nodes" @@ -32599,7 +33278,7 @@ msgstr "Punktstærð:" #: ../share/extensions/dots.inx.h:5 msgid "Starting dot number:" -msgstr "" +msgstr "Númer upphafspunkts:" #: ../share/extensions/dots.inx.h:6 msgid "Step:" @@ -32686,7 +33365,7 @@ msgstr "" #: ../share/extensions/draw_from_triangle.inx.h:16 msgid "Centroid" -msgstr "" +msgstr "Þyngdarpunktur" #: ../share/extensions/draw_from_triangle.inx.h:17 msgid "Nine-Point Centre" @@ -32694,7 +33373,7 @@ msgstr "" #: ../share/extensions/draw_from_triangle.inx.h:18 msgid "Nine-Point Circle" -msgstr "" +msgstr "Níu-punkta hringur" #: ../share/extensions/draw_from_triangle.inx.h:19 msgid "Symmedians" @@ -32734,7 +33413,7 @@ msgstr "Teikna línumerki á þessum punkti" #: ../share/extensions/draw_from_triangle.inx.h:28 msgid "Draw Circle Around This Point" -msgstr "" +msgstr "Teikna hring í kringum þennan punkt" #: ../share/extensions/draw_from_triangle.inx.h:29 #: ../share/extensions/wireframe_sphere.inx.h:6 @@ -32800,7 +33479,7 @@ msgstr "DXF ílag" #: ../share/extensions/dxf_input.inx.h:3 msgid "Method of Scaling:" -msgstr "" +msgstr "Aðferð við kvörðun:" #: ../share/extensions/dxf_input.inx.h:4 msgid "Manual scale factor:" @@ -32849,7 +33528,7 @@ msgstr "Flytja inn AutoCAD's Document Exchange snið" #: ../share/extensions/dxf_outlines.inx.h:1 msgid "Desktop Cutting Plotter" -msgstr "" +msgstr "Borðskurðarplotter (Desktop Cutting Plotter)" #: ../share/extensions/dxf_outlines.inx.h:3 msgid "use ROBO-Master type of spline output" @@ -32889,13 +33568,13 @@ msgid "px" msgstr "px" #: ../share/extensions/dxf_outlines.inx.h:12 -#: ../share/extensions/gcodetools_area.inx.h:46 -#: ../share/extensions/gcodetools_dxf_points.inx.h:18 -#: ../share/extensions/gcodetools_engraving.inx.h:24 +#: ../share/extensions/gcodetools_area.inx.h:62 +#: ../share/extensions/gcodetools_dxf_points.inx.h:23 +#: ../share/extensions/gcodetools_engraving.inx.h:32 #: ../share/extensions/gcodetools_graffiti.inx.h:18 -#: ../share/extensions/gcodetools_lathe.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:45 #: ../share/extensions/gcodetools_orientation_points.inx.h:11 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:32 #: ../share/extensions/render_gears.inx.h:9 msgid "mm" msgstr "mm" @@ -32909,13 +33588,13 @@ msgid "m" msgstr "m" #: ../share/extensions/dxf_outlines.inx.h:15 -#: ../share/extensions/gcodetools_area.inx.h:47 -#: ../share/extensions/gcodetools_dxf_points.inx.h:19 -#: ../share/extensions/gcodetools_engraving.inx.h:25 +#: ../share/extensions/gcodetools_area.inx.h:63 +#: ../share/extensions/gcodetools_dxf_points.inx.h:24 +#: ../share/extensions/gcodetools_engraving.inx.h:33 #: ../share/extensions/gcodetools_graffiti.inx.h:19 -#: ../share/extensions/gcodetools_lathe.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:46 #: ../share/extensions/gcodetools_orientation_points.inx.h:12 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:33 #: ../share/extensions/render_gears.inx.h:8 msgid "in" msgstr "in" @@ -32980,6 +33659,8 @@ msgstr "DXF frálag" #: ../share/extensions/dxf_output.inx.h:2 msgid "pstoedit must be installed to run; see http://www.pstoedit.net/pstoedit" msgstr "" +"pstoedit verður að vera uppsett til keyrslu; skoðaðu http://www.pstoedit.net/" +"pstoedit" #: ../share/extensions/dxf_output.inx.h:3 msgid "AutoCAD DXF R12 (*.dxf)" @@ -33110,7 +33791,7 @@ msgstr "Bakgrunnur síðu:" #: ../share/extensions/empty_video.inx.h:1 msgid "Video Screen" -msgstr "" +msgstr "Myndmerkisskjár" #: ../share/extensions/empty_video.inx.h:2 msgid "Video size:" @@ -33215,6 +33896,10 @@ msgstr "Brotamyndgera" msgid "Subdivisions:" msgstr "Uppskipting:" +#: ../share/extensions/frame.inx.h:1 +msgid "Frame" +msgstr "Rammi" + #: ../share/extensions/funcplot.inx.h:1 msgid "Function Plotter" msgstr "Teiknar gröf falla" @@ -33327,9 +34012,10 @@ msgstr "Teikna ása" #: ../share/extensions/funcplot.inx.h:37 msgid "Add x-axis endpoints" -msgstr "" +msgstr "Bæta við endapunktum á X-ás" #: ../share/extensions/gcodetools_about.inx.h:1 +#: ../share/extensions/scour.inx.h:57 msgid "About" msgstr "Um hugbúnaðinn" @@ -33337,59 +34023,91 @@ msgstr "Um hugbúnaðinn" msgid "" "Gcodetools was developed to make simple Gcode from Inkscape's paths. Gcode " "is a special format which is used in most of CNC machines. So Gcodetools " -"allows you to use Inkscape as CAM program. It can be use with a lot of " -"machine types: Mills Lathes Laser and Plasma cutters and engravers Mill " -"engravers Plotters etc. To get more info visit developers page at http://www." -"cnc-club.ru/gcodetools" +"allows you to use Inkscape as CAM program. \n" +"\n" +"It can be used with a lot of machine types: \n" +"\tMills \n" +"\tLathes\n" +"\tLaser and Plasma cutters and engravers \n" +"\tMill engravers\n" +"\tPlotters\n" +"\tetc.\n" +"\t\n" +"To get more info visit developers page at http://www.cnc-club.ru/gcodetools" msgstr "" "Gcodetools var hannað til að geta umbreytt Inkscape-ferlum í einfaldan Gcode-" "kóða. Gcode-kóði er sérstakt snið sem notað er í flestum CNC-skurðarvélum. " -"Þannig að með Gcodetools geturðu notað Inkscape sem CAM-forrit. Hægt er að " -"nota þetta með mörgum gerðum véla á borð við rennibekki, leysi- og " -"plasmaskera, plotterum og flera má telja. Til að nálgast ítarlegri " -"upplýsingar er best að fara á vef forritaranna á http://www.cnc-club.ru/" -"gcodetools" - -#: ../share/extensions/gcodetools_about.inx.h:4 -#: ../share/extensions/gcodetools_area.inx.h:54 +"Þannig að með Gcodetools geturðu notað Inkscape sem CAM-forrit.\n" +"\n" +"Hægt er að nota þetta með mörgum gerðum véla:\n" +"\tFræsarar \n" +"\tRennibekkir \n" +"\tLeysi- og plasmaskerar \n" +"\tSkurðarvélar\n" +"\tPlottarar\n" +"\tOg flera má telja. \n" +"\t\n" +"Til að nálgast ítarlegri upplýsingar er best að fara á vef forritaranna á " +"http://www.cnc-club.ru/gcodetools" + +#: ../share/extensions/gcodetools_about.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:70 #: ../share/extensions/gcodetools_check_for_updates.inx.h:4 -#: ../share/extensions/gcodetools_dxf_points.inx.h:26 -#: ../share/extensions/gcodetools_engraving.inx.h:32 -#: ../share/extensions/gcodetools_graffiti.inx.h:43 -#: ../share/extensions/gcodetools_lathe.inx.h:47 -#: ../share/extensions/gcodetools_orientation_points.inx.h:15 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:36 +#: ../share/extensions/gcodetools_dxf_points.inx.h:31 +#: ../share/extensions/gcodetools_engraving.inx.h:40 +#: ../share/extensions/gcodetools_graffiti.inx.h:54 +#: ../share/extensions/gcodetools_lathe.inx.h:53 +#: ../share/extensions/gcodetools_orientation_points.inx.h:26 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:40 #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:18 -#: ../share/extensions/gcodetools_tools_library.inx.h:13 +#: ../share/extensions/gcodetools_tools_library.inx.h:19 msgid "" +"\n" "Gcodetools plug-in: converts paths to Gcode (using circular interpolation), " -"makes offset paths and engraves sharp corners using cone cutters. This plug-" -"in calculates Gcode for paths using circular interpolation or linear motion " -"when needed. Tutorials, manuals and support can be found at English support " -"forum: http://www.cnc-club.ru/gcodetools and Russian support forum: http://" -"www.cnc-club.ru/gcodetoolsru Credits: Nick Drobchenko, Vladimir Kalyaev, " -"John Brooker, Henry Nicolas, Chris Lusby Taylor. Gcodetools ver. 1.7" +"makes offset paths and engraves sharp corners using cone cutters. \n" +"This plug-in calculates Gcode for paths using circular interpolation or " +"linear motion when needed.\n" +"\n" +"Tutorials, manuals and support can be found at\n" +"English support forum:\n" +"\thttp://www.cnc-club.ru/gcodetools\n" +"\t\n" +"and Russian support forum:\n" +"\thttp://www.cnc-club.ru/gcodetoolsru\n" +"\n" +"Credits: Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, " +"Chris Lusby Taylor.\n" +"\n" +"Gcodetools ver. 1.7\n" msgstr "" "Gcodetools viðbótin: umbreytir ferlum í Gcode-kóða, útbýr hliðraða ferla og " -"getur rist hvöss horn með kónískum skurðarhausum. Þessi viðbót reiknar Gcode-" -"kóða fyrir ferla með hringlaga brúun (interpolation) eða með línulegri " -"hreyfingu ef þess er óskað. Kennsluefni, leiðbeiningar og annan stuðning er " -"hægt að finna á ensku spjallsvæði hér: http://www.cnc-club.ru/gcodetools og " -"á rússneska spjallsvæðinu: http://www.cnc-club.ru/gcodetoolsru Framlög frá: " -"Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, Chris Lusby " -"Taylor. Gcodetools útg. 1.7" - -#: ../share/extensions/gcodetools_about.inx.h:5 -#: ../share/extensions/gcodetools_area.inx.h:55 -#: ../share/extensions/gcodetools_check_for_updates.inx.h:5 -#: ../share/extensions/gcodetools_dxf_points.inx.h:27 -#: ../share/extensions/gcodetools_engraving.inx.h:33 -#: ../share/extensions/gcodetools_graffiti.inx.h:44 -#: ../share/extensions/gcodetools_lathe.inx.h:48 -#: ../share/extensions/gcodetools_orientation_points.inx.h:16 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:37 -#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:19 -#: ../share/extensions/gcodetools_tools_library.inx.h:14 +"getur rist hvöss horn með kónískum skurðarhausum.\n" +"Þessi viðbót reiknar Gcode-kóða fyrir ferla með hringlaga brúun " +"(interpolation) eða með línulegri hreyfingu ef þess er óskað.\n" +"\n" +"Kennsluefni, leiðbeiningar og annan stuðning er hægt\n" +"að finna á ensku spjallsvæði hér:\n" +"\thttp://www.cnc-club.ru/gcodetools\n" +"\t\n" +"og á rússneska spjallsvæðinu:\n" +"\thttp://www.cnc-club.ru/gcodetoolsru\n" +"\n" +"Framlög frá: Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, " +"Chris Lusby Taylor.\n" +"\n" +"Gcodetools útg. 1.7\n" + +#: ../share/extensions/gcodetools_about.inx.h:29 +#: ../share/extensions/gcodetools_area.inx.h:85 +#: ../share/extensions/gcodetools_check_for_updates.inx.h:19 +#: ../share/extensions/gcodetools_dxf_points.inx.h:46 +#: ../share/extensions/gcodetools_engraving.inx.h:55 +#: ../share/extensions/gcodetools_graffiti.inx.h:69 +#: ../share/extensions/gcodetools_lathe.inx.h:68 +#: ../share/extensions/gcodetools_orientation_points.inx.h:41 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:55 +#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:33 +#: ../share/extensions/gcodetools_tools_library.inx.h:34 msgid "Gcodetools" msgstr "Gcodetools-verkfæri" @@ -33411,313 +34129,325 @@ msgstr "" #: ../share/extensions/gcodetools_area.inx.h:5 msgid "" +"\n" "\"Create area offset\": creates several Inkscape path offsets to fill " -"original path's area up to \"Area radius\" value. Outlines start from \"1/2 D" -"\" up to \"Area width\" total width with \"D\" steps where D is taken from " -"the nearest tool definition (\"Tool diameter\" value). Only one offset will " -"be created if the \"Area width\" is equal to \"1/2 D\"." +"original path's area up to \"Area radius\" value. \n" +"\n" +"Outlines start from \"1/2 D\" up to \"Area width\" total width with \"D\" " +"steps where D is taken from the nearest tool definition (\"Tool diameter\" " +"value).\n" +"Only one offset will be created if the \"Area width\" is equal to \"1/2 D" +"\".\n" +"\t\t\t" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:6 +#: ../share/extensions/gcodetools_area.inx.h:11 msgid "Fill area" msgstr "Fyllisvæði" -#: ../share/extensions/gcodetools_area.inx.h:7 +#: ../share/extensions/gcodetools_area.inx.h:12 msgid "Area fill angle" -msgstr "" +msgstr "Fyllihorn flatar" -#: ../share/extensions/gcodetools_area.inx.h:8 +#: ../share/extensions/gcodetools_area.inx.h:13 msgid "Area fill shift" -msgstr "" +msgstr "Fyllingarhliðrun flatar" -#: ../share/extensions/gcodetools_area.inx.h:9 +#: ../share/extensions/gcodetools_area.inx.h:14 msgid "Filling method" msgstr "Aðferð við fyllingu" -#: ../share/extensions/gcodetools_area.inx.h:10 +#: ../share/extensions/gcodetools_area.inx.h:15 msgid "Zig zag" msgstr "Sikk-sakk" -#: ../share/extensions/gcodetools_area.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:17 msgid "Area artifacts" -msgstr "" +msgstr "Aukamyndanir flatar" -#: ../share/extensions/gcodetools_area.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:18 msgid "Artifact diameter:" -msgstr "" +msgstr "Þvermál aukamyndurnar:" -#: ../share/extensions/gcodetools_area.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:19 msgid "Action:" msgstr "Aðgerð:" -#: ../share/extensions/gcodetools_area.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:20 msgid "mark with an arrow" -msgstr "" +msgstr "merkja með ör" -#: ../share/extensions/gcodetools_area.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:21 msgid "mark with style" -msgstr "" +msgstr "merkja með stíl" -#: ../share/extensions/gcodetools_area.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:22 msgid "delete" msgstr "eyða" -#: ../share/extensions/gcodetools_area.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:23 msgid "" -"Usage: 1. Select all Area Offsets (gray outlines) 2. Object/Ungroup (Shift" -"+Ctrl+G) 3. Press Apply Suspected small objects will be marked out by " -"colored arrows." +"\n" +"Usage: \n" +"1. Select all Area Offsets (gray outlines)\n" +"2. Object/Ungroup (Shift+Ctrl+G)\n" +"3. Press Apply\n" +"\n" +"Suspected small objects will be marked out by colored arrows.\n" +"\t\t\t" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:19 -#: ../share/extensions/gcodetools_lathe.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:31 +#: ../share/extensions/gcodetools_lathe.inx.h:14 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:1 msgid "Path to Gcode" msgstr "Ferill í Gcode" -#: ../share/extensions/gcodetools_area.inx.h:20 -#: ../share/extensions/gcodetools_lathe.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:32 +#: ../share/extensions/gcodetools_lathe.inx.h:15 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:2 msgid "Biarc interpolation tolerance:" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:21 -#: ../share/extensions/gcodetools_lathe.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:33 +#: ../share/extensions/gcodetools_lathe.inx.h:16 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:3 msgid "Maximum splitting depth:" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:22 -#: ../share/extensions/gcodetools_lathe.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:17 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:4 msgid "Cutting order:" msgstr "Skurðarröð:" -#: ../share/extensions/gcodetools_area.inx.h:23 -#: ../share/extensions/gcodetools_lathe.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:35 +#: ../share/extensions/gcodetools_lathe.inx.h:18 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:5 msgid "Depth function:" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:24 -#: ../share/extensions/gcodetools_lathe.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:36 +#: ../share/extensions/gcodetools_lathe.inx.h:19 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:6 -msgid "Sort paths to reduse rapid distance" +msgid "Sort paths to reduce rapid distance" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:25 -#: ../share/extensions/gcodetools_lathe.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:37 +#: ../share/extensions/gcodetools_lathe.inx.h:20 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:7 msgid "Subpath by subpath" msgstr "Undirferil eftir undirferil" -#: ../share/extensions/gcodetools_area.inx.h:26 -#: ../share/extensions/gcodetools_lathe.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:38 +#: ../share/extensions/gcodetools_lathe.inx.h:21 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:8 msgid "Path by path" msgstr "Feril eftir feril" -#: ../share/extensions/gcodetools_area.inx.h:27 -#: ../share/extensions/gcodetools_lathe.inx.h:20 +#: ../share/extensions/gcodetools_area.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:22 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:9 msgid "Pass by Pass" msgstr "Umferð eftir umferð" -#: ../share/extensions/gcodetools_area.inx.h:28 -#: ../share/extensions/gcodetools_lathe.inx.h:21 +#: ../share/extensions/gcodetools_area.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:23 #: ../share/extensions/gcodetools_path_to_gcode.inx.h:10 msgid "" +"\n" "Biarc interpolation tolerance is the maximum distance between path and its " -"approximation. The segment will be split into two segments if the distance " -"between path's segment and its approximation exceeds biarc interpolation " -"tolerance. For depth function c=color intensity from 0.0 (white) to 1.0 " -"(black), d is the depth defined by orientation points, s - surface defined " -"by orientation points." +"approximation.\n" +"The segment will be split into two segments if the distance between path's " +"segment and its approximation exceeds biarc interpolation tolerance.\n" +"For depth function c=color intensity from 0.0 (white) to 1.0 (black), d is " +"the depth defined by orientation points, s - surface defined by orientation " +"points. \n" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:30 -#: ../share/extensions/gcodetools_engraving.inx.h:8 -#: ../share/extensions/gcodetools_graffiti.inx.h:22 -#: ../share/extensions/gcodetools_lathe.inx.h:23 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:12 +#: ../share/extensions/gcodetools_area.inx.h:46 +#: ../share/extensions/gcodetools_engraving.inx.h:16 +#: ../share/extensions/gcodetools_graffiti.inx.h:33 +#: ../share/extensions/gcodetools_lathe.inx.h:29 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:16 msgid "Scale along Z axis:" msgstr "Kvörðun eftir Z-ás:" -#: ../share/extensions/gcodetools_area.inx.h:31 -#: ../share/extensions/gcodetools_engraving.inx.h:9 -#: ../share/extensions/gcodetools_graffiti.inx.h:23 -#: ../share/extensions/gcodetools_lathe.inx.h:24 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:13 +#: ../share/extensions/gcodetools_area.inx.h:47 +#: ../share/extensions/gcodetools_engraving.inx.h:17 +#: ../share/extensions/gcodetools_graffiti.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:30 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:17 msgid "Offset along Z axis:" msgstr "Hliðrun eftir Z-ás:" -#: ../share/extensions/gcodetools_area.inx.h:32 -#: ../share/extensions/gcodetools_engraving.inx.h:10 -#: ../share/extensions/gcodetools_graffiti.inx.h:24 -#: ../share/extensions/gcodetools_lathe.inx.h:25 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:14 +#: ../share/extensions/gcodetools_area.inx.h:48 +#: ../share/extensions/gcodetools_engraving.inx.h:18 +#: ../share/extensions/gcodetools_graffiti.inx.h:35 +#: ../share/extensions/gcodetools_lathe.inx.h:31 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:18 msgid "Select all paths if nothing is selected" msgstr "Velja alla ferla ef ekkert er valið" -#: ../share/extensions/gcodetools_area.inx.h:33 -#: ../share/extensions/gcodetools_engraving.inx.h:11 -#: ../share/extensions/gcodetools_graffiti.inx.h:25 -#: ../share/extensions/gcodetools_lathe.inx.h:26 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:15 +#: ../share/extensions/gcodetools_area.inx.h:49 +#: ../share/extensions/gcodetools_engraving.inx.h:19 +#: ../share/extensions/gcodetools_graffiti.inx.h:36 +#: ../share/extensions/gcodetools_lathe.inx.h:32 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:19 msgid "Minimum arc radius:" msgstr "Lágmarksradíus boga:" -#: ../share/extensions/gcodetools_area.inx.h:34 -#: ../share/extensions/gcodetools_engraving.inx.h:12 -#: ../share/extensions/gcodetools_graffiti.inx.h:26 -#: ../share/extensions/gcodetools_lathe.inx.h:27 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:16 +#: ../share/extensions/gcodetools_area.inx.h:50 +#: ../share/extensions/gcodetools_engraving.inx.h:20 +#: ../share/extensions/gcodetools_graffiti.inx.h:37 +#: ../share/extensions/gcodetools_lathe.inx.h:33 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:20 msgid "Comment Gcode:" msgstr "Gcode athugasemd:" -#: ../share/extensions/gcodetools_area.inx.h:35 -#: ../share/extensions/gcodetools_engraving.inx.h:13 -#: ../share/extensions/gcodetools_graffiti.inx.h:27 -#: ../share/extensions/gcodetools_lathe.inx.h:28 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:17 +#: ../share/extensions/gcodetools_area.inx.h:51 +#: ../share/extensions/gcodetools_engraving.inx.h:21 +#: ../share/extensions/gcodetools_graffiti.inx.h:38 +#: ../share/extensions/gcodetools_lathe.inx.h:34 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:21 msgid "Get additional comments from object's properties" msgstr "Ná í aukalegar athugasemdir úr eiginleikum hlutarins" -#: ../share/extensions/gcodetools_area.inx.h:36 -#: ../share/extensions/gcodetools_dxf_points.inx.h:8 -#: ../share/extensions/gcodetools_engraving.inx.h:14 -#: ../share/extensions/gcodetools_graffiti.inx.h:28 -#: ../share/extensions/gcodetools_lathe.inx.h:29 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:18 +#: ../share/extensions/gcodetools_area.inx.h:52 +#: ../share/extensions/gcodetools_dxf_points.inx.h:13 +#: ../share/extensions/gcodetools_engraving.inx.h:22 +#: ../share/extensions/gcodetools_graffiti.inx.h:39 +#: ../share/extensions/gcodetools_lathe.inx.h:35 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:22 msgid "Preferences" msgstr "Kjörstillingar" -#: ../share/extensions/gcodetools_area.inx.h:37 -#: ../share/extensions/gcodetools_dxf_points.inx.h:9 -#: ../share/extensions/gcodetools_engraving.inx.h:15 -#: ../share/extensions/gcodetools_graffiti.inx.h:29 -#: ../share/extensions/gcodetools_lathe.inx.h:30 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:53 +#: ../share/extensions/gcodetools_dxf_points.inx.h:14 +#: ../share/extensions/gcodetools_engraving.inx.h:23 +#: ../share/extensions/gcodetools_graffiti.inx.h:40 +#: ../share/extensions/gcodetools_lathe.inx.h:36 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:23 #: ../share/extensions/nicechart.inx.h:4 msgid "File:" msgstr "Skrá:" -#: ../share/extensions/gcodetools_area.inx.h:38 -#: ../share/extensions/gcodetools_dxf_points.inx.h:10 -#: ../share/extensions/gcodetools_engraving.inx.h:16 -#: ../share/extensions/gcodetools_graffiti.inx.h:30 -#: ../share/extensions/gcodetools_lathe.inx.h:31 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:20 +#: ../share/extensions/gcodetools_area.inx.h:54 +#: ../share/extensions/gcodetools_dxf_points.inx.h:15 +#: ../share/extensions/gcodetools_engraving.inx.h:24 +#: ../share/extensions/gcodetools_graffiti.inx.h:41 +#: ../share/extensions/gcodetools_lathe.inx.h:37 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:24 msgid "Add numeric suffix to filename" msgstr "Bæta tölusettu viðskeyti við skráarheiti" -#: ../share/extensions/gcodetools_area.inx.h:39 -#: ../share/extensions/gcodetools_dxf_points.inx.h:11 -#: ../share/extensions/gcodetools_engraving.inx.h:17 -#: ../share/extensions/gcodetools_graffiti.inx.h:31 -#: ../share/extensions/gcodetools_lathe.inx.h:32 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:21 +#: ../share/extensions/gcodetools_area.inx.h:55 +#: ../share/extensions/gcodetools_dxf_points.inx.h:16 +#: ../share/extensions/gcodetools_engraving.inx.h:25 +#: ../share/extensions/gcodetools_graffiti.inx.h:42 +#: ../share/extensions/gcodetools_lathe.inx.h:38 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:25 msgid "Directory:" msgstr "Mappa:" -#: ../share/extensions/gcodetools_area.inx.h:40 -#: ../share/extensions/gcodetools_dxf_points.inx.h:12 -#: ../share/extensions/gcodetools_engraving.inx.h:18 -#: ../share/extensions/gcodetools_graffiti.inx.h:32 -#: ../share/extensions/gcodetools_lathe.inx.h:33 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:22 +#: ../share/extensions/gcodetools_area.inx.h:56 +#: ../share/extensions/gcodetools_dxf_points.inx.h:17 +#: ../share/extensions/gcodetools_engraving.inx.h:26 +#: ../share/extensions/gcodetools_graffiti.inx.h:43 +#: ../share/extensions/gcodetools_lathe.inx.h:39 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:26 msgid "Z safe height for G00 move over blank:" msgstr "" -#: ../share/extensions/gcodetools_area.inx.h:41 -#: ../share/extensions/gcodetools_dxf_points.inx.h:13 -#: ../share/extensions/gcodetools_engraving.inx.h:19 +#: ../share/extensions/gcodetools_area.inx.h:57 +#: ../share/extensions/gcodetools_dxf_points.inx.h:18 +#: ../share/extensions/gcodetools_engraving.inx.h:27 #: ../share/extensions/gcodetools_graffiti.inx.h:13 -#: ../share/extensions/gcodetools_lathe.inx.h:34 +#: ../share/extensions/gcodetools_lathe.inx.h:40 #: ../share/extensions/gcodetools_orientation_points.inx.h:6 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:23 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:27 msgid "Units (mm or in):" msgstr "Einingar (mm eða in):" -#: ../share/extensions/gcodetools_area.inx.h:42 -#: ../share/extensions/gcodetools_dxf_points.inx.h:14 -#: ../share/extensions/gcodetools_engraving.inx.h:20 -#: ../share/extensions/gcodetools_graffiti.inx.h:33 -#: ../share/extensions/gcodetools_lathe.inx.h:35 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:24 +#: ../share/extensions/gcodetools_area.inx.h:58 +#: ../share/extensions/gcodetools_dxf_points.inx.h:19 +#: ../share/extensions/gcodetools_engraving.inx.h:28 +#: ../share/extensions/gcodetools_graffiti.inx.h:44 +#: ../share/extensions/gcodetools_lathe.inx.h:41 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:28 msgid "Post-processor:" msgstr "Eftirvinnsluforrit (post-processor):" -#: ../share/extensions/gcodetools_area.inx.h:43 -#: ../share/extensions/gcodetools_dxf_points.inx.h:15 -#: ../share/extensions/gcodetools_engraving.inx.h:21 -#: ../share/extensions/gcodetools_graffiti.inx.h:34 -#: ../share/extensions/gcodetools_lathe.inx.h:36 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:25 +#: ../share/extensions/gcodetools_area.inx.h:59 +#: ../share/extensions/gcodetools_dxf_points.inx.h:20 +#: ../share/extensions/gcodetools_engraving.inx.h:29 +#: ../share/extensions/gcodetools_graffiti.inx.h:45 +#: ../share/extensions/gcodetools_lathe.inx.h:42 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:29 msgid "Additional post-processor:" msgstr "Auka eftirvinnsluforrit:" -#: ../share/extensions/gcodetools_area.inx.h:44 -#: ../share/extensions/gcodetools_dxf_points.inx.h:16 -#: ../share/extensions/gcodetools_engraving.inx.h:22 -#: ../share/extensions/gcodetools_graffiti.inx.h:35 -#: ../share/extensions/gcodetools_lathe.inx.h:37 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:26 +#: ../share/extensions/gcodetools_area.inx.h:60 +#: ../share/extensions/gcodetools_dxf_points.inx.h:21 +#: ../share/extensions/gcodetools_engraving.inx.h:30 +#: ../share/extensions/gcodetools_graffiti.inx.h:46 +#: ../share/extensions/gcodetools_lathe.inx.h:43 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 msgid "Generate log file" msgstr "Skrifa annál" -#: ../share/extensions/gcodetools_area.inx.h:45 -#: ../share/extensions/gcodetools_dxf_points.inx.h:17 -#: ../share/extensions/gcodetools_engraving.inx.h:23 -#: ../share/extensions/gcodetools_graffiti.inx.h:36 -#: ../share/extensions/gcodetools_lathe.inx.h:38 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:27 +#: ../share/extensions/gcodetools_area.inx.h:61 +#: ../share/extensions/gcodetools_dxf_points.inx.h:22 +#: ../share/extensions/gcodetools_engraving.inx.h:31 +#: ../share/extensions/gcodetools_graffiti.inx.h:47 +#: ../share/extensions/gcodetools_lathe.inx.h:44 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:31 msgid "Full path to log file:" msgstr "Slóð að annálsskrá:" -#: ../share/extensions/gcodetools_area.inx.h:48 -#: ../share/extensions/gcodetools_dxf_points.inx.h:20 -#: ../share/extensions/gcodetools_engraving.inx.h:26 -#: ../share/extensions/gcodetools_graffiti.inx.h:37 -#: ../share/extensions/gcodetools_lathe.inx.h:41 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:30 +#: ../share/extensions/gcodetools_area.inx.h:64 +#: ../share/extensions/gcodetools_dxf_points.inx.h:25 +#: ../share/extensions/gcodetools_engraving.inx.h:34 +#: ../share/extensions/gcodetools_graffiti.inx.h:48 +#: ../share/extensions/gcodetools_lathe.inx.h:47 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:34 msgctxt "GCode postprocessor" msgid "None" msgstr "Ekkert" -#: ../share/extensions/gcodetools_area.inx.h:49 -#: ../share/extensions/gcodetools_dxf_points.inx.h:21 -#: ../share/extensions/gcodetools_engraving.inx.h:27 -#: ../share/extensions/gcodetools_graffiti.inx.h:38 -#: ../share/extensions/gcodetools_lathe.inx.h:42 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:31 +#: ../share/extensions/gcodetools_area.inx.h:65 +#: ../share/extensions/gcodetools_dxf_points.inx.h:26 +#: ../share/extensions/gcodetools_engraving.inx.h:35 +#: ../share/extensions/gcodetools_graffiti.inx.h:49 +#: ../share/extensions/gcodetools_lathe.inx.h:48 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:35 msgid "Parameterize Gcode" msgstr "Færibreytur í Gcode" -#: ../share/extensions/gcodetools_area.inx.h:50 -#: ../share/extensions/gcodetools_dxf_points.inx.h:22 -#: ../share/extensions/gcodetools_engraving.inx.h:28 -#: ../share/extensions/gcodetools_graffiti.inx.h:39 -#: ../share/extensions/gcodetools_lathe.inx.h:43 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:32 +#: ../share/extensions/gcodetools_area.inx.h:66 +#: ../share/extensions/gcodetools_dxf_points.inx.h:27 +#: ../share/extensions/gcodetools_engraving.inx.h:36 +#: ../share/extensions/gcodetools_graffiti.inx.h:50 +#: ../share/extensions/gcodetools_lathe.inx.h:49 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:36 msgid "Flip y axis and parameterize Gcode" msgstr "Fletta við Y-ás og gefa Gcode færibreytur (parametric)" -#: ../share/extensions/gcodetools_area.inx.h:51 -#: ../share/extensions/gcodetools_dxf_points.inx.h:23 -#: ../share/extensions/gcodetools_engraving.inx.h:29 -#: ../share/extensions/gcodetools_graffiti.inx.h:40 -#: ../share/extensions/gcodetools_lathe.inx.h:44 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:33 +#: ../share/extensions/gcodetools_area.inx.h:67 +#: ../share/extensions/gcodetools_dxf_points.inx.h:28 +#: ../share/extensions/gcodetools_engraving.inx.h:37 +#: ../share/extensions/gcodetools_graffiti.inx.h:51 +#: ../share/extensions/gcodetools_lathe.inx.h:50 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:37 msgid "Round all values to 4 digits" msgstr "Rúnna af öll gildi í 4 aukastafi" -#: ../share/extensions/gcodetools_area.inx.h:52 -#: ../share/extensions/gcodetools_dxf_points.inx.h:24 -#: ../share/extensions/gcodetools_engraving.inx.h:30 -#: ../share/extensions/gcodetools_graffiti.inx.h:41 -#: ../share/extensions/gcodetools_lathe.inx.h:45 -#: ../share/extensions/gcodetools_path_to_gcode.inx.h:34 +#: ../share/extensions/gcodetools_area.inx.h:68 +#: ../share/extensions/gcodetools_dxf_points.inx.h:29 +#: ../share/extensions/gcodetools_engraving.inx.h:38 +#: ../share/extensions/gcodetools_graffiti.inx.h:52 +#: ../share/extensions/gcodetools_lathe.inx.h:51 +#: ../share/extensions/gcodetools_path_to_gcode.inx.h:38 msgid "Fast pre-penetrate" msgstr "" @@ -33744,23 +34474,28 @@ msgstr "Umbreyta vali:" #: ../share/extensions/gcodetools_dxf_points.inx.h:4 msgid "" +"\n" +"\n" "Convert selected objects to drill points (as dxf_import plugin does). Also " "you can save original shape. Only the start point of each curve will be " -"used. Also you can manually select object, open XML editor (Shift+Ctrl+X) " -"and add or remove XML tag 'dxfpoint' with any value." +"used.\n" +"\n" +"Also you can manually select object, open XML editor (Shift+Ctrl+X) and add " +"or remove XML tag 'dxfpoint' with any value.\n" +"\t\t " msgstr "" -#: ../share/extensions/gcodetools_dxf_points.inx.h:5 +#: ../share/extensions/gcodetools_dxf_points.inx.h:10 msgid "set as dxfpoint and save shape" msgstr "" -#: ../share/extensions/gcodetools_dxf_points.inx.h:6 +#: ../share/extensions/gcodetools_dxf_points.inx.h:11 msgid "set as dxfpoint and draw arrow" msgstr "" -#: ../share/extensions/gcodetools_dxf_points.inx.h:7 +#: ../share/extensions/gcodetools_dxf_points.inx.h:12 msgid "clear dxfpoint sign" -msgstr "" +msgstr "hreinsa dxfpoint tákn" #: ../share/extensions/gcodetools_engraving.inx.h:1 msgid "Engraving" @@ -33776,7 +34511,7 @@ msgstr "Hámarksvegalengd í myndristu (mm/tommur):" #: ../share/extensions/gcodetools_engraving.inx.h:4 msgid "Accuracy factor (2 low to 10 high):" -msgstr "" +msgstr "Nákvæmnisstuðull (2 lágt til 10 hátt):" #: ../share/extensions/gcodetools_engraving.inx.h:5 msgid "Draw additional graphics to see engraving path" @@ -33784,11 +34519,15 @@ msgstr "" #: ../share/extensions/gcodetools_engraving.inx.h:6 msgid "" +"\n" "This function creates path to engrave letters or any shape with sharp " -"angles. Cutter's depth as a function of radius is defined by the tool. Depth " -"may be any Python expression. For instance: cone....(45 " -"degrees)......................: w cone....(height/diameter=10/3)..: 10*w/3 " -"sphere..(radius r)...........................: math.sqrt(max(0,r**2-w**2)) " +"angles.\n" +"Cutter's depth as a function of radius is defined by the tool.\n" +"Depth may be any Python expression. For instance:\n" +"\n" +"cone....(45 degrees)......................: w\n" +"cone....(height/diameter=10/3)..: 10*w/3\n" +"sphere..(radius r)...........................: math.sqrt(max(0,r**2-w**2))\n" "ellipse.(minor axis r, major 4r).....: math.sqrt(max(0,r**2-w**2))*4" msgstr "" @@ -33832,7 +34571,7 @@ msgstr "Gerð stefnu:" #: ../share/extensions/gcodetools_graffiti.inx.h:11 #: ../share/extensions/gcodetools_orientation_points.inx.h:4 msgid "Z surface:" -msgstr "" +msgstr "Z-yfirborð:" #: ../share/extensions/gcodetools_graffiti.inx.h:12 #: ../share/extensions/gcodetools_orientation_points.inx.h:5 @@ -33842,12 +34581,13 @@ msgstr "Z-dýpt:" #: ../share/extensions/gcodetools_graffiti.inx.h:14 #: ../share/extensions/gcodetools_orientation_points.inx.h:7 msgid "2-points mode (move and rotate, maintained aspect ratio X/Y)" -msgstr "" +msgstr "2-punkta hamur (flytja og snúa, halda X/Y stærðarhlutföllum)" #: ../share/extensions/gcodetools_graffiti.inx.h:15 #: ../share/extensions/gcodetools_orientation_points.inx.h:8 msgid "3-points mode (move, rotate and mirror, different X/Y scale)" msgstr "" +"3-punkta hamur (flytja, snúa og spegla, mismunandi X/Y stærðarhlutföll)" #: ../share/extensions/gcodetools_graffiti.inx.h:16 #: ../share/extensions/gcodetools_orientation_points.inx.h:9 @@ -33862,14 +34602,23 @@ msgstr "" #: ../share/extensions/gcodetools_graffiti.inx.h:20 #: ../share/extensions/gcodetools_orientation_points.inx.h:13 msgid "" +"\n" "Orientation points are used to calculate transformation (offset,scale,mirror," -"rotation in XY plane) of the path. 3-points mode only: do not put all three " -"into one line (use 2-points mode instead). You can modify Z surface, Z depth " -"values later using text tool (3rd coordinates). If there are no orientation " -"points inside current layer they are taken from the upper layer. Do not " -"ungroup orientation points! You can select them using double click to enter " -"the group or by Ctrl+Click. Now press apply to create control points " -"(independent set for each layer)." +"rotation in XY plane) of the path.\n" +"3-points mode only: do not put all three into one line (use 2-points mode " +"instead).\n" +"\n" +"You can modify Z surface, Z depth values later using text tool (3rd " +"coordinates).\n" +"\n" +"If there are no orientation points inside current layer they are taken from " +"the upper layer.\n" +"\n" +"Do not ungroup orientation points! You can select them using double click to " +"enter the group or by Ctrl+Click.\n" +"\n" +"Now press apply to create control points (independent set for each layer).\n" +"\t\t\t" msgstr "" #: ../share/extensions/gcodetools_lathe.inx.h:1 @@ -33914,8 +34663,10 @@ msgstr "" #: ../share/extensions/gcodetools_lathe.inx.h:11 msgid "" -"This function modifies path so it will be able to be cut with the " -"rectangular cutter." +"\n" +"\t\t\tThis function modifies path so it will be possible to be cut it with a " +"rectangular cutter.\n" +"\t\t" msgstr "" #: ../share/extensions/gcodetools_orientation_points.inx.h:1 @@ -33927,7 +34678,7 @@ msgid "Prepare path for plasma" msgstr "Undirbúa feril fyrir plasma/laser" #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:2 -msgid "Prepare path for plasma or laser cuters" +msgid "Prepare path for plasma or laser cutters" msgstr "Undirbúa feril fyrir plasma- eða leysiskurð" #: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:3 @@ -34024,10 +34775,15 @@ msgstr "" #: ../share/extensions/gcodetools_tools_library.inx.h:11 msgid "" +"\n" "Selected tool type fills appropriate default values. You can change these " -"values using the Text tool later on. The topmost (z order) tool in the " -"active layer is used. If there is no tool inside the current layer it is " -"taken from the upper layer. Press Apply to create new tool." +"values using the Text tool later on.\n" +"\n" +"The topmost (z order) tool in the active layer is used. If there is no tool " +"inside the current layer it is taken from the upper layer.\n" +"\n" +"Press Apply to create new tool.\n" +"\t\t\t" msgstr "" #: ../share/extensions/generate_voronoi.inx.h:1 @@ -34400,7 +35156,7 @@ msgstr "Heiti myndar (án skráarendingar):" #: ../share/extensions/guillotine.inx.h:4 msgid "Ignore these settings and use export hints" -msgstr "" +msgstr "Hunsa þessar stillingar og nota útflutningshnikun" #: ../share/extensions/handles.inx.h:1 msgid "Draw Handles" @@ -34431,7 +35187,7 @@ msgstr "Leturgerð: " #: ../share/extensions/hershey.inx.h:6 msgid "Typeset that text" -msgstr "" +msgstr "Forma letur þessa texta" #: ../share/extensions/hershey.inx.h:7 msgid "Write glyph table" @@ -34439,7 +35195,7 @@ msgstr "Skrifa staftáknatöflu" #: ../share/extensions/hershey.inx.h:8 msgid "Sans 1-stroke" -msgstr "" +msgstr "Sans 1-línu" #: ../share/extensions/hershey.inx.h:9 msgid "Sans bold" @@ -34463,15 +35219,15 @@ msgstr "Serif feitletrað" #: ../share/extensions/hershey.inx.h:14 msgid "Script 1-stroke" -msgstr "" +msgstr "Skrift 1-línu" #: ../share/extensions/hershey.inx.h:15 msgid "Script 1-stroke (alt)" -msgstr "" +msgstr "Skrift 1-línu (alt)" #: ../share/extensions/hershey.inx.h:16 msgid "Script medium" -msgstr "" +msgstr "Skrift miðlungs" #: ../share/extensions/hershey.inx.h:17 msgid "Gothic English" @@ -34487,11 +35243,11 @@ msgstr "Ítalskt gotneskt" #: ../share/extensions/hershey.inx.h:20 msgid "Greek 1-stroke" -msgstr "" +msgstr "Grískt 1-línu" #: ../share/extensions/hershey.inx.h:21 msgid "Greek medium" -msgstr "" +msgstr "Grískt miðlungs" #: ../share/extensions/hershey.inx.h:23 msgid "Japanese" @@ -34568,24 +35324,28 @@ msgid "" msgstr "" #: ../share/extensions/hpgl_input.inx.h:3 -#: ../share/extensions/hpgl_output.inx.h:4 ../share/extensions/plotter.inx.h:32 +#: ../share/extensions/hpgl_output.inx.h:4 +#: ../share/extensions/plotter.inx.h:32 msgid "Resolution X (dpi):" msgstr "Upplausn X (pát):" #: ../share/extensions/hpgl_input.inx.h:4 -#: ../share/extensions/hpgl_output.inx.h:5 ../share/extensions/plotter.inx.h:33 +#: ../share/extensions/hpgl_output.inx.h:5 +#: ../share/extensions/plotter.inx.h:33 msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the X axis " "(Default: 1016.0)" msgstr "" #: ../share/extensions/hpgl_input.inx.h:5 -#: ../share/extensions/hpgl_output.inx.h:6 ../share/extensions/plotter.inx.h:34 +#: ../share/extensions/hpgl_output.inx.h:6 +#: ../share/extensions/plotter.inx.h:34 msgid "Resolution Y (dpi):" msgstr "Upplausn Y (pát):" #: ../share/extensions/hpgl_input.inx.h:6 -#: ../share/extensions/hpgl_output.inx.h:7 ../share/extensions/plotter.inx.h:35 +#: ../share/extensions/hpgl_output.inx.h:7 +#: ../share/extensions/plotter.inx.h:35 msgid "" "The amount of steps the plotter moves if it moves for 1 inch on the Y axis " "(Default: 1016.0)" @@ -34622,15 +35382,18 @@ msgstr "" "umbreyttir í ferla. Notaðu plottviðbótina (Viðbótavalmynd) til að plotta " "beint í gegnum raðtengingu." -#: ../share/extensions/hpgl_output.inx.h:3 ../share/extensions/plotter.inx.h:31 +#: ../share/extensions/hpgl_output.inx.h:3 +#: ../share/extensions/plotter.inx.h:31 msgid "Plotter Settings " msgstr "Plotterstillingar " -#: ../share/extensions/hpgl_output.inx.h:8 ../share/extensions/plotter.inx.h:36 +#: ../share/extensions/hpgl_output.inx.h:8 +#: ../share/extensions/plotter.inx.h:36 msgid "Pen number:" msgstr "Penni númer:" -#: ../share/extensions/hpgl_output.inx.h:9 ../share/extensions/plotter.inx.h:37 +#: ../share/extensions/hpgl_output.inx.h:9 +#: ../share/extensions/plotter.inx.h:37 msgid "The number of the pen (tool) to use (Standard: '1')" msgstr "Númer penna (verkfæris) sem á að nota (Staðlaður: '1')" @@ -34828,11 +35591,6 @@ msgstr "" msgid "Scope:" msgstr "Umfang:" -#. image-rendering -#: ../share/extensions/image_attributes.inx.h:19 -msgid "Unset" -msgstr "Afsetja" - #: ../share/extensions/image_attributes.inx.h:20 msgid "Change only selected image(s)" msgstr "Breyta aðeins völdum myndum" @@ -34955,11 +35713,13 @@ msgstr "Tvöfalda endaferla" msgid "Interpolate style" msgstr "Stíll brúunar" -#: ../share/extensions/interp.inx.h:7 ../share/extensions/interp_att_g.inx.h:10 +#: ../share/extensions/interp.inx.h:7 +#: ../share/extensions/interp_att_g.inx.h:10 msgid "Use Z-order" msgstr "Nota Z-röð" -#: ../share/extensions/interp.inx.h:8 ../share/extensions/interp_att_g.inx.h:11 +#: ../share/extensions/interp.inx.h:8 +#: ../share/extensions/interp_att_g.inx.h:11 msgid "Workaround for reversed selection order in Live Preview cycles" msgstr "" @@ -35555,7 +36315,7 @@ msgstr "Hliðra haldföngum hnúta" #: ../share/extensions/jitternodes.inx.h:7 msgid "Distribution of the displacements:" -msgstr "" +msgstr "Dreifing tilfærslnanna:" #: ../share/extensions/jitternodes.inx.h:8 msgid "Uniform" @@ -35964,7 +36724,7 @@ msgstr "" #: ../share/extensions/merge_styles.inx.h:3 msgid "New Class Name:" -msgstr "" +msgstr "Nýtt heiti klasa:" #: ../share/extensions/merge_styles.inx.h:4 msgid "Stylesheet" @@ -36084,7 +36844,7 @@ msgstr "Bil á milli grafs og skýringa:" #: ../share/extensions/nicechart.inx.h:27 msgid "Offset between chart and chart title:" -msgstr "" +msgstr "Bil á milli grafs og titils:" #: ../share/extensions/nicechart.inx.h:28 msgid "Work around aliasing effects (creates overlapping segments)" @@ -36228,7 +36988,7 @@ msgstr "Mynstur er lóðrétt" #: ../share/extensions/pathalongpath.inx.h:9 #: ../share/extensions/pathscatter.inx.h:10 msgid "Duplicate the pattern before deformation" -msgstr "" +msgstr "Tvítaka mynstrið fyrir aflögun" #: ../share/extensions/pathalongpath.inx.h:14 msgid "Snake" @@ -36244,6 +37004,9 @@ msgid "" "The pattern is the topmost object in the selection. Groups of paths, shapes " "or clones are allowed." msgstr "" +"Þetta dreifir eða beygir mynstur eftir 'stoðferlum' (skeleton path). " +"Mynstrið verður að vera efsti hluturinn í valstaflanum. Það má nota hópa af " +"ferlum, laganir eða klón." #: ../share/extensions/pathscatter.inx.h:3 msgid "Follow path orientation" @@ -36251,7 +37014,7 @@ msgstr "Fylgja stefnu ferils" #: ../share/extensions/pathscatter.inx.h:4 msgid "Stretch spaces to fit skeleton length" -msgstr "" +msgstr "Teygja bil til að passa við lengd stoðferils" #: ../share/extensions/pathscatter.inx.h:9 msgid "Original pattern will be:" @@ -36291,6 +37054,9 @@ msgid "" "pattern must be the topmost object in the selection. Groups of paths, " "shapes, clones are allowed." msgstr "" +"Þetta dreifir mynstri eftir 'stoðferlum' (skeleton path). Mynstrið verður að " +"vera efsti hluturinn í valstaflanum. Það má nota hópa af ferlum, laganir eða " +"klón." #: ../share/extensions/perfectboundcover.inx.h:1 msgid "Perfect-Bound Cover Template" @@ -36423,6 +37189,8 @@ msgid "" "The Byte size of your serial connection, 99% of all plotters use the default " "setting (Default: 8 Bits)" msgstr "" +"Bætastærð raðtengisins, 99% allra plottara nota sjálfgefnu stillinguna " +"(sjálfgefið: 8 bita)" #: ../share/extensions/plotter.inx.h:11 msgid "Serial stop bits:" @@ -36434,6 +37202,8 @@ msgid "" "The Stop bits of your serial connection, 99% of all plotters use the default " "setting (Default: 1 Bit)" msgstr "" +"Stopp-bitar raðtengisins, 99% allra plottara nota sjálfgefnu stillinguna " +"(sjálfgefið: 1 biti)" #: ../share/extensions/plotter.inx.h:14 msgid "Serial parity:" @@ -36445,6 +37215,8 @@ msgid "" "The Parity of your serial connection, 99% of all plotters use the default " "setting (Default: None)" msgstr "" +"Pörun raðtengisins, 99% allra plottara nota sjálfgefnu stillinguna " +"(sjálfgefið: ekkert)" #: ../share/extensions/plotter.inx.h:17 msgid "Serial flow control:" @@ -36531,9 +37303,10 @@ msgstr "" msgid "AutoCAD Plot Input" msgstr "AutoCAD Plot ílag" -#: ../share/extensions/plt_input.inx.h:2 ../share/extensions/plt_output.inx.h:2 -msgid "HP Graphics Language Plot file [AutoCAD] (*.plt)" -msgstr "HP Graphics Language Plot skrá [AutoCAD] (*.plt)" +#: ../share/extensions/plt_input.inx.h:2 +#: ../share/extensions/plt_output.inx.h:2 +msgid "HP Graphics Language Plot file [AutoCAD] (UC) (*.plt)" +msgstr "HP Graphics Language Plot skrá [AutoCAD] (UC) (*.plt)" #: ../share/extensions/plt_input.inx.h:3 msgid "Open HPGL plotter files" @@ -36751,6 +37524,14 @@ msgstr "Lágmark" msgid "Mean" msgstr "Miðgildi" +#: ../share/extensions/prepare_file_save_as.inx.h:1 +msgid "Pre-Process File Save As..." +msgstr "" + +#: ../share/extensions/prepare_print_win32_vector.inx.h:1 +msgid "Pre-Process Win32 Vector Print" +msgstr "Forvinnslu Win32 vigurprentun" + #: ../share/extensions/previous_glyph_layer.inx.h:1 msgid "View Previous Glyph" msgstr "Skoða fyrra staftákn" @@ -37371,11 +38152,28 @@ msgid "" "to preserve \"flag-mx\", \"flag-pt\", etc.)." msgstr "" -#: ../share/extensions/scour.inx.h:57 +#. this parameter is checked programatically in the extension to show a warning +#: ../share/extensions/scour.inx.h:59 +msgid "Show warnings for older versions of Scour" +msgstr "" + +#: ../share/extensions/scour.inx.h:60 +msgid "Optimized SVG Output is provided by" +msgstr "Bestað SVG frálag kemur frá" + +#: ../share/extensions/scour.inx.h:61 +msgid "For details please refer to" +msgstr "Til að sjá nánari upplýsingar, skoðaðu" + +#: ../share/extensions/scour.inx.h:62 +msgid "This version of the extension is designed for" +msgstr "Þessi útgáfa viðbótarinnar er hönnuð fyrir" + +#: ../share/extensions/scour.inx.h:63 msgid "Optimized SVG (*.svg)" msgstr "Bestað SVG (*.svg)" -#: ../share/extensions/scour.inx.h:58 +#: ../share/extensions/scour.inx.h:64 msgid "Scalable Vector Graphics" msgstr "SVG vigurteikningar (Scalable Vector Graphics)" @@ -37429,9 +38227,10 @@ msgstr "Láglína:" msgid "sK1 vector graphics files input" msgstr "Ílag frá sK1 vigurteikningaskrám" -#: ../share/extensions/sk1_input.inx.h:2 ../share/extensions/sk1_output.inx.h:2 -msgid "sK1 vector graphics files (*.sk1)" -msgstr "sK1 vigurteikningaskrár (*.sk1)" +#: ../share/extensions/sk1_input.inx.h:2 +#: ../share/extensions/sk1_output.inx.h:2 +msgid "sK1 vector graphics files (UC) (*.sk1)" +msgstr "sK1 vigurteikningaskrár (UC) (*.sk1)" #: ../share/extensions/sk1_input.inx.h:3 msgid "Open files saved in sK1 vector graphics editor" @@ -37960,7 +38759,7 @@ msgstr "Valkostir fyrir Delaunay þríhyrningamælingu" #: ../share/extensions/voronoi2svg.inx.h:13 msgid "Default (Stroke black and no fill)" -msgstr "" +msgstr "Sjálfgefið (svört útlína og engin fylling)" #: ../share/extensions/voronoi2svg.inx.h:14 msgid "Triangles with item color" @@ -38386,11 +39185,18 @@ msgstr "Halli (gráður):" msgid "Hide lines behind the sphere" msgstr "Fela línur á bak við hnöttinn" -#: ../share/extensions/wmf_input.inx.h:1 ../share/extensions/wmf_output.inx.h:1 +#: ../share/extensions/wmf_input.inx.h:1 +#: ../share/extensions/wmf_output.inx.h:1 msgid "Windows Metafile Input" msgstr "Windows Metafile-ílag" -#: ../share/extensions/wmf_input.inx.h:3 ../share/extensions/wmf_output.inx.h:3 +#: ../share/extensions/wmf_input.inx.h:2 +#: ../share/extensions/wmf_output.inx.h:2 +msgid "Windows Metafile (UC) (*.wmf)" +msgstr "Windows Metafile (UC) (*.wmf)" + +#: ../share/extensions/wmf_input.inx.h:3 +#: ../share/extensions/wmf_output.inx.h:3 msgid "A popular graphics file format for clipart" msgstr "Vinsælt snið fyrir myndskreytingar" @@ -38398,6 +39204,209 @@ msgstr "Vinsælt snið fyrir myndskreytingar" msgid "XAML Input" msgstr "XAML-ílag" +#: ../share/ui/menus.xml.h:4 +msgid "Clo_ne" +msgstr "_Klóna" + +#: ../share/ui/menus.xml.h:5 +msgid "Select Sa_me" +msgstr "Velja sa_ma" + +#: ../share/ui/menus.xml.h:6 +msgid "_View" +msgstr "S_koða" + +#: ../share/ui/menus.xml.h:7 +msgid "_Zoom" +msgstr "Aðdrá_ttur" + +#: ../share/ui/menus.xml.h:8 +msgid "_Display mode" +msgstr "_Birtingarhamur" + +#: ../share/ui/menus.xml.h:9 +msgid "_Color display mode" +msgstr "_Litbirtingarhamur" + +#: ../share/ui/menus.xml.h:10 +msgid "Sh_ow/Hide" +msgstr "Birta/_Fela" + +#: ../share/ui/menus.xml.h:11 +msgid "_Layer" +msgstr "_Lag" + +#: ../share/ui/menus.xml.h:12 +msgid "_Object" +msgstr "_Hlutur" + +#: ../share/ui/menus.xml.h:13 +msgid "Cli_p" +msgstr "_Afmarka" + +#: ../share/ui/menus.xml.h:14 +msgid "Mas_k" +msgstr "Hu_la" + +#: ../share/ui/menus.xml.h:15 +msgid "Patter_n" +msgstr "_Mynstur" + +#: ../share/ui/menus.xml.h:16 +msgid "_Path" +msgstr "_Ferill" + +#: ../share/ui/menus.xml.h:18 +msgid "Filter_s" +msgstr "_Síur" + +#: ../share/ui/menus.xml.h:19 +msgid "Exte_nsions" +msgstr "_Viðbætur" + +#: ../share/ui/menus.xml.h:20 +msgid "_Help" +msgstr "_Hjálp" + +#: ../share/ui/menus.xml.h:21 +msgid "Tutorials" +msgstr "Leiðbeiningar" + +#~ msgid "Color profiles directory (%s) is unavailable." +#~ msgstr "Mappa fyrir litasnið (%s) er ekki tiltæk." + +#~ msgid "Adobe PDF (*.pdf)" +#~ msgstr "Adobe PDF (*.pdf)" + +#~ msgid "Old Inkscape file detected (90 DPI)" +#~ msgstr "Gömul Inkscape-skrá fannst (90 PÁT)" + +#~ msgid "Autosave failed! Cannot create directory %1." +#~ msgstr "Sjálfvirk vistun mistókst! Get ekki búið til möppuna %1." + +#~ msgid "FILES..." +#~ msgstr "SKRÁR..." + +#~ msgid "Fillet point" +#~ msgstr "Punktur kverkrúnnunar" + +#~ msgid "Ignore 0 radius knots" +#~ msgstr "Hunsa hnúta með radíus 0" + +#~ msgid "Fillets methods" +#~ msgstr "Aðferðir við kverkrúnnun" + +#~ msgid "IMPORTANT! New version soon..." +#~ msgstr "MIKILVÆGT! Ný útgáfa á leiðinni..." + +#~ msgid "Not compatible. Convert to path after." +#~ msgstr "Ekki samhæft. Umbreyta í feril á eftir." + +#~ msgid "Convert to chamfer" +#~ msgstr "Umbreyta í hornskurð" + +#~ msgid "Unit*" +#~ msgstr "Eining*" + +#~ msgid "Precision*" +#~ msgstr "Nákvæmni*" + +#~ msgid "Positon*" +#~ msgstr "Staðsetning*" + +#~ msgid "Positon" +#~ msgstr "Staðsetning" + +#~ msgid "Text top/bottom*" +#~ msgstr "Texti uppi/niðri*" + +#~ msgid "Text right/left*" +#~ msgstr "Texti hægri/vinstri*" + +#~ msgid "Helpline distance*" +#~ msgstr "Fjarlægð stoðlína*" + +#~ msgid "Helpline overlap*" +#~ msgstr "Skörun stoðlína*" + +#~ msgid "Scale*" +#~ msgstr "Kvarði*" + +#~ msgid "Rotate Anotation*" +#~ msgstr "Snúa glósu*" + +#~ msgid "Save '*' as default" +#~ msgstr "Vista '*' sem sjálfgefið" + +#~ msgid "Segment" +#~ msgstr "Hluti" + +#~ msgid "Save" +#~ msgstr "Vista" + +#~ msgid "Palettes directory (%s) is unavailable." +#~ msgstr "Mappa fyrir litaspjöld (%s) er ekki tiltæk." + +#~ msgid "Scale Y" +#~ msgstr "Y-kvarði" + +#~ msgid "Arc: Change open/closed" +#~ msgstr "Bogi: Víxla opinn/lokaður" + +#~ msgid "Closed arc" +#~ msgstr "Lokaður bogi" + +#~ msgid "Open Arc" +#~ msgstr "Opinn bogi" + +#~ msgid ", grayscale" +#~ msgstr ", grátóna" + +#~ msgid ", print colors preview" +#~ msgstr ", forskoðun prentunar" + +#~ msgid "%s%s: %d (%s%s) - Inkscape" +#~ msgstr "%s%s: %d (%s%s) - Inkscape" + +#~ msgid "%s%s: %d (%s) - Inkscape" +#~ msgstr "%s%s: %d (%s) - Inkscape" + +#~ msgid "%s%s: %d - Inkscape" +#~ msgstr "%s%s: %d - Inkscape" + +#~ msgid "%s%s (%s%s) - Inkscape" +#~ msgstr "%s%s (%s%s) - Inkscape" + +#~ msgid "%s%s (%s) - Inkscape" +#~ msgstr "%s%s (%s) - Inkscape" + +#~ msgid "%s%s - Inkscape" +#~ msgstr "%s%s - Inkscape" + +#~ msgid "Image widget" +#~ msgstr "Myndviðmótshluti (widget)" + +#~ msgid "Child widget to appear next to the menu text" +#~ msgstr "Undirviðmótshluti sem birtist næst texta valmyndarinnar" + +#~ msgid "Use stock" +#~ msgstr "Nota innbyggt" + +#~ msgid "Whether to use the label text to create a stock menu item" +#~ msgstr "Hvort nota eigi textamerkið til að búa til innbyggt valmyndaratriði" + +#~ msgid "Accel Group" +#~ msgstr "Flýtilyklahópur" + +#~ msgid "The Accel Group to use for stock accelerator keys" +#~ msgstr "Flýtilyklahópurinn er fyrir innbyggða flýtilykla" + +#~ msgid "The offset size" +#~ msgstr "Stærð hliðrunar" + +#~ msgid "Area (" +#~ msgstr "Svæði (" + #~ msgid "Master" #~ msgstr "Aðal" @@ -38485,9 +39494,6 @@ msgstr "XAML-ílag" #~ msgid "Dock #%d" #~ msgstr "Tengja #%d" -#~ msgid "Select object(s) to raise to top." -#~ msgstr "Veldu hluti sem á að hækka efst." - #~ msgid "Set width:" #~ msgstr "Setja breidd:" @@ -38509,9 +39515,6 @@ msgstr "XAML-ílag" #~ msgid "Mesh gradient" #~ msgstr "Litstigull möskva" -#~ msgid "Area (px^2): " -#~ msgstr "Flötur (px^2): " - #~ msgid "Miter _limit:" #~ msgstr "Mörk _hornskeytingar:" -- cgit v1.2.3 From 3a69646010f3bb0ba0e52ac7534544ff375b992f Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Fri, 29 Sep 2017 22:01:46 +0200 Subject: Translations: Fix translation error in Icelandic (is) translation --- po/is.po | 1 + 1 file changed, 1 insertion(+) diff --git a/po/is.po b/po/is.po index 6455ddfc1..777a0981e 100644 --- a/po/is.po +++ b/po/is.po @@ -34080,6 +34080,7 @@ msgid "" "\n" "Gcodetools ver. 1.7\n" msgstr "" +"\n" "Gcodetools viðbótin: umbreytir ferlum í Gcode-kóða, útbýr hliðraða ferla og " "getur rist hvöss horn með kónískum skurðarhausum.\n" "Þessi viðbót reiknar Gcode-kóða fyrir ferla með hringlaga brúun " -- cgit v1.2.3 From 4ced018164553d115a24947ec74dace836e99732 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 30 Sep 2017 02:25:47 +0200 Subject: Hunted every GList to the last (except in libnrtype and libcroco) --- src/live_effects/parameter/togglebutton.cpp | 16 ++-- src/ui/dialog/clonetiler.cpp | 7 +- src/ui/dialog/inkscape-preferences.cpp | 18 ++--- src/ui/interface.cpp | 10 +-- src/ui/widget/page-sizer.cpp | 14 ++-- src/ui/widget/page-sizer.h | 2 +- src/widgets/desktop-widget.cpp | 41 +++++----- src/widgets/ege-adjustment-action.cpp | 114 ++++++++++++++-------------- src/widgets/ege-output-action.cpp | 23 +++--- src/widgets/ege-select-one-action.cpp | 29 +++---- src/widgets/pencil-toolbar.cpp | 34 +++------ src/widgets/spw-utilities.cpp | 12 +-- src/widgets/toolbox.cpp | 27 +++---- 13 files changed, 164 insertions(+), 183 deletions(-) diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp index 16b8f9067..e26884d6a 100644 --- a/src/live_effects/parameter/togglebutton.cpp +++ b/src/live_effects/parameter/togglebutton.cpp @@ -147,21 +147,25 @@ ToggleButtonParam::refresh_button() if(!box_button){ return; } - GList * childs = gtk_container_get_children(GTK_CONTAINER(box_button->gobj())); - guint total_widgets = g_list_length (childs); + std::vector children = Glib::wrap(GTK_CONTAINER(box_button))->get_children(); if (!param_label.empty()) { + Gtk::Label *lab = dynamic_cast(children[children.size()-1]); + if (!lab) return; if(value || inactive_label.empty()){ - gtk_label_set_text(GTK_LABEL(g_list_nth_data(childs, total_widgets-1)), param_label.c_str()); + lab->set_text(param_label.c_str()); }else{ - gtk_label_set_text(GTK_LABEL(g_list_nth_data(childs, total_widgets-1)), inactive_label.c_str()); + lab->set_text(inactive_label.c_str()); } } if ( _icon_active ) { GdkPixbuf * icon_pixbuf = NULL; + Gtk::Image *im = dynamic_cast(children[0]); + Gtk::IconSize is(_icon_size); + if (!im) return; if(!value){ - gtk_image_set_from_icon_name (GTK_IMAGE(g_list_nth_data(childs, 0)), _icon_inactive, _icon_size); + im->set_from_icon_name(_icon_inactive, is); } else { - gtk_image_set_from_icon_name (GTK_IMAGE(g_list_nth_data(childs, 0)), _icon_active, _icon_size); + im->set_from_icon_name(_icon_active, is); } } } diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp index ad13ed8c4..5c9b31fb1 100644 --- a/src/ui/dialog/clonetiler.cpp +++ b/src/ui/dialog/clonetiler.cpp @@ -2639,11 +2639,10 @@ void CloneTiler::reset_recursive(GtkWidget *w) } if (GTK_IS_CONTAINER(w)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(w)); - for (GList *i = ch; i != NULL; i = i->next) { - reset_recursive (GTK_WIDGET(i->data)); + std::vector c = Glib::wrap(GTK_CONTAINER(w))->get_children(); + for ( auto i : c ) { + reset_recursive(i->gobj()); } - g_list_free (ch); } } diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 13729cf0f..d87a3d94a 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include #include "preferences.h" #include "verbs.h" @@ -2057,21 +2059,15 @@ bool InkscapePreferences::PresentPage(const Gtk::TreeModel::iterator& iter) void InkscapePreferences::on_reset_open_recent_clicked() { - GtkRecentManager* manager = gtk_recent_manager_get_default(); - GList* recent_list = gtk_recent_manager_get_items(manager); - GList* element; - GError* error; + Glib::RefPtr manager = Gtk::RecentManager::get_default(); + std::vector< Glib::RefPtr< Gtk::RecentInfo > > recent_list = manager->get_items(); //Remove only elements that were added by Inkscape - for (element = g_list_first(recent_list); element; element = g_list_next(element)){ - error = NULL; - GtkRecentInfo* info = (GtkRecentInfo*) element->data; - if (gtk_recent_info_has_application(info, g_get_prgname())){ - gtk_recent_manager_remove_item(manager, gtk_recent_info_get_uri(info), &error); + for (auto e : recent_list) { + if (e->has_application(g_get_prgname())) { + manager->remove_item(e->get_uri()); } - gtk_recent_info_unref (info); } - g_list_free(recent_list); } void InkscapePreferences::on_pagelist_selection_changed() diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 93e91b8f8..7a9b92378 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -1436,14 +1436,12 @@ sp_ui_menu_item_set_name(GtkWidget *data, Glib::ustring const &name) if (GTK_IS_LABEL(child)) { gtk_label_set_markup_with_mnemonic(GTK_LABEL (child), name.c_str()); } else if (GTK_IS_BOX(child)) { - GList *children = gtk_container_get_children(GTK_CONTAINER(child)); + std::vector children = Glib::wrap(GTK_CONTAINER(child))->get_children(); // Label is second child in list - GtkWidget *label = GTK_WIDGET(children->next->data); - - gtk_label_set_markup_with_mnemonic( - GTK_LABEL (label), - name.c_str()); + Gtk::Label *label = dynamic_cast(children[1]); + if(!label) return; + label->set_markup_with_mnemonic(name); }//else sp_ui_menu_append_item_from_verb has been modified and can set //a menu item in yet another way... } diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp index eb0e45f14..7427ad4e2 100644 --- a/src/ui/widget/page-sizer.cpp +++ b/src/ui/widget/page-sizer.cpp @@ -355,13 +355,12 @@ PageSizer::PageSizer(Registry & _wr) _fitPageMarginExpander.set_vexpand(); _customDimTable.attach(_fitPageMarginExpander, 0, 2, 2, 1); - _dimTabOrderGList = NULL; - _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionWidth.gobj()); - _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionHeight.gobj()); - _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionUnits.gobj()); - _dimTabOrderGList = g_list_append(_dimTabOrderGList, _fitPageMarginExpander.gobj()); - Glib::ListHandle dimFocusChain(_dimTabOrderGList, Glib::OWNERSHIP_NONE); - _customDimTable.set_focus_chain(dimFocusChain); + _dimTabOrderList.clear(); + _dimTabOrderList.push_back(&_dimensionWidth); + _dimTabOrderList.push_back(&_dimensionHeight); + _dimTabOrderList.push_back(&_dimensionUnits); + _dimTabOrderList.push_back(&_fitPageMarginExpander); + _customDimTable.set_focus_chain(_dimTabOrderList); //## Set up fit page expander _fitPageMarginExpander.set_use_underline(); @@ -454,7 +453,6 @@ PageSizer::PageSizer(Registry & _wr) */ PageSizer::~PageSizer() { - g_list_free(_dimTabOrderGList); } diff --git a/src/ui/widget/page-sizer.h b/src/ui/widget/page-sizer.h index f84f96782..329ecfc6d 100644 --- a/src/ui/widget/page-sizer.h +++ b/src/ui/widget/page-sizer.h @@ -220,7 +220,7 @@ protected: RegisteredUnitMenu _dimensionUnits; RegisteredScalarUnit _dimensionWidth; RegisteredScalarUnit _dimensionHeight; - GList * _dimTabOrderGList; + std::vector _dimTabOrderList; //### Fit Page options Gtk::Expander _fitPageMarginExpander; diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 1d0b31a6e..571f920bf 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1077,8 +1077,8 @@ SPDesktopWidget::shutdown() doc->getName()); // fix for bug lp:168809 GtkWidget *ma = gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(dialog)); - GList *ma_labels = gtk_container_get_children(GTK_CONTAINER(ma)); - GtkWidget *label = GTK_WIDGET(g_list_first(ma_labels)->data); + std::vector ma_labels = Glib::wrap(GTK_CONTAINER(ma))->get_children(); + GtkWidget *label = GTK_WIDGET(ma_labels[0]->gobj()); gtk_widget_set_can_focus(label, FALSE); GtkWidget *close_button; @@ -1136,8 +1136,8 @@ SPDesktopWidget::shutdown() doc->getName() ? doc->getName() : "Unnamed"); // fix for bug lp:168809 GtkWidget *ma = gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(dialog)); - GList *ma_labels = gtk_container_get_children(GTK_CONTAINER(ma)); - GtkWidget *label = GTK_WIDGET(g_list_first(ma_labels)->data); + std::vector ma_labels = Glib::wrap(GTK_CONTAINER(ma))->get_children(); + GtkWidget *label = GTK_WIDGET(ma_labels[0]->gobj()); gtk_widget_set_can_focus(label, FALSE); GtkWidget *close_button; @@ -1734,22 +1734,22 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) * This should solve: https://bugs.launchpad.net/inkscape/+bug/362995 */ if (GTK_IS_CONTAINER(aux_toolbox)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(aux_toolbox)); - for (GList *i = ch; i != NULL; i = i->next) { - if (GTK_IS_CONTAINER(i->data)) { - GList *grch = gtk_container_get_children (GTK_CONTAINER(i->data)); - for (GList *j = grch; j != NULL; j = j->next) { + std::vector ch = Glib::wrap(GTK_CONTAINER(aux_toolbox))->get_children(); + for (auto i:ch) { + if (GTK_IS_CONTAINER(i->gobj())) { + std::vector grch = dynamic_cast(i)->get_children(); + for (auto j:grch) { - if (!GTK_IS_WIDGET(j->data)) // wasn't a widget + if (!GTK_IS_WIDGET(j->gobj())) // wasn't a widget continue; // Don't apply to text toolbar. We want to be able to // use different units for text. (Bug 1562217) - const gchar* name = gtk_widget_get_name( (GTK_WIDGET(j->data)) ); - if (strcmp( name, "TextToolbar") == 0) + const Glib::ustring name = j->get_name(); + if ( name == "TextToolbar") continue; - gpointer t = sp_search_by_data_recursive(GTK_WIDGET(j->data), (gpointer) "tracker"); + gpointer t = sp_search_by_data_recursive(GTK_WIDGET(j->gobj()), (gpointer) "tracker"); if (t == NULL) // didn't find any tracker data continue; @@ -1941,12 +1941,10 @@ static void sp_dtw_zoom_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) { SPDesktop *dt = SP_DESKTOP_WIDGET (data)->desktop; - - GList* children = gtk_container_get_children (GTK_CONTAINER (menu)); - for ( auto iter = children ; iter ; iter = g_list_next (iter)) { - gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); + std::vector children = Glib::wrap(GTK_CONTAINER(menu))->get_children(); + for ( auto iter : children) { + Glib::wrap(GTK_CONTAINER(menu))->remove(*iter); } - g_list_free (children); GtkWidget *item; @@ -2129,11 +2127,10 @@ sp_dtw_rotation_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer dat { SPDesktopWidget *dtw = static_cast(data); - GList* children = gtk_container_get_children (GTK_CONTAINER (menu)); - for ( auto iter = children ; iter ; iter = g_list_next (iter)) { - gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); + std::vector children = Glib::wrap(GTK_CONTAINER(menu))->get_children(); + for ( auto iter : children) { + Glib::wrap(GTK_CONTAINER(menu))->remove(*iter); } - g_list_free (children); GtkWidget *item; diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index e4f041bd1..09a4a542b 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -41,7 +41,10 @@ #include #include +#include +#include +#include #include #include "icon-size.h" @@ -111,7 +114,7 @@ struct _EgeAdjustmentActionPrivate gdouble page; gint appearanceMode; gboolean transferFocus; - GList* descriptions; + std::vector descriptions; gchar* appearance; gchar* iconId; GtkIconSize iconSize; @@ -268,7 +271,7 @@ static void ege_adjustment_action_init( EgeAdjustmentAction* action ) action->private_data->page = 0.0; action->private_data->appearanceMode = APPEARANCE_NONE; action->private_data->transferFocus = FALSE; - action->private_data->descriptions = 0; + //action->private_data->descriptions = 0; action->private_data->appearance = 0; action->private_data->iconId = 0; action->private_data->iconSize = GTK_ICON_SIZE_SMALL_TOOLBAR; @@ -514,11 +517,13 @@ static void egeAct_free_description( gpointer data, gpointer user_data ) { static void egeAct_free_all_descriptions( EgeAdjustmentAction* action ) { - if ( action->private_data->descriptions ) { - g_list_foreach( action->private_data->descriptions, egeAct_free_description, 0 ); - g_list_free( action->private_data->descriptions ); - action->private_data->descriptions = 0; + for(auto i:action->private_data->descriptions) { + egeAct_free_description(i,0); } + for(auto i:action->private_data->descriptions) { + g_free(i); + } + action->private_data->descriptions.clear(); } static gint egeAct_compare_descriptions( gconstpointer a, gconstpointer b ) @@ -551,7 +556,8 @@ void ege_adjustment_action_set_descriptions( EgeAdjustmentAction* action, gchar EgeAdjustmentDescr* descr = g_new0( EgeAdjustmentDescr, 1 ); descr->descr = descriptions[i] ? g_strdup( descriptions[i] ) : 0; descr->value = values[i]; - action->private_data->descriptions = g_list_insert_sorted( action->private_data->descriptions, (gpointer)descr, egeAct_compare_descriptions ); + action->private_data->descriptions.push_back(descr); + std::sort(action->private_data->descriptions.begin(),action->private_data->descriptions.end()); } } } @@ -609,8 +615,8 @@ static void process_menu_action( GtkWidget* obj, gpointer data ) default: if ( what >= BUMP_CUSTOM ) { guint index = what - BUMP_CUSTOM; - if ( index < g_list_length( act->private_data->descriptions ) ) { - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)g_list_nth_data( act->private_data->descriptions, index ); + if ( index < act->private_data->descriptions.size() ) { + EgeAdjustmentDescr* descr = act->private_data->descriptions[index]; if ( descr ) { gtk_adjustment_set_value( act->private_data->adj, descr->value ); } @@ -624,10 +630,9 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men { char* str = 0; EgeAdjustmentDescr* marker = 0; - GList* cur = act->private_data->descriptions; + std::vector cur = act->private_data->descriptions; - while ( cur ) { - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)cur->data; + for (auto descr:cur) { gdouble delta = num - descr->value; if ( delta < 0.0 ) { delta = -delta; @@ -636,7 +641,6 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men marker = descr; break; } - cur = g_list_next( cur ); } str = g_strdup_printf( act->private_data->format, num, @@ -658,7 +662,8 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men g_free(str); } -static GList* flush_explicit_items( GList* descriptions, +static int flush_explicit_items( std::vector descriptions, + int pos, GCallback toggleCb, int val, GtkWidget* menu, @@ -667,25 +672,21 @@ static GList* flush_explicit_items( GList* descriptions, GSList** group, gdouble num ) { - GList* cur = descriptions; - - if ( cur ) { - gdouble valUpper = num + act->private_data->epsilon; - gdouble valLower = num - act->private_data->epsilon; + if(pos >= descriptions.size() || pos < 0) return pos; + EgeAdjustmentDescr* descr = descriptions[pos]; - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)cur->data; - - while ( cur && descr && (descr->value >= valLower) ) { - if ( descr->value > valUpper ) { - create_single_menu_item( toggleCb, val + g_list_position(act->private_data->descriptions, cur), menu, act, dst, group, descr->value, FALSE ); - } + gdouble valUpper = num + act->private_data->epsilon; + gdouble valLower = num - act->private_data->epsilon; - cur = g_list_previous( cur ); - descr = cur ? (EgeAdjustmentDescr*)cur->data : 0; + while ( pos>=0 && posvalue >= valLower) ) { + if ( descr->value > valUpper ) { + create_single_menu_item( toggleCb, val + ( std::find(act->private_data->descriptions.begin(),act->private_data->descriptions.end(),descr) - act->private_data->descriptions.begin() ) , menu, act, dst, group, descr->value, FALSE ); } + pos--; + descr = (pos<0) ? descriptions[pos] : NULL; } - return cur; + return pos; } static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) @@ -694,8 +695,8 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) GSList* group = 0; GtkWidget* single = 0; - - GList* addOns = g_list_last( act->private_data->descriptions ); + std::vector list = act->private_data->descriptions; + int addOns = list.size() - 1; gdouble base = gtk_adjustment_get_value( act->private_data->adj ); gdouble lower = 0.0; @@ -711,37 +712,37 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) if ( base < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, upper ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, upper ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_TOP, menu, act, &single, &group, upper, FALSE ); if ( (base + page) < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + page ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + page ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_PAGE_UP, menu, act, &single, &group, base + page, FALSE ); } if ( (base + step) < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + step ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + step ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_UP, menu, act, &single, &group, base + step, FALSE ); } } - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_NONE, menu, act, &single, &group, base, TRUE ); if ( base > lower ) { if ( (base - step) > lower ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - step ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - step ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_DOWN, menu, act, &single, &group, base - step, FALSE ); } if ( (base - page) > lower ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - page ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - page ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_PAGE_DOWN, menu, act, &single, &group, base - page, FALSE ); } - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, lower ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, lower ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_BOTTOM, menu, act, &single, &group, lower, FALSE ); } - if ( act->private_data->descriptions ) { - gdouble value = ((EgeAdjustmentDescr*)act->private_data->descriptions->data)->value; - flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, value ); + if ( !act->private_data->descriptions.empty() ) { + gdouble value = ((EgeAdjustmentDescr*)act->private_data->descriptions[0])->value; + flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, value ); } return menu; @@ -965,36 +966,37 @@ static gboolean process_tab( GtkWidget* widget, int direction ) GtkWidget* ggp = gp ? gtk_widget_get_parent(gp) : 0; if ( ggp && GTK_IS_TOOLBAR(ggp) ) { - GList* kids = gtk_container_get_children( GTK_CONTAINER(ggp) ); - if ( kids ) { + std::vector kids = Glib::wrap(GTK_CONTAINER(ggp))->get_children(); + if ( !kids.empty() ) { GtkWidget* curr = widget; while ( curr && (gtk_widget_get_parent(curr) != ggp) ) { curr = gtk_widget_get_parent( curr ); } if ( curr ) { - GList* mid = g_list_find( kids, curr ); - while ( mid ) { - mid = ( direction < 0 ) ? g_list_previous(mid) : g_list_next(mid); - if ( mid && GTK_IS_TOOL_ITEM(mid->data) ) { + std::vector::iterator mid=kids.end(); + for(auto i = kids.begin(); i!= kids.end(); ++i){ + if(curr == (*i)->gobj()) + mid = i; + } + while ( mid != kids.end() && !(mid==kids.begin() && direction<0 ) ) { + mid = ( direction < 0 ) ? std::prev(mid) : ++mid; + if ( mid!=kids.end() && GTK_IS_TOOL_ITEM((*mid)->gobj()) ) { /* potential target */ - GtkWidget* child = gtk_bin_get_child( GTK_BIN(mid->data) ); + GtkWidget* child = gtk_bin_get_child( GTK_BIN((*mid)->gobj()) ); if ( child && GTK_IS_BOX(child) ) { /* could be ours */ - GList* subChildren = gtk_container_get_children( GTK_CONTAINER(child) ); - if ( subChildren ) { - GList* last = g_list_last(subChildren); - if ( last && GTK_IS_SPIN_BUTTON(last->data) && gtk_widget_is_sensitive( GTK_WIDGET(last->data) ) ) { - gtk_widget_grab_focus( GTK_WIDGET(last->data) ); + std::vector subChildren = Glib::wrap(GTK_CONTAINER(child))->get_children(); + if ( ! subChildren.empty() ) { + Gtk::Widget *last = subChildren[subChildren.size()-1]; + if ( GTK_IS_SPIN_BUTTON(last->gobj()) && gtk_widget_is_sensitive( GTK_WIDGET(last->gobj()) ) ) { + gtk_widget_grab_focus( GTK_WIDGET(last->gobj()) ); handled = TRUE; - mid = 0; /* to stop loop */ + mid = kids.end(); /* to stop loop */ } - - g_list_free(subChildren); } } } } } - g_list_free( kids ); } } diff --git a/src/widgets/ege-output-action.cpp b/src/widgets/ege-output-action.cpp index da29524a5..e7d74a25f 100644 --- a/src/widgets/ege-output-action.cpp +++ b/src/widgets/ege-output-action.cpp @@ -42,6 +42,8 @@ #include #include +#include +#include #include "widgets/ege-output-action.h" @@ -211,22 +213,23 @@ void fixup_labels( GObject *gobject, GParamSpec *arg1, gpointer user_data ) GSList* proxies = gtk_action_get_proxies( GTK_ACTION(gobject) ); gchar* str = 0; g_object_get( gobject, "label", &str, NULL ); + Glib::ustring str2(str); (void)user_data; while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - if ( GTK_IS_BOX(children->data) ) { - children = gtk_container_get_children( GTK_CONTAINER(children->data) ); - if ( children && g_list_next(children) ) { - GtkWidget* child = GTK_WIDGET( g_list_next(children)->data ); - if ( GTK_IS_LABEL(child) ) { - GtkLabel* lbl = GTK_LABEL(child); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + if ( GTK_IS_BOX(children[0]->gobj()) ) { + children = dynamic_cast(children[0])->get_children(); + if ( children.size()>1 ) { + Gtk::Widget *child = children[1]; + if ( GTK_IS_LABEL(child->gobj()) ) { + Gtk::Label* lbl = dynamic_cast(child); if ( EGE_OUTPUT_ACTION(gobject)->private_data->useMarkup ) { - gtk_label_set_markup( lbl, str ); + lbl->set_markup(str2); } else { - gtk_label_set_text( lbl, str ); + lbl->set_text(str2); } } } diff --git a/src/widgets/ege-select-one-action.cpp b/src/widgets/ege-select-one-action.cpp index 5555663e4..f51e48a8c 100644 --- a/src/widgets/ege-select-one-action.cpp +++ b/src/widgets/ege-select-one-action.cpp @@ -40,6 +40,8 @@ /* Note: this file should be kept compilable as both .cpp and .c */ #include +#include +#include #include @@ -843,9 +845,9 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - gpointer combodata = g_object_get_data( G_OBJECT(children->data), "ege-combo-box" ); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + gpointer combodata = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-combo-box" ); if ( GTK_IS_COMBO_BOX(combodata) ) { GtkComboBox* combo = GTK_COMBO_BOX(combodata); @@ -854,8 +856,8 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) } else if ( gtk_combo_box_get_active(combo) != active ) { gtk_combo_box_set_active( combo, active ); } - } else if ( GTK_IS_BOX(children->data) ) { - gpointer data = g_object_get_data( G_OBJECT(children->data), "ege-proxy_action-group" ); + } else if ( GTK_IS_BOX(children[0]->gobj()) ) { + gpointer data = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-proxy_action-group" ); if ( data ) { GSList* group = (GSList*)data; GtkRadioAction* oneAction = GTK_RADIO_ACTION(group->data); @@ -880,10 +882,9 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) } } else if ( GTK_IS_MENU_ITEM(proxies->data) ) { GtkWidget* subMenu = gtk_menu_item_get_submenu( GTK_MENU_ITEM(proxies->data) ); - GList* children = gtk_container_get_children( GTK_CONTAINER(subMenu) ); - if ( children && (g_list_length(children) > (guint)active) ) { - gpointer data = g_list_nth_data( children, active ); - gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(data), TRUE ); + std::vector children = Glib::wrap(GTK_CONTAINER(subMenu))->get_children(); + if ( children.size() > (guint)active ) { + dynamic_cast(children[active])->set_active(true); } } @@ -900,14 +901,14 @@ void resync_sensitive( EgeSelectOneAction* act ) while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - gpointer combodata = g_object_get_data( G_OBJECT(children->data), "ege-combo-box" ); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + gpointer combodata = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-combo-box" ); if ( GTK_IS_COMBO_BOX(combodata) ) { /* Not implemented */ - } else if ( GTK_IS_BOX(children->data) ) { - gpointer data = g_object_get_data( G_OBJECT(children->data), "ege-proxy_action-group" ); + } else if ( GTK_IS_BOX(children[0]->gobj()) ) { + gpointer data = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-proxy_action-group" ); if ( data ) { GSList* group = (GSList*)data; // List is backwards in group as compared to GtkTreeModel, we better do matching. diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp index d1b6a43bb..ac186f224 100644 --- a/src/widgets/pencil-toolbar.cpp +++ b/src/widgets/pencil-toolbar.cpp @@ -197,41 +197,29 @@ static void freehand_simplify_lpe(InkToggleAction* itact, GObject *dataKludge) { } } -/** - * Generate the list of freehand advanced shape option entries. - */ -static GList * freehand_shape_dropdown_items_list() { - GList *glist = NULL; - - glist = g_list_append (glist, const_cast(C_("Freehand shape", "None"))); - glist = g_list_append (glist, _("Triangle in")); - glist = g_list_append (glist, _("Triangle out")); - glist = g_list_append (glist, _("Ellipse")); - glist = g_list_append (glist, _("From clipboard")); - glist = g_list_append (glist, _("Bend from clipboard")); - glist = g_list_append (glist, _("Last applied")); - - return glist; -} - static void freehand_add_advanced_shape_options(GtkActionGroup* mainActions, GObject* holder, bool tool_is_pencil) { /*advanced shape options */ { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); GtkListStore* model = gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_INT ); - - GList* items = 0; gint count = 0; - for ( items = freehand_shape_dropdown_items_list(); items ; items = g_list_next(items) ) + std::vector freehand_shape_dropdown_items_list = { + const_cast(C_("Freehand shape", "None")), + _("Triangle in"), + _("Triangle out"), + _("Ellipse"), + _("From clipboard"), + _("Bend from clipboard"), + _("Last applied") }; + + for (auto item:freehand_shape_dropdown_items_list) { GtkTreeIter iter; gtk_list_store_append( model, &iter ); - gtk_list_store_set( model, &iter, 0, reinterpret_cast(items->data), 1, count, -1 ); + gtk_list_store_set( model, &iter, 0, item, 1, count, -1 ); count++; } - g_list_free( items ); - items = 0; EgeSelectOneAction* act1 = ege_select_one_action_new( tool_is_pencil ? "SetPencilShapeAction" : "SetPenShapeAction", _("Shape:"), (_("Shape of new paths drawn by this tool")), NULL, GTK_TREE_MODEL(model)); diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp index 68fb78327..29e86b885 100644 --- a/src/widgets/spw-utilities.cpp +++ b/src/widgets/spw-utilities.cpp @@ -249,9 +249,9 @@ gpointer sp_search_by_data_recursive(GtkWidget *w, gpointer key) if (r) return r; if (GTK_IS_CONTAINER(w)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(w)); - for (GList *i = ch; i != NULL; i = i->next) { - r = sp_search_by_data_recursive(GTK_WIDGET(i->data), key); + std::vector children = Glib::wrap(GTK_CONTAINER(w))->get_children(); + for (auto i:children) { + r = sp_search_by_data_recursive(GTK_WIDGET(i->gobj()), key); if (r) return r; } } @@ -272,9 +272,9 @@ GtkWidget *sp_search_by_value_recursive(GtkWidget *w, gchar *key, gchar *value) if (r && !strcmp (r, value)) return w; if (GTK_IS_CONTAINER(w)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(w)); - for (GList *i = ch; i != NULL; i = i->next) { - GtkWidget *child = sp_search_by_value_recursive(GTK_WIDGET(i->data), key, value); + std::vector children = Glib::wrap(GTK_CONTAINER(w))->get_children(); + for (auto i:children) { + GtkWidget *child = sp_search_by_value_recursive(GTK_WIDGET(i->gobj()), key, value); if (child) return child; } } diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index 68e38e8ed..447af9c71 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -795,13 +795,10 @@ void ToolboxFactory::setToolboxDesktop(GtkWidget *toolbox, SPDesktop *desktop) SPDesktop *old_desktop = static_cast(ptr); if (old_desktop) { - GList *children, *iter; - - children = gtk_container_get_children(GTK_CONTAINER(toolbox)); - for ( iter = children ; iter ; iter = iter->next ) { - gtk_container_remove( GTK_CONTAINER(toolbox), GTK_WIDGET(iter->data) ); + std::vector children = Glib::wrap(GTK_CONTAINER(toolbox))->get_children(); + for ( auto i:children ) { + gtk_container_remove( GTK_CONTAINER(toolbox), i->gobj() ); } - g_list_free(children); } g_object_set_data(G_OBJECT(toolbox), "desktop", (gpointer)desktop); @@ -894,20 +891,20 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati g_message(" is a BOX"); #endif // DUMP_DETAILS - GList* children = gtk_container_get_children(GTK_CONTAINER(child)); - if (children) { - for (GList* curr = children; curr; curr = g_list_next(curr)) { - GtkWidget* child2 = GTK_WIDGET(curr->data); + std::vector children = Glib::wrap(GTK_CONTAINER(child))->get_children(); + if (!children.empty()) { + for (auto curr:children) { + GtkWidget* child2 = curr->gobj(); #if DUMP_DETAILS GType type3 = G_OBJECT_TYPE(child2); g_message(" child2 [%s]", g_type_name(type3)); #endif // DUMP_DETAILS if (GTK_IS_CONTAINER(child2)) { - GList* children2 = gtk_container_get_children(GTK_CONTAINER(child2)); - if (children2) { - for (GList* curr2 = children2; curr2; curr2 = g_list_next(curr2)) { - GtkWidget* child3 = GTK_WIDGET(curr2->data); + std::vector children2 = Glib::wrap(GTK_CONTAINER(child2))->get_children(); + if (!children2.empty()) { + for (auto curr2:children2) { + GtkWidget* child3 = curr2->gobj(); #if DUMP_DETAILS GType type4 = G_OBJECT_TYPE(child3); g_message(" child3 [%s]", g_type_name(type4)); @@ -917,7 +914,6 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati gtk_orientable_set_orientation(GTK_ORIENTABLE(childBar), orientation); } } - g_list_free(children2); } } @@ -929,7 +925,6 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati g_message("need to add dynamic switch"); } } - g_list_free(children); } else { // The call is being made before the toolbox proper has been setup. g_object_set_data(G_OBJECT(toolbox), HANDLE_POS_MARK, GINT_TO_POINTER(pos)); -- cgit v1.2.3 From c94904488d68f4c4c97a5eedb2067d82e3859790 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 30 Sep 2017 14:25:40 +0200 Subject: Improvements to meassure segments LPE and a little styling tweak to default LPE params --- src/live_effects/effect.cpp | 4 +- src/live_effects/lpe-measure-segments.cpp | 87 ++++++++++--------------------- src/live_effects/lpe-measure-segments.h | 3 +- 3 files changed, 32 insertions(+), 62 deletions(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index fcb4b5cb2..703852881 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -873,7 +873,9 @@ Effect::defaultParamSet() expander->set_expanded(false); vbox->pack_start(*dynamic_cast (expander), true, true, 2); if (has_params) { - return dynamic_cast(vbox); + Gtk::Widget *vboxwidg = dynamic_cast(vbox); + vboxwidg->set_margin_bottom(15); + return vboxwidg; } else { return NULL; } diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 26e6cbe03..b929f5154 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -60,10 +60,9 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : fix_overlaps(_("Fix overlaps °"), _("Min angle where overlaps are fixed, 180° no fix"), "fix_overlaps", &wr, this, 0), position(_("Position"), _("Position"), "position", &wr, this, 5), text_top_bottom(_("Text top/bottom"), _("Text top/bottom"), "text_top_bottom", &wr, this, 0), - text_right_left(_("Text right/left"), _("Text right/left"), "text_right_left", &wr, this, 0), helpline_distance(_("Helpline distance"), _("Helpline distance"), "helpline_distance", &wr, this, 0.0), helpline_overlap(_("Helpline overlap"), _("Helpline overlap"), "helpline_overlap", &wr, this, 2.0), - line_width(_("Line width"), _("Line width. DIM line group standar are 0.25 or 0.35"), "line_width", &wr, this, 0.25), + line_width(_("Line width"), _("Line width. DIM line group standard are 0.25 or 0.35"), "line_width", &wr, this, 0.25), scale(_("Scale"), _("Scaling factor"), "scale", &wr, this, 1.0), format(_("Format"), _("Format the number ex:{measure} {unit}, return to save"), "format", &wr, this,"{measure}{unit}"), @@ -86,7 +85,6 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : registerParameter(&fix_overlaps); registerParameter(&position); registerParameter(&text_top_bottom); - registerParameter(&text_right_left); registerParameter(&helpline_distance); registerParameter(&helpline_overlap); registerParameter(&line_width); @@ -132,9 +130,6 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : line_width.param_set_range(-999999.0, 999999.0); line_width.param_set_increments(1, 1); line_width.param_set_digits(2); - text_right_left.param_set_range(-999999.0, 999999.0); - text_right_left.param_set_increments(1, 1); - text_right_left.param_set_digits(2); helpline_distance.param_set_range(-999999.0, 999999.0); helpline_distance.param_set_increments(1, 1); helpline_distance.param_set_digits(2); @@ -177,7 +172,7 @@ LPEMeasureSegments::createArrowMarker(const char * mode) } else { arrow = xml_doc->createElement("svg:marker"); arrow->setAttribute("id", mode); - arrow->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-arrows")).c_str()); + arrow->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-arrows-marker")).c_str()); arrow->setAttribute("inkscape:stockid", mode); arrow->setAttribute("orient", "auto"); arrow->setAttribute("refX", "0.0"); @@ -193,9 +188,9 @@ LPEMeasureSegments::createArrowMarker(const char * mode) } else if (std::strcmp(mode, "ArrowDINout-start") == 0) { arrow_path->setAttribute("d", "M 0,0 -16,2.11 -16,0.5 -26,0.5 -26,-0.5 -16,-0.5 -16,-2.11 z"); } else { - arrow_path->setAttribute("d", "M 0,0 16,2.11 16,0.5 26,0.5 26,-0.5 16,-0.5 16,-2.11 z"); + arrow_path->setAttribute("d", "M 0,0 16,-2.11 16,-0.5 26,-0.5 26,0.5 16,0.5 16,2.11 z"); } - + arrow_path->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-arrows")).c_str()); arrow_path->setAttribute("id", Glib::ustring(mode).append("_path").c_str()); arrow_path->setAttribute("style", style.c_str()); arrow->addChild(arrow_path, NULL); @@ -237,7 +232,6 @@ LPEMeasureSegments::createTextLabel(Geom::Point pos, size_t counter, double leng elemref->deleteObject(); return; } - pos = pos - Point::polar(angle, text_right_left); rtext = elemref->getRepr(); sp_repr_set_svg_double(rtext, "x", pos[Geom::X]); sp_repr_set_svg_double(rtext, "y", pos[Geom::Y]); @@ -252,7 +246,6 @@ LPEMeasureSegments::createTextLabel(Geom::Point pos, size_t counter, double leng rtext->setAttribute("id", id); rtext->setAttribute("class", (Glib::ustring(sp_lpe_item->getId()) + Glib::ustring(" ") + Glib::ustring(this->lpeobj->getId()) + Glib::ustring(" measure-labels")).c_str()); rtext->setAttribute("sodipodi:insensitive", "true"); - pos = pos - Point::polar(angle, text_right_left); sp_repr_set_svg_double(rtext, "x", pos[Geom::X]); sp_repr_set_svg_double(rtext, "y", pos[Geom::Y]); rtspan = xml_doc->createElement("svg:tspan"); @@ -355,7 +348,7 @@ LPEMeasureSegments::createTextLabel(Geom::Point pos, size_t counter, double leng } void -LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool overflow, bool remove, bool arrows) +LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool remove, bool arrows) { SPDocument * document = SP_ACTIVE_DOCUMENT; if (!document) { @@ -371,7 +364,10 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i end = end + Point::polar(angle, helpline_overlap ); } Geom::PathVector line_pathv; - if (main && std::abs(text_top_bottom) < fontsize/1.5 && hide_back && !overflow){ + + if (main && + std::abs(text_top_bottom) < fontsize/1.5 && + hide_back){ Geom::Path line_path; double k = 0; if (flip_side) { @@ -433,9 +429,7 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i line_pathv.clear(); Glib::ustring style; - if (overflow && !arrows) { - line->setAttribute("inkscape:label", "downline"); - } else if (main) { + if (main) { line->setAttribute("inkscape:label", "dinline"); if (arrows_outside) { style = style + Glib::ustring("marker-start:url(#ArrowDINout-start);marker-end:url(#ArrowDINout-end);"); @@ -528,9 +522,6 @@ LPEMeasureSegments::doOnApply(SPLPEItem const* lpeitem) styleContent = styleContent + Glib::ustring("\n.measure-labels") + Glib::ustring("\n{\nline-height:125%;\nletter-spacing:0;\nword-spacing:0;\ntext-align:center;\ntext-anchor:middle;\nstroke:none;\n}"); styleContent = styleContent + Glib::ustring("\n.measure-lines") + Glib::ustring("\n{\n}"); } -// styleContent = styleContent + Glib::ustring("\n.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}"); -// styleContent = styleContent + Glib::ustring("\n.measure-labels.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}\n"); -// styleContent = styleContent + Glib::ustring("\n.measure-arrows.") + Glib::ustring(lpeitem->getId()) + Glib::ustring("\n{}\n"); textNode->setContent(styleContent.c_str()); DocumentUndo::setUndoSensitive(document, saved); } @@ -713,7 +704,7 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) } else { hstart = hstart - Point::polar(angle_cross, position); } - createLine(start, hstart, g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), false, false, remove); + createLine(start, hstart, g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), false, remove); if (fix_overlaps != 180 && end_angle_cross != 0) { double position_turned = position / sin(end_angle_cross/2.0); @@ -744,41 +735,15 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) if (scale_sensitive) { length *= parents_scale; } + if ((anotation_width/2) > Geom::distance(hstart,hend)/2.0) { + pos = pos - Point::polar(angle_cross, position); + } if (scale_sensitive && !affinetransform.preservesAngles()) { createTextLabel(pos, counter, length, angle, remove, false); } else { createTextLabel(pos, counter, length, angle, remove, true); } - bool overflow = false; const char * downline = g_strdup(Glib::ustring("downline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()); - //delete residual lines if exist - createLine(Geom::Point(),Geom::Point(), downline, true, overflow, true, false); - //Create it - if ((anotation_width/2) + std::abs(text_right_left / doc_scale) > Geom::distance(hstart,hend)/2.0) { - Geom::Point sstart = hend - Point::polar(angle_cross, position); - Geom::Point send = hend - Point::polar(angle_cross, position); - if ((text_right_left < 0 && flip_side) || (text_right_left > 0 && !flip_side)) { - sstart = hstart - Point::polar(angle_cross, position); - send = hstart - Point::polar(angle_cross, position); - } - Geom::Point prog_end = Geom::Point(); - if (std::abs(text_top_bottom / doc_scale) < fontsize/1.5 && hide_back) { - if (text_right_left > 0 ) { - prog_end = sstart - Point::polar(angle, std::abs(text_right_left / doc_scale) - (anotation_width/1.9) - (Geom::distance(hstart,hend)/2.0)); - } else { - prog_end = sstart + Point::polar(angle, std::abs(text_right_left / doc_scale) - (anotation_width/1.9) - (Geom::distance(hstart,hend)/2.0)); - } - } else { - if (text_right_left / doc_scale > 0 ) { - prog_end = sstart - Point::polar(angle,(anotation_width/2) + std::abs(text_right_left / doc_scale) - (Geom::distance(hstart,hend)/2.0)); - } else { - prog_end = sstart + Point::polar(angle,(anotation_width/2) + std::abs(text_right_left / doc_scale) - (Geom::distance(hstart,hend)/2.0)); - } - } - overflow = true; - createLine(sstart, prog_end, downline, true, overflow, false, false); - } - //LINE arrow_gap = 8 * Inkscape::Util::Quantity::convert(line_width / doc_scale, "mm", display_unit.c_str()); SPCSSAttr *css = sp_repr_css_attr_new(); @@ -793,18 +758,22 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) if(flip_side) { arrow_gap *= -1; } - createLine(end, hend, g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), false, false, remove); + createLine(end, hend, g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), false, remove); if (!arrows_outside) { hstart = hstart + Point::polar(angle, arrow_gap); hend = hend - Point::polar(angle, arrow_gap ); } - createLine(hstart, hend, g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, overflow, remove, true); + if ((anotation_width/2) < Geom::distance(hstart,hend)/2.0) { + createLine(hstart, hend, g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, remove, true); + } else { + createLine(hstart, hend, g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); + } } else { const char * downline = g_strdup(Glib::ustring("downline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()); - createLine(Geom::Point(),Geom::Point(), downline, true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); + createLine(Geom::Point(),Geom::Point(), downline, true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); const char * id = g_strdup(Glib::ustring("text-on-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()); SPObject *elemref = NULL; if ((elemref = document->getObjectById(id))) { @@ -815,10 +784,10 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) } for (size_t k = ncurves; k <= previous_size; k++) { const char * downline = g_strdup(Glib::ustring("downline-").append(Glib::ustring::format(counter) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()); - createLine(Geom::Point(),Geom::Point(), downline, true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); - createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true, true); + createLine(Geom::Point(),Geom::Point(), downline, true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-start-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); + createLine(Geom::Point(), Geom::Point(), g_strdup(Glib::ustring("infoline-on-end-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()), true, true, true); const char * id = g_strdup(Glib::ustring("text-on-").append(Glib::ustring::format(k) + Glib::ustring("-")).append(this->getRepr()->attribute("id")).c_str()); SPObject *elemref = NULL; if ((elemref = document->getObjectById(id))) { diff --git a/src/live_effects/lpe-measure-segments.h b/src/live_effects/lpe-measure-segments.h index 7c4fd4073..0b4ed5ef7 100644 --- a/src/live_effects/lpe-measure-segments.h +++ b/src/live_effects/lpe-measure-segments.h @@ -46,7 +46,7 @@ public: virtual void doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/); virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in); - void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool overflow, bool remove, bool arrows = false); + void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool remove, bool arrows = false); void createTextLabel(Geom::Point pos, size_t counter, double length, Geom::Coord angle, bool remove, bool valid); void createArrowMarker(const char * mode); bool hasMeassure (size_t i); @@ -59,7 +59,6 @@ private: ScalarParam fix_overlaps; ScalarParam position; ScalarParam text_top_bottom; - ScalarParam text_right_left; ScalarParam helpline_distance; ScalarParam helpline_overlap; ScalarParam line_width; -- cgit v1.2.3 From 3e9296b964b8d0bd941991e05866882a689f4ac4 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 30 Sep 2017 18:15:54 +0200 Subject: Fix bug in comment #20 From Maren in bug #1715433. Clone original LPE can no longer be used to fill a powerstroke path --- src/live_effects/lpe-clone-original.cpp | 8 ++++---- src/live_effects/parameter/item.cpp | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index b035cc1d0..6e5ad66bf 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -181,7 +181,7 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, const char * g_strfreev (styleattarray); Glib::ustring css_str; sp_repr_css_write_string(css_dest,css_str); - dest->getRepr()->setAttribute("style", css_str.c_str()); + dest->getRepr()->setAttribute("style", g_strdup(css_str.c_str())); } void @@ -189,9 +189,9 @@ LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ if (linkeditem.linksToItem()) { Glib::ustring attr = ""; if (method != CLM_NONE) { - attr.append("d,"); + attr += Glib::ustring("d,"); } - attr.append(Glib::ustring(attributes.param_getSVGValue()).append(",")); + attr += Glib::ustring(attributes.param_getSVGValue()) + Glib::ustring(","); if (attr.size() && !Glib::ustring(attributes.param_getSVGValue()).size()) { attr.erase (attr.size()-1, 1); } @@ -199,7 +199,7 @@ LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ if (style_attr.size() && !Glib::ustring(style_attributes.param_getSVGValue()).size()) { style_attr.erase (style_attr.size()-1, 1); } - style_attr.append(Glib::ustring(style_attributes.param_getSVGValue()).append(",")); + style_attr += Glib::ustring(style_attributes.param_getSVGValue()) + Glib::ustring(","); SPItem * origin = SP_ITEM(linkeditem.getObject()); SPItem * dest = SP_ITEM(sp_lpe_item); diff --git a/src/live_effects/parameter/item.cpp b/src/live_effects/parameter/item.cpp index 149fd6627..e075cab1a 100644 --- a/src/live_effects/parameter/item.cpp +++ b/src/live_effects/parameter/item.cpp @@ -101,7 +101,10 @@ ItemParam::param_readSVGValue(const gchar * strvalue) gchar * ItemParam::param_getSVGValue() const { - return g_strdup(href); + if (href) { + return g_strdup(href); + } + return g_strdup(""); } gchar * -- cgit v1.2.3 From 0f5574afd93303c82c1ae34fd1c59791c4d81217 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 30 Sep 2017 18:47:13 +0200 Subject: Fix bug #1719505 segfault on convert to path --- src/path-chemistry.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 7840c4ca8..6c4b67bef 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -368,7 +368,12 @@ sp_item_list_to_curves(const std::vector &items, std::vector& { continue; } - + //TODO: decide if we want to unlink clones or not, for now keep previous functionality retaining clones as is + SPUse *use = dynamic_cast(item); + if (use) { + continue; + } + SPPath *path = dynamic_cast(item); if (path && !path->_curve_before_lpe) { // remove connector attributes -- cgit v1.2.3 From 1fe5b815e10ade11fbb4bbec6b15f1a8945b7a1b Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 30 Sep 2017 16:46:21 +0200 Subject: Do not crash if raster image can not be opened by ImageMagick The crash only affected embedded images. (we were already catching the exception when loading a linked file) While at it add some error reporting via debug messages, fix a memory leak and do some minor cleanup. Fixed bug: - https://bugs.launchpad.net/inkscape/+bug/1720330 --- src/extension/internal/bitmap/imagemagick.cpp | 32 +++++++++++++++++---------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/extension/internal/bitmap/imagemagick.cpp b/src/extension/internal/bitmap/imagemagick.cpp index cc5b3d1bc..352271e26 100644 --- a/src/extension/internal/bitmap/imagemagick.cpp +++ b/src/extension/internal/bitmap/imagemagick.cpp @@ -39,7 +39,7 @@ namespace Bitmap { class ImageMagickDocCache: public Inkscape::Extension::Implementation::ImplementationDocumentCache { friend class ImageMagick; private: - void readImage(char const *xlink, Magick::Image *image); + void readImage(char const *xlink, char const *id, Magick::Image *image); protected: Inkscape::XML::Node** _nodes; @@ -85,11 +85,12 @@ ImageMagickDocCache::ImageMagickDocCache(Inkscape::UI::View::View * view) : { _nodes[_imageCount] = node; char const *xlink = node->attribute("xlink:href"); + char const *id = node->attribute("id"); _originals[_imageCount] = xlink; _caches[_imageCount] = (char*)""; _cacheLengths[_imageCount] = 0; _images[_imageCount] = new Magick::Image(); - readImage(xlink, _images[_imageCount]); + readImage(xlink, id, _images[_imageCount]); _imageItems[_imageCount] = item; _imageCount++; } @@ -113,26 +114,33 @@ ImageMagickDocCache::~ImageMagickDocCache ( ) { } void -ImageMagickDocCache::readImage(const char *xlink, Magick::Image *image) +ImageMagickDocCache::readImage(const char *xlink, const char *id, Magick::Image *image) { // Find if the xlink:href is base64 data, i.e. if the image is embedded - char *search = (char *) g_strndup(xlink, 30); + gchar *search = g_strndup(xlink, 30); if (strstr(search, "base64") != (char*)NULL) { // 7 = strlen("base64") + strlen(",") const char* pureBase64 = strstr(xlink, "base64") + 7; Magick::Blob blob; blob.base64(pureBase64); - image->read(blob); - } - else { - const gchar *path = xlink; - if (strncmp (xlink,"file:", 5) == 0) { - path = g_filename_from_uri(xlink, NULL, NULL); + try { + image->read(blob); + } catch (Magick::Exception &error_) { + g_warning("ImageMagick could not read '%s'\nDetails: %s", id, error_.what()); + } + } else { + gchar *path; + if (strncmp (xlink,"file:", 5) == 0) { + path = g_filename_from_uri(xlink, NULL, NULL); + } else { + path = g_strdup(xlink); } - try { image->read(path); - } catch (...) {} + } catch (Magick::Exception &error_) { + g_warning("ImageMagick could not read '%s' from '%s'\nDetails: %s", id, path, error_.what()); + } + g_free(path); } g_free(search); } -- cgit v1.2.3 From cb12c8d28ee46619bac0c519faca2e1114eed9f6 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 30 Sep 2017 17:19:29 +0200 Subject: MSYS2: use custom ImageMagick build as relocation support is broken This package was configured `--without-modules` which results in ImageMagick's "coders" to be compiled directly into the main library instead of using separate modules (which might not be found). see - https://bugs.launchpad.net/inkscape/+bug/1720330 - https://github.com/Alexpux/MINGW-packages/issues/2995 --- buildtools/msys2installdeps.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/buildtools/msys2installdeps.sh b/buildtools/msys2installdeps.sh index 38c713342..e2b0528e1 100644 --- a/buildtools/msys2installdeps.sh +++ b/buildtools/msys2installdeps.sh @@ -68,14 +68,9 @@ $ARCH-libyaml # or (always!) run pacman with the additional command line switch # --ignore=mingw-w64-*-imagemagick for arch in $(eval echo $ARCH); do - case ${arch} in - mingw-w64-i686) - pacman -U --needed --noconfirm http://repo.msys2.org/mingw/i686/mingw-w64-i686-imagemagick-6.9.3.7-1-any.pkg.tar.xz - ;; - mingw-w64-x86_64) - pacman -U --needed --noconfirm http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-imagemagick-6.9.3.7-1-any.pkg.tar.xz - ;; - esac + wget -nv https://gitlab.com/Ede123/bintray/raw/master/${arch}-imagemagick-6.9.9.15-1-any.pkg.tar.xz \ + && pacman -U --needed --noconfirm ${arch}-imagemagick-6.9.9.15-1-any.pkg.tar.xz \ + && rm ${arch}-imagemagick-6.9.9.15-1-any.pkg.tar.xz done -- cgit v1.2.3 From a95dbdc461bd956145a2bf244f8b20342aa6836f Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 30 Sep 2017 21:29:31 +0200 Subject: CI/AppVeyor: Re-introduce full system upgrade It was disabled in 657285e593dc1b901203bd797c335e87672e3d26 to reduce build times. Unfortunately pacman does not update dependencies of installed packages, so if a dependency is already present on the build machine an outdated (and potentially incompatible) version will be used. For an example of such breakage, see https://github.com/Alexpux/MSYS2-packages/pull/1020 https://github.com/appveyor/ci/issues/1822 --- buildtools/appveyor.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildtools/appveyor.sh b/buildtools/appveyor.sh index 5dac1227f..d8dddb104 100644 --- a/buildtools/appveyor.sh +++ b/buildtools/appveyor.sh @@ -9,6 +9,13 @@ error() { echo -e "\e[1;31m\nError: ${1}\n\e[0m"; exit 1; } ### setup +# reduce time required to install packages by disabling pacman's disk space checking +sed -i 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf + +# update MSYS2-packages and MINGW-packages (but only for current architecture) +pacman -Quq | grep -v mingw-w64- | xargs pacman -S --needed --noconfirm --noprogressbar +pacman -Quq | grep ${MINGW_PACKAGE_PREFIX} | xargs pacman -S --needed --noconfirm --noprogressbar + # do everything in /build cd "$(cygpath ${APPVEYOR_BUILD_FOLDER})" mkdir build -- cgit v1.2.3 From 6d91668aef6c3bcf4bfe247de1f58ba4b11cf367 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 1 Oct 2017 13:12:42 +0200 Subject: Add button to apply on path parameter as suggest Maren in bug #1715433#23 --- src/live_effects/parameter/text.cpp | 24 ++++++++++++++++++++---- src/live_effects/parameter/text.h | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/live_effects/parameter/text.cpp b/src/live_effects/parameter/text.cpp index 3f41bfeed..7e56b2c75 100644 --- a/src/live_effects/parameter/text.cpp +++ b/src/live_effects/parameter/text.cpp @@ -9,7 +9,7 @@ */ #include "ui/widget/registered-widget.h" -#include +#include #include "live_effects/parameter/text.h" #include "live_effects/effect.h" @@ -18,9 +18,10 @@ #include "inkscape.h" #include "verbs.h" #include "display/canvas-text.h" - #include <2geom/sbasis-geometric.h> +#include + namespace Inkscape { namespace LivePathEffect { @@ -124,6 +125,14 @@ TextParam::param_getDefaultSVGValue() const return str; } +void +TextParam::setTextParam(Inkscape::UI::Widget::RegisteredText *rsu) +{ + Glib::ustring str(rsu->getText()); + param_setValue(str); + write_to_SVG(); +} + Gtk::Widget * TextParam::param_newWidget() { @@ -131,9 +140,16 @@ TextParam::param_newWidget() param_label, param_tooltip, param_key, *param_wr, param_effect->getRepr(), param_effect->getSPDoc())); rsu->setText(value); rsu->setProgrammatically = false; - rsu->set_undo_parameters(SP_VERB_DIALOG_LIVE_PATH_EFFECT, _("Change text parameter")); - return dynamic_cast (rsu); + Gtk::Box *text_container = Gtk::manage(new Gtk::Box()); + Gtk::Button *set = Gtk::manage(new Gtk::Button(Glib::ustring("✔"))); + set->signal_clicked() + .connect(sigc::bind(sigc::mem_fun(*this, &TextParam::setTextParam),rsu)); + text_container->pack_start(*rsu, false, false, 2); + text_container->pack_start(*set, false, false, 2); + Gtk::Widget *return_widg = dynamic_cast (text_container); + return_widg->set_halign(Gtk::ALIGN_END); + return return_widg; } void diff --git a/src/live_effects/parameter/text.h b/src/live_effects/parameter/text.h index 460ef8629..a9de26a52 100644 --- a/src/live_effects/parameter/text.h +++ b/src/live_effects/parameter/text.h @@ -42,6 +42,7 @@ public: void param_setValue(Glib::ustring newvalue); void param_hide_canvas_text(); + void setTextParam(Inkscape::UI::Widget::RegisteredText *rsu); virtual void param_set_default(); virtual void param_update_default(const gchar * default_value); void setPos(Geom::Point pos); -- cgit v1.2.3 From ad03eb3eed2ad07c086fea71326c56701f3cf6e1 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 1 Oct 2017 15:05:59 +0200 Subject: A little styling tweak to a LPE expander --- src/live_effects/effect.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 703852881..2332ab8f2 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -874,7 +874,8 @@ Effect::defaultParamSet() vbox->pack_start(*dynamic_cast (expander), true, true, 2); if (has_params) { Gtk::Widget *vboxwidg = dynamic_cast(vbox); - vboxwidg->set_margin_bottom(15); + vboxwidg->set_margin_bottom(10); + vboxwidg->set_margin_top(5); return vboxwidg; } else { return NULL; -- cgit v1.2.3 From d4432a4aaf3fb615d9808f53557a4283436bf035 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sun, 1 Oct 2017 15:27:03 +0200 Subject: Fix the editing of clipping and masking objects By passing along an edit_transform matrix, as done for clipping paths. Cleanups: - remove some unused methods - use member initialization --- src/knot-holder-entity.cpp | 6 +++--- src/knotholder.cpp | 13 ++++++++++--- src/knotholder.h | 6 +++++- src/ui/shape-editor.cpp | 19 +++++++------------ src/ui/shape-editor.h | 4 ++-- src/ui/tools/node-tool.cpp | 3 ++- 6 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/knot-holder-entity.cpp b/src/knot-holder-entity.cpp index 8add35d46..bb7ef6eb3 100644 --- a/src/knot-holder-entity.cpp +++ b/src/knot-holder-entity.cpp @@ -84,7 +84,7 @@ KnotHolderEntity::update_knot() { Geom::Point knot_pos(knot_get()); if (knot_pos.isFinite()) { - Geom::Point dp(knot_pos * item->i2dt_affine()); + Geom::Point dp(knot_pos * parent_holder->getEditTranform() * item->i2dt_affine()); _moved_connection.block(); knot->setPosition(dp, SP_KNOT_STATE_NORMAL); @@ -102,7 +102,7 @@ KnotHolderEntity::snap_knot_position(Geom::Point const &p, guint state) return p; } - Geom::Affine const i2dt (item->i2dt_affine()); + Geom::Affine const i2dt (parent_holder->getEditTranform() * item->i2dt_affine()); Geom::Point s = p * i2dt; SnapManager &m = desktop->namedview->snap_manager; @@ -120,7 +120,7 @@ KnotHolderEntity::snap_knot_position_constrained(Geom::Point const &p, Inkscape: return p; } - Geom::Affine const i2d (item->i2dt_affine()); + Geom::Affine const i2d (parent_holder->getEditTranform() * item->i2dt_affine()); Geom::Point s = p * i2d; SnapManager &m = desktop->namedview->snap_manager; diff --git a/src/knotholder.cpp b/src/knotholder.cpp index 29054bcd9..5fbccf52d 100644 --- a/src/knotholder.cpp +++ b/src/knotholder.cpp @@ -56,7 +56,8 @@ KnotHolder::KnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFun sizeUpdatedConn(), released(relhandler), local_change(FALSE), - dragging(false) + dragging(false), + _edit_transform(Geom::identity()) { if (!desktop || !item) { g_print ("Error! Throw an exception, please!\n"); @@ -79,6 +80,12 @@ KnotHolder::~KnotHolder() { sizeUpdatedConn.disconnect(); } +void +KnotHolder::setEditTransform(Geom::Affine edit_transform) +{ + _edit_transform = edit_transform; +} + void KnotHolder::updateControlSizes() { ControlManager &mgr = ControlManager::getManager(); @@ -230,8 +237,8 @@ KnotHolder::knot_moved_handler(SPKnot *knot, Geom::Point const &p, guint state) for(std::list::iterator i = this->entity.begin(); i != this->entity.end(); ++i) { KnotHolderEntity *e = *i; if (e->knot == knot) { - Geom::Point const q = p * item->i2dt_affine().inverse(); - e->knot_set(q, e->knot->drag_origin * item->i2dt_affine().inverse(), state); + Geom::Point const q = p * item->i2dt_affine().inverse() * _edit_transform.inverse(); + e->knot_set(q, e->knot->drag_origin * item->i2dt_affine().inverse() * _edit_transform.inverse(), state); break; } } diff --git a/src/knotholder.h b/src/knotholder.h index d683b53ac..3c535cc31 100644 --- a/src/knotholder.h +++ b/src/knotholder.h @@ -18,6 +18,7 @@ */ #include <2geom/forward.h> +#include <2geom/affine.h> #include #include @@ -58,7 +59,8 @@ public: void add_pattern_knotholder(); - const SPItem *getItem() { return item; } + void setEditTransform(Geom::Affine edit_transform); + Geom::Affine getEditTranform() const { return _edit_transform; } bool knot_mouseover() const; @@ -83,6 +85,8 @@ protected: bool dragging; + Geom::Affine _edit_transform; + private: KnotHolder(); // declared but not defined }; diff --git a/src/ui/shape-editor.cpp b/src/ui/shape-editor.cpp index 6a8f5e931..2c0e662ee 100644 --- a/src/ui/shape-editor.cpp +++ b/src/ui/shape-editor.cpp @@ -31,10 +31,12 @@ namespace UI { bool ShapeEditor::_blockSetItem = false; -ShapeEditor::ShapeEditor(SPDesktop *dt) { - this->desktop = dt; - this->knotholder = NULL; - this->knotholder_listener_attached_for = NULL; +ShapeEditor::ShapeEditor(SPDesktop *dt, Geom::Affine edit_transform) : + desktop(dt), + knotholder(nullptr), + knotholder_listener_attached_for(nullptr), + _edit_transform(edit_transform) +{ } ShapeEditor::~ShapeEditor() { @@ -76,14 +78,6 @@ void ShapeEditor::decrement_local_change() { } } -const SPItem *ShapeEditor::get_item() { - const SPItem *item = NULL; - if (this->has_knotholder()) { - item = this->knotholder->getItem(); - } - return item; -} - void ShapeEditor::event_attr_changed(Inkscape::XML::Node * node, gchar const *name, gchar const *, gchar const *, bool, void *data) { g_assert(data); @@ -129,6 +123,7 @@ void ShapeEditor::set_item(SPItem *item, bool keep_knotholder) { this->knotholder = createKnotHolder(item, desktop); } if (this->knotholder) { + this->knotholder->setEditTransform(_edit_transform); this->knotholder->update_knots(); // setting new listener repr = this->knotholder->repr; diff --git a/src/ui/shape-editor.h b/src/ui/shape-editor.h index 7f435efca..e30b2d60b 100644 --- a/src/ui/shape-editor.h +++ b/src/ui/shape-editor.h @@ -23,7 +23,7 @@ namespace UI { class ShapeEditor { public: - ShapeEditor(SPDesktop *desktop); + ShapeEditor(SPDesktop *desktop, Geom::Affine edit_transform = Geom::identity()); ~ShapeEditor(); void set_item(SPItem *item, bool keep_knotholder = false); @@ -42,11 +42,11 @@ public: char const * /*new_value*/, bool /*is_interactive*/, void *data); private: void reset_item (bool keep_knotholder = true); - const SPItem *get_item(); static bool _blockSetItem; SPDesktop *desktop; Inkscape::XML::Node *knotholder_listener_attached_for; + Geom::Affine _edit_transform; }; } // namespace UI diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp index d508a16f2..e7825e302 100644 --- a/src/ui/tools/node-tool.cpp +++ b/src/ui/tools/node-tool.cpp @@ -358,6 +358,7 @@ void NodeTool::set(const Inkscape::Preferences::Entry& value) { } /** Recursively collect ShapeRecords */ +static void gather_items(NodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::ShapeRole role, std::set &s) { @@ -437,7 +438,7 @@ void NodeTool::selection_changed(Inkscape::Selection *sel) { if ((SP_IS_SHAPE(r.item) || SP_IS_TEXT(r.item) || SP_IS_GROUP(r.item) || SP_IS_OBJECTGROUP(r.item)) && this->_shape_editors.find(r.item) == this->_shape_editors.end()) { - ShapeEditor *si = new ShapeEditor(this->desktop); + ShapeEditor *si = new ShapeEditor(this->desktop, r.edit_transform); si->set_item(r.item); this->_shape_editors.insert(const_cast(r.item), si); } -- cgit v1.2.3 From 1d7b7827cef0755aa92387e48bdde4d2a9c06318 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sun, 1 Oct 2017 15:47:50 +0200 Subject: Rename object-edit.cpp to what it really is --- src/ui/CMakeLists.txt | 3 +- src/ui/object-edit.cpp | 1618 ---------------------------------- src/ui/object-edit.h | 84 -- src/ui/shape-editor-knotholders.cpp | 1666 +++++++++++++++++++++++++++++++++++ src/ui/shape-editor.cpp | 4 +- 5 files changed, 1669 insertions(+), 1706 deletions(-) delete mode 100644 src/ui/object-edit.cpp delete mode 100644 src/ui/object-edit.h create mode 100644 src/ui/shape-editor-knotholders.cpp diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index efdb279b4..be13d9b1b 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -5,10 +5,10 @@ set(ui_SRC dialog-events.cpp draw-anchor.cpp interface.cpp - object-edit.cpp previewholder.cpp selected-color.cpp shape-editor.cpp + shape-editor-knotholders.cpp tool-factory.cpp tools-switch.cpp uxmanager.cpp @@ -185,7 +185,6 @@ set(ui_SRC event-debug.h icon-names.h interface.h - object-edit.h previewable.h previewfillable.h previewholder.h diff --git a/src/ui/object-edit.cpp b/src/ui/object-edit.cpp deleted file mode 100644 index a2b6a2de0..000000000 --- a/src/ui/object-edit.cpp +++ /dev/null @@ -1,1618 +0,0 @@ -/* - * Node editing extension to objects - * - * Authors: - * Lauris Kaplinski - * Mitsuru Oka - * Maximilian Albert - * Abhishek Sharma - * Jon A. Cruz - * - * Licensed under GNU GPL - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "sp-item.h" -#include "sp-rect.h" -#include "box3d.h" -#include "sp-ellipse.h" -#include "sp-star.h" -#include "sp-spiral.h" -#include "sp-offset.h" -#include "sp-flowtext.h" -#include "preferences.h" -#include "style.h" -#include "desktop.h" - -#include "sp-namedview.h" -#include "live_effects/effect.h" -#include "sp-pattern.h" -#include -#include "ui/object-edit.h" -#include "knot-holder-entity.h" - -#define sp_round(v,m) (((v) < 0.0) ? ((ceil((v) / (m) - 0.5)) * (m)) : ((floor((v) / (m) + 0.5)) * (m))) - -namespace { - -static KnotHolder *sp_lpe_knot_holder(SPLPEItem *item, SPDesktop *desktop) -{ - KnotHolder *knot_holder = new KnotHolder(desktop, item, NULL); - - Inkscape::LivePathEffect::Effect *effect = item->getCurrentLPE(); - effect->addHandles(knot_holder, item); - - return knot_holder; -} - -} // namespace - -namespace Inkscape { -namespace UI { - -KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop) -{ - KnotHolder *knotholder = NULL; - - SPLPEItem *lpe = dynamic_cast(item); - if (lpe && - lpe->getCurrentLPE() && - lpe->getCurrentLPE()->isVisible() && - lpe->getCurrentLPE()->providesKnotholder()) { - knotholder = sp_lpe_knot_holder(lpe, desktop); - } else if (dynamic_cast(item)) { - knotholder = new RectKnotHolder(desktop, item, NULL); - } else if (dynamic_cast(item)) { - knotholder = new Box3DKnotHolder(desktop, item, NULL); - } else if (dynamic_cast(item)) { - knotholder = new ArcKnotHolder(desktop, item, NULL); - } else if (dynamic_cast(item)) { - knotholder = new StarKnotHolder(desktop, item, NULL); - } else if (dynamic_cast(item)) { - knotholder = new SpiralKnotHolder(desktop, item, NULL); - } else if (dynamic_cast(item)) { - knotholder = new OffsetKnotHolder(desktop, item, NULL); - } else { - SPFlowtext *flowtext = dynamic_cast(item); - if (flowtext && flowtext->has_internal_frame()) { - knotholder = new FlowtextKnotHolder(desktop, flowtext->get_frame(NULL), NULL); - } else if ((item->style->fill.isPaintserver() && dynamic_cast(item->style->getFillPaintServer())) || - (item->style->stroke.isPaintserver() && dynamic_cast(item->style->getStrokePaintServer()))) { - knotholder = new KnotHolder(desktop, item, NULL); - knotholder->add_pattern_knotholder(); - } - } - - return knotholder; -} - -} -} // namespace Inkscape - -/* SPRect */ - -/* handle for horizontal rounding radius */ -class RectKnotHolderEntityRX : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -/* handle for vertical rounding radius */ -class RectKnotHolderEntityRY : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -/* handle for width/height adjustment */ -class RectKnotHolderEntityWH : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - -protected: - void set_internal(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -/* handle for x/y adjustment */ -class RectKnotHolderEntityXY : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -/* handle for position */ -class RectKnotHolderEntityCenter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -Geom::Point -RectKnotHolderEntityRX::knot_get() const -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed + rect->width.computed - rect->rx.computed, rect->y.computed); -} - -void -RectKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - //In general we cannot just snap this radius to an arbitrary point, as we have only a single - //degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap - //the radius then we should have a constrained snap. snap_knot_position() is unconstrained - Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(-1, 0)), state); - - if (state & GDK_CONTROL_MASK) { - gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0; - rect->rx = rect->ry = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, temp); - } else { - rect->rx = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, rect->width.computed / 2.0); - } - - update_knot(); - - rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -void -RectKnotHolderEntityRX::knot_click(unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - if (state & GDK_SHIFT_MASK) { - /* remove rounding from rectangle */ - rect->getRepr()->setAttribute("rx", NULL); - rect->getRepr()->setAttribute("ry", NULL); - } else if (state & GDK_CONTROL_MASK) { - /* Ctrl-click sets the vertical rounding to be the same as the horizontal */ - rect->getRepr()->setAttribute("ry", rect->getRepr()->attribute("rx")); - } - -} - -Geom::Point -RectKnotHolderEntityRY::knot_get() const -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->ry.computed); -} - -void -RectKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - //In general we cannot just snap this radius to an arbitrary point, as we have only a single - //degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap - //the radius then we should have a constrained snap. snap_knot_position() is unconstrained - Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(0, 1)), state); - - if (state & GDK_CONTROL_MASK) { // When holding control then rx will be kept equal to ry, - // resulting in a perfect circle (and not an ellipse) - gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0; - rect->rx = rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, 0.0, temp); - } else { - if (!rect->rx._set || rect->rx.computed == 0) { - rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, - 0.0, - MIN(rect->height.computed / 2.0, rect->width.computed / 2.0)); - } else { - rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, - 0.0, - rect->height.computed / 2.0); - } - } - - update_knot(); - - rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -void -RectKnotHolderEntityRY::knot_click(unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - if (state & GDK_SHIFT_MASK) { - /* remove rounding */ - rect->getRepr()->setAttribute("rx", NULL); - rect->getRepr()->setAttribute("ry", NULL); - } else if (state & GDK_CONTROL_MASK) { - /* Ctrl-click sets the vertical rounding to be the same as the horizontal */ - rect->getRepr()->setAttribute("rx", rect->getRepr()->attribute("ry")); - } -} - -#define SGN(x) ((x)>0?1:((x)<0?-1:0)) - -static void sp_rect_clamp_radii(SPRect *rect) -{ - // clamp rounding radii so that they do not exceed width/height - if (2 * rect->rx.computed > rect->width.computed) { - rect->rx = 0.5 * rect->width.computed; - } - if (2 * rect->ry.computed > rect->height.computed) { - rect->ry = 0.5 * rect->height.computed; - } -} - -Geom::Point -RectKnotHolderEntityWH::knot_get() const -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); -} - -void -RectKnotHolderEntityWH::set_internal(Geom::Point const &p, Geom::Point const &origin, unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - Geom::Point s = p; - - if (state & GDK_CONTROL_MASK) { - // original width/height when drag started - gdouble const w_orig = (origin[Geom::X] - rect->x.computed); - gdouble const h_orig = (origin[Geom::Y] - rect->y.computed); - - //original ratio - gdouble ratio = (w_orig / h_orig); - - // mouse displacement since drag started - gdouble minx = p[Geom::X] - origin[Geom::X]; - gdouble miny = p[Geom::Y] - origin[Geom::Y]; - - Geom::Point p_handle(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); - - if (fabs(minx) > fabs(miny)) { - // snap to horizontal or diagonal - if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) { - // closer to the diagonal and in same-sign quarters, change both using ratio - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); - minx = s[Geom::X] - origin[Geom::X]; - // Dead assignment: Value stored to 'miny' is never read - //miny = s[Geom::Y] - origin[Geom::Y]; - rect->height = MAX(h_orig + minx / ratio, 0); - } else { - // closer to the horizontal, change only width, height is h_orig - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-1, 0)), state); - minx = s[Geom::X] - origin[Geom::X]; - // Dead assignment: Value stored to 'miny' is never read - //miny = s[Geom::Y] - origin[Geom::Y]; - rect->height = MAX(h_orig, 0); - } - rect->width = MAX(w_orig + minx, 0); - - } else { - // snap to vertical or diagonal - if (miny != 0 && fabs(minx/miny) > 0.5 * ratio && (SGN(minx) == SGN(miny))) { - // closer to the diagonal and in same-sign quarters, change both using ratio - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); - // Dead assignment: Value stored to 'minx' is never read - //minx = s[Geom::X] - origin[Geom::X]; - miny = s[Geom::Y] - origin[Geom::Y]; - rect->width = MAX(w_orig + miny * ratio, 0); - } else { - // closer to the vertical, change only height, width is w_orig - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(0, -1)), state); - // Dead assignment: Value stored to 'minx' is never read - //minx = s[Geom::X] - origin[Geom::X]; - miny = s[Geom::Y] - origin[Geom::Y]; - rect->width = MAX(w_orig, 0); - } - rect->height = MAX(h_orig + miny, 0); - - } - - } else { - // move freely - s = snap_knot_position(p, state); - rect->width = MAX(s[Geom::X] - rect->x.computed, 0); - rect->height = MAX(s[Geom::Y] - rect->y.computed, 0); - } - - sp_rect_clamp_radii(rect); - - rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -void -RectKnotHolderEntityWH::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) -{ - set_internal(p, origin, state); - update_knot(); -} - -Geom::Point -RectKnotHolderEntityXY::knot_get() const -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed, rect->y.computed); -} - -void -RectKnotHolderEntityXY::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - // opposite corner (unmoved) - gdouble opposite_x = (rect->x.computed + rect->width.computed); - gdouble opposite_y = (rect->y.computed + rect->height.computed); - - // original width/height when drag started - gdouble w_orig = opposite_x - origin[Geom::X]; - gdouble h_orig = opposite_y - origin[Geom::Y]; - - Geom::Point s = p; - Geom::Point p_handle(rect->x.computed, rect->y.computed); - - // mouse displacement since drag started - gdouble minx = p[Geom::X] - origin[Geom::X]; - gdouble miny = p[Geom::Y] - origin[Geom::Y]; - - if (state & GDK_CONTROL_MASK) { - //original ratio - gdouble ratio = (w_orig / h_orig); - - if (fabs(minx) > fabs(miny)) { - // snap to horizontal or diagonal - if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) { - // closer to the diagonal and in same-sign quarters, change both using ratio - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); - minx = s[Geom::X] - origin[Geom::X]; - // Dead assignment: Value stored to 'miny' is never read - //miny = s[Geom::Y] - origin[Geom::Y]; - rect->y = MIN(origin[Geom::Y] + minx / ratio, opposite_y); - rect->height = MAX(h_orig - minx / ratio, 0); - } else { - // closer to the horizontal, change only width, height is h_orig - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-1, 0)), state); - minx = s[Geom::X] - origin[Geom::X]; - // Dead assignment: Value stored to 'miny' is never read - //miny = s[Geom::Y] - origin[Geom::Y]; - rect->y = MIN(origin[Geom::Y], opposite_y); - rect->height = MAX(h_orig, 0); - } - rect->x = MIN(s[Geom::X], opposite_x); - rect->width = MAX(w_orig - minx, 0); - } else { - // snap to vertical or diagonal - if (miny != 0 && fabs(minx/miny) > 0.5 *ratio && (SGN(minx) == SGN(miny))) { - // closer to the diagonal and in same-sign quarters, change both using ratio - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); - // Dead assignment: Value stored to 'minx' is never read - //minx = s[Geom::X] - origin[Geom::X]; - miny = s[Geom::Y] - origin[Geom::Y]; - rect->x = MIN(origin[Geom::X] + miny * ratio, opposite_x); - rect->width = MAX(w_orig - miny * ratio, 0); - } else { - // closer to the vertical, change only height, width is w_orig - s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(0, -1)), state); - // Dead assignment: Value stored to 'minx' is never read - //minx = s[Geom::X] - origin[Geom::X]; - miny = s[Geom::Y] - origin[Geom::Y]; - rect->x = MIN(origin[Geom::X], opposite_x); - rect->width = MAX(w_orig, 0); - } - rect->y = MIN(s[Geom::Y], opposite_y); - rect->height = MAX(h_orig - miny, 0); - } - - } else { - // move freely - s = snap_knot_position(p, state); - minx = s[Geom::X] - origin[Geom::X]; - miny = s[Geom::Y] - origin[Geom::Y]; - - rect->x = MIN(s[Geom::X], opposite_x); - rect->y = MIN(s[Geom::Y], opposite_y); - rect->width = MAX(w_orig - minx, 0); - rect->height = MAX(h_orig - miny, 0); - } - - sp_rect_clamp_radii(rect); - - update_knot(); - - rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -RectKnotHolderEntityCenter::knot_get() const -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed + (rect->width.computed / 2.), rect->y.computed + (rect->height.computed / 2.)); -} - -void -RectKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPRect *rect = dynamic_cast(item); - g_assert(rect != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - rect->x = s[Geom::X] - (rect->width.computed / 2.); - rect->y = s[Geom::Y] - (rect->height.computed / 2.); - - // No need to call sp_rect_clamp_radii(): width and height haven't changed. - // No need to call update_knot(): the knot is set directly by the user. - - rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -RectKnotHolder::RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - RectKnotHolderEntityRX *entity_rx = new RectKnotHolderEntityRX(); - RectKnotHolderEntityRY *entity_ry = new RectKnotHolderEntityRY(); - RectKnotHolderEntityWH *entity_wh = new RectKnotHolderEntityWH(); - RectKnotHolderEntityXY *entity_xy = new RectKnotHolderEntityXY(); - RectKnotHolderEntityCenter *entity_center = new RectKnotHolderEntityCenter(); - - entity_rx->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, - _("Adjust the horizontal rounding radius; with Ctrl " - "to make the vertical radius the same"), - SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); - - entity_ry->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, - _("Adjust the vertical rounding radius; with Ctrl " - "to make the horizontal radius the same"), - SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); - - entity_wh->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, - _("Adjust the width and height of the rectangle; with Ctrl " - "to lock ratio or stretch in one dimension only"), - SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); - - entity_xy->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, - _("Adjust the width and height of the rectangle; with Ctrl " - "to lock ratio or stretch in one dimension only"), - SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); - - entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, - _("Drag to move the rectangle"), - SP_KNOT_SHAPE_CROSS); - - entity.push_back(entity_rx); - entity.push_back(entity_ry); - entity.push_back(entity_wh); - entity.push_back(entity_xy); - entity.push_back(entity_center); - - add_pattern_knotholder(); -} - -/* Box3D (= the new 3D box structure) */ - -class Box3DKnotHolderEntity : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const = 0; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) = 0; - - Geom::Point knot_get_generic(SPItem *item, unsigned int knot_id) const; - void knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &p, unsigned int state); -}; - -Geom::Point -Box3DKnotHolderEntity::knot_get_generic(SPItem *item, unsigned int knot_id) const -{ - SPBox3D *box = dynamic_cast(item); - if (box) { - return box3d_get_corner_screen(box, knot_id); - } else { - return Geom::Point(); // TODO investigate proper fallback - } -} - -void -Box3DKnotHolderEntity::knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &new_pos, unsigned int state) -{ - Geom::Point const s = snap_knot_position(new_pos, state); - - g_assert(item != NULL); - SPBox3D *box = dynamic_cast(item); - g_assert(box != NULL); - Geom::Affine const i2dt (item->i2dt_affine ()); - - Box3D::Axis movement; - if ((knot_id < 4) != (state & GDK_SHIFT_MASK)) { - movement = Box3D::XY; - } else { - movement = Box3D::Z; - } - - box3d_set_corner (box, knot_id, s * i2dt, movement, (state & GDK_CONTROL_MASK)); - box3d_set_z_orders(box); - box3d_position_set(box); -} - -class Box3DKnotHolderEntity0 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity1 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity2 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity3 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity4 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity5 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity6 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntity7 : public Box3DKnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class Box3DKnotHolderEntityCenter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -Geom::Point -Box3DKnotHolderEntity0::knot_get() const -{ - return knot_get_generic(item, 0); -} - -Geom::Point -Box3DKnotHolderEntity1::knot_get() const -{ - return knot_get_generic(item, 1); -} - -Geom::Point -Box3DKnotHolderEntity2::knot_get() const -{ - return knot_get_generic(item, 2); -} - -Geom::Point -Box3DKnotHolderEntity3::knot_get() const -{ - return knot_get_generic(item, 3); -} - -Geom::Point -Box3DKnotHolderEntity4::knot_get() const -{ - return knot_get_generic(item, 4); -} - -Geom::Point -Box3DKnotHolderEntity5::knot_get() const -{ - return knot_get_generic(item, 5); -} - -Geom::Point -Box3DKnotHolderEntity6::knot_get() const -{ - return knot_get_generic(item, 6); -} - -Geom::Point -Box3DKnotHolderEntity7::knot_get() const -{ - return knot_get_generic(item, 7); -} - -Geom::Point -Box3DKnotHolderEntityCenter::knot_get() const -{ - SPBox3D *box = dynamic_cast(item); - if (box) { - return box3d_get_center_screen(box); - } else { - return Geom::Point(); // TODO investigate proper fallback - } -} - -void -Box3DKnotHolderEntity0::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 0, new_pos, state); -} - -void -Box3DKnotHolderEntity1::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 1, new_pos, state); -} - -void -Box3DKnotHolderEntity2::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 2, new_pos, state); -} - -void -Box3DKnotHolderEntity3::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 3, new_pos, state); -} - -void -Box3DKnotHolderEntity4::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 4, new_pos, state); -} - -void -Box3DKnotHolderEntity5::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 5, new_pos, state); -} - -void -Box3DKnotHolderEntity6::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 6, new_pos, state); -} - -void -Box3DKnotHolderEntity7::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) -{ - knot_set_generic(item, 7, new_pos, state); -} - -void -Box3DKnotHolderEntityCenter::knot_set(Geom::Point const &new_pos, Geom::Point const &origin, unsigned int state) -{ - Geom::Point const s = snap_knot_position(new_pos, state); - - SPBox3D *box = dynamic_cast(item); - g_assert(box != NULL); - Geom::Affine const i2dt (item->i2dt_affine ()); - - box3d_set_center(box, s * i2dt, origin * i2dt, !(state & GDK_SHIFT_MASK) ? Box3D::XY : Box3D::Z, - state & GDK_CONTROL_MASK); - - box3d_set_z_orders(box); - box3d_position_set(box); -} - -Box3DKnotHolder::Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - Box3DKnotHolderEntity0 *entity_corner0 = new Box3DKnotHolderEntity0(); - Box3DKnotHolderEntity1 *entity_corner1 = new Box3DKnotHolderEntity1(); - Box3DKnotHolderEntity2 *entity_corner2 = new Box3DKnotHolderEntity2(); - Box3DKnotHolderEntity3 *entity_corner3 = new Box3DKnotHolderEntity3(); - Box3DKnotHolderEntity4 *entity_corner4 = new Box3DKnotHolderEntity4(); - Box3DKnotHolderEntity5 *entity_corner5 = new Box3DKnotHolderEntity5(); - Box3DKnotHolderEntity6 *entity_corner6 = new Box3DKnotHolderEntity6(); - Box3DKnotHolderEntity7 *entity_corner7 = new Box3DKnotHolderEntity7(); - Box3DKnotHolderEntityCenter *entity_center = new Box3DKnotHolderEntityCenter(); - - entity_corner0->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box in X/Y direction; with Shift along the Z axis; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner1->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box in X/Y direction; with Shift along the Z axis; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner2->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box in X/Y direction; with Shift along the Z axis; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner3->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box in X/Y direction; with Shift along the Z axis; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner4->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box along the Z axis; with Shift in X/Y direction; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner5->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box along the Z axis; with Shift in X/Y direction; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner6->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box along the Z axis; with Shift in X/Y direction; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_corner7->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Resize box along the Z axis; with Shift in X/Y direction; " - "with Ctrl to constrain to the directions of edges or diagonals")); - - entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, - _("Move the box in perspective"), - SP_KNOT_SHAPE_CROSS); - - entity.push_back(entity_corner0); - entity.push_back(entity_corner1); - entity.push_back(entity_corner2); - entity.push_back(entity_corner3); - entity.push_back(entity_corner4); - entity.push_back(entity_corner5); - entity.push_back(entity_corner6); - entity.push_back(entity_corner7); - entity.push_back(entity_center); - - add_pattern_knotholder(); -} - -/* SPArc */ - -class ArcKnotHolderEntityStart : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class ArcKnotHolderEntityEnd : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class ArcKnotHolderEntityRX : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class ArcKnotHolderEntityRY : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class ArcKnotHolderEntityCenter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -/* - * return values: - * 1 : inside - * 0 : on the curves - * -1 : outside - */ -static gint -sp_genericellipse_side(SPGenericEllipse *ellipse, Geom::Point const &p) -{ - gdouble dx = (p[Geom::X] - ellipse->cx.computed) / ellipse->rx.computed; - gdouble dy = (p[Geom::Y] - ellipse->cy.computed) / ellipse->ry.computed; - - gdouble s = dx * dx + dy * dy; - // We add a bit of a buffer, so there's a decent chance the user will - // be able to adjust the arc without the closed status flipping between - // open and closed during micro mouse movements. - if (s < 0.75) return 1; - if (s > 1.25) return -1; - return 0; -} - -void -ArcKnotHolderEntityStart::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - int snaps = Inkscape::Preferences::get()->getInt("/options/rotationsnapsperpi/value", 12); - - SPGenericEllipse *arc = dynamic_cast(item); - g_assert(arc != NULL); - - gint side = sp_genericellipse_side(arc, p); - if(side != 0) { arc->setArcType( (side == -1) ? - SP_GENERIC_ELLIPSE_ARC_TYPE_SLICE : - SP_GENERIC_ELLIPSE_ARC_TYPE_ARC); } - - Geom::Point delta = p - Geom::Point(arc->cx.computed, arc->cy.computed); - Geom::Scale sc(arc->rx.computed, arc->ry.computed); - - double offset = arc->start - atan2(delta * sc.inverse()); - arc->start -= offset; - - if ((state & GDK_CONTROL_MASK) && snaps) { - arc->start = sp_round(arc->start, M_PI / snaps); - } - if (state & GDK_SHIFT_MASK) { - arc->end -= offset; - } - - arc->normalize(); - arc->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -ArcKnotHolderEntityStart::knot_get() const -{ - SPGenericEllipse const *ge = dynamic_cast(item); - g_assert(ge != NULL); - - return ge->getPointAtAngle(ge->start); -} - -void -ArcKnotHolderEntityStart::knot_click(unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - if (state & GDK_SHIFT_MASK) { - ge->end = ge->start = 0; - ge->updateRepr(); - } -} - -void -ArcKnotHolderEntityEnd::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - int snaps = Inkscape::Preferences::get()->getInt("/options/rotationsnapsperpi/value", 12); - - SPGenericEllipse *arc = dynamic_cast(item); - g_assert(arc != NULL); - - gint side = sp_genericellipse_side(arc, p); - if(side != 0) { arc->setArcType( (side == -1) ? - SP_GENERIC_ELLIPSE_ARC_TYPE_SLICE : - SP_GENERIC_ELLIPSE_ARC_TYPE_ARC); } - - Geom::Point delta = p - Geom::Point(arc->cx.computed, arc->cy.computed); - Geom::Scale sc(arc->rx.computed, arc->ry.computed); - - double offset = arc->end - atan2(delta * sc.inverse()); - arc->end -= offset; - - if ((state & GDK_CONTROL_MASK) && snaps) { - arc->end = sp_round(arc->end, M_PI/snaps); - } - if (state & GDK_SHIFT_MASK) { - arc->start -= offset; - } - - arc->normalize(); - arc->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -ArcKnotHolderEntityEnd::knot_get() const -{ - SPGenericEllipse const *ge = dynamic_cast(item); - g_assert(ge != NULL); - - return ge->getPointAtAngle(ge->end); -} - - -void -ArcKnotHolderEntityEnd::knot_click(unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - if (state & GDK_SHIFT_MASK) { - ge->end = ge->start = 0; - ge->updateRepr(); - } -} - - -void -ArcKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - ge->rx = fabs( ge->cx.computed - s[Geom::X] ); - - if ( state & GDK_CONTROL_MASK ) { - ge->ry = ge->rx.computed; - } - - item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -ArcKnotHolderEntityRX::knot_get() const -{ - SPGenericEllipse const *ge = dynamic_cast(item); - g_assert(ge != NULL); - - return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(ge->rx.computed, 0)); -} - -void -ArcKnotHolderEntityRX::knot_click(unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - if (state & GDK_CONTROL_MASK) { - ge->ry = ge->rx.computed; - ge->updateRepr(); - } -} - -void -ArcKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - ge->ry = fabs( ge->cy.computed - s[Geom::Y] ); - - if ( state & GDK_CONTROL_MASK ) { - ge->rx = ge->ry.computed; - } - - item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -ArcKnotHolderEntityRY::knot_get() const -{ - SPGenericEllipse const *ge = dynamic_cast(item); - g_assert(ge != NULL); - - return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(0, ge->ry.computed)); -} - -void -ArcKnotHolderEntityRY::knot_click(unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - if (state & GDK_CONTROL_MASK) { - ge->rx = ge->ry.computed; - ge->updateRepr(); - } -} - -void -ArcKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPGenericEllipse *ge = dynamic_cast(item); - g_assert(ge != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - ge->cx = s[Geom::X]; - ge->cy = s[Geom::Y]; - - item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -ArcKnotHolderEntityCenter::knot_get() const -{ - SPGenericEllipse const *ge = dynamic_cast(item); - g_assert(ge != NULL); - - return Geom::Point(ge->cx.computed, ge->cy.computed); -} - - -ArcKnotHolder::ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - ArcKnotHolderEntityRX *entity_rx = new ArcKnotHolderEntityRX(); - ArcKnotHolderEntityRY *entity_ry = new ArcKnotHolderEntityRY(); - ArcKnotHolderEntityStart *entity_start = new ArcKnotHolderEntityStart(); - ArcKnotHolderEntityEnd *entity_end = new ArcKnotHolderEntityEnd(); - ArcKnotHolderEntityCenter *entity_center = new ArcKnotHolderEntityCenter(); - - entity_rx->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, - _("Adjust ellipse width, with Ctrl to make circle"), - SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); - - entity_ry->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, - _("Adjust ellipse height, with Ctrl to make circle"), - SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); - - entity_start->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, - _("Position the start point of the arc or segment; with Shift to move " - "with end point; with Ctrl to snap angle; drag inside the " - "ellipse for arc, outside for segment"), - SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); - - entity_end->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, - _("Position the end point of the arc or segment; with Shift to move " - "with start point; with Ctrl to snap angle; drag inside the " - "ellipse for arc, outside for segment"), - SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); - - entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, - _("Drag to move the ellipse"), - SP_KNOT_SHAPE_CROSS); - - entity.push_back(entity_rx); - entity.push_back(entity_ry); - entity.push_back(entity_start); - entity.push_back(entity_end); - entity.push_back(entity_center); - - add_pattern_knotholder(); -} - -/* SPStar */ - -class StarKnotHolderEntity1 : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class StarKnotHolderEntity2 : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class StarKnotHolderEntityCenter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -void -StarKnotHolderEntity1::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPStar *star = dynamic_cast(item); - g_assert(star != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - Geom::Point d = s - star->center; - - double arg1 = atan2(d); - double darg1 = arg1 - star->arg[0]; - - if (state & GDK_MOD1_MASK) { - star->randomized = darg1/(star->arg[0] - star->arg[1]); - } else if (state & GDK_SHIFT_MASK) { - star->rounded = darg1/(star->arg[0] - star->arg[1]); - } else if (state & GDK_CONTROL_MASK) { - star->r[0] = L2(d); - } else { - star->r[0] = L2(d); - star->arg[0] = arg1; - star->arg[1] += darg1; - } - star->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -void -StarKnotHolderEntity2::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPStar *star = dynamic_cast(item); - g_assert(star != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - if (star->flatsided == false) { - Geom::Point d = s - star->center; - - double arg1 = atan2(d); - double darg1 = arg1 - star->arg[1]; - - if (state & GDK_MOD1_MASK) { - star->randomized = darg1/(star->arg[0] - star->arg[1]); - } else if (state & GDK_SHIFT_MASK) { - star->rounded = fabs(darg1/(star->arg[0] - star->arg[1])); - } else if (state & GDK_CONTROL_MASK) { - star->r[1] = L2(d); - star->arg[1] = star->arg[0] + M_PI / star->sides; - } - else { - star->r[1] = L2(d); - star->arg[1] = atan2(d); - } - star->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } -} - -void -StarKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPStar *star = dynamic_cast(item); - g_assert(star != NULL); - - star->center = snap_knot_position(p, state); - - item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -StarKnotHolderEntity1::knot_get() const -{ - g_assert(item != NULL); - - SPStar const *star = dynamic_cast(item); - g_assert(star != NULL); - - return sp_star_get_xy(star, SP_STAR_POINT_KNOT1, 0); - -} - -Geom::Point -StarKnotHolderEntity2::knot_get() const -{ - g_assert(item != NULL); - - SPStar const *star = dynamic_cast(item); - g_assert(star != NULL); - - return sp_star_get_xy(star, SP_STAR_POINT_KNOT2, 0); -} - -Geom::Point -StarKnotHolderEntityCenter::knot_get() const -{ - g_assert(item != NULL); - - SPStar const *star = dynamic_cast(item); - g_assert(star != NULL); - - return star->center; -} - -static void -sp_star_knot_click(SPItem *item, unsigned int state) -{ - SPStar *star = dynamic_cast(item); - g_assert(star != NULL); - - if (state & GDK_MOD1_MASK) { - star->randomized = 0; - star->updateRepr(); - } else if (state & GDK_SHIFT_MASK) { - star->rounded = 0; - star->updateRepr(); - } else if (state & GDK_CONTROL_MASK) { - star->arg[1] = star->arg[0] + M_PI / star->sides; - star->updateRepr(); - } -} - -void -StarKnotHolderEntity1::knot_click(unsigned int state) -{ - sp_star_knot_click(item, state); -} - -void -StarKnotHolderEntity2::knot_click(unsigned int state) -{ - sp_star_knot_click(item, state); -} - -StarKnotHolder::StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - SPStar *star = dynamic_cast(item); - g_assert(item != NULL); - - StarKnotHolderEntity1 *entity1 = new StarKnotHolderEntity1(); - entity1->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Adjust the tip radius of the star or polygon; " - "with Shift to round; with Alt to randomize")); - - entity.push_back(entity1); - - if (star->flatsided == false) { - StarKnotHolderEntity2 *entity2 = new StarKnotHolderEntity2(); - entity2->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Adjust the base radius of the star; with Ctrl to keep star rays " - "radial (no skew); with Shift to round; with Alt to randomize")); - entity.push_back(entity2); - } - - StarKnotHolderEntityCenter *entity_center = new StarKnotHolderEntityCenter(); - entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, - _("Drag to move the star"), - SP_KNOT_SHAPE_CROSS); - entity.push_back(entity_center); - - add_pattern_knotholder(); -} - -/* SPSpiral */ - -class SpiralKnotHolderEntityInner : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); - virtual void knot_click(unsigned int state); -}; - -class SpiralKnotHolderEntityOuter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -class SpiralKnotHolderEntityCenter : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - - -/* - * set attributes via inner (t=t0) knot point: - * [default] increase/decrease inner point - * [shift] increase/decrease inner and outer arg synchronizely - * [control] constrain inner arg to round per PI/4 - */ -void -SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); - - SPSpiral *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - gdouble dx = p[Geom::X] - spiral->cx; - gdouble dy = p[Geom::Y] - spiral->cy; - - gdouble moved_y = p[Geom::Y] - origin[Geom::Y]; - - if (state & GDK_MOD1_MASK) { - // adjust divergence by vertical drag, relative to rad - if (spiral->rad > 0) { - double exp_delta = 0.1*moved_y/(spiral->rad); // arbitrary multiplier to slow it down - spiral->exp += exp_delta; - if (spiral->exp < 1e-3) - spiral->exp = 1e-3; - } - } else { - // roll/unroll from inside - gdouble arg_t0; - spiral->getPolar(spiral->t0, NULL, &arg_t0); - - gdouble arg_tmp = atan2(dy, dx) - arg_t0; - gdouble arg_t0_new = arg_tmp - floor((arg_tmp+M_PI)/(2.0*M_PI))*2.0*M_PI + arg_t0; - spiral->t0 = (arg_t0_new - spiral->arg) / (2.0*M_PI*spiral->revo); - - /* round inner arg per PI/snaps, if CTRL is pressed */ - if ( ( state & GDK_CONTROL_MASK ) - && ( fabs(spiral->revo) > SP_EPSILON_2 ) - && ( snaps != 0 ) ) { - gdouble arg = 2.0*M_PI*spiral->revo*spiral->t0 + spiral->arg; - spiral->t0 = (sp_round(arg, M_PI/snaps) - spiral->arg)/(2.0*M_PI*spiral->revo); - } - - spiral->t0 = CLAMP(spiral->t0, 0.0, 0.999); - } - - spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -/* - * set attributes via outer (t=1) knot point: - * [default] increase/decrease revolution factor - * [control] constrain inner arg to round per PI/4 - */ -void -SpiralKnotHolderEntityOuter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); - - SPSpiral *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - gdouble dx = p[Geom::X] - spiral->cx; - gdouble dy = p[Geom::Y] - spiral->cy; - - if (state & GDK_SHIFT_MASK) { // rotate without roll/unroll - spiral->arg = atan2(dy, dx) - 2.0*M_PI*spiral->revo; - if (!(state & GDK_MOD1_MASK)) { - // if alt not pressed, change also rad; otherwise it is locked - spiral->rad = MAX(hypot(dx, dy), 0.001); - } - if ( ( state & GDK_CONTROL_MASK ) - && snaps ) { - spiral->arg = sp_round(spiral->arg, M_PI/snaps); - } - } else { // roll/unroll - // arg of the spiral outer end - double arg_1; - spiral->getPolar(1, NULL, &arg_1); - - // its fractional part after the whole turns are subtracted - double arg_r = arg_1 - sp_round(arg_1, 2.0*M_PI); - - // arg of the mouse point relative to spiral center - double mouse_angle = atan2(dy, dx); - if (mouse_angle < 0) - mouse_angle += 2*M_PI; - - // snap if ctrl - if ( ( state & GDK_CONTROL_MASK ) && snaps ) { - mouse_angle = sp_round(mouse_angle, M_PI/snaps); - } - - // by how much we want to rotate the outer point - double diff = mouse_angle - arg_r; - if (diff > M_PI) - diff -= 2*M_PI; - else if (diff < -M_PI) - diff += 2*M_PI; - - // calculate the new rad; - // the value of t corresponding to the angle arg_1 + diff: - double t_temp = ((arg_1 + diff) - spiral->arg)/(2*M_PI*spiral->revo); - // the rad at that t: - double rad_new = 0; - if (t_temp > spiral->t0) - spiral->getPolar(t_temp, &rad_new, NULL); - - // change the revo (converting diff from radians to the number of turns) - spiral->revo += diff/(2*M_PI); - if (spiral->revo < 1e-3) - spiral->revo = 1e-3; - - // if alt not pressed and the values are sane, change the rad - if (!(state & GDK_MOD1_MASK) && rad_new > 1e-3 && rad_new/spiral->rad < 2) { - // adjust t0 too so that the inner point stays unmoved - double r0; - spiral->getPolar(spiral->t0, &r0, NULL); - spiral->rad = rad_new; - spiral->t0 = pow(r0 / spiral->rad, 1.0/spiral->exp); - } - if (!IS_FINITE(spiral->t0)) spiral->t0 = 0.0; - spiral->t0 = CLAMP(spiral->t0, 0.0, 0.999); - } - - spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -void -SpiralKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPSpiral *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - Geom::Point const s = snap_knot_position(p, state); - - spiral->cx = s[Geom::X]; - spiral->cy = s[Geom::Y]; - - spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - -Geom::Point -SpiralKnotHolderEntityInner::knot_get() const -{ - SPSpiral const *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - return spiral->getXY(spiral->t0); -} - -Geom::Point -SpiralKnotHolderEntityOuter::knot_get() const -{ - SPSpiral const *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - return spiral->getXY(1.0); -} - -Geom::Point -SpiralKnotHolderEntityCenter::knot_get() const -{ - SPSpiral const *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - return Geom::Point(spiral->cx, spiral->cy); -} - -void -SpiralKnotHolderEntityInner::knot_click(unsigned int state) -{ - SPSpiral *spiral = dynamic_cast(item); - g_assert(spiral != NULL); - - if (state & GDK_MOD1_MASK) { - spiral->exp = 1; - spiral->updateRepr(); - } else if (state & GDK_SHIFT_MASK) { - spiral->t0 = 0; - spiral->updateRepr(); - } -} - -SpiralKnotHolder::SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - SpiralKnotHolderEntityCenter *entity_center = new SpiralKnotHolderEntityCenter(); - SpiralKnotHolderEntityInner *entity_inner = new SpiralKnotHolderEntityInner(); - SpiralKnotHolderEntityOuter *entity_outer = new SpiralKnotHolderEntityOuter(); - - // NOTE: entity_central and entity_inner can overlap. - // - // In that case it would be a problem if the center control point was ON - // TOP because it would steal the mouse focus and the user would loose the - // ability to access the inner control point using only the mouse. - // - // However if the inner control point is ON TOP, taking focus, the - // situation is a lot better: the user can still move the inner control - // point with the mouse to regain access to the center control point. - // - // So, create entity_inner AFTER entity_center; this ensures that - // entity_inner gets rendered ON TOP. - entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, - _("Drag to move the spiral"), - SP_KNOT_SHAPE_CROSS); - - entity_inner->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Roll/unroll the spiral from inside; with Ctrl to snap angle; " - "with Alt to converge/diverge")); - - entity_outer->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Roll/unroll the spiral from outside; with Ctrl to snap angle; " - "with Shift to scale/rotate; with Alt to lock radius")); - - entity.push_back(entity_center); - entity.push_back(entity_inner); - entity.push_back(entity_outer); - - add_pattern_knotholder(); -} - -/* SPOffset */ - -class OffsetKnotHolderEntity : public KnotHolderEntity { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -void -OffsetKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) -{ - SPOffset *offset = dynamic_cast(item); - g_assert(offset != NULL); - - Geom::Point const p_snapped = snap_knot_position(p, state); - - offset->rad = sp_offset_distance_to_original(offset, p_snapped); - offset->knot = p_snapped; - offset->knotSet = true; - - offset->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); -} - - -Geom::Point -OffsetKnotHolderEntity::knot_get() const -{ - SPOffset const *offset = dynamic_cast(item); - g_assert(offset != NULL); - - Geom::Point np; - sp_offset_top_point(offset,&np); - return np; -} - -OffsetKnotHolder::OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - OffsetKnotHolderEntity *entity_offset = new OffsetKnotHolderEntity(); - entity_offset->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Adjust the offset distance")); - entity.push_back(entity_offset); - - add_pattern_knotholder(); -} - -// TODO: this is derived from RectKnotHolderEntityWH because it used the same static function -// set_internal as the latter before KnotHolderEntity was C++ified. Check whether this also makes -// sense logically. -class FlowtextKnotHolderEntity : public RectKnotHolderEntityWH { -public: - virtual Geom::Point knot_get() const; - virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); -}; - -Geom::Point -FlowtextKnotHolderEntity::knot_get() const -{ - SPRect const *rect = dynamic_cast(item); - g_assert(rect != NULL); - - return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); -} - -void -FlowtextKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) -{ - set_internal(p, origin, state); -} - -FlowtextKnotHolder::FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : - KnotHolder(desktop, item, relhandler) -{ - g_assert(item != NULL); - - FlowtextKnotHolderEntity *entity_flowtext = new FlowtextKnotHolderEntity(); - entity_flowtext->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, - _("Drag to resize the flowed text frame")); - entity.push_back(entity_flowtext); -} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/object-edit.h b/src/ui/object-edit.h deleted file mode 100644 index 75f3ce12b..000000000 --- a/src/ui/object-edit.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef OBJECT_EDIT_H_SEEN -#define OBJECT_EDIT_H_SEEN - -/* - * Node editing extension to objects - * - * Authors: - * Lauris Kaplinski - * Mitsuru Oka - * Jon A. Cruz - * - * Licensed under GNU GPL - */ - -#include "knotholder.h" - -namespace Inkscape { -namespace UI { - -KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop); - -} -} - -class RectKnotHolder : public KnotHolder { -public: - RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~RectKnotHolder() {}; -}; - -class Box3DKnotHolder : public KnotHolder { -public: - Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~Box3DKnotHolder() {}; -}; - -class ArcKnotHolder : public KnotHolder { -public: - ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~ArcKnotHolder() {}; -}; - -class StarKnotHolder : public KnotHolder { -public: - StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~StarKnotHolder() {}; -}; - -class SpiralKnotHolder : public KnotHolder { -public: - SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~SpiralKnotHolder() {}; -}; - -class OffsetKnotHolder : public KnotHolder { -public: - OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~OffsetKnotHolder() {}; -}; - -class FlowtextKnotHolder : public KnotHolder { -public: - FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~FlowtextKnotHolder() {}; -}; - -class MiscKnotHolder : public KnotHolder { -public: - MiscKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); - virtual ~MiscKnotHolder() {}; -}; - -#endif // OBJECT_EDIT_H_SEEN - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/shape-editor-knotholders.cpp b/src/ui/shape-editor-knotholders.cpp new file mode 100644 index 000000000..b2e41bac4 --- /dev/null +++ b/src/ui/shape-editor-knotholders.cpp @@ -0,0 +1,1666 @@ +/* + * Node editing extension to objects + * + * Authors: + * Lauris Kaplinski + * Mitsuru Oka + * Maximilian Albert + * Abhishek Sharma + * Jon A. Cruz + * + * Licensed under GNU GPL + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "sp-item.h" +#include "sp-rect.h" +#include "box3d.h" +#include "sp-ellipse.h" +#include "sp-star.h" +#include "sp-spiral.h" +#include "sp-offset.h" +#include "sp-flowtext.h" +#include "preferences.h" +#include "style.h" +#include "desktop.h" + +#include "sp-namedview.h" +#include "live_effects/effect.h" +#include "sp-pattern.h" +#include +#include "knotholder.h" +#include "knot-holder-entity.h" + +#define sp_round(v,m) (((v) < 0.0) ? ((ceil((v) / (m) - 0.5)) * (m)) : ((floor((v) / (m) + 0.5)) * (m))) + +class RectKnotHolder : public KnotHolder { +public: + RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~RectKnotHolder() {}; +}; + +class Box3DKnotHolder : public KnotHolder { +public: + Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~Box3DKnotHolder() {}; +}; + +class ArcKnotHolder : public KnotHolder { +public: + ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~ArcKnotHolder() {}; +}; + +class StarKnotHolder : public KnotHolder { +public: + StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~StarKnotHolder() {}; +}; + +class SpiralKnotHolder : public KnotHolder { +public: + SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~SpiralKnotHolder() {}; +}; + +class OffsetKnotHolder : public KnotHolder { +public: + OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~OffsetKnotHolder() {}; +}; + +class FlowtextKnotHolder : public KnotHolder { +public: + FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~FlowtextKnotHolder() {}; +}; + +class MiscKnotHolder : public KnotHolder { +public: + MiscKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler); + virtual ~MiscKnotHolder() {}; +}; + +namespace { + +static KnotHolder *sp_lpe_knot_holder(SPLPEItem *item, SPDesktop *desktop) +{ + KnotHolder *knot_holder = new KnotHolder(desktop, item, NULL); + + Inkscape::LivePathEffect::Effect *effect = item->getCurrentLPE(); + effect->addHandles(knot_holder, item); + + return knot_holder; +} + +} // namespace + +namespace Inkscape { +namespace UI { + +KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop) +{ + KnotHolder *knotholder = NULL; + + SPLPEItem *lpe = dynamic_cast(item); + if (lpe && + lpe->getCurrentLPE() && + lpe->getCurrentLPE()->isVisible() && + lpe->getCurrentLPE()->providesKnotholder()) { + knotholder = sp_lpe_knot_holder(lpe, desktop); + } else if (dynamic_cast(item)) { + knotholder = new RectKnotHolder(desktop, item, NULL); + } else if (dynamic_cast(item)) { + knotholder = new Box3DKnotHolder(desktop, item, NULL); + } else if (dynamic_cast(item)) { + knotholder = new ArcKnotHolder(desktop, item, NULL); + } else if (dynamic_cast(item)) { + knotholder = new StarKnotHolder(desktop, item, NULL); + } else if (dynamic_cast(item)) { + knotholder = new SpiralKnotHolder(desktop, item, NULL); + } else if (dynamic_cast(item)) { + knotholder = new OffsetKnotHolder(desktop, item, NULL); + } else { + SPFlowtext *flowtext = dynamic_cast(item); + if (flowtext && flowtext->has_internal_frame()) { + knotholder = new FlowtextKnotHolder(desktop, flowtext->get_frame(NULL), NULL); + } else if ((item->style->fill.isPaintserver() && dynamic_cast(item->style->getFillPaintServer())) || + (item->style->stroke.isPaintserver() && dynamic_cast(item->style->getStrokePaintServer()))) { + knotholder = new KnotHolder(desktop, item, NULL); + knotholder->add_pattern_knotholder(); + } + } + + return knotholder; +} + +} +} // namespace Inkscape + +/* SPRect */ + +/* handle for horizontal rounding radius */ +class RectKnotHolderEntityRX : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +/* handle for vertical rounding radius */ +class RectKnotHolderEntityRY : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +/* handle for width/height adjustment */ +class RectKnotHolderEntityWH : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + +protected: + void set_internal(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +/* handle for x/y adjustment */ +class RectKnotHolderEntityXY : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +/* handle for position */ +class RectKnotHolderEntityCenter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +Geom::Point +RectKnotHolderEntityRX::knot_get() const +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed + rect->width.computed - rect->rx.computed, rect->y.computed); +} + +void +RectKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + //In general we cannot just snap this radius to an arbitrary point, as we have only a single + //degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap + //the radius then we should have a constrained snap. snap_knot_position() is unconstrained + Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(-1, 0)), state); + + if (state & GDK_CONTROL_MASK) { + gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0; + rect->rx = rect->ry = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, temp); + } else { + rect->rx = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, rect->width.computed / 2.0); + } + + update_knot(); + + rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void +RectKnotHolderEntityRX::knot_click(unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + if (state & GDK_SHIFT_MASK) { + /* remove rounding from rectangle */ + rect->getRepr()->setAttribute("rx", NULL); + rect->getRepr()->setAttribute("ry", NULL); + } else if (state & GDK_CONTROL_MASK) { + /* Ctrl-click sets the vertical rounding to be the same as the horizontal */ + rect->getRepr()->setAttribute("ry", rect->getRepr()->attribute("rx")); + } + +} + +Geom::Point +RectKnotHolderEntityRY::knot_get() const +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->ry.computed); +} + +void +RectKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + //In general we cannot just snap this radius to an arbitrary point, as we have only a single + //degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap + //the radius then we should have a constrained snap. snap_knot_position() is unconstrained + Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(0, 1)), state); + + if (state & GDK_CONTROL_MASK) { // When holding control then rx will be kept equal to ry, + // resulting in a perfect circle (and not an ellipse) + gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0; + rect->rx = rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, 0.0, temp); + } else { + if (!rect->rx._set || rect->rx.computed == 0) { + rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, + 0.0, + MIN(rect->height.computed / 2.0, rect->width.computed / 2.0)); + } else { + rect->ry = CLAMP(s[Geom::Y] - rect->y.computed, + 0.0, + rect->height.computed / 2.0); + } + } + + update_knot(); + + rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void +RectKnotHolderEntityRY::knot_click(unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + if (state & GDK_SHIFT_MASK) { + /* remove rounding */ + rect->getRepr()->setAttribute("rx", NULL); + rect->getRepr()->setAttribute("ry", NULL); + } else if (state & GDK_CONTROL_MASK) { + /* Ctrl-click sets the vertical rounding to be the same as the horizontal */ + rect->getRepr()->setAttribute("rx", rect->getRepr()->attribute("ry")); + } +} + +#define SGN(x) ((x)>0?1:((x)<0?-1:0)) + +static void sp_rect_clamp_radii(SPRect *rect) +{ + // clamp rounding radii so that they do not exceed width/height + if (2 * rect->rx.computed > rect->width.computed) { + rect->rx = 0.5 * rect->width.computed; + } + if (2 * rect->ry.computed > rect->height.computed) { + rect->ry = 0.5 * rect->height.computed; + } +} + +Geom::Point +RectKnotHolderEntityWH::knot_get() const +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); +} + +void +RectKnotHolderEntityWH::set_internal(Geom::Point const &p, Geom::Point const &origin, unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + Geom::Point s = p; + + if (state & GDK_CONTROL_MASK) { + // original width/height when drag started + gdouble const w_orig = (origin[Geom::X] - rect->x.computed); + gdouble const h_orig = (origin[Geom::Y] - rect->y.computed); + + //original ratio + gdouble ratio = (w_orig / h_orig); + + // mouse displacement since drag started + gdouble minx = p[Geom::X] - origin[Geom::X]; + gdouble miny = p[Geom::Y] - origin[Geom::Y]; + + Geom::Point p_handle(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); + + if (fabs(minx) > fabs(miny)) { + // snap to horizontal or diagonal + if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) { + // closer to the diagonal and in same-sign quarters, change both using ratio + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); + minx = s[Geom::X] - origin[Geom::X]; + // Dead assignment: Value stored to 'miny' is never read + //miny = s[Geom::Y] - origin[Geom::Y]; + rect->height = MAX(h_orig + minx / ratio, 0); + } else { + // closer to the horizontal, change only width, height is h_orig + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-1, 0)), state); + minx = s[Geom::X] - origin[Geom::X]; + // Dead assignment: Value stored to 'miny' is never read + //miny = s[Geom::Y] - origin[Geom::Y]; + rect->height = MAX(h_orig, 0); + } + rect->width = MAX(w_orig + minx, 0); + + } else { + // snap to vertical or diagonal + if (miny != 0 && fabs(minx/miny) > 0.5 * ratio && (SGN(minx) == SGN(miny))) { + // closer to the diagonal and in same-sign quarters, change both using ratio + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); + // Dead assignment: Value stored to 'minx' is never read + //minx = s[Geom::X] - origin[Geom::X]; + miny = s[Geom::Y] - origin[Geom::Y]; + rect->width = MAX(w_orig + miny * ratio, 0); + } else { + // closer to the vertical, change only height, width is w_orig + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(0, -1)), state); + // Dead assignment: Value stored to 'minx' is never read + //minx = s[Geom::X] - origin[Geom::X]; + miny = s[Geom::Y] - origin[Geom::Y]; + rect->width = MAX(w_orig, 0); + } + rect->height = MAX(h_orig + miny, 0); + + } + + } else { + // move freely + s = snap_knot_position(p, state); + rect->width = MAX(s[Geom::X] - rect->x.computed, 0); + rect->height = MAX(s[Geom::Y] - rect->y.computed, 0); + } + + sp_rect_clamp_radii(rect); + + rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void +RectKnotHolderEntityWH::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) +{ + set_internal(p, origin, state); + update_knot(); +} + +Geom::Point +RectKnotHolderEntityXY::knot_get() const +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed, rect->y.computed); +} + +void +RectKnotHolderEntityXY::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + // opposite corner (unmoved) + gdouble opposite_x = (rect->x.computed + rect->width.computed); + gdouble opposite_y = (rect->y.computed + rect->height.computed); + + // original width/height when drag started + gdouble w_orig = opposite_x - origin[Geom::X]; + gdouble h_orig = opposite_y - origin[Geom::Y]; + + Geom::Point s = p; + Geom::Point p_handle(rect->x.computed, rect->y.computed); + + // mouse displacement since drag started + gdouble minx = p[Geom::X] - origin[Geom::X]; + gdouble miny = p[Geom::Y] - origin[Geom::Y]; + + if (state & GDK_CONTROL_MASK) { + //original ratio + gdouble ratio = (w_orig / h_orig); + + if (fabs(minx) > fabs(miny)) { + // snap to horizontal or diagonal + if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) { + // closer to the diagonal and in same-sign quarters, change both using ratio + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); + minx = s[Geom::X] - origin[Geom::X]; + // Dead assignment: Value stored to 'miny' is never read + //miny = s[Geom::Y] - origin[Geom::Y]; + rect->y = MIN(origin[Geom::Y] + minx / ratio, opposite_y); + rect->height = MAX(h_orig - minx / ratio, 0); + } else { + // closer to the horizontal, change only width, height is h_orig + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-1, 0)), state); + minx = s[Geom::X] - origin[Geom::X]; + // Dead assignment: Value stored to 'miny' is never read + //miny = s[Geom::Y] - origin[Geom::Y]; + rect->y = MIN(origin[Geom::Y], opposite_y); + rect->height = MAX(h_orig, 0); + } + rect->x = MIN(s[Geom::X], opposite_x); + rect->width = MAX(w_orig - minx, 0); + } else { + // snap to vertical or diagonal + if (miny != 0 && fabs(minx/miny) > 0.5 *ratio && (SGN(minx) == SGN(miny))) { + // closer to the diagonal and in same-sign quarters, change both using ratio + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(-ratio, -1)), state); + // Dead assignment: Value stored to 'minx' is never read + //minx = s[Geom::X] - origin[Geom::X]; + miny = s[Geom::Y] - origin[Geom::Y]; + rect->x = MIN(origin[Geom::X] + miny * ratio, opposite_x); + rect->width = MAX(w_orig - miny * ratio, 0); + } else { + // closer to the vertical, change only height, width is w_orig + s = snap_knot_position_constrained(p, Inkscape::Snapper::SnapConstraint(p_handle, Geom::Point(0, -1)), state); + // Dead assignment: Value stored to 'minx' is never read + //minx = s[Geom::X] - origin[Geom::X]; + miny = s[Geom::Y] - origin[Geom::Y]; + rect->x = MIN(origin[Geom::X], opposite_x); + rect->width = MAX(w_orig, 0); + } + rect->y = MIN(s[Geom::Y], opposite_y); + rect->height = MAX(h_orig - miny, 0); + } + + } else { + // move freely + s = snap_knot_position(p, state); + minx = s[Geom::X] - origin[Geom::X]; + miny = s[Geom::Y] - origin[Geom::Y]; + + rect->x = MIN(s[Geom::X], opposite_x); + rect->y = MIN(s[Geom::Y], opposite_y); + rect->width = MAX(w_orig - minx, 0); + rect->height = MAX(h_orig - miny, 0); + } + + sp_rect_clamp_radii(rect); + + update_knot(); + + rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +RectKnotHolderEntityCenter::knot_get() const +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed + (rect->width.computed / 2.), rect->y.computed + (rect->height.computed / 2.)); +} + +void +RectKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPRect *rect = dynamic_cast(item); + g_assert(rect != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + rect->x = s[Geom::X] - (rect->width.computed / 2.); + rect->y = s[Geom::Y] - (rect->height.computed / 2.); + + // No need to call sp_rect_clamp_radii(): width and height haven't changed. + // No need to call update_knot(): the knot is set directly by the user. + + rect->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +RectKnotHolder::RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + RectKnotHolderEntityRX *entity_rx = new RectKnotHolderEntityRX(); + RectKnotHolderEntityRY *entity_ry = new RectKnotHolderEntityRY(); + RectKnotHolderEntityWH *entity_wh = new RectKnotHolderEntityWH(); + RectKnotHolderEntityXY *entity_xy = new RectKnotHolderEntityXY(); + RectKnotHolderEntityCenter *entity_center = new RectKnotHolderEntityCenter(); + + entity_rx->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, + _("Adjust the horizontal rounding radius; with Ctrl " + "to make the vertical radius the same"), + SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); + + entity_ry->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, + _("Adjust the vertical rounding radius; with Ctrl " + "to make the horizontal radius the same"), + SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); + + entity_wh->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, + _("Adjust the width and height of the rectangle; with Ctrl " + "to lock ratio or stretch in one dimension only"), + SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); + + entity_xy->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, + _("Adjust the width and height of the rectangle; with Ctrl " + "to lock ratio or stretch in one dimension only"), + SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); + + entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, + _("Drag to move the rectangle"), + SP_KNOT_SHAPE_CROSS); + + entity.push_back(entity_rx); + entity.push_back(entity_ry); + entity.push_back(entity_wh); + entity.push_back(entity_xy); + entity.push_back(entity_center); + + add_pattern_knotholder(); +} + +/* Box3D (= the new 3D box structure) */ + +class Box3DKnotHolderEntity : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const = 0; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) = 0; + + Geom::Point knot_get_generic(SPItem *item, unsigned int knot_id) const; + void knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &p, unsigned int state); +}; + +Geom::Point +Box3DKnotHolderEntity::knot_get_generic(SPItem *item, unsigned int knot_id) const +{ + SPBox3D *box = dynamic_cast(item); + if (box) { + return box3d_get_corner_screen(box, knot_id); + } else { + return Geom::Point(); // TODO investigate proper fallback + } +} + +void +Box3DKnotHolderEntity::knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &new_pos, unsigned int state) +{ + Geom::Point const s = snap_knot_position(new_pos, state); + + g_assert(item != NULL); + SPBox3D *box = dynamic_cast(item); + g_assert(box != NULL); + Geom::Affine const i2dt (item->i2dt_affine ()); + + Box3D::Axis movement; + if ((knot_id < 4) != (state & GDK_SHIFT_MASK)) { + movement = Box3D::XY; + } else { + movement = Box3D::Z; + } + + box3d_set_corner (box, knot_id, s * i2dt, movement, (state & GDK_CONTROL_MASK)); + box3d_set_z_orders(box); + box3d_position_set(box); +} + +class Box3DKnotHolderEntity0 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity1 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity2 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity3 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity4 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity5 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity6 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntity7 : public Box3DKnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class Box3DKnotHolderEntityCenter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +Geom::Point +Box3DKnotHolderEntity0::knot_get() const +{ + return knot_get_generic(item, 0); +} + +Geom::Point +Box3DKnotHolderEntity1::knot_get() const +{ + return knot_get_generic(item, 1); +} + +Geom::Point +Box3DKnotHolderEntity2::knot_get() const +{ + return knot_get_generic(item, 2); +} + +Geom::Point +Box3DKnotHolderEntity3::knot_get() const +{ + return knot_get_generic(item, 3); +} + +Geom::Point +Box3DKnotHolderEntity4::knot_get() const +{ + return knot_get_generic(item, 4); +} + +Geom::Point +Box3DKnotHolderEntity5::knot_get() const +{ + return knot_get_generic(item, 5); +} + +Geom::Point +Box3DKnotHolderEntity6::knot_get() const +{ + return knot_get_generic(item, 6); +} + +Geom::Point +Box3DKnotHolderEntity7::knot_get() const +{ + return knot_get_generic(item, 7); +} + +Geom::Point +Box3DKnotHolderEntityCenter::knot_get() const +{ + SPBox3D *box = dynamic_cast(item); + if (box) { + return box3d_get_center_screen(box); + } else { + return Geom::Point(); // TODO investigate proper fallback + } +} + +void +Box3DKnotHolderEntity0::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 0, new_pos, state); +} + +void +Box3DKnotHolderEntity1::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 1, new_pos, state); +} + +void +Box3DKnotHolderEntity2::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 2, new_pos, state); +} + +void +Box3DKnotHolderEntity3::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 3, new_pos, state); +} + +void +Box3DKnotHolderEntity4::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 4, new_pos, state); +} + +void +Box3DKnotHolderEntity5::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 5, new_pos, state); +} + +void +Box3DKnotHolderEntity6::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 6, new_pos, state); +} + +void +Box3DKnotHolderEntity7::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, unsigned int state) +{ + knot_set_generic(item, 7, new_pos, state); +} + +void +Box3DKnotHolderEntityCenter::knot_set(Geom::Point const &new_pos, Geom::Point const &origin, unsigned int state) +{ + Geom::Point const s = snap_knot_position(new_pos, state); + + SPBox3D *box = dynamic_cast(item); + g_assert(box != NULL); + Geom::Affine const i2dt (item->i2dt_affine ()); + + box3d_set_center(box, s * i2dt, origin * i2dt, !(state & GDK_SHIFT_MASK) ? Box3D::XY : Box3D::Z, + state & GDK_CONTROL_MASK); + + box3d_set_z_orders(box); + box3d_position_set(box); +} + +Box3DKnotHolder::Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + Box3DKnotHolderEntity0 *entity_corner0 = new Box3DKnotHolderEntity0(); + Box3DKnotHolderEntity1 *entity_corner1 = new Box3DKnotHolderEntity1(); + Box3DKnotHolderEntity2 *entity_corner2 = new Box3DKnotHolderEntity2(); + Box3DKnotHolderEntity3 *entity_corner3 = new Box3DKnotHolderEntity3(); + Box3DKnotHolderEntity4 *entity_corner4 = new Box3DKnotHolderEntity4(); + Box3DKnotHolderEntity5 *entity_corner5 = new Box3DKnotHolderEntity5(); + Box3DKnotHolderEntity6 *entity_corner6 = new Box3DKnotHolderEntity6(); + Box3DKnotHolderEntity7 *entity_corner7 = new Box3DKnotHolderEntity7(); + Box3DKnotHolderEntityCenter *entity_center = new Box3DKnotHolderEntityCenter(); + + entity_corner0->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box in X/Y direction; with Shift along the Z axis; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner1->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box in X/Y direction; with Shift along the Z axis; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner2->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box in X/Y direction; with Shift along the Z axis; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner3->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box in X/Y direction; with Shift along the Z axis; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner4->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box along the Z axis; with Shift in X/Y direction; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner5->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box along the Z axis; with Shift in X/Y direction; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner6->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box along the Z axis; with Shift in X/Y direction; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_corner7->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Resize box along the Z axis; with Shift in X/Y direction; " + "with Ctrl to constrain to the directions of edges or diagonals")); + + entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, + _("Move the box in perspective"), + SP_KNOT_SHAPE_CROSS); + + entity.push_back(entity_corner0); + entity.push_back(entity_corner1); + entity.push_back(entity_corner2); + entity.push_back(entity_corner3); + entity.push_back(entity_corner4); + entity.push_back(entity_corner5); + entity.push_back(entity_corner6); + entity.push_back(entity_corner7); + entity.push_back(entity_center); + + add_pattern_knotholder(); +} + +/* SPArc */ + +class ArcKnotHolderEntityStart : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class ArcKnotHolderEntityEnd : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class ArcKnotHolderEntityRX : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class ArcKnotHolderEntityRY : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class ArcKnotHolderEntityCenter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +/* + * return values: + * 1 : inside + * 0 : on the curves + * -1 : outside + */ +static gint +sp_genericellipse_side(SPGenericEllipse *ellipse, Geom::Point const &p) +{ + gdouble dx = (p[Geom::X] - ellipse->cx.computed) / ellipse->rx.computed; + gdouble dy = (p[Geom::Y] - ellipse->cy.computed) / ellipse->ry.computed; + + gdouble s = dx * dx + dy * dy; + // We add a bit of a buffer, so there's a decent chance the user will + // be able to adjust the arc without the closed status flipping between + // open and closed during micro mouse movements. + if (s < 0.75) return 1; + if (s > 1.25) return -1; + return 0; +} + +void +ArcKnotHolderEntityStart::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + int snaps = Inkscape::Preferences::get()->getInt("/options/rotationsnapsperpi/value", 12); + + SPGenericEllipse *arc = dynamic_cast(item); + g_assert(arc != NULL); + + gint side = sp_genericellipse_side(arc, p); + if(side != 0) { arc->setArcType( (side == -1) ? + SP_GENERIC_ELLIPSE_ARC_TYPE_SLICE : + SP_GENERIC_ELLIPSE_ARC_TYPE_ARC); } + + Geom::Point delta = p - Geom::Point(arc->cx.computed, arc->cy.computed); + Geom::Scale sc(arc->rx.computed, arc->ry.computed); + + double offset = arc->start - atan2(delta * sc.inverse()); + arc->start -= offset; + + if ((state & GDK_CONTROL_MASK) && snaps) { + arc->start = sp_round(arc->start, M_PI / snaps); + } + if (state & GDK_SHIFT_MASK) { + arc->end -= offset; + } + + arc->normalize(); + arc->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +ArcKnotHolderEntityStart::knot_get() const +{ + SPGenericEllipse const *ge = dynamic_cast(item); + g_assert(ge != NULL); + + return ge->getPointAtAngle(ge->start); +} + +void +ArcKnotHolderEntityStart::knot_click(unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + if (state & GDK_SHIFT_MASK) { + ge->end = ge->start = 0; + ge->updateRepr(); + } +} + +void +ArcKnotHolderEntityEnd::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + int snaps = Inkscape::Preferences::get()->getInt("/options/rotationsnapsperpi/value", 12); + + SPGenericEllipse *arc = dynamic_cast(item); + g_assert(arc != NULL); + + gint side = sp_genericellipse_side(arc, p); + if(side != 0) { arc->setArcType( (side == -1) ? + SP_GENERIC_ELLIPSE_ARC_TYPE_SLICE : + SP_GENERIC_ELLIPSE_ARC_TYPE_ARC); } + + Geom::Point delta = p - Geom::Point(arc->cx.computed, arc->cy.computed); + Geom::Scale sc(arc->rx.computed, arc->ry.computed); + + double offset = arc->end - atan2(delta * sc.inverse()); + arc->end -= offset; + + if ((state & GDK_CONTROL_MASK) && snaps) { + arc->end = sp_round(arc->end, M_PI/snaps); + } + if (state & GDK_SHIFT_MASK) { + arc->start -= offset; + } + + arc->normalize(); + arc->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +ArcKnotHolderEntityEnd::knot_get() const +{ + SPGenericEllipse const *ge = dynamic_cast(item); + g_assert(ge != NULL); + + return ge->getPointAtAngle(ge->end); +} + + +void +ArcKnotHolderEntityEnd::knot_click(unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + if (state & GDK_SHIFT_MASK) { + ge->end = ge->start = 0; + ge->updateRepr(); + } +} + + +void +ArcKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + ge->rx = fabs( ge->cx.computed - s[Geom::X] ); + + if ( state & GDK_CONTROL_MASK ) { + ge->ry = ge->rx.computed; + } + + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +ArcKnotHolderEntityRX::knot_get() const +{ + SPGenericEllipse const *ge = dynamic_cast(item); + g_assert(ge != NULL); + + return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(ge->rx.computed, 0)); +} + +void +ArcKnotHolderEntityRX::knot_click(unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + if (state & GDK_CONTROL_MASK) { + ge->ry = ge->rx.computed; + ge->updateRepr(); + } +} + +void +ArcKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + ge->ry = fabs( ge->cy.computed - s[Geom::Y] ); + + if ( state & GDK_CONTROL_MASK ) { + ge->rx = ge->ry.computed; + } + + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +ArcKnotHolderEntityRY::knot_get() const +{ + SPGenericEllipse const *ge = dynamic_cast(item); + g_assert(ge != NULL); + + return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(0, ge->ry.computed)); +} + +void +ArcKnotHolderEntityRY::knot_click(unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + if (state & GDK_CONTROL_MASK) { + ge->rx = ge->ry.computed; + ge->updateRepr(); + } +} + +void +ArcKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPGenericEllipse *ge = dynamic_cast(item); + g_assert(ge != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + ge->cx = s[Geom::X]; + ge->cy = s[Geom::Y]; + + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +ArcKnotHolderEntityCenter::knot_get() const +{ + SPGenericEllipse const *ge = dynamic_cast(item); + g_assert(ge != NULL); + + return Geom::Point(ge->cx.computed, ge->cy.computed); +} + + +ArcKnotHolder::ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + ArcKnotHolderEntityRX *entity_rx = new ArcKnotHolderEntityRX(); + ArcKnotHolderEntityRY *entity_ry = new ArcKnotHolderEntityRY(); + ArcKnotHolderEntityStart *entity_start = new ArcKnotHolderEntityStart(); + ArcKnotHolderEntityEnd *entity_end = new ArcKnotHolderEntityEnd(); + ArcKnotHolderEntityCenter *entity_center = new ArcKnotHolderEntityCenter(); + + entity_rx->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, + _("Adjust ellipse width, with Ctrl to make circle"), + SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); + + entity_ry->create(desktop, item, this, Inkscape::CTRL_TYPE_SIZER, + _("Adjust ellipse height, with Ctrl to make circle"), + SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR); + + entity_start->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, + _("Position the start point of the arc or segment; with Shift to move " + "with end point; with Ctrl to snap angle; drag inside the " + "ellipse for arc, outside for segment"), + SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); + + entity_end->create(desktop, item, this, Inkscape::CTRL_TYPE_ROTATE, + _("Position the end point of the arc or segment; with Shift to move " + "with start point; with Ctrl to snap angle; drag inside the " + "ellipse for arc, outside for segment"), + SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR); + + entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, + _("Drag to move the ellipse"), + SP_KNOT_SHAPE_CROSS); + + entity.push_back(entity_rx); + entity.push_back(entity_ry); + entity.push_back(entity_start); + entity.push_back(entity_end); + entity.push_back(entity_center); + + add_pattern_knotholder(); +} + +/* SPStar */ + +class StarKnotHolderEntity1 : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class StarKnotHolderEntity2 : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class StarKnotHolderEntityCenter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +void +StarKnotHolderEntity1::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPStar *star = dynamic_cast(item); + g_assert(star != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + Geom::Point d = s - star->center; + + double arg1 = atan2(d); + double darg1 = arg1 - star->arg[0]; + + if (state & GDK_MOD1_MASK) { + star->randomized = darg1/(star->arg[0] - star->arg[1]); + } else if (state & GDK_SHIFT_MASK) { + star->rounded = darg1/(star->arg[0] - star->arg[1]); + } else if (state & GDK_CONTROL_MASK) { + star->r[0] = L2(d); + } else { + star->r[0] = L2(d); + star->arg[0] = arg1; + star->arg[1] += darg1; + } + star->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void +StarKnotHolderEntity2::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPStar *star = dynamic_cast(item); + g_assert(star != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + if (star->flatsided == false) { + Geom::Point d = s - star->center; + + double arg1 = atan2(d); + double darg1 = arg1 - star->arg[1]; + + if (state & GDK_MOD1_MASK) { + star->randomized = darg1/(star->arg[0] - star->arg[1]); + } else if (state & GDK_SHIFT_MASK) { + star->rounded = fabs(darg1/(star->arg[0] - star->arg[1])); + } else if (state & GDK_CONTROL_MASK) { + star->r[1] = L2(d); + star->arg[1] = star->arg[0] + M_PI / star->sides; + } + else { + star->r[1] = L2(d); + star->arg[1] = atan2(d); + } + star->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } +} + +void +StarKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPStar *star = dynamic_cast(item); + g_assert(star != NULL); + + star->center = snap_knot_position(p, state); + + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +StarKnotHolderEntity1::knot_get() const +{ + g_assert(item != NULL); + + SPStar const *star = dynamic_cast(item); + g_assert(star != NULL); + + return sp_star_get_xy(star, SP_STAR_POINT_KNOT1, 0); + +} + +Geom::Point +StarKnotHolderEntity2::knot_get() const +{ + g_assert(item != NULL); + + SPStar const *star = dynamic_cast(item); + g_assert(star != NULL); + + return sp_star_get_xy(star, SP_STAR_POINT_KNOT2, 0); +} + +Geom::Point +StarKnotHolderEntityCenter::knot_get() const +{ + g_assert(item != NULL); + + SPStar const *star = dynamic_cast(item); + g_assert(star != NULL); + + return star->center; +} + +static void +sp_star_knot_click(SPItem *item, unsigned int state) +{ + SPStar *star = dynamic_cast(item); + g_assert(star != NULL); + + if (state & GDK_MOD1_MASK) { + star->randomized = 0; + star->updateRepr(); + } else if (state & GDK_SHIFT_MASK) { + star->rounded = 0; + star->updateRepr(); + } else if (state & GDK_CONTROL_MASK) { + star->arg[1] = star->arg[0] + M_PI / star->sides; + star->updateRepr(); + } +} + +void +StarKnotHolderEntity1::knot_click(unsigned int state) +{ + sp_star_knot_click(item, state); +} + +void +StarKnotHolderEntity2::knot_click(unsigned int state) +{ + sp_star_knot_click(item, state); +} + +StarKnotHolder::StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + SPStar *star = dynamic_cast(item); + g_assert(item != NULL); + + StarKnotHolderEntity1 *entity1 = new StarKnotHolderEntity1(); + entity1->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Adjust the tip radius of the star or polygon; " + "with Shift to round; with Alt to randomize")); + + entity.push_back(entity1); + + if (star->flatsided == false) { + StarKnotHolderEntity2 *entity2 = new StarKnotHolderEntity2(); + entity2->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Adjust the base radius of the star; with Ctrl to keep star rays " + "radial (no skew); with Shift to round; with Alt to randomize")); + entity.push_back(entity2); + } + + StarKnotHolderEntityCenter *entity_center = new StarKnotHolderEntityCenter(); + entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, + _("Drag to move the star"), + SP_KNOT_SHAPE_CROSS); + entity.push_back(entity_center); + + add_pattern_knotholder(); +} + +/* SPSpiral */ + +class SpiralKnotHolderEntityInner : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); + virtual void knot_click(unsigned int state); +}; + +class SpiralKnotHolderEntityOuter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +class SpiralKnotHolderEntityCenter : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + + +/* + * set attributes via inner (t=t0) knot point: + * [default] increase/decrease inner point + * [shift] increase/decrease inner and outer arg synchronizely + * [control] constrain inner arg to round per PI/4 + */ +void +SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); + + SPSpiral *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + gdouble dx = p[Geom::X] - spiral->cx; + gdouble dy = p[Geom::Y] - spiral->cy; + + gdouble moved_y = p[Geom::Y] - origin[Geom::Y]; + + if (state & GDK_MOD1_MASK) { + // adjust divergence by vertical drag, relative to rad + if (spiral->rad > 0) { + double exp_delta = 0.1*moved_y/(spiral->rad); // arbitrary multiplier to slow it down + spiral->exp += exp_delta; + if (spiral->exp < 1e-3) + spiral->exp = 1e-3; + } + } else { + // roll/unroll from inside + gdouble arg_t0; + spiral->getPolar(spiral->t0, NULL, &arg_t0); + + gdouble arg_tmp = atan2(dy, dx) - arg_t0; + gdouble arg_t0_new = arg_tmp - floor((arg_tmp+M_PI)/(2.0*M_PI))*2.0*M_PI + arg_t0; + spiral->t0 = (arg_t0_new - spiral->arg) / (2.0*M_PI*spiral->revo); + + /* round inner arg per PI/snaps, if CTRL is pressed */ + if ( ( state & GDK_CONTROL_MASK ) + && ( fabs(spiral->revo) > SP_EPSILON_2 ) + && ( snaps != 0 ) ) { + gdouble arg = 2.0*M_PI*spiral->revo*spiral->t0 + spiral->arg; + spiral->t0 = (sp_round(arg, M_PI/snaps) - spiral->arg)/(2.0*M_PI*spiral->revo); + } + + spiral->t0 = CLAMP(spiral->t0, 0.0, 0.999); + } + + spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +/* + * set attributes via outer (t=1) knot point: + * [default] increase/decrease revolution factor + * [control] constrain inner arg to round per PI/4 + */ +void +SpiralKnotHolderEntityOuter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); + + SPSpiral *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + gdouble dx = p[Geom::X] - spiral->cx; + gdouble dy = p[Geom::Y] - spiral->cy; + + if (state & GDK_SHIFT_MASK) { // rotate without roll/unroll + spiral->arg = atan2(dy, dx) - 2.0*M_PI*spiral->revo; + if (!(state & GDK_MOD1_MASK)) { + // if alt not pressed, change also rad; otherwise it is locked + spiral->rad = MAX(hypot(dx, dy), 0.001); + } + if ( ( state & GDK_CONTROL_MASK ) + && snaps ) { + spiral->arg = sp_round(spiral->arg, M_PI/snaps); + } + } else { // roll/unroll + // arg of the spiral outer end + double arg_1; + spiral->getPolar(1, NULL, &arg_1); + + // its fractional part after the whole turns are subtracted + double arg_r = arg_1 - sp_round(arg_1, 2.0*M_PI); + + // arg of the mouse point relative to spiral center + double mouse_angle = atan2(dy, dx); + if (mouse_angle < 0) + mouse_angle += 2*M_PI; + + // snap if ctrl + if ( ( state & GDK_CONTROL_MASK ) && snaps ) { + mouse_angle = sp_round(mouse_angle, M_PI/snaps); + } + + // by how much we want to rotate the outer point + double diff = mouse_angle - arg_r; + if (diff > M_PI) + diff -= 2*M_PI; + else if (diff < -M_PI) + diff += 2*M_PI; + + // calculate the new rad; + // the value of t corresponding to the angle arg_1 + diff: + double t_temp = ((arg_1 + diff) - spiral->arg)/(2*M_PI*spiral->revo); + // the rad at that t: + double rad_new = 0; + if (t_temp > spiral->t0) + spiral->getPolar(t_temp, &rad_new, NULL); + + // change the revo (converting diff from radians to the number of turns) + spiral->revo += diff/(2*M_PI); + if (spiral->revo < 1e-3) + spiral->revo = 1e-3; + + // if alt not pressed and the values are sane, change the rad + if (!(state & GDK_MOD1_MASK) && rad_new > 1e-3 && rad_new/spiral->rad < 2) { + // adjust t0 too so that the inner point stays unmoved + double r0; + spiral->getPolar(spiral->t0, &r0, NULL); + spiral->rad = rad_new; + spiral->t0 = pow(r0 / spiral->rad, 1.0/spiral->exp); + } + if (!IS_FINITE(spiral->t0)) spiral->t0 = 0.0; + spiral->t0 = CLAMP(spiral->t0, 0.0, 0.999); + } + + spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +void +SpiralKnotHolderEntityCenter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPSpiral *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + Geom::Point const s = snap_knot_position(p, state); + + spiral->cx = s[Geom::X]; + spiral->cy = s[Geom::Y]; + + spiral->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + +Geom::Point +SpiralKnotHolderEntityInner::knot_get() const +{ + SPSpiral const *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + return spiral->getXY(spiral->t0); +} + +Geom::Point +SpiralKnotHolderEntityOuter::knot_get() const +{ + SPSpiral const *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + return spiral->getXY(1.0); +} + +Geom::Point +SpiralKnotHolderEntityCenter::knot_get() const +{ + SPSpiral const *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + return Geom::Point(spiral->cx, spiral->cy); +} + +void +SpiralKnotHolderEntityInner::knot_click(unsigned int state) +{ + SPSpiral *spiral = dynamic_cast(item); + g_assert(spiral != NULL); + + if (state & GDK_MOD1_MASK) { + spiral->exp = 1; + spiral->updateRepr(); + } else if (state & GDK_SHIFT_MASK) { + spiral->t0 = 0; + spiral->updateRepr(); + } +} + +SpiralKnotHolder::SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + SpiralKnotHolderEntityCenter *entity_center = new SpiralKnotHolderEntityCenter(); + SpiralKnotHolderEntityInner *entity_inner = new SpiralKnotHolderEntityInner(); + SpiralKnotHolderEntityOuter *entity_outer = new SpiralKnotHolderEntityOuter(); + + // NOTE: entity_central and entity_inner can overlap. + // + // In that case it would be a problem if the center control point was ON + // TOP because it would steal the mouse focus and the user would loose the + // ability to access the inner control point using only the mouse. + // + // However if the inner control point is ON TOP, taking focus, the + // situation is a lot better: the user can still move the inner control + // point with the mouse to regain access to the center control point. + // + // So, create entity_inner AFTER entity_center; this ensures that + // entity_inner gets rendered ON TOP. + entity_center->create(desktop, item, this, Inkscape::CTRL_TYPE_POINT, + _("Drag to move the spiral"), + SP_KNOT_SHAPE_CROSS); + + entity_inner->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Roll/unroll the spiral from inside; with Ctrl to snap angle; " + "with Alt to converge/diverge")); + + entity_outer->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Roll/unroll the spiral from outside; with Ctrl to snap angle; " + "with Shift to scale/rotate; with Alt to lock radius")); + + entity.push_back(entity_center); + entity.push_back(entity_inner); + entity.push_back(entity_outer); + + add_pattern_knotholder(); +} + +/* SPOffset */ + +class OffsetKnotHolderEntity : public KnotHolderEntity { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +void +OffsetKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, unsigned int state) +{ + SPOffset *offset = dynamic_cast(item); + g_assert(offset != NULL); + + Geom::Point const p_snapped = snap_knot_position(p, state); + + offset->rad = sp_offset_distance_to_original(offset, p_snapped); + offset->knot = p_snapped; + offset->knotSet = true; + + offset->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); +} + + +Geom::Point +OffsetKnotHolderEntity::knot_get() const +{ + SPOffset const *offset = dynamic_cast(item); + g_assert(offset != NULL); + + Geom::Point np; + sp_offset_top_point(offset,&np); + return np; +} + +OffsetKnotHolder::OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + OffsetKnotHolderEntity *entity_offset = new OffsetKnotHolderEntity(); + entity_offset->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Adjust the offset distance")); + entity.push_back(entity_offset); + + add_pattern_knotholder(); +} + +// TODO: this is derived from RectKnotHolderEntityWH because it used the same static function +// set_internal as the latter before KnotHolderEntity was C++ified. Check whether this also makes +// sense logically. +class FlowtextKnotHolderEntity : public RectKnotHolderEntityWH { +public: + virtual Geom::Point knot_get() const; + virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state); +}; + +Geom::Point +FlowtextKnotHolderEntity::knot_get() const +{ + SPRect const *rect = dynamic_cast(item); + g_assert(rect != NULL); + + return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed); +} + +void +FlowtextKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, unsigned int state) +{ + set_internal(p, origin, state); +} + +FlowtextKnotHolder::FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) : + KnotHolder(desktop, item, relhandler) +{ + g_assert(item != NULL); + + FlowtextKnotHolderEntity *entity_flowtext = new FlowtextKnotHolderEntity(); + entity_flowtext->create(desktop, item, this, Inkscape::CTRL_TYPE_SHAPER, + _("Drag to resize the flowed text frame")); + entity.push_back(entity_flowtext); +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/shape-editor.cpp b/src/ui/shape-editor.cpp index 2c0e662ee..4851c413f 100644 --- a/src/ui/shape-editor.cpp +++ b/src/ui/shape-editor.cpp @@ -20,15 +20,15 @@ #include "sp-shape.h" #include "sp-path.h" #include "inkscape.h" -#include "ui/object-edit.h" #include "ui/shape-editor.h" #include "xml/node-event-vector.h" -//using Inkscape::createKnotHolder; namespace Inkscape { namespace UI { +KnotHolder *createKnotHolder(SPItem *item, SPDesktop *desktop); + bool ShapeEditor::_blockSetItem = false; ShapeEditor::ShapeEditor(SPDesktop *dt, Geom::Affine edit_transform) : -- cgit v1.2.3 From e0957537cd0938313803c290a2f3922a3889e6f1 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sun, 1 Oct 2017 17:49:26 +0200 Subject: Removed all GSList occurences in .h files --- src/display/canvas-axonomgrid.cpp | 4 +- src/display/canvas-grid.cpp | 19 ++-- src/display/canvas-grid.h | 2 +- src/display/curve.cpp | 29 +++--- src/display/curve.h | 8 +- src/extension/extension.cpp | 24 ++--- src/extension/extension.h | 5 +- src/extension/internal/cairo-render-context.cpp | 14 +-- src/extension/internal/cairo-render-context.h | 2 +- src/extension/internal/cairo-renderer.cpp | 8 +- src/extension/param/enum.cpp | 32 ++---- src/extension/param/enum.h | 18 +++- src/extension/param/notebook.cpp | 125 ++++++++---------------- src/extension/param/notebook.h | 29 +++++- src/extension/param/radiobutton.cpp | 36 ++----- src/extension/param/radiobutton.h | 20 +++- src/helper/pixbuf-ops.cpp | 21 ++-- src/helper/pixbuf-ops.h | 6 +- src/libnrtype/Layout-TNG-Output.cpp | 18 +--- src/path-chemistry.cpp | 8 +- src/ui/dialog/spellcheck.cpp | 87 ++++++----------- src/ui/dialog/spellcheck.h | 11 ++- src/ui/dialog/symbols.cpp | 46 ++++----- src/ui/dialog/symbols.h | 12 +-- src/ui/tool/manipulator.h | 9 +- src/ui/tools/calligraphic-tool.cpp | 20 ++-- src/ui/tools/dynamic-base.cpp | 7 +- src/ui/tools/dynamic-base.h | 3 +- src/ui/tools/eraser-tool.cpp | 18 ++-- src/ui/tools/freehand-base.cpp | 72 ++++++-------- src/ui/tools/freehand-base.h | 6 +- src/ui/tools/pen-tool.cpp | 54 +++++----- src/ui/tools/pencil-tool.cpp | 8 +- src/ui/widget/selected-style.cpp | 8 +- src/ui/widget/selected-style.h | 2 +- src/ui/widget/unit-tracker.cpp | 51 +++++----- src/ui/widget/unit-tracker.h | 6 +- src/widgets/stroke-marker-selector.cpp | 43 +++----- src/widgets/stroke-marker-selector.h | 7 +- 39 files changed, 389 insertions(+), 509 deletions(-) diff --git a/src/display/canvas-axonomgrid.cpp b/src/display/canvas-axonomgrid.cpp index 589cc849d..187597794 100644 --- a/src/display/canvas-axonomgrid.cpp +++ b/src/display/canvas-axonomgrid.cpp @@ -294,8 +294,8 @@ CanvasAxonomGrid::readRepr() gridunit = unit_table.getUnit(value); // Display unit identifier in grid menu } - for (GSList *l = canvasitems; l != NULL; l = l->next) { - sp_canvas_item_request_update ( SP_CANVAS_ITEM(l->data) ); + for (auto i:canvasitems) { + sp_canvas_item_request_update(i); } return; } diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp index 4243d3365..01bfc2fc0 100644 --- a/src/display/canvas-grid.cpp +++ b/src/display/canvas-grid.cpp @@ -149,7 +149,6 @@ CanvasGrid::CanvasGrid(SPNamedView * nv, Inkscape::XML::Node * in_repr, SPDocume } namedview = nv; - canvasitems = NULL; } CanvasGrid::~CanvasGrid() @@ -157,11 +156,9 @@ CanvasGrid::~CanvasGrid() if (repr) { repr->removeListenerByData (this); } - - while (canvasitems) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(canvasitems->data)); - canvasitems = g_slist_remove(canvasitems, canvasitems->data); - } + for (auto i:canvasitems) + sp_canvas_item_destroy(i); + canvasitems.clear(); } const char * @@ -276,8 +273,8 @@ CanvasGrid::createCanvasItem(SPDesktop * desktop) // but share the same CanvasGrid object; that is what this function is for. // check if there is already a canvasitem on this desktop linking to this grid - for (GSList *l = canvasitems; l != NULL; l = l->next) { - if ( desktop->getGridGroup() == SP_CANVAS_GROUP(SP_CANVAS_ITEM(l->data)->parent) ) { + for (auto i:canvasitems) { + if ( desktop->getGridGroup() == SP_CANVAS_GROUP(i->parent) ) { return NULL; } } @@ -287,7 +284,7 @@ CanvasGrid::createCanvasItem(SPDesktop * desktop) sp_canvas_item_show(SP_CANVAS_ITEM(item)); g_object_ref(item); // since we're keeping a link to this item, we need to bump up the ref count - canvasitems = g_slist_prepend(canvasitems, item); + canvasitems.push_back(item); return item; } @@ -650,8 +647,8 @@ CanvasXYGrid::readRepr() gridunit = unit_table.getUnit(value); // Display unit identifier in grid menu } - for (GSList *l = canvasitems; l != NULL; l = l->next) { - sp_canvas_item_request_update ( SP_CANVAS_ITEM(l->data) ); + for (auto i:canvasitems) { + sp_canvas_item_request_update(i); } return; diff --git a/src/display/canvas-grid.h b/src/display/canvas-grid.h index 91fa43e69..6b36390c8 100644 --- a/src/display/canvas-grid.h +++ b/src/display/canvas-grid.h @@ -112,7 +112,7 @@ protected: virtual Gtk::Widget * newSpecificWidget() = 0; - GSList * canvasitems; // list of created canvasitems + std::vector canvasitems; // list of created canvasitems SPNamedView * namedview; diff --git a/src/display/curve.cpp b/src/display/curve.cpp index 6e662b17b..1115978e9 100644 --- a/src/display/curve.cpp +++ b/src/display/curve.cpp @@ -38,6 +38,15 @@ SPCurve::SPCurve(Geom::PathVector const& pathv) _pathv(pathv) {} +//concat constructor +SPCurve::SPCurve(std::list const& l) : _refcount(1) +{ + for (auto c:l) { + _pathv.insert( _pathv.end(), c->get_pathvector().begin(), c->get_pathvector().end() ); + } +} + + SPCurve * SPCurve::new_from_rect(Geom::Rect const &rect, bool all_four_sides) { @@ -134,32 +143,24 @@ SPCurve::copy() const * Return new curve that is the concatenation of all curves in list. */ SPCurve * -SPCurve::concat(GSList const *list) -{ - SPCurve *new_curve = new SPCurve(); - - for (GSList const *l = list; l != NULL; l = l->next) { - SPCurve *c = static_cast(l->data); - new_curve->_pathv.insert( new_curve->_pathv.end(), c->get_pathvector().begin(), c->get_pathvector().end() ); - } - - return new_curve; -} +SPCurve::concat(std::list l){ + return new SPCurve(l); +}; /** * Returns a list of new curves corresponding to the subpaths in \a curve. * 2geomified */ -GSList * +std::list SPCurve::split() const { - GSList *l = NULL; + std::list l; for (Geom::PathVector::const_iterator path_it = _pathv.begin(); path_it != _pathv.end(); ++path_it) { Geom::PathVector newpathv; newpathv.push_back(*path_it); SPCurve * newcurve = new SPCurve(newpathv); - l = g_slist_prepend(l, newcurve); + l.push_back(newcurve); } return l; diff --git a/src/display/curve.h b/src/display/curve.h index 8375e1105..87b9984a8 100644 --- a/src/display/curve.h +++ b/src/display/curve.h @@ -16,8 +16,7 @@ #include <2geom/pathvector.h> #include #include - -extern "C" { typedef struct _GSList GSList; } +#include /** * Wrapper around a Geom::PathVector object. @@ -27,6 +26,7 @@ public: /* Constructors */ explicit SPCurve(); explicit SPCurve(Geom::PathVector const& pathv); + explicit SPCurve(std::list const& pathv); static SPCurve * new_from_rect(Geom::Rect const &rect, bool all_four_sides = false); virtual ~SPCurve(); @@ -78,8 +78,8 @@ public: SPCurve * append_continuous(SPCurve const *c1, double tolerance); SPCurve * create_reverse() const; - GSList * split() const; - static SPCurve * concat(GSList const *list); + std::list split() const; + static SPCurve * concat(std::list l); protected: size_t _refcount; diff --git a/src/extension/extension.cpp b/src/extension/extension.cpp index f1b328f05..d9ea5eca7 100644 --- a/src/extension/extension.cpp +++ b/src/extension/extension.cpp @@ -64,7 +64,6 @@ Extension::Extension (Inkscape::XML::Node * in_repr, Implementation::Implementat id = NULL; name = NULL; _state = STATE_UNLOADED; - parameters = NULL; if (in_imp == NULL) { imp = new Implementation::Implementation(); @@ -97,7 +96,7 @@ Extension::Extension (Inkscape::XML::Node * in_repr, Implementation::Implementat Parameter * param; param = Parameter::make(child_repr, this); if (param != NULL) - parameters = g_slist_append(parameters, param); + parameters.push_back(param); } /* param || _param */ if (!strcmp(chname, "dependency")) { _deps.push_back(new Dependency(child_repr)); @@ -146,12 +145,9 @@ Extension::~Extension (void) /** \todo Need to do parameters here */ // delete parameters: - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for (auto param:parameters) { delete param; } - g_slist_free(parameters); - for (unsigned int i = 0 ; i < _deps.size(); i++) { delete _deps[i]; @@ -402,14 +398,11 @@ Parameter *Extension::get_param(gchar const *name) if (name == NULL) { throw Extension::param_not_exist(); } - if (this->parameters == NULL) { - // the list of parameters is empty + if (this->parameters.empty()) { throw Extension::param_not_exist(); } - for (GSList * list = this->parameters; list != NULL; list = -g_slist_next(list)) { - Parameter * param = static_cast(list->data); + for( auto param:this->parameters) { if (!strcmp(param->name(), name)) { return param; } else { @@ -730,8 +723,7 @@ Extension::autogui (SPDocument * doc, Inkscape::XML::Node * node, sigc::signalset_spacing(Parameter::GUI_BOX_SPACING); //go through the list of parameters to see if there are any non-hidden ones - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for (auto param:parameters) { if (param->get_hidden()) continue; //Ignore hidden parameters Gtk::Widget * widg = param->get_widget(doc, node, changeSignal); gchar const * tip = param->get_tooltip(); @@ -751,8 +743,7 @@ Extension::autogui (SPDocument * doc, Inkscape::XML::Node * node, sigc::signal &retlist) { - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for(auto param:parameters) { param->string(retlist); } @@ -835,8 +826,7 @@ Extension::get_params_widget(void) unsigned int Extension::param_visible_count ( ) { unsigned int _visible_count = 0; - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for (auto param:parameters) { if (!param->get_hidden()) _visible_count++; } return _visible_count; diff --git a/src/extension/extension.h b/src/extension/extension.h index 962c3c8a7..9ccc9869b 100644 --- a/src/extension/extension.h +++ b/src/extension/extension.h @@ -133,7 +133,7 @@ public: /* Parameter Stuff */ private: - GSList * parameters; /**< A table to store the parameters for this extension. + std::vector parameters; /**< A table to store the parameters for this extension. This only gets created if there are parameters in this extension */ @@ -141,8 +141,7 @@ public: /** \brief A function to get the number of parameters that the extension has. \return The number of parameters. */ - unsigned int param_count ( ) { return parameters == NULL ? 0 : - g_slist_length(parameters); }; + unsigned int param_count ( ) { return parameters.size(); }; /** \brief A function to get the number of parameters that are visible to the user that the extension has. \return The number of visible parameters. diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index c513744a8..3edb58a13 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -163,10 +163,10 @@ CairoRenderState* CairoRenderContext::getCurrentState(void) const CairoRenderState* CairoRenderContext::getParentState(void) const { // if this is the root node just return it - if (g_slist_length(_state_stack) == 1) { + if (_state_stack.size() == 1) { return _state; } else { - return static_cast(g_slist_nth_data(_state_stack, 1)); + return _state_stack[_state_stack.size()-2]; } } @@ -975,7 +975,7 @@ void CairoRenderContext::pushState(void) CairoRenderState *new_state = _createState(); // copy current state's transform new_state->transform = _state->transform; - _state_stack = g_slist_prepend(_state_stack, new_state); + _state_stack.push_back(new_state); _state = new_state; } @@ -985,11 +985,11 @@ void CairoRenderContext::popState(void) cairo_restore(_cr); - g_free(_state_stack->data); - _state_stack = g_slist_remove_link(_state_stack, _state_stack); - _state = static_cast(_state_stack->data); + g_free(_state_stack.back()); + _state_stack.pop_back(); - g_assert( g_slist_length(_state_stack) > 0 ); + g_assert( !_state_stack.empty()); + _state = _state_stack.back(); } static bool pattern_hasItemChildren(SPPattern *pat) diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h index 9b976fd6d..be5169a74 100644 --- a/src/extension/internal/cairo-render-context.h +++ b/src/extension/internal/cairo-render-context.h @@ -198,7 +198,7 @@ protected: unsigned int _clip_rule : 8; unsigned int _clip_winding_failed : 1; - GSList *_state_stack; + std::vector _state_stack; CairoRenderState *_state; // the current state CairoRenderer *_renderer; diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index a2b8fb22f..3724a5e17 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -121,13 +121,12 @@ CairoRenderer::createContext(void) CairoRenderContext *new_context = new CairoRenderContext(this); g_assert( new_context != NULL ); - new_context->_state_stack = NULL; new_context->_state = NULL; // create initial render state CairoRenderState *state = new_context->_createState(); state->transform = Geom::identity(); - new_context->_state_stack = g_slist_prepend(new_context->_state_stack, state); + new_context->_state_stack.push_back(state); new_context->_state = state; return new_context; @@ -517,20 +516,17 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx) // Do the export SPDocument *document = item->document; - GSList *items = NULL; - items = g_slist_append(items, item); boost::scoped_ptr pb( sp_generate_internal_bitmap(document, NULL, bbox->min()[Geom::X], bbox->min()[Geom::Y], bbox->max()[Geom::X], bbox->max()[Geom::Y], - width, height, res, res, (guint32) 0xffffff00, items )); + width, height, res, res, (guint32) 0xffffff00, item )); if (pb) { //TEST(gdk_pixbuf_save( pb, "bitmap.png", "png", NULL, NULL )); ctx->renderImage(pb.get(), t, item->style); } - g_slist_free (items); } diff --git a/src/extension/param/enum.cpp b/src/extension/param/enum.cpp index 7cd860465..db34a6ef9 100644 --- a/src/extension/param/enum.cpp +++ b/src/extension/param/enum.cpp @@ -32,20 +32,6 @@ namespace Inkscape { namespace Extension { -/* For internal use only. - Note that value and text MUST be non-NULL. This is ensured by newing only at one location in the code where non-NULL checks are made. */ -class enumentry { -public: - enumentry (Glib::ustring &val, Glib::ustring &text) : - value(val), - text(text) - {} - - Glib::ustring value; - Glib::ustring text; -}; - - ParamComboBox::ParamComboBox(const gchar * name, const gchar * text, const gchar * description, @@ -55,7 +41,6 @@ ParamComboBox::ParamComboBox(const gchar * name, Inkscape::XML::Node * xml) : Parameter(name, text, description, hidden, indent, ext) , _value(NULL) - , choices(NULL) { const char *xmlval = NULL; // the value stored in XML @@ -93,7 +78,7 @@ ParamComboBox::ParamComboBox(const gchar * name, } if ( (!newtext.empty()) && (!newvalue.empty()) ) { // logical error if this is not true here - choices = g_slist_append( choices, new enumentry(newvalue, newtext) ); + choices.push_back(new enumentry(newvalue, newtext) ); } } } @@ -120,11 +105,9 @@ ParamComboBox::ParamComboBox(const gchar * name, ParamComboBox::~ParamComboBox (void) { //destroy choice strings - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - delete (reinterpret_cast(list->data)); + for (auto i:choices) { + delete i; } - g_slist_free(choices); - g_free(_value); } @@ -151,8 +134,7 @@ const gchar *ParamComboBox::set(const gchar * in, SPDocument * /*doc*/, Inkscape } Glib::ustring settext; - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - enumentry * entr = reinterpret_cast(list->data); + for (auto entr:choices) { if ( !entr->text.compare(in) ) { settext = entr->value; break; // break out of for loop @@ -181,8 +163,7 @@ bool ParamComboBox::contains(const gchar * text, SPDocument const * /*doc*/, Ink return false; /* Can't have NULL string */ } - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - enumentry * entr = reinterpret_cast(list->data); + for (auto entr:choices) { if ( !entr->text.compare(text) ) return true; } @@ -256,8 +237,7 @@ Gtk::Widget *ParamComboBox::get_widget(SPDocument * doc, Inkscape::XML::Node * n ParamComboBoxEntry * combo = Gtk::manage(new ParamComboBoxEntry(this, doc, node, changeSignal)); // add choice strings: Glib::ustring settext; - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - enumentry * entr = reinterpret_cast(list->data); + for (auto entr:choices) { Glib::ustring text = entr->text; combo->append(text); diff --git a/src/extension/param/enum.h b/src/extension/param/enum.h index 143a648d7..d34c0dcaa 100644 --- a/src/extension/param/enum.h +++ b/src/extension/param/enum.h @@ -34,7 +34,23 @@ private: been allocated in memory. And should be free'd. It is the value of the current selected string */ gchar * _value; - GSList * choices; /**< A table to store the choice strings */ + + /* For internal use only. + * Note that value and text MUST be non-NULL. + * This is ensured by newing only at one location in the code where non-NULL checks are made. + */ + class enumentry { + public: + enumentry (Glib::ustring &val, Glib::ustring &text) : + value(val), + text(text) + {} + + Glib::ustring value; + Glib::ustring text; + }; + + std::vector choices; /**< A table to store the choice strings */ public: ParamComboBox(const gchar * name, diff --git a/src/extension/param/notebook.cpp b/src/extension/param/notebook.cpp index 4e94b5216..220d6eb32 100644 --- a/src/extension/param/notebook.cpp +++ b/src/extension/param/notebook.cpp @@ -42,34 +42,7 @@ namespace Inkscape { namespace Extension { -/** - * A class to represent the pages of a notebookparameter of an extension. - */ -class ParamNotebookPage : public Parameter { -private: - GSList * parameters; /**< A table to store the parameters for this page. - This only gets created if there are parameters on this - page */ - -public: - static ParamNotebookPage * makepage (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext); - - ParamNotebookPage(const gchar * name, - const gchar * text, - const gchar * description, - bool hidden, - Inkscape::Extension::Extension * ext, - Inkscape::XML::Node * xml); - ~ParamNotebookPage(void); - - Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal); - void paramString (std::list &list); - gchar * get_text (void) {return _text;}; - Parameter * get_param (const gchar * name); -}; /* class ParamNotebookPage */ - - -ParamNotebookPage::ParamNotebookPage(const gchar * name, +ParamNotebook::ParamNotebookPage::ParamNotebookPage(const gchar * name, const gchar * text, const gchar * description, bool hidden, @@ -77,7 +50,6 @@ ParamNotebookPage::ParamNotebookPage(const gchar * name, Inkscape::XML::Node * xml) : Parameter(name, text, description, hidden, /*indent*/ 0, ext) { - parameters = NULL; // Read XML to build page if (xml != NULL) { @@ -92,28 +64,25 @@ ParamNotebookPage::ParamNotebookPage(const gchar * name, if (!strcmp(chname, "param") || !strcmp(chname, "_param")) { Parameter * param; param = Parameter::make(child_repr, ext); - if (param != NULL) parameters = g_slist_append(parameters, param); + if (param != NULL) parameters.push_back(param); } child_repr = child_repr->next(); } } } -ParamNotebookPage::~ParamNotebookPage (void) +ParamNotebook::ParamNotebookPage::~ParamNotebookPage (void) { //destroy parameters - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for (auto param:parameters) { delete param; } - g_slist_free(parameters); } /** Return the value as a string. */ -void ParamNotebookPage::paramString(std::list &list) +void ParamNotebook::ParamNotebookPage::paramString(std::list &list) { - for (GSList * plist = parameters; plist != NULL; plist = g_slist_next(plist)) { - Parameter * param = reinterpret_cast(plist->data); + for (auto param:parameters) { param->string(list); } } @@ -143,8 +112,8 @@ void ParamNotebookPage::paramString(std::list &list) straight forward. In all cases the value is set to the default value from the XML and the type is set to the interpreted type. */ -ParamNotebookPage * -ParamNotebookPage::makepage (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext) +ParamNotebook::ParamNotebookPage * +ParamNotebook::ParamNotebookPage::makepage (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext) { const char * name; const char * text; @@ -186,7 +155,7 @@ ParamNotebookPage::makepage (Inkscape::XML::Node * in_repr, Inkscape::Extension: * * Builds a notebook page (a vbox) and puts parameters on it. */ -Gtk::Widget * ParamNotebookPage::get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal) +Gtk::Widget * ParamNotebook::ParamNotebookPage::get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal) { if (_hidden) { return NULL; @@ -197,8 +166,7 @@ Gtk::Widget * ParamNotebookPage::get_widget(SPDocument * doc, Inkscape::XML::Nod vbox->set_spacing(Parameter::GUI_BOX_SPACING); // add parameters onto page (if any) - for (GSList * list = parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = reinterpret_cast(list->data); + for (auto param:parameters) { Gtk::Widget * widg = param->get_widget(doc, node, changeSignal); if (widg) { int indent = param->get_indent(); @@ -224,6 +192,28 @@ Gtk::Widget * ParamNotebookPage::get_widget(SPDocument * doc, Inkscape::XML::Nod return dynamic_cast(vbox); } +/** Search the parameter's name in the page content. */ +Parameter *ParamNotebook::ParamNotebookPage::get_param(const gchar * name) +{ + if (name == NULL) { + throw Extension::param_not_exist(); + } + if (this->parameters.empty()) { + // the list of parameters is empty + throw Extension::param_not_exist(); + } + + for (auto param:parameters) { + if (!strcmp(param->name(), name)) { + return param; + } + } + + return NULL; +} + +/** End ParamNotebookPage **/ +/** ParamNotebook **/ ParamNotebook::ParamNotebook(const gchar * name, const gchar * text, @@ -234,8 +224,6 @@ ParamNotebook::ParamNotebook(const gchar * name, Inkscape::XML::Node * xml) : Parameter(name, text, description, hidden, indent, ext) { - pages = NULL; - // Read XML tree to add pages: if (xml != NULL) { Inkscape::XML::Node *child_repr = xml->firstChild(); @@ -249,7 +237,7 @@ ParamNotebook::ParamNotebook(const gchar * name, if (!strcmp(chname, "page")) { ParamNotebookPage * page; page = ParamNotebookPage::makepage(child_repr, ext); - if (page != NULL) pages = g_slist_append(pages, page); + if (page != NULL) pages.push_back(page); } child_repr = child_repr->next(); } @@ -258,9 +246,8 @@ ParamNotebook::ParamNotebook(const gchar * name, // Initialize _value with the current page const char * defaultval = NULL; // set first page as default - if (pages != NULL) { - ParamNotebookPage * defpage = reinterpret_cast(pages->data); - defaultval = defpage->name(); + if (!pages.empty()) { + defaultval = pages[0]->name(); } gchar * pref_name = this->pref_name(); @@ -277,12 +264,9 @@ ParamNotebook::ParamNotebook(const gchar * name, ParamNotebook::~ParamNotebook (void) { //destroy pages - for (GSList * list = pages; list != NULL; list = g_slist_next(list)) { - ParamNotebookPage * page = reinterpret_cast(list->data); + for (auto page:pages) { delete page; } - g_slist_free(pages); - g_free(_value); } @@ -304,12 +288,8 @@ ParamNotebook::~ParamNotebook (void) */ const gchar *ParamNotebook::set(const int in, SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/) { - ParamNotebookPage * page = NULL; - int i = 0; - for (GSList * list = pages; (list != NULL) && (i <= in); list = g_slist_next(list)) { - page = reinterpret_cast(list->data); - i++; - } + int i = in < pages.size() ? in : pages.size()-1; + ParamNotebookPage * page = pages[i]; if (page == NULL) return _value; @@ -336,8 +316,7 @@ void ParamNotebook::string(std::list &list) const param_string += "\""; list.insert(list.end(), param_string); - for (GSList * pglist = pages; pglist != NULL; pglist = g_slist_next(pglist)) { - ParamNotebookPage * page = reinterpret_cast(pglist->data); + for (auto page:pages) { page->paramString(list); } } @@ -384,8 +363,7 @@ Parameter *ParamNotebook::get_param(const gchar * name) if (name == NULL) { throw Extension::param_not_exist(); } - for (GSList * pglist = pages; pglist != NULL; pglist = g_slist_next(pglist)) { - ParamNotebookPage * page = reinterpret_cast(pglist->data); + for (auto page:pages) { Parameter * subparam = page->get_param(name); if (subparam) { return subparam; @@ -395,26 +373,6 @@ Parameter *ParamNotebook::get_param(const gchar * name) return NULL; } -/** Search the parameter's name in the page content. */ -Parameter *ParamNotebookPage::get_param(const gchar * name) -{ - if (name == NULL) { - throw Extension::param_not_exist(); - } - if (this->parameters == NULL) { - // the list of parameters is empty - throw Extension::param_not_exist(); - } - - for (GSList * list = this->parameters; list != NULL; list = g_slist_next(list)) { - Parameter * param = static_cast(list->data); - if (!strcmp(param->name(), name)) { - return param; - } - } - - return NULL; -} /** * Creates a Notebook widget for a notebook parameter. @@ -432,9 +390,8 @@ Gtk::Widget * ParamNotebook::get_widget(SPDocument * doc, Inkscape::XML::Node * // add pages (if any) int i = -1; int pagenr = i; - for (GSList * list = pages; list != NULL; list = g_slist_next(list)) { + for (auto page:pages) { i++; - ParamNotebookPage * page = reinterpret_cast(list->data); Gtk::Widget * widg = page->get_widget(doc, node, changeSignal); nb->append_page(*widg, _(page->get_text())); if (!strcmp(_value, page->name())) { diff --git a/src/extension/param/notebook.h b/src/extension/param/notebook.h index 8475de61d..f1bebd372 100644 --- a/src/extension/param/notebook.h +++ b/src/extension/param/notebook.h @@ -37,7 +37,34 @@ private: */ gchar * _value; - GSList * pages; /**< A table to store the pages with parameters for this notebook. + /** + * A class to represent the pages of a notebookparameter of an extension. + */ + class ParamNotebookPage : public Parameter { + private: + std::vector parameters; /**< A table to store the parameters for this page. + This only gets created if there are parameters on this + page */ + + public: + static ParamNotebookPage * makepage (Inkscape::XML::Node * in_repr, Inkscape::Extension::Extension * in_ext); + + ParamNotebookPage(const gchar * name, + const gchar * text, + const gchar * description, + bool hidden, + Inkscape::Extension::Extension * ext, + Inkscape::XML::Node * xml); + ~ParamNotebookPage(void); + + Gtk::Widget * get_widget(SPDocument * doc, Inkscape::XML::Node * node, sigc::signal * changeSignal); + void paramString (std::list &list); + gchar * get_text (void) {return _text;}; + Parameter * get_param (const gchar * name); + }; /* class ParamNotebookPage */ + + + std::vector pages; /**< A table to store the pages with parameters for this notebook. This only gets created if there are pages in this notebook */ public: diff --git a/src/extension/param/radiobutton.cpp b/src/extension/param/radiobutton.cpp index a08ba6860..ca6dbb31d 100644 --- a/src/extension/param/radiobutton.cpp +++ b/src/extension/param/radiobutton.cpp @@ -42,20 +42,6 @@ namespace Extension { /* For internal use only. Note that value and text MUST be non-NULL. This is ensured by newing only at one location in the code where non-NULL checks are made. */ -class optionentry { -public: - optionentry (Glib::ustring * val, Glib::ustring * txt) { - value = val; - text = txt; - } - ~optionentry() { - delete value; - delete text; - } - - Glib::ustring * value; - Glib::ustring * text; -}; ParamRadioButton::ParamRadioButton(const gchar * name, const gchar * text, @@ -68,7 +54,6 @@ ParamRadioButton::ParamRadioButton(const gchar * name, : Parameter(name, text, description, hidden, indent, ext) , _value(0) , _mode(mode) - , choices(0) { // Read XML tree to add enumeration items: // printf("Extension Constructor: "); @@ -105,7 +90,7 @@ ParamRadioButton::ParamRadioButton(const gchar * name, } if ( (newtext) && (newvalue) ) { // logical error if this is not true here - choices = g_slist_append( choices, new optionentry(newvalue, newtext) ); + choices.push_back(new optionentry(newvalue, newtext)); } } child_repr = child_repr->next(); @@ -115,8 +100,8 @@ ParamRadioButton::ParamRadioButton(const gchar * name, // Initialize _value with the default value from xml // for simplicity : default to the contents of the first xml-child const char * defaultval = NULL; - if (choices) { - defaultval = (static_cast (choices->data))->value->c_str(); + if (!choices.empty()) { + defaultval = (static_cast (choices[0]))->value->c_str(); } gchar * pref_name = this->pref_name(); @@ -135,11 +120,9 @@ ParamRadioButton::ParamRadioButton(const gchar * name, ParamRadioButton::~ParamRadioButton (void) { //destroy choice strings - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - delete (reinterpret_cast(list->data)); + for(auto i:choices) { + delete i; } - g_slist_free(choices); - g_free(_value); } @@ -166,8 +149,7 @@ const gchar *ParamRadioButton::set(const gchar * in, SPDocument * /*doc*/, Inksc } Glib::ustring * settext = NULL; - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - optionentry * entr = reinterpret_cast(list->data); + for (auto entr:choices) { if ( !entr->value->compare(in) ) { settext = entr->value; break; // break out of for loop @@ -278,8 +260,7 @@ Glib::ustring ParamRadioButton::value_from_label(const Glib::ustring label) { Glib::ustring value = ""; - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - optionentry * entr = reinterpret_cast(list->data); + for ( auto entr:choices) { if ( !entr->text->compare(label) ) { value = *(entr->value); break; @@ -319,8 +300,7 @@ Gtk::Widget * ParamRadioButton::get_widget(SPDocument * doc, Inkscape::XML::Node // add choice strings as radiobuttons // and select last selected option (_value) Gtk::RadioButtonGroup group; - for (GSList * list = choices; list != NULL; list = g_slist_next(list)) { - optionentry * entr = reinterpret_cast(list->data); + for (auto entr:choices) { Glib::ustring * text = entr->text; switch ( _mode ) { case MINIMAL: diff --git a/src/extension/param/radiobutton.h b/src/extension/param/radiobutton.h index b91b11ea3..e3ced8eb8 100644 --- a/src/extension/param/radiobutton.h +++ b/src/extension/param/radiobutton.h @@ -27,6 +27,7 @@ namespace Extension { class Extension; + // \brief A class to represent a radiobutton parameter of an extension class ParamRadioButton : public Parameter { public: @@ -63,7 +64,24 @@ private: It is the value of the current selected string */ gchar * _value; AppearanceMode _mode; - GSList * choices; /**< A table to store the choice strings */ + + /* For internal use only. + Note that value and text MUST be non-NULL. This is ensured by newing only at one location in the code where non-NULL checks are made. */ + class optionentry { + public: + optionentry (Glib::ustring * val, Glib::ustring * txt) { + value = val; + text = txt; + } + ~optionentry() { + delete value; + delete text; + } + Glib::ustring * value; + Glib::ustring * text; + }; + + std::vector choices; /**< A table to store the choice strings */ }; /* class ParamRadioButton */ diff --git a/src/helper/pixbuf-ops.cpp b/src/helper/pixbuf-ops.cpp index bb33f7b15..438a428e6 100644 --- a/src/helper/pixbuf-ops.cpp +++ b/src/helper/pixbuf-ops.cpp @@ -34,9 +34,9 @@ // TODO look for copy-n-paste duplication of this function: /** - * Hide all items that are not listed in list, recursively, skipping groups and defs. + * Hide all items except @item, recursively, skipping groups and defs. */ -static void hide_other_items_recursively(SPObject *o, GSList *list, unsigned dkey) +static void hide_other_items_recursively(SPObject *o, SPItem *i, unsigned dkey) { SPItem *item = dynamic_cast(o); if ( item @@ -44,15 +44,15 @@ static void hide_other_items_recursively(SPObject *o, GSList *list, unsigned dke && !dynamic_cast(item) && !dynamic_cast(item) && !dynamic_cast(item) - && !g_slist_find(list, o) ) + && (i != o) ) { item->invoke_hide(dkey); } // recurse - if (!g_slist_find(list, o)) { + if (i != o) { for (auto& child: o->children) { - hide_other_items_recursively(&child, list, dkey); + hide_other_items_recursively(&child, i, dkey); } } } @@ -65,11 +65,11 @@ static void hide_other_items_recursively(SPObject *o, GSList *list, unsigned dke bool sp_export_jpg_file(SPDocument *doc, gchar const *filename, double x0, double y0, double x1, double y1, unsigned width, unsigned height, double xdpi, double ydpi, - unsigned long bgcolor, double quality,GSList *items) + unsigned long bgcolor, double quality, SPItem* item) { boost::scoped_ptr pixbuf( sp_generate_internal_bitmap(doc, filename, x0, y0, x1, y1, - width, height, xdpi, ydpi, bgcolor, items)); + width, height, xdpi, ydpi, bgcolor, item)); gchar c[32]; g_snprintf(c, 32, "%f", quality); @@ -78,6 +78,7 @@ bool sp_export_jpg_file(SPDocument *doc, gchar const *filename, return saved; } + /** generates a bitmap from given items the bitmap is stored in RAM and not written to file @@ -95,7 +96,7 @@ Inkscape::Pixbuf *sp_generate_internal_bitmap(SPDocument *doc, gchar const */*fi double x0, double y0, double x1, double y1, unsigned width, unsigned height, double xdpi, double ydpi, unsigned long /*bgcolor*/, - GSList *items_only) + SPItem *item_only) { if (width == 0 || height == 0) return NULL; @@ -128,8 +129,8 @@ Inkscape::Pixbuf *sp_generate_internal_bitmap(SPDocument *doc, gchar const */*fi // We show all and then hide all items we don't want, instead of showing only requested items, // because that would not work if the shown item references something in defs - if (items_only) { - hide_other_items_recursively(doc->getRoot(), items_only, dkey); + if (item_only) { + hide_other_items_recursively(doc->getRoot(), item_only, dkey); } Geom::IntRect final_bbox = Geom::IntRect::from_xywh(0, 0, width, height); diff --git a/src/helper/pixbuf-ops.h b/src/helper/pixbuf-ops.h index 61a879f9b..067bc0be4 100644 --- a/src/helper/pixbuf-ops.h +++ b/src/helper/pixbuf-ops.h @@ -17,12 +17,12 @@ class SPDocument; namespace Inkscape { class Pixbuf; } -bool sp_export_jpg_file (SPDocument *doc, gchar const *filename, double x0, double y0, double x1, double y1, - unsigned int width, unsigned int height, double xdpi, double ydpi, unsigned long bgcolor, double quality, GSList *items_only = NULL); + bool sp_export_jpg_file (SPDocument *doc, gchar const *filename, double x0, double y0, double x1, double y1, + unsigned int width, unsigned int height, double xdpi, double ydpi, unsigned long bgcolor, double quality, SPItem *item_only = NULL); Inkscape::Pixbuf *sp_generate_internal_bitmap(SPDocument *doc, gchar const *filename, double x0, double y0, double x1, double y1, unsigned width, unsigned height, double xdpi, double ydpi, - unsigned long bgcolor, GSList *items_only = NULL); + unsigned long bgcolor, SPItem *item_only = NULL); #endif diff --git a/src/libnrtype/Layout-TNG-Output.cpp b/src/libnrtype/Layout-TNG-Output.cpp index 7f20dee95..9a73b9eca 100644 --- a/src/libnrtype/Layout-TNG-Output.cpp +++ b/src/libnrtype/Layout-TNG-Output.cpp @@ -800,7 +800,7 @@ void Layout::fitToPathAlign(SVGLength const &startOffset, Path const &path) SPCurve *Layout::convertToCurves(iterator const &from_glyph, iterator const &to_glyph) const { - GSList *cc = NULL; + std::list cc; for (int glyph_index = from_glyph._glyph_index ; glyph_index < to_glyph._glyph_index ; glyph_index++) { Geom::Affine glyph_matrix; @@ -811,22 +811,14 @@ SPCurve *Layout::convertToCurves(iterator const &from_glyph, iterator const &to_ if (pathv) { Geom::PathVector pathv_trans = (*pathv) * glyph_matrix; SPCurve *c = new SPCurve(pathv_trans); - if (c) cc = g_slist_prepend(cc, c); + if (c) cc.push_back(c); } } - cc = g_slist_reverse(cc); + SPCurve *curve = new SPCurve(cc); - SPCurve *curve; - if ( cc ) { - curve = SPCurve::concat(cc); - } else { - curve = new SPCurve(); - } - - while (cc) { + for (auto i:cc) { /* fixme: This is dangerous, as we are mixing art_alloc and g_new */ - reinterpret_cast(cc->data)->unref(); - cc = g_slist_remove(cc, cc->data); + i->unref(); } return curve; diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 7840c4ca8..043d47517 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -237,13 +237,12 @@ ObjectSet::breakApart(bool skip_undo) item->deleteObject(false); - GSList *list = curve->split(); + std::list list = curve->split(); curve->unref(); std::vector reprs; - for (GSList *l = list; l != NULL; l = l->next) { - curve = (SPCurve *) l->data; + for (auto curve:list) { Inkscape::XML::Node *repr = parent->document()->createElement("svg:path"); repr->setAttribute("style", style); @@ -266,7 +265,7 @@ ObjectSet::breakApart(bool skip_undo) repr->setPosition(pos > 0 ? pos : 0); // if it's the first one, restore id - if (l == list) + if (curve == *(list.begin())) repr->setAttribute("id", id); reprs.push_back(repr); @@ -275,7 +274,6 @@ ObjectSet::breakApart(bool skip_undo) } setReprList(reprs); - g_slist_free(list); g_free(style); g_free(path_effect); } diff --git a/src/ui/dialog/spellcheck.cpp b/src/ui/dialog/spellcheck.cpp index 4f7657f4f..3318b5e6b 100644 --- a/src/ui/dialog/spellcheck.cpp +++ b/src/ui/dialog/spellcheck.cpp @@ -50,8 +50,6 @@ namespace Dialog { SpellCheck::SpellCheck (void) : UI::Widget::Panel ("", "/dialogs/spellcheck/", SP_VERB_DIALOG_SPELLCHECK), - _rects(NULL), - _seen_objects(NULL), _text(NULL), _layout(NULL), _stops(0), @@ -196,12 +194,11 @@ void SpellCheck::setTargetDesktop(SPDesktop *desktop) void SpellCheck::clearRects() { - for (GSList *it = _rects; it; it = it->next) { - sp_canvas_item_hide(SP_CANVAS_ITEM(it->data)); - sp_canvas_item_destroy(SP_CANVAS_ITEM(it->data)); + for(auto t : _rects) { + sp_canvas_item_hide(t); + sp_canvas_item_destroy(t); } - g_slist_free(_rects); - _rects = NULL; + _rects.clear(); } void SpellCheck::disconnect() @@ -214,47 +211,39 @@ void SpellCheck::disconnect() } } -GSList *SpellCheck::allTextItems (SPObject *r, GSList *l, bool hidden, bool locked) +void SpellCheck::allTextItems (SPObject *r, std::vector &l, bool hidden, bool locked) { if (!desktop) - return l; // no desktop to check + return; // no desktop to check if (SP_IS_DEFS(r)) - return l; // we're not interested in items in defs + return; // we're not interested in items in defs if (!strcmp(r->getRepr()->name(), "svg:metadata")) { - return l; // we're not interested in metadata + return; // we're not interested in metadata } for (auto& child: r->children) { if (SP_IS_ITEM (&child) && !child.cloned && !desktop->isLayer(SP_ITEM(&child))) { if ((hidden || !desktop->itemIsHidden(SP_ITEM(&child))) && (locked || !SP_ITEM(&child)->isLocked())) { if (SP_IS_TEXT(&child) || SP_IS_FLOWTEXT(&child)) - l = g_slist_prepend (l, &child); + l.push_back(static_cast(&child)); } } - l = allTextItems (&child, l, hidden, locked); + allTextItems (&child, l, hidden, locked); } - return l; + return; } bool SpellCheck::textIsValid (SPObject *root, SPItem *text) { - GSList *l = NULL; - l = allTextItems (root, l, false, true); - for (GSList *i = l; i; i = i->next) { - SPItem *item = static_cast(i->data); - if (item == text) { - g_slist_free (l); - return true; - } - } - g_slist_free (l); - return false; + std::vector l; + allTextItems (root, l, false, true); + return (std::find(l.begin(), l.end(), text) != l.end()); } -gint SpellCheck::compareTextBboxes (gconstpointer a, gconstpointer b) +bool SpellCheck::compareTextBboxes (gconstpointer a, gconstpointer b)//returns adesktopVisualBounds(); Geom::OptRect bbox2 = i2->desktopVisualBounds(); if (!bbox1 || !bbox2) { - return 0; + return false; } // vector between top left corners Geom::Point diff = Geom::Point(bbox2->min()[Geom::X], bbox2->max()[Geom::Y]) - Geom::Point(bbox1->min()[Geom::X], bbox1->max()[Geom::Y]); - // sort top to bottom, left to right, but: - // if i2 is higher only 0.2 or less times it is righter than i1, put i1 first - if (diff[Geom::Y] > 0.2 * diff[Geom::X]) - return 1; - else - return -1; - - return 0; + return diff[Geom::Y] == 0 ? (diff[Geom::X] < 0) : (diff[Geom::Y] < 0); } // We regenerate and resort the list every time, because user could have changed it while the // dialog was waiting SPItem *SpellCheck::getText (SPObject *root) { - GSList *l = NULL; - l = allTextItems (root, l, false, true); - l = g_slist_sort(l, (GCompareFunc)SpellCheck::compareTextBboxes); - - for (GSList *i = l; i; i = i->next) { - SPItem *item = static_cast(i->data); - if (!g_slist_find (_seen_objects, item)) { - _seen_objects = g_slist_prepend(_seen_objects, item); - g_slist_free(l); + std::vector l; + allTextItems (root, l, false, true); + std::sort(l.begin(),l.end(),SpellCheck::compareTextBboxes); + + for (auto item:l) { + if(_seen_objects.insert(item).second) return item; - } } - - g_slist_free(l); return NULL; } @@ -402,8 +378,7 @@ SpellCheck::init(SPDesktop *d) _root = desktop->getDocument()->getRoot(); // empty the list of objects we've checked - g_slist_free (_seen_objects); - _seen_objects = NULL; + _seen_objects.clear(); // grab first text nextText(); @@ -456,8 +431,7 @@ SpellCheck::finished () g_free(label); } - g_slist_free(_seen_objects); - _seen_objects = NULL; + _seen_objects.clear(); desktop = NULL; _root = NULL; @@ -615,7 +589,7 @@ SpellCheck::nextWord() curve->lineto(area.corner(0)); sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(rect), curve); sp_canvas_item_show(rect); - _rects = g_slist_prepend(_rects, rect); + _rects.push_back(rect); // scroll to make it all visible Geom::Point const center = desktop->get_display_area().midpoint(); @@ -707,10 +681,10 @@ SpellCheck::nextWord() void SpellCheck::deleteLastRect () { - if (_rects) { - sp_canvas_item_hide(SP_CANVAS_ITEM(_rects->data)); - sp_canvas_item_destroy(SP_CANVAS_ITEM(_rects->data)); - _rects = _rects->next; // pop latest-prepended rect + if (!_rects.empty()) { + sp_canvas_item_hide(_rects.back()); + sp_canvas_item_destroy(_rects.back()); + _rects.pop_back(); // pop latest-prepended rect } } @@ -861,7 +835,6 @@ SpellCheck::onStart () } } - /* Local Variables: mode:c++ diff --git a/src/ui/dialog/spellcheck.h b/src/ui/dialog/spellcheck.h index 834f23c24..e7563ad1e 100644 --- a/src/ui/dialog/spellcheck.h +++ b/src/ui/dialog/spellcheck.h @@ -16,6 +16,9 @@ # include #endif +#include +#include + #include #include #include @@ -68,7 +71,7 @@ private: /** * Returns a list of all the text items in the SPObject */ - GSList *allTextItems (SPObject *r, GSList *l, bool hidden, bool locked); + void allTextItems (SPObject *r, std::vector &l, bool hidden, bool locked); /** * Is text inside the SPOject's tree @@ -78,7 +81,7 @@ private: /** * Compare the visual bounds of 2 SPItems referred to by a and b */ - static gint compareTextBboxes (gconstpointer a, gconstpointer b); + static bool compareTextBboxes (gconstpointer a, gconstpointer b); SPItem *getText (SPObject *root); void nextText (); @@ -165,12 +168,12 @@ private: /** * list of canvasitems (currently just rects) that mark misspelled things on canvas */ - GSList *_rects; + std::vector _rects; /** * list of text objects we have already checked in this session */ - GSList *_seen_objects; + std::set _seen_objects; /** * the object currently being checked diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index b876fa98c..558b0b19e 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -617,52 +617,48 @@ void SymbolsDialog::get_symbols() { } } -GSList* SymbolsDialog::symbols_in_doc_recursive (SPObject *r, GSList *l) +void SymbolsDialog::symbols_in_doc_recursive (SPObject *r, std::vector &l) { - g_return_val_if_fail(r != NULL, l); + if(!r) return; // Stop multiple counting of same symbol if ( dynamic_cast(r) ) { - return l; + return; } if ( dynamic_cast(r) ) { - l = g_slist_prepend (l, r); + l.push_back(dynamic_cast(r)); } for (auto& child: r->children) { - l = symbols_in_doc_recursive( &child, l ); + symbols_in_doc_recursive( &child, l ); } - - return l; } -GSList* SymbolsDialog::symbols_in_doc( SPDocument* symbolDocument ) { +std::vector SymbolsDialog::symbols_in_doc( SPDocument* symbolDocument ) +{ - GSList *l = NULL; - l = symbols_in_doc_recursive (symbolDocument->getRoot(), l ); - l = g_slist_reverse( l ); + std::vector l; + symbols_in_doc_recursive (symbolDocument->getRoot(), l ); return l; } -GSList* SymbolsDialog::use_in_doc_recursive (SPObject *r, GSList *l) +void SymbolsDialog::use_in_doc_recursive (SPObject *r, std::vector &l) { if ( dynamic_cast(r) ) { - l = g_slist_prepend (l, r); + l.push_back(dynamic_cast(r)); } for (auto& child: r->children) { - l = use_in_doc_recursive( &child, l ); + use_in_doc_recursive( &child, l ); } - - return l; } -GSList* SymbolsDialog::use_in_doc( SPDocument* useDocument ) { +std::vector SymbolsDialog::use_in_doc( SPDocument* useDocument ) { - GSList *l = NULL; - l = use_in_doc_recursive (useDocument->getRoot(), l ); + std::vector l; + use_in_doc_recursive (useDocument->getRoot(), l); return l; } @@ -671,10 +667,8 @@ GSList* SymbolsDialog::use_in_doc( SPDocument* useDocument ) { gchar const* SymbolsDialog::style_from_use( gchar const* id, SPDocument* document) { gchar const* style = 0; - GSList* l = use_in_doc( document ); - for( ; l != NULL; l = l->next ) { - SPObject *obj = reinterpret_cast(l->data); - SPUse *use = dynamic_cast(obj); + std::vector l = use_in_doc( document ); + for( auto use:l ) { if ( use ) { gchar const *href = use->getRepr()->attribute("xlink:href"); if( href ) { @@ -693,10 +687,8 @@ gchar const* SymbolsDialog::style_from_use( gchar const* id, SPDocument* documen void SymbolsDialog::add_symbols( SPDocument* symbolDocument ) { - GSList* l = symbols_in_doc( symbolDocument ); - for( ; l != NULL; l = l->next ) { - SPObject *obj = reinterpret_cast(l->data); - SPSymbol *symbol = dynamic_cast(obj); + std::vector l = symbols_in_doc( symbolDocument ); + for(auto symbol:l) { if (symbol) { add_symbol( symbol ); } diff --git a/src/ui/dialog/symbols.h b/src/ui/dialog/symbols.h index 5dc1e3cad..747e5c6c9 100644 --- a/src/ui/dialog/symbols.h +++ b/src/ui/dialog/symbols.h @@ -14,10 +14,10 @@ #define INKSCAPE_UI_DIALOG_SYMBOLS_H #include "display/drawing.h" - #include "ui/dialog/desktop-tracker.h" - #include "ui/widget/panel.h" +#include "sp-symbol.h" +#include "sp-use.h" #include @@ -85,10 +85,10 @@ private: void add_symbol( SPObject* symbol_document ); SPDocument* symbols_preview_doc(); - GSList* symbols_in_doc_recursive(SPObject *r, GSList *l); - GSList* symbols_in_doc( SPDocument* document ); - GSList* use_in_doc_recursive(SPObject *r, GSList *l); - GSList* use_in_doc( SPDocument* document ); + void symbols_in_doc_recursive(SPObject *r, std::vector &l); + std::vector symbols_in_doc( SPDocument* document ); + void use_in_doc_recursive(SPObject *r, std::vector &l); + std::vector use_in_doc( SPDocument* document ); gchar const* style_from_use( gchar const* id, SPDocument* document); Glib::RefPtr draw_symbol(SPObject *symbol); diff --git a/src/ui/tool/manipulator.h b/src/ui/tool/manipulator.h index 07e01a656..0f26c6de1 100644 --- a/src/ui/tool/manipulator.h +++ b/src/ui/tool/manipulator.h @@ -98,16 +98,17 @@ public: bool empty() { return _mmap.empty(); } - void setItems(GSList const *list) { + + void setItems(std::vector list) { // this function is not called anywhere ... delete ? std::set to_remove; for (typename MapType::iterator mi = _mmap.begin(); mi != _mmap.end(); ++mi) { to_remove.insert(mi->first); } - for (GSList *i = const_cast(list); i; i = i->next) { - if (_isItemType(i->data)) { + for (auto i:list) { + if (_isItemType(i)) { // erase returns the number of items removed // if nothing was removed, it means this item did not have a manipulator - add it - if (!to_remove.erase(i->data)) addItem(i->data); + if (!to_remove.erase(i)) addItem(i); } } typedef typename std::set::iterator RmIter; diff --git a/src/ui/tools/calligraphic-tool.cpp b/src/ui/tools/calligraphic-tool.cpp index 3e00fe69c..ca94ac75f 100644 --- a/src/ui/tools/calligraphic-tool.cpp +++ b/src/ui/tools/calligraphic-tool.cpp @@ -421,10 +421,9 @@ void CalligraphicTool::cancel() { sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0); /* Remove all temporary line segments */ - while (this->segments) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->segments->data)); - this->segments = g_slist_remove(this->segments, this->segments->data); - } + for (auto i:this->segments) + sp_canvas_item_destroy(SP_CANVAS_ITEM(i)); + this->segments.clear(); /* reset accumulated curve */ this->accumulated->reset(); @@ -731,10 +730,9 @@ bool CalligraphicTool::root_handler(GdkEvent* event) { this->apply(motion_dt); /* Remove all temporary line segments */ - while (this->segments) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->segments->data)); - this->segments = g_slist_remove(this->segments, this->segments->data); - } + for (auto i:this->segments) + sp_canvas_item_destroy(SP_CANVAS_ITEM(i)); + this->segments.clear(); /* Create object */ this->fit_and_split(true); @@ -1089,7 +1087,7 @@ void CalligraphicTool::fit_and_split(bool release) { this->currentcurve->curveto(bp2[2], bp2[1], bp2[0]); } // FIXME: dc->segments is always NULL at this point?? - if (!this->segments) { // first segment + if (this->segments.empty()) { // first segment add_cap(this->currentcurve, b2[0], b1[0], this->cap_rounding); } this->currentcurve->closepath(); @@ -1143,8 +1141,8 @@ void CalligraphicTool::fit_and_split(bool release) { sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(cbp), 0x00000000, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); /* fixme: Cannot we cascade it to root more clearly? */ g_signal_connect(G_OBJECT(cbp), "event", G_CALLBACK(sp_desktop_root_handler), desktop); - - this->segments = g_slist_prepend(this->segments, cbp); + + this->segments.push_back(cbp); } this->point1[0] = this->point1[this->npoints - 1]; diff --git a/src/ui/tools/dynamic-base.cpp b/src/ui/tools/dynamic-base.cpp index bb4989333..1026c26c6 100644 --- a/src/ui/tools/dynamic-base.cpp +++ b/src/ui/tools/dynamic-base.cpp @@ -21,7 +21,6 @@ namespace Tools { DynamicBase::DynamicBase(gchar const *const *cursor_shape) : ToolBase(cursor_shape) , accumulated(NULL) - , segments(NULL) , currentshape(NULL) , currentcurve(NULL) , cal1(NULL) @@ -62,10 +61,10 @@ DynamicBase::~DynamicBase() { this->accumulated = 0; } - while (this->segments) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->segments->data)); - this->segments = g_slist_remove(this->segments, this->segments->data); + for (auto i:segments) { + sp_canvas_item_destroy(SP_CANVAS_ITEM(i)); } + segments.clear(); if (this->currentcurve) { this->currentcurve = this->currentcurve->unref(); diff --git a/src/ui/tools/dynamic-base.h b/src/ui/tools/dynamic-base.h index e270052f3..b9ffd71ce 100644 --- a/src/ui/tools/dynamic-base.h +++ b/src/ui/tools/dynamic-base.h @@ -20,6 +20,7 @@ */ #include "ui/tools/tool-base.h" +#include "display/sp-canvas-item.h" struct SPCanvasItem; class SPCurve; @@ -48,7 +49,7 @@ protected: SPCurve *accumulated; /** canvas items for "committed" segments */ - GSList *segments; + std::vector segments; /** canvas item for red "leading" segment */ SPCanvasItem *currentshape; diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index b919c138c..83039be18 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -360,10 +360,9 @@ void EraserTool::cancel() { this->is_drawing = false; sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0); /* Remove all temporary line segments */ - while (this->segments) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->segments->data)); - this->segments = g_slist_remove(this->segments, this->segments->data); - } + for (auto i : this->segments) + sp_canvas_item_destroy(SP_CANVAS_ITEM(i)); + this->segments.clear(); /* reset accumulated curve */ this->accumulated->reset(); this->clear_current(); @@ -464,10 +463,9 @@ bool EraserTool::root_handler(GdkEvent* event) { this->apply(motion_dt); /* Remove all temporary line segments */ - while (this->segments) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->segments->data)); - this->segments = g_slist_remove(this->segments, this->segments->data); - } + for (auto i : this->segments) + sp_canvas_item_destroy(SP_CANVAS_ITEM(i)); + this->segments.clear(); /* Create object */ this->fit_and_split(true); @@ -1015,7 +1013,7 @@ void EraserTool::fit_and_split(bool release) { } // FIXME: this->segments is always NULL at this point?? - if (!this->segments) { // first segment + if (this->segments.empty()) { // first segment add_cap(this->currentcurve, b2[1], b2[0], b1[0], b1[1], this->cap_rounding); } @@ -1072,7 +1070,7 @@ void EraserTool::fit_and_split(bool release) { /* fixme: Cannot we cascade it to root more clearly? */ g_signal_connect(G_OBJECT(cbp), "event", G_CALLBACK(sp_desktop_root_handler), desktop); - this->segments = g_slist_prepend(this->segments, cbp); + this->segments.push_back(cbp); if (eraser_mode == ERASER_MODE_DELETE) { sp_canvas_item_hide(cbp); diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp index fce17542a..a85c89400 100644 --- a/src/ui/tools/freehand-base.cpp +++ b/src/ui/tools/freehand-base.cpp @@ -76,13 +76,10 @@ FreehandBase::FreehandBase(gchar const *const *cursor_shape) , red_curve(NULL) , blue_bpath(NULL) , blue_curve(NULL) - , green_bpaths(NULL) , green_curve(NULL) , green_anchor(NULL) , green_closed(false) , white_item(NULL) - , white_curves(NULL) - , white_anchors(NULL) , overwrite_curve(NULL) , sa(NULL) , ea(NULL) @@ -558,22 +555,20 @@ static void spdc_attach_selection(FreehandBase *dc, Inkscape::Selection */*sel*/ SPCurve *norm = SP_PATH(item)->get_curve_for_edit(); norm->transform((dc->white_item)->i2dt_affine()); g_return_if_fail( norm != NULL ); - dc->white_curves = g_slist_reverse(norm->split()); + dc->white_curves = norm->split(); norm->unref(); // Anchor list - for (GSList *l = dc->white_curves; l != NULL; l = l->next) { - SPCurve *c; - c = static_cast(l->data); + for (auto c:dc->white_curves) { g_return_if_fail( c->get_segment_count() > 0 ); if ( !c->is_closed() ) { SPDrawAnchor *a; a = sp_draw_anchor_new(dc, c, TRUE, *(c->first_point())); if (a) - dc->white_anchors = g_slist_prepend(dc->white_anchors, a); + dc->white_anchors.push_back(a); a = sp_draw_anchor_new(dc, c, FALSE, *(c->last_point())); if (a) - dc->white_anchors = g_slist_prepend(dc->white_anchors, a); + dc->white_anchors.push_back(a); } } // fixme: recalculate active anchor? @@ -645,10 +640,9 @@ void spdc_concat_colors_and_flush(FreehandBase *dc, gboolean forceclosed) Inkscape::Preferences *prefs = Inkscape::Preferences::get(); // Green dc->green_curve = new SPCurve(); - while (dc->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->green_bpaths->data)); - dc->green_bpaths = g_slist_remove(dc->green_bpaths, dc->green_bpaths->data); - } + for (auto i : dc->green_bpaths) + sp_canvas_item_destroy(i); + dc->green_bpaths.clear(); // Blue c->append_continuous(dc->blue_curve, 0.0625); @@ -698,8 +692,8 @@ void spdc_concat_colors_and_flush(FreehandBase *dc, gboolean forceclosed) c->unref(); dc->overwrite_curve->closepath_current(); if(dc->sa){ - dc->white_curves = g_slist_remove(dc->white_curves, dc->sa->curve); - dc->white_curves = g_slist_append(dc->white_curves, dc->overwrite_curve); + dc->white_curves.erase(std::find(dc->white_curves.begin(),dc->white_curves.end(), dc->sa->curve)); + dc->white_curves.push_back(dc->overwrite_curve); } }else{ dc->sa->curve->append_continuous(c, 0.0625); @@ -713,7 +707,7 @@ void spdc_concat_colors_and_flush(FreehandBase *dc, gboolean forceclosed) // Step C - test start if (dc->sa) { SPCurve *s = dc->sa->curve; - dc->white_curves = g_slist_remove(dc->white_curves, s); + dc->white_curves.erase(std::find(dc->white_curves.begin(),dc->white_curves.end(), s)); if(prefs->getInt(tool_name(dc) + "/freehand-mode", 0) == 1 || prefs->getInt(tool_name(dc) + "/freehand-mode", 0) == 2){ s = dc->overwrite_curve; @@ -726,7 +720,7 @@ void spdc_concat_colors_and_flush(FreehandBase *dc, gboolean forceclosed) c = s; } else /* Step D - test end */ if (dc->ea) { SPCurve *e = dc->ea->curve; - dc->white_curves = g_slist_remove(dc->white_curves, e); + dc->white_curves.erase(std::find(dc->white_curves.begin(),dc->white_curves.end(), e)); if (!dc->ea->start) { e = reverse_then_unref(e); } @@ -766,11 +760,10 @@ void spdc_concat_colors_and_flush(FreehandBase *dc, gboolean forceclosed) static void spdc_flush_white(FreehandBase *dc, SPCurve *gc) { SPCurve *c; - if (dc->white_curves) { + if (! dc->white_curves.empty()) { g_assert(dc->white_item); c = SPCurve::concat(dc->white_curves); - g_slist_free(dc->white_curves); - dc->white_curves = NULL; + dc->white_curves.clear(); if (gc) { c->append(gc, FALSE); } @@ -856,8 +849,8 @@ SPDrawAnchor *spdc_test_inside(FreehandBase *dc, Geom::Point p) active = sp_draw_anchor_test(dc->green_anchor, p, TRUE); } - for (GSList *l = dc->white_anchors; l != NULL; l = l->next) { - SPDrawAnchor *na = sp_draw_anchor_test(static_cast(l->data), p, !active); + for (auto i:dc->white_anchors) { + SPDrawAnchor *na = sp_draw_anchor_test(i, p, !active); if ( !active && na ) { active = na; } @@ -871,14 +864,12 @@ static void spdc_reset_white(FreehandBase *dc) // We do not hold refcount dc->white_item = NULL; } - while (dc->white_curves) { - reinterpret_cast(dc->white_curves->data)->unref(); - dc->white_curves = g_slist_remove(dc->white_curves, dc->white_curves->data); - } - while (dc->white_anchors) { - sp_draw_anchor_destroy(static_cast(dc->white_anchors->data)); - dc->white_anchors = g_slist_remove(dc->white_anchors, dc->white_anchors->data); - } + for (auto i: dc->white_curves) + i->unref(); + dc->white_curves.clear(); + for (auto i:dc->white_anchors) + sp_draw_anchor_destroy(i); + dc->white_anchors.clear(); } static void spdc_free_colors(FreehandBase *dc) @@ -902,10 +893,9 @@ static void spdc_free_colors(FreehandBase *dc) } // Green - while (dc->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->green_bpaths->data)); - dc->green_bpaths = g_slist_remove(dc->green_bpaths, dc->green_bpaths->data); - } + for (auto i : dc->green_bpaths) + sp_canvas_item_destroy(i); + dc->green_bpaths.clear(); if (dc->green_curve) { dc->green_curve = dc->green_curve->unref(); } @@ -918,14 +908,12 @@ static void spdc_free_colors(FreehandBase *dc) // We do not hold refcount dc->white_item = NULL; } - while (dc->white_curves) { - reinterpret_cast(dc->white_curves->data)->unref(); - dc->white_curves = g_slist_remove(dc->white_curves, dc->white_curves->data); - } - while (dc->white_anchors) { - sp_draw_anchor_destroy(static_cast(dc->white_anchors->data)); - dc->white_anchors = g_slist_remove(dc->white_anchors, dc->white_anchors->data); - } + for (auto i: dc->white_curves) + i->unref(); + dc->white_curves.clear(); + for (auto i:dc->white_anchors) + sp_draw_anchor_destroy(i); + dc->white_anchors.clear(); } void spdc_create_single_dot(ToolBase *ec, Geom::Point const &pt, char const *tool, guint event_state) { diff --git a/src/ui/tools/freehand-base.h b/src/ui/tools/freehand-base.h index a3069aa09..dc114ef68 100644 --- a/src/ui/tools/freehand-base.h +++ b/src/ui/tools/freehand-base.h @@ -66,15 +66,15 @@ public: SPCurve *blue_curve; // Green - GSList *green_bpaths; + std::vector green_bpaths; SPCurve *green_curve; SPDrawAnchor *green_anchor; gboolean green_closed; // a flag meaning we hit the green anchor, so close the path on itself // White SPItem *white_item; - GSList *white_curves; - GSList *white_anchors; + std::list white_curves; + std::vector white_anchors; // Alternative curve to use on continuing the exisiting curve in case of // bspline or spirolive, because using anchor curves gives random memory diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp index 0db5c3954..f8dfd7a10 100644 --- a/src/ui/tools/pen-tool.cpp +++ b/src/ui/tools/pen-tool.cpp @@ -860,18 +860,18 @@ bool PenTool::_handle2ButtonPress(GdkEventButton const &bevent) { void PenTool::_redrawAll() { // green - if (this->green_bpaths) { + if (! this->green_bpaths.empty()) { // remove old piecewise green canvasitems - while (this->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + for (auto i : this->green_bpaths){ + sp_canvas_item_destroy(i); } + this->green_bpaths.clear(); // one canvas bpath for all of green_curve SPCanvasItem *canvas_shape = sp_canvas_bpath_new(this->desktop->getSketch(), this->green_curve, true); sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(canvas_shape), this->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(canvas_shape), 0, SP_WIND_RULE_NONZERO); - this->green_bpaths = g_slist_prepend(this->green_bpaths, canvas_shape); + this->green_bpaths.push_back(canvas_shape); } if (this->green_anchor) { SP_CTRL(this->green_anchor->ctrl)->moveto(this->green_anchor->dp); @@ -1253,10 +1253,10 @@ void PenTool::_resetColors() { this->blue_curve->reset(); sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->blue_bpath), NULL, true); // Green - while (this->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + for (auto i:this->green_bpaths) { + sp_canvas_item_destroy(i); } + this->green_bpaths.clear(); this->green_curve->reset(); if (this->green_anchor) { this->green_anchor = sp_draw_anchor_destroy(this->green_anchor); @@ -1332,17 +1332,17 @@ void PenTool::_bsplineSpiroColor() } //We erase all the "green_bpaths" to recreate them after with the colour //transparency recently modified - if (this->green_bpaths) { + if (!this->green_bpaths.empty()) { // remove old piecewise green canvasitems - while (this->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + for (auto i:this->green_bpaths) { + sp_canvas_item_destroy(i); } + this->green_bpaths.clear(); // one canvas bpath for all of green_curve SPCanvasItem *canvas_shape = sp_canvas_bpath_new(this->desktop->getSketch(), this->green_curve, true); sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(canvas_shape), this->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(canvas_shape), 0, SP_WIND_RULE_NONZERO); - this->green_bpaths = g_slist_prepend(this->green_bpaths, canvas_shape); + this->green_bpaths.push_back(canvas_shape); } sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(this->red_bpath), this->red_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); } @@ -1555,18 +1555,18 @@ void PenTool::_bsplineSpiroMotion(guint const state){ this->overwrite_curve = tmp_curve->copy(); } } - if (this->green_bpaths) { + if (!this->green_bpaths.empty()) { this->green_curve = tmp_curve->copy(); // remove old piecewise green canvasitems - while (this->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + for (auto i: this->green_bpaths) { + sp_canvas_item_destroy(i); } + this->green_bpaths.clear(); // one canvas bpath for all of green_curve SPCanvasItem *canvas_shape = sp_canvas_bpath_new(this->desktop->getSketch(), this->green_curve, true); sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(canvas_shape), this->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); sp_canvas_bpath_set_fill(SP_CANVAS_BPATH(canvas_shape), 0, SP_WIND_RULE_NONZERO); - this->green_bpaths = g_slist_prepend(this->green_bpaths, canvas_shape); + this->green_bpaths.push_back(canvas_shape); } } if (cubic) { @@ -1927,7 +1927,7 @@ void PenTool::_finishSegment(Geom::Point const p, guint const state) { curve->unref(); sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(canvas_shape), this->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); - this->green_bpaths = g_slist_prepend(this->green_bpaths, canvas_shape); + this->green_bpaths.push_back(canvas_shape); this->p[0] = this->p[3]; this->p[1] = this->p[4]; @@ -1953,11 +1953,9 @@ bool PenTool::_undoLastPoint() { // Reset red curve this->red_curve->reset(); // Destroy topmost green bpath - if (this->green_bpaths) { - if (this->green_bpaths->data) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - } - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + if (!this->green_bpaths.empty()) { + sp_canvas_item_destroy(this->green_bpaths.back()); + this->green_bpaths.pop_back(); } // Get last segment if ( this->green_curve->is_unset() ) { @@ -1985,11 +1983,9 @@ bool PenTool::_undoLastPoint() { // delete the last segment of the green curve if (this->green_curve->get_segment_count() == 1) { this->npoints = 5; - if (this->green_bpaths) { - if (this->green_bpaths->data) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - } - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + if (!this->green_bpaths.empty()) { + sp_canvas_item_destroy(this->green_bpaths.back()); + this->green_bpaths.pop_back(); } this->green_curve->reset(); } else { diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp index 99b8103c3..61799b306 100644 --- a/src/ui/tools/pencil-tool.cpp +++ b/src/ui/tools/pencil-tool.cpp @@ -437,10 +437,10 @@ void PencilTool::_cancel() { this->red_curve->reset(); sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->red_bpath), NULL); - while (this->green_bpaths) { - sp_canvas_item_destroy(SP_CANVAS_ITEM(this->green_bpaths->data)); - this->green_bpaths = g_slist_remove(this->green_bpaths, this->green_bpaths->data); + for (auto i:this->green_bpaths) { + sp_canvas_item_destroy(i); } + this->green_bpaths.clear(); this->green_curve->reset(); if (this->green_anchor) { this->green_anchor = sp_draw_anchor_destroy(this->green_anchor); @@ -858,7 +858,7 @@ void PencilTool::_fitAndSplit() { } sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(cshape), this->green_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT); - this->green_bpaths = g_slist_prepend(this->green_bpaths, cshape); + this->green_bpaths.push_back(cshape); this->red_curve_is_valid = false; } diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp index 68acddfcc..5d911e9d2 100644 --- a/src/ui/widget/selected-style.cpp +++ b/src/ui/widget/selected-style.cpp @@ -139,7 +139,6 @@ SelectedStyle::SelectedStyle(bool /*layout*/) _opacity_blocked (false), - _unit_mis(NULL), _sw_unit(NULL) { set_name("SelectedStyle"); @@ -336,7 +335,7 @@ SelectedStyle::SelectedStyle(bool /*layout*/) while(iter != m.end()) { Gtk::RadioMenuItem *mi = Gtk::manage(new Gtk::RadioMenuItem(_sw_group)); mi->add(*(new Gtk::Label(iter->first, Gtk::ALIGN_START))); - _unit_mis = g_slist_append(_unit_mis, mi); + _unit_mis.push_back(mi); Inkscape::Util::Unit const *u = unit_table.getUnit(iter->first); mi->signal_activate().connect(sigc::bind(sigc::mem_fun(*this, &SelectedStyle::on_popup_units), u)); _popup_sw.attach(*mi, 0,1, row, row+1); @@ -449,6 +448,7 @@ SelectedStyle::~SelectedStyle() delete selection_modified_connection; subselection_changed_connection->disconnect(); delete subselection_changed_connection; + _unit_mis.clear(); for (int i = SS_FILL; i <= SS_STROKE; i++) { delete _color_preview[i]; @@ -488,9 +488,7 @@ SelectedStyle::setDesktop(SPDesktop *desktop) _sw_unit = desktop->getNamedView()->display_units; // Set the doc default unit active in the units list - gint length = g_slist_length(_unit_mis); - for (int i = 0; i < length; i++) { - Gtk::RadioMenuItem *mi = (Gtk::RadioMenuItem *) g_slist_nth_data(_unit_mis, i); + for ( auto mi:_unit_mis ) { if (mi && mi->get_label() == _sw_unit->abbr) { mi->set_active(); break; diff --git a/src/ui/widget/selected-style.h b/src/ui/widget/selected-style.h index 065d745f0..b7f3d5dda 100644 --- a/src/ui/widget/selected-style.h +++ b/src/ui/widget/selected-style.h @@ -267,7 +267,7 @@ protected: Gtk::Menu _popup_sw; Gtk::RadioButtonGroup _sw_group; - GSList *_unit_mis; + std::vector _unit_mis; void on_popup_units(Inkscape::Util::Unit const *u); void on_popup_preset(int i); Gtk::MenuItem _popup_sw_remove; diff --git a/src/ui/widget/unit-tracker.cpp b/src/ui/widget/unit-tracker.cpp index a1501c229..d36220b74 100644 --- a/src/ui/widget/unit-tracker.cpp +++ b/src/ui/widget/unit-tracker.cpp @@ -14,7 +14,7 @@ #include "style-internal.h" #include "unit-tracker.h" -#include "widgets/ege-select-one-action.h" +//#include "widgets/ege-select-one-action.h" #define COLUMN_STRING 0 @@ -31,9 +31,6 @@ UnitTracker::UnitTracker(UnitType unit_type) : _activeUnit(NULL), _activeUnitInitialized(false), _store(0), - _unitList(0), - _actionList(0), - _adjList(0), _priorValues() { _store = gtk_list_store_new(1, G_TYPE_STRING); @@ -58,17 +55,17 @@ UnitTracker::UnitTracker(UnitType unit_type) : UnitTracker::~UnitTracker() { // Unhook weak references to GtkActions - while (_actionList) { - g_signal_handlers_disconnect_by_func(G_OBJECT(_actionList->data), (gpointer) _unitChangedCB, this); - g_object_weak_unref(G_OBJECT(_actionList->data), _actionFinalizedCB, this); - _actionList = g_slist_delete_link(_actionList, _actionList); + for (auto i : _actionList) { + g_signal_handlers_disconnect_by_func(G_OBJECT(i), (gpointer) _unitChangedCB, this); + g_object_weak_unref(G_OBJECT(i), _actionFinalizedCB, this); } + _actionList.clear(); // Unhook weak references to GtkAdjustments - while (_adjList) { - g_object_weak_unref(G_OBJECT(_adjList->data), _adjustmentFinalizedCB, this); - _adjList = g_slist_delete_link(_adjList, _adjList); + for (auto i : _adjList) { + g_object_weak_unref(G_OBJECT(i), _adjustmentFinalizedCB, this); } + _adjList.clear(); } bool UnitTracker::isUpdating() const @@ -109,9 +106,9 @@ void UnitTracker::setActiveUnitByAbbr(gchar const *abbr) void UnitTracker::addAdjustment(GtkAdjustment *adj) { - if (!g_slist_find(_adjList, adj)) { + if (std::find(_adjList.begin(),_adjList.end(),adj)!=_adjList.end()) { g_object_weak_ref(G_OBJECT(adj), _adjustmentFinalizedCB, this); - _adjList = g_slist_append(_adjList, adj); + _adjList.push_back(adj); } } @@ -147,7 +144,7 @@ GtkAction *UnitTracker::createAction(gchar const *name, gchar const *label, gcha ege_select_one_action_set_appearance(act1, "minimal"); g_object_weak_ref(G_OBJECT(act1), _actionFinalizedCB, this); g_signal_connect(G_OBJECT(act1), "changed", G_CALLBACK(_unitChangedCB), this); - _actionList = g_slist_append(_actionList, act1); + _actionList.push_back(act1); return GTK_ACTION(act1); } @@ -180,9 +177,10 @@ void UnitTracker::_adjustmentFinalizedCB(gpointer data, GObject *where_the_objec void UnitTracker::_actionFinalized(GObject *where_the_object_was) { - GSList *target = g_slist_find(_actionList, where_the_object_was); - if (target) { - _actionList = g_slist_remove(_actionList, where_the_object_was); + EgeSelectOneAction* act = (EgeSelectOneAction*)(where_the_object_was); + auto it = std::find(_actionList.begin(),_actionList.end(), act); + if (it != _actionList.end()) { + _actionList.erase(it); } else { g_warning("Received a finalization callback for unknown object %p", where_the_object_was); } @@ -190,9 +188,10 @@ void UnitTracker::_actionFinalized(GObject *where_the_object_was) void UnitTracker::_adjustmentFinalized(GObject *where_the_object_was) { - GSList *target = g_slist_find(_adjList, where_the_object_was); - if (target) { - _adjList = g_slist_remove(_adjList, where_the_object_was); + GtkAdjustment* adj = (GtkAdjustment*)(where_the_object_was); + auto it = std::find(_adjList.begin(),_adjList.end(), adj); + if (it != _adjList.end()) { + _adjList.erase(it); } else { g_warning("Received a finalization callback for unknown object %p", where_the_object_was); } @@ -217,7 +216,7 @@ void UnitTracker::_setActive(gint active) Inkscape::Util::Unit const *newUnit = unit_table.getUnit(newAbbr); _activeUnit = newUnit; - if (_adjList) { + if (!_adjList.empty()) { _fixupAdjustments(unit, newUnit); } @@ -230,11 +229,8 @@ void UnitTracker::_setActive(gint active) _active = active; - for ( GSList *cur = _actionList ; cur ; cur = g_slist_next(cur) ) { - if (IS_EGE_SELECT_ONE_ACTION(cur->data)) { - EgeSelectOneAction *act = EGE_SELECT_ONE_ACTION(cur->data); - ege_select_one_action_set_active(act, active); - } + for (auto act:_actionList) { + ege_select_one_action_set_active(act, active); } _activeUnitInitialized = true; @@ -244,8 +240,7 @@ void UnitTracker::_setActive(gint active) void UnitTracker::_fixupAdjustments(Inkscape::Util::Unit const *oldUnit, Inkscape::Util::Unit const *newUnit) { _isUpdating = true; - for ( GSList *cur = _adjList ; cur ; cur = g_slist_next(cur) ) { - GtkAdjustment *adj = GTK_ADJUSTMENT(cur->data); + for ( auto adj : _adjList ) { gdouble oldVal = gtk_adjustment_get_value(adj); gdouble val = oldVal; diff --git a/src/ui/widget/unit-tracker.h b/src/ui/widget/unit-tracker.h index 8fa9ff304..643ac4e51 100644 --- a/src/ui/widget/unit-tracker.h +++ b/src/ui/widget/unit-tracker.h @@ -17,6 +17,7 @@ #include #include "util/units.h" +#include "widgets/ege-select-one-action.h" using Inkscape::Util::Unit; using Inkscape::Util::UnitType; @@ -65,9 +66,8 @@ private: Inkscape::Util::Unit const *_activeUnit; bool _activeUnitInitialized; GtkListStore *_store; - GSList *_unitList; - GSList *_actionList; - GSList *_adjList; + std::vector _actionList; + std::vector _adjList; std::map _priorValues; }; diff --git a/src/widgets/stroke-marker-selector.cpp b/src/widgets/stroke-marker-selector.cpp index 96994741c..9ddcf993d 100644 --- a/src/widgets/stroke-marker-selector.cpp +++ b/src/widgets/stroke-marker-selector.cpp @@ -111,22 +111,20 @@ MarkerComboBox::refreshHistory() updating = true; - GSList *ml = get_marker_list(doc); + std::vector ml = get_marker_list(doc); /* * Seems to be no way to get notified of changes just to markers, * so listen to changes in all defs and check if the number of markers has changed here * to avoid unnecessary refreshes when things like gradients change */ - if (markerCount != g_slist_length(ml)) { + if (markerCount != ml.size()) { const char *active = get_active()->get_value(marker_columns.marker); sp_marker_list_from_doc(doc, true); set_selected(active); - markerCount = g_slist_length(ml); + markerCount = ml.size(); } - g_slist_free (ml); - updating = false; } @@ -295,45 +293,32 @@ void MarkerComboBox::set_selected(const gchar *name, gboolean retry/*=true*/) { */ void MarkerComboBox::sp_marker_list_from_doc(SPDocument *source, gboolean history) { - GSList *ml = get_marker_list(source); - GSList *clean_ml = NULL; - - for (; ml != NULL; ml = ml->next) { - if (!SP_IS_MARKER(ml->data)) - continue; - - // Add to the list of markers we really do wish to show - clean_ml = g_slist_prepend (clean_ml, ml->data); - } + std::vector ml = get_marker_list(source); remove_markers(history); // Seem to need to remove 2x remove_markers(history); - add_markers(clean_ml, source, history); - - g_slist_free (ml); - g_slist_free (clean_ml); - + add_markers(ml, source, history); } /** - * Returns a list of markers in the defs of the given source document as a GSList object + * Returns a list of markers in the defs of the given source document as a vector * Returns NULL if there are no markers in the document. */ -GSList *MarkerComboBox::get_marker_list (SPDocument *source) +std::vector MarkerComboBox::get_marker_list (SPDocument *source) { + std::vector ml; if (source == NULL) - return NULL; + return ml; - GSList *ml = NULL; SPDefs *defs = source->getDefs(); if (!defs) { - return NULL; + return ml; } for (auto& child: defs->children) { if (SP_IS_MARKER(&child)) { - ml = g_slist_prepend (ml, &child); + ml.push_back(SP_MARKER(&child)); } } return ml; @@ -361,7 +346,7 @@ void MarkerComboBox::remove_markers (gboolean history) /** * Adds markers in marker_list to the combo */ -void MarkerComboBox::add_markers (GSList *marker_list, SPDocument *source, gboolean history) +void MarkerComboBox::add_markers (std::vector const& marker_list, SPDocument *source, gboolean history) { // Do this here, outside of loop, to speed up preview generation: Inkscape::Drawing drawing; @@ -388,9 +373,9 @@ void MarkerComboBox::add_markers (GSList *marker_list, SPDocument *source, gbool row[marker_columns.separator] = false; } - for (; marker_list != NULL; marker_list = marker_list->next) { + for (auto i:marker_list) { - Inkscape::XML::Node *repr = reinterpret_cast(marker_list->data)->getRepr(); + Inkscape::XML::Node *repr = i->getRepr(); gchar const *markid = repr->attribute("inkscape:stockid") ? repr->attribute("inkscape:stockid") : repr->attribute("id"); // generate preview diff --git a/src/widgets/stroke-marker-selector.h b/src/widgets/stroke-marker-selector.h index a7ee788b8..24389526c 100644 --- a/src/widgets/stroke-marker-selector.h +++ b/src/widgets/stroke-marker-selector.h @@ -9,7 +9,7 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ - +#include #include #include #include @@ -20,6 +20,7 @@ #include "document.h" #include "inkscape.h" #include "display/drawing.h" +#include "sp-marker.h" namespace Gtk { class Container; @@ -80,8 +81,8 @@ private: void init_combo(); void set_history(Gtk::TreeModel::Row match_row); void sp_marker_list_from_doc(SPDocument *source, gboolean history); - GSList *get_marker_list (SPDocument *source); - void add_markers (GSList *marker_list, SPDocument *source, gboolean history); + std::vector get_marker_list (SPDocument *source); + void add_markers (std::vector const& marker_list, SPDocument *source, gboolean history); void remove_markers (gboolean history); SPDocument *ink_markers_preview_doc (); Gtk::Image * create_marker_image(unsigned psize, gchar const *mname, -- cgit v1.2.3 From c20891fabc8c3ee2251e0545878e06545b6f0cdd Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sun, 1 Oct 2017 23:57:52 +0200 Subject: First batch --- src/gradient-chemistry.cpp | 27 ++++------- src/inkscape.cpp | 46 +++++++++--------- src/selection-describer.cpp | 19 ++++---- src/sp-clippath.cpp | 23 +++------ src/sp-flowregion.cpp | 62 +++++++++--------------- src/sp-flowtext.cpp | 22 +++------ src/sp-item.cpp | 11 ++--- src/sp-mesh-array.cpp | 29 +++++------ src/sp-mesh-row.cpp | 13 ++--- src/sp-script.cpp | 41 ---------------- src/sp-text.cpp | 37 +++++--------- src/sp-tref.cpp | 10 ++-- src/ui/contextmenu.cpp | 2 +- src/ui/dialog/clonetiler.cpp | 8 ++- src/ui/dialog/grid-arrange-tab.cpp | 10 ++-- src/ui/dialog/tags.cpp | 8 --- src/ui/interface.cpp | 91 +++++++++++++++++------------------ src/ui/widget/color-notebook.cpp | 5 +- src/widgets/ege-adjustment-action.cpp | 13 +++-- src/widgets/gradient-vector.cpp | 61 ++++++++--------------- src/widgets/paint-selector.cpp | 74 +++++++++------------------- 21 files changed, 214 insertions(+), 398 deletions(-) diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp index 05f594f86..cc676bffe 100644 --- a/src/gradient-chemistry.cpp +++ b/src/gradient-chemistry.cpp @@ -955,43 +955,36 @@ void sp_item_gradient_reverse_vector(SPItem *item, Inkscape::PaintTarget fill_or sp_gradient_repr_set_link(gradient->getRepr(), vector); } - GSList *child_reprs = NULL; - GSList *child_objects = NULL; + std::vector child_objects; + std::vectorchild_reprs; std::vector offsets; double offset; for (auto& child: vector->children) { - child_reprs = g_slist_prepend (child_reprs, child.getRepr()); - child_objects = g_slist_prepend (child_objects, &child); + child_reprs.push_back(child.getRepr()); + child_objects.push_back(&child); offset=0; sp_repr_get_double(child.getRepr(), "offset", &offset); offsets.push_back(offset); } - GSList *child_copies = NULL; - for (GSList *i = child_reprs; i != NULL; i = i->next) { - Inkscape::XML::Node *repr = (Inkscape::XML::Node *) i->data; + std::vector child_copies; + for (auto repr:child_reprs) { Inkscape::XML::Document *xml_doc = vector->getRepr()->document(); - child_copies = g_slist_append (child_copies, repr->duplicate(xml_doc)); + child_copies.push_back(repr->duplicate(xml_doc)); } - for (GSList *i = child_objects; i != NULL; i = i->next) { - SPObject *child = SP_OBJECT (i->data); - child->deleteObject(); + for (auto i:child_objects) { + i->deleteObject(); } std::vector::iterator iter = offsets.end() - 1; - for (GSList *i = child_copies; i != NULL; i = i->next) { - Inkscape::XML::Node *copy = (Inkscape::XML::Node *) i->data; + for (auto copy:child_copies) { vector->appendChildRepr(copy); sp_repr_set_svg_double (copy, "offset", 1 - *iter); --iter; Inkscape::GC::release(copy); } - - g_slist_free (child_reprs); - g_slist_free (child_copies); - g_slist_free (child_objects); } void sp_item_gradient_invert_vector_color(SPItem *item, Inkscape::PaintTarget fill_or_stroke) diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 8dfff3c63..c56002753 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -579,8 +579,8 @@ Application::crash_handler (int /*signum*/) gint count = 0; gchar *curdir = g_get_current_dir(); // This one needs to be freed explicitly gchar *inkscapedir = g_path_get_dirname(INKSCAPE._argv0); // Needs to be freed - GSList *savednames = NULL; - GSList *failednames = NULL; + std::vector savednames; + std::vector failednames; for (std::map::iterator iter = INKSCAPE._document_set.begin(), e = INKSCAPE._document_set.end(); iter != e; ++iter) { @@ -641,10 +641,10 @@ Application::crash_handler (int /*signum*/) // Save if (file) { sp_repr_save_stream (repr->document(), file, SP_SVG_NS_URI); - savednames = g_slist_prepend (savednames, g_strdup (c)); + savednames.push_back(g_strdup (c)); fclose (file); } else { - failednames = g_slist_prepend (failednames, (doc->getName()) ? g_strdup(doc->getName()) : g_strdup (_("Untitled document"))); + failednames.push_back((doc->getName()) ? g_strdup(doc->getName()) : g_strdup (_("Untitled document"))); } count++; } @@ -652,18 +652,16 @@ Application::crash_handler (int /*signum*/) g_free(curdir); g_free(inkscapedir); - savednames = g_slist_reverse (savednames); - failednames = g_slist_reverse (failednames); - if (savednames) { + if (!savednames.empty()) { fprintf (stderr, "\nEmergency save document locations:\n"); - for (GSList *l = savednames; l != NULL; l = l->next) { - fprintf (stderr, " %s\n", (gchar *) l->data); + for (auto i:savednames) { + fprintf (stderr, " %s\n", i); } } - if (failednames) { + if (!failednames.empty()) { fprintf (stderr, "\nFailed to do emergency save for documents:\n"); - for (GSList *l = failednames; l != NULL; l = l->next) { - fprintf (stderr, " %s\n", (gchar *) l->data); + for (auto i:failednames) { + fprintf (stderr, " %s\n", i); } } @@ -681,11 +679,11 @@ Application::crash_handler (int /*signum*/) char const *fstr = _("Automatic backup of the following documents failed:\n"); gint nllen = strlen ("\n"); gint len = strlen (istr) + strlen (sstr) + strlen (fstr); - for (GSList *l = savednames; l != NULL; l = l->next) { - len = len + SP_INDENT + strlen ((gchar *) l->data) + nllen; + for (auto i:savednames) { + len = len + SP_INDENT + strlen (i) + nllen; } - for (GSList *l = failednames; l != NULL; l = l->next) { - len = len + SP_INDENT + strlen ((gchar *) l->data) + nllen; + for (auto i:failednames) { + len = len + SP_INDENT + strlen (i) + nllen; } len += 1; gchar *b = g_new (gchar, len); @@ -693,29 +691,29 @@ Application::crash_handler (int /*signum*/) len = strlen (istr); memcpy (b + pos, istr, len); pos += len; - if (savednames) { + if (!savednames.empty()) { len = strlen (sstr); memcpy (b + pos, sstr, len); pos += len; - for (GSList *l = savednames; l != NULL; l = l->next) { + for (auto i:savednames) { memset (b + pos, ' ', SP_INDENT); pos += SP_INDENT; - len = strlen ((gchar *) l->data); - memcpy (b + pos, l->data, len); + len = strlen(i); + memcpy (b + pos, i, len); pos += len; memcpy (b + pos, "\n", nllen); pos += nllen; } } - if (failednames) { + if (!failednames.empty()) { len = strlen (fstr); memcpy (b + pos, fstr, len); pos += len; - for (GSList *l = failednames; l != NULL; l = l->next) { + for (auto i:failednames) { memset (b + pos, ' ', SP_INDENT); pos += SP_INDENT; - len = strlen ((gchar *) l->data); - memcpy (b + pos, l->data, len); + len = strlen(i); + memcpy (b + pos, i, len); pos += len; memcpy (b + pos, "\n", nllen); pos += nllen; diff --git a/src/selection-describer.cpp b/src/selection-describer.cpp index 43fe1311d..5044864a4 100644 --- a/src/selection-describer.cpp +++ b/src/selection-describer.cpp @@ -15,6 +15,7 @@ #ifdef HAVE_CONFIG_H #include #endif +#include #include #include "xml/quote.h" @@ -33,16 +34,15 @@ // Returns a list of terms for the items to be used in the statusbar char* collect_terms (const std::vector &items) { - GSList *check = NULL; + std::set check; std::stringstream ss; bool first = true; for ( std::vector::const_iterator iter=items.begin();iter!=items.end();++iter ) { SPItem *item = *iter; - if (item) { - const char *term = item->displayName(); - if (term != NULL && g_slist_find (check, term) == NULL) { - check = g_slist_prepend (check, (void *) term); + if (item && item->displayName()) { + Glib::ustring term(item->displayName()); + if (term != "" && (check.insert(term).second)) { ss << (first ? "" : ", ") << "" << term << ""; first = false; } @@ -54,14 +54,13 @@ char* collect_terms (const std::vector &items) // Returns the number of terms in the list static int count_terms (const std::vector &items) { - GSList *check = NULL; + std::set check; int count=0; for ( std::vector::const_iterator iter=items.begin();iter!=items.end();++iter ) { SPItem *item = *iter; - if (item) { - const char *term = item->displayName(); - if (term != NULL && g_slist_find (check, term) == NULL) { - check = g_slist_prepend (check, (void *) term); + if (item && item->displayName()) { + Glib::ustring term(item->displayName()); + if (term != "" && (check.insert(term).second)) { count++; } } diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index a56dfd85a..d3a3810cb 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -126,18 +126,13 @@ void SPClipPath::update(SPCtx* ctx, unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for (auto child:l) { if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->updateDisplay(ctx, flags); } @@ -165,22 +160,16 @@ void SPClipPath::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for (auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } diff --git a/src/sp-flowregion.cpp b/src/sp-flowregion.cpp index 4064c12f1..6640d93c2 100644 --- a/src/sp-flowregion.cpp +++ b/src/sp-flowregion.cpp @@ -59,19 +59,15 @@ void SPFlowregion::update(SPCtx *ctx, unsigned int flags) { } childflags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vectorl; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); + for (auto child:l) { g_assert(child != NULL); - l = g_slist_remove(l, child); SPItem *item = dynamic_cast(child); if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { @@ -114,19 +110,15 @@ void SPFlowregion::modified(guint flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vectorl; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); + for (auto child:l) { g_assert(child != NULL); - l = g_slist_remove(l, child); if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); @@ -142,21 +134,20 @@ Inkscape::XML::Node *SPFlowregion::write(Inkscape::XML::Document *xml_doc, Inksc repr = xml_doc->createElement("svg:flowRegion"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { if ( !dynamic_cast(&child) && !dynamic_cast(&child) ) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend(l, crepr); + l.push_back(crepr); } } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i = l.rbegin(); i != l.rend(); ++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } for (auto& child: children) { @@ -216,19 +207,15 @@ void SPFlowregionExclude::update(SPCtx *ctx, unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); + for(auto child:l) { g_assert(child != NULL); - l = g_slist_remove(l, child); if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { SPItem *item = dynamic_cast(child); @@ -268,19 +255,15 @@ void SPFlowregionExclude::modified(guint flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); + for (auto child:l) { g_assert(child != NULL); - l = g_slist_remove(l, child); if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); @@ -296,20 +279,19 @@ Inkscape::XML::Node *SPFlowregionExclude::write(Inkscape::XML::Document *xml_doc repr = xml_doc->createElement("svg:flowRegionExclude"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend(l, crepr); + l.push_back(crepr); } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i = l.rbegin(); i != l.rend(); ++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index c5af85774..2425dada3 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -65,19 +65,14 @@ void SPFlowtext::update(SPCtx* ctx, unsigned int flags) { } childflags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); + for (auto child:l) { g_assert(child != NULL); - l = g_slist_remove(l, child); if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { SPItem *item = dynamic_cast(child); @@ -216,7 +211,7 @@ Inkscape::XML::Node* SPFlowtext::write(Inkscape::XML::Document* doc, Inkscape::X repr = doc->createElement("svg:flowRoot"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *c_repr = NULL; @@ -226,14 +221,13 @@ Inkscape::XML::Node* SPFlowtext::write(Inkscape::XML::Document* doc, Inkscape::X } if ( c_repr ) { - l = g_slist_prepend(l, c_repr); + l.push_back(c_repr); } } - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { diff --git a/src/sp-item.cpp b/src/sp-item.cpp index dd98ee1a4..a780f1a29 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -711,19 +711,18 @@ Inkscape::XML::Node* SPItem::write(Inkscape::XML::Document *xml_doc, Inkscape::X // in the case of SP_OBJECT_WRITE_BUILD, the item should always be newly created, // so we need to add any children from the underlying object to the new repr if (flags & SP_OBJECT_WRITE_BUILD) { - GSList *l = NULL; + std::vectorl; for (auto& child: object->children) { if (dynamic_cast(&child) || dynamic_cast(&child)) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend (l, crepr); + l.push_back(crepr); } } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove (l, l->data); + for (auto i = l.rbegin(); i!= l.rend(); ++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: object->children) { diff --git a/src/sp-mesh-array.cpp b/src/sp-mesh-array.cpp index c89cfcc6f..a8d9e589c 100644 --- a/src/sp-mesh-array.cpp +++ b/src/sp-mesh-array.cpp @@ -936,31 +936,26 @@ void SPMeshNodeArray::write( SPMeshGradient *mg ) { } // First we must delete reprs for old mesh rows and patches. - GSList *descendant_reprs = NULL; - GSList *descendant_objects = NULL; + std::vector descendant_objects; + std::vector descendant_reprs; for (auto& row: mg_array->children) { - descendant_reprs = g_slist_prepend (descendant_reprs, row.getRepr()); - descendant_objects = g_slist_prepend (descendant_objects, &row); + descendant_reprs.push_back(row.getRepr()); + descendant_objects.push_back(&row); for (auto& patch: row.children) { - descendant_reprs = g_slist_prepend (descendant_reprs, patch.getRepr()); - descendant_objects = g_slist_prepend (descendant_objects, &patch); + descendant_reprs.push_back(patch.getRepr()); + descendant_objects.push_back(&patch); for (auto& stop: patch.children) { - descendant_reprs = g_slist_prepend (descendant_reprs, stop.getRepr()); - descendant_objects = g_slist_prepend (descendant_objects, &stop); + descendant_reprs.push_back(stop.getRepr()); + descendant_objects.push_back(&stop); } } } - for ( GSList *i = descendant_objects; i != NULL; i = i->next ) { - SPObject *descendant = SP_OBJECT (i->data); - descendant->deleteObject(); - } - - for ( GSList *i = descendant_reprs; i != NULL; i = i->next ) { - Inkscape::XML::Node *repr = (Inkscape::XML::Node *) i->data; - sp_repr_unparent( repr ); - } + for (auto i:descendant_objects) + i->deleteObject(); + for (auto i:descendant_reprs) + sp_repr_unparent(i); // Now we build new reprs Inkscape::XML::Node *mesh = mg->getRepr(); diff --git a/src/sp-mesh-row.cpp b/src/sp-mesh-row.cpp index 5ac349c27..8204aff65 100644 --- a/src/sp-mesh-row.cpp +++ b/src/sp-mesh-row.cpp @@ -78,23 +78,16 @@ void SPMeshrow::set(unsigned int /*key*/, const gchar* /*value*/) { void SPMeshrow::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for (auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } diff --git a/src/sp-script.cpp b/src/sp-script.cpp index bd1ab512b..144c8d76a 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -73,47 +73,6 @@ Inkscape::XML::Node* SPScript::write(Inkscape::XML::Document* /*doc*/, Inkscape: return repr; } -//static Inkscape::XML::Node *sp_script_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) -//{ -/* -TODO: - code copied from sp-defs - decide what to do here! - - if (flags & SP_OBJECT_WRITE_BUILD) { - - if (!repr) { - repr = xml_doc->createElement("svg:script"); - } - - GSList *l = NULL; - for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { - Inkscape::XML::Node *crepr = child->updateRepr(xml_doc, NULL, flags); - if (crepr) { - l = g_slist_prepend(l, crepr); - } - } - - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); - } - - } else { - for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { - child->updateRepr(flags); - } - } - - if (((SPObjectClass *) (parent_class))->write) { - (* ((SPObjectClass *) (parent_class))->write)(object, xml_doc, repr, flags); - } -*/ -// -// return ((SPScript*)object)->cscript->onWrite(xml_doc, repr, flags); -//} - /* Local Variables: mode:c++ diff --git a/src/sp-text.cpp b/src/sp-text.cpp index a13adbf0b..7bc120985 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -150,24 +150,17 @@ void SPText::update(SPCtx *ctx, guint flags) { } // Create temporary list of children - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child, this); - l = g_slist_prepend (l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); // We just built this list, so cast is safe. - l = g_slist_remove (l, child); - + for (auto child:l) { if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { /* fixme: Do we need transform? */ child->updateDisplay(ctx, childflags); } - sp_object_unref(child, this); } @@ -230,23 +223,16 @@ void SPText::modified(guint flags) { } // Create temporary list of children - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child, this); - l = g_slist_prepend (l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = reinterpret_cast(l->data); // We just built this list, so cast is safe. - l = g_slist_remove (l, child); - + for (auto child:l) { if (cflags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(cflags); } - sp_object_unref(child, this); } } @@ -257,7 +243,7 @@ Inkscape::XML::Node *SPText::write(Inkscape::XML::Document *xml_doc, Inkscape::X repr = xml_doc->createElement("svg:text"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { if (SP_IS_TITLE(&child) || SP_IS_DESC(&child)) { @@ -273,14 +259,13 @@ Inkscape::XML::Node *SPText::write(Inkscape::XML::Document *xml_doc, Inkscape::X } if (crepr) { - l = g_slist_prepend (l, crepr); + l.push_back(crepr); } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove (l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { diff --git a/src/sp-tref.cpp b/src/sp-tref.cpp index 014876478..2655e219b 100644 --- a/src/sp-tref.cpp +++ b/src/sp-tref.cpp @@ -502,16 +502,12 @@ sp_tref_convert_to_tspan(SPObject *obj) // RECURSIVE CASE //////////////////// else { - GSList *l = NULL; + std::vector l; for (auto& child: obj->children) { sp_object_ref(&child, obj); - l = g_slist_prepend (l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - while (l) { - SPObject *child = reinterpret_cast(l->data); // We just built this list, so cast is safe. - l = g_slist_remove (l, child); - + for(auto child:l) { // Note that there may be more than one conversion happening here, so if it's not a // tref being passed into this function, the returned value can't be specifically known new_tspan = sp_tref_convert_to_tspan(child); diff --git a/src/ui/contextmenu.cpp b/src/ui/contextmenu.cpp index 1bc87574e..3ca752c82 100644 --- a/src/ui/contextmenu.cpp +++ b/src/ui/contextmenu.cpp @@ -253,7 +253,7 @@ context_menu_item_on_my_deselect(void */*object*/, SPAction *action) // TODO: Update this to allow radio items to be used -void ContextMenu::AppendItemFromVerb(Inkscape::Verb *verb)//, SPDesktop *view)//, bool radio, GSList *group) +void ContextMenu::AppendItemFromVerb(Inkscape::Verb *verb) { SPAction *action; SPDesktop *view = _desktop; diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp index 5c9b31fb1..71edcf259 100644 --- a/src/ui/dialog/clonetiler.cpp +++ b/src/ui/dialog/clonetiler.cpp @@ -1993,18 +1993,16 @@ void CloneTiler::remove(bool do_undo/* = true*/) SPObject *parent = obj->parent; // remove old tiling - GSList *to_delete = NULL; + std::vector to_delete; for (auto& child: parent->children) { if (is_a_clone_of (&child, obj)) { - to_delete = g_slist_prepend (to_delete, &child); + to_delete.push_back(&child); } } - for (GSList *i = to_delete; i; i = i->next) { - SPObject *obj = reinterpret_cast(i->data); + for (auto obj:to_delete) { g_assert(obj != NULL); obj->deleteObject(); } - g_slist_free (to_delete); change_selection (selection); diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp index 6e08645cf..c16e60c5f 100644 --- a/src/ui/dialog/grid-arrange-tab.cpp +++ b/src/ui/dialog/grid-arrange-tab.cpp @@ -298,15 +298,14 @@ g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_h std::vector::iterator it = sorted.begin(); for (row_cnt=0; ((it != sorted.end()) && (row_cnt current_row; col_cnt = 0; for(;it!=sorted.end()&&col_cntnext) { - SPItem *item=SP_ITEM(current_row->data); + for (auto item:current_row) { Inkscape::XML::Node *repr = item->getRepr(); Geom::OptRect b = item->documentVisualBounds(); Geom::Point min; @@ -330,10 +329,9 @@ g_print("\n row = %f col = %f selection x= %f selection y = %f", total_row_h Geom::Affine const affine = Geom::Affine(Geom::Translate(move)); item->set_i2d_affine(item->i2dt_affine() * affine); item->doWriteTransform(item->transform); - SP_OBJECT (current_row->data)->updateRepr(); + item->updateRepr(); cnt +=1; } - g_slist_free (current_row); } DocumentUndo::done(desktop->getDocument(), SP_VERB_SELECTION_ARRANGE, diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp index 176719995..5a5417eb5 100644 --- a/src/ui/dialog/tags.cpp +++ b/src/ui/dialog/tags.cpp @@ -1103,14 +1103,6 @@ void TagsPanel::setDesktop( SPDesktop* desktop ) setDocument(_desktop, _desktop->doc()); } } -/* - GSList const *layers = _desktop->doc()->getResourceList( "layer" ); - g_message( "layers list starts at %p", layers ); - for ( GSList const *iter=layers ; iter ; iter = iter->next ) { - SPObject *layer=static_cast(iter->data); - g_message(" {%s} [%s]", layer->id, layer->label() ); - } -*/ deskTrack.setBase(desktop); } diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 7a9b92378..f6a353b33 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -25,6 +25,8 @@ #include "ui/dialog/dialog-manager.h" #include +#include +#include #include "file.h" #include @@ -220,19 +222,14 @@ sp_create_window(SPViewWidget *vw, bool editable) if ( completeDropTargets == 0 || completeDropTargetsCount == 0 ) { - std::vector types; - - GSList *list = gdk_pixbuf_get_formats(); - while ( list ) { - int i = 0; - GdkPixbufFormat *one = (GdkPixbufFormat*)list->data; - gchar** typesXX = gdk_pixbuf_format_get_mime_types(one); - for ( i = 0; typesXX[i]; i++ ) { - types.push_back(g_strdup(typesXX[i])); - } - g_strfreev(typesXX); + std::vector types; - list = g_slist_next(list); + std::vector list = Gdk::Pixbuf::get_formats(); + for (auto one:list) { + std::vector typesXX = one.get_mime_types(); + for (auto i:typesXX) { + types.push_back(i); + } } completeDropTargetsCount = nui_drop_target_entries + types.size(); completeDropTargets = new GtkTargetEntry[completeDropTargetsCount]; @@ -241,8 +238,8 @@ sp_create_window(SPViewWidget *vw, bool editable) } int pos = nui_drop_target_entries; - for (std::vector::iterator it = types.begin() ; it != types.end() ; ++it) { - completeDropTargets[pos].target = *it; + for (std::vector::iterator it = types.begin() ; it != types.end() ; ++it) { + completeDropTargets[pos].target = g_strdup((*it).c_str()); completeDropTargets[pos].flags = 0; completeDropTargets[pos].info = IMAGE_DATA; pos++; @@ -451,14 +448,14 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men Inkscape::UI::View::View *view, bool show_icon = false, bool radio = false, - GSList *group = NULL) + Gtk::RadioMenuItem::Group *group = NULL) { - GtkWidget *item; + Gtk::Widget *item; // Just create a menu separator if this isn't a real action. // Otherwise, create a real menu item if (verb->get_code() == SP_VERB_NONE) { - item = gtk_separator_menu_item_new(); + item = new Gtk::SeparatorMenuItem(); } else { SPAction *action = verb->get_action(Inkscape::ActionContext(view)); @@ -467,9 +464,9 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men // Create the menu item itself, either as a radio menu item, or just // a regular menu item depending on whether the "radio" flag is set if (radio) { - item = gtk_radio_menu_item_new(group); + item = new Gtk::RadioMenuItem(*group); } else { - item = gtk_menu_item_new(); + item = new Gtk::MenuItem(); } // Create a box to contain all the widgets (icon, label, accelerator) @@ -490,8 +487,8 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men GtkAccelGroup *accel_group = sp_shortcut_get_accel_group(); gtk_menu_set_accel_group(menu, accel_group); - sp_shortcut_add_accelerator(item, sp_shortcut_get_primary(verb)); - gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(label), item); + sp_shortcut_add_accelerator(item->gobj(), sp_shortcut_get_primary(verb)); + gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(label), item->gobj()); GtkWidget *icon; @@ -508,33 +505,34 @@ static GtkWidget *sp_ui_menu_append_item_from_verb(GtkMenu *men gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); // Finally, pack all the widgets into the menu item - gtk_container_add(GTK_CONTAINER(item), box); + gtk_container_add(GTK_CONTAINER(item->gobj()), box); action->signal_set_sensitive.connect( sigc::bind<0>( sigc::ptr_fun(>k_widget_set_sensitive), - item)); + item->gobj())); action->signal_set_name.connect( sigc::bind<0>( sigc::ptr_fun(&sp_ui_menu_item_set_name), - item)); + item->gobj())); if (!action->sensitive) { - gtk_widget_set_sensitive(item, FALSE); + item->set_sensitive(false); } - gtk_widget_set_events(item, GDK_KEY_PRESS_MASK); - g_object_set_data(G_OBJECT(item), "view", (gpointer) view); - g_signal_connect( G_OBJECT(item), "activate", G_CALLBACK(sp_ui_menu_activate), action ); - g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select_action), action ); - g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect_action), action ); + gtk_widget_set_events(item->gobj(), GDK_KEY_PRESS_MASK); + + g_object_set_data(G_OBJECT(item->gobj()), "view", (gpointer) view); + g_signal_connect( G_OBJECT(item->gobj()), "activate", G_CALLBACK(sp_ui_menu_activate), action ); + g_signal_connect( G_OBJECT(item->gobj()), "select", G_CALLBACK(sp_ui_menu_select_action), action ); + g_signal_connect( G_OBJECT(item->gobj()), "deselect", G_CALLBACK(sp_ui_menu_deselect_action), action ); } - gtk_widget_show_all(item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); + item->show_all(); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item->gobj()); - return item; + return item->gobj(); } // end of sp_ui_menu_append_item_from_verb @@ -769,25 +767,24 @@ static void addTaskMenuItems(GtkMenu *menu, Inkscape::UI::View::View *view) 0, 0 }; - GSList *group = 0; + Gtk::RadioMenuItem::Group group; int count = 0; gint active = Inkscape::UI::UXManager::getInstance()->getDefaultTask( dynamic_cast(view) ); for (gchar const **strs = data; strs[0]; strs += 2, count++) { - GtkWidget *item = gtk_radio_menu_item_new_with_label( group, strs[0] ); - group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(item) ); + Gtk::RadioMenuItem *item = new Gtk::RadioMenuItem(group,Glib::ustring(strs[0])); if ( count == active ) { - gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(item), TRUE ); + item->set_active(); } - g_object_set_data( G_OBJECT(item), "view", view ); - g_signal_connect( G_OBJECT(item), "toggled", reinterpret_cast(taskToggled), GINT_TO_POINTER(count) ); - g_signal_connect( G_OBJECT(item), "select", G_CALLBACK(sp_ui_menu_select), const_cast(strs[1]) ); - g_signal_connect( G_OBJECT(item), "deselect", G_CALLBACK(sp_ui_menu_deselect), 0 ); + g_object_set_data( G_OBJECT(item->gobj()), "view", view ); + g_signal_connect( G_OBJECT(item->gobj()), "toggled", reinterpret_cast(taskToggled), GINT_TO_POINTER(count) ); + g_signal_connect( G_OBJECT(item->gobj()), "select", G_CALLBACK(sp_ui_menu_select), const_cast(strs[1]) ); + g_signal_connect( G_OBJECT(item->gobj()), "deselect", G_CALLBACK(sp_ui_menu_deselect), 0 ); - gtk_widget_show( item ); - gtk_menu_shell_append( GTK_MENU_SHELL(menu), item ); + item->show(); + gtk_menu_shell_append( GTK_MENU_SHELL(menu), GTK_WIDGET(item->gobj()) ); } } @@ -831,7 +828,7 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I { if (menus == NULL) return; if (menu == NULL) return; - GSList *group = NULL; + Gtk::RadioMenuItem::Group group; for (Inkscape::XML::Node *menu_pntr = menus; menu_pntr != NULL; @@ -863,8 +860,7 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I if (verb != NULL) { if (menu_pntr->attribute("radio") != NULL) { - GtkWidget *item = sp_ui_menu_append_item_from_verb (GTK_MENU(menu), verb, view, show_icon, true, group); - group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(item)); + GtkWidget *item = sp_ui_menu_append_item_from_verb (GTK_MENU(menu), verb, view, show_icon, true, &group); if (menu_pntr->attribute("default") != NULL) { gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE); } @@ -880,7 +876,8 @@ static void sp_ui_build_dyn_menus(Inkscape::XML::Node *menus, GtkWidget *menu, I } } else { sp_ui_menu_append_item_from_verb(GTK_MENU(menu), verb, view, show_icon); - group = NULL; + Gtk::RadioMenuItem::Group group2; + group = group2; } } else { gchar string[120]; diff --git a/src/ui/widget/color-notebook.cpp b/src/ui/widget/color-notebook.cpp index a4df8187f..ba333d0ed 100644 --- a/src/ui/widget/color-notebook.cpp +++ b/src/ui/widget/color-notebook.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "preferences.h" #include "widgets/spw-utilities.h" @@ -325,8 +326,8 @@ void ColorNotebook::_addPage(Page &page) _buttons[page_num] = gtk_radio_button_new_with_label(NULL, mode_name.c_str()); gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(_buttons[page_num]), FALSE); if (page_num > 0) { - GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(_buttons[0])); - gtk_radio_button_set_group(GTK_RADIO_BUTTON(_buttons[page_num]), group); + auto g = Glib::wrap(GTK_RADIO_BUTTON(_buttons[0]))->get_group(); + Glib::wrap(GTK_RADIO_BUTTON(_buttons[page_num]))->set_group(g); } gtk_widget_show(_buttons[page_num]); gtk_box_pack_start(GTK_BOX(_buttonbox), _buttons[page_num], TRUE, TRUE, 0); diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index 09a4a542b..fc72f00c7 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include "icon-size.h" @@ -626,7 +627,7 @@ static void process_menu_action( GtkWidget* obj, gpointer data ) } } -static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, GSList** group, gdouble num, gboolean active ) +static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, Gtk::RadioMenuItem::Group *group, gdouble num, gboolean active ) { char* str = 0; EgeAdjustmentDescr* marker = 0; @@ -647,10 +648,8 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men ((marker && marker->descr) ? ": " : ""), ((marker && marker->descr) ? marker->descr : "")); - *dst = gtk_radio_menu_item_new_with_label( *group, str ); - if ( !*group) { - *group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(*dst) ); - } + auto rmi = new Gtk::RadioMenuItem(*group,Glib::ustring(str)); + *dst = GTK_WIDGET(rmi->gobj()); if ( active ) { gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(*dst), TRUE ); } @@ -669,7 +668,7 @@ static int flush_explicit_items( std::vector descriptions, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, - GSList** group, + Gtk::RadioMenuItem::Group *group, gdouble num ) { if(pos >= descriptions.size() || pos < 0) return pos; @@ -693,7 +692,7 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) { GtkWidget* menu = gtk_menu_new(); - GSList* group = 0; + Gtk::RadioMenuItem::Group group; GtkWidget* single = 0; std::vector list = act->private_data->descriptions; int addOns = list.size() - 1; diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp index 0c5f3cf47..fdba2b56d 100644 --- a/src/widgets/gradient-vector.cpp +++ b/src/widgets/gradient-vector.cpp @@ -268,17 +268,16 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) gvs->store->clear(); /* Pick up all gradients with vectors */ - GSList *gl = NULL; + std::vector gl; if (gvs->gr) { std::vector gradients = gvs->gr->document->getResourceList("gradient"); for (std::vector::const_iterator it = gradients.begin(); it != gradients.end(); ++it) { SPGradient* grad = SP_GRADIENT(*it); if ( grad->hasStops() && (grad->isSwatch() == gvs->swatched) ) { - gl = g_slist_prepend(gl, *it); + gl.push_back(SP_GRADIENT(*it)); } } } - gl = g_slist_reverse(gl); /* Get usage count of all the gradients */ std::map usageCount; @@ -288,7 +287,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) Gtk::TreeModel::Row row = *(gvs->store->append()); row[gvs->columns->name] = _("No document selected"); - } else if (!gl) { + } else if (gl.empty()) { Gtk::TreeModel::Row row = *(gvs->store->append()); row[gvs->columns->name] = _("No gradients in document"); @@ -297,11 +296,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) row[gvs->columns->name] = _("No gradient selected"); } else { - while (gl) { - SPGradient *gr; - gr = SP_GRADIENT(gl->data); - gl = g_slist_remove(gl, gr); - + for (auto gr:gl) { unsigned long hhssll = sp_gradient_to_hhssll(gr); GdkPixbuf *pixb = sp_gradient_to_pixbuf (gr, 64, 18); Glib::ustring label = gr_prepare_label(gr); @@ -312,7 +307,6 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) row[gvs->columns->refcount] = usageCount[gr]; row[gvs->columns->data] = gr; row[gvs->columns->pixbuf] = Glib::wrap(pixb); - } } @@ -333,19 +327,14 @@ unsigned long sp_gradient_to_hhssll(SPGradient *gr) return ((int)(hsl[0]*100 * 10000)) + ((int)(hsl[1]*100 * 100)) + ((int)(hsl[2]*100 * 1)); } -static GSList *get_all_doc_items(GSList *list, SPObject *from, bool onlyvisible, bool onlysensitive, bool ingroups, GSList const *exclude) +static void get_all_doc_items(std::vector &list, SPObject *from) { for (auto& child: from->children) { if (SP_IS_ITEM(&child)) { - list = g_slist_prepend(list, SP_ITEM(&child)); - } - - if (ingroups || SP_IS_ITEM(&child)) { - list = get_all_doc_items(list, &child, onlyvisible, onlysensitive, ingroups, exclude); + list.push_back(SP_ITEM(&child)); } + get_all_doc_items(list, &child); } - - return list; } /* @@ -377,15 +366,10 @@ void gr_get_usage_counts(SPDocument *doc, std::map *mapUsage if (!doc) return; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool onlyvisible = prefs->getBool("/options/kbselection/onlyvisible", true); - bool onlysensitive = prefs->getBool("/options/kbselection/onlysensitive", true); - bool ingroups = TRUE; - - GSList *all_list = get_all_doc_items(NULL, doc->getRoot(), onlyvisible, onlysensitive, ingroups, NULL); + std::vector all_list; + get_all_doc_items(all_list, doc->getRoot()); - for (GSList *i = all_list; i != NULL; i = i->next) { - SPItem *item = SP_ITEM(i->data); + for (auto item:all_list) { if (!item->getId()) continue; SPGradient *gr = NULL; @@ -565,34 +549,29 @@ static void update_stop_list( GtkWidget *vb, SPGradient *gradient, SPStop *new_s GtkTreeIter iter; /* Populate the combobox store */ - GSList *sl = NULL; + std::vector sl; if ( gradient->hasStops() ) { for (auto& ochild: gradient->children) { if (SP_IS_STOP(&ochild)) { - sl = g_slist_append(sl, &ochild); + sl.push_back(SP_STOP(&ochild)); } } } - if (!sl) { + if (sl.empty()) { gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, NULL, 1, _("No stops in gradient"), 2, NULL, -1); gtk_widget_set_sensitive (combo_box, FALSE); } else { - for (; sl != NULL; sl = sl->next){ - if (SP_IS_STOP(sl->data)){ - SPStop *stop = SP_STOP(sl->data); - Inkscape::XML::Node *repr = reinterpret_cast(sl->data)->getRepr(); - Inkscape::UI::Widget::ColorPreview *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(stop->get_rgba32())); - GdkPixbuf *pb = cpv->toPixbuf(64, 16); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, 0, pb, 1, repr->attribute("id"), 2, stop, -1); - gtk_widget_set_sensitive (combo_box, FALSE); - } + for (auto stop:sl) { + Inkscape::XML::Node *repr = stop->getRepr(); + Inkscape::UI::Widget::ColorPreview *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(stop->get_rgba32())); + GdkPixbuf *pb = cpv->toPixbuf(64, 16); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, pb, 1, repr->attribute("id"), 2, stop, -1); + gtk_widget_set_sensitive (combo_box, FALSE); } - gtk_widget_set_sensitive(combo_box, TRUE); } diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp index 27fe4b63a..4457b712d 100644 --- a/src/widgets/paint-selector.cpp +++ b/src/widgets/paint-selector.cpp @@ -23,6 +23,7 @@ #include #include +#include #include "widgets/swatch-selector.h" #include "sp-pattern.h" @@ -789,25 +790,23 @@ static void sp_psel_mesh_change(GtkWidget * /*widget*/, SPPaintSelector *psel) /** - * Returns a list of meshes in the defs of the given source document as a GSList object - * Returns NULL if there are no meshes in the document. + * Returns a list of meshes in the defs of the given source document as a vector */ -static GSList * +static std::vector ink_mesh_list_get (SPDocument *source) { + std::vector pl; if (source == NULL) - return NULL; + return pl; + - GSList *pl = NULL; std::vector meshes = source->getResourceList("gradient"); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { if (SP_IS_MESHGRADIENT(*it) && SP_GRADIENT(*it) == SP_GRADIENT(*it)->getArray()) { // only if this is a root mesh - pl = g_slist_prepend(pl, *it); + pl.push_back(SP_MESHGRADIENT(*it)); } } - - pl = g_slist_reverse(pl); return pl; } @@ -815,14 +814,14 @@ ink_mesh_list_get (SPDocument *source) * Adds menu items for mesh list. */ static void -sp_mesh_menu_build (GtkWidget *combo, GSList *mesh_list, SPDocument */*source*/) +sp_mesh_menu_build (GtkWidget *combo, std::vector &mesh_list, SPDocument */*source*/) { GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); GtkTreeIter iter; - for (; mesh_list != NULL; mesh_list = mesh_list->next) { + for (auto i:mesh_list) { - Inkscape::XML::Node *repr = reinterpret_cast(mesh_list->data)->getRepr(); + Inkscape::XML::Node *repr = i->getRepr(); gchar const *meshid = repr->attribute("id"); gchar const *label = meshid; @@ -847,21 +846,8 @@ sp_mesh_menu_build (GtkWidget *combo, GSList *mesh_list, SPDocument */*source*/) */ static void sp_mesh_list_from_doc(GtkWidget *combo, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*mesh_doc*/) { - GSList *pl = ink_mesh_list_get(source); - GSList *clean_pl = NULL; - - for (; pl != NULL; pl = pl->next) { - if (!SP_IS_MESHGRADIENT(pl->data)) { - continue; - } - // Add to the list of meshes we really do wish to show - clean_pl = g_slist_prepend (clean_pl, pl->data); - } - - sp_mesh_menu_build (combo, clean_pl, source); - - g_slist_free (pl); - g_slist_free (clean_pl); + std::vector pl = ink_mesh_list_get(source); + sp_mesh_menu_build (combo, pl, source); } @@ -1138,24 +1124,22 @@ static void sp_psel_pattern_change(GtkWidget * /*widget*/, SPPaintSelector *psel /** - * Returns a list of patterns in the defs of the given source document as a GSList object - * Returns NULL if there are no patterns in the document. + * Returns a list of patterns in the defs of the given source document as a vector */ -static GSList * +static std::vector ink_pattern_list_get (SPDocument *source) { + std::vector pl; if (source == NULL) - return NULL; + return pl; - GSList *pl = NULL; std::vector patterns = source->getResourceList("pattern"); for (std::vector::const_iterator it = patterns.begin(); it != patterns.end(); ++it) { if (SP_PATTERN(*it) == SP_PATTERN(*it)->rootPattern()) { // only if this is a root pattern - pl = g_slist_prepend(pl, *it); + pl.push_back(SP_PATTERN(*it)); } } - pl = g_slist_reverse(pl); return pl; } @@ -1163,14 +1147,14 @@ ink_pattern_list_get (SPDocument *source) * Adds menu items for pattern list - derived from marker code, left hb etc in to make addition of previews easier at some point. */ static void -sp_pattern_menu_build (GtkWidget *combo, GSList *pattern_list, SPDocument */*source*/) +sp_pattern_menu_build (GtkWidget *combo, std::vector &pl, SPDocument */*source*/) { GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); GtkTreeIter iter; - for (; pattern_list != NULL; pattern_list = pattern_list->next) { + for (auto i=pl.rbegin(); i!=pl.rend(); ++i) { - Inkscape::XML::Node *repr = reinterpret_cast(pattern_list->data)->getRepr(); + Inkscape::XML::Node *repr = (*i)->getRepr(); // label for combobox gchar const *label; @@ -1200,22 +1184,8 @@ sp_pattern_menu_build (GtkWidget *combo, GSList *pattern_list, SPDocument */*sou */ static void sp_pattern_list_from_doc(GtkWidget *combo, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*pattern_doc*/) { - GSList *pl = ink_pattern_list_get(source); - GSList *clean_pl = NULL; - - for (; pl != NULL; pl = pl->next) { - if (!SP_IS_PATTERN(pl->data)) { - continue; - } - - // Add to the list of patterns we really do wish to show - clean_pl = g_slist_prepend (clean_pl, pl->data); - } - - sp_pattern_menu_build (combo, clean_pl, source); - - g_slist_free (pl); - g_slist_free (clean_pl); + std::vector pl = ink_pattern_list_get(source); + sp_pattern_menu_build (combo, pl, source); } -- cgit v1.2.3 From fc21cbb9a2d2f830c217d7ea96311be36a561e62 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 1 Oct 2017 23:59:23 +0200 Subject: Add better transform handle to Clone Item LPE --- src/live_effects/effect.cpp | 1 + src/live_effects/lpe-clone-original.cpp | 81 ++++++++++++++++++++++-- src/live_effects/lpe-clone-original.h | 11 +++- src/live_effects/parameter/item.cpp | 10 +++ src/live_effects/parameter/item.h | 5 +- src/live_effects/parameter/originalitem.cpp | 14 ++-- src/live_effects/parameter/originalitem.h | 2 - src/live_effects/parameter/originalitemarray.cpp | 2 +- 8 files changed, 104 insertions(+), 22 deletions(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 2332ab8f2..2e1160764 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -81,6 +81,7 @@ #include "display/curve.h" #include #include +#include namespace Inkscape { diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index 6e5ad66bf..2d577bffd 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -46,7 +46,10 @@ LPECloneOriginal::LPECloneOriginal(LivePathEffectObject *lpeobject) : this->getRepr()->setAttribute("method", "bsplinespiro"); this->getRepr()->setAttribute("allow_transforms", "false"); }; - + is_updating = false; + listening = false; + previus_method = CLM_D; + linked = g_strdup(this->getRepr()->attribute("linkeditem")); registerParameter(&linkeditem); registerParameter(&method); registerParameter(&attributes); @@ -183,9 +186,9 @@ LPECloneOriginal::cloneAttrbutes(SPObject *origin, SPObject *dest, const char * sp_repr_css_write_string(css_dest,css_str); dest->getRepr()->setAttribute("style", g_strdup(css_str.c_str())); } - void LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ + start_listening(); if (linkeditem.linksToItem()) { Glib::ustring attr = ""; if (method != CLM_NONE) { @@ -201,18 +204,82 @@ LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ } style_attr += Glib::ustring(style_attributes.param_getSVGValue()) + Glib::ustring(","); - SPItem * origin = SP_ITEM(linkeditem.getObject()); - SPItem * dest = SP_ITEM(sp_lpe_item); - cloneAttrbutes(origin, dest, g_strdup(attr.c_str()), g_strdup(style_attr.c_str())); + SPItem * orig = SP_ITEM(linkeditem.getObject()); + SPItem * dest = SP_ITEM(sp_lpe_item); + Geom::OptRect o_bbox = orig->geometricBounds(); + Geom::OptRect d_bbox = dest->geometricBounds(); + gchar * id = g_strdup(orig->getId()); + if (allow_transforms && + !linkeditem.last_transform.isIdentity() && + linkeditem.last_transform.isTranslation() && + method != CLM_NONE) + { + Geom::Point expansion_dest = dest->transform.expansion(); + Geom::Point expansion_orig = orig->transform.expansion(); + dest->transform *= Geom::Scale(expansion_dest).inverse(); + dest->transform *= Geom::Scale(expansion_orig); + dest->transform *= linkeditem.last_transform.inverse(); + dest->transform *= Geom::Scale(expansion_orig).inverse(); + dest->transform *= Geom::Scale(expansion_dest); + } + if ((strcmp(id, linked) != 0 || (previus_method != method && previus_method == CLM_NONE )) && + allow_transforms && + o_bbox && + d_bbox) + { + dest->transform *= Geom::Translate((*o_bbox).corner(0) - (*d_bbox).corner(0)).inverse(); + } + cloneAttrbutes(orig, dest, g_strdup(attr.c_str()), g_strdup(style_attr.c_str())); + if (allow_transforms && + previus_method != method && + method == CLM_NONE) + { + dest->transform *= Geom::Translate((*d_bbox).corner(0) - (*o_bbox).corner(0)).inverse(); + } if (!allow_transforms) { - SP_ITEM(dest)->getRepr()->setAttribute("transform", SP_ITEM(origin)->getAttribute("transform")); + SP_ITEM(dest)->getRepr()->setAttribute("transform", SP_ITEM(orig)->getAttribute("transform")); } + linked = g_strdup(id); + g_free(id); + } else { + linked = g_strdup(""); } + previus_method = method; } -LPECloneOriginal::~LPECloneOriginal() +void +LPECloneOriginal::start_listening() +{ + if ( !sp_lpe_item || listening ) { + return; + } + quit_listening(); + modified_connection = SP_OBJECT(sp_lpe_item)->connectModified(sigc::mem_fun(*this, &LPECloneOriginal::modified)); + listening = true; +} + +void +LPECloneOriginal::quit_listening(void) { + modified_connection.disconnect(); + listening = false; +} +void +LPECloneOriginal::modified(SPObject */*obj*/, guint /*flags*/) +{ + if ( !sp_lpe_item || is_updating) { + is_updating = false; + return; + } + SP_OBJECT(this->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); + is_updating = true; +} + +LPECloneOriginal::~LPECloneOriginal() +{ + quit_listening(); + g_free(linked); } void diff --git a/src/live_effects/lpe-clone-original.h b/src/live_effects/lpe-clone-original.h index b78b144bc..e429d6817 100644 --- a/src/live_effects/lpe-clone-original.h +++ b/src/live_effects/lpe-clone-original.h @@ -8,13 +8,14 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ -#include #include "live_effects/effect.h" #include "live_effects/parameter/enum.h" #include "live_effects/parameter/originalitem.h" #include "live_effects/parameter/text.h" #include "live_effects/lpegroupbbox.h" +#include + namespace Inkscape { namespace LivePathEffect { @@ -34,6 +35,9 @@ public: virtual void doBeforeEffect (SPLPEItem const* lpeitem); virtual void transform_multiply(Geom::Affine const& postmul, bool set); void cloneAttrbutes(SPObject *origin, SPObject *dest, const char * attributes, const char * style_attributes); + void modified(SPObject */*obj*/, guint /*flags*/); + void start_listening(); + void quit_listening(); private: OriginalItemParam linkeditem; @@ -41,6 +45,11 @@ private: TextParam attributes; TextParam style_attributes; BoolParam allow_transforms; + gchar * linked; + Clonelpemethod previus_method; + bool listening; + bool is_updating; + sigc::connection modified_connection; LPECloneOriginal(const LPECloneOriginal&); LPECloneOriginal& operator=(const LPECloneOriginal&); }; diff --git a/src/live_effects/parameter/item.cpp b/src/live_effects/parameter/item.cpp index e075cab1a..bf7402d99 100644 --- a/src/live_effects/parameter/item.cpp +++ b/src/live_effects/parameter/item.cpp @@ -43,6 +43,7 @@ ItemParam::ItemParam( const Glib::ustring& label, const Glib::ustring& tip, href(NULL), ref( (SPObject*)effect->getLPEObj() ) { + last_transform = Geom::identity(); defvalue = g_strdup(default_value); ref_changed_connection = ref.changedSignal().connect(sigc::mem_fun(*this, &ItemParam::ref_changed)); } @@ -213,8 +214,17 @@ ItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) { emit_changed(); SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); + last_transform = Geom::identity(); } +void +ItemParam::linked_transformed_callback(Geom::Affine const *rel_transf, SPItem */*moved_item*/) +{ + last_transform = *rel_transf; + SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + + void ItemParam::on_link_button_click() { diff --git a/src/live_effects/parameter/item.h b/src/live_effects/parameter/item.h index b98294258..d32098db5 100644 --- a/src/live_effects/parameter/item.h +++ b/src/live_effects/parameter/item.h @@ -35,14 +35,13 @@ public: virtual bool param_readSVGValue(const gchar * strvalue); virtual gchar * param_getSVGValue() const; virtual gchar * param_getDefaultSVGValue() const; - virtual void param_set_default(); virtual void param_update_default(const gchar * default_value); void param_set_and_write_default(); virtual void addCanvasIndicators(SPLPEItem const* lpeitem, std::vector &hp_vec); - sigc::signal signal_item_pasted; sigc::signal signal_item_changed; + Geom::Affine last_transform; bool changed; /* this gets set whenever the path is changed (this is set to true, and then the signal_item_changed signal is emitted). * the user must set it back to false if she wants to use it sensibly */ protected: @@ -61,7 +60,7 @@ protected: void linked_modified(SPObject *linked_obj, guint flags); void linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item); virtual void linked_modified_callback(SPObject *linked_obj, guint flags); - virtual void linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/) {}; + virtual void linked_transformed_callback(Geom::Affine const *rel_transf, SPItem */*moved_item*/); void on_link_button_click(); void emit_changed(); diff --git a/src/live_effects/parameter/originalitem.cpp b/src/live_effects/parameter/originalitem.cpp index 6de70be17..e828e1800 100644 --- a/src/live_effects/parameter/originalitem.cpp +++ b/src/live_effects/parameter/originalitem.cpp @@ -35,7 +35,6 @@ OriginalItemParam::OriginalItemParam( const Glib::ustring& label, const Glib::us Effect* effect) : ItemParam(label, tip, key, wr, effect, "") { - _insensitive = false; } OriginalItemParam::~OriginalItemParam() @@ -88,17 +87,16 @@ OriginalItemParam::param_newWidget() void OriginalItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) { - if (!_insensitive) { - emit_changed(); - SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); - } + emit_changed(); + SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); + last_transform = Geom::identity(); } void -OriginalItemParam::linked_transformed_callback(Geom::Affine const * /*rel_transf*/, SPItem * /*moved_item*/) +OriginalItemParam::linked_transformed_callback(Geom::Affine const * rel_transf, SPItem *moved_item) { -/** \todo find good way to compensate for referenced item transform, like done for normal clones. - * See sp-use.cpp: sp_use_move_compensate */ + last_transform = *rel_transf; + SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); } diff --git a/src/live_effects/parameter/originalitem.h b/src/live_effects/parameter/originalitem.h index 9b692c503..168728f86 100644 --- a/src/live_effects/parameter/originalitem.h +++ b/src/live_effects/parameter/originalitem.h @@ -23,7 +23,6 @@ public: Inkscape::UI::Widget::Registry* wr, Effect* effect); virtual ~OriginalItemParam(); - void setInsensitive(bool insensitive) { insensitive = _insensitive; } bool linksToItem() const { return (href != NULL); } SPItem * getObject() const { return ref.getObject(); } @@ -36,7 +35,6 @@ protected: void on_select_original_button_click(); private: - bool _insensitive; OriginalItemParam(const OriginalItemParam&); OriginalItemParam& operator=(const OriginalItemParam&); }; diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp index 83c237f2e..830d8aa90 100644 --- a/src/live_effects/parameter/originalitemarray.cpp +++ b/src/live_effects/parameter/originalitemarray.cpp @@ -444,7 +444,7 @@ gchar * OriginalItemArrayParam::param_getSVGValue() const gchar * OriginalItemArrayParam::param_getDefaultSVGValue() const { - return ""; + return g_strdup(""); } void OriginalItemArrayParam::update() -- cgit v1.2.3 From 8761f46f7b8c2a2df82203f5be89d60072998a82 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Mon, 2 Oct 2017 02:12:27 +0200 Subject: Second batch --- src/main.cpp | 80 +++++++++--------------------- src/selection-chemistry.cpp | 42 +++++++--------- src/sp-flowdiv.cpp | 107 +++++++++++++---------------------------- src/sp-tspan.cpp | 33 ++++++------- src/sp-use.cpp | 15 +++--- src/ui/tools/gradient-tool.cpp | 85 ++++++++++++++------------------ src/ui/tools/mesh-tool.cpp | 62 ------------------------ src/ui/tools/tweak-tool.cpp | 13 ++--- 8 files changed, 138 insertions(+), 299 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 71014ee35..3402bcc72 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -294,7 +294,7 @@ static void resetCommandlineGlobals() { #ifdef WIN32 static bool replaceArgs( int& argc, char**& argv ); #endif -static GSList *sp_process_args(poptContext ctx); +static std::vector sp_process_args(poptContext ctx); struct poptOption options[] = { {"version", 'V', POPT_ARG_NONE, NULL, SP_ARG_VERSION, @@ -815,46 +815,19 @@ static void fixupSingleFilename( gchar **orig, gchar **spare ) -static GSList *fixupFilenameEncoding( GSList* fl ) +static void fixupFilenameEncoding( std::vector &filenames) { - GSList *newFl = NULL; - while ( fl ) { - gchar *fn = static_cast(fl->data); - fl = g_slist_remove( fl, fl->data ); + for (int i=0; i *flDest ) { #ifdef ENABLE_NLS // temporarily switch gettext encoding to locale, so that help messages can be output properly @@ -866,7 +839,7 @@ static int sp_common_main( int argc, char const **argv, GSList **flDest ) g_return_val_if_fail(ctx != NULL, 1); /* Collect own arguments */ - GSList *fl = sp_process_args(ctx); + std::vector fl = sp_process_args(ctx); poptFreeContext(ctx); #ifdef ENABLE_NLS @@ -877,7 +850,7 @@ static int sp_common_main( int argc, char const **argv, GSList **flDest ) // Now let's see if the file list still holds up if ( needToRecodeParams ) { - fl = fixupFilenameEncoding( fl ); + fixupFilenameEncoding( fl ); } // Check the globals for filename-fixup @@ -916,12 +889,10 @@ static int sp_common_main( int argc, char const **argv, GSList **flDest ) // Return the list if wanted, else free it up. if ( flDest ) { - *flDest = fl; - fl = 0; + flDest->insert(flDest->end(),fl.begin(),fl.end()); } else { - while ( fl ) { - g_free( fl->data ); - fl = g_slist_remove( fl, fl->data ); + for (auto i:fl) { + g_free(i); } } return 0; @@ -1020,7 +991,7 @@ sp_main_gui(int argc, char const **argv) { Gtk::Main main_instance (&argc, const_cast(&argv)); - GSList *fl = NULL; + std::vector fl; int retVal = sp_common_main( argc, argv, &fl ); g_return_val_if_fail(retVal == 0, 1); @@ -1036,11 +1007,10 @@ sp_main_gui(int argc, char const **argv) /// \todo FIXME BROKEN - non-UTF-8 sneaks in here. Inkscape::Application::create(argv[0], true); - while (fl) { - if (sp_file_open((gchar *)fl->data,NULL)) { + for (auto i:fl) { + if (sp_file_open(i,NULL)) { create_new=false; } - fl = g_slist_remove(fl, fl->data); } if (create_new) { sp_file_new_default(); @@ -1060,11 +1030,11 @@ sp_main_gui(int argc, char const **argv) /** * Process file list */ -static int sp_process_file_list(GSList *fl) +static int sp_process_file_list(std::vector fl) { int retVal = 0; #ifdef WITH_DBUS - if (!fl) { + if (fl.empty()) { // If we've been asked to listen for D-Bus messages, enter a main loop here // The main loop may be exited by calling "exit" on the D-Bus application interface. if (sp_dbus_listen) { @@ -1074,8 +1044,7 @@ static int sp_process_file_list(GSList *fl) } #endif // WITH_DBUS - while (fl) { - const gchar *filename = (gchar *)fl->data; + for (auto filename:fl) { SPDocument *doc = NULL; try { @@ -1201,7 +1170,6 @@ static int sp_process_file_list(GSList *fl) delete doc; } - fl = g_slist_remove(fl, fl->data); } return retVal; } @@ -1258,7 +1226,7 @@ static int sp_main_shell(char const* command_name) poptContext ctx = poptGetContext(NULL, argc, const_cast(argv), options, 0); poptSetOtherOptionHelp(ctx, _("[OPTIONS...] [FILE...]\n\nAvailable options:")); if ( ctx ) { - GSList *fl = sp_process_args(ctx); + std::vector fl = sp_process_args(ctx); if (sp_process_file_list(fl)) { retval = -1; } @@ -1297,11 +1265,11 @@ int sp_main_console(int argc, char const **argv) char **argv2 = const_cast(argv); gtk_init_check( &argc, &argv2 ); - GSList *fl = NULL; + std::vector fl; int retVal = sp_common_main( argc, argv, &fl ); g_return_val_if_fail(retVal == 0, 1); - if (fl == NULL && !sp_shell + if (fl.empty() && !sp_shell #ifdef WITH_DBUS && !sp_dbus_listen #endif // WITH_DBUS @@ -2131,10 +2099,10 @@ bool replaceArgs( int& argc, char**& argv ) } #endif // WIN32 -static GSList * +static std::vector sp_process_args(poptContext ctx) { - GSList *fl = NULL; + std::vector fl; gint a; while ((a = poptGetNextOpt(ctx)) != -1) { @@ -2142,7 +2110,7 @@ sp_process_args(poptContext ctx) case SP_ARG_FILE: { gchar const *fn = poptGetOptArg(ctx); if (fn != NULL) { - fl = g_slist_append(fl, g_strdup(fn)); + fl.push_back(g_strdup(fn)); } break; } @@ -2214,7 +2182,7 @@ sp_process_args(poptContext ctx) gchar const ** const args = poptGetArgs(ctx); if (args != NULL) { for (unsigned i = 0; args[i] != NULL; i++) { - fl = g_slist_append(fl, g_strdup(args[i])); + fl.push_back(g_strdup(args[i])); } } diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 7dfe74752..be0d7c7d8 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -768,18 +768,12 @@ Inkscape::XML::Node* ObjectSet::group() { } -static gint clone_depth_descending(gconstpointer a, gconstpointer b) { +static bool clone_depth_descending(gconstpointer a, gconstpointer b) { SPUse *use_a = static_cast(const_cast(a)); SPUse *use_b = static_cast(const_cast(b)); int depth_a = use_a->cloneDepth(); int depth_b = use_b->cloneDepth(); - if (depth_a < depth_b) { - return 1; - } else if (depth_a == depth_b) { - return 0; - } else { - return -1; - } + return (depth_a==depth_b)?(adepth_b); } void ObjectSet::popFromGroup(){ @@ -822,7 +816,7 @@ static void ungroup_impl(ObjectSet *set) // If any of the clones refer to the groups, unlink them and replace them with successors // in the items list. - GSList *clones_to_unlink = NULL; + std::vector clones_to_unlink; for (std::vector::const_iterator item = items.begin(); item != items.end(); ++item) { SPUse *use = dynamic_cast(*item); @@ -832,21 +826,19 @@ static void ungroup_impl(ObjectSet *set) } if (groups.find(original) != groups.end()) { - clones_to_unlink = g_slist_prepend(clones_to_unlink, *item); + clones_to_unlink.push_back(use); } } // Unlink clones beginning from those with highest clone depth. // This way we can be sure than no additional automatic unlinking happens, // and the items in the list remain valid - clones_to_unlink = g_slist_sort(clones_to_unlink, clone_depth_descending); + std::sort(clones_to_unlink.begin(),clones_to_unlink.end(),clone_depth_descending); - for (GSList *item = clones_to_unlink; item; item = item->next) { - SPUse *use = static_cast(item->data); - std::vector::iterator items_node = std::find(items.begin(),items.end(), item->data); + for (auto use:clones_to_unlink) { + std::vector::iterator items_node = std::find(items.begin(),items.end(), use); *items_node = use->unlink(); } - g_slist_free(clones_to_unlink); // do the actual work for (std::vector::iterator item = items.begin(); item != items.end(); ++item) { @@ -2380,7 +2372,7 @@ private: template -SPItem *next_item(SPDesktop *desktop, GSList *path, SPObject *root, +SPItem *next_item(SPDesktop *desktop, std::vector &path, SPObject *root, bool only_in_viewport, PrefsSelectionContext inlayer, bool onlyvisible, bool onlysensitive) { typename D::Iterator children; @@ -2388,11 +2380,12 @@ SPItem *next_item(SPDesktop *desktop, GSList *path, SPObject *root, SPItem *found=NULL; - if (path) { - SPObject *object=reinterpret_cast(path->data); + if (!path.empty()) { + SPObject *object=path.back(); + path.pop_back(); g_assert(object->parent == root); if (desktop->isLayer(object)) { - found = next_item(desktop, path->next, object, only_in_viewport, inlayer, onlyvisible, onlysensitive); + found = next_item(desktop, path, object, only_in_viewport, inlayer, onlyvisible, onlysensitive); } iter = children = D::siblings_after(object); } else { @@ -2403,7 +2396,8 @@ SPItem *next_item(SPDesktop *desktop, GSList *path, SPObject *root, SPObject *object=D::object(iter); if (desktop->isLayer(object)) { if (PREFS_SELECTION_LAYER != inlayer) { // recurse into sublayers - found = next_item(desktop, NULL, object, only_in_viewport, inlayer, onlyvisible, onlysensitive); + std::vector empt; + found = next_item(desktop, empt, object, only_in_viewport, inlayer, onlyvisible, onlysensitive); } } else { SPItem *item = dynamic_cast(object); @@ -2440,19 +2434,19 @@ SPItem *next_item_from_list(SPDesktop *desktop, std::vector const &item } } - GSList *path=NULL; + std::vector path; while ( current != root ) { - path = g_slist_prepend(path, current); + path.push_back(current); current = current->parent; } SPItem *next; // first, try from the current object next = next_item(desktop, path, root, only_in_viewport, inlayer, onlyvisible, onlysensitive); - g_slist_free(path); if (!next) { // if we ran out of objects, start over at the root - next = next_item(desktop, NULL, root, only_in_viewport, inlayer, onlyvisible, onlysensitive); + std::vector empt; + next = next_item(desktop, empt, root, only_in_viewport, inlayer, onlyvisible, onlysensitive); } return next; diff --git a/src/sp-flowdiv.cpp b/src/sp-flowdiv.cpp index 17b841e37..002fcff85 100644 --- a/src/sp-flowdiv.cpp +++ b/src/sp-flowdiv.cpp @@ -26,18 +26,13 @@ void SPFlowdiv::update(SPCtx *ctx, unsigned int flags) { } childflags &= SP_OBJECT_MODIFIED_CASCADE; - GSList* l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { if (SP_IS_ITEM(child)) { SPItem const &chi = *SP_ITEM(child); @@ -64,22 +59,16 @@ void SPFlowdiv::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } @@ -102,7 +91,7 @@ Inkscape::XML::Node* SPFlowdiv::write(Inkscape::XML::Document *xml_doc, Inkscape repr = xml_doc->createElement("svg:flowDiv"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node* c_repr = NULL; @@ -116,14 +105,12 @@ Inkscape::XML::Node* SPFlowdiv::write(Inkscape::XML::Document *xml_doc, Inkscape } if ( c_repr ) { - l = g_slist_prepend (l, c_repr); + l.push_back(c_repr); } } - - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { @@ -166,19 +153,13 @@ void SPFlowtspan::update(SPCtx *ctx, unsigned int flags) { childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } childflags &= SP_OBJECT_MODIFIED_CASCADE; - - GSList* l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { if (SP_IS_ITEM(child)) { SPItem const &chi = *SP_ITEM(child); @@ -204,23 +185,16 @@ void SPFlowtspan::modified(unsigned int flags) { } flags &= SP_OBJECT_MODIFIED_CASCADE; - - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } @@ -240,7 +214,7 @@ Inkscape::XML::Node *SPFlowtspan::write(Inkscape::XML::Document *xml_doc, Inksca repr = xml_doc->createElement("svg:flowSpan"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node* c_repr = NULL; @@ -254,14 +228,12 @@ Inkscape::XML::Node *SPFlowtspan::write(Inkscape::XML::Document *xml_doc, Inksca } if ( c_repr ) { - l = g_slist_prepend(l, c_repr); + l.push_back(c_repr); } } - - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { @@ -306,18 +278,13 @@ void SPFlowpara::update(SPCtx *ctx, unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList* l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { if (SP_IS_ITEM(child)) { SPItem const &chi = *SP_ITEM(child); @@ -328,7 +295,6 @@ void SPFlowpara::update(SPCtx *ctx, unsigned int flags) { child->updateDisplay(ctx, flags); } } - sp_object_unref(child); } } @@ -342,22 +308,16 @@ void SPFlowpara::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse (l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for(auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } @@ -377,7 +337,7 @@ Inkscape::XML::Node *SPFlowpara::write(Inkscape::XML::Document *xml_doc, Inkscap repr = xml_doc->createElement("svg:flowPara"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node* c_repr = NULL; @@ -391,14 +351,13 @@ Inkscape::XML::Node *SPFlowpara::write(Inkscape::XML::Document *xml_doc, Inkscap } if ( c_repr ) { - l = g_slist_prepend(l, c_repr); + l.push_back(c_repr); } } - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { diff --git a/src/sp-tspan.cpp b/src/sp-tspan.cpp index 2e169ad77..d8c655c06 100644 --- a/src/sp-tspan.cpp +++ b/src/sp-tspan.cpp @@ -171,7 +171,7 @@ Inkscape::XML::Node* SPTSpan::write(Inkscape::XML::Document *xml_doc, Inkscape:: this->attributes.writeTo(repr); if ( flags&SP_OBJECT_WRITE_BUILD ) { - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node* c_repr=NULL; @@ -185,14 +185,13 @@ Inkscape::XML::Node* SPTSpan::write(Inkscape::XML::Document *xml_doc, Inkscape:: } if ( c_repr ) { - l = g_slist_prepend(l, c_repr); + l.push_back(c_repr); } } - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i = l.rbegin(); i!= l.rend(); ++i) { + repr->addChild((*i), NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { @@ -395,7 +394,7 @@ Inkscape::XML::Node* SPTextPath::write(Inkscape::XML::Document *xml_doc, Inkscap } if ( flags & SP_OBJECT_WRITE_BUILD ) { - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node* c_repr=NULL; @@ -409,14 +408,13 @@ Inkscape::XML::Node* SPTextPath::write(Inkscape::XML::Document *xml_doc, Inkscap } if ( c_repr ) { - l = g_slist_prepend(l, c_repr); + l.push_back(c_repr); } } - while ( l ) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for( auto i = l.rbegin(); i != l.rend(); ++i ) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { @@ -462,24 +460,23 @@ void sp_textpath_to_text(SPObject *tp) xy *= tp->document->getDocumentScale().inverse(); // Convert to user-units. // make a list of textpath children - GSList *tp_reprs = NULL; + std::vector tp_reprs; for (auto& o: tp->children) { - tp_reprs = g_slist_prepend(tp_reprs, o.getRepr()); + tp_reprs.push_back(o.getRepr()); } - for ( GSList *i = tp_reprs ; i ; i = i->next ) { + for (auto i = tp_reprs.rbegin(); i != tp_reprs.rend(); ++i) { // make a copy of each textpath child - Inkscape::XML::Node *copy = ((Inkscape::XML::Node *) i->data)->duplicate(text->getRepr()->document()); + Inkscape::XML::Node *copy = (*i)->duplicate(text->getRepr()->document()); // remove the old repr from under textpath - tp->getRepr()->removeChild((Inkscape::XML::Node *) i->data); + tp->getRepr()->removeChild(*i); // put its copy under text text->getRepr()->addChild(copy, NULL); // fixme: copy id } //remove textpath tp->deleteObject(); - g_slist_free(tp_reprs); // set x/y on text (to be near where it was when on path) /* fixme: Yuck, is this really the right test? */ diff --git a/src/sp-use.cpp b/src/sp-use.cpp index abb59d299..fae442cfa 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -356,22 +356,21 @@ Geom::Affine SPUse::get_root_transform() { //track the ultimate source of a chain of uses SPObject *orig = this->child; - GSList *chain = NULL; - chain = g_slist_prepend(chain, this); + std::vector chain; + chain.push_back(this); while (dynamic_cast(orig)) { - chain = g_slist_prepend(chain, orig); + chain.push_back(dynamic_cast(orig)); orig = dynamic_cast(orig)->child; } - chain = g_slist_prepend(chain, orig); - + chain.push_back(dynamic_cast(orig)); // calculate the accummulated transform, starting from the original Geom::Affine t(Geom::identity()); - for (GSList *i = chain; i != NULL; i = i->next) { - SPItem *i_tem = reinterpret_cast(i->data); + for (auto i=chain.rbegin(); i!=chain.rend(); ++i) { + SPItem *i_tem = *i; // "An additional transformation translate(x,y) is appended to the end (i.e., // right-side) of the transform attribute on the generated 'g', where x and y @@ -385,8 +384,6 @@ Geom::Affine SPUse::get_root_transform() { t *= i_tem->transform; } - - g_slist_free(chain); return t; } diff --git a/src/ui/tools/gradient-tool.cpp b/src/ui/tools/gradient-tool.cpp index 95d940bd6..966183b1a 100644 --- a/src/ui/tools/gradient-tool.cpp +++ b/src/ui/tools/gradient-tool.cpp @@ -219,7 +219,7 @@ sp_gradient_context_is_over_line (GradientTool *rc, SPItem *item, Geom::Point ev } static std::vector -sp_gradient_context_get_stop_intervals (GrDrag *drag, GSList **these_stops, GSList **next_stops) +sp_gradient_context_get_stop_intervals (GrDrag *drag, std::vector &these_stops, std::vector &next_stops) { std::vector coords; @@ -285,15 +285,15 @@ sp_gradient_context_get_stop_intervals (GrDrag *drag, GSList **these_stops, GSLi } // if both adjacent draggers selected, - if (!g_slist_find(*these_stops, this_stop) && dnext && dnext->isSelected()) { + if ((std::find(these_stops.begin(),these_stops.end(),this_stop)==these_stops.end()) && dnext && dnext->isSelected()) { // remember the coords of the future dragger to select it coords.push_back(0.5*(dragger->point + dnext->point)); // do not insert a stop now, it will confuse the loop; // just remember the stops - *these_stops = g_slist_prepend (*these_stops, this_stop); - *next_stops = g_slist_prepend (*next_stops, next_stop); + these_stops.push_back(this_stop); + next_stops.push_back(next_stop); } } } @@ -307,12 +307,12 @@ sp_gradient_context_add_stops_between_selected_stops (GradientTool *rc) SPDocument *doc = NULL; GrDrag *drag = rc->_grdrag; - GSList *these_stops = NULL; - GSList *next_stops = NULL; + std::vector these_stops; + std::vector next_stops; - std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); + std::vector coords = sp_gradient_context_get_stop_intervals (drag, these_stops, next_stops); - if (g_slist_length(these_stops) == 0 && drag->numSelected() == 1) { + if (these_stops.empty() && drag->numSelected() == 1) { // if a single stop is selected, add between that stop and the next one GrDragger *dragger = *(drag->selected.begin()); for (std::vector::const_iterator j = dragger->draggables.begin(); j != dragger->draggables.end(); ++j) { @@ -330,47 +330,42 @@ sp_gradient_context_add_stops_between_selected_stops (GradientTool *rc) if (this_stop) { SPStop *next_stop = this_stop->getNextStop(); if (next_stop) { - these_stops = g_slist_prepend (these_stops, this_stop); - next_stops = g_slist_prepend (next_stops, next_stop); + these_stops.push_back(this_stop); + next_stops.push_back(next_stop); } } } } // now actually create the new stops - GSList *i = these_stops; - GSList *j = next_stops; - GSList *new_stops = NULL; + auto i = these_stops.rbegin(); + auto j = next_stops.rbegin(); + std::vector new_stops; - for (; i != NULL && j != NULL; i = i->next, j = j->next) { - SPStop *this_stop = (SPStop *) i->data; - SPStop *next_stop = (SPStop *) j->data; + for (;i != these_stops.rend() && j != next_stops.rend(); ++i, ++j ) { + SPStop *this_stop = *i; + SPStop *next_stop = *j; gfloat offset = 0.5*(this_stop->offset + next_stop->offset); SPObject *parent = this_stop->parent; if (SP_IS_GRADIENT (parent)) { doc = parent->document; SPStop *new_stop = sp_vector_add_stop (SP_GRADIENT (parent), this_stop, next_stop, offset); - new_stops = g_slist_prepend (new_stops, new_stop); + new_stops.push_back(new_stop); SP_GRADIENT(parent)->ensureVector(); } } - if (g_slist_length(these_stops) > 0 && doc) { + if (!these_stops.empty() && doc) { DocumentUndo::done(doc, SP_VERB_CONTEXT_GRADIENT, _("Add gradient stop")); drag->updateDraggers(); // so that it does not automatically update draggers in idle loop, as this would deselect drag->local_change = true; // select the newly created stops - for (GSList *s = new_stops; s != NULL; s = s->next) { - drag->selectByStop((SPStop *)s->data); + for (auto i:new_stops) { + drag->selectByStop(i); } - } - - g_slist_free (these_stops); - g_slist_free (next_stops); - g_slist_free (new_stops); } static double sqr(double x) {return x*x;} @@ -381,26 +376,25 @@ sp_gradient_simplify(GradientTool *rc, double tolerance) SPDocument *doc = NULL; GrDrag *drag = rc->_grdrag; - GSList *these_stops = NULL; - GSList *next_stops = NULL; + std::vector these_stops; + std::vector next_stops; - std::vector coords = sp_gradient_context_get_stop_intervals (drag, &these_stops, &next_stops); + std::vector coords = sp_gradient_context_get_stop_intervals (drag, these_stops, next_stops); - GSList *todel = NULL; + std::set todel; - GSList *i = these_stops; - GSList *j = next_stops; - for (; i != NULL && j != NULL; i = i->next, j = j->next) { - SPStop *stop0 = (SPStop *) i->data; - SPStop *stop1 = (SPStop *) j->data; + auto i = these_stops.begin(); + auto j = next_stops.end(); + for (; i != these_stops.end() && j != next_stops.end(); ++i, ++j) { + SPStop *stop0 = *i; + SPStop *stop1 = *j; - gint i1 = g_slist_index(these_stops, stop1); - if (i1 != -1) { - GSList *next_next = g_slist_nth (next_stops, i1); - if (next_next) { - SPStop *stop2 = (SPStop *) next_next->data; + auto i1 = std::find(these_stops.begin(), these_stops.end(), stop1); + if (i1 != these_stops.end()) { + if (next_stops.size()>(i1-these_stops.begin())) { + SPStop *stop2 = *(next_stops.begin() + (i1-these_stops.begin())); - if (g_slist_find(todel, stop0) || g_slist_find(todel, stop2)) + if (todel.find(stop0)!=todel.end() || todel.find(stop2) != todel.end()) continue; guint32 const c0 = stop0->get_rgba32(); @@ -416,28 +410,23 @@ sp_gradient_simplify(GradientTool *rc, double tolerance) sqr(SP_RGBA32_A_F(c1) - SP_RGBA32_A_F(c1r)); if (diff < tolerance) - todel = g_slist_prepend (todel, stop1); + todel.insert(stop1); } } } - for (i = todel; i != NULL; i = i->next) { - SPStop *stop = (SPStop*) i->data; + for (auto stop : todel) { doc = stop->document; Inkscape::XML::Node * parent = stop->getRepr()->parent(); parent->removeChild( stop->getRepr() ); } - if (g_slist_length(todel) > 0) { + if (!todel.empty()) { DocumentUndo::done(doc, SP_VERB_CONTEXT_GRADIENT, _("Simplify gradient")); drag->local_change = true; drag->updateDraggers(); drag->selectByCoords(coords); } - - g_slist_free (todel); - g_slist_free (these_stops); - g_slist_free (next_stops); } diff --git a/src/ui/tools/mesh-tool.cpp b/src/ui/tools/mesh-tool.cpp index d79741270..1ded5e146 100644 --- a/src/ui/tools/mesh-tool.cpp +++ b/src/ui/tools/mesh-tool.cpp @@ -170,68 +170,6 @@ void MeshTool::selection_changed(Inkscape::Selection* /*sel*/) { // FIXME // We need to update mesh gradient handles. // Get gradient this drag belongs too.. - // std::cout << "mesh_selection_changed: selection: objects: " << n_obj << std::endl; - // GSList *itemList = (GSList *) selection->itemList(); - // while( itemList ) { - - // SPItem *item = SP_ITEM( itemList->data ); - // // std::cout << " item: " << SP_OBJECT(item)->getId() << std::endl; - - // SPStyle *style = item->style; - // if (style && (style->fill.isPaintserver())) { - - // SPPaintServer *server = item->style->getFillPaintServer(); - // if ( SP_IS_MESHGRADIENT(server) ) { - - // SPMeshGradient *mg = SP_MESHGRADIENT(server); - - // guint rows = 0;//mg->array.patches.size(); - // for ( guint i = 0; i < rows; ++i ) { - // guint columns = 0;//mg->array.patches[0].size(); - // for ( guint j = 0; j < columns; ++j ) { - // } - // } - // } - // } - // itemList = itemList->next; - // } - - // GList* dragger_ptr = drag->draggers; // Points to GrDragger class (group of GrDraggable) - // guint count = 0; - // while( dragger_ptr ) { - - // std::cout << "mesh_selection_changed: dragger: " << ++count << std::endl; - // GSList* draggable_ptr = ((GrDragger *) dragger_ptr->data)->draggables; - - // while( draggable_ptr ) { - - // std::cout << "mesh_selection_changed: draggable: " << draggable_ptr << std::endl; - // GrDraggable *draggable = (GrDraggable *) draggable_ptr->data; - - // gint point_type = draggable->point_type; - // gint point_i = draggable->point_i; - // bool fill_or_stroke = draggable->fill_or_stroke; - - // if( point_type == POINT_MG_CORNER ) { - - // //std::cout << "mesh_selection_changed: POINT_MG_CORNER: " << point_i << std::endl; - // // Now we must create or destroy corresponding handles. - - // if( g_list_find( drag->selected, dragger_ptr->data ) ) { - // //std::cout << "gradient_selection_changed: Selected: " << point_i << std::endl; - // // Which meshes does this point belong to? - - // } else { - // //std::cout << "mesh_selection_changed: Not Selected: " << point_i << std::endl; - // } - // } - - // draggable_ptr = draggable_ptr->next; - - // } - - // dragger_ptr = dragger_ptr->next; - // } } void MeshTool::setup() { diff --git a/src/ui/tools/tweak-tool.cpp b/src/ui/tools/tweak-tool.cpp index dcd9413fb..fca96a483 100644 --- a/src/ui/tools/tweak-tool.cpp +++ b/src/ui/tools/tweak-tool.cpp @@ -374,23 +374,20 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P } if (dynamic_cast(item) && !dynamic_cast(item)) { - GSList *children = NULL; + std::vector children; for (auto& child: item->children) { - if (dynamic_cast(static_cast(&child))) { - children = g_slist_prepend(children, &child); + if (dynamic_cast(&child)) { + children.push_back(dynamic_cast(&child)); } } - for (GSList *i = children; i; i = i->next) { - SPItem *child = dynamic_cast(static_cast(i->data)); + for (auto i = children.rbegin(); i!= children.rend(); ++i) { + SPItem *child = *i; g_assert(child != NULL); if (sp_tweak_dilate_recursive (selection, child, p, vector, mode, radius, force, fidelity, reverse)) { did = true; } } - - g_slist_free(children); - } else { if (mode == TWEAK_MODE_MOVE) { -- cgit v1.2.3 From 5e751a51beffbf8a1a292a16c6850215945c95e5 Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Mon, 2 Oct 2017 14:11:30 +0200 Subject: Improvements to translations in clone LPE --- src/live_effects/lpe-clone-original.cpp | 17 ++++++++++++++++- src/live_effects/lpe-clone-original.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/live_effects/lpe-clone-original.cpp b/src/live_effects/lpe-clone-original.cpp index 2d577bffd..15968dd56 100644 --- a/src/live_effects/lpe-clone-original.cpp +++ b/src/live_effects/lpe-clone-original.cpp @@ -48,13 +48,15 @@ LPECloneOriginal::LPECloneOriginal(LivePathEffectObject *lpeobject) : }; is_updating = false; listening = false; - previus_method = CLM_D; linked = g_strdup(this->getRepr()->attribute("linkeditem")); registerParameter(&linkeditem); registerParameter(&method); registerParameter(&attributes); registerParameter(&style_attributes); registerParameter(&allow_transforms); + prev_allow_trans = allow_transforms; + previus_method = method; + prev_affine = g_strdup(""); attributes.param_hide_canvas_text(); style_attributes.param_hide_canvas_text(); } @@ -236,15 +238,27 @@ LPECloneOriginal::doBeforeEffect (SPLPEItem const* lpeitem){ { dest->transform *= Geom::Translate((*d_bbox).corner(0) - (*o_bbox).corner(0)).inverse(); } + if (!allow_transforms) { SP_ITEM(dest)->getRepr()->setAttribute("transform", SP_ITEM(orig)->getAttribute("transform")); + } else { + SP_ITEM(dest)->getRepr()->setAttribute("transform", sp_svg_transform_write(dest->transform)); + if (prev_allow_trans == allow_transforms) { + prev_affine = g_strdup(SP_ITEM(dest)->getAttribute("transform")); + } } + + if (prev_allow_trans != allow_transforms && allow_transforms) { + SP_ITEM(dest)->getRepr()->setAttribute("transform", prev_affine); + } + linked = g_strdup(id); g_free(id); } else { linked = g_strdup(""); } previus_method = method; + prev_allow_trans = allow_transforms; } void @@ -280,6 +294,7 @@ LPECloneOriginal::~LPECloneOriginal() { quit_listening(); g_free(linked); + g_free(prev_affine); } void diff --git a/src/live_effects/lpe-clone-original.h b/src/live_effects/lpe-clone-original.h index e429d6817..8327b6767 100644 --- a/src/live_effects/lpe-clone-original.h +++ b/src/live_effects/lpe-clone-original.h @@ -49,6 +49,8 @@ private: Clonelpemethod previus_method; bool listening; bool is_updating; + bool prev_allow_trans; + gchar * prev_affine; sigc::connection modified_connection; LPECloneOriginal(const LPECloneOriginal&); LPECloneOriginal& operator=(const LPECloneOriginal&); -- cgit v1.2.3 From 3e075e587aaa712efb1704478cd1a75131882889 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Mon, 2 Oct 2017 23:30:11 +0200 Subject: third batch --- src/ege-color-prof-tracker.cpp | 48 +++++++++---------- src/extension/init.cpp | 13 +----- src/extension/internal/gdkpixbuf-input.cpp | 15 ++---- src/gradient-drag.cpp | 26 +++++------ src/selection-chemistry.cpp | 74 ++++++++---------------------- src/sp-defs.cpp | 24 ++++------ src/sp-filter.cpp | 11 ++--- src/sp-gradient.cpp | 44 +++++++----------- src/sp-item-group.cpp | 34 ++++++-------- src/sp-mesh-patch.cpp | 13 ++---- src/sp-object-group.cpp | 12 ++--- src/text-chemistry.cpp | 21 ++++----- 12 files changed, 121 insertions(+), 214 deletions(-) diff --git a/src/ege-color-prof-tracker.cpp b/src/ege-color-prof-tracker.cpp index 3a91fee4d..8401b2cc3 100644 --- a/src/ege-color-prof-tracker.cpp +++ b/src/ege-color-prof-tracker.cpp @@ -40,6 +40,8 @@ /* Note: this file should be kept compilable as both .cpp and .c */ #include +#include +#include #include @@ -63,14 +65,17 @@ enum { static void ege_color_prof_tracker_get_property( GObject* obj, guint propId, GValue* value, GParamSpec * pspec ); static void ege_color_prof_tracker_set_property( GObject* obj, guint propId, const GValue *value, GParamSpec* pspec ); -typedef struct _ScreenTrack { +class ScreenTrack { + public: #ifdef GDK_WINDOWING_X11 gboolean zeroSeen; gboolean otherSeen; #endif /* GDK_WINDOWING_X11 */ - GSList* trackers; + std::vector *trackers; GPtrArray* profiles; -} ScreenTrack; + ~ScreenTrack(){ delete trackers; } +}; + #ifdef GDK_WINDOWING_X11 GdkFilterReturn x11_win_filter(GdkXEvent *xevent, GdkEvent *event, gpointer data); @@ -86,7 +91,7 @@ static guint signals[LAST_SIGNAL] = {0}; // There is only one GdkScreen in Gtk+ 3 static ScreenTrack *tracked_screen = nullptr; -static GSList* abstract_trackers = 0; +static std::vector abstract_trackers; struct _EgeColorProfTrackerPrivate { @@ -182,7 +187,7 @@ EgeColorProfTracker* ege_color_prof_tracker_new( GtkWidget* target ) target_hierarchy_changed_cb( target, 0, obj ); target_screen_changed_cb( target, 0, obj ); } else { - abstract_trackers = g_slist_append( abstract_trackers, obj ); + abstract_trackers.push_back(tracker); if(tracked_screen) { for ( gint monitor = 0; monitor < (gint)tracked_screen->profiles->len; monitor++ ) { @@ -280,9 +285,8 @@ void track_screen( GdkScreen* screen, EgeColorProfTracker* tracker ) { if ( tracked_screen ) { /* We found the screen already being tracked */ - GSList* trackHook = g_slist_find( tracked_screen->trackers, tracker ); - if ( !trackHook ) { - tracked_screen->trackers = g_slist_append( tracked_screen->trackers, tracker ); + if ( std::find(tracked_screen->trackers->begin(),tracked_screen->trackers->end(),tracker)==tracked_screen->trackers->end() ) { + tracked_screen->trackers->push_back(tracker); } } else { tracked_screen = g_new(ScreenTrack, 1); @@ -299,7 +303,8 @@ void track_screen( GdkScreen* screen, EgeColorProfTracker* tracker ) tracked_screen->zeroSeen = FALSE; tracked_screen->otherSeen = FALSE; #endif /* GDK_WINDOWING_X11 */ - tracked_screen->trackers = g_slist_append( 0, tracker ); + tracked_screen->trackers= new std::vector; + tracked_screen->trackers->push_back(tracker ); tracked_screen->profiles = g_ptr_array_new(); for ( int i = 0; i < numMonitors; i++ ) { g_ptr_array_add( tracked_screen->profiles, 0 ); @@ -323,15 +328,12 @@ void target_finalized( gpointer data, GObject* where_the_object_was ) { (void)data; if ( tracked_screen ) { - GSList* trackHook = tracked_screen->trackers; - while ( trackHook ) { - if ( (void*)(((EgeColorProfTracker*)(trackHook->data))->private_data->_target) == (void*)where_the_object_was ) { + for (auto i = tracked_screen->trackers->begin(); i != tracked_screen->trackers->end(); ++i) { + if ( (void*)((*i)->private_data->_target) == (void*)where_the_object_was ) { /* The tracked widget is now gone, remove it */ - ((EgeColorProfTracker*)trackHook->data)->private_data->_target = 0; - tracked_screen->trackers = g_slist_remove( tracked_screen->trackers, trackHook ); - trackHook = 0; - } else { - trackHook = g_slist_next( trackHook ); + (*i)->private_data->_target = 0; + tracked_screen->trackers->erase(i); + break; } } } @@ -578,14 +580,10 @@ void add_x11_tracking_for_screen(GdkScreen* screen) void fire(gint monitor) { if ( tracked_screen ) { - GSList* trackHook = tracked_screen->trackers; - - while ( trackHook ) { - EgeColorProfTracker* tracker = (EgeColorProfTracker*)(trackHook->data); + for (auto tracker:(*(tracked_screen->trackers))) { if ( (monitor == -1) || (tracker->private_data->_monitor == monitor) ) { g_signal_emit( G_OBJECT(tracker), signals[CHANGED], 0 ); } - trackHook = g_slist_next(trackHook); } } } @@ -609,8 +607,6 @@ static void clear_profile( guint monitor ) static void set_profile( guint monitor, const guint8* data, guint len ) { if ( tracked_screen ) { - GSList* abstracts = 0; - for ( guint i = tracked_screen->profiles->len; i <= monitor; i++ ) { g_ptr_array_add( tracked_screen->profiles, 0 ); } @@ -627,8 +623,8 @@ static void set_profile( guint monitor, const guint8* data, guint len ) tracked_screen->profiles->pdata[monitor] = 0; } - for ( abstracts = abstract_trackers; abstracts; abstracts = g_slist_next(abstracts) ) { - g_signal_emit( G_OBJECT(abstracts->data), signals[MODIFIED], 0, monitor ); + for (auto i:abstract_trackers) { + g_signal_emit( G_OBJECT(i), signals[MODIFIED], 0, monitor ); } } } diff --git a/src/extension/init.cpp b/src/extension/init.cpp index 9830b0176..699c0382f 100644 --- a/src/extension/init.cpp +++ b/src/extension/init.cpp @@ -130,20 +130,9 @@ static void check_extensions(); */ static void update_pref(Glib::ustring const &pref_path, - gchar const *pref_default) // , GSList *extension_family) + gchar const *pref_default) { Glib::ustring pref = Inkscape::Preferences::get()->getString(pref_path); - /* - gboolean missing=TRUE; - for (GSList *list = extension_family; list; list = g_slist_next(list)) { - g_assert( list->data ); - - Inkscape::Extension *extension; - extension = reinterpret_cast(list->data); - - if (!strcmp(extension->get_id(),pref)) missing=FALSE; - } - */ if (!Inkscape::Extension::db.get( pref.data() ) /*missing*/) { Inkscape::Preferences::get()->setString(pref_path, pref_default); } diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index e0dc90981..7af7927f2 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include #include @@ -163,14 +165,9 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) void GdkpixbufInput::init(void) { - GSList * formatlist, * formatlisthead; - - /* \todo I'm not sure if I need to free this list */ - for (formatlist = formatlisthead = gdk_pixbuf_get_formats(); - formatlist != NULL; - formatlist = g_slist_next(formatlist)) { - - GdkPixbufFormat *pixformat = (GdkPixbufFormat *)formatlist->data; + static std::vector< Gdk::PixbufFormat > formatlist = Gdk::Pixbuf::get_formats(); + for (auto i: formatlist) { + GdkPixbufFormat *pixformat = i.gobj(); gchar *name = gdk_pixbuf_format_get_name(pixformat); gchar *description = gdk_pixbuf_format_get_description(pixformat); @@ -240,8 +237,6 @@ GdkpixbufInput::init(void) g_strfreev(mimetypes); g_strfreev(extensions); } - - g_slist_free(formatlisthead); } } } } /* namespace Inkscape, Extension, Implementation */ diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index 103a3df9c..2af665ec5 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -2875,8 +2875,9 @@ void GrDrag::deleteSelected(bool just_one) SPGradient * vector; }; - GSList *midstoplist = NULL; // list of stops that must be deleted (will be deleted first) - GSList *endstoplist = NULL; // list of stops that must be deleted + std::vector midstoplist;// list of stops that must be deleted (will be deleted first) + std::vector endstoplist;// list of stops that must be deleted + while (!selected.empty()) { GrDragger *dragger = *(selected.begin()); for(std::vector::const_iterator drgble = dragger->draggables.begin(); drgble != dragger->draggables.end(); ++drgble) { @@ -2892,14 +2893,14 @@ void GrDrag::deleteSelected(bool just_one) SPStop *stop = sp_get_stop_i(vector, draggable->point_i); // check if already present in list. (e.g. when both RG_MID1 and RG_MID2 were selected) bool present = false; - for (GSList const * l = midstoplist; l != NULL; l = l->next) { - if ( (SPStop*)l->data == stop ) { + for (auto i:midstoplist) { + if ( i == stop ) { present = true; break; // no need to search further. } } if (!present) - midstoplist = g_slist_append(midstoplist, stop); + midstoplist.push_back(stop); } break; case POINT_LG_BEGIN: @@ -2922,14 +2923,14 @@ void GrDrag::deleteSelected(bool just_one) stopinfo->vector = vector; // check if already present in list. (e.g. when both R1 and R2 were selected) bool present = false; - for (GSList const * l = endstoplist; l != NULL; l = l->next) { - if ( ((StructStopInfo*)l->data)->spstop == stopinfo->spstop ) { + for (auto i : endstoplist) { + if ( i->spstop == stopinfo->spstop ) { present = true; break; // no need to search further. } } if (!present) - endstoplist = g_slist_append(endstoplist, stopinfo); + endstoplist.push_back(stopinfo); } } break; @@ -2941,15 +2942,13 @@ void GrDrag::deleteSelected(bool just_one) selected.erase(dragger); if ( just_one ) break; // iterate once if just_one is set. } - while (midstoplist) { - SPStop *stop = (SPStop*) midstoplist->data; + for (auto stop:midstoplist) { document = stop->document; Inkscape::XML::Node * parent = stop->getRepr()->parent(); parent->removeChild(stop->getRepr()); - midstoplist = g_slist_remove(midstoplist, stop); } - while (endstoplist) { - StructStopInfo *stopinfo = (StructStopInfo*) endstoplist->data; + + for (auto stopinfo:endstoplist) { document = stopinfo->spstop->document; // 2 is the minimum, cannot delete more than that without deleting the whole vector @@ -3096,7 +3095,6 @@ void GrDrag::deleteSelected(bool just_one) sp_repr_css_attr_unref (css); } - endstoplist = g_slist_remove(endstoplist, stopinfo); delete stopinfo; } diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index be0d7c7d8..863d8858a 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -2093,8 +2093,6 @@ std::vector sp_get_same_object_type(SPItem *sel, std::vector & return matches; } -GSList *sp_get_same_fill_or_stroke_color(SPItem *sel, GSList *src, SPSelectStrokeStyleType type); - /* * Find all items in src list that have the same stroke style as sel by type * Return the list of matching items @@ -2331,14 +2329,15 @@ typedef struct Forward { static Iterator children(SPObject *o) { return o->firstChild(); } static Iterator siblings_after(SPObject *o) { return o->getNext(); } - static void dispose(Iterator /*i*/) {} + static void dispose(Iterator i) {} static SPObject *object(Iterator i) { return i; } static Iterator next(Iterator i) { return i->getNext(); } + static bool isNull(Iterator i) {return (!i);} } Forward; typedef struct ListReverse { - typedef GSList *Iterator; + typedef std::list *Iterator; static Iterator children(SPObject *o) { return make_list(o, NULL); @@ -2347,23 +2346,24 @@ typedef struct ListReverse { return make_list(o->parent, o); } static void dispose(Iterator i) { - g_slist_free(i); + delete i; } static SPObject *object(Iterator i) { - return reinterpret_cast(i->data); + return *(i->begin()); } - static Iterator next(Iterator i) { return i->next; } + static Iterator next(Iterator i) { i->pop_front(); return i; } + + static bool isNull(Iterator i) {return i->empty();} private: - static GSList *make_list(SPObject *object, SPObject *limit) { - GSList *list = NULL; + static std::list *make_list(SPObject *object, SPObject *limit) { + auto list = new std::list; for (auto &child: object->children) { if (&child == limit) { break; } - list = g_slist_prepend(list, &child); - + list->push_front(&child); } return list; } @@ -2392,7 +2392,7 @@ SPItem *next_item(SPDesktop *desktop, std::vector &path, SPObject *r iter = children = D::children(root); } - while ( iter && !found ) { + while ( !D::isNull(iter) && !found ) { SPObject *object=D::object(iter); if (desktop->isLayer(object)) { if (PREFS_SELECTION_LAYER != inlayer) { // recurse into sublayers @@ -2546,41 +2546,11 @@ void sp_selection_next_patheffect_param(SPDesktop * dt) void ObjectSet::editMask(bool /*clip*/) { return; - /*if (!dt) return; - using namespace Inkscape::UI; - - Inkscape::Selection *selection = dt->getSelection(); - if (!selection || selection->isEmpty()) return; - - GSList const *items = selection->itemList(); - bool has_path = false; - for (GSList *i = const_cast(items); i; i= i->next) { - SPItem *item = SP_ITEM(i->data); - SPObject *search = clip - ? (item->clip_ref ? item->clip_ref->getObject() : NULL) - : item->mask_ref ? item->mask_ref->getObject() : NULL; - has_path |= has_path_recursive(search); - if (has_path) break; - } - if (has_path) { - if (!tools_isactive(dt, TOOLS_NODES)) { - tools_switch(dt, TOOLS_NODES); - } - ink_node_tool_set_mode(INK_NODE_TOOL(dt->event_context), - clip ? NODE_TOOL_EDIT_CLIPPING_PATHS : NODE_TOOL_EDIT_MASKS); - } else if (clip) { - dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, - _("The selection has no applied clip path.")); - } else { - dt->messageStack()->flash(Inkscape::WARNING_MESSAGE, - _("The selection has no applied mask.")); - }*/ } - /** * If \a item is not entirely visible then adjust visible area to centre on the centre on of * \a item. @@ -4083,7 +4053,7 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { std::vector items_(items().begin(), items().end()); clear(); - GSList *items_to_ungroup = NULL; + std::vector items_to_ungroup; std::vector items_to_select(items_); @@ -4116,7 +4086,7 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { // ungroup only groups we created when setting clip/mask if (group->layerMode() == SPGroup::MASK_HELPER) { - items_to_ungroup = g_slist_prepend(items_to_ungroup, group); + items_to_ungroup.push_back(group); } } @@ -4125,7 +4095,7 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { // restore mask objects into a document for ( std::map::iterator it = referenced_objects.begin() ; it != referenced_objects.end() ; ++it) { SPObject *obj = (*it).first; // Group containing the clipped paths or masks - GSList *items_to_move = NULL; + std::vector items_to_move; for (auto& child: obj->children) { // Collect all clipped paths and masks within a single group Inkscape::XML::Node *copy = child.getRepr()->duplicate(xml_doc); @@ -4133,7 +4103,7 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { { copy->setAttribute("d", copy->attribute("inkscape:original-d")); } - items_to_move = g_slist_prepend(items_to_move, copy); + items_to_move.push_back(copy); } if (!obj->isReferenced()) { @@ -4146,8 +4116,8 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { gint pos = ((*it).second)->getRepr()->position(); // Iterate through all clipped paths / masks - for (GSList *i = items_to_move; NULL != i; i = i->next) { - Inkscape::XML::Node *repr = static_cast(i->data); + for (auto i=items_to_move.rbegin();i!=items_to_move.rend();++i) { + Inkscape::XML::Node *repr = *i; // insert into parent, restore pos parent->appendChild(repr); @@ -4161,13 +4131,11 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { transform *= (*it).second->transform; mask_item->doWriteTransform(transform); } - - g_slist_free(items_to_move); } // ungroup marked groups added when setting mask - for (GSList *i = items_to_ungroup ; NULL != i ; i = i->next) { - SPGroup *group = dynamic_cast(static_cast(i->data)); + for (auto i=items_to_ungroup.rbegin();i!=items_to_ungroup.rend();++i) { + SPGroup *group = *i; if (group) { items_to_select.erase(std::remove(items_to_select.begin(), items_to_select.end(), group), items_to_select.end()); std::vector children; @@ -4178,8 +4146,6 @@ void ObjectSet::unsetMask(const bool apply_clip_path, const bool skip_undo) { } } - g_slist_free(items_to_ungroup); - // rebuild selection addList(items_to_select); diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 865c6891e..619a27c0f 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -52,18 +52,13 @@ void SPDefs::modified(unsigned int flags) { } flags &= SP_OBJECT_MODIFIED_CASCADE; - - GSList *l = NULL; + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); + for (auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } @@ -78,20 +73,17 @@ Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::X repr = xml_doc->createElement("svg:defs"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend(l, crepr); + l.push_back(crepr); } } - - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } - } else { for (auto& child: children) { child.updateRepr(flags); diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp index 052fa7fe2..2a5ec0755 100644 --- a/src/sp-filter.cpp +++ b/src/sp-filter.cpp @@ -267,19 +267,18 @@ Inkscape::XML::Node* SPFilter::write(Inkscape::XML::Document *doc, Inkscape::XML repr = doc->createElement("svg:filter"); } - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *crepr = child.updateRepr(doc, NULL, flags); if (crepr) { - l = g_slist_prepend (l, crepr); + l.push_back(crepr); } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove (l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index c1934dd92..feaa04e0f 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -561,23 +561,16 @@ void SPGradient::modified(guint flags) flags &= SP_OBJECT_MODIFIED_CASCADE; // FIXME: climb up the ladder of hrefs - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + + for (auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } @@ -621,20 +614,19 @@ Inkscape::XML::Node *SPGradient::write(Inkscape::XML::Document *xml_doc, Inkscap SPPaintServer::write(xml_doc, repr, flags); if (flags & SP_OBJECT_WRITE_BUILD) { - GSList *l = NULL; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend(l, crepr); + l.push_back(crepr); } } - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } @@ -877,20 +869,19 @@ sp_gradient_repr_clear_vector(SPGradient *gr) Inkscape::XML::Node *repr = gr->getRepr(); /* Collect stops from original repr */ - GSList *sl = NULL; + std::vector l; for (Inkscape::XML::Node *child = repr->firstChild() ; child != NULL; child = child->next() ) { if (!strcmp(child->name(), "svg:stop")) { - sl = g_slist_prepend(sl, child); + l.push_back(child); } } /* Remove all stops */ - while (sl) { + for (auto i=l.rbegin();i!=l.rend();++i) { /** \todo * fixme: This should work, unless we make gradient * into generic group. */ - sp_repr_unparent((Inkscape::XML::Node *)sl->data); - sl = g_slist_remove(sl, sl->data); + sp_repr_unparent(*i); } } @@ -908,7 +899,7 @@ sp_gradient_repr_write_vector(SPGradient *gr) Inkscape::XML::Node *repr = gr->getRepr(); /* We have to be careful, as vector may be our own, so construct repr list at first */ - GSList *cl = NULL; + std::vector l; for (guint i = 0; i < gr->vector.stops.size(); i++) { Inkscape::CSSOStringStream os; @@ -919,17 +910,16 @@ sp_gradient_repr_write_vector(SPGradient *gr) os << "stop-color:" << gr->vector.stops[i].color.toString() << ";stop-opacity:" << gr->vector.stops[i].opacity; child->setAttribute("style", os.str().c_str()); /* Order will be reversed here */ - cl = g_slist_prepend(cl, child); + l.push_back(child); } sp_gradient_repr_clear_vector(gr); /* And insert new children from list */ - while (cl) { - Inkscape::XML::Node *child = static_cast(cl->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + Inkscape::XML::Node *child = *i; repr->addChild(child, NULL); Inkscape::GC::release(child); - cl = g_slist_remove(cl, child); } } diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 4dbfa8ac3..27bee1541 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -226,7 +226,7 @@ void SPGroup::modified(guint flags) { Inkscape::XML::Node* SPGroup::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { if (flags & SP_OBJECT_WRITE_BUILD) { - GSList *l = NULL; + std::vector l; if (!repr) { if (dynamic_cast(this)) { @@ -236,22 +236,18 @@ Inkscape::XML::Node* SPGroup::write(Inkscape::XML::Document *xml_doc, Inkscape:: } } - l = NULL; - for (auto& child: children) { if ( !dynamic_cast(&child) && !dynamic_cast(&child) ) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend (l, crepr); + l.push_back(crepr); } } } - - while (l) { - repr->addChild((Inkscape::XML::Node *) l->data, NULL); - Inkscape::GC::release((Inkscape::XML::Node *) l->data); - l = g_slist_remove (l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { @@ -510,8 +506,8 @@ sp_item_group_ungroup (SPGroup *group, std::vector &children, bool do_d group->removeAllPathEffects(false); /* Step 1 - generate lists of children objects */ - GSList *items = NULL; - GSList *objects = NULL; + std::vector items; + std::vector objects; Geom::Affine const g(group->transform); for (auto& child: group->children) { @@ -602,11 +598,11 @@ sp_item_group_ungroup (SPGroup *group, std::vector &children, bool do_d } g_free(affinestr); - items = g_slist_prepend (items, nrepr); + items.push_back(nrepr); } else { Inkscape::XML::Node *nrepr = child.getRepr()->duplicate(prepr->document()); - objects = g_slist_prepend (objects, nrepr); + objects.push_back(nrepr); } } @@ -618,21 +614,20 @@ sp_item_group_ungroup (SPGroup *group, std::vector &children, bool do_d group->deleteObject(true, false); /* Step 3 - add nonitems */ - if (objects) { + if (!objects.empty()) { Inkscape::XML::Node *last_def = defs->getRepr()->lastChild(); - while (objects) { - Inkscape::XML::Node *repr = (Inkscape::XML::Node *) objects->data; + for (auto i=objects.rbegin();i!=objects.rend();++i) { + Inkscape::XML::Node *repr = *i; if (!sp_repr_is_meta_element(repr)) { defs->getRepr()->addChild(repr, last_def); } Inkscape::GC::release(repr); - objects = g_slist_remove (objects, objects->data); } } /* Step 4 - add items */ - while (items) { - Inkscape::XML::Node *repr = (Inkscape::XML::Node *) items->data; + for (auto i=items.rbegin();i!=items.rend();++i) { + Inkscape::XML::Node *repr = *i; // add item prepr->appendChild(repr); // restore position; since the items list was prepended (i.e. reverse), we now add @@ -650,7 +645,6 @@ sp_item_group_ungroup (SPGroup *group, std::vector &children, bool do_d } Inkscape::GC::release(repr); - items = g_slist_remove (items, items->data); } if (do_done) { diff --git a/src/sp-mesh-patch.cpp b/src/sp-mesh-patch.cpp index 9a173a8db..04a121c7a 100644 --- a/src/sp-mesh-patch.cpp +++ b/src/sp-mesh-patch.cpp @@ -94,23 +94,16 @@ void SPMeshpatch::set(unsigned int key, const gchar* value) { void SPMeshpatch::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = NULL; - + std::vector l; for (auto& child: children) { sp_object_ref(&child); - l = g_slist_prepend(l, &child); + l.push_back(&child); } - l = g_slist_reverse(l); - - while (l) { - SPObject *child = SP_OBJECT(l->data); - l = g_slist_remove(l, child); - + for (auto child:l) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - sp_object_unref(child); } } diff --git a/src/sp-object-group.cpp b/src/sp-object-group.cpp index 62c6f7a87..f8ef855e3 100644 --- a/src/sp-object-group.cpp +++ b/src/sp-object-group.cpp @@ -49,19 +49,17 @@ Inkscape::XML::Node *SPObjectGroup::write(Inkscape::XML::Document *xml_doc, Inks repr = xml_doc->createElement("svg:g"); } - GSList *l = 0; + std::vector l; for (auto& child: children) { Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags); if (crepr) { - l = g_slist_prepend(l, crepr); + l.push_back(crepr); } } - - while (l) { - repr->addChild(static_cast(l->data), NULL); - Inkscape::GC::release(static_cast(l->data)); - l = g_slist_remove(l, l->data); + for (auto i=l.rbegin();i!=l.rend();++i) { + repr->addChild(*i, NULL); + Inkscape::GC::release(*i); } } else { for (auto& child: children) { diff --git a/src/text-chemistry.cpp b/src/text-chemistry.cpp index bde269de7..2c84a00f3 100644 --- a/src/text-chemistry.cpp +++ b/src/text-chemistry.cpp @@ -140,9 +140,9 @@ text_put_on_path() text->getRepr()->setAttribute("transform", NULL); // make a list of text children - GSList *text_reprs = NULL; + std::vector text_reprs; for(auto& o: text->children) { - text_reprs = g_slist_prepend(text_reprs, o.getRepr()); + text_reprs.push_back(o.getRepr()); } // create textPath and put it into the text @@ -158,9 +158,9 @@ text_put_on_path() } text->getRepr()->addChild(textpath, NULL); - for ( GSList *i = text_reprs ; i ; i = i->next ) { + for (auto i=text_reprs.rbegin();i!=text_reprs.rend();++i) { // Make a copy of each text child - Inkscape::XML::Node *copy = ((Inkscape::XML::Node *) i->data)->duplicate(xml_doc); + Inkscape::XML::Node *copy = (*i)->duplicate(xml_doc); // We cannot have multiline in textpath, so remove line attrs from tspans if (!strcmp(copy->name(), "svg:tspan")) { copy->setAttribute("sodipodi:role", NULL); @@ -168,7 +168,7 @@ text_put_on_path() copy->setAttribute("y", NULL); } // remove the old repr from under text - text->getRepr()->removeChild(reinterpret_cast(i->data)); + text->getRepr()->removeChild(*i); // put its copy into under textPath textpath->addChild(copy, NULL); // fixme: copy id } @@ -179,7 +179,6 @@ text_put_on_path() DocumentUndo::done(desktop->getDocument(), SP_VERB_CONTEXT_TEXT, _("Put text on path")); - g_slist_free(text_reprs); } void @@ -393,7 +392,7 @@ text_unflow () } std::vector new_objs; - GSList *old_objs = NULL; + std::vector old_objs; auto items = selection->items(); for(auto i=items.begin();i!=items.end();++i){ @@ -444,7 +443,7 @@ text_unflow () text->_adjustFontsizeRecursive(text, ex); new_objs.push_back((SPItem*)text_object); - old_objs = g_slist_prepend (old_objs, flowtext); + old_objs.push_back(flowtext); Inkscape::GC::release(rtext); Inkscape::GC::release(rtspan); @@ -454,12 +453,10 @@ text_unflow () selection->clear(); reverse(new_objs.begin(),new_objs.end()); selection->setList(new_objs); - for (GSList *i = old_objs; i; i = i->next) { - SP_OBJECT(i->data)->deleteObject (true); + for (auto i:old_objs) { + i->deleteObject (true); } - g_slist_free (old_objs); - DocumentUndo::done(doc, SP_VERB_CONTEXT_TEXT, _("Unflow flowed text")); } -- cgit v1.2.3 From 53fe02a3864476ac87a7ca3b6dca27407dbc5a2d Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Tue, 3 Oct 2017 02:12:53 +0200 Subject: removed GList in ruler.cpp --- src/widgets/gimp/ruler.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/widgets/gimp/ruler.cpp b/src/widgets/gimp/ruler.cpp index 6a1f7f903..8d73ada3b 100644 --- a/src/widgets/gimp/ruler.cpp +++ b/src/widgets/gimp/ruler.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "ruler.h" #include @@ -61,8 +62,9 @@ enum { /* All distances below are in 1/72nd's of an inch. (According to * Adobe, that's a point, but points are really 1/72.27 in.) */ -typedef struct +class SPRulerPrivate { +public: GtkOrientation orientation; Inkscape::Util::Unit const *unit; gdouble lower; @@ -78,8 +80,8 @@ typedef struct PangoLayout *layout; gdouble font_scale; - GList *track_widgets; -} SPRulerPrivate; + std::set *track_widgets; +}; #define SP_RULER_GET_PRIVATE(ruler) \ G_TYPE_INSTANCE_GET_PRIVATE (ruler, SP_TYPE_RULER, SPRulerPrivate) @@ -178,6 +180,7 @@ sp_ruler_class_init (SPRulerClass *klass) g_type_class_add_private (object_class, sizeof (SPRulerPrivate)); + g_object_class_install_property (object_class, PROP_ORIENTATION, g_param_spec_enum ("orientation", @@ -269,6 +272,7 @@ sp_ruler_init (SPRuler *ruler) priv->pos_redraw_idle_id = 0; priv->font_scale = DEFAULT_RULER_FONT_SCALE; + priv->track_widgets = new std::set; } static void @@ -277,14 +281,15 @@ sp_ruler_dispose (GObject *object) SPRuler *ruler = SP_RULER (object); SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler); - while (priv->track_widgets) - sp_ruler_remove_track_widget (ruler, GTK_WIDGET(priv->track_widgets->data)); + for (auto i:*(priv->track_widgets)) + sp_ruler_remove_track_widget (ruler, i); if (priv->pos_redraw_idle_id) { g_source_remove (priv->pos_redraw_idle_id); priv->pos_redraw_idle_id = 0; } + delete priv->track_widgets; G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -889,9 +894,10 @@ sp_ruler_add_track_widget (SPRuler *ruler, priv = SP_RULER_GET_PRIVATE (ruler); - g_return_if_fail (g_list_find (priv->track_widgets, widget) == NULL); + g_return_if_fail (priv->track_widgets->find(widget)==priv->track_widgets->end()); + - priv->track_widgets = g_list_prepend (priv->track_widgets, widget); + priv->track_widgets->insert(widget); g_signal_connect (widget, "motion-notify-event", G_CALLBACK (sp_ruler_track_widget_motion_notify), @@ -920,9 +926,9 @@ sp_ruler_remove_track_widget (SPRuler *ruler, priv = SP_RULER_GET_PRIVATE (ruler); - g_return_if_fail (g_list_find (priv->track_widgets, widget) != NULL); + g_return_if_fail (priv->track_widgets->find(widget)!=priv->track_widgets->end()); - priv->track_widgets = g_list_remove (priv->track_widgets, widget); + priv->track_widgets->erase(widget); g_signal_handlers_disconnect_by_func (widget, (gpointer) G_CALLBACK (sp_ruler_track_widget_motion_notify), -- cgit v1.2.3 From d4a7cc1659ad0d4b5dfdbc4a2e7ba049634fa6c0 Mon Sep 17 00:00:00 2001 From: Maren Hachmann Date: Tue, 3 Oct 2017 03:16:14 +0000 Subject: Add some help texts, improve structure --- share/extensions/interp_att_g.inx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/share/extensions/interp_att_g.inx b/share/extensions/interp_att_g.inx index 7a0ef1d5c..5f6c3d7a4 100644 --- a/share/extensions/interp_att_g.inx +++ b/share/extensions/interp_att_g.inx @@ -16,8 +16,10 @@ <_item value="opacity">Opacity <_item value="other">Other - <_param name="other-info" type="description">If you select "Other", you must know the SVG attributes to identify here this "other". - + + <_param name="other-header" type="description" appearance="header">Other Attribute + <_param name="other-info" type="description">If you selected "Other" above, you must specify the details for this "other" here. + <_item value="color">Color <_item value="int">Integer Number @@ -28,9 +30,10 @@ <_item value="style">Style <_item value="transform">Transformation - <_param name="sep" type="description">•••••••••••••••••••••••••••••••••••••••••••••••• - - + + <_param name="numbers" type="description" appearance="header">Values + + <_item value="none">No Unit <_item value="color">Color -- cgit v1.2.3 From e1f313146f99a605f28e1d19313f159b779482ee Mon Sep 17 00:00:00 2001 From: Maren Hachmann Date: Tue, 3 Oct 2017 03:25:26 +0000 Subject: Can now interpolate namespaced attributes, uses previously unused units field, improved whitespace, removes some duplication, can now use different color formats for start and end value, allows comma as decimal separator, fixes crash of extension when Other attribute is not specified. --- share/extensions/interp_att_g.py | 293 ++++++++++++++++++++------------------- 1 file changed, 152 insertions(+), 141 deletions(-) diff --git a/share/extensions/interp_att_g.py b/share/extensions/interp_att_g.py index 8718caf41..ec6abbf47 100755 --- a/share/extensions/interp_att_g.py +++ b/share/extensions/interp_att_g.py @@ -17,6 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ''' # standard library +import sys import math import re import string @@ -68,158 +69,168 @@ class InterpAttG(inkex.Effect): help="The selected UI-tab when OK was pressed") def getColorValues(self): - sv = string.replace( self.options.start_val, '#', '' ) - ev = string.replace( self.options.end_val, '#', '' ) - if re.search('\s|,', sv): - # There are separators. That must be a integer RGB color definition. - sv = re.split( '[\s,]+', sv ) - ev = re.split( '[\s,]+', ev ) - self.R_ini = int( sv[0] ) - self.G_ini = int( sv[1] ) - self.B_ini = int( sv[2] ) - self.R_end = int( ev[0] ) - self.G_end = int( ev[1] ) - self.B_end = int( ev[2] ) - else: - # There is no separator. That must be a Hex RGB color definition. - if len(sv) == 3: - self.R_ini = int( sv[0] + sv[0], 16 ) - self.G_ini = int( sv[1] + sv[1], 16 ) - self.B_ini = int( sv[2] + sv[2], 16 ) - self.R_end = int( ev[0] + ev[0], 16 ) - self.G_end = int( ev[1] + ev[1], 16 ) - self.B_end = int( ev[2] + ev[2], 16 ) - else: #the len must be 6 - self.R_ini = int( sv[0] + sv[1], 16 ) - self.G_ini = int( sv[2] + sv[3], 16 ) - self.B_ini = int( sv[4] + sv[5], 16 ) - self.R_end = int( ev[0] + ev[1], 16 ) - self.G_end = int( ev[2] + ev[3], 16 ) - self.B_end = int( ev[4] + ev[5], 16 ) - self.R_inc = ( self.R_end - self.R_ini ) / float( self.tot_el - 1 ) - self.G_inc = ( self.G_end - self.G_ini ) / float( self.tot_el - 1 ) - self.B_inc = ( self.B_end - self.B_ini ) / float( self.tot_el - 1 ) - self.R_cur = self.R_ini - self.G_cur = self.G_ini - self.B_cur = self.B_ini + sv = string.replace( self.options.start_val, '#', '' ) + ev = string.replace( self.options.end_val, '#', '' ) + + # index 0: start color, index 1: end color + self.R, self.G, self.B = [0,0],[0,0],[0,0] + raw_colors = [sv, ev] + + for i in [0,1]: + if re.search('\s|,', raw_colors[i]): + # There are separators. That must be an integer RGB color definition. + raw_colors[i] = re.split( '[\s,]+', raw_colors[i]) + self.R[i] = int(raw_colors[i][0]) + self.G[i] = int(raw_colors[i][1]) + self.B[i] = int(raw_colors[i][2]) + else: + # There is no separator. That must be a Hex RGB color definition. + if len(raw_colors[i]) == 3: + self.R[i] = int(raw_colors[i][0] + raw_colors[i][0], 16) + self.G[i] = int(raw_colors[i][1] + raw_colors[i][1], 16) + self.B[i] = int(raw_colors[i][2] + raw_colors[i][2], 16) + else: # the len must be 6 + self.R[i] = int( raw_colors[i][0] + raw_colors[i][1], 16) + self.G[i] = int( raw_colors[i][2] + raw_colors[i][3], 16) + self.B[i] = int( raw_colors[i][4] + raw_colors[i][5], 16) + + self.R_inc = (self.R[1] - self.R[0]) / float(self.tot_el - 1) + self.G_inc = (self.G[1] - self.G[0]) / float(self.tot_el - 1) + self.B_inc = (self.B[1] - self.B[0]) / float(self.tot_el - 1) + self.R_cur = self.R[0] + self.G_cur = self.G[0] + self.B_cur = self.B[0] def getNumberValues(self): - sv = self.options.start_val - ev = self.options.end_val - if self.inte_att_type and self.inte_att_type != 'none': - sv = self.unittouu( sv + self.inte_att_type ) - ev = self.unittouu( ev + self.inte_att_type ) - self.val_cur = self.val_ini = sv - self.val_end = ev - self.val_inc = ( ev - sv ) / float( self.tot_el - 1 ) + sv = self.options.start_val.replace(",", ".") + ev = self.options.end_val.replace(",", ".") + unit = self.options.unit + + if unit != 'none': + sv = self.unittouu(sv + unit) + ev = self.unittouu(ev + unit) + else: + sv = float(sv) + ev = float(ev) + self.val_cur = self.val_ini = sv + self.val_end = ev + self.val_inc = (ev - sv)/float(self.tot_el - 1) def getTotElements(self): - self.tot_el = 0 - self.collection = None - if len( self.selected ) == 0: - return False - if len( self.selected ) > 1: - # multiple selection - if self.options.zsort: - sorted_ids = zSort(self.document.getroot(),self.selected.keys()) + self.tot_el = 0 + self.collection = None + if len( self.selected ) == 0: + return False + if len( self.selected ) > 1: + # multiple selection + if self.options.zsort: + sorted_ids = zSort(self.document.getroot(),self.selected.keys()) + else: + sorted_ids = self.options.ids + self.collection = list(sorted_ids) + for i in sorted_ids: + path = '//*[@id="%s"]' % i + self.collection[self.tot_el] = self.document.xpath(path, namespaces=inkex.NSS)[0] + self.tot_el += 1 else: - sorted_ids = self.options.ids - self.collection = list(sorted_ids) - for i in sorted_ids: - path = '//*[@id="%s"]' % i - self.collection[self.tot_el] = self.document.xpath(path, namespaces=inkex.NSS)[0] - self.tot_el += 1 - else: - # must be a group - self.collection = self.selected[ self.options.ids[0] ] - for i in self.collection: - self.tot_el += 1 + # must be a group + self.collection = self.selected[ self.options.ids[0] ] + for i in self.collection: + self.tot_el += 1 def effect(self): - if self.options.att == 'other': - self.inte_att = self.options.att_other - self.inte_att_type = self.options.att_other_type - self.where = self.options.att_other_where - else: - self.inte_att = self.options.att - if self.inte_att == 'width': - self.inte_att_type = 'float' - self.where = 'tag' - elif self.inte_att == 'height': - self.inte_att_type = 'float' - self.where = 'tag' - elif self.inte_att == 'scale': - self.inte_att_type = 'float' - self.where = 'transform' - elif self.inte_att == 'trans-x': - self.inte_att_type = 'float' - self.where = 'transform' - elif self.inte_att == 'trans-y': - self.inte_att_type = 'float' - self.where = 'transform' - elif self.inte_att == 'fill': - self.inte_att_type = 'color' - self.where = 'style' - elif self.inte_att == 'opacity': - self.inte_att_type = 'float' - self.where = 'style' - - self.getTotElements() - - if self.inte_att_type == 'color': - self.getColorValues() - else: - self.getNumberValues() - - if self.collection is None: - inkex.errormsg( _('There is no selection to interpolate' )) - return False - - for node in self.collection: - if self.inte_att_type == 'color': - val = 'rgb('+ \ - str(int(round(self.R_cur))) +','+ \ - str(int(round(self.G_cur))) +','+ \ - str(int(round(self.B_cur))) +')' + if self.options.att == 'other': + if self.options.att_other is not None: + self.inte_att = self.options.att_other + else: + inkex.errormsg(_("You selected 'Other'. Please enter an attribute to interpolate.")) + sys.exit(0) + self.inte_att_type = self.options.att_other_type + self.where = self.options.att_other_where else: - if self.inte_att_type == 'float': - val = self.val_cur - else: # inte_att_type == 'int' - val = round(self.val_cur) - - if self.where == 'style': - s = node.get('style') - re_find = '(^|;)'+ self.inte_att +':[^;]*(;|$)' - if re.search( re_find, s ): - s = re.sub( re_find, '\\1'+ self.inte_att +':'+ str(val) +'\\2', s ) - else: - s += ';'+ self.inte_att +':'+ str(val) - node.set( 'style', s ) - elif self.where == 'transform': - t = node.get('transform') - if t == None: t = "" - if self.inte_att == 'trans-x': - val = "translate("+ str(val) +",0)" - elif self.inte_att == 'trans-y': - val = "translate(0,"+ str(val) +")" - else: - val = self.inte_att + "("+ str(val) +")" - node.set( 'transform', t +" "+ val ) - else: # self.where == 'tag': - node.set( self.inte_att, str(val) ) + self.inte_att = self.options.att + if self.inte_att == 'width': + self.inte_att_type = 'float' + self.where = 'tag' + elif self.inte_att == 'height': + self.inte_att_type = 'float' + self.where = 'tag' + elif self.inte_att == 'scale': + self.inte_att_type = 'float' + self.where = 'transform' + elif self.inte_att == 'trans-x': + self.inte_att_type = 'float' + self.where = 'transform' + elif self.inte_att == 'trans-y': + self.inte_att_type = 'float' + self.where = 'transform' + elif self.inte_att == 'fill': + self.inte_att_type = 'color' + self.where = 'style' + elif self.inte_att == 'opacity': + self.inte_att_type = 'float' + self.where = 'style' + + self.getTotElements() if self.inte_att_type == 'color': - self.R_cur += self.R_inc - self.G_cur += self.G_inc - self.B_cur += self.B_inc + self.getColorValues() else: - self.val_cur += self.val_inc - - return True - -if __name__ == '__main__': #pragma: no cover + self.getNumberValues() + + if self.collection is None: + inkex.errormsg( _('There is no selection to interpolate' )) + return False + + for node in self.collection: + if self.inte_att_type == 'color': + val = 'rgb('+ \ + str(int(round(self.R_cur))) +','+ \ + str(int(round(self.G_cur))) +','+ \ + str(int(round(self.B_cur))) +')' + else: + if self.inte_att_type == 'float': + val = self.val_cur + else: # inte_att_type == 'int' + val = int(round(self.val_cur)) + + if self.where == 'style': + s = node.get('style') + re_find = '(^|;)'+ self.inte_att +':[^;]*(;|$)' + if re.search( re_find, s ): + s = re.sub( re_find, '\\1'+ self.inte_att +':'+ str(val) +'\\2', s ) + else: + s += ';'+ self.inte_att +':'+ str(val) + node.set( 'style', s ) + elif self.where == 'transform': + t = node.get('transform') + if t == None: t = "" + if self.inte_att == 'trans-x': + val = "translate("+ str(val) +",0)" + elif self.inte_att == 'trans-y': + val = "translate(0,"+ str(val) +")" + else: + val = self.inte_att + "("+ str(val) +")" + node.set( 'transform', t +" "+ val ) + else: # self.where == 'tag': + if ":" in self.inte_att: + ns, attrib = self.inte_att.split(":") + node.set(inkex.addNS(attrib, ns), str(val)) + else: + node.set( self.inte_att, str(val) ) + + if self.inte_att_type == 'color': + self.R_cur += self.R_inc + self.G_cur += self.G_inc + self.B_cur += self.B_inc + else: + self.val_cur += self.val_inc + + return True + +if __name__ == '__main__': e = InterpAttG() if e.affect(): - exit(0) + exit(0) else: - exit(1) + exit(1) -- cgit v1.2.3 From 9e706a36a08dce0d6434cc3186961bcf813533c0 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Tue, 3 Oct 2017 21:59:51 +0200 Subject: Fix bug: crash - iterator corrupted by removing objects from container On MacOS El Capitan with XCode 7.3 inkscape crashes when a second item is drawn in the drawing area. The crash is triggered by clearing the selection from the previous drawing activity. The reason for the crash is that the iterator is corrupted because during iteration the objects are removed from the container. This patch uses a safe way to remove items from the container and going to the next iteration. Using this patch, inkscape does not crash anymore. --- src/object-set.cpp | 14 ++++++++++---- src/object-set.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/object-set.cpp b/src/object-set.cpp index 8fcb4215e..55da22bdf 100644 --- a/src/object-set.cpp +++ b/src/object-set.cpp @@ -104,14 +104,18 @@ void ObjectSet::_removeDescendantsFromSet(SPObject *object) { } } -void ObjectSet::_remove(SPObject *object) { +void ObjectSet::_disconnect(SPObject *object) { _releaseConnections[object].disconnect(); _releaseConnections.erase(object); - _container.get().erase(object); _remove3DBoxesRecursively(object); _releaseSignals(object); } +void ObjectSet::_remove(SPObject *object) { + _disconnect(object); + _container.get().erase(object); +} + void ObjectSet::_add(SPObject *object) { _releaseConnections[object] = object->connectRelease(sigc::hide_return(sigc::mem_fun(*this, &ObjectSet::remove))); _container.push_back(object); @@ -120,8 +124,10 @@ void ObjectSet::_add(SPObject *object) { } void ObjectSet::_clear() { - for (auto object: _container) { - _remove(object); + MultiIndexContainer::iterator it = _container.begin(); + while (it != _container.end()){ + _disconnect(*it); + it = _container.erase(it); } } diff --git a/src/object-set.h b/src/object-set.h index c5e190136..a8061593a 100644 --- a/src/object-set.h +++ b/src/object-set.h @@ -476,6 +476,7 @@ protected: private: BoolOpErrors pathBoolOp(bool_op bop, const bool skip_undo, const unsigned int verb = SP_VERB_NONE, const Glib::ustring description = ""); + void _disconnect(SPObject* object); }; -- cgit v1.2.3 From a920a212fa3436801f27f75051ab47e36c21e3a2 Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Wed, 4 Oct 2017 11:35:10 +0200 Subject: selection clear: First disconnect, then clear As proposed by Marc, the objects are first disconnected and then all elements are removed from the container via container.clear. This also avoids the corruption of the iterator as the container is not modified during the iterations. --- src/object-set.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/object-set.cpp b/src/object-set.cpp index 55da22bdf..36ddac350 100644 --- a/src/object-set.cpp +++ b/src/object-set.cpp @@ -124,11 +124,9 @@ void ObjectSet::_add(SPObject *object) { } void ObjectSet::_clear() { - MultiIndexContainer::iterator it = _container.begin(); - while (it != _container.end()){ - _disconnect(*it); - it = _container.erase(it); - } + for (auto object: _container) + _disconnect(object); + _container.clear(); } SPObject *ObjectSet::_getMutualAncestor(SPObject *object) { -- cgit v1.2.3 From 00937eed288b622e9ae70d0c4bf63606052db3cf Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 15:39:49 +0300 Subject: Merge double assignment + eliminate trail space. --- src/sp-root.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/sp-root.cpp b/src/sp-root.cpp index 34047054a..f5e0a7eb9 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -355,9 +355,7 @@ Inkscape::XML::Node *SPRoot::write(Inkscape::XML::Document *xml_doc, Inkscape::X Inkscape::DrawingItem *SPRoot::show(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { - Inkscape::DrawingItem *ai = 0; - - ai = SPGroup::show(drawing, key, flags); + Inkscape::DrawingItem *ai = SPGroup::show(drawing, key, flags); if (ai) { Inkscape::DrawingGroup *g = dynamic_cast(ai); @@ -366,10 +364,10 @@ Inkscape::DrawingItem *SPRoot::show(Inkscape::Drawing &drawing, unsigned int key // Uncomment to print out XML tree // getRepr()->recursivePrintTree(0); - + // Uncomment to print out SP Object tree // recursivePrintTree(0); - + // Uncomment to print out Display Item tree // ai->recursivePrintTree(0); -- cgit v1.2.3 From f7f5f977b7b7107eaf719bb27dd68b43e7b011a2 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 16:03:19 +0300 Subject: Extract unset_x_and_y(). --- src/sp-root.cpp | 12 ++++++++---- src/sp-root.h | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/sp-root.cpp b/src/sp-root.cpp index f5e0a7eb9..fc35e26e9 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -40,8 +40,7 @@ SPRoot::SPRoot() : SPGroup(), SPViewBox() this->version.inkscape = zero_version; this->original.inkscape = zero_version; - this->x.unset(SVGLength::PERCENT, 0.0, 0.0); // Ignored for root SVG element - this->y.unset(SVGLength::PERCENT, 0.0, 0.0); + this->unset_x_and_y(); this->width.unset(SVGLength::PERCENT, 1.0, 1.0); this->height.unset(SVGLength::PERCENT, 1.0, 1.0); @@ -52,6 +51,12 @@ SPRoot::~SPRoot() { } +void SPRoot::unset_x_and_y() +{ + this->x.unset(SVGLength::PERCENT, 0.0, 0.0); // Ignored for root SVG element + this->y.unset(SVGLength::PERCENT, 0.0, 0.0); +} + void SPRoot::build(SPDocument *document, Inkscape::XML::Node *repr) { //XML Tree being used directly here while it shouldn't be. @@ -254,8 +259,7 @@ void SPRoot::update(SPCtx *ctx, guint flags) } // Ignore x, y values for root element - this->x.unset(SVGLength::PERCENT, 0.0, 0.0); - this->y.unset(SVGLength::PERCENT, 0.0, 0.0); + this->unset_x_and_y(); } // Calculate x, y, width, height from parent/initial viewport diff --git a/src/sp-root.h b/src/sp-root.h index 2776ae887..e50264405 100644 --- a/src/sp-root.h +++ b/src/sp-root.h @@ -63,6 +63,8 @@ public: virtual Inkscape::DrawingItem* show(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); virtual void print(SPPrintContext *ctx); virtual const char* displayName() const; +private: + void unset_x_and_y(); }; #endif /* !SP_ROOT_H_SEEN */ -- cgit v1.2.3 From 3207522f0f2597248f479075c395e9e9d589e181 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 16:21:22 +0300 Subject: Extract SPRoot::setRootDimensions . --- src/sp-root.cpp | 82 ++++++++++++++++++++++++++++++--------------------------- src/sp-root.h | 1 + 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/src/sp-root.cpp b/src/sp-root.cpp index fc35e26e9..d69f5300d 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -211,55 +211,59 @@ void SPRoot::remove_child(Inkscape::XML::Node *child) SPGroup::remove_child(child); } -void SPRoot::update(SPCtx *ctx, guint flags) +void SPRoot::setRootDimensions() { - SPItemCtx const *ictx = (SPItemCtx const *) ctx; - - if( !this->parent ) { + /* + * This is the root SVG element: + * + * x, y, width, and height apply to positioning the SVG element inside a parent. + * For the root SVG in Inkscape there is no parent, thus special rules apply: + * If width, height not set, width = 100%, height = 100% (as always). + * If width and height are in percent, they are percent of viewBox width/height. + * If width, height, and viewBox are not set... pick "random" width/height. + * x, y are ignored. + * initial viewport = (0 0 width height) + */ + if( this->viewBox_set ) { - /* - * This is the root SVG element: - * - * x, y, width, and height apply to positioning the SVG element inside a parent. - * For the root SVG in Inkscape there is no parent, thus special rules apply: - * If width, height not set, width = 100%, height = 100% (as always). - * If width and height are in percent, they are percent of viewBox width/height. - * If width, height, and viewBox are not set... pick "random" width/height. - * x, y are ignored. - * initial viewport = (0 0 width height) - */ - if( this->viewBox_set ) { - - if( this->width._set ) { - // Check if this is necessary - if (this->width.unit == SVGLength::PERCENT) { - this->width.computed = this->width.value * this->viewBox.width(); - } - } else { - this->width.set( SVGLength::PX, this->viewBox.width(), this->viewBox.width() ); + if( this->width._set ) { + // Check if this is necessary + if (this->width.unit == SVGLength::PERCENT) { + this->width.computed = this->width.value * this->viewBox.width(); } + } else { + this->width.set( SVGLength::PX, this->viewBox.width(), this->viewBox.width() ); + } - if( this->height._set ) { - if (this->height.unit == SVGLength::PERCENT) { - this->height.computed = this->height.value * this->viewBox.height(); - } - } else { - this->height.set(SVGLength::PX, this->viewBox.height(), this->viewBox.height() ); + if( this->height._set ) { + if (this->height.unit == SVGLength::PERCENT) { + this->height.computed = this->height.value * this->viewBox.height(); } - } else { + this->height.set(SVGLength::PX, this->viewBox.height(), this->viewBox.height() ); + } - if( !this->width._set ) { - this->width.set( SVGLength::PX, 100, 100 ); // Random default - } + } else { - if( !this->height._set ) { - this->height.set( SVGLength::PX, 100, 100 ); // Random default - } + if( !this->width._set ) { + this->width.set( SVGLength::PX, 100, 100 ); // Random default } - // Ignore x, y values for root element - this->unset_x_and_y(); + if( !this->height._set ) { + this->height.set( SVGLength::PX, 100, 100 ); // Random default + } + } + + // Ignore x, y values for root element + this->unset_x_and_y(); +} + +void SPRoot::update(SPCtx *ctx, guint flags) +{ + SPItemCtx const *ictx = (SPItemCtx const *) ctx; + + if( !this->parent ) { + this->setRootDimensions(); } // Calculate x, y, width, height from parent/initial viewport diff --git a/src/sp-root.h b/src/sp-root.h index e50264405..882b0e1bf 100644 --- a/src/sp-root.h +++ b/src/sp-root.h @@ -65,6 +65,7 @@ public: virtual const char* displayName() const; private: void unset_x_and_y(); + void setRootDimensions(); }; #endif /* !SP_ROOT_H_SEEN */ -- cgit v1.2.3 From 3eae8aa890673270d0907d55395ccaf5368cea37 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 17:33:06 +0300 Subject: Extract a base class, SPDimensions. From two places getting rid of duplicate code. --- src/CMakeLists.txt | 2 ++ src/sp-dimensions.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/sp-dimensions.h | 41 +++++++++++++++++++++++++++++++++++++++++ src/sp-image.cpp | 17 +---------------- src/sp-image.h | 8 ++------ src/sp-root.cpp | 16 +--------------- src/sp-root.h | 8 ++------ 7 files changed, 99 insertions(+), 43 deletions(-) create mode 100644 src/sp-dimensions.cpp create mode 100644 src/sp-dimensions.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7437f12ae..4b3357d30 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,6 +14,7 @@ set(sp_SRC sp-cursor.cpp sp-defs.cpp sp-desc.cpp + sp-dimensions.cpp sp-ellipse.cpp sp-factory.cpp sp-filter-primitive.cpp @@ -97,6 +98,7 @@ set(sp_SRC sp-cursor.h sp-defs.h sp-desc.h + sp-dimensions.h sp-ellipse.h sp-factory.h sp-filter-primitive.h diff --git a/src/sp-dimensions.cpp b/src/sp-dimensions.cpp new file mode 100644 index 000000000..2eb495219 --- /dev/null +++ b/src/sp-dimensions.cpp @@ -0,0 +1,50 @@ +/* + * SVG dimensions implementation + * + * Authors: + * Lauris Kaplinski + * Edward Flick (EAF) + * Abhishek Sharma + * Jon A. Cruz + * + * Copyright (C) 1999-2005 Authors + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#include "sp-dimensions.h" +#include "sp-item.h" + +void SPDimensions::calcDimsFromParentViewport(const SPItemCtx *ictx) +{ + if (this->x.unit == SVGLength::PERCENT) { + this->x.computed = this->x.value * ictx->viewport.width(); + } + + if (this->y.unit == SVGLength::PERCENT) { + this->y.computed = this->y.value * ictx->viewport.height(); + } + + if (this->width.unit == SVGLength::PERCENT) { + this->width.computed = this->width.value * ictx->viewport.width(); + } + + if (this->height.unit == SVGLength::PERCENT) { + this->height.computed = this->height.value * ictx->viewport.height(); + } +} + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/sp-dimensions.h b/src/sp-dimensions.h new file mode 100644 index 000000000..b3581d953 --- /dev/null +++ b/src/sp-dimensions.h @@ -0,0 +1,41 @@ +#ifndef SP_DIMENSIONS_H__ +#define SP_DIMENSIONS_H__ + +/* + * dimensions helper class, common code used by root, image and others + * + * Authors: + * Shlomi Fish + * Copyright (C) 2017 Shlomi Fish, authors + * + * Released under dual Expat and GNU GPL, read the file 'COPYING' for more information + * + */ + +#include "svg/svg-length.h" + +class SPItemCtx; + +class SPDimensions { + +public: + SVGLength x; + SVGLength y; + SVGLength width; + SVGLength height; + void calcDimsFromParentViewport(const SPItemCtx *ictx); +}; + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-basic-offset:2 + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=2:tabstop=8:softtabstop=2:fileencoding=utf-8:textwidth=99 : diff --git a/src/sp-image.cpp b/src/sp-image.cpp index 1961971cb..6736efdec 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -374,23 +374,8 @@ void SPImage::update(SPCtx *ctx, unsigned int flags) { } } - // Calculate x, y, width, height from parent/initial viewport, see sp-root.cpp - if (this->x.unit == SVGLength::PERCENT) { - this->x.computed = this->x.value * ictx->viewport.width(); - } - - if (this->y.unit == SVGLength::PERCENT) { - this->y.computed = this->y.value * ictx->viewport.height(); - } - - if (this->width.unit == SVGLength::PERCENT) { - this->width.computed = this->width.value * ictx->viewport.width(); - } - - if (this->height.unit == SVGLength::PERCENT) { - this->height.computed = this->height.value * ictx->viewport.height(); - } + this->calcDimsFromParentViewport(ictx); // Image creates a new viewport ictx->viewport= Geom::Rect::from_xywh( this->x.computed, this->y.computed, diff --git a/src/sp-image.h b/src/sp-image.h index 9fa33b5de..9cd5faa8b 100644 --- a/src/sp-image.h +++ b/src/sp-image.h @@ -19,6 +19,7 @@ #include "display/curve.h" #include "sp-item.h" #include "viewbox.h" +#include "sp-dimensions.h" #define SP_IMAGE(obj) (dynamic_cast((SPObject*)obj)) #define SP_IS_IMAGE(obj) (dynamic_cast((SPObject*)obj) != NULL) @@ -26,16 +27,11 @@ #define SP_IMAGE_HREF_MODIFIED_FLAG SP_OBJECT_USER_MODIFIED_FLAG_A namespace Inkscape { class Pixbuf; } -class SPImage : public SPItem, public SPViewBox { +class SPImage : public SPItem, public SPViewBox, public SPDimensions { public: SPImage(); virtual ~SPImage(); - SVGLength x; - SVGLength y; - SVGLength width; - SVGLength height; - Geom::Rect clipbox; double sx, sy; double ox, oy; diff --git a/src/sp-root.cpp b/src/sp-root.cpp index d69f5300d..9ea1aa976 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -267,21 +267,7 @@ void SPRoot::update(SPCtx *ctx, guint flags) } // Calculate x, y, width, height from parent/initial viewport - if (this->x.unit == SVGLength::PERCENT) { - this->x.computed = this->x.value * ictx->viewport.width(); - } - - if (this->y.unit == SVGLength::PERCENT) { - this->y.computed = this->y.value * ictx->viewport.height(); - } - - if (this->width.unit == SVGLength::PERCENT) { - this->width.computed = this->width.value * ictx->viewport.width(); - } - - if (this->height.unit == SVGLength::PERCENT) { - this->height.computed = this->height.value * ictx->viewport.height(); - } + this->calcDimsFromParentViewport(ictx); // std::cout << "SPRoot::update: final:" // << " x: " << x.computed diff --git a/src/sp-root.h b/src/sp-root.h index 882b0e1bf..4a37840d9 100644 --- a/src/sp-root.h +++ b/src/sp-root.h @@ -18,6 +18,7 @@ #include "svg/svg-length.h" #include "sp-item-group.h" #include "viewbox.h" +#include "sp-dimensions.h" #define SP_ROOT(obj) (dynamic_cast((SPObject*)obj)) #define SP_IS_ROOT(obj) (dynamic_cast((SPObject*)obj) != NULL) @@ -25,7 +26,7 @@ class SPDefs; /** \ element */ -class SPRoot : public SPGroup, public SPViewBox { +class SPRoot : public SPGroup, public SPViewBox, public SPDimensions { public: SPRoot(); virtual ~SPRoot(); @@ -35,11 +36,6 @@ public: Inkscape::Version inkscape; } version, original; - SVGLength x; - SVGLength y; - SVGLength width; - SVGLength height; - char *onload; /** -- cgit v1.2.3 From 01abd8ec977b4caae888b7e315c6c18ced52e74c Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 17:56:20 +0300 Subject: Extract SPDimensions from spuse --- src/sp-use.cpp | 21 ++------------------- src/sp-use.h | 7 ++----- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/src/sp-use.cpp b/src/sp-use.cpp index fae442cfa..61e8002bb 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -43,11 +43,8 @@ SPUse::SPUse() : SPItem(), + SPDimensions(), child(NULL), - x(), - y(), - width(), - height(), href(NULL), ref(new SPUseReference(this)), _delete_connection(), @@ -581,21 +578,7 @@ void SPUse::update(SPCtx *ctx, unsigned flags) { childflags &= SP_OBJECT_MODIFIED_CASCADE; /* Set up child viewport */ - if (this->x.unit == SVGLength::PERCENT) { - this->x.computed = this->x.value * ictx->viewport.width(); - } - - if (this->y.unit == SVGLength::PERCENT) { - this->y.computed = this->y.value * ictx->viewport.height(); - } - - if (this->width.unit == SVGLength::PERCENT) { - this->width.computed = this->width.value * ictx->viewport.width(); - } - - if (this->height.unit == SVGLength::PERCENT) { - this->height.computed = this->height.value * ictx->viewport.height(); - } + this->calcDimsFromParentViewport(ictx); childflags &= ~SP_OBJECT_USER_MODIFIED_FLAG_B; diff --git a/src/sp-use.h b/src/sp-use.h index 81e4391aa..bcf0a8513 100644 --- a/src/sp-use.h +++ b/src/sp-use.h @@ -19,12 +19,13 @@ #include #include "svg/svg-length.h" +#include "sp-dimensions.h" #include "sp-item.h" #include "enums.h" class SPUseReference; -class SPUse : public SPItem { +class SPUse : public SPItem, public SPDimensions { public: SPUse(); virtual ~SPUse(); @@ -34,10 +35,6 @@ public: SPItem *child; // SVG attrs - SVGLength x; - SVGLength y; - SVGLength width; - SVGLength height; char *href; // the reference to the original object -- cgit v1.2.3 From b4b96eb22c978024da8841f9184b1c7d85140ffd Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Thu, 5 Oct 2017 18:34:42 +0300 Subject: Extract SPDimensions from spfilters --- src/sp-dimensions.cpp | 7 ++++++- src/sp-dimensions.h | 2 +- src/sp-filter-primitive.cpp | 20 +------------------- src/sp-filter-primitive.h | 6 ++---- src/sp-filter.cpp | 20 +------------------- src/sp-filter.h | 9 +++------ 6 files changed, 14 insertions(+), 50 deletions(-) diff --git a/src/sp-dimensions.cpp b/src/sp-dimensions.cpp index 2eb495219..f39b98945 100644 --- a/src/sp-dimensions.cpp +++ b/src/sp-dimensions.cpp @@ -19,21 +19,26 @@ #include "sp-dimensions.h" #include "sp-item.h" -void SPDimensions::calcDimsFromParentViewport(const SPItemCtx *ictx) +void SPDimensions::calcDimsFromParentViewport(const SPItemCtx *ictx, bool assign_to_set) { +#define ASSIGN(field) { if (assign_to_set) { field._set = true; } } if (this->x.unit == SVGLength::PERCENT) { + ASSIGN(x); this->x.computed = this->x.value * ictx->viewport.width(); } if (this->y.unit == SVGLength::PERCENT) { + ASSIGN(y); this->y.computed = this->y.value * ictx->viewport.height(); } if (this->width.unit == SVGLength::PERCENT) { + ASSIGN(width); this->width.computed = this->width.value * ictx->viewport.width(); } if (this->height.unit == SVGLength::PERCENT) { + ASSIGN(height); this->height.computed = this->height.value * ictx->viewport.height(); } } diff --git a/src/sp-dimensions.h b/src/sp-dimensions.h index b3581d953..eb76df739 100644 --- a/src/sp-dimensions.h +++ b/src/sp-dimensions.h @@ -23,7 +23,7 @@ public: SVGLength y; SVGLength width; SVGLength height; - void calcDimsFromParentViewport(const SPItemCtx *ictx); + void calcDimsFromParentViewport(const SPItemCtx *ictx, bool assign_to_set = false); }; #endif diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index 0fbeed15b..7ced52e11 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -139,25 +139,7 @@ void SPFilterPrimitive::update(SPCtx *ctx, guint flags) { SPFilter *parent = SP_FILTER(this->parent); if( parent->primitiveUnits == SP_FILTER_UNITS_USERSPACEONUSE ) { - if (this->x.unit == SVGLength::PERCENT) { - this->x._set = true; - this->x.computed = this->x.value * ictx->viewport.width(); - } - - if (this->y.unit == SVGLength::PERCENT) { - this->y._set = true; - this->y.computed = this->y.value * ictx->viewport.height(); - } - - if (this->width.unit == SVGLength::PERCENT) { - this->width._set = true; - this->width.computed = this->width.value * ictx->viewport.width(); - } - - if (this->height.unit == SVGLength::PERCENT) { - this->height._set = true; - this->height.computed = this->height.value * ictx->viewport.height(); - } + this->calcDimsFromParentViewport(ictx, true); } SPObject::update(ctx, flags); diff --git a/src/sp-filter-primitive.h b/src/sp-filter-primitive.h index d81adbd10..0ecb8af62 100644 --- a/src/sp-filter-primitive.h +++ b/src/sp-filter-primitive.h @@ -15,6 +15,7 @@ */ #include "sp-object.h" +#include "sp-dimensions.h" #include "svg/svg-length.h" #define SP_FILTER_PRIMITIVE(obj) (dynamic_cast((SPObject*)obj)) @@ -26,16 +27,13 @@ class Filter; class FilterPrimitive; } } -class SPFilterPrimitive : public SPObject { +class SPFilterPrimitive : public SPObject, public SPDimensions { public: SPFilterPrimitive(); virtual ~SPFilterPrimitive(); int image_in, image_out; - /* filter primitive subregion */ - SVGLength x, y, height, width; - protected: virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); virtual void release(); diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp index 2a5ec0755..aa5fe2942 100644 --- a/src/sp-filter.cpp +++ b/src/sp-filter.cpp @@ -213,25 +213,7 @@ void SPFilter::update(SPCtx *ctx, guint flags) { // Note: This only works for root viewport since this routine is not called after // setting a new viewport. A true fix requires a strategy like SPItemView or SPMarkerView. if(this->filterUnits == SP_FILTER_UNITS_USERSPACEONUSE) { - if (this->x.unit == SVGLength::PERCENT) { - this->x._set = true; - this->x.computed = this->x.value * ictx->viewport.width(); - } - - if (this->y.unit == SVGLength::PERCENT) { - this->y._set = true; - this->y.computed = this->y.value * ictx->viewport.height(); - } - - if (this->width.unit == SVGLength::PERCENT) { - this->width._set = true; - this->width.computed = this->width.value * ictx->viewport.width(); - } - - if (this->height.unit == SVGLength::PERCENT) { - this->height._set = true; - this->height.computed = this->height.value * ictx->viewport.height(); - } + this->calcDimsFromParentViewport(ictx, true); } /* do something to trigger redisplay, updates? */ diff --git a/src/sp-filter.h b/src/sp-filter.h index 1c214c6b7..054562d39 100644 --- a/src/sp-filter.h +++ b/src/sp-filter.h @@ -16,6 +16,7 @@ #include #include "number-opt-number.h" +#include "sp-dimensions.h" #include "sp-object.h" #include "sp-filter-units.h" #include "svg/svg-length.h" @@ -38,7 +39,7 @@ struct ltstr { bool operator()(const char* s1, const char* s2) const; }; -class SPFilter : public SPObject { +class SPFilter : public SPObject, public SPDimensions { public: SPFilter(); virtual ~SPFilter(); @@ -47,14 +48,10 @@ public: unsigned int filterUnits_set : 1; SPFilterUnits primitiveUnits; unsigned int primitiveUnits_set : 1; - SVGLength x; - SVGLength y; - SVGLength width; - SVGLength height; NumberOptNumber filterRes; SPFilterReference *href; sigc::connection modified_connection; - + guint getRefCount(); guint _refcount; -- cgit v1.2.3 From a4a165df79514f34736282e699180cb8ae81c949 Mon Sep 17 00:00:00 2001 From: Andrey Mozzhuhin Date: Sun, 1 Oct 2017 18:13:05 +0300 Subject: Fix bug #1226962 - Keyboard shortcuts (hotkeys) not functional in some cases in non-latin keyboard layouts The key group with zero index can be a non-Latin layout. Try to determine Latin layout group index at runtime by checking available keymap entries for Latin 'a' keyval. --- src/inkscape.cpp | 3 ++- src/ui/tools/tool-base.cpp | 39 ++++++++++++++++++++++++++++++++++++--- src/ui/tools/tool-base.h | 1 + 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/inkscape.cpp b/src/inkscape.cpp index c56002753..c6c43272c 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -487,9 +487,10 @@ Application::Application(const char* argv, bool use_gui) : Inkscape::UI::Dialog::DebugDialog::getInstance()->captureLogMessages(); } - /* Check for global remapping of Alt key */ if (use_gui) { + Inkscape::UI::Tools::init_latin_keys_group(); + /* Check for global remapping of Alt key */ mapalt(guint(prefs->getInt("/options/mapalt/value", 0))); trackalt(guint(prefs->getInt("/options/trackalt/value", 0))); } diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp index 12c3a3675..58e4b32a9 100644 --- a/src/ui/tools/tool-base.cpp +++ b/src/ui/tools/tool-base.cpp @@ -71,6 +71,10 @@ static guint32 scroll_event_time = 0; static gdouble scroll_multiply = 1; static guint scroll_keyval = 0; +// globals for key processing +static bool latin_keys_group_valid = FALSE; +static gint latin_keys_group; + namespace Inkscape { namespace UI { @@ -1159,8 +1163,36 @@ void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, } /** - * Return the keyval corresponding to the key event in group 0, i.e., - * in the main (English) layout. + * Try to determine the keys group of Latin layout. + * Check available keymap entries for Latin 'a' key and find the minimal integer value. + */ +static void update_latin_keys_group() { + GdkKeymapKey* keys; + gint n_keys; + + latin_keys_group_valid = FALSE; + if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), GDK_KEY_a, &keys, &n_keys)) { + for (gint i = 0; i < n_keys; i++) { + if (!latin_keys_group_valid || keys[i].group < latin_keys_group) { + latin_keys_group = keys[i].group; + latin_keys_group_valid = TRUE; + } + } + g_free(keys); + } +} + +/** + * Initialize Latin keys group handling. + */ +void init_latin_keys_group() { + g_signal_connect(G_OBJECT(gdk_keymap_get_default()), + "keys-changed", G_CALLBACK(update_latin_keys_group), NULL); + update_latin_keys_group(); +} + +/** + * Return the keyval corresponding to the key event in Latin group. * * Use this instead of simply event->keyval, so that your keyboard shortcuts * work regardless of layouts (e.g., in Cyrillic). @@ -1168,10 +1200,11 @@ void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, guint get_group0_keyval(GdkEventKey const *event, guint *consumed_modifiers /*= NULL*/) { guint keyval = 0; GdkModifierType modifiers; + gint group = latin_keys_group_valid ? latin_keys_group : event->group; gdk_keymap_translate_keyboard_state( gdk_keymap_get_for_display(gdk_display_get_default()), - event->hardware_keycode, (GdkModifierType) event->state, 0 /*event->group*/, + event->hardware_keycode, (GdkModifierType) event->state, group, &keyval, NULL, NULL, &modifiers); if (consumed_modifiers) { diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h index 09a9db660..1a049abb3 100644 --- a/src/ui/tools/tool-base.h +++ b/src/ui/tools/tool-base.h @@ -251,6 +251,7 @@ gint gobble_motion_events(gint mask); void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, GdkEvent *event, gchar const *ctrl_tip, gchar const *shift_tip, gchar const *alt_tip); +void init_latin_keys_group(); guint get_group0_keyval(GdkEventKey const *event, guint *consumed_modifiers = NULL); SPItem *sp_event_context_find_item (SPDesktop *desktop, Geom::Point const &p, bool select_under, bool into_groups); -- cgit v1.2.3 From 525c6c0c7ea39c6bdb0013c546d08b6e94e51e61 Mon Sep 17 00:00:00 2001 From: Andrey Mozzhuhin Date: Fri, 6 Oct 2017 00:46:14 +0300 Subject: Rename get_group0_keyval to get_latin_keyval --- src/desktop-events.cpp | 4 ++-- src/knot.cpp | 2 +- src/main.cpp | 6 +++--- src/seltrans.cpp | 2 +- src/shortcuts.cpp | 4 ++-- src/ui/dialog-events.cpp | 2 +- src/ui/dialog/dialog.cpp | 2 +- src/ui/dialog/knot-properties.cpp | 2 +- src/ui/dialog/layer-properties.cpp | 2 +- src/ui/dialog/layers.cpp | 2 +- src/ui/dialog/lpe-powerstroke-properties.cpp | 2 +- src/ui/dialog/objects.cpp | 2 +- src/ui/dialog/tags.cpp | 2 +- src/ui/dialog/xml-tree.cpp | 2 +- src/ui/tool/control-point.cpp | 2 +- src/ui/tools/arc-tool.cpp | 2 +- src/ui/tools/box3d-tool.cpp | 2 +- src/ui/tools/calligraphic-tool.cpp | 4 ++-- src/ui/tools/connector-tool.cpp | 2 +- src/ui/tools/dropper-tool.cpp | 2 +- src/ui/tools/eraser-tool.cpp | 4 ++-- src/ui/tools/flood-tool.cpp | 2 +- src/ui/tools/freehand-base.cpp | 2 +- src/ui/tools/gradient-tool.cpp | 12 ++++++------ src/ui/tools/lpe-tool.cpp | 4 ++-- src/ui/tools/mesh-tool.cpp | 12 ++++++------ src/ui/tools/node-tool.cpp | 2 +- src/ui/tools/pen-tool.cpp | 2 +- src/ui/tools/pencil-tool.cpp | 4 ++-- src/ui/tools/rect-tool.cpp | 4 ++-- src/ui/tools/select-tool.cpp | 24 ++++++++++++------------ src/ui/tools/spiral-tool.cpp | 4 ++-- src/ui/tools/spray-tool.cpp | 4 ++-- src/ui/tools/star-tool.cpp | 4 ++-- src/ui/tools/text-tool.cpp | 10 +++++----- src/ui/tools/tool-base.cpp | 16 ++++++++-------- src/ui/tools/tool-base.h | 2 +- src/ui/tools/tweak-tool.cpp | 4 ++-- src/ui/tools/zoom-tool.cpp | 4 ++-- src/ui/widget/spinbutton.cpp | 2 +- src/widgets/spinbutton-events.cpp | 2 +- 41 files changed, 87 insertions(+), 87 deletions(-) diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index 40b3272b8..758c3e939 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -559,7 +559,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) desktop->guidesMessageContext()->clear(); break; case GDK_KEY_PRESS: - switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_latin_keyval (&event->key)) { case GDK_KEY_Delete: case GDK_KEY_KP_Delete: case GDK_KEY_BackSpace: @@ -588,7 +588,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) } break; case GDK_KEY_RELEASE: - switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_latin_keyval (&event->key)) { case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: { diff --git a/src/knot.cpp b/src/knot.cpp index ff21f534a..8296891f4 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -326,7 +326,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot consumed = TRUE; break; case GDK_KEY_PRESS: // keybindings for knot - switch (Inkscape::UI::Tools::get_group0_keyval(&event->key)) { + switch (Inkscape::UI::Tools::get_latin_keyval(&event->key)) { case GDK_KEY_Escape: knot->setFlag(SP_KNOT_GRABBED, FALSE); diff --git a/src/main.cpp b/src/main.cpp index 3402bcc72..9f204851b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -902,7 +902,7 @@ namespace Inkscape { namespace UI { namespace Tools { -guint get_group0_keyval(GdkEventKey const* event, guint *consumed_modifiers = NULL); +guint get_latin_keyval(GdkEventKey const* event, guint *consumed_modifiers = NULL); } } @@ -960,7 +960,7 @@ snooper(GdkEvent *event, gpointer /*data*/) { alt_pressed = TRUE && (event->button.state & GDK_MOD1_MASK); break; case GDK_KEY_PRESS: - keyval = Inkscape::UI::Tools::get_group0_keyval(&event->key); + keyval = Inkscape::UI::Tools::get_latin_keyval(&event->key); if (keyval == GDK_KEY_Alt_L) altL_pressed = TRUE; if (keyval == GDK_KEY_Alt_R) altR_pressed = TRUE; alt_pressed = alt_pressed || altL_pressed || altR_pressed; @@ -971,7 +971,7 @@ snooper(GdkEvent *event, gpointer /*data*/) { event->key.state &= ~GDK_MOD1_MASK; break; case GDK_KEY_RELEASE: - keyval = Inkscape::UI::Tools::get_group0_keyval(&event->key); + keyval = Inkscape::UI::Tools::get_latin_keyval(&event->key); if (keyval == GDK_KEY_Alt_L) altL_pressed = FALSE; if (keyval == GDK_KEY_Alt_R) altR_pressed = FALSE; if (!altL_pressed && !altR_pressed) diff --git a/src/seltrans.cpp b/src/seltrans.cpp index 7355f6a07..141720371 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -63,7 +63,7 @@ static gboolean sp_sel_trans_handle_event(SPKnot *knot, GdkEvent *event, SPSelTr case GDK_MOTION_NOTIFY: break; case GDK_KEY_PRESS: - if (Inkscape::UI::Tools::get_group0_keyval (&event->key) == GDK_KEY_space) { + if (Inkscape::UI::Tools::get_latin_keyval (&event->key) == GDK_KEY_space) { /* stamping mode: both mode(show content and outline) operation with knot */ if (!SP_KNOT_IS_GRABBED(knot)) { return FALSE; diff --git a/src/shortcuts.cpp b/src/shortcuts.cpp index c1677ca51..0a1e0c4a9 100644 --- a/src/shortcuts.cpp +++ b/src/shortcuts.cpp @@ -153,7 +153,7 @@ guint sp_shortcut_translate_event(GdkEventKey const *event, guint *effective_mod guint remaining_modifiers = 0; guint resulting_modifiers = 0; // remaining modifiers encoded in high-bit mask - keyval = Inkscape::UI::Tools::get_group0_keyval(event, &consumed_modifiers); + keyval = Inkscape::UI::Tools::get_latin_keyval(event, &consumed_modifiers); remaining_modifiers = initial_modifiers & ~consumed_modifiers; resulting_modifiers = ( remaining_modifiers & GDK_SHIFT_MASK ? SP_SHORTCUT_SHIFT_MASK : 0 ) | @@ -485,7 +485,7 @@ void sp_shortcut_file_export_do(char const *exportname) { * Shortcut file consists of pairs of bind elements : * Element (a) is used for shortcut display in menus (display="True") and contains the gdk_keyval_name of the shortcut key * Element (b) is used in shortcut lookup and contains an uppercase version of the gdk_keyval_name, - * or a gdk_keyval_name name and the "Shift" modifier for Shift altered hardware code keys (see get_group0_keyval() for explanation) + * or a gdk_keyval_name name and the "Shift" modifier for Shift altered hardware code keys (see get_latin_keyval() for explanation) */ void sp_shortcut_delete_from_file(char const * /*action*/, unsigned int const shortcut) { diff --git a/src/ui/dialog-events.cpp b/src/ui/dialog-events.cpp index d7d56fa50..cf11490f3 100644 --- a/src/ui/dialog-events.cpp +++ b/src/ui/dialog-events.cpp @@ -100,7 +100,7 @@ sp_dialog_event_handler (GtkWindow *win, GdkEvent *event, gpointer data) case GDK_KEY_PRESS: - switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_latin_keyval (&event->key)) { case GDK_KEY_Escape: sp_dialog_defocus (win); ret = TRUE; diff --git a/src/ui/dialog/dialog.cpp b/src/ui/dialog/dialog.cpp index 9037e8377..e50824c7b 100644 --- a/src/ui/dialog/dialog.cpp +++ b/src/ui/dialog/dialog.cpp @@ -257,7 +257,7 @@ bool Dialog::_onEvent(GdkEvent *event) switch (event->type) { case GDK_KEY_PRESS: { - switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_latin_keyval (&event->key)) { case GDK_KEY_Escape: { _defocus(); ret = true; diff --git a/src/ui/dialog/knot-properties.cpp b/src/ui/dialog/knot-properties.cpp index b094dc0e7..29e1cb2bb 100644 --- a/src/ui/dialog/knot-properties.cpp +++ b/src/ui/dialog/knot-properties.cpp @@ -151,7 +151,7 @@ KnotPropertiesDialog::_close() bool KnotPropertiesDialog::_handleKeyEvent(GdkEventKey * /*event*/) { - /*switch (get_group0_keyval(event)) { + /*switch (get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: { _apply(); diff --git a/src/ui/dialog/layer-properties.cpp b/src/ui/dialog/layer-properties.cpp index 562484022..4ab6e130e 100644 --- a/src/ui/dialog/layer-properties.cpp +++ b/src/ui/dialog/layer-properties.cpp @@ -290,7 +290,7 @@ SPObject* LayerPropertiesDialog::_selectedLayer() bool LayerPropertiesDialog::_handleKeyEvent(GdkEventKey *event) { - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: { _strategy->perform(*this); diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp index 4a381a565..6223bd627 100644 --- a/src/ui/dialog/layers.cpp +++ b/src/ui/dialog/layers.cpp @@ -542,7 +542,7 @@ void LayersPanel::_toggled( Glib::ustring const& str, int targetCol ) bool LayersPanel::_handleKeyEvent(GdkEventKey *event) { - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: case GDK_KEY_F2: { diff --git a/src/ui/dialog/lpe-powerstroke-properties.cpp b/src/ui/dialog/lpe-powerstroke-properties.cpp index 9bd98c7c0..e66229dcd 100644 --- a/src/ui/dialog/lpe-powerstroke-properties.cpp +++ b/src/ui/dialog/lpe-powerstroke-properties.cpp @@ -146,7 +146,7 @@ PowerstrokePropertiesDialog::_close() bool PowerstrokePropertiesDialog::_handleKeyEvent(GdkEventKey * /*event*/) { - /*switch (get_group0_keyval(event)) { + /*switch (get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: { _apply(); diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp index 1e0ab9604..49ffa38f5 100644 --- a/src/ui/dialog/objects.cpp +++ b/src/ui/dialog/objects.cpp @@ -735,7 +735,7 @@ bool ObjectsPanel::_handleKeyEvent(GdkEventKey *event) // handle events for the treeview bool empty = _desktop->selection->isEmpty(); - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: { diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp index 5a5417eb5..d804e1f68 100644 --- a/src/ui/dialog/tags.cpp +++ b/src/ui/dialog/tags.cpp @@ -522,7 +522,7 @@ void TagsPanel::_checkTreeSelection() bool TagsPanel::_handleKeyEvent(GdkEventKey *event) { - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: case GDK_KEY_F2: { diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 83c0de45b..c245890bc 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -856,7 +856,7 @@ void XmlTree::on_document_uri_set(gchar const * /*uri*/, SPDocument * /*document gboolean XmlTree::quit_on_esc (GtkWidget *w, GdkEventKey *event, GObject */*tbl*/) { - switch (Inkscape::UI::Tools::get_group0_keyval (event)) { + switch (Inkscape::UI::Tools::get_latin_keyval (event)) { case GDK_KEY_Escape: // defocus gtk_widget_destroy(w); return TRUE; diff --git a/src/ui/tool/control-point.cpp b/src/ui/tool/control-point.cpp index d9374c790..8ab9fcbd7 100644 --- a/src/ui/tool/control-point.cpp +++ b/src/ui/tool/control-point.cpp @@ -380,7 +380,7 @@ bool ControlPoint::_eventHandler(Inkscape::UI::Tools::ToolBase *event_context, G // update tips on modifier state change // TODO add ESC keybinding as drag cancel case GDK_KEY_PRESS: - switch (Inkscape::UI::Tools::get_group0_keyval(&event->key)) + switch (Inkscape::UI::Tools::get_latin_keyval(&event->key)) { case GDK_KEY_Escape: { // ignore Escape if this is not a drag diff --git a/src/ui/tools/arc-tool.cpp b/src/ui/tools/arc-tool.cpp index a670f577e..33f323eb3 100644 --- a/src/ui/tools/arc-tool.cpp +++ b/src/ui/tools/arc-tool.cpp @@ -227,7 +227,7 @@ bool ArcTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/box3d-tool.cpp b/src/ui/tools/box3d-tool.cpp index 69555d6c9..09ee2cda9 100644 --- a/src/ui/tools/box3d-tool.cpp +++ b/src/ui/tools/box3d-tool.cpp @@ -335,7 +335,7 @@ bool Box3dTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Up: case GDK_KEY_Down: case GDK_KEY_KP_Up: diff --git a/src/ui/tools/calligraphic-tool.cpp b/src/ui/tools/calligraphic-tool.cpp index ca94ac75f..2a29b25b0 100644 --- a/src/ui/tools/calligraphic-tool.cpp +++ b/src/ui/tools/calligraphic-tool.cpp @@ -777,7 +777,7 @@ bool CalligraphicTool::root_handler(GdkEvent* event) { } case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Up: case GDK_KEY_KP_Up: if (!MOD__CTRL_ONLY(event)) { @@ -858,7 +858,7 @@ bool CalligraphicTool::root_handler(GdkEvent* event) { break; case GDK_KEY_RELEASE: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Control_L: case GDK_KEY_Control_R: this->message_context->clear(); diff --git a/src/ui/tools/connector-tool.cpp b/src/ui/tools/connector-tool.cpp index 59d670d74..b9d36706f 100644 --- a/src/ui/tools/connector-tool.cpp +++ b/src/ui/tools/connector-tool.cpp @@ -434,7 +434,7 @@ bool ConnectorTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - ret = this->_handleKeyPress(get_group0_keyval (&event->key)); + ret = this->_handleKeyPress(get_latin_keyval (&event->key)); break; default: diff --git a/src/ui/tools/dropper-tool.cpp b/src/ui/tools/dropper-tool.cpp index 53a99e481..7bde1b698 100644 --- a/src/ui/tools/dropper-tool.cpp +++ b/src/ui/tools/dropper-tool.cpp @@ -345,7 +345,7 @@ bool DropperTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Up: case GDK_KEY_Down: case GDK_KEY_KP_Up: diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index 83039be18..7892e865b 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -492,7 +492,7 @@ bool EraserTool::root_handler(GdkEvent* event) { } case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { // case GDK_KEY_Up: // case GDK_KEY_KP_Up: // if (!MOD__CTRL_ONLY(event)) { @@ -596,7 +596,7 @@ bool EraserTool::root_handler(GdkEvent* event) { break; case GDK_KEY_RELEASE: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Control_L: case GDK_KEY_Control_R: this->message_context->clear(); diff --git a/src/ui/tools/flood-tool.cpp b/src/ui/tools/flood-tool.cpp index daeff228c..401b50c1c 100644 --- a/src/ui/tools/flood-tool.cpp +++ b/src/ui/tools/flood-tool.cpp @@ -1189,7 +1189,7 @@ bool FloodTool::root_handler(GdkEvent* event) { } break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Up: case GDK_KEY_Down: case GDK_KEY_KP_Up: diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp index a85c89400..328dc0220 100644 --- a/src/ui/tools/freehand-base.cpp +++ b/src/ui/tools/freehand-base.cpp @@ -168,7 +168,7 @@ bool FreehandBase::root_handler(GdkEvent* event) { switch (event->type) { case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Up: case GDK_KEY_Down: case GDK_KEY_KP_Up: diff --git a/src/ui/tools/gradient-tool.cpp b/src/ui/tools/gradient-tool.cpp index 966183b1a..1735a78df 100644 --- a/src/ui/tools/gradient-tool.cpp +++ b/src/ui/tools/gradient-tool.cpp @@ -665,7 +665,7 @@ bool GradientTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: @@ -719,7 +719,7 @@ bool GradientTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_4: if (!MOD__CTRL(event)) { // not ctrl gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { drag->selected_move_screen(mul*-10, 0); // shift @@ -742,7 +742,7 @@ bool GradientTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_8: if (!MOD__CTRL(event)) { // not ctrl gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { drag->selected_move_screen(0, mul*10); // shift @@ -766,7 +766,7 @@ bool GradientTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_6: if (!MOD__CTRL(event)) { // not ctrl gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -791,7 +791,7 @@ bool GradientTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_2: if (!MOD__CTRL(event)) { // not ctrl gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -848,7 +848,7 @@ bool GradientTool::root_handler(GdkEvent* event) { break; case GDK_KEY_RELEASE: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/lpe-tool.cpp b/src/ui/tools/lpe-tool.cpp index 35e6d14a0..ad3964f4a 100644 --- a/src/ui/tools/lpe-tool.cpp +++ b/src/ui/tools/lpe-tool.cpp @@ -225,14 +225,14 @@ bool LpeTool::root_handler(GdkEvent* event) { case GDK_KEY_PRESS: /** - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { } break; **/ case GDK_KEY_RELEASE: /** - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_Control_L: case GDK_Control_R: dc->_message_context->clear(); diff --git a/src/ui/tools/mesh-tool.cpp b/src/ui/tools/mesh-tool.cpp index 1ded5e146..fdfae84df 100644 --- a/src/ui/tools/mesh-tool.cpp +++ b/src/ui/tools/mesh-tool.cpp @@ -825,7 +825,7 @@ bool MeshTool::root_handler(GdkEvent* event) { #endif // FIXME: tip - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: @@ -864,7 +864,7 @@ bool MeshTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_Left: case GDK_KEY_KP_4: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -888,7 +888,7 @@ bool MeshTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_Up: case GDK_KEY_KP_8: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -912,7 +912,7 @@ bool MeshTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_Right: case GDK_KEY_KP_6: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -936,7 +936,7 @@ bool MeshTool::root_handler(GdkEvent* event) { case GDK_KEY_KP_Down: case GDK_KEY_KP_2: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -1034,7 +1034,7 @@ bool MeshTool::root_handler(GdkEvent* event) { #ifdef DEBUG_MESH std::cout << "sp_mesh_context_root_handler: GDK_KEY_RELEASE" << std::endl; #endif - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp index e7825e302..2b3de5203 100644 --- a/src/ui/tools/node-tool.cpp +++ b/src/ui/tools/node-tool.cpp @@ -550,7 +550,7 @@ bool NodeTool::root_handler(GdkEvent* event) { // otherwise some features cease to work case GDK_KEY_PRESS: - switch (get_group0_keyval(&event->key)) + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Escape: // deselect everything if (this->_selected_nodes->empty()) { diff --git a/src/ui/tools/pen-tool.cpp b/src/ui/tools/pen-tool.cpp index f8dfd7a10..04e2ca7c2 100644 --- a/src/ui/tools/pen-tool.cpp +++ b/src/ui/tools/pen-tool.cpp @@ -1062,7 +1062,7 @@ bool PenTool::_handleKeyPress(GdkEvent *event) { } } - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Left: // move last point left case GDK_KEY_KP_Left: if (!MOD__CTRL(event)) { // not ctrl diff --git a/src/ui/tools/pencil-tool.cpp b/src/ui/tools/pencil-tool.cpp index 61799b306..f25c1d673 100644 --- a/src/ui/tools/pencil-tool.cpp +++ b/src/ui/tools/pencil-tool.cpp @@ -455,7 +455,7 @@ void PencilTool::_cancel() { bool PencilTool::_handleKeyPress(GdkEventKey const &event) { bool ret = false; - switch (get_group0_keyval(&event)) { + switch (get_latin_keyval(&event)) { case GDK_KEY_Up: case GDK_KEY_Down: case GDK_KEY_KP_Up: @@ -508,7 +508,7 @@ bool PencilTool::_handleKeyPress(GdkEventKey const &event) { bool PencilTool::_handleKeyRelease(GdkEventKey const &event) { bool ret = false; - switch (get_group0_keyval(&event)) { + switch (get_latin_keyval(&event)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Meta_L: diff --git a/src/ui/tools/rect-tool.cpp b/src/ui/tools/rect-tool.cpp index 91725a00b..655650ef4 100644 --- a/src/ui/tools/rect-tool.cpp +++ b/src/ui/tools/rect-tool.cpp @@ -258,7 +258,7 @@ bool RectTool::root_handler(GdkEvent* event) { } break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: @@ -326,7 +326,7 @@ bool RectTool::root_handler(GdkEvent* event) { } break; case GDK_KEY_RELEASE: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp index fca2173ca..3dfb764bb 100644 --- a/src/ui/tools/select-tool.cpp +++ b/src/ui/tools/select-tool.cpp @@ -344,18 +344,18 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) { break; case GDK_KEY_PRESS: - if (get_group0_keyval (&event->key) == GDK_KEY_space) { + if (get_latin_keyval (&event->key) == GDK_KEY_space) { if (this->dragging && this->grabbed) { /* stamping mode: show content mode moving */ _seltrans->stamp(); ret = TRUE; } - } else if (get_group0_keyval (&event->key) == GDK_KEY_Tab) { + } else if (get_latin_keyval (&event->key) == GDK_KEY_Tab) { if (this->dragging && this->grabbed) { _seltrans->getNextClosestPoint(false); ret = TRUE; } - } else if (get_group0_keyval (&event->key) == GDK_KEY_ISO_Left_Tab) { + } else if (get_latin_keyval (&event->key) == GDK_KEY_ISO_Left_Tab) { if (this->dragging && this->grabbed) { _seltrans->getNextClosestPoint(true); ret = TRUE; @@ -854,7 +854,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_PRESS: // keybindings for select context { { - guint keyval = get_group0_keyval(&event->key); + guint keyval = get_latin_keyval(&event->key); bool alt = ( MOD__ALT(event) || (keyval == GDK_KEY_Alt_L) @@ -896,11 +896,11 @@ bool SelectTool::root_handler(GdkEvent* event) { gdouble const offset = prefs->getDoubleLimited("/options/defaultscale/value", 2, 0, 1000, "px"); int const snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12); - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Left: // move selection left case GDK_KEY_KP_Left: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events( get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events( get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -923,7 +923,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_Up: // move selection up case GDK_KEY_KP_Up: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -946,7 +946,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_Right: // move selection right case GDK_KEY_KP_Right: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -969,7 +969,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_Down: // move selection down case GDK_KEY_KP_Down: if (!MOD__CTRL(event)) { // not ctrl - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask if (MOD__ALT(event)) { // alt if (MOD__SHIFT(event)) { @@ -1024,7 +1024,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_bracketleft: if (MOD__ALT(event)) { - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask selection->rotateScreen(mul*1); } else if (MOD__CTRL(event)) { selection->rotate(90); @@ -1037,7 +1037,7 @@ bool SelectTool::root_handler(GdkEvent* event) { case GDK_KEY_bracketright: if (MOD__ALT(event)) { - gint mul = 1 + gobble_key_events(get_group0_keyval(&event->key), 0); // with any mask + gint mul = 1 + gobble_key_events(get_latin_keyval(&event->key), 0); // with any mask selection->rotateScreen(-1*mul); } else if (MOD__CTRL(event)) { selection->rotate(-90); @@ -1097,7 +1097,7 @@ bool SelectTool::root_handler(GdkEvent* event) { break; } case GDK_KEY_RELEASE: { - guint keyval = get_group0_keyval(&event->key); + guint keyval = get_latin_keyval(&event->key); if (key_is_a_modifier (keyval)) { this->defaultMessageContext()->clear(); } diff --git a/src/ui/tools/spiral-tool.cpp b/src/ui/tools/spiral-tool.cpp index 9240df760..bb8ce6356 100644 --- a/src/ui/tools/spiral-tool.cpp +++ b/src/ui/tools/spiral-tool.cpp @@ -232,7 +232,7 @@ bool SpiralTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Alt_R: case GDK_KEY_Control_L: case GDK_KEY_Control_R: @@ -291,7 +291,7 @@ bool SpiralTool::root_handler(GdkEvent* event) { break; case GDK_KEY_RELEASE: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/spray-tool.cpp b/src/ui/tools/spray-tool.cpp index eec7babc4..5593ceb34 100644 --- a/src/ui/tools/spray-tool.cpp +++ b/src/ui/tools/spray-tool.cpp @@ -1375,7 +1375,7 @@ bool SprayTool::root_handler(GdkEvent* event) { } case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_j: case GDK_KEY_J: if (MOD__SHIFT_ONLY(event)) { @@ -1487,7 +1487,7 @@ bool SprayTool::root_handler(GdkEvent* event) { case GDK_KEY_RELEASE: { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: this->update_cursor(false); diff --git a/src/ui/tools/star-tool.cpp b/src/ui/tools/star-tool.cpp index cda3389f9..ed25503c4 100644 --- a/src/ui/tools/star-tool.cpp +++ b/src/ui/tools/star-tool.cpp @@ -246,7 +246,7 @@ bool StarTool::root_handler(GdkEvent* event) { break; case GDK_KEY_PRESS: - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Alt_R: case GDK_KEY_Control_L: case GDK_KEY_Control_R: @@ -306,7 +306,7 @@ bool StarTool::root_handler(GdkEvent* event) { break; case GDK_KEY_RELEASE: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Alt_L: case GDK_KEY_Alt_R: case GDK_KEY_Control_L: diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 91d94cc22..692b65c44 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -653,7 +653,7 @@ bool TextTool::root_handler(GdkEvent* event) { } break; case GDK_KEY_PRESS: { - guint const group0_keyval = get_group0_keyval(&event->key); + guint const group0_keyval = get_latin_keyval(&event->key); if (group0_keyval == GDK_KEY_KP_Add || group0_keyval == GDK_KEY_KP_Subtract) { @@ -961,7 +961,7 @@ bool TextTool::root_handler(GdkEvent* event) { if (this->text) { if (MOD__ALT(event)) { gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__SHIFT(event)) sp_te_adjust_kerning_screen(this->text, this->text_sel_start, this->text_sel_end, desktop, Geom::Point(mul*-10, 0)); else @@ -985,7 +985,7 @@ bool TextTool::root_handler(GdkEvent* event) { if (this->text) { if (MOD__ALT(event)) { gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__SHIFT(event)) sp_te_adjust_kerning_screen(this->text, this->text_sel_start, this->text_sel_end, desktop, Geom::Point(mul*10, 0)); else @@ -1009,7 +1009,7 @@ bool TextTool::root_handler(GdkEvent* event) { if (this->text) { if (MOD__ALT(event)) { gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__SHIFT(event)) sp_te_adjust_kerning_screen(this->text, this->text_sel_start, this->text_sel_end, desktop, Geom::Point(0, mul*-10)); else @@ -1033,7 +1033,7 @@ bool TextTool::root_handler(GdkEvent* event) { if (this->text) { if (MOD__ALT(event)) { gint mul = 1 + gobble_key_events( - get_group0_keyval(&event->key), 0); // with any mask + get_latin_keyval(&event->key), 0); // with any mask if (MOD__SHIFT(event)) sp_te_adjust_kerning_screen(this->text, this->text_sel_start, this->text_sel_end, desktop, Geom::Point(0, mul*10)); else diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp index 58e4b32a9..7b4f67da9 100644 --- a/src/ui/tools/tool-base.cpp +++ b/src/ui/tools/tool-base.cpp @@ -602,7 +602,7 @@ bool ToolBase::root_handler(GdkEvent* event) { int const key_scroll = prefs->getIntLimited("/options/keyscroll/value", 10, 0, 1000); - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { // GDK insists on stealing these keys (F1 for no idea what, tab for cycling widgets // in the editing window). So we resteal them back and run our regular shortcut // invoker on them. @@ -642,7 +642,7 @@ bool ToolBase::root_handler(GdkEvent* event) { int i = (int) floor(key_scroll * accelerate_scroll(event, acceleration, desktop->getCanvas())); - gobble_key_events(get_group0_keyval(&event->key), GDK_CONTROL_MASK); + gobble_key_events(get_latin_keyval(&event->key), GDK_CONTROL_MASK); this->desktop->scroll_relative(Geom::Point(i, 0)); ret = TRUE; } else { @@ -657,7 +657,7 @@ bool ToolBase::root_handler(GdkEvent* event) { int i = (int) floor(key_scroll * accelerate_scroll(event, acceleration, desktop->getCanvas())); - gobble_key_events(get_group0_keyval(&event->key), GDK_CONTROL_MASK); + gobble_key_events(get_latin_keyval(&event->key), GDK_CONTROL_MASK); this->desktop->scroll_relative(Geom::Point(0, i)); ret = TRUE; } else { @@ -672,7 +672,7 @@ bool ToolBase::root_handler(GdkEvent* event) { int i = (int) floor(key_scroll * accelerate_scroll(event, acceleration, desktop->getCanvas())); - gobble_key_events(get_group0_keyval(&event->key), GDK_CONTROL_MASK); + gobble_key_events(get_latin_keyval(&event->key), GDK_CONTROL_MASK); this->desktop->scroll_relative(Geom::Point(-i, 0)); ret = TRUE; } else { @@ -687,7 +687,7 @@ bool ToolBase::root_handler(GdkEvent* event) { int i = (int) floor(key_scroll * accelerate_scroll(event, acceleration, desktop->getCanvas())); - gobble_key_events(get_group0_keyval(&event->key), GDK_CONTROL_MASK); + gobble_key_events(get_latin_keyval(&event->key), GDK_CONTROL_MASK); this->desktop->scroll_relative(Geom::Point(0, -i)); ret = TRUE; } else { @@ -756,7 +756,7 @@ bool ToolBase::root_handler(GdkEvent* event) { gdk_window_set_cursor(gtk_widget_get_window (w), this->cursor); } - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_space: if (within_tolerance) { // Space was pressed, but not panned @@ -1142,7 +1142,7 @@ void sp_event_root_menu_popup(SPDesktop *desktop, SPItem *item, GdkEvent *event) void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, GdkEvent *event, gchar const *ctrl_tip, gchar const *shift_tip, gchar const *alt_tip) { - guint keyval = get_group0_keyval(&event->key); + guint keyval = get_latin_keyval(&event->key); bool ctrl = ctrl_tip && (MOD__CTRL(event) || (keyval == GDK_KEY_Control_L) || (keyval == GDK_KEY_Control_R)); @@ -1197,7 +1197,7 @@ void init_latin_keys_group() { * Use this instead of simply event->keyval, so that your keyboard shortcuts * work regardless of layouts (e.g., in Cyrillic). */ -guint get_group0_keyval(GdkEventKey const *event, guint *consumed_modifiers /*= NULL*/) { +guint get_latin_keyval(GdkEventKey const *event, guint *consumed_modifiers /*= NULL*/) { guint keyval = 0; GdkModifierType modifiers; gint group = latin_keys_group_valid ? latin_keys_group : event->group; diff --git a/src/ui/tools/tool-base.h b/src/ui/tools/tool-base.h index 1a049abb3..7185b787e 100644 --- a/src/ui/tools/tool-base.h +++ b/src/ui/tools/tool-base.h @@ -252,7 +252,7 @@ void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, GdkEv gchar const *ctrl_tip, gchar const *shift_tip, gchar const *alt_tip); void init_latin_keys_group(); -guint get_group0_keyval(GdkEventKey const *event, guint *consumed_modifiers = NULL); +guint get_latin_keyval(GdkEventKey const *event, guint *consumed_modifiers = NULL); SPItem *sp_event_context_find_item (SPDesktop *desktop, Geom::Point const &p, bool select_under, bool into_groups); SPItem *sp_event_context_over_item (SPDesktop *desktop, SPItem *item, Geom::Point const &p); diff --git a/src/ui/tools/tweak-tool.cpp b/src/ui/tools/tweak-tool.cpp index fca96a483..9348ef842 100644 --- a/src/ui/tools/tweak-tool.cpp +++ b/src/ui/tools/tweak-tool.cpp @@ -1284,7 +1284,7 @@ bool TweakTool::root_handler(GdkEvent* event) { } case GDK_KEY_PRESS: { - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_m: case GDK_KEY_M: case GDK_KEY_0: @@ -1479,7 +1479,7 @@ bool TweakTool::root_handler(GdkEvent* event) { } case GDK_KEY_RELEASE: { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - switch (get_group0_keyval(&event->key)) { + switch (get_latin_keyval(&event->key)) { case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: this->update_cursor(false); diff --git a/src/ui/tools/zoom-tool.cpp b/src/ui/tools/zoom-tool.cpp index 8ba0c17b3..6f7fca242 100644 --- a/src/ui/tools/zoom-tool.cpp +++ b/src/ui/tools/zoom-tool.cpp @@ -168,7 +168,7 @@ bool ZoomTool::root_handler(GdkEvent* event) { break; } case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Escape: if (!Inkscape::Rubberband::get(desktop)->is_started()) { Inkscape::SelectionHelper::selectNone(desktop); @@ -206,7 +206,7 @@ bool ZoomTool::root_handler(GdkEvent* event) { } break; case GDK_KEY_RELEASE: - switch (get_group0_keyval (&event->key)) { + switch (get_latin_keyval (&event->key)) { case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: this->cursor_shape = cursor_zoom_xpm; diff --git a/src/ui/widget/spinbutton.cpp b/src/ui/widget/spinbutton.cpp index d1776e630..0c082d3ce 100644 --- a/src/ui/widget/spinbutton.cpp +++ b/src/ui/widget/spinbutton.cpp @@ -71,7 +71,7 @@ bool SpinButton::on_my_focus_in_event(GdkEventFocus* /*event*/) bool SpinButton::on_my_key_press_event(GdkEventKey* event) { - switch (Inkscape::UI::Tools::get_group0_keyval (event)) { + switch (Inkscape::UI::Tools::get_latin_keyval (event)) { case GDK_KEY_Escape: undo(); return true; // I consumed the event diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index fdf88ec85..9666fc636 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -66,7 +66,7 @@ gboolean spinbutton_keypress(GtkWidget *w, GdkEventKey *event, gpointer /*data*/ { gboolean result = FALSE; // I didn't consume the event - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Escape: // defocus spinbutton_undo(w); spinbutton_defocus(w); -- cgit v1.2.3 From 412f35c0a3e4eff3b80e981c905402fab43a6ca4 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 13:11:25 +0300 Subject: Small refactoring + elim trail space. --- src/uri.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/uri.cpp b/src/uri.cpp index 9178c8ae8..219792b6e 100644 --- a/src/uri.cpp +++ b/src/uri.cpp @@ -159,7 +159,7 @@ const std::string URI::getFullPath(std::string const &base) const { path = Glib::build_filename(base, path); } // Check the existance of the file - if(! g_file_test(path.c_str(), G_FILE_TEST_EXISTS) + if(! g_file_test(path.c_str(), G_FILE_TEST_EXISTS) || g_file_test(path.c_str(), G_FILE_TEST_IS_DIR) ) { path.clear(); } @@ -207,13 +207,11 @@ URI URI::fromUtf8( gchar const* path ) { tmp += (gunichar)one; } else { gchar scratch[4]; - g_snprintf( scratch, 4, "%c%02X", '%', one ); + g_snprintf( scratch, 4, "%%%02X", one ); tmp.append( scratch ); } } - const gchar *uri = tmp.data(); - URI result(uri); - return result; + return URI( tmp.data() ); } /* TODO !!! proper error handling */ -- cgit v1.2.3 From 264e757db87e3179112c02e9446667e8be235754 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 13:35:08 +0300 Subject: remove trailing space --- src/desktop-style.h | 2 +- src/sp-tag.h | 10 +++++----- src/vanishing-point.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/desktop-style.h b/src/desktop-style.h index a404c94a8..bc2c56fac 100644 --- a/src/desktop-style.h +++ b/src/desktop-style.h @@ -46,7 +46,7 @@ enum { // which property was queried (add when you need more) QUERY_STYLE_PROPERTY_PAINTORDER, // paint-order QUERY_STYLE_PROPERTY_FONT_SPECIFICATION, //-inkscape-font-specification QUERY_STYLE_PROPERTY_FONTFAMILY, // font-family - QUERY_STYLE_PROPERTY_FONTSTYLE, // font style + QUERY_STYLE_PROPERTY_FONTSTYLE, // font style QUERY_STYLE_PROPERTY_FONTVARIANTS, // font variants (OpenType features) QUERY_STYLE_PROPERTY_FONTFEATURESETTINGS, // font feature settings (OpenType features) QUERY_STYLE_PROPERTY_FONTNUMBERS, // size, spacings diff --git a/src/sp-tag.h b/src/sp-tag.h index 927bb45d1..36459a04b 100644 --- a/src/sp-tag.h +++ b/src/sp-tag.h @@ -3,7 +3,7 @@ /** \file * SVG implementation - * + * * Authors: * Theodore Janeczko * @@ -25,19 +25,19 @@ class SPTag : public SPObject { public: SPTag() {} virtual ~SPTag() {} - + virtual void build(SPDocument * doc, Inkscape::XML::Node *repr); //virtual void release(); virtual void set(unsigned key, const gchar* value); virtual void update(SPCtx * ctx, unsigned flags); - + virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags); - + bool expanded() const { return _expanded; } void setExpanded(bool isexpanded); void moveTo(SPObject *target, gboolean intoafter); - + private: bool _expanded; }; diff --git a/src/vanishing-point.h b/src/vanishing-point.h index ae2a88d6e..f396225df 100644 --- a/src/vanishing-point.h +++ b/src/vanishing-point.h @@ -176,7 +176,7 @@ public: std::vector lines; void printDraggers(); // convenience for debugging - /* + /* * FIXME: Should the following functions be merged? * Also, they should make use of the info in a VanishingPoint structure (regarding boxes * and perspectives) rather than each time iterating over the whole list of selected items? -- cgit v1.2.3 From e10ca2a8a80a772c09d2edba2c74f18bce2d5fce Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 13:54:36 +0300 Subject: Extract an expr + trailing space --- src/display/canvas-rotate.cpp | 47 ++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/display/canvas-rotate.cpp b/src/display/canvas-rotate.cpp index aaf6b962c..1d917a677 100644 --- a/src/display/canvas-rotate.cpp +++ b/src/display/canvas-rotate.cpp @@ -72,13 +72,13 @@ static void sp_canvas_rotate_update( SPCanvasItem *item, Geom::Affine const &/*a // std::cout << "sp_canvas_rotate_update: surface_copy is NULL" << std::endl; return; } - + // Destroy surface_rotated if it already exists. if (cr->surface_rotated != NULL) { cairo_surface_destroy (cr->surface_rotated); cr->surface_rotated = NULL; } - + // Create rotated surface cr->surface_rotated = ink_cairo_surface_create_identical(cr->surface_copy); double width = cairo_image_surface_get_width (cr->surface_rotated); @@ -91,7 +91,7 @@ static void sp_canvas_rotate_update( SPCanvasItem *item, Geom::Affine const &/*a cairo_set_source_surface( context, cr->surface_copy, 0, 0 ); cairo_paint( context ); cairo_destroy( context); - + // We cover the entire canvas item->x1 = -G_MAXINT; item->y1 = -G_MAXINT; @@ -108,8 +108,9 @@ static void sp_canvas_rotate_render( SPCanvasItem *item, SPCanvasBuf *buf) // std::cout << " buf->rect: " << buf->rect << std::endl; // std::cout << " buf->canvas_rect: " << buf->canvas_rect << std::endl; SPCanvasRotate *cr = SP_CANVAS_ROTATE(item); + auto ct = buf->ct; - if (!buf->ct) { + if (!ct) { return; } @@ -119,26 +120,26 @@ static void sp_canvas_rotate_render( SPCanvasItem *item, SPCanvasBuf *buf) } // Draw rotated canvas - cairo_save (buf->ct); - cairo_translate (buf->ct, + cairo_save (ct); + cairo_translate (ct, buf->canvas_rect.left() - buf->rect.left(), buf->canvas_rect.top() - buf->rect.top() ); - cairo_set_operator (buf->ct, CAIRO_OPERATOR_SOURCE ); - cairo_set_source_surface (buf->ct, cr->surface_rotated, 0, 0 ); - cairo_paint (buf->ct); - cairo_restore (buf->ct); + cairo_set_operator (ct, CAIRO_OPERATOR_SOURCE ); + cairo_set_source_surface (ct, cr->surface_rotated, 0, 0 ); + cairo_paint (ct); + cairo_restore (ct); // Draw line from center to cursor - cairo_save (buf->ct); - cairo_translate (buf->ct, -buf->rect.left(), -buf->rect.top()); - cairo_new_path (buf->ct); - cairo_move_to (buf->ct, cr->center[Geom::X], cr->center[Geom::Y]); - cairo_rel_line_to (buf->ct, cr->cursor[Geom::X], cr->cursor[Geom::Y]); - cairo_set_line_width (buf->ct, 2); - ink_cairo_set_source_rgba32 (buf->ct, 0xff00007f); - cairo_stroke (buf->ct); - cairo_restore (buf->ct); + cairo_save (ct); + cairo_translate (ct, -buf->rect.left(), -buf->rect.top()); + cairo_new_path (ct); + cairo_move_to (ct, cr->center[Geom::X], cr->center[Geom::Y]); + cairo_rel_line_to (ct, cr->cursor[Geom::X], cr->cursor[Geom::Y]); + cairo_set_line_width (ct, 2); + ink_cairo_set_source_rgba32 (ct, 0xff00007f); + cairo_stroke (ct); + cairo_restore (ct); } @@ -187,7 +188,7 @@ static int sp_canvas_rotate_event (SPCanvasItem *item, GdkEvent *event) // Correct line for snapping of angle double distance = rcursor.length(); - cr->cursor = Geom::Point::polar( Geom::rad_from_deg(angle), distance ); + cr->cursor = Geom::Point::polar( Geom::rad_from_deg(angle), distance ); // Update screen // sp_canvas_item_request_update( item ); @@ -214,7 +215,7 @@ static int sp_canvas_rotate_event (SPCanvasItem *item, GdkEvent *event) cr->surface_rotated = NULL; } // sp_canvas_item_show (desktop->drawing); - + break; case GDK_KEY_PRESS: // std::cout << " Key press: " << std::endl; @@ -260,10 +261,10 @@ void sp_canvas_rotate_paint (SPCanvasRotate *canvas_rotate, cairo_surface_t *bac double width = cairo_image_surface_get_width (background); double height = cairo_image_surface_get_height (background); - + // Draw rotated canvas cairo_t *context = cairo_create( background ); - + cairo_save (context); cairo_set_operator( context, CAIRO_OPERATOR_SOURCE ); cairo_translate( context, width/2.0, height/2.0 ); -- cgit v1.2.3 From eb775342472dc4756c48e56ce9a7e629d083a26f Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 14:06:12 +0300 Subject: update a comment and remove trail space --- src/display/nr-filter-diffuselighting.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/display/nr-filter-diffuselighting.h b/src/display/nr-filter-diffuselighting.h index 7739b3ea6..5ce505979 100644 --- a/src/display/nr-filter-diffuselighting.h +++ b/src/display/nr-filter-diffuselighting.h @@ -7,7 +7,7 @@ * Authors: * Niko Kiirala * Jean-Rene Reinhard - * + * * Copyright (C) 2007 authors * * Released under GNU GPL, read the file 'COPYING' for more information @@ -26,7 +26,7 @@ typedef unsigned int guint32; namespace Inkscape { namespace Filters { - + class FilterDiffuseLighting : public FilterPrimitive { public: FilterDiffuseLighting(); @@ -54,7 +54,7 @@ private: } /* namespace Filters */ } /* namespace Inkscape */ -#endif /* __NR_FILTER_DIFFUSELIGHTING_H__ */ +#endif /* SEEN_NR_FILTER_DIFFUSELIGHTING_H */ /* Local Variables: mode:c++ -- cgit v1.2.3 From 7aa553434d750e5862c368a23b6e544cd7257a14 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 14:13:53 +0300 Subject: update a comment and remove trail space --- src/display/nr-filter-primitive.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/display/nr-filter-primitive.h b/src/display/nr-filter-primitive.h index 4b7577159..a1339cc6c 100644 --- a/src/display/nr-filter-primitive.h +++ b/src/display/nr-filter-primitive.h @@ -69,7 +69,7 @@ public: // returns cache score factor, reflecting the cost of rendering this filter // this should return how many times slower this primitive is that normal rendering virtual double complexity(Geom::Affine const &/*ctm*/) { return 1.0; } - + virtual bool uses_background() { if (_input == NR_FILTER_BACKGROUNDIMAGE || _input == NR_FILTER_BACKGROUNDALPHA) { return true; @@ -138,10 +138,7 @@ protected: } /* namespace Filters */ } /* namespace Inkscape */ - - - -#endif /* __NR_FILTER_PRIMITIVE_H__ */ +#endif /* SEEN_NR_FILTER_PRIMITIVE_H */ /* Local Variables: mode:c++ -- cgit v1.2.3 From f92314219dd24eb0b9df0399e2b8d6e4d2ef13ad Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 14:24:03 +0300 Subject: refactoring --- src/display/drawing-text.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/display/drawing-text.cpp b/src/display/drawing-text.cpp index 21af7b200..484fcaa43 100644 --- a/src/display/drawing-text.cpp +++ b/src/display/drawing-text.cpp @@ -685,11 +685,7 @@ void DrawingText::_clipItem(DrawingContext &dc, Geom::IntRect const &/*area*/) DrawingItem * DrawingText::_pickItem(Geom::Point const &p, double delta, unsigned flags) { - DrawingItem *picked = DrawingGroup::_pickItem(p, delta, flags); - if (picked) { - return this; - } - return NULL; + return DrawingGroup::_pickItem(p, delta, flags) ? this : NULL; } bool -- cgit v1.2.3 From edc50717a69219de17a81757f2542aaa66e24814 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 14:26:48 +0300 Subject: remove trailing space --- src/display/drawing-text.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/display/drawing-text.cpp b/src/display/drawing-text.cpp index 484fcaa43..3f6b5b34a 100644 --- a/src/display/drawing-text.cpp +++ b/src/display/drawing-text.cpp @@ -91,12 +91,11 @@ unsigned DrawingGlyphs::_updateItem(Geom::IntRect const &/*area*/, UpdateContext if (_transform) { scale_bigbox /= _transform->descrim(); } - /* Because there can be text decorations the bounding box must correspond in Y to a little above the glyph's ascend and a little below its descend. This leaves room for overline and underline. The left and right sides - come from the glyph's bounding box. Note that the initial direction of ascender is positive down in Y, and - this flips after the transform is applied. So change the sign on descender. 1.1 provides a little extra space + come from the glyph's bounding box. Note that the initial direction of ascender is positive down in Y, and + this flips after the transform is applied. So change the sign on descender. 1.1 provides a little extra space above and below the max/min y positions of the letters to place the text decorations.*/ Geom::Rect b; @@ -129,10 +128,10 @@ unsigned DrawingGlyphs::_updateItem(Geom::IntRect const &/*area*/, UpdateContext Geom::Rect pbigbox(Geom::Point(0.0, _asc*scale_bigbox*0.66),Geom::Point(_width*scale_bigbox, 0.0)); pb = pbigbox * ctx.ctm; } - + #if 0 /* FIXME if this is commented out then not even an approximation of pick on decorations */ - /* adjust the pick box up or down to include the decorations. + /* adjust the pick box up or down to include the decorations. This is only approximate since at this point we don't know how wide that line is, if it has an unusual offset, and so forth. The selection point is set at what is roughly the center of the decoration (vertically) for the wide ones, like wavy and double line. @@ -146,7 +145,7 @@ unsigned DrawingGlyphs::_updateItem(Geom::IntRect const &/*area*/, UpdateContext Geom::Rect padjbox(Geom::Point(0.0, top),Geom::Point(_width*scale_bigbox, bot)); pb.unionWith(padjbox * ctx.ctm); } -#endif +#endif if (ggroup->_nrstyle.stroke.type != NRStyle::PAINT_NONE) { // this expands the selection box for cases where the stroke is "thick" @@ -263,8 +262,8 @@ DrawingText::_updateItem(Geom::IntRect const &area, UpdateContext const &ctx, un void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphase, Geom::Point const &p1, Geom::Point const &p2, double thickness) { double wave[16]={ - 0.000000, 0.382499, 0.706825, 0.923651, 1.000000, 0.923651, 0.706825, 0.382499, - 0.000000, -0.382499, -0.706825, -0.923651, -1.000000, -0.923651, -0.706825, -0.382499, + 0.000000, 0.382499, 0.706825, 0.923651, 1.000000, 0.923651, 0.706825, 0.382499, + 0.000000, -0.382499, -0.706825, -0.923651, -1.000000, -0.923651, -0.706825, -0.382499, }; int dashes[16]={ 8, 7, 6, 5, @@ -283,7 +282,7 @@ void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphas /* For most spans draw the last little bit right to p2 or even a little beyond. This allows decoration continuity within the line, and does not step outside the clip box off the end - For the first/last section on the line though, stay well clear of the edge, or when the + For the first/last section on the line though, stay well clear of the edge, or when the text is dragged it may "spray" pixels. */ /* snap to nearest step in X */ @@ -329,7 +328,7 @@ void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphas } i = 0; // once in phase, it stays in phase } - } + } else if(_nrstyle.text_decoration_style & TEXT_DECORATION_STYLE_DASHED){ Geom::Point pv = ps; while(1){ @@ -354,7 +353,7 @@ void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphas } i = 0; // once in phase, it stays in phase } - } + } else if(_nrstyle.text_decoration_style & TEXT_DECORATION_STYLE_WAVY){ double amp = vextent/10.0; double x = ps[Geom::X]; @@ -375,10 +374,10 @@ void DrawingText::decorateStyle(DrawingContext &dc, double vextent, double xphas if(x <= ps[Geom::X])break; } dc.closePath(); - } + } else { // TEXT_DECORATION_STYLE_SOLID, also default in case it was not set for some reason dc.rectangle( Geom::Rect(ps + poff, pf - poff)); - } + } } /* returns scaled line thickness */ @@ -629,7 +628,7 @@ unsigned DrawingText::_renderItem(DrawingContext &dc, Geom::IntRect const &/*are { Inkscape::DrawingContext::Save save(dc); dc.transform(_ctm); // Needed so that fill pattern rotates with text - + if (has_td_fill && fill_first) { _nrstyle.applyTextDecorationFill(dc); dc.fillPreserve(); -- cgit v1.2.3 From bdeb8b1e71b0a745bba857a6452c25bcc7d502a1 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 16:09:15 +0300 Subject: Optimize and remove trailing space. --- src/display/nr-filter-blend.cpp | 29 ++++++++++++++++------------- src/display/nr-filter-blend.h | 8 +++++--- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/display/nr-filter-blend.cpp b/src/display/nr-filter-blend.cpp index d0db6b42e..6cecb8abc 100644 --- a/src/display/nr-filter-blend.cpp +++ b/src/display/nr-filter-blend.cpp @@ -3,7 +3,7 @@ *//* * "This filter composites two objects together using commonly used * imaging software blending modes. It performs a pixel-wise combination - * of two input images." + * of two input images." * http://www.w3.org/TR/SVG11/filters.html#feBlend * * Authors: @@ -32,7 +32,18 @@ namespace Inkscape { namespace Filters { -FilterBlend::FilterBlend() +const std::set FilterBlend::_valid_modes { + BLEND_NORMAL, BLEND_MULTIPLY, + BLEND_SCREEN, BLEND_DARKEN, + BLEND_LIGHTEN, BLEND_OVERLAY, + BLEND_COLORDODGE, BLEND_COLORBURN, + BLEND_HARDLIGHT, BLEND_SOFTLIGHT, + BLEND_DIFFERENCE, BLEND_EXCLUSION, + BLEND_HUE, BLEND_SATURATION, + BLEND_COLOR, BLEND_LUMINOSITY + }; + +FilterBlend::FilterBlend() : _blend_mode(BLEND_NORMAL), _input2(NR_FILTER_SLOT_NOT_SET) {} @@ -85,7 +96,7 @@ void FilterBlend::render_cairo(FilterSlot &slot) cairo_set_operator(out_ct, CAIRO_OPERATOR_LIGHTEN); break; // New in CSS Compositing and Blending Level 1 - case BLEND_OVERLAY: + case BLEND_OVERLAY: cairo_set_operator(out_ct, CAIRO_OPERATOR_OVERLAY); break; case BLEND_COLORDODGE: @@ -106,7 +117,7 @@ void FilterBlend::render_cairo(FilterSlot &slot) case BLEND_EXCLUSION: cairo_set_operator(out_ct, CAIRO_OPERATOR_EXCLUSION); break; - case BLEND_HUE: + case BLEND_HUE: cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_HUE); break; case BLEND_SATURATION: @@ -164,15 +175,7 @@ void FilterBlend::set_input(int input, int slot) { } void FilterBlend::set_mode(FilterBlendMode mode) { - if (mode == BLEND_NORMAL || mode == BLEND_MULTIPLY || - mode == BLEND_SCREEN || mode == BLEND_DARKEN || - mode == BLEND_LIGHTEN || mode == BLEND_OVERLAY || - mode == BLEND_COLORDODGE || mode == BLEND_COLORBURN || - mode == BLEND_HARDLIGHT || mode == BLEND_SOFTLIGHT || - mode == BLEND_DIFFERENCE || mode == BLEND_EXCLUSION || - mode == BLEND_HUE || mode == BLEND_SATURATION || - mode == BLEND_COLOR || mode == BLEND_LUMINOSITY - ) + if (_valid_modes.count(mode)) { _blend_mode = mode; } diff --git a/src/display/nr-filter-blend.h b/src/display/nr-filter-blend.h index 30c9d6725..5b1295c88 100644 --- a/src/display/nr-filter-blend.h +++ b/src/display/nr-filter-blend.h @@ -6,7 +6,7 @@ * * "This filter composites two objects together using commonly used * imaging software blending modes. It performs a pixel-wise combination - * of two input images." + * of two input images." * http://www.w3.org/TR/SVG11/filters.html#feBlend * * Authors: @@ -16,6 +16,7 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ +#include #include "display/nr-filter-primitive.h" @@ -29,14 +30,14 @@ enum FilterBlendMode { BLEND_DARKEN, BLEND_LIGHTEN, // New in CSS Compositing and Blending Level 1 - BLEND_OVERLAY, + BLEND_OVERLAY, BLEND_COLORDODGE, BLEND_COLORBURN, BLEND_HARDLIGHT, BLEND_SOFTLIGHT, BLEND_DIFFERENCE, BLEND_EXCLUSION, - BLEND_HUE, + BLEND_HUE, BLEND_SATURATION, BLEND_COLOR, BLEND_LUMINOSITY, @@ -59,6 +60,7 @@ public: void set_mode(FilterBlendMode mode); private: + static const std::set _valid_modes; FilterBlendMode _blend_mode; int _input2; }; -- cgit v1.2.3 From dc26eee0056fa9e6d20923bba54853d91280810a Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 17:16:02 +0300 Subject: Refactoring. --- src/display/nr-filter-blend.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/display/nr-filter-blend.cpp b/src/display/nr-filter-blend.cpp index 6cecb8abc..66c103af8 100644 --- a/src/display/nr-filter-blend.cpp +++ b/src/display/nr-filter-blend.cpp @@ -156,13 +156,8 @@ double FilterBlend::complexity(Geom::Affine const &) bool FilterBlend::uses_background() { - if (_input == NR_FILTER_BACKGROUNDIMAGE || _input == NR_FILTER_BACKGROUNDALPHA || - _input2 == NR_FILTER_BACKGROUNDIMAGE || _input2 == NR_FILTER_BACKGROUNDALPHA) - { - return true; - } else { - return false; - } + return (_input == NR_FILTER_BACKGROUNDIMAGE || _input == NR_FILTER_BACKGROUNDALPHA || + _input2 == NR_FILTER_BACKGROUNDIMAGE || _input2 == NR_FILTER_BACKGROUNDALPHA); } void FilterBlend::set_input(int slot) { -- cgit v1.2.3 From df19b8262c29897e3d3a9871592b57e7390818d0 Mon Sep 17 00:00:00 2001 From: Shlomi Fish Date: Fri, 6 Oct 2017 17:39:04 +0300 Subject: Refactoring: avoid duplicate code. --- src/display/nr-filter-blend.cpp | 95 ++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/src/display/nr-filter-blend.cpp b/src/display/nr-filter-blend.cpp index 66c103af8..49dfc7ec4 100644 --- a/src/display/nr-filter-blend.cpp +++ b/src/display/nr-filter-blend.cpp @@ -55,6 +55,47 @@ FilterPrimitive * FilterBlend::create() { FilterBlend::~FilterBlend() {} +static inline cairo_operator_t get_cairo_op(FilterBlendMode _blend_mode) +{ + switch (_blend_mode) { + case BLEND_MULTIPLY: + return CAIRO_OPERATOR_MULTIPLY; + case BLEND_SCREEN: + return CAIRO_OPERATOR_SCREEN; + case BLEND_DARKEN: + return CAIRO_OPERATOR_DARKEN; + case BLEND_LIGHTEN: + return CAIRO_OPERATOR_LIGHTEN; + // New in CSS Compositing and Blending Level 1 + case BLEND_OVERLAY: + return CAIRO_OPERATOR_OVERLAY; + case BLEND_COLORDODGE: + return CAIRO_OPERATOR_COLOR_DODGE; + case BLEND_COLORBURN: + return CAIRO_OPERATOR_COLOR_BURN; + case BLEND_HARDLIGHT: + return CAIRO_OPERATOR_HARD_LIGHT; + case BLEND_SOFTLIGHT: + return CAIRO_OPERATOR_SOFT_LIGHT; + case BLEND_DIFFERENCE: + return CAIRO_OPERATOR_DIFFERENCE; + case BLEND_EXCLUSION: + return CAIRO_OPERATOR_EXCLUSION; + case BLEND_HUE: + return CAIRO_OPERATOR_HSL_HUE; + case BLEND_SATURATION: + return CAIRO_OPERATOR_HSL_SATURATION; + case BLEND_COLOR: + return CAIRO_OPERATOR_HSL_COLOR; + case BLEND_LUMINOSITY: + return CAIRO_OPERATOR_HSL_LUMINOSITY; + + case BLEND_NORMAL: + default: + return CAIRO_OPERATOR_OVER; + } +} + void FilterBlend::render_cairo(FilterSlot &slot) { cairo_surface_t *input1 = slot.getcairo(_input); @@ -82,59 +123,7 @@ void FilterBlend::render_cairo(FilterSlot &slot) // All of the blend modes are implemented in Cairo as of 1.10. // For a detailed description, see: // http://cairographics.org/operators/ - switch (_blend_mode) { - case BLEND_MULTIPLY: - cairo_set_operator(out_ct, CAIRO_OPERATOR_MULTIPLY); - break; - case BLEND_SCREEN: - cairo_set_operator(out_ct, CAIRO_OPERATOR_SCREEN); - break; - case BLEND_DARKEN: - cairo_set_operator(out_ct, CAIRO_OPERATOR_DARKEN); - break; - case BLEND_LIGHTEN: - cairo_set_operator(out_ct, CAIRO_OPERATOR_LIGHTEN); - break; - // New in CSS Compositing and Blending Level 1 - case BLEND_OVERLAY: - cairo_set_operator(out_ct, CAIRO_OPERATOR_OVERLAY); - break; - case BLEND_COLORDODGE: - cairo_set_operator(out_ct, CAIRO_OPERATOR_COLOR_DODGE); - break; - case BLEND_COLORBURN: - cairo_set_operator(out_ct, CAIRO_OPERATOR_COLOR_BURN); - break; - case BLEND_HARDLIGHT: - cairo_set_operator(out_ct, CAIRO_OPERATOR_HARD_LIGHT); - break; - case BLEND_SOFTLIGHT: - cairo_set_operator(out_ct, CAIRO_OPERATOR_SOFT_LIGHT); - break; - case BLEND_DIFFERENCE: - cairo_set_operator(out_ct, CAIRO_OPERATOR_DIFFERENCE); - break; - case BLEND_EXCLUSION: - cairo_set_operator(out_ct, CAIRO_OPERATOR_EXCLUSION); - break; - case BLEND_HUE: - cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_HUE); - break; - case BLEND_SATURATION: - cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_SATURATION); - break; - case BLEND_COLOR: - cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_COLOR); - break; - case BLEND_LUMINOSITY: - cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_LUMINOSITY); - break; - - case BLEND_NORMAL: - default: - cairo_set_operator(out_ct, CAIRO_OPERATOR_OVER); - break; - } + cairo_set_operator(out_ct, get_cairo_op(_blend_mode)); cairo_paint(out_ct); cairo_destroy(out_ct); -- cgit v1.2.3 From 24e870081a4213b3eda28d9f044fbe51520676f3 Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Fri, 6 Oct 2017 19:34:00 +0200 Subject: Fix for bug #412928 Allow clip/mask set inverse --- src/live_effects/lpe-powerclip.cpp | 133 +++++++++++++++++------------------- src/live_effects/lpe-powerclip.h | 12 ++-- src/live_effects/lpe-powermask.cpp | 135 +++++++++++++------------------------ src/live_effects/lpe-powermask.h | 11 ++- 4 files changed, 117 insertions(+), 174 deletions(-) diff --git a/src/live_effects/lpe-powerclip.cpp b/src/live_effects/lpe-powerclip.cpp index 43faa35e0..40a9cdbfb 100644 --- a/src/live_effects/lpe-powerclip.cpp +++ b/src/live_effects/lpe-powerclip.cpp @@ -4,7 +4,6 @@ #include "live_effects/lpe-powerclip.h" #include <2geom/path-intersection.h> #include <2geom/intersection-graph.h> -#include "display/drawing-item.h" #include "display/curve.h" #include "helper/geom.h" #include "sp-clippath.h" @@ -13,6 +12,9 @@ #include "sp-item-group.h" #include "ui/tools-switch.h" #include "path-chemistry.h" +#include "uri.h" +#include "extract-uri.h" +#include // TODO due to internal breakage in glibmm headers, this must be last: #include @@ -22,19 +24,17 @@ namespace LivePathEffect { LPEPowerClip::LPEPowerClip(LivePathEffectObject *lpeobject) : Effect(lpeobject), + hide_clip(_("Hide clip"), _("Hide clip"), "hide_clip", &wr, this, false), + is_inverse("Store the last inverse apply", "", "is_inverse", &wr, this, "false", false), + uri("Store the uri of clip", "", "uri", &wr, this, "false", false), inverse(_("Inverse clip"), _("Inverse clip"), "inverse", &wr, this, false), - flatten(_("Flatten clip"), _("Flatten clip, see fill rule once convert to paths"), "flatten", &wr, this, false), - //loock(_("Lock clip"), _("Lock clip"), "lock", &wr, this, false), - //tooltip empty to no show in default param set - is_inverse("Store the last inverse apply", "", "is_inverse", &wr, this, "false", false) + flatten(_("Flatten clip"), _("Flatten clip, see fill rule once convert to paths"), "flatten", &wr, this, false) { + registerParameter(&uri); registerParameter(&inverse); registerParameter(&flatten); + registerParameter(&hide_clip); registerParameter(&is_inverse); - //registerParameter(&lock); - //lock.param_setValue(false); - is_clip = false; - hide_clip = false; convert_shapes = false; } @@ -42,22 +42,48 @@ LPEPowerClip::~LPEPowerClip() {} void LPEPowerClip::doBeforeEffect (SPLPEItem const* lpeitem){ - original_bbox(lpeitem); - SPClipPath *clip_path = SP_ITEM(lpeitem)->clip_ref->getObject(); - Geom::Point topleft = Geom::Point(boundingbox_X.min() - 5,boundingbox_Y.max() + 5); - Geom::Point topright = Geom::Point(boundingbox_X.max() + 5,boundingbox_Y.max() + 5); - Geom::Point bottomright = Geom::Point(boundingbox_X.max() + 5,boundingbox_Y.min() - 5); - Geom::Point bottomleft = Geom::Point(boundingbox_X.min() - 5,boundingbox_Y.min() - 5); - clip_box.clear(); - clip_box.start(topleft); - clip_box.appendNew(topright); - clip_box.appendNew(bottomright); - clip_box.appendNew(bottomleft); - clip_box.close(); - //clip_path *= sp_lpe_item->i2dt_affine(); + SPObject * clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject(); + if(hide_clip && clip_path) { + SP_ITEM(sp_lpe_item)->clip_ref->detach(); + } else if (!hide_clip && !clip_path && uri.param_getSVGValue()) { + try { + SP_ITEM(sp_lpe_item)->clip_ref->attach(Inkscape::URI(uri.param_getSVGValue())); + } catch (Inkscape::BadURIException &e) { + g_warning("%s", e.what()); + SP_ITEM(sp_lpe_item)->clip_ref->detach(); + } + } + clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject(); if (clip_path) { - is_clip = true; - const Glib::ustring uri = (Glib::ustring)sp_lpe_item->getRepr()->attribute("clip-path"); + uri.param_setValue(Glib::ustring(extract_uri(sp_lpe_item->getRepr()->attribute("clip-path"))), true); + SP_ITEM(sp_lpe_item)->clip_ref->detach(); + Geom::OptRect bbox = sp_lpe_item->visualBounds(); + if(!bbox) { + return; + } + if (uri.param_getSVGValue()) { + try { + SP_ITEM(sp_lpe_item)->clip_ref->attach(Inkscape::URI(uri.param_getSVGValue())); + } catch (Inkscape::BadURIException &e) { + g_warning("%s", e.what()); + SP_ITEM(sp_lpe_item)->clip_ref->detach(); + } + } else { + SP_ITEM(sp_lpe_item)->clip_ref->detach(); + } + Geom::Rect bboxrect = (*bbox); + bboxrect.expandBy(1); + Geom::Point topleft = bboxrect.corner(0); + Geom::Point topright = bboxrect.corner(1); + Geom::Point bottomright = bboxrect.corner(2); + Geom::Point bottomleft = bboxrect.corner(3); + clip_box.clear(); + clip_box.start(topleft); + clip_box.appendNew(topright); + clip_box.appendNew(bottomright); + clip_box.appendNew(bottomleft); + clip_box.close(); + //clip_box *= sp_lpe_item->i2dt_affine(); std::vector clip_path_list = clip_path->childList(true); for ( std::vector::const_iterator iter=clip_path_list.begin();iter!=clip_path_list.end();++iter) { SPObject * clip_data = *iter; @@ -133,8 +159,6 @@ LPEPowerClip::doBeforeEffect (SPLPEItem const* lpeitem){ removeInverse(SP_ITEM(clip_data)); } } - } else { - is_clip = false; } } @@ -216,36 +240,6 @@ LPEPowerClip::removeInverse (SPItem * clip_data){ } } -void -LPEPowerClip::toggleClip() { - SPItem * item = SP_ITEM(sp_lpe_item); - if (item) { - SPClipPath *clip_path = item->clip_ref->getObject(); - if (clip_path) { - hide_clip = !hide_clip; - if(hide_clip) { - SPItemView *v; - for (v = item->display; v != NULL; v = v->next) { - clip_path->hide(v->arenaitem->key()); - } - } else { - Geom::OptRect bbox = item->geometricBounds(); - for (SPItemView *v = item->display; v != NULL; v = v->next) { - if (!v->arenaitem->key()) { - v->arenaitem->setKey(SPItem::display_key_new(3)); - } - Inkscape::DrawingItem *ai = clip_path->show( - v->arenaitem->drawing(), - v->arenaitem->key()); - v->arenaitem->setClip(ai); - clip_path->setBBox(v->arenaitem->key(), bbox); - } - } - clip_path->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } - } -} - void LPEPowerClip::convertShapes() { convert_shapes = true; @@ -256,7 +250,7 @@ Gtk::Widget * LPEPowerClip::newWidget() { // use manage here, because after deletion of Effect object, others might still be pointing to this widget. - Gtk::VBox * vbox = Gtk::manage( new Gtk::VBox(Effect::newWidget()) ); + Gtk::VBox * vbox = Gtk::manage( new Gtk::VBox(Effect::newWidget())); vbox->set_border_width(5); vbox->set_homogeneous(false); @@ -281,17 +275,11 @@ LPEPowerClip::newWidget() ++it; } Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false,0)); - Gtk::Button * toggle_button = Gtk::manage(new Gtk::Button(Glib::ustring(_("Toggle clip visibiliy")))); - toggle_button->signal_clicked().connect(sigc::mem_fun (*this,&LPEPowerClip::toggleClip)); - toggle_button->set_size_request(180,30); - vbox->pack_start(*hbox, true,true,2); - hbox->pack_start(*toggle_button, false, false,2); - Gtk::HBox * hbox2 = Gtk::manage(new Gtk::HBox(false,0)); Gtk::Button * topaths_button = Gtk::manage(new Gtk::Button(Glib::ustring(_("Convert clips to paths, undoable")))); topaths_button->signal_clicked().connect(sigc::mem_fun (*this,&LPEPowerClip::convertShapes)); topaths_button->set_size_request(220,30); - vbox->pack_start(*hbox2, true,true,2); - hbox2->pack_start(*topaths_button, false, false,2); + hbox->pack_start(*topaths_button, false, false,2); + vbox->pack_start(*hbox, true,true,2); return dynamic_cast(vbox); } @@ -301,7 +289,6 @@ LPEPowerClip::doOnRemove (SPLPEItem const* /*lpeitem*/) SPClipPath *clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject(); if(!keep_paths) { if(clip_path) { - is_clip = true; std::vector clip_path_list = clip_path->childList(true); for ( std::vector::const_iterator iter=clip_path_list.begin();iter!=clip_path_list.end();++iter) { SPObject * clip_data = *iter; @@ -313,7 +300,6 @@ LPEPowerClip::doOnRemove (SPLPEItem const* /*lpeitem*/) } else { if (flatten && clip_path) { clip_path->deleteObject(); - sp_lpe_item->getRepr()->setAttribute("clip-path", NULL); } } } @@ -321,7 +307,7 @@ LPEPowerClip::doOnRemove (SPLPEItem const* /*lpeitem*/) Geom::PathVector LPEPowerClip::doEffect_path(Geom::PathVector const & path_in){ Geom::PathVector path_out = pathv_to_linear_and_cubic_beziers(path_in); - if (flatten && is_clip && isVisible()) { + if (!hide_clip && flatten && isVisible()) { SPClipPath *clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject(); if(clip_path) { std::vector clip_path_list = clip_path->childList(true); @@ -330,6 +316,7 @@ LPEPowerClip::doEffect_path(Geom::PathVector const & path_in){ flattenClip(SP_ITEM(clip_data), path_out); } } + SP_ITEM(sp_lpe_item)->clip_ref->detach(); } return path_out; } @@ -346,13 +333,13 @@ LPEPowerClip::doOnVisibilityToggled(SPLPEItem const* lpeitem) //{ // SPDocument * doc = SP_ACTIVE_DOCUMENT; // SPClipPath *clip_path = SP_ITEM(sp_lpe_item)->clip_ref->getObject(); -// if (is_clip && lock) { +// if (clip_path && lock) { // std::vector clip_path_list = clip_path->childList(true); // Glib::ustring clip_id = (Glib::ustring)clip_path->getId(); // Glib::ustring box_id = clip_id + (Glib::ustring)"_box"; // for ( std::vector::const_iterator iter=clip_path_list.begin();iter!=clip_path_list.end();++iter) { // SPItem * clip_data = SP_ITEM(*iter); -// if(inverse && is_clip && lock) { +// if(inverse && lock) { // removeInverse(clip_data); // } // if (lock) { @@ -371,7 +358,7 @@ LPEPowerClip::doOnVisibilityToggled(SPLPEItem const* lpeitem) //// } //// } // } -// if(inverse && is_clip && lock) { +// if(inverse && lock) { // doBeforeEffect(sp_lpe_item); // } // } @@ -381,8 +368,8 @@ LPEPowerClip::doOnVisibilityToggled(SPLPEItem const* lpeitem) // Parameter * param = *it; // param->param_transform_multiply(postmul, set); // } -// toggleClip(); -// toggleClip(); +// toggleClipVisibility(); +// toggleClipVisibility(); //} void diff --git a/src/live_effects/lpe-powerclip.h b/src/live_effects/lpe-powerclip.h index ce46b560a..38485b798 100644 --- a/src/live_effects/lpe-powerclip.h +++ b/src/live_effects/lpe-powerclip.h @@ -9,12 +9,11 @@ #include "live_effects/effect.h" #include "live_effects/parameter/hidden.h" -#include "live_effects/lpegroupbbox.h" namespace Inkscape { namespace LivePathEffect { -class LPEPowerClip : public Effect, GroupBBoxEffect { +class LPEPowerClip : public Effect { public: LPEPowerClip(LivePathEffectObject *lpeobject); virtual ~LPEPowerClip(); @@ -24,22 +23,19 @@ public: virtual Gtk::Widget * newWidget(); //virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual void doOnVisibilityToggled(SPLPEItem const* lpeitem); - void toggleClip(); void addInverse (SPItem * clip_data); void removeInverse (SPItem * clip_data); void flattenClip(SPItem * clip_data, Geom::PathVector &path_in); void convertShapes(); private: + HiddenParam is_inverse; + HiddenParam uri; BoolParam inverse; BoolParam flatten; - // BoolParam lock; - HiddenParam is_inverse; + BoolParam hide_clip; Geom::Path clip_box; Geom::Affine base; - bool is_clip; bool convert_shapes; - bool hide_clip; - bool previous_hide_clip; }; } //namespace LivePathEffect diff --git a/src/live_effects/lpe-powermask.cpp b/src/live_effects/lpe-powermask.cpp index 434ad6dd4..05510f258 100644 --- a/src/live_effects/lpe-powermask.cpp +++ b/src/live_effects/lpe-powermask.cpp @@ -4,7 +4,6 @@ #include "live_effects/lpe-powermask.h" #include <2geom/path-intersection.h> #include <2geom/intersection-graph.h> -#include "display/drawing-item.h" #include "display/curve.h" #include "helper/geom.h" #include "sp-mask.h" @@ -16,6 +15,9 @@ #include "svg/svg.h" #include "ui/tools-switch.h" #include "path-chemistry.h" +#include "uri.h" +#include "extract-uri.h" +#include // TODO due to internal breakage in glibmm headers, this must be last: #include @@ -25,40 +27,68 @@ namespace LivePathEffect { LPEPowerMask::LPEPowerMask(LivePathEffectObject *lpeobject) : Effect(lpeobject), + uri("Store the uri of mask", "", "uri", &wr, this, "false", false), invert(_("Invert mask"), _("Invert mask"), "invert", &wr, this, false), wrap(_("Wrap mask data"), _("Wrap mask data allowing previous filters"), "wrap", &wr, this, false), + hide_mask(_("Hide mask"), _("Hide mask"), "hide_mask", &wr, this, false), background(_("Add background to mask"), _("Add background to mask"), "background", &wr, this, false), - //lock(_("Lock mask"), _("Lock mask"), "lock", &wr, this, false), background_style(_("Background Style"), _("CSS to background"), "background_style", &wr, this,"fill:#ffffff;opacity:1;") - { + registerParameter(&uri); registerParameter(&invert); registerParameter(&wrap); - //registerParameter(&lock); + registerParameter(&hide_mask); registerParameter(&background); registerParameter(&background_style); //lock.param_setValue(false); background_style.param_hide_canvas_text(); - hide_mask = false; } LPEPowerMask::~LPEPowerMask() {} void LPEPowerMask::doBeforeEffect (SPLPEItem const* lpeitem){ - original_bbox(lpeitem); - SPMask *mask = SP_ITEM(lpeitem)->mask_ref->getObject(); - Geom::Point topleft = Geom::Point(boundingbox_X.min() - 5,boundingbox_Y.max() + 5); - Geom::Point topright = Geom::Point(boundingbox_X.max() + 5,boundingbox_Y.max() + 5); - Geom::Point bottomright = Geom::Point(boundingbox_X.max() + 5,boundingbox_Y.min() - 5); - Geom::Point bottomleft = Geom::Point(boundingbox_X.min() - 5,boundingbox_Y.min() - 5); - mask_box.clear(); - mask_box.start(topleft); - mask_box.appendNew(topright); - mask_box.appendNew(bottomright); - mask_box.appendNew(bottomleft); - mask_box.close(); - if(mask) { + SPObject * mask = SP_ITEM(sp_lpe_item)->mask_ref->getObject(); + if(hide_mask && mask) { + SP_ITEM(sp_lpe_item)->mask_ref->detach(); + } else if (!hide_mask && !mask && uri.param_getSVGValue()) { + try { + SP_ITEM(sp_lpe_item)->mask_ref->attach(Inkscape::URI(uri.param_getSVGValue())); + } catch (Inkscape::BadURIException &e) { + g_warning("%s", e.what()); + SP_ITEM(sp_lpe_item)->mask_ref->detach(); + } + } + mask = SP_ITEM(sp_lpe_item)->mask_ref->getObject(); + if (mask) { + uri.param_setValue(Glib::ustring(extract_uri(sp_lpe_item->getRepr()->attribute("mask"))), true); + SP_ITEM(sp_lpe_item)->mask_ref->detach(); + Geom::OptRect bbox = sp_lpe_item->visualBounds(); + if(!bbox) { + return; + } + if (uri.param_getSVGValue()) { + try { + SP_ITEM(sp_lpe_item)->mask_ref->attach(Inkscape::URI(uri.param_getSVGValue())); + } catch (Inkscape::BadURIException &e) { + g_warning("%s", e.what()); + SP_ITEM(sp_lpe_item)->mask_ref->detach(); + } + } else { + SP_ITEM(sp_lpe_item)->mask_ref->detach(); + } + Geom::Rect bboxrect = (*bbox); + bboxrect.expandBy(1); + Geom::Point topleft = bboxrect.corner(0); + Geom::Point topright = bboxrect.corner(1); + Geom::Point bottomright = bboxrect.corner(2); + Geom::Point bottomleft = bboxrect.corner(3); + mask_box.clear(); + mask_box.start(topleft); + mask_box.appendNew(topright); + mask_box.appendNew(bottomright); + mask_box.appendNew(bottomleft); + mask_box.close(); setMask(); } } @@ -225,37 +255,6 @@ LPEPowerMask::doEffect (SPCurve * curve) { } -void -LPEPowerMask::toggleMask() { - SPItem * item = SP_ITEM(sp_lpe_item); - if (item) { - SPMask *mask = item->mask_ref->getObject(); - if (mask) { - hide_mask = !hide_mask; - if(hide_mask) { - SPItemView *v; - for (v = item->display; v != NULL; v = v->next) { - mask->sp_mask_hide(v->arenaitem->key()); - } - } else { - Geom::OptRect bbox = item->geometricBounds(); - for (SPItemView *v = item->display; v != NULL; v = v->next) { - if (!v->arenaitem->key()) { - v->arenaitem->setKey(SPItem::display_key_new(3)); - } - Inkscape::DrawingItem *ai = mask->sp_mask_show( - v->arenaitem->drawing(), - v->arenaitem->key()); - bbox.unionWith(ai->geometricBounds()); - v->arenaitem->setMask(ai); - mask->sp_mask_set_bbox(v->arenaitem->key(), bbox); - } - } - mask->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - } - } -} - //void //LPEPowerMask::transform_multiply(Geom::Affine const& postmul, bool set) //{ @@ -283,44 +282,6 @@ LPEPowerMask::toggleMask() { -Gtk::Widget * -LPEPowerMask::newWidget() -{ - // use manage here, because after deletion of Effect object, others might still be pointing to this widget. - Gtk::VBox * vbox = Gtk::manage( new Gtk::VBox(Effect::newWidget()) ); - - vbox->set_border_width(5); - vbox->set_homogeneous(false); - vbox->set_spacing(6); - - std::vector::iterator it = param_vector.begin(); - while (it != param_vector.end()) { - if ((*it)->widget_is_visible) { - Parameter * param = *it; - Gtk::Widget * widg = dynamic_cast(param->param_newWidget()); - Glib::ustring * tip = param->param_getTooltip(); - if (widg) { - vbox->pack_start(*widg, true, true, 2); - if (tip) { - widg->set_tooltip_text(*tip); - } else { - widg->set_tooltip_text(""); - widg->set_has_tooltip(false); - } - } - } - - ++it; - } - Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false,0)); - Gtk::Button * toggle_button = Gtk::manage(new Gtk::Button(Glib::ustring(_("Toggle mask visibiliy")))); - toggle_button->signal_clicked().connect(sigc::mem_fun (*this,&LPEPowerMask::toggleMask)); - toggle_button->set_size_request(140,30); - vbox->pack_start(*hbox, true,true,2); - hbox->pack_start(*toggle_button, false, false,2); - return dynamic_cast(vbox); -} - void LPEPowerMask::doOnRemove (SPLPEItem const* lpeitem) { diff --git a/src/live_effects/lpe-powermask.h b/src/live_effects/lpe-powermask.h index cd36b3b37..a54424e2f 100644 --- a/src/live_effects/lpe-powermask.h +++ b/src/live_effects/lpe-powermask.h @@ -9,31 +9,30 @@ #include "live_effects/effect.h" #include "live_effects/parameter/text.h" -#include "live_effects/lpegroupbbox.h" +#include "live_effects/parameter/hidden.h" namespace Inkscape { namespace LivePathEffect { -class LPEPowerMask : public Effect, GroupBBoxEffect { +class LPEPowerMask : public Effect { public: LPEPowerMask(LivePathEffectObject *lpeobject); virtual ~LPEPowerMask(); virtual void doBeforeEffect (SPLPEItem const* lpeitem); virtual void doEffect (SPCurve * curve); virtual void doOnRemove (SPLPEItem const* /*lpeitem*/); - virtual Gtk::Widget * newWidget(); virtual void doOnVisibilityToggled(SPLPEItem const* lpeitem); //virtual void transform_multiply(Geom::Affine const& postmul, bool set); - void toggleMask(); + void toggleMaskVisibility(); void setMask(); private: + HiddenParam uri; BoolParam invert; BoolParam wrap; + BoolParam hide_mask; BoolParam background; - //BoolParam lock; TextParam background_style; Geom::Path mask_box; - bool hide_mask; }; } //namespace LivePathEffect -- cgit v1.2.3 From 88de0880df1cce605c7ccbdf0ffaacd8e7d607c4 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 7 Oct 2017 03:11:27 +0200 Subject: Ignonore Google Tests files by .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 65ff68ac6..29b291f4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ doxygen_warnings.log doxygen/ +gtest/ build share/inkscape share/*/*.h -- cgit v1.2.3 From 08f68b11757735e8d2a218d092a88e8224f35278 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Fri, 6 Oct 2017 20:37:51 +0200 Subject: Fix a few draw-geometry-* icons For some reason the actual drawing was translated well outside the document borders, making the icons effectively invisible. --- share/icons/draw-geometry-angle-bisector.svg | 81 +++++++++++++---- .../draw-geometry-circle-from-three-points.svg | 101 +++++++++++++++++---- share/icons/draw-geometry-inactive.svg | 81 +++++++++++++---- share/icons/draw-geometry-line-parallel.svg | 84 +++++++++++++---- 4 files changed, 276 insertions(+), 71 deletions(-) diff --git a/share/icons/draw-geometry-angle-bisector.svg b/share/icons/draw-geometry-angle-bisector.svg index 658a65cad..653fea952 100644 --- a/share/icons/draw-geometry-angle-bisector.svg +++ b/share/icons/draw-geometry-angle-bisector.svg @@ -1,31 +1,78 @@ + version="1.1" + sodipodi:docname="draw-geometry-angle-bisector.svg" + inkscape:version="0.92+devel (525c6c0c7e, 2017-10-06)"> + + + + image/svg+xml + + + + - - - - - - - - + inkscape:document-rotation="0" + inkscape:snap-nodes="false" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:zoom="17.101737" + inkscape:cx="6.73473" + inkscape:cy="4.0929479" + inkscape:window-width="1366" + inkscape:window-height="704" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + + + + + + + diff --git a/share/icons/draw-geometry-circle-from-three-points.svg b/share/icons/draw-geometry-circle-from-three-points.svg index 44369c964..0222f214d 100644 --- a/share/icons/draw-geometry-circle-from-three-points.svg +++ b/share/icons/draw-geometry-circle-from-three-points.svg @@ -1,33 +1,96 @@ + version="1.1" + sodipodi:docname="draw-geometry-circle-from-three-points.svg" + inkscape:version="0.92+devel (525c6c0c7e, 2017-10-06)"> + + + + image/svg+xml + + + + - - - - - - - - - - + inkscape:document-rotation="0" + inkscape:snap-grids="false" + inkscape:snap-object-midpoints="false" + inkscape:snap-page="true" + inkscape:snap-bbox="true" + inkscape:snap-nodes="false" + inkscape:bbox-nodes="true" + inkscape:bbox-paths="true" + inkscape:zoom="17.381585" + inkscape:cx="6.845203" + inkscape:cy="2.2173247" + inkscape:window-width="1366" + inkscape:window-height="704" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + + + + + + + + + diff --git a/share/icons/draw-geometry-inactive.svg b/share/icons/draw-geometry-inactive.svg index 5dc608ae4..1d948c6d7 100644 --- a/share/icons/draw-geometry-inactive.svg +++ b/share/icons/draw-geometry-inactive.svg @@ -1,32 +1,77 @@ + version="1.1" + sodipodi:docname="draw-geometry-inactive.svg" + inkscape:version="0.92+devel (525c6c0c7e, 2017-10-06)"> + + + + image/svg+xml + + + + - - - - - - - - - + inkscape:document-rotation="0" + inkscape:zoom="20.291667" + inkscape:cx="10.125" + inkscape:cy="12" + inkscape:window-width="1366" + inkscape:window-height="704" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + + + + + + + + diff --git a/share/icons/draw-geometry-line-parallel.svg b/share/icons/draw-geometry-line-parallel.svg index e23d3bb94..c23445a84 100644 --- a/share/icons/draw-geometry-line-parallel.svg +++ b/share/icons/draw-geometry-line-parallel.svg @@ -1,31 +1,81 @@ + version="1.1" + sodipodi:docname="draw-geometry-line-parallel.svg" + inkscape:version="0.92+devel (525c6c0c7e, 2017-10-06)"> + + + + image/svg+xml + + + + - - - - - - - - + inkscape:document-rotation="0" + inkscape:snap-nodes="true" + inkscape:snap-bbox="true" + inkscape:bbox-nodes="false" + inkscape:bbox-paths="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-bbox-edge-midpoints="false" + inkscape:snap-others="false" + inkscape:snap-page="true" + inkscape:object-nodes="false" + inkscape:zoom="32.206391" + inkscape:cx="6.6666632" + inkscape:cy="10.918672" + inkscape:window-width="1366" + inkscape:window-height="704" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + + + + + + + -- cgit v1.2.3 From 8bc47bf27b1cdb5a05a88a0600ad69a2a6bfde46 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sun, 8 Oct 2017 12:35:03 +0200 Subject: Circle3pts LPE: handle overlapping points If two of the three points overlap, just draw the circle having that segment as diameter. This is not rigorous mathematically, but it is a reasonable behavior and avoid a crash when snapping is on. --- src/live_effects/lpe-circle_3pts.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/live_effects/lpe-circle_3pts.cpp b/src/live_effects/lpe-circle_3pts.cpp index 3410b13f2..c49d5ca4d 100644 --- a/src/live_effects/lpe-circle_3pts.cpp +++ b/src/live_effects/lpe-circle_3pts.cpp @@ -40,12 +40,18 @@ static void _circle3(Geom::Point const &A, Geom::Point const &B, Geom::Point con Point v = (B - A).ccw(); Point w = (C - B).ccw(); + double det = -v[0] * w[1] + v[1] * w[0]; - Point F = E - D; - double lambda = 1/det * (-w[1] * F[0] + w[0] * F[1]); + Point M; + if (!v.isZero()) { + Point F = E - D; + double lambda = det == 0 ? 0 : (-w[1] * F[0] + w[0] * F[1]) / det; + M = D + v * lambda; + } else { + M = E; + } - Point M = D + v * lambda; double radius = L2(M - A); Geom::Circle c(M, radius); -- cgit v1.2.3 From f318dbfe434769ab62b4f9d2971de89f1ebffc71 Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Mon, 9 Oct 2017 20:33:01 +0200 Subject: Fixes for transforms in LPE shapes --- src/live_effects/lpe-measure-segments.cpp | 21 +++++++++++++++++---- src/live_effects/lpe-measure-segments.h | 3 ++- src/sp-ellipse.cpp | 16 +++++++++++++--- src/sp-spiral.cpp | 29 +++++++++++++++++++++-------- src/sp-star.cpp | 30 ++++++++++++++++++++++-------- 5 files changed, 75 insertions(+), 24 deletions(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index b929f5154..738990bc0 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -31,6 +31,8 @@ #include "sp-item.h" #include "sp-shape.h" #include "sp-path.h" +#include "sp-star.h" +#include "sp-spiral.h" #include "document.h" #include "document-undo.h" #include @@ -136,6 +138,7 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : helpline_overlap.param_set_range(-999999.0, 999999.0); helpline_overlap.param_set_increments(1, 1); helpline_overlap.param_set_digits(2); + star_ellipse_fix = Geom::identity(); } LPEMeasureSegments::~LPEMeasureSegments() {} @@ -566,7 +569,7 @@ void LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) { SPLPEItem * splpeitem = const_cast(lpeitem); - sp_lpe_item->parent = dynamic_cast(splpeitem->parent); + SPDocument * document = SP_ACTIVE_DOCUMENT; if (!document) { return; @@ -589,12 +592,17 @@ LPEMeasureSegments::doBeforeEffect (SPLPEItem const* lpeitem) } Geom::Point start_stored; Geom::Point end_stored; - Geom::Affine affinetransform = i2anc_affine(SP_OBJECT(lpeitem), SP_OBJECT(document->getRoot())); + Geom::Affine affinetransform = i2anc_affine(SP_OBJECT(lpeitem->parent), SP_OBJECT(document->getRoot())); Geom::PathVector pathvector = pathv_to_linear_and_cubic_beziers(c->get_pathvector()); c->unref(); Geom::Affine writed_transform = Geom::identity(); sp_svg_transform_read(splpeitem->getAttribute("transform"), &writed_transform ); - pathvector *= writed_transform; + if (star_ellipse_fix != Geom::identity()) { + pathvector *= star_ellipse_fix; + star_ellipse_fix = Geom::identity(); + } else { + pathvector *= writed_transform; + } if ((Glib::ustring(format.param_getSVGValue()).empty())) { format.param_setValue(Glib::ustring("{measure}{unit}")); } @@ -819,7 +827,12 @@ LPEMeasureSegments::doOnRemove (SPLPEItem const* /*lpeitem*/) void LPEMeasureSegments::transform_multiply(Geom::Affine const& postmul, bool set) { - sp_lpe_item_update_patheffect(sp_lpe_item, false, false); + SPStar * star = dynamic_cast(sp_lpe_item); + SPSpiral * spiral = dynamic_cast(sp_lpe_item); + if((spiral || star) && !postmul.withoutTranslation().isUniformScale()) { + star_ellipse_fix = postmul; + sp_lpe_item_update_patheffect(sp_lpe_item, false, false); + } } Geom::PathVector diff --git a/src/live_effects/lpe-measure-segments.h b/src/live_effects/lpe-measure-segments.h index 0b4ed5ef7..3b14fb191 100644 --- a/src/live_effects/lpe-measure-segments.h +++ b/src/live_effects/lpe-measure-segments.h @@ -44,7 +44,7 @@ public: virtual void doOnRemove (SPLPEItem const* /*lpeitem*/); virtual void doEffect (SPCurve * curve){}; //stop the chain virtual void doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/); - virtual void transform_multiply(Geom::Affine const& postmul, bool set); + virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in); void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool remove, bool arrows = false); void createTextLabel(Geom::Point pos, size_t counter, double length, Geom::Coord angle, bool remove, bool valid); @@ -79,6 +79,7 @@ private: double anotation_width; double previous_size; double arrow_gap; + Geom::Affine star_ellipse_fix; LPEMeasureSegments(const LPEMeasureSegments &); LPEMeasureSegments &operator=(const LPEMeasureSegments &); diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index c2dca1fc3..bf50128f6 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -17,6 +17,8 @@ #include #include +#include "live_effects/effect.h" + #include <2geom/angle.h> #include <2geom/circle.h> #include <2geom/ellipse.h> @@ -501,13 +503,18 @@ void SPGenericEllipse::set_shape(bool force) Geom::Affine SPGenericEllipse::set_transform(Geom::Affine const &xform) { - // Allow live effects - if (hasPathEffect() && pathEffectsEnabled()) { + if (hasPathEffect() && pathEffectsEnabled() && + (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + { + // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' + // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(xform); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } - /* Calculate ellipse start in parent coords. */ Geom::Point pos(Geom::Point(this->cx.computed, this->cy.computed) * xform); @@ -557,6 +564,9 @@ Geom::Affine SPGenericEllipse::set_transform(Geom::Affine const &xform) // Adjust gradient fill this->adjust_gradient(xform * ret.inverse()); + // Adjust livepatheffect + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return ret; diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index f59fc0720..f35d5e86b 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -14,7 +14,7 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ - +#include "live_effects/effect.h" #include "svg/svg.h" #include "attributes.h" #include <2geom/bezier-utils.h> @@ -429,17 +429,27 @@ void SPSpiral::snappoints(std::vector &p, Inkscape */ Geom::Affine SPSpiral::set_transform(Geom::Affine const &xform) { - // Only set transform with proportional scaling - if (!xform.withoutTranslation().isUniformScale()) { - return xform; - } - - // Allow live effects - if (hasPathEffect() && pathEffectsEnabled()) { + if (hasPathEffect() && pathEffectsEnabled() && + (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + { + // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' + // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(xform); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } + // Only set transform with proportional scaling + if (!xform.withoutTranslation().isUniformScale()) { + // Adjust livepatheffect + if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + } + return xform; + } /* Calculate spiral start in parent coords. */ Geom::Point pos( Geom::Point(this->cx, this->cy) * xform ); @@ -478,6 +488,9 @@ Geom::Affine SPSpiral::set_transform(Geom::Affine const &xform) // Adjust gradient fill this->adjust_gradient(xform * ret.inverse()); + // Adjust livepatheffect + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return ret; diff --git a/src/sp-star.cpp b/src/sp-star.cpp index 5913dde20..ccc8323d4 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include "live_effects/effect.h" #include "svg/svg.h" #include "attributes.h" @@ -29,6 +29,7 @@ #include "document.h" #include "sp-star.h" +#include SPStar::SPStar() : SPPolygon() , sides(5), @@ -511,17 +512,27 @@ void SPStar::snappoints(std::vector &p, Inkscape:: Geom::Affine SPStar::set_transform(Geom::Affine const &xform) { bool opt_trans = (randomized == 0); - // Only set transform with proportional scaling - if (!xform.withoutTranslation().isUniformScale()) { - return xform; - } - - // Allow live effects - if (hasPathEffect() && pathEffectsEnabled()) { + if (hasPathEffect() && pathEffectsEnabled() && + (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + { + // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' + // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(xform); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } + // Only set transform with proportional scaling + if (!xform.withoutTranslation().isUniformScale()) { + // Adjust livepatheffect + if (hasPathEffect() && pathEffectsEnabled()) { + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + } + return xform; + } /* Calculate star start in parent coords. */ Geom::Point pos( this->center * xform ); @@ -560,6 +571,9 @@ Geom::Affine SPStar::set_transform(Geom::Affine const &xform) // Adjust gradient fill this->adjust_gradient(xform * ret.inverse()); + // Adjust livepatheffect + this->adjust_livepatheffect(xform); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return ret; -- cgit v1.2.3 From c001f1a01e89595de48dcae99411e1ac0b18209a Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Tue, 10 Oct 2017 13:08:51 +0200 Subject: Fix a bug pointed by CR on copyng throught layers --- src/live_effects/lpe-measure-segments.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 738990bc0..90f469963 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -370,8 +370,8 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i if (main && std::abs(text_top_bottom) < fontsize/1.5 && - hide_back){ - Geom::Path line_path; + hide_back) + { double k = 0; if (flip_side) { k = (Geom::distance(start,end)/2.0) + arrow_gap - (anotation_width/2.0); @@ -389,7 +389,7 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i //k = std::max(k , arrow_gap -1); Geom::Ray ray(end, start); Geom::Coord angle = ray.angle(); - line_path.start(start); + Geom::Path line_path(start); line_path.appendNew(start - Point::polar(angle, k)); line_pathv.push_back(line_path); line_path.clear(); @@ -397,8 +397,7 @@ LPEMeasureSegments::createLine(Geom::Point start,Geom::Point end, const char * i line_path.appendNew(end); line_pathv.push_back(line_path); } else { - Geom::Path line_path; - line_path.start(start); + Geom::Path line_path(start); line_path.appendNew(end); line_pathv.push_back(line_path); } -- cgit v1.2.3 From 76b7d649910aa9d52c2db2158256879eb5318805 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Tue, 10 Oct 2017 21:26:31 +0200 Subject: root dir tidying: remove mingwenv.bat / msysenv.sh They were used to set up paths for devlibs builds but as master does not even build with devlibs anymore, nobody should miss them. Preferred way to build master on Windows is with MSYS2 now: http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows_with_MSYS2 --- mingwenv.bat | 25 ------------------------- msysenv.sh | 28 ---------------------------- 2 files changed, 53 deletions(-) delete mode 100644 mingwenv.bat delete mode 100755 msysenv.sh diff --git a/mingwenv.bat b/mingwenv.bat deleted file mode 100644 index e4b9047f1..000000000 --- a/mingwenv.bat +++ /dev/null @@ -1,25 +0,0 @@ -@echo off - -REM ----------------------------------------------------------------------------- -REM The paths in this file are used if you want to build Inkscape from the -REM the Windows built-in command line. -REM ----------------------------------------------------------------------------- - -REM Directory containing the precompiled Inkscape libraries. Usually c:\devlibs or c:\devlibs64 -if "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs64 - -REM Directory containing the MinGW instance used for compilation. Usually c:\mingw or c:\mingw64 -REM Note: Make sure there are no whitespaces in the path. MinGW doesn't like that.. ;) -if "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw64 - -REM ----------------------------------------------------------------------------- -@echo Setting environment variables for MinGW build of Inkscape.. - -@echo DEVLIBS_PATH: %DEVLIBS_PATH% -@echo MINGW_PATH: %MINGW_PATH% - -REM Include the MinGW environment in the path to prevent error messages during CMake configure. -set PATH=%DEVLIBS_PATH%\bin;%DEVLIBS_PATH%\python;%MINGW_PATH%\bin;%PATH% - -REM Also set the pkgconfig path to prevent error messages during CMake configure. -set PKG_CONFIG_PATH=%DEVLIBS_PATH%\lib\pkgconfig \ No newline at end of file diff --git a/msysenv.sh b/msysenv.sh deleted file mode 100755 index d1639efbe..000000000 --- a/msysenv.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# The paths in this file are used if you want to build Inkscape from the -# the MSYS command line for Windows. -# ----------------------------------------------------------------------------- - -# Directory containing the precompiled Inkscape libraries. Usually /c/devlibs or /c/devlibs64 -if [ -z $DEVLIBS_PATH ]; then - export DEVLIBS_PATH="/c/devlibs64"; -fi - -# Directory containing the MinGW instance used for compilation. Usually /c/mingw or /c/mingw64 -# Note: Make sure there are no whitespaces in the path. MinGW doesn't like that.. :) -if [ -z $MINGW_PATH ]; then - export MINGW_PATH="/c/mingw64"; -fi - -# ----------------------------------------------------------------------------- -echo Setting environment variables for MSYS build of Inkscape: -echo -echo "DEVLIBS_PATH: "$DEVLIBS_PATH -echo "MINGW_PATH: "$MINGW_PATH - -# Include the MinGW environment in the path to prevent error messages during CMake configure. -export PATH=$DEVLIBS_PATH/bin:$DEVLIBS_PATH/python:$MINGW_PATH/bin:$PATH - -# Also set the pkgconfig path to prevent error messages during CMake configure. -export PKG_CONFIG_PATH=$DEVLIBS_PATH/lib/pkgconfig -- cgit v1.2.3 From 27fa4199a27db67909887170a08927eade42e465 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Tue, 10 Oct 2017 22:03:40 +0200 Subject: Cleanup: remove unused winmain.cpp While we were diligently compiling and maintaining it, the WinMain entry point was completely unused for quite some time now (if it was ever used). gcc is perfectly happy with the standard main() entry point and even MSVC should be able to work with alternative entry point names (if anybody was bold enough to actually compile Inkscape that way) Note regarding code for output redirection: The code that was introduced in 378a6384e55bdb8c5750c051fd91302f64d2b69a in order to achieve console output from inkscape.exe (see comment in winconsole.cpp why this does not work by default) works in principle, but has a number of issues - it immediately exits (control is returned to the console) rendering it unsuitable (or even harmful) for script usage - despite returning control to the console Inkscape continues to print messages to it messing up any other output - standard input (stdin) is not working at all The solution of using console wrappers from b8859cd12327c84f5ca8d4bf8614f0d0913d3c25 is therefore still the preferable solution, see also https://bugs.launchpad.net/inkscape/+bug/520532 for details. --- src/CMakeLists.txt | 1 - src/winmain.cpp | 65 ------------------------------------------------------ 2 files changed, 66 deletions(-) delete mode 100644 src/winmain.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4b3357d30..09d6d25d4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -481,7 +481,6 @@ if(WIN32) list(APPEND main_SRC registrytool.h registrytool.cpp - winmain.cpp ) # Configure and add the platform specific resource files (enabling the app icon). diff --git a/src/winmain.cpp b/src/winmain.cpp deleted file mode 100644 index 5120e44e0..000000000 --- a/src/winmain.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include - -#ifdef G_OS_WIN32 -#undef DATADIR - -#include -#include -#include - -#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501) -# undef _WIN32_WINNT -# define _WIN32_WINNT 0x0501 -#endif - -#include - -extern int main (int argc, char **argv); - -/* In case we build this as a windowed application */ - -#ifdef __GNUC__ -# ifndef _stdcall -# define _stdcall __attribute__((stdcall)) -# endif -#endif - -int _stdcall -WinMain (struct HINSTANCE__ */*hInstance*/, - struct HINSTANCE__ */*hPrevInstance*/, - char */*lpszCmdLine*/, - int /*nCmdShow*/) -{ - if (fileno (stdout) != -1 && - _get_osfhandle (fileno (stdout)) != -1) - { - /* stdout is fine, presumably redirected to a file or pipe */ - } - else - { - typedef BOOL (* WINAPI AttachConsole_t) (DWORD); - - AttachConsole_t p_AttachConsole = - (AttachConsole_t) GetProcAddress (GetModuleHandle ("kernel32.dll"), "AttachConsole"); - - if (p_AttachConsole != NULL && p_AttachConsole (ATTACH_PARENT_PROCESS)) - { - freopen ("CONOUT$", "w", stdout); - dup2 (fileno (stdout), 1); - freopen ("CONOUT$", "w", stderr); - dup2 (fileno (stderr), 2); - - } - } - - int ret; - ret = main (__argc, __argv); - return ret; -} - -#endif -- cgit v1.2.3 From 8a5208f4a875cd7a70739f5b559e6a116c0c280a Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Tue, 10 Oct 2017 23:06:27 +0200 Subject: Prevent crash in measure LPE when pasting LPE to multiple elements --- src/live_effects/lpe-measure-segments.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 90f469963..6d1f46535 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -479,6 +479,7 @@ LPEMeasureSegments::doOnApply(SPLPEItem const* lpeitem) g_warning("LPE measure line can only be applied to shapes (not groups)."); SPLPEItem * item = const_cast(lpeitem); item->removeCurrentPathEffect(false); + return; } SPDocument *document = SP_ACTIVE_DOCUMENT; bool saved = DocumentUndo::getUndoSensitive(document); @@ -523,8 +524,8 @@ LPEMeasureSegments::doOnApply(SPLPEItem const* lpeitem) styleContent = styleContent + Glib::ustring("\n.measure-arrows") + Glib::ustring("\n{\n}"); styleContent = styleContent + Glib::ustring("\n.measure-labels") + Glib::ustring("\n{\nline-height:125%;\nletter-spacing:0;\nword-spacing:0;\ntext-align:center;\ntext-anchor:middle;\nstroke:none;\n}"); styleContent = styleContent + Glib::ustring("\n.measure-lines") + Glib::ustring("\n{\n}"); + textNode->setContent(styleContent.c_str()); } - textNode->setContent(styleContent.c_str()); DocumentUndo::setUndoSensitive(document, saved); } -- cgit v1.2.3 From 6e2acdba15fff06755ac5a724316e3b550ef3779 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 11 Oct 2017 17:45:02 +0200 Subject: Allow one !important rule to override another if later and has equal or higher specificity. Patch from Jabier. --- src/libcroco/cr-sel-eng.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libcroco/cr-sel-eng.c b/src/libcroco/cr-sel-eng.c index ea04bfd2e..9e35ad93f 100644 --- a/src/libcroco/cr-sel-eng.c +++ b/src/libcroco/cr-sel-eng.c @@ -1669,7 +1669,7 @@ put_css_properties_in_props_list (CRPropList ** a_props, CRStatement * a_stmt) *(unless the already selected declaration *has an UA origin) */ - if (decl->important == TRUE + if (decl->important == TRUE && cur_decl->important != TRUE && decl->parent_statement->parent_sheet->origin != ORIGIN_UA) { continue; @@ -1708,7 +1708,7 @@ put_css_properties_in_props_list (CRPropList ** a_props, CRStatement * a_stmt) */ if (a_stmt->specificity >= decl->parent_statement->specificity) { - if (decl->important == TRUE) + if (decl->important == TRUE && cur_decl->important != TRUE) continue; props = cr_prop_list_unlink (props, pair); if (pair) { -- cgit v1.2.3 From 2b1f55d53447df339c09a693afd6a1c7adf402ba Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 11 Oct 2017 17:52:17 +0200 Subject: Add test file for previous commit (!important rule). --- testfiles/rendering_tests/CMakeLists.txt | 1 + .../selector-important-002-large.png | Bin 0 -> 11306 bytes .../expected_rendering/selector-important-002.png | Bin 0 -> 921 bytes .../rendering_tests/selector-important-002.svg | 58 +++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 testfiles/rendering_tests/expected_rendering/selector-important-002-large.png create mode 100644 testfiles/rendering_tests/expected_rendering/selector-important-002.png create mode 100644 testfiles/rendering_tests/selector-important-002.svg diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt index 8b77927a0..361ab45a4 100644 --- a/testfiles/rendering_tests/CMakeLists.txt +++ b/testfiles/rendering_tests/CMakeLists.txt @@ -4,6 +4,7 @@ set(RENDERING_TESTS test-empty test-glyph-y-pos test-rtl-vertical + selector-important-002 ) diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png b/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png new file mode 100644 index 000000000..e92eef0a4 Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/selector-important-002-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-002.png b/testfiles/rendering_tests/expected_rendering/selector-important-002.png new file mode 100644 index 000000000..b0af9bd12 Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/selector-important-002.png differ diff --git a/testfiles/rendering_tests/selector-important-002.svg b/testfiles/rendering_tests/selector-important-002.svg new file mode 100644 index 000000000..e5a66b68e --- /dev/null +++ b/testfiles/rendering_tests/selector-important-002.svg @@ -0,0 +1,58 @@ + + + Style "!important" — 002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 99d90b9a520928802b7ac784241a287cd1a45241 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Thu, 12 Oct 2017 14:56:29 +0200 Subject: Update POTFILES.in etc. after renaming --- po/POTFILES.in | 2 +- src/box3d.cpp | 2 +- src/doxygen-main.dox | 2 +- src/sp-offset.cpp | 4 ++-- src/sp-offset.h | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/po/POTFILES.in b/po/POTFILES.in index 5fcab373b..dea40a8bf 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -276,7 +276,7 @@ src/ui/dialog/tracedialog.cpp src/ui/dialog/transformation.cpp src/ui/dialog/xml-tree.cpp src/ui/interface.cpp -src/ui/object-edit.cpp +src/ui/shape-editor-knotholders.cpp src/ui/tool/curve-drag-point.cpp src/ui/tool/multi-path-manipulator.cpp src/ui/tool/node.cpp diff --git a/src/box3d.cpp b/src/box3d.cpp index 23766895a..98f49e52a 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -192,7 +192,7 @@ void SPBox3D::update(SPCtx *ctx, guint flags) { /* FIXME?: Perhaps the display updates of box sides should be instantiated from here, but this causes evil update loops so it's all done from box3d_position_set, which is called from - various other places (like the handlers in object-edit.cpp, vanishing-point.cpp, etc. */ + various other places (like the handlers in shape-editor-knotholders.cpp, vanishing-point.cpp, etc. */ } diff --git a/src/doxygen-main.dox b/src/doxygen-main.dox index 6a5723bfd..faa11cc9e 100644 --- a/src/doxygen-main.dox +++ b/src/doxygen-main.dox @@ -200,7 +200,7 @@ namespace XML {} /** \page ObjectTree Object Tree Classes and Files * Inkscape::ObjectHierarchy [\ref object-hierarchy.cpp, \ref object-hierarchy.h] - * - SPObject [\ref sp-object.cpp, \ref sp-object.h, \ref object-edit.cpp, \ref sp-object-repr.cpp] + * - SPObject [\ref sp-object.cpp, \ref sp-object.h, \ref shape-editor-knotholders.cpp, \ref sp-object-repr.cpp] * - SPDefs [\ref sp-defs.cpp, \ref sp-defs.h] * - SPFlowline [\ref sp-flowdiv.cpp, \ref sp-flowdiv.h] * - SPFlowregionbreak [\ref sp-flowdiv.cpp, \ref sp-flowdiv.h] diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp index e2ec9751c..82e0b4947 100644 --- a/src/sp-offset.cpp +++ b/src/sp-offset.cpp @@ -63,7 +63,7 @@ class SPDocument; * a change occurs to the offset (change of source or change of radius). * just like the sp-star and other, this path derivative can make control * points, or more precisely one control point, that's enough to define the - * radius (look in object-edit). + * radius (look in shape-editor-knotholders). */ static void refresh_offset_source(SPOffset* offset); @@ -764,7 +764,7 @@ vectors_are_clockwise (Geom::Point A, Geom::Point B, Geom::Point C) } /** - * Distance to the original path; that function is called from object-edit + * Distance to the original path; that function is called from shape-editor-knotholders * to set the radius when the control knot moves. * * The sign of the result is the radius we're going to offset the shape with, diff --git a/src/sp-offset.h b/src/sp-offset.h index eb3fe227c..117a3308e 100644 --- a/src/sp-offset.h +++ b/src/sp-offset.h @@ -47,7 +47,7 @@ class SPUseReference; * a change occurs to the offset (change of source or change of radius). * just like the sp-star and other, this path derivative can make control * points, or more precisely one control point, that's enough to define the - * radius (look in object-edit). + * radius (look in shape-editor-knotholders). */ class SPOffset : public SPShape { public: -- cgit v1.2.3 From 22430892c3b4fc1e2c4bdef625e71db4cf5bfd42 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 12 Oct 2017 19:43:37 +0200 Subject: Do not force-disable CSD on Windows The code introduced in 860d326a9ac03c2b1e0a3f45c3ed3d35f94c3d54 is no longer necessary as gtk3 client side decorations are now disabled by default in MSYS2's gtk3 builds, see upstream patch: https://github.com/Alexpux/MINGW-packages/commit/69f8e3294ec0d612d274f69e5e517026a8c340b6 To enable CSD on-the-fly set the environment variable `GTK_CSD` to 1 --- src/main.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9f204851b..aec7d96a9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -700,10 +700,6 @@ main(int argc, char **argv) RegistryTool rt; rt.setPathInfo(); } - - // disable "client side decorations" as they prevent window borders and titlebars to be drawn with native theming - // see also https://bugzilla.gnome.org/show_bug.cgi?id=778791 - g_setenv("GTK_CSD", "0", FALSE); #endif set_extensions_env(); -- cgit v1.2.3 From b50500c7c14ab8ba6b06bf264ea3cd2dca12fa65 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 13 Oct 2017 10:54:58 +0200 Subject: Migrate style-test to GTest. --- testfiles/CMakeLists.txt | 3 +- testfiles/src/cxxtests-to-migrate/style-test.h | 537 ------------------------ testfiles/src/style-test.cpp | 555 +++++++++++++++++++++++++ 3 files changed, 557 insertions(+), 538 deletions(-) delete mode 100644 testfiles/src/cxxtests-to-migrate/style-test.h create mode 100644 testfiles/src/style-test.cpp diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index e7198a39f..554ab8fda 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -14,7 +14,8 @@ set(TEST_SOURCES color-profile-test dir-util-test sp-object-test - object-set-test) + object-set-test + style-test) set(TEST_LIBS gmock_main diff --git a/testfiles/src/cxxtests-to-migrate/style-test.h b/testfiles/src/cxxtests-to-migrate/style-test.h deleted file mode 100644 index c6bb665e0..000000000 --- a/testfiles/src/cxxtests-to-migrate/style-test.h +++ /dev/null @@ -1,537 +0,0 @@ -#ifndef SEEN_STYLE_TEST_H -#define SEEN_STYLE_TEST_H - -#include - -#include "test-helpers.h" - -#include "style.h" - -class StyleTest : public CxxTest::TestSuite -{ -public: - SPDocument* _doc; - - StyleTest() : - _doc(0) - { - } - - virtual ~StyleTest() - { - if ( _doc ) - { - _doc->doUnref(); - _doc = 0; - } - } - - static void createSuiteSubclass( StyleTest*& dst ) - { - dst = new StyleTest(); - } - -// createSuite and destroySuite get us per-suite setup and teardown -// without us having to worry about static initialization order, etc. - static StyleTest *createSuite() - { - StyleTest* suite = Inkscape::createSuiteAndDocument( createSuiteSubclass ); - return suite; - } - - static void destroySuite( StyleTest *suite ) - { - delete suite; - } - - // --------------------------------------------------------------- - // --------------------------------------------------------------- - // --------------------------------------------------------------- - - // Reading and writing style string - void testOne() - { - struct TestCase { - TestCase(gchar const* src, gchar const* dst = 0, gchar const* uri = 0) : src(src), dst(dst), uri(uri) {} - gchar const* src; - gchar const* dst; - gchar const* uri; - }; - - TestCase cases[] = { - TestCase("fill:none"), - TestCase("fill:currentColor"), - TestCase("fill:#ff00ff"), - - TestCase("fill:rgb(100%, 0%, 100%)", "fill:#ff00ff"), - // TODO - fix this to preserve the string - TestCase("fill:url(#painter) rgb(100%, 0%, 100%)", - "fill:url(#painter) #ff00ff", "#painter"), - - TestCase("fill:rgb(255, 0, 255)", "fill:#ff00ff"), - // TODO - fix this to preserve the string - TestCase("fill:url(#painter) rgb(255, 0, 255)", - "fill:url(#painter) #ff00ff", "#painter"), - - -// TestCase("fill:#ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)"), - - TestCase("fill:url(#painter)", 0, "#painter"), - TestCase("fill:url(#painter) none", 0, "#painter"), - TestCase("fill:url(#painter) currentColor", 0, "#painter"), - TestCase("fill:url(#painter) #ff00ff", 0, "#painter"), -// TestCase("fill:url(#painter) rgb(100%, 0%, 100%)", 0, "#painter"), -// TestCase("fill:url(#painter) rgb(255, 0, 255)", 0, "#painter"), - - TestCase("fill:url(#painter) #ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)", 0, "#painter"), - -// TestCase("fill:url(#painter) inherit", 0, "#painter"), - TestCase("fill:inherit"), - -// General tests (in general order of appearance in sp_style_read), SPIPaint tested above - TestCase("visibility:hidden"), // SPIEnum - TestCase("visibility:collapse"), - TestCase("visibility:visible"), - TestCase("display:none"), // SPIEnum - TestCase("overflow:visible"), // SPIEnum - TestCase("overflow:auto"), // SPIEnum - - TestCase("color:#ff0000"), - TestCase("color:blue", "color:#0000ff"), - // TestCase("color:currentColor"), SVG 1.1 does not allow color value 'currentColor' - - // Font shorthand - TestCase("font:bold 12px Arial", - "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:normal;font-family:Arial"), - TestCase("font:bold 12px/24px 'Times New Roman'", - "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:24px;font-family:\'Times New Roman\'"), - // From CSS 3 Fonts (examples): - TestCase("font: 12pt/15pt sans-serif", - "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:15pt;font-family:sans-serif"), - TestCase("font: 80% sans-serif", - "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:80%;line-height:normal;font-family:sans-serif"), - TestCase("font: x-large/110% 'new century schoolbook', serif", - "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:x-large;line-height:110%;font-family:\'new century schoolbook\', serif"), - TestCase("font: bold italic large Palatino, serif", - "font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:large;line-height:normal;font-family:Palatino, serif"), - TestCase("font: normal small-caps 120%/120% fantasy", - "font-style:normal;font-variant:small-caps;font-weight:normal;font-stretch:normal;font-size:120%;line-height:120%;font-family:fantasy"), - TestCase("font: condensed oblique 12pt 'Helvetica Neue', serif;", - "font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:16px;line-height:normal;font-family:\'Helvetica Neue\', serif"), - - TestCase("font-family:sans-serif"), // SPIString, text_private - TestCase("font-family:Arial"), - // TestCase("font-variant:normal;font-stretch:normal;-inkscape-font-specification:Nimbus Roman No9 L Bold Italic"), - - // Needs to be fixed (quotes should be around each font-family): - TestCase("font-family:Georgia, 'Minion Web'","font-family:Georgia, \'Minion Web\'"), - TestCase("font-size:12", "font-size:12px"), // SPIFontSize - TestCase("font-size:12px"), - TestCase("font-size:12pt", "font-size:16px"), - TestCase("font-size:medium"), - TestCase("font-size:smaller"), - TestCase("font-style:italic"), // SPIEnum - TestCase("font-variant:small-caps"), // SPIEnum - TestCase("font-weight:100"), // SPIEnum - TestCase("font-weight:normal"), - TestCase("font-weight:bolder"), - TestCase("font-stretch:condensed"), // SPIEnum - - TestCase("font-variant-ligatures:none"), // SPILigatures - TestCase("font-variant-ligatures:normal"), - TestCase("font-variant-ligatures:no-common-ligatures"), - TestCase("font-variant-ligatures:discretionary-ligatures"), - TestCase("font-variant-ligatures:historical-ligatures"), - TestCase("font-variant-ligatures:no-contextual"), - TestCase("font-variant-ligatures:common-ligatures", "font-variant-ligatures:normal"), - TestCase("font-variant-ligatures:contextual", "font-variant-ligatures:normal"), - TestCase("font-variant-ligatures:no-common-ligatures historical-ligatures"), - TestCase("font-variant-ligatures:historical-ligatures no-contextual"), - TestCase("font-variant-position:normal"), - TestCase("font-variant-position:sub"), - TestCase("font-variant-position:super"), - TestCase("font-variant-caps:normal"), - TestCase("font-variant-caps:small-caps"), - TestCase("font-variant-caps:all-small-caps"), - TestCase("font-variant-numeric:normal"), - TestCase("font-variant-numeric:lining-nums"), - TestCase("font-variant-numeric:oldstyle-nums"), - TestCase("font-variant-numeric:proportional-nums"), - TestCase("font-variant-numeric:tabular-nums"), - TestCase("font-variant-numeric:diagonal-fractions"), - TestCase("font-variant-numeric:stacked-fractions"), - TestCase("font-variant-numeric:ordinal"), - TestCase("font-variant-numeric:slashed-zero"), - TestCase("font-variant-numeric:tabular-nums slashed-zero"), - TestCase("font-variant-numeric:tabular-nums proportional-nums", "font-variant-numeric:proportional-nums"), - - // Should be moved down - TestCase("text-indent:12em"), // SPILength? - TestCase("text-align:center"), // SPIEnum - - // SPITextDecoration - // The default value for 'text-decoration-color' is 'currentColor', but - // we cannot set the default to that value yet. (We need to switch - // SPIPaint to SPIColor and then add the ability to set default.) - // TestCase("text-decoration: underline", - // "text-decoration: underline;text-decoration-line: underline;text-decoration-color:currentColor"), - // TestCase("text-decoration: overline underline", - // "text-decoration: underline overline;text-decoration-line: underline overline;text-decoration-color:currentColor"), - - TestCase("text-decoration: underline wavy #0000ff", - "text-decoration: underline;text-decoration-line: underline;text-decoration-style:wavy;text-decoration-color:#0000ff"), - TestCase("text-decoration: double overline underline #ff0000", - "text-decoration: underline overline;text-decoration-line: underline overline;text-decoration-style:double;text-decoration-color:#ff0000"), - - // SPITextDecorationLine - TestCase("text-decoration-line: underline", - "text-decoration: underline;text-decoration-line: underline"), - - // SPITextDecorationStyle - TestCase("text-decoration-style:solid"), - TestCase("text-decoration-style:dotted"), - - // SPITextDecorationColor - TestCase("text-decoration-color:#ff00ff"), - - // Should be moved up - TestCase("line-height:24px"), // SPILengthOrNormal - TestCase("line-height:1.5"), - TestCase("letter-spacing:2px"), // SPILengthOrNormal - TestCase("word-spacing:2px"), // SPILengthOrNormal - TestCase("word-spacing:normal"), - TestCase("text-transform:lowercase"), // SPIEnum - // ... - TestCase("baseline-shift:baseline"), // SPIBaselineShift - TestCase("baseline-shift:sub"), - TestCase("baseline-shift:12.5%"), - TestCase("baseline-shift:2px"), - - TestCase("opacity:0.1"), // SPIScale24 - // ... - TestCase("stroke-width:2px"), // SPILength - TestCase("stroke-linecap:round"), // SPIEnum - TestCase("stroke-linejoin:round"), // SPIEnum - TestCase("stroke-miterlimit:4"), // SPIFloat - TestCase("marker:url(#Arrow)"), // SPIString - TestCase("marker-start:url(#Arrow)"), - TestCase("marker-mid:url(#Arrow)"), - TestCase("marker-end:url(#Arrow)"), - TestCase("stroke-opacity:0.5"), // SPIScale24 - TestCase("stroke-dasharray:0, 1, 0, 1"), // SPIDashArray - TestCase("stroke-dasharray:0 1 0 1","stroke-dasharray:0, 1, 0, 1"), - TestCase("stroke-dasharray:0 1 2 3","stroke-dasharray:0, 1, 2, 3"), - TestCase("stroke-dashoffset:13"), // SPILength - TestCase("stroke-dashoffset:10px"), - // ... - //TestCase("filter:url(#myfilter)"), // SPIFilter segfault in read - TestCase("filter:inherit"), - - TestCase("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px"), - TestCase("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px;stroke-dasharray:1, 2, 3, 4;stroke-dashoffset:15"), - - -#ifdef WITH_SVG2 - TestCase("paint-order:stroke"), // SPIPaintOrder - TestCase("paint-order:normal"), - TestCase("paint-order: markers stroke fill", "paint-order:markers stroke fill"), - -#endif - TestCase(0) - }; - - for ( gint i = 0; cases[i].src; i++ ) { - // std::cout << "Test one: " << i << std::endl; - SPStyle style(_doc); - style.mergeString( cases[i].src ); - if ( cases[i].uri ) { - TSM_ASSERT( cases[i].src, style.fill.value.href ); - if ( style.fill.value.href ) { - TS_ASSERT_EQUALS( style.fill.value.href->getURI()->toString(), std::string(cases[i].uri) ); - } - } else { - TS_ASSERT( !style.fill.value.href || !style.fill.value.href->getObject() ); - } - - std::string str0_set = style.write(SP_STYLE_FLAG_IFSET ); - - if ( cases[i].dst ) { - // std::cout << " " << str0_set << " " << std::string(cases[i].dst) << std::endl; - TS_ASSERT_EQUALS( str0_set, std::string(cases[i].dst) ); - } else { - // std::cout << " " << str0_set << " " << std::string(cases[i].src) << std::endl; - TS_ASSERT_EQUALS( str0_set, std::string(cases[i].src) ); - } - } - } - - // Testing operator== - void testTwo() - { - struct TestCase { - TestCase(gchar const* src, gchar const* dst, bool match) : - src(src), dst(dst), match(match) {} - gchar const* src; - gchar const* dst; - bool match; - }; - - TestCase cases[] = { - - // SPIFloat - TestCase("stroke-miterlimit:4", "stroke-miterlimit:4", true ), - TestCase("stroke-miterlimit:4", "stroke-miterlimit:2", false), - TestCase("stroke-miterlimit:4", "", true ), // Default - - // SPIScale24 - TestCase("opacity:0.3", "opacity:0.3", true ), - TestCase("opacity:0.3", "opacity:0.6", false), - TestCase("opacity:1.0", "", true ), // Default - - // SPILength - TestCase("text-indent:3", "text-indent:3", true ), - TestCase("text-indent:6", "text-indent:3", false), - TestCase("text-indent:6px", "text-indent:3", false), - TestCase("text-indent:1px", "text-indent:12pc", false), - TestCase("text-indent:2ex", "text-indent:2ex", false), - - // SPILengthOrNormal - TestCase("letter-spacing:normal", "letter-spacing:normal", true ), - TestCase("letter-spacing:2", "letter-spacing:normal", false), - TestCase("letter-spacing:normal", "letter-spacing:2", false), - TestCase("letter-spacing:5px", "letter-spacing:5px", true ), - TestCase("letter-spacing:10px", "letter-spacing:5px", false), - TestCase("letter-spacing:10em", "letter-spacing:10em", false), - - // SPIEnum - TestCase("text-anchor:start", "text-anchor:start", true ), - TestCase("text-anchor:start", "text-anchor:middle", false), - TestCase("text-anchor:start", "", true ), // Default - TestCase("text-anchor:start", "text-anchor:junk", true ), // Bad value - - TestCase("font-weight:normal", "font-weight:400", true ), - TestCase("font-weight:bold", "font-weight:700", true ), - - - // SPIString and SPIFontString - TestCase("font-family:Arial", "font-family:Arial", true ), - TestCase("font-family:A B", "font-family:A B", true ), - TestCase("font-family:A B", "font-family:A C", false), - // Default is not set by class... value is NULL which cannot be compared - // TestCase("font-family:sans-serif", "", true ), // Default - - // SPIColor - TestCase("color:blue", "color:blue", true ), - TestCase("color:blue", "color:red", false), - TestCase("color:red", "color:#ff0000", true ), - - // SPIPaint - TestCase("fill:blue", "fill:blue", true ), - TestCase("fill:blue", "fill:red", false), - TestCase("fill:currentColor", "fill:currentColor", true ), - TestCase("fill:url(#xxx)", "fill:url(#xxx)", true ), - // Needs URL defined as in test 1 - //TestCase("fill:url(#xxx)", "fill:url(#yyy)", false), - - // SPIPaintOrder - TestCase("paint-order:markers", "paint-order:markers", true ), - TestCase("paint-order:markers", "paint-order:stroke", false), - //TestCase("paint-order:fill stroke markers", "", true ), // Default - TestCase("paint-order:normal", "paint-order:normal", true ), - //TestCase("paint-order:fill stroke markers", "paint-order:normal", true ), - - // SPIDashArray - TestCase("stroke-dasharray:0 1 2 3","stroke-dasharray:0 1 2 3",true ), - TestCase("stroke-dasharray:0 1", "stroke-dasharray:0 2", false), - - // SPIFilter - - // SPIFontSize - TestCase("font-size:12px", "font-size:12px", true ), - TestCase("font-size:12px", "font-size:24px", false), - TestCase("font-size:12ex", "font-size:24ex", false), - TestCase("font-size:medium", "font-size:medium", true ), - TestCase("font-size:medium", "font-size:large", false), - - // SPIBaselineShift - TestCase("baseline-shift:baseline", "baseline-shift:baseline", true ), - TestCase("baseline-shift:sub", "baseline-shift:sub", true ), - TestCase("baseline-shift:sub", "baseline-shift:super", false), - TestCase("baseline-shift:baseline", "baseline-shift:sub", false), - TestCase("baseline-shift:10px", "baseline-shift:10px", true ), - TestCase("baseline-shift:10px", "baseline-shift:12px", false), - - - // SPITextDecorationLine - TestCase("text-decoration-line:underline", "text-decoration-line:underline", true ), - TestCase("text-decoration-line:underline", "text-decoration-line:overline", false), - TestCase("text-decoration-line:underline overline", "text-decoration-line:underline overline", true ), - TestCase("text-decoration-line:none", "", true ), // Default - - - // SPITextDecorationStyle - TestCase("text-decoration-style:solid", "text-decoration-style:solid", true ), - TestCase("text-decoration-style:dotted", "text-decoration-style:solid", false), - TestCase("text-decoration-style:solid", "", true ), // Default - - // SPITextDecoration - TestCase("text-decoration:underline", "text-decoration:underline", true ), - TestCase("text-decoration:underline", "text-decoration:overline", false), - TestCase("text-decoration:underline overline","text-decoration:underline overline",true ), - TestCase("text-decoration:overline underline","text-decoration:underline overline",true ), - // TestCase("text-decoration:none", "text-decoration-color:currentColor", true ), // Default - - - // Terminate - TestCase(0,0,0) - }; - for ( gint i = 0; cases[i].src; i++ ) { - // std::cout << "Test two: " << i << std::endl; - SPStyle style_src(_doc); - SPStyle style_dst(_doc); - - style_src.mergeString( cases[i].src ); - style_dst.mergeString( cases[i].dst ); - - // std::cout << "Test:" << std::endl; - // std::cout << " C: |" << cases[i].src << "| |" << cases[i].dst << "|" << std::endl; - // std::cout << " S: |" << style_src.write( SP_STYLE_FLAG_IFSET, NULL ) << "| |" - // << style_dst.write( SP_STYLE_FLAG_IFSET, NULL ) << "|" < + * + * Copyright (C) 2017 Authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include +#include + +#include "gtest/gtest.h" + +#include "style.h" + +namespace { + +class StyleRead { + +public: + StyleRead(std::string const &src, std::string const &dst, std::string const &uri) : + src(src), dst(dst), uri(uri) + { + } + + StyleRead(std::string const &src, std::string const &dst) : + src(src), dst(dst), uri("") + { + } + + StyleRead(std::string const &src) : + src(src), dst(src), uri("") + { + } + + std::string src; + std::string dst; + std::string uri; + +}; + +std::vector getStyleData() +{ + StyleRead all_style_data[] = { + + // Paint ----------------------------------------------- + StyleRead("fill:none" ), + StyleRead("fill:currentColor" ), + StyleRead("fill:#ff00ff" ), + StyleRead("fill:rgb(100%, 0%, 100%)", "fill:#ff00ff" ), + StyleRead("fill:rgb(255, 0, 255)", "fill:#ff00ff" ), + + // TODO - fix this to preserve the string + // StyleRead("fill:url(#painter) rgb(100%, 0%, 100%)", + // "fill:url(#painter) #ff00ff", "#painter" ), + + // TODO - fix this to preserve the string + //StyleRead("fill:url(#painter) rgb(255, 0, 255)", + // "fill:url(#painter) #ff00ff", "#painter"), + + +// StyleRead("fill:#ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)"), + +// StyleRead("fill:url(#painter)", "", "#painter"), +// StyleRead("fill:url(#painter) none", "", "#painter"), +// StyleRead("fill:url(#painter) currentColor", "", "#painter"), +// StyleRead("fill:url(#painter) #ff00ff", "", "#painter"), +// StyleRead("fill:url(#painter) rgb(100%, 0%, 100%)", "", "#painter"), +// StyleRead("fill:url(#painter) rgb(255, 0, 255)", "", "#painter"), + +// StyleRead("fill:url(#painter) #ff00ff icc-color(colorChange, 0.1, 0.5, 0.1)", "", "#painter"), + +// StyleRead("fill:url(#painter) inherit", "", "#painter"), + + StyleRead("fill:inherit"), + + + // General tests (in general order of appearance in sp_style_read), SPIPaint tested above + StyleRead("visibility:hidden"), // SPIEnum + StyleRead("visibility:collapse"), + StyleRead("visibility:visible"), + StyleRead("display:none"), // SPIEnum + StyleRead("overflow:visible"), // SPIEnum + StyleRead("overflow:auto"), // SPIEnum + + StyleRead("color:#ff0000"), + StyleRead("color:blue", "color:#0000ff"), + // StyleRead("color:currentColor"), SVG 1.1 does not allow color value 'currentColor' + + // Font shorthand + StyleRead("font:bold 12px Arial", + "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:normal;font-family:Arial"), + StyleRead("font:bold 12px/24px 'Times New Roman'", + "font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12px;line-height:24px;font-family:\'Times New Roman\'"), + + // From CSS 3 Fonts (examples): + StyleRead("font: 12pt/15pt sans-serif", + "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:15pt;font-family:sans-serif"), + //StyleRead("font: 80% sans-serif", + // "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:80%;line-height:normal;font-family:sans-serif"), + //StyleRead("font: x-large/110% 'new century schoolbook', serif", + // "font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:x-large;line-height:110%;font-family:\'new century schoolbook\', serif"), + StyleRead("font: bold italic large Palatino, serif", + "font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:large;line-height:normal;font-family:Palatino, serif"), + //StyleRead("font: normal small-caps 120%/120% fantasy", + // "font-style:normal;font-variant:small-caps;font-weight:normal;font-stretch:normal;font-size:120%;line-height:120%;font-family:fantasy"), + StyleRead("font: condensed oblique 12pt 'Helvetica Neue', serif;", + "font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:16px;line-height:normal;font-family:\'Helvetica Neue\', serif"), + + StyleRead("font-family:sans-serif"), // SPIString, text_private + StyleRead("font-family:Arial"), + // StyleRead("font-variant:normal;font-stretch:normal;-inkscape-font-specification:Nimbus Roman No9 L Bold Italic"), + + // Needs to be fixed (quotes should be around each font-family): + StyleRead("font-family:Georgia, 'Minion Web'","font-family:Georgia, \'Minion Web\'"), + StyleRead("font-size:12", "font-size:12px"), // SPIFontSize + StyleRead("font-size:12px"), + StyleRead("font-size:12pt", "font-size:16px"), + StyleRead("font-size:medium"), + StyleRead("font-size:smaller"), + StyleRead("font-style:italic"), // SPIEnum + StyleRead("font-variant:small-caps"), // SPIEnum + StyleRead("font-weight:100"), // SPIEnum + StyleRead("font-weight:normal"), + StyleRead("font-weight:bolder"), + StyleRead("font-stretch:condensed"), // SPIEnum + + StyleRead("font-variant-ligatures:none"), // SPILigatures + StyleRead("font-variant-ligatures:normal"), + StyleRead("font-variant-ligatures:no-common-ligatures"), + StyleRead("font-variant-ligatures:discretionary-ligatures"), + StyleRead("font-variant-ligatures:historical-ligatures"), + StyleRead("font-variant-ligatures:no-contextual"), + StyleRead("font-variant-ligatures:common-ligatures", "font-variant-ligatures:normal"), + StyleRead("font-variant-ligatures:contextual", "font-variant-ligatures:normal"), + StyleRead("font-variant-ligatures:no-common-ligatures historical-ligatures"), + StyleRead("font-variant-ligatures:historical-ligatures no-contextual"), + StyleRead("font-variant-position:normal"), + StyleRead("font-variant-position:sub"), + StyleRead("font-variant-position:super"), + StyleRead("font-variant-caps:normal"), + StyleRead("font-variant-caps:small-caps"), + StyleRead("font-variant-caps:all-small-caps"), + StyleRead("font-variant-numeric:normal"), + StyleRead("font-variant-numeric:lining-nums"), + StyleRead("font-variant-numeric:oldstyle-nums"), + StyleRead("font-variant-numeric:proportional-nums"), + StyleRead("font-variant-numeric:tabular-nums"), + StyleRead("font-variant-numeric:diagonal-fractions"), + StyleRead("font-variant-numeric:stacked-fractions"), + StyleRead("font-variant-numeric:ordinal"), + StyleRead("font-variant-numeric:slashed-zero"), + StyleRead("font-variant-numeric:tabular-nums slashed-zero"), + StyleRead("font-variant-numeric:tabular-nums proportional-nums", "font-variant-numeric:proportional-nums"), + + // Should be moved down + StyleRead("text-indent:12em"), // SPILength? + StyleRead("text-align:center"), // SPIEnum + + // SPITextDecoration + // The default value for 'text-decoration-color' is 'currentColor', but + // we cannot set the default to that value yet. (We need to switch + // SPIPaint to SPIColor and then add the ability to set default.) + // StyleRead("text-decoration: underline", + // "text-decoration: underline;text-decoration-line: underline;text-decoration-color:currentColor"), + // StyleRead("text-decoration: overline underline", + // "text-decoration: underline overline;text-decoration-line: underline overline;text-decoration-color:currentColor"), + + StyleRead("text-decoration: underline wavy #0000ff", + "text-decoration: underline;text-decoration-line: underline;text-decoration-style:wavy;text-decoration-color:#0000ff"), + StyleRead("text-decoration: double overline underline #ff0000", + "text-decoration: underline overline;text-decoration-line: underline overline;text-decoration-style:double;text-decoration-color:#ff0000"), + + // SPITextDecorationLine + StyleRead("text-decoration-line: underline", + "text-decoration: underline;text-decoration-line: underline"), + + // SPITextDecorationStyle + StyleRead("text-decoration-style:solid"), + StyleRead("text-decoration-style:dotted"), + + // SPITextDecorationColor + StyleRead("text-decoration-color:#ff00ff"), + + // Should be moved up + StyleRead("line-height:24px"), // SPILengthOrNormal + StyleRead("line-height:1.5"), + StyleRead("letter-spacing:2px"), // SPILengthOrNormal + StyleRead("word-spacing:2px"), // SPILengthOrNormal + StyleRead("word-spacing:normal"), + StyleRead("text-transform:lowercase"), // SPIEnum + // ... + StyleRead("baseline-shift:baseline"), // SPIBaselineShift + StyleRead("baseline-shift:sub"), + StyleRead("baseline-shift:12.5%"), + StyleRead("baseline-shift:2px"), + + StyleRead("opacity:0.1"), // SPIScale24 + // ... + StyleRead("stroke-width:2px"), // SPILength + StyleRead("stroke-linecap:round"), // SPIEnum + StyleRead("stroke-linejoin:round"), // SPIEnum + StyleRead("stroke-miterlimit:4"), // SPIFloat + StyleRead("marker:url(#Arrow)"), // SPIString + StyleRead("marker-start:url(#Arrow)"), + StyleRead("marker-mid:url(#Arrow)"), + StyleRead("marker-end:url(#Arrow)"), + StyleRead("stroke-opacity:0.5"), // SPIScale24 + StyleRead("stroke-dasharray:0, 1, 0, 1"), // SPIDashArray + StyleRead("stroke-dasharray:0 1 0 1","stroke-dasharray:0, 1, 0, 1"), + StyleRead("stroke-dasharray:0 1 2 3","stroke-dasharray:0, 1, 2, 3"), + StyleRead("stroke-dashoffset:13"), // SPILength + StyleRead("stroke-dashoffset:10px"), + // ... + //StyleRead("filter:url(#myfilter)"), // SPIFilter segfault in read + StyleRead("filter:inherit"), + + StyleRead("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px"), + StyleRead("opacity:0.1;fill:#ff0000;stroke:#0000ff;stroke-width:2px;stroke-dasharray:1, 2, 3, 4;stroke-dashoffset:15"), + + StyleRead("paint-order:stroke"), // SPIPaintOrder + StyleRead("paint-order:normal"), + StyleRead("paint-order: markers stroke fill", "paint-order:markers stroke fill"), + + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector vect(all_style_data, all_style_data + count); + return vect; +} + +TEST(StyleTest, Read) { + std::vector all_style = getStyleData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style; + style.mergeString (i.src.c_str()); + + if (!i.uri.empty()) { + //EXPECT_EQ (style.fill.value.href->getURI()->toString(), i.uri); + } + + std::string out = style.write(); + if (i.dst.empty()) { + // std::cout << "out: " << out << std::endl; + // std::cout << "i.src: " << i.src << std::endl; + EXPECT_EQ (out, i.src); + } else { + // std::cout << "out: " << out << std::endl; + // std::cout << "i.dst: " << i.dst << std::endl; + EXPECT_EQ (out, i.dst); + } + } +} + + +// ------------------------------------------------------------------------------------ + +class StyleMatch { + +public: + StyleMatch(std::string const &src, std::string const &dst, bool const &match) : + src(src), dst(dst), match(match) + { + } + + std::string src; + std::string dst; + bool match; + +}; + +std::vector getStyleMatchData() +{ + StyleMatch all_style_data[] = { + + // SPIFloat + StyleMatch("stroke-miterlimit:4", "stroke-miterlimit:4", true ), + StyleMatch("stroke-miterlimit:4", "stroke-miterlimit:2", false), + StyleMatch("stroke-miterlimit:4", "", true ), // Default + + // SPIScale24 + StyleMatch("opacity:0.3", "opacity:0.3", true ), + StyleMatch("opacity:0.3", "opacity:0.6", false), + StyleMatch("opacity:1.0", "", true ), // Default + + // SPILength + StyleMatch("text-indent:3", "text-indent:3", true ), + StyleMatch("text-indent:6", "text-indent:3", false), + StyleMatch("text-indent:6px", "text-indent:3", false), + StyleMatch("text-indent:1px", "text-indent:12pc", false), + StyleMatch("text-indent:2ex", "text-indent:2ex", false), + + // SPILengthOrNormal + StyleMatch("letter-spacing:normal", "letter-spacing:normal", true ), + StyleMatch("letter-spacing:2", "letter-spacing:normal", false), + StyleMatch("letter-spacing:normal", "letter-spacing:2", false), + StyleMatch("letter-spacing:5px", "letter-spacing:5px", true ), + StyleMatch("letter-spacing:10px", "letter-spacing:5px", false), + StyleMatch("letter-spacing:10em", "letter-spacing:10em", false), + + // SPIEnum + StyleMatch("text-anchor:start", "text-anchor:start", true ), + StyleMatch("text-anchor:start", "text-anchor:middle", false), + StyleMatch("text-anchor:start", "", true ), // Default + StyleMatch("text-anchor:start", "text-anchor:junk", true ), // Bad value + + StyleMatch("font-weight:normal", "font-weight:400", true ), + StyleMatch("font-weight:bold", "font-weight:700", true ), + + + // SPIString and SPIFontString + StyleMatch("font-family:Arial", "font-family:Arial", true ), + StyleMatch("font-family:A B", "font-family:A B", true ), + StyleMatch("font-family:A B", "font-family:A C", false), + // Default is not set by class... value is NULL which cannot be compared + // StyleMatch("font-family:sans-serif", "", true ), // Default + + // SPIColor + StyleMatch("color:blue", "color:blue", true ), + StyleMatch("color:blue", "color:red", false), + StyleMatch("color:red", "color:#ff0000", true ), + + // SPIPaint + StyleMatch("fill:blue", "fill:blue", true ), + StyleMatch("fill:blue", "fill:red", false), + StyleMatch("fill:currentColor", "fill:currentColor", true ), + StyleMatch("fill:url(#xxx)", "fill:url(#xxx)", true ), + // Needs URL defined as in test 1 + //StyleMatch("fill:url(#xxx)", "fill:url(#yyy)", false), + + // SPIPaintOrder + StyleMatch("paint-order:markers", "paint-order:markers", true ), + StyleMatch("paint-order:markers", "paint-order:stroke", false), + //StyleMatch("paint-order:fill stroke markers", "", true ), // Default + StyleMatch("paint-order:normal", "paint-order:normal", true ), + //StyleMatch("paint-order:fill stroke markers", "paint-order:normal", true ), + + // SPIDashArray + StyleMatch("stroke-dasharray:0 1 2 3","stroke-dasharray:0 1 2 3",true ), + StyleMatch("stroke-dasharray:0 1", "stroke-dasharray:0 2", false), + + // SPIFilter + + // SPIFontSize + StyleMatch("font-size:12px", "font-size:12px", true ), + StyleMatch("font-size:12px", "font-size:24px", false), + StyleMatch("font-size:12ex", "font-size:24ex", false), + StyleMatch("font-size:medium", "font-size:medium", true ), + StyleMatch("font-size:medium", "font-size:large", false), + + // SPIBaselineShift + StyleMatch("baseline-shift:baseline", "baseline-shift:baseline", true ), + StyleMatch("baseline-shift:sub", "baseline-shift:sub", true ), + StyleMatch("baseline-shift:sub", "baseline-shift:super", false), + StyleMatch("baseline-shift:baseline", "baseline-shift:sub", false), + StyleMatch("baseline-shift:10px", "baseline-shift:10px", true ), + StyleMatch("baseline-shift:10px", "baseline-shift:12px", false), + + + // SPITextDecorationLine + StyleMatch("text-decoration-line:underline", "text-decoration-line:underline", true ), + StyleMatch("text-decoration-line:underline", "text-decoration-line:overline", false), + StyleMatch("text-decoration-line:underline overline", "text-decoration-line:underline overline", true ), + StyleMatch("text-decoration-line:none", "", true ), // Default + + + // SPITextDecorationStyle + StyleMatch("text-decoration-style:solid", "text-decoration-style:solid", true ), + StyleMatch("text-decoration-style:dotted", "text-decoration-style:solid", false), + StyleMatch("text-decoration-style:solid", "", true ), // Default + + // SPITextDecoration + StyleMatch("text-decoration:underline", "text-decoration:underline", true ), + StyleMatch("text-decoration:underline", "text-decoration:overline", false), + StyleMatch("text-decoration:underline overline","text-decoration:underline overline",true ), + StyleMatch("text-decoration:overline underline","text-decoration:underline overline",true ), + // StyleMatch("text-decoration:none", "text-decoration-color:currentColor", true ), // Default + + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector vect(all_style_data, all_style_data + count); + return vect; +} + +TEST(StyleTest, Match) { + std::vector all_style = getStyleMatchData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style_src; + SPStyle style_dst; + + style_src.mergeString( i.src.c_str() ); + style_dst.mergeString( i.dst.c_str() ); + + // std::cout << "Test:" << std::endl; + // std::cout << " C: |" << i.src + // << "| |" << i.dst << "|" << std::endl; + // std::cout << " S: |" << style_src.write( SP_STYLE_FLAG_IFSET ) + // << "| |" << style_dst.write( SP_STYLE_FLAG_IFSET ) << "|" < getStyleCascadeData() +{ + + StyleCascade all_style_data[] = { + + // SPIFloat + StyleCascade("stroke-miterlimit:6", "stroke-miterlimit:2", "stroke-miterlimit:2" ), + StyleCascade("stroke-miterlimit:6", "", "stroke-miterlimit:6" ), + StyleCascade("", "stroke-miterlimit:2", "stroke-miterlimit:2" ), + + // SPIScale24 + StyleCascade("opacity:0.3", "opacity:0.3", "opacity:0.3" ), + StyleCascade("opacity:0.3", "opacity:0.6", "opacity:0.6" ), + // 'opacity' does not inherit + StyleCascade("opacity:0.3", "", "opacity:1.0" ), + StyleCascade("", "opacity:0.3", "opacity:0.3" ), + StyleCascade("opacity:0.5", "opacity:inherit", "opacity:0.5" ), + StyleCascade("", "", "opacity:1.0" ), + + // SPILength + StyleCascade("text-indent:3", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:6", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:6px", "text-indent:3", "text-indent:3" ), + StyleCascade("text-indent:1px", "text-indent:12pc", "text-indent:12pc" ), + // ex, em cannot be equal + //StyleCascade("text-indent:2ex", "text-indent:2ex", "text-indent:2ex" ), + StyleCascade("text-indent:3", "", "text-indent:3" ), + StyleCascade("text-indent:3", "text-indent:inherit", "text-indent:3" ), + + // SPILengthOrNormal + StyleCascade("letter-spacing:normal", "letter-spacing:normal", "letter-spacing:normal" ), + StyleCascade("letter-spacing:2", "letter-spacing:normal", "letter-spacing:normal" ), + StyleCascade("letter-spacing:normal", "letter-spacing:2", "letter-spacing:2" ), + StyleCascade("letter-spacing:5px", "letter-spacing:5px", "letter-spacing:5px" ), + StyleCascade("letter-spacing:10px", "letter-spacing:5px", "letter-spacing:5px" ), + // ex, em cannot be equal + // StyleCascade("letter-spacing:10em", "letter-spacing:10em", "letter-spacing:10em" ), + + // SPIEnum + StyleCascade("text-anchor:start", "text-anchor:start", "text-anchor:start" ), + StyleCascade("text-anchor:start", "text-anchor:middle", "text-anchor:middle" ), + StyleCascade("text-anchor:start", "", "text-anchor:start" ), + StyleCascade("text-anchor:start", "text-anchor:junk", "text-anchor:start" ), + StyleCascade("text-anchor:end", "text-anchor:inherit", "text-anchor:end" ), + + StyleCascade("font-weight:400", "font-weight:400", "font-weight:400" ), + StyleCascade("font-weight:400", "font-weight:700", "font-weight:700" ), + StyleCascade("font-weight:400", "font-weight:bolder", "font-weight:700" ), + StyleCascade("font-weight:700", "font-weight:bolder", "font-weight:900" ), + StyleCascade("font-weight:400", "font-weight:lighter", "font-weight:100" ), + StyleCascade("font-weight:200", "font-weight:lighter", "font-weight:100" ), + + StyleCascade("font-stretch:condensed","font-stretch:expanded", "font-stretch:expanded" ), + StyleCascade("font-stretch:condensed","font-stretch:wider", "font-stretch:semi-condensed" ), + + // SPIString and SPIFontString + + // SPIPaint + + // SPIPaintOrder + + // SPIDashArray + + // SPIFilter + + // SPIFontSize + + // SPIBaselineShift + + + // SPITextDecorationLine + StyleCascade("text-decoration-line:overline", "text-decoration-line:underline", + "text-decoration-line:underline" ), + + // SPITextDecorationStyle + + // SPITextDecoration + }; + + size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); + std::vector vect(all_style_data, all_style_data + count); + return vect; + +} + +TEST(StyleTest, Cascade) { + std::vector all_style = getStyleCascadeData(); + EXPECT_GT(all_style.size(), 0); + for (auto i : all_style) { + + SPStyle style_parent; + SPStyle style_child; + SPStyle style_result; + + style_parent.mergeString( i.parent.c_str() ); + style_child.mergeString( i.child.c_str() ); + style_result.mergeString( i.result.c_str() ); + + // std::cout << "Test:" << std::endl; + // std::cout << " Input: "; + // std::cout << " Parent: " << i.parent + // << " Child: " << i.child + // << " Result: " << i.result << std::endl; + // std::cout << " Write: "; + // std::cout << " Parent: " << style_parent.write( SP_STYLE_FLAG_IFSET ) + // << " Child: " << style_child.write( SP_STYLE_FLAG_IFSET ) + // << " Result: " << style_result.write( SP_STYLE_FLAG_IFSET ) << std::endl; + + style_child.cascade( &style_parent ); + + EXPECT_TRUE(style_child == style_result ); + } +} + + +} // namespace + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : -- cgit v1.2.3 From 4cc0e04066adecf85955a9d6be972a4ba4d83f8b Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 13 Oct 2017 13:05:06 +0200 Subject: Implement !important rule handling for inline-style. Work from Jabier. Added "!important" rule tests to style-test.cpp. --- src/style-internal.cpp | 80 +++++++++++++++++++++++++------------------- src/style-internal.h | 42 +++++++++++++++++++++-- src/style.cpp | 9 ++++- testfiles/src/style-test.cpp | 22 +++++++++++- 4 files changed, 114 insertions(+), 39 deletions(-) diff --git a/src/style-internal.cpp b/src/style-internal.cpp index 5c2f5697f..666bd75c6 100644 --- a/src/style-internal.cpp +++ b/src/style-internal.cpp @@ -101,7 +101,7 @@ SPIFloat::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase con return (name + ":inherit;"); } else { Inkscape::CSSOStringStream os; - os << name << ":" << this->value << ";"; + os << name << ":" << this->value << important_str() << ";"; return os.str(); } } @@ -175,7 +175,7 @@ SPIScale24::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase c return (name + ":inherit;"); } else { Inkscape::CSSOStringStream os; - os << name << ":" << SP_SCALE24_TO_FLOAT(this->value) << ";"; + os << name << ":" << SP_SCALE24_TO_FLOAT(this->value) << important_str() << ";"; return os.str(); } } @@ -327,39 +327,41 @@ SPILength::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase co Inkscape::CSSOStringStream os; switch (this->unit) { case SP_CSS_UNIT_NONE: - os << name << ":" << this->computed << ";"; + os << name << ":" << this->computed; break; case SP_CSS_UNIT_PX: - os << name << ":" << this->computed << "px;"; + os << name << ":" << this->computed << "px"; break; case SP_CSS_UNIT_PT: - os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "pt") << "pt;"; + os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "pt") << "pt"; break; case SP_CSS_UNIT_PC: - os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "pc") << "pc;"; + os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "pc") << "pc"; break; case SP_CSS_UNIT_MM: - os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "mm") << "mm;"; + os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "mm") << "mm"; break; case SP_CSS_UNIT_CM: - os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "cm") << "cm;"; + os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "cm") << "cm"; break; case SP_CSS_UNIT_IN: - os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "in") << "in;"; + os << name << ":" << Inkscape::Util::Quantity::convert(this->computed, "px", "in") << "in"; break; case SP_CSS_UNIT_EM: - os << name << ":" << this->value << "em;"; + os << name << ":" << this->value << "em"; break; case SP_CSS_UNIT_EX: - os << name << ":" << this->value << "ex;"; + os << name << ":" << this->value << "ex"; break; case SP_CSS_UNIT_PERCENT: - os << name << ":" << (this->value * 100.0) << "%;"; + os << name << ":" << (this->value * 100.0) << "%"; break; default: /* Invalid */ break; } + os << important_str(); + os << ";"; return os.str(); } } @@ -477,7 +479,7 @@ SPILengthOrNormal::write( guint const flags, SPStyleSrc const &style_src_req, SP bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->normal) { - return (name + ":normal;"); + return (name + ":normal" + important_str() + ";"); } else { return SPILength::write(flags, style_src_req, base); } @@ -571,13 +573,15 @@ SPIFontVariationSettings::write( guint const flags, SPStyleSrc const &style_src_ bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->normal) { - return (name + ":normal;"); + return (name + ":normal" + important_str() + ";"); } else { Inkscape::CSSOStringStream os; for (std::map::const_iterator it=axes.begin(); it!=axes.end(); ++it){ os << "\"" << it->first << "\" " << it->second << " "; // FIXME: can we avoid the last space char ? } + os << important_str(); + os << ";"; return os.str(); } } @@ -645,11 +649,11 @@ SPIEnum::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase cons bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";" ); } for (unsigned i = 0; enums[i].key; ++i) { if (enums[i].value == static_cast< gint > (this->value) ) { - return (name + ":" + enums[i].key + ";"); + return (name + ":" + enums[i].key + important_str() + ";"); } } } @@ -782,10 +786,10 @@ SPIEnumBits::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";" ); } if (this->value == 0 ) { - return (name + ":normal"); + return (name + ":normal" + important_str() + ";" ); } Glib::ustring return_string = name + ":"; unsigned j = 1; @@ -796,6 +800,8 @@ SPIEnumBits::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase } j *= 2; } + return_string += important_str(); + return_string += ";"; return return_string; } return Glib::ustring(""); @@ -851,13 +857,13 @@ SPILigatures::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";"); } if (value == SP_CSS_FONT_VARIANT_LIGATURES_NONE ) { - return (name + ":none;"); + return (name + ":none" + important_str() + ";" ); } if (value == SP_CSS_FONT_VARIANT_LIGATURES_NORMAL ) { - return (name + ":normal;"); + return (name + ":normal" + important_str() + ";"); } Glib::ustring return_string = name + ":"; @@ -870,6 +876,7 @@ SPILigatures::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase if ( !(value & SP_CSS_FONT_VARIANT_LIGATURES_CONTEXTUAL) ) return_string += "no-contextual "; return_string.erase( return_string.size() - 1 ); + return_string += important_str(); return_string += ";"; return return_string; } @@ -950,10 +957,10 @@ SPINumeric::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase c bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";"); } if (value == SP_CSS_FONT_VARIANT_NUMERIC_NORMAL ) { - return (name + ":normal;"); + return (name + ":normal" + important_str() + ";"); } Glib::ustring return_string = name + ":"; @@ -974,6 +981,7 @@ SPINumeric::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase c if ( value & SP_CSS_FONT_VARIANT_NUMERIC_SLASHED_ZERO ) return_string += "slashed-zero "; return_string.erase( return_string.size() - 1 ); + return_string += important_str(); return_string += ";"; return return_string; } @@ -1019,19 +1027,19 @@ SPIString::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase co bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";"); } else { if( this->value ) { if( name.compare( "font-family" ) == 0 ) { Glib::ustring font_family( this->value ); css_font_family_quote( font_family ); - return (name + ":" + font_family + ";"); + return (name + ":" + font_family + important_str() + ";"); } else if( name.compare( "-inkscape-font-specification" ) == 0 ) { Glib::ustring font_spec( this->value ); css_quote( font_spec ); - return (name + ":" + font_spec + ";"); + return (name + ":" + font_spec + important_str() + ";"); } else { - return (name + ":" + this->value + ";"); + return (name + ":" + this->value + important_str() + ";"); } } } @@ -1154,7 +1162,7 @@ SPIColor::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase con } if ( !css.str().empty() ) { - return (name + ":" + css.str() + ";"); + return (name + ":" + css.str() + important_str() + ";"); } } @@ -1419,7 +1427,7 @@ SPIPaint::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase con } if ( !css.str().empty() ) { - return (name + ":" + css.str() + ";"); + return (name + ":" + css.str() + important_str() + ";"); } } @@ -1654,7 +1662,7 @@ SPIPaintOrder::write( guint const flags, SPStyleSrc const &style_src_req, SPIBas } } } - return (name + ":" + css.str() + ";"); + return (name + ":" + css.str() + important_str() + ";"); } return Glib::ustring(""); } @@ -1773,10 +1781,10 @@ const Glib::ustring SPIFilter::write( guint const flags, SPStyleSrc const &style bool src = (style_src_req == style_src || !(flags & SP_STYLE_FLAG_IFSRC)); if (should_write(flags, set, dfp, src)) { if (this->inherit) { - return (name + ":inherit;"); + return (name + ":inherit" + important_str() + ";"); } else if(this->href && this->href->getURI()) { gchar *uri = this->href->getURI()->toString(); - Glib::ustring retval = name + ":url(" + uri + ");"; + Glib::ustring retval = name + ":url(" + uri + ")" + important_str() + ";"; g_free(uri); return retval; } @@ -1922,6 +1930,7 @@ SPIDashArray::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase } os << this->values[i]; } + os << important_str(); os << ";"; return os.str(); } @@ -2044,7 +2053,7 @@ SPIFontSize::write( guint const flags, SPStyleSrc const &style_src_req, SPIBase } else if (this->type == SP_FONT_SIZE_PERCENTAGE) { css << (this->value * 100.0) << "%"; } - return (name + ":" + css.str() + ";"); + return (name + ":" + css.str() + important_str() + ";"); } return Glib::ustring(""); } @@ -2412,7 +2421,7 @@ SPIBaselineShift::write( guint const flags, SPStyleSrc const &style_src_req, SPI } else if (this->type == SP_BASELINE_SHIFT_PERCENTAGE) { css << (this->value * 100.0) << "%"; } - return (name + ":" + css.str() + ";"); + return (name + ":" + css.str() + important_str() + ";"); } return Glib::ustring(""); } @@ -2593,6 +2602,7 @@ SPITextDecorationLine::write( guint const flags, SPStyleSrc const &style_src_req } else { os << "none"; } + os << important_str(); os << ";"; return ( os.str() ); } @@ -2729,6 +2739,7 @@ SPITextDecorationStyle::write( guint const flags, SPStyleSrc const &style_src_re std::cerr << "SPITextDecorationStyle::write(): No valid value for property" << std::endl; return Glib::ustring(""); } + os << important_str(); os << ";"; return ( os.str() ); } @@ -2883,6 +2894,7 @@ SPITextDecoration::write( guint const flags, SPStyleSrc const &style_src_req, SP } else { os << "none"; } + os << important_str(); os << ";"; return ( os.str() ); } diff --git a/src/style-internal.h b/src/style-internal.h index c0b2f3e72..d8d2a37bc 100644 --- a/src/style-internal.h +++ b/src/style-internal.h @@ -59,6 +59,10 @@ enum SPStyleSrc { * reading in the properties backwards. If a property is already set, it * prevents an earlier property from being read. * + * A declaration with an "!important" rule overrides any other declarations (except those that + * also have an "!important" rule). Attributes can not use the "!important" rule and the rule + * is not inherited. + * * In order for cascading to work, each element in the tree must be read in from top to bottom * (parent before child). At each step, if a style property is not explicitly set, the property * value is taken from the parent. Some properties have "computed" values that depend on: @@ -122,6 +126,7 @@ public: inherits(inherits), set(false), inherit(false), + important(false), style_src(SP_STYLE_SRC_STYLE_PROP), // Default to property, see bug 1662285. style(NULL) {} @@ -131,14 +136,43 @@ public: virtual void read( gchar const *str ) = 0; virtual void readIfUnset( gchar const *str, SPStyleSrc const &source = SP_STYLE_SRC_STYLE_PROP ) { - if ( !set ) { - read( str ); + if (!str) return; + + bool has_important = false; + Glib::ustring stripped = strip_important(str, has_important); // Sets 'has_important' + + // '!important' is invalid on attributes, don't read. + if (source == SP_STYLE_SRC_ATTRIBUTE && has_important){ + return; + } + + if ( !set || (has_important && !important) ) { + read( stripped.c_str() ); if ( set ) { style_src = source; + if (has_important) { + important = true; + } } } } + Glib::ustring important_str() const { + return Glib::ustring(important ? " !important" : ""); + } + + Glib::ustring strip_important( gchar const *str, bool &important ) { + assert (str != NULL); + Glib::ustring string = Glib::ustring(str); + auto pos = string.rfind( " !important" ); + important = false; + if (pos != std::string::npos) { + important = true; + string.erase(pos); + } + return string; + } + virtual void readAttribute( Inkscape::XML::Node *repr ) { readIfUnset( repr->attribute( name.c_str() ), SP_STYLE_SRC_ATTRIBUTE ); } @@ -147,7 +181,7 @@ public: SPStyleSrc const &style_src_req = SP_STYLE_SRC_STYLE_PROP, SPIBase const *const base = NULL ) const = 0; virtual void clear() { - set = false, inherit = false; + set = false, inherit = false, important = false; } virtual void cascade( const SPIBase* const parent ) = 0; @@ -162,6 +196,7 @@ public: name = rhs.name; inherits = rhs.inherits; set = rhs.set; + important = rhs.important; inherit = rhs.inherit; style_src = rhs.style_src; style = rhs.style; @@ -183,6 +218,7 @@ public: unsigned inherits : 1; // Property inherits by default from parent. unsigned set : 1; // Property has been explicitly set (vs. inherited). unsigned inherit : 1; // Property value set to 'inherit'. + unsigned important : 1; // Property rule 'important' has been explicitly set. SPStyleSrc style_src : 2; // Source (attribute, style attribute, style-sheet). // To do: make private after g_asserts removed diff --git a/src/style.cpp b/src/style.cpp index 36d669301..d5bbcd9ce 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -1153,9 +1153,16 @@ SPStyle::_mergeDecl( CRDeclaration const *const decl, SPStyleSrc const &source * convert to string. Alternatively, set from CRTerm directly rather * than converting to string. */ + guchar *const str_value_unsigned = cr_term_to_string(decl->value); gchar *const str_value = reinterpret_cast(str_value_unsigned); - readIfUnset( prop_idx, str_value, source ); + + // Add "!important" rule if necessary as this is not handled by cr_term_to_string(). + gchar const * important = decl->important ? " !important" : ""; + Inkscape::CSSOStringStream os; + os << str_value << important; + + readIfUnset( prop_idx, os.str().c_str(), source ); g_free(str_value); } } diff --git a/testfiles/src/style-test.cpp b/testfiles/src/style-test.cpp index 9fd25f31a..8c0f4dd5f 100644 --- a/testfiles/src/style-test.cpp +++ b/testfiles/src/style-test.cpp @@ -226,7 +226,27 @@ std::vector getStyleData() StyleRead("paint-order:normal"), StyleRead("paint-order: markers stroke fill", "paint-order:markers stroke fill"), - }; + // !important (in order of appearance in style-internal.h) + StyleRead("stroke-miterlimit:4 !important"), // SPIFloat + StyleRead("stroke-opacity:0.5 !important"), // SPIScale24 + StyleRead("stroke-width:2px !important"), // SPILength + StyleRead("line-height:24px !important"), // SPILengthOrNormal + StyleRead("line-height:normal !important"), + StyleRead("font-stretch:condensed !important"), // SPIEnum + StyleRead("marker:url(#Arrow) !important"), // SPIString + StyleRead("color:#0000ff !important"), // SPIColor + StyleRead("fill:none !important"), // SPIPaint + StyleRead("fill:currentColor !important"), + StyleRead("fill:#ff00ff !important"), + StyleRead("paint-order:stroke !important"), // SPIPaintOrder + StyleRead("paint-order:normal !important"), + StyleRead("stroke-dasharray:0, 1, 0, 1 !important"), // SPIDashArray + StyleRead("font-size:12px !important"), // SPIFontSize + StyleRead("baseline-shift:baseline !important"), // SPIBaselineShift + StyleRead("baseline-shift:sub !important"), + //StyleRead("text-decoration-line: underline !important"), // SPITextDecorationLine + + }; size_t count = sizeof(all_style_data) / sizeof(all_style_data[0]); std::vector vect(all_style_data, all_style_data + count); -- cgit v1.2.3 From 8fcafa5b89139302eb7cb7433dacfc804ae77d9a Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 13 Oct 2017 14:10:03 +0200 Subject: Add test file for previous commit (!important rule for inline-style). --- testfiles/rendering_tests/CMakeLists.txt | 1 + .../selector-important-003-large.png | Bin 0 -> 11308 bytes .../expected_rendering/selector-important-003.png | Bin 0 -> 925 bytes .../rendering_tests/selector-important-003.svg | 57 +++++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 testfiles/rendering_tests/expected_rendering/selector-important-003-large.png create mode 100644 testfiles/rendering_tests/expected_rendering/selector-important-003.png create mode 100644 testfiles/rendering_tests/selector-important-003.svg diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt index 361ab45a4..8db01d97a 100644 --- a/testfiles/rendering_tests/CMakeLists.txt +++ b/testfiles/rendering_tests/CMakeLists.txt @@ -5,6 +5,7 @@ set(RENDERING_TESTS test-glyph-y-pos test-rtl-vertical selector-important-002 + selector-important-003 ) diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png b/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png new file mode 100644 index 000000000..91cb3afa9 Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/selector-important-003-large.png differ diff --git a/testfiles/rendering_tests/expected_rendering/selector-important-003.png b/testfiles/rendering_tests/expected_rendering/selector-important-003.png new file mode 100644 index 000000000..dfe3dbc5a Binary files /dev/null and b/testfiles/rendering_tests/expected_rendering/selector-important-003.png differ diff --git a/testfiles/rendering_tests/selector-important-003.svg b/testfiles/rendering_tests/selector-important-003.svg new file mode 100644 index 000000000..831319f5c --- /dev/null +++ b/testfiles/rendering_tests/selector-important-003.svg @@ -0,0 +1,57 @@ + + + Style "!important" — 003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From 5433ac0513099a4a12caba0cda8a2a9d30e13a22 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Fri, 13 Oct 2017 19:03:28 +0200 Subject: Remove deprecated GNOME VFS Just use Gio::File when access to non-local files is needed. --- CMakeLists.txt | 2 - CMakeScripts/DefineDependsandFlags.cmake | 10 ---- CMakeScripts/Modules/FindGnomeVFS2.cmake | 90 ------------------------------- config.h.cmake | 3 -- packaging/autopackage/default.apspec.in | 2 +- snap/snapcraft.yaml | 2 - src/doxygen-main.dox | 5 -- src/extension/dbus/document-interface.cpp | 5 +- src/extension/internal/svg.cpp | 83 ++++++++-------------------- src/file.cpp | 89 ------------------------------ src/file.h | 7 --- src/ui/dialog/export.cpp | 10 +--- src/ui/dialog/filedialogimpl-gtkmm.cpp | 50 ++++++----------- 13 files changed, 41 insertions(+), 317 deletions(-) delete mode 100644 CMakeScripts/Modules/FindGnomeVFS2.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b643b2b6..4732766c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,7 +90,6 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output di # ----------------------------------------------------------------------------- option(WITH_DBUS "Compile with support for DBus interface" OFF) option(ENABLE_LCMS "Compile with LCMS support" ON) -option(WITH_GNOME_VFS "Compile with support for Gnome VFS" ON) option(WITH_SVG2 "Compile with support for new SVG2 features" ON) option(WITH_LPETOOL "Compile with LPE Tool and experimental LPEs enabled" ON) option(WITH_OPENMP "Compile with OpenMP support" ON) @@ -273,7 +272,6 @@ message("ENABLE_POPPLER: ${ENABLE_POPPLER}") message("ENABLE_POPPLER_CAIRO: ${ENABLE_POPPLER_CAIRO}") message("GMOCK_PRESENT: ${GMOCK_PRESENT}") message("WITH_DBUS: ${WITH_DBUS}") -message("WITH_GNOME_VFS: ${WITH_GNOME_VFS}") message("WITH_GTKSPELL: ${WITH_GTKSPELL}") message("WITH_IMAGE_MAGICK: ${WITH_IMAGE_MAGICK}") message("WITH_LIBCDR: ${WITH_LIBCDR}") diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index 48979c67e..b1ffbc9c8 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -59,16 +59,6 @@ if(APPLE AND DEFINED ENV{CMAKE_PREFIX_PATH}) endif() -if(WITH_GNOME_VFS) - find_package(GnomeVFS2) - if(GNOMEVFS2_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${GNOMEVFS2_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${GNOMEVFS-2_LIBRARY}) - else() - set(WITH_GNOME_VFS OFF) - endif() -endif() - find_package(JeMalloc) if (JEMALLOC_FOUND) list(APPEND INKSCAPE_LIBS ${JEMALLOC_LIBRARIES}) diff --git a/CMakeScripts/Modules/FindGnomeVFS2.cmake b/CMakeScripts/Modules/FindGnomeVFS2.cmake deleted file mode 100644 index d942addac..000000000 --- a/CMakeScripts/Modules/FindGnomeVFS2.cmake +++ /dev/null @@ -1,90 +0,0 @@ -# - Try to find GnomeVFS2 -# Once done this will define -# -# GNOMEVFS2_FOUND - system has GnomeVFS2 -# GNOMEVFS2_INCLUDE_DIRS - the GnomeVFS2 include directory -# GNOMEVFS2_LIBRARIES - Link these to use GnomeVFS2 -# GNOMEVFS2_DEFINITIONS - Compiler switches required for using GnomeVFS2 -# -# Copyright (c) 2008 Joshua L. Blocher -# -# Redistribution and use is allowed according to the terms of the New -# BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -# - - -if (GNOMEVFS2_LIBRARIES AND GNOMEVFS2_INCLUDE_DIRS) - # in cache already - set(GNOMEVFS2_FOUND TRUE) -else (GNOMEVFS2_LIBRARIES AND GNOMEVFS2_INCLUDE_DIRS) - # use pkg-config to get the directories and then use these values - # in the FIND_PATH() and FIND_LIBRARY() calls - if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - include(UsePkgConfig) - pkgconfig(gnome-vfs-2.0 _GNOMEVFS2_INCLUDEDIR _GNOMEVFS2_LIBDIR _GNOMEVFS2_LDFLAGS _GNOMEVFS2_CFLAGS) - else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(_GNOMEVFS2 gnome-vfs-2.0) - endif (PKG_CONFIG_FOUND) - endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) - find_path(GNOMEVFS2_INCLUDE_DIR - NAMES - libgnomevfs/gnome-vfs.h - PATHS - ${_GNOMEVFS2_INCLUDEDIR} - /usr/include - /usr/local/include - /opt/local/include - /sw/include - $ENV{DEVLIBS_PATH}//include// - PATH_SUFFIXES - gnome-vfs-2.0 - ) - - find_library(GNOMEVFS-2_LIBRARY - NAMES - gnomevfs-2 - PATHS - ${_GNOMEVFS2_LIBDIR} - /usr/lib - /usr/local/lib - /opt/local/lib - /sw/lib - ) - - if (GNOMEVFS-2_LIBRARY) - set(GNOMEVFS-2_FOUND TRUE) - endif (GNOMEVFS-2_LIBRARY) - - set(GNOMEVFS2_INCLUDE_DIRS - ${GNOMEVFS2_INCLUDE_DIR} - ) - - if (GNOMEVFS-2_FOUND) - set(GNOMEVFS2_LIBRARIES - ${GNOMEVFS2_LIBRARIES} - ${GNOMEVFS-2_LIBRARY} - ) - endif (GNOMEVFS-2_FOUND) - - if (GNOMEVFS2_INCLUDE_DIRS AND GNOMEVFS2_LIBRARIES) - set(GNOMEVFS2_FOUND TRUE) - endif (GNOMEVFS2_INCLUDE_DIRS AND GNOMEVFS2_LIBRARIES) - - if (GNOMEVFS2_FOUND) - if (NOT GnomeVFS2_FIND_QUIETLY) - message(STATUS "Found GnomeVFS2: ${GNOMEVFS2_LIBRARIES}") - endif (NOT GnomeVFS2_FIND_QUIETLY) - else (GNOMEVFS2_FOUND) - if (GnomeVFS2_FIND_REQUIRED) - message(FATAL_ERROR "Could not find GnomeVFS2") - endif (GnomeVFS2_FIND_REQUIRED) - endif (GNOMEVFS2_FOUND) - - # show the GNOMEVFS2_INCLUDE_DIRS and GNOMEVFS2_LIBRARIES variables only in the advanced view - mark_as_advanced(GNOMEVFS2_INCLUDE_DIRS GNOMEVFS2_LIBRARIES) - -endif (GNOMEVFS2_LIBRARIES AND GNOMEVFS2_INCLUDE_DIRS) - diff --git a/config.h.cmake b/config.h.cmake index 60bea0d8d..f341b745b 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -179,9 +179,6 @@ /* Build in dbus */ #cmakedefine WITH_DBUS 1 -/* Use gnome vfs file load functionality */ -#cmakedefine WITH_GNOME_VFS 1 - /* enable gtk spelling widget */ #cmakedefine WITH_GTKSPELL 1 diff --git a/packaging/autopackage/default.apspec.in b/packaging/autopackage/default.apspec.in index 70a89fef7..e477ea982 100644 --- a/packaging/autopackage/default.apspec.in +++ b/packaging/autopackage/default.apspec.in @@ -25,7 +25,7 @@ CPPFLAGS="-fno-stack-protector -I/usr/local/src/inkscape/extra/static/include" LDFLAGS="-L/usr/local/src/inkscape/extra/static/lib" CXX="ccache apg++" export PATH PKG_CONFIG_PATH CPPFLAGS LDFLAGS CXX -prepareBuild --enable-binreloc --with-gnome-vfs=no --enable-lcms +prepareBuild --enable-binreloc --enable-lcms [BuildUnprepare] unprepareBuild diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 6ef3a2f54..4956ce6a7 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -32,7 +32,6 @@ parts: - libgc-dev - libgdl-3-dev - libglib2.0-dev - - libgnomevfs2-dev - libgsl-dev - libgtk-3-dev - libgtkmm-3.0-dev @@ -66,7 +65,6 @@ parts: - libcdr-0.1-1 - libgdk-pixbuf2.0-0 - libglibmm-2.4-1v5 - - libgnomevfs2-0 - libgtkmm-2.4-1v5 - libgtkspell0 - liblcms2-2 diff --git a/src/doxygen-main.dox b/src/doxygen-main.dox index faa11cc9e..c714c2cbf 100644 --- a/src/doxygen-main.dox +++ b/src/doxygen-main.dox @@ -178,13 +178,8 @@ namespace XML {} * GObject * atk * pango - * ORBit - * bonobo - * bonobo-activation * libxslt * libxml2 - * Legacy: - * GnomeVFS * * \subsection stdlinks External standards documentation * diff --git a/src/extension/dbus/document-interface.cpp b/src/extension/dbus/document-interface.cpp index 435e347d0..513ec2f5c 100644 --- a/src/extension/dbus/document-interface.cpp +++ b/src/extension/dbus/document-interface.cpp @@ -968,10 +968,7 @@ document_interface_save_as (DocumentInterface *doc_interface, { // FIXME: Isn't there a verb we can use for this instead? SPDocument * doc = doc_interface->target.getDocument(); - #ifdef WITH_GNOME_VFS - const Glib::ustring file(filename); - return file_save_remote(doc, file, NULL, TRUE, TRUE); - #endif + if (!doc || strlen(filename)<1) { //Safety check return false; } diff --git a/src/extension/internal/svg.cpp b/src/extension/internal/svg.cpp index 9cde90519..b05a7c19b 100644 --- a/src/extension/internal/svg.cpp +++ b/src/extension/internal/svg.cpp @@ -17,21 +17,20 @@ #ifdef HAVE_CONFIG_H # include #endif + +#include +#include + #include "sp-object.h" #include "svg.h" #include "file.h" #include "extension/system.h" #include "extension/output.h" -#include #include "xml/attribute-record.h" #include "xml/simple-document.h" #include "sp-root.h" #include "document.h" -#ifdef WITH_GNOME_VFS -# include -#endif - namespace Inkscape { namespace Extension { namespace Internal { @@ -157,80 +156,42 @@ Svg::init(void) "\n" "", new Svg()); -#ifdef WITH_GNOME_VFS - gnome_vfs_init(); -#endif - - return; } -#ifdef WITH_GNOME_VFS -#define BUF_SIZE 8192 - -static gchar * -_load_uri (const gchar *uri) -{ - GnomeVFSHandle *handle = NULL; - GnomeVFSFileSize bytes_read; - - gsize bytesRead = 0; - gsize bytesWritten = 0; - GError* error = NULL; - gchar* uri_local = g_filename_from_utf8( uri, -1, &bytesRead, &bytesWritten, &error); - - if ( uri_local == NULL ) { - g_warning( "Error converting filename to locale encoding."); - } - - GnomeVFSResult result = gnome_vfs_open (&handle, uri_local, GNOME_VFS_OPEN_READ); - - if (result != GNOME_VFS_OK) { - g_warning("%s", gnome_vfs_result_to_string(result)); - } - - std::vector doc; - while (result == GNOME_VFS_OK) { - gchar buffer[BUF_SIZE]; - result = gnome_vfs_read (handle, buffer, BUF_SIZE, &bytes_read); - doc.insert(doc.end(), buffer, buffer+bytes_read); - } - - return g_strndup(&doc[0], doc.size()); -} -#endif - - /** \return A new document just for you! \brief This function takes in a filename of a SVG document and turns it into a SPDocument. \param mod Module to use - \param uri The path to the file (UTF-8) + \param uri The path or URI to the file (UTF-8) This function is really simple, it just calls sp_document_new... */ SPDocument * Svg::open (Inkscape::Extension::Input */*mod*/, const gchar *uri) { -#ifdef WITH_GNOME_VFS - if (!gnome_vfs_initialized() || gnome_vfs_uri_is_local(gnome_vfs_uri_new(uri))) { - // Use built-in loader instead of VFS for this - return SPDocument::createNewDoc(uri, TRUE); - } - gchar * buffer = _load_uri(uri); - if (buffer == NULL) { - g_warning("Error: Could not open file '%s' with VFS\n", uri); - return NULL; + auto file = Gio::File::create_for_uri(uri); + const auto path = file->get_path(); + + if (!file->get_uri_scheme().empty()) { + if (path.empty()) { + try { + char *contents; + gsize length; + file->load_contents(contents, length); + return SPDocument::createNewDocFromMem(contents, length, 1); + } catch (Gio::Error &e) { + g_warning("Could not load contents of non-local URI %s\n", uri); + return NULL; + } + } else { + uri = path.c_str(); + } } - SPDocument * doc = SPDocument::createNewDocFromMem(buffer, strlen(buffer), 1); - g_free(buffer); - return doc; -#else return SPDocument::createNewDoc(uri, TRUE); -#endif } /** diff --git a/src/file.cpp b/src/file.cpp index 549ed7d6e..320016a41 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -71,10 +71,6 @@ using Inkscape::DocumentUndo; using Inkscape::IO::Resource::TEMPLATES; using Inkscape::IO::Resource::USER; -#ifdef WITH_GNOME_VFS -# include -#endif - #ifdef WITH_DBUS #include "extension/dbus/dbus-init.h" #endif @@ -687,91 +683,6 @@ file_save(Gtk::Window &parentWindow, SPDocument *doc, const Glib::ustring &uri, return true; } -/* - * Used only for remote saving using VFS and a specific uri. Gets the file at the /tmp. - */ -bool -file_save_remote(SPDocument */*doc*/, - #ifdef WITH_GNOME_VFS - const Glib::ustring &uri, - #else - const Glib::ustring &/*uri*/, - #endif - Inkscape::Extension::Extension */*key*/, bool /*saveas*/, bool /*official*/) -{ -#ifdef WITH_GNOME_VFS - -#define BUF_SIZE 8192 - gnome_vfs_init(); - - GnomeVFSHandle *from_handle = NULL; - GnomeVFSHandle *to_handle = NULL; - GnomeVFSFileSize bytes_read; - GnomeVFSFileSize bytes_written; - GnomeVFSResult result; - guint8 buffer[8192]; - - gchar* uri_local = g_filename_from_utf8( uri.c_str(), -1, NULL, NULL, NULL); - - if ( uri_local == NULL ) { - g_warning( "Error converting filename to locale encoding."); - } - - // Gets the temp file name. - Glib::ustring fileName = Glib::get_tmp_dir (); - fileName.append(G_DIR_SEPARATOR_S); - fileName.append((gnome_vfs_uri_extract_short_name(gnome_vfs_uri_new(uri_local)))); - - // Open the temp file to send. - result = gnome_vfs_open (&from_handle, fileName.c_str(), GNOME_VFS_OPEN_READ); - - if (result != GNOME_VFS_OK) { - g_warning("Could not find the temp saving."); - return false; - } - - gnome_vfs_create (&to_handle, uri_local, GNOME_VFS_OPEN_WRITE, FALSE, GNOME_VFS_PERM_USER_ALL); - result = gnome_vfs_open (&to_handle, uri_local, GNOME_VFS_OPEN_WRITE); - - if (result != GNOME_VFS_OK) { - g_warning("file creating: %s", gnome_vfs_result_to_string(result)); - return false; - } - - while (1) { - - result = gnome_vfs_read (from_handle, buffer, 8192, &bytes_read); - - if ((result == GNOME_VFS_ERROR_EOF) &&(!bytes_read)){ - gnome_vfs_close (from_handle); - gnome_vfs_close (to_handle); - return true; - } - - if (result != GNOME_VFS_OK) { - g_warning("%s", gnome_vfs_result_to_string(result)); - return false; - } - result = gnome_vfs_write (to_handle, buffer, bytes_read, &bytes_written); - if (result != GNOME_VFS_OK) { - g_warning("%s", gnome_vfs_result_to_string(result)); - return false; - } - - - if (bytes_read != bytes_written){ - return false; - } - - } - return true; -#else - // in case we do not have GNOME_VFS - return false; -#endif - -} - /** * Check if a string ends with another string. diff --git a/src/file.h b/src/file.h index 9cd22d744..c86f065d3 100644 --- a/src/file.h +++ b/src/file.h @@ -86,13 +86,6 @@ void sp_file_revert_dialog (); ## S A V E ######################*/ -/* - * Added to make only the remote savings. - */ - -bool file_save_remote(SPDocument *doc, const Glib::ustring &uri, - Inkscape::Extension::Extension *key, bool saveas, bool official); - /** * */ diff --git a/src/ui/dialog/export.cpp b/src/ui/dialog/export.cpp index 56f3a29c0..d878b50a4 100644 --- a/src/ui/dialog/export.cpp +++ b/src/ui/dialog/export.cpp @@ -27,10 +27,6 @@ #include #include -#ifdef WITH_GNOME_VFS -# include // gnome_vfs_initialized -#endif - #include #include @@ -1300,11 +1296,7 @@ void Export::onBrowse () _("_Save"), GTK_RESPONSE_ACCEPT, NULL ); -#ifdef WITH_GNOME_VFS - if (gnome_vfs_initialized()) { - gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(fs), false); - } -#endif + gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(fs), false); sp_transientize (fs); diff --git a/src/ui/dialog/filedialogimpl-gtkmm.cpp b/src/ui/dialog/filedialogimpl-gtkmm.cpp index b69e9ce97..64f6c98c6 100644 --- a/src/ui/dialog/filedialogimpl-gtkmm.cpp +++ b/src/ui/dialog/filedialogimpl-gtkmm.cpp @@ -31,10 +31,6 @@ #include "path-prefix.h" #include "preferences.h" -#ifdef WITH_GNOME_VFS -#include -#endif - #include #include @@ -663,11 +659,9 @@ void FileDialogBaseGtk::_updatePreviewCallback() Glib::ustring fileName = get_preview_filename(); bool enabled = previewCheckbox.get_active(); -#ifdef WITH_GNOME_VFS - if (fileName.empty() && gnome_vfs_initialized()) { + if (fileName.empty()) { fileName = get_preview_uri(); } -#endif if (enabled && !fileName.empty()) { svgPreview.set(fileName, _dialogType); @@ -698,11 +692,7 @@ FileOpenDialogImplGtk::FileOpenDialogImplGtk(Gtk::Window &parentWindow, const Gl set_select_multiple(true); } -#ifdef WITH_GNOME_VFS - if (gnome_vfs_initialized()) { - set_local_only(false); - } -#endif + set_local_only(false); /* Initalize to Autodetect */ extension = NULL; @@ -883,10 +873,11 @@ bool FileOpenDialogImplGtk::show() extension = extensionMap[gtk_file_filter_get_name(filter)]; } myFilename = get_filename(); -#ifdef WITH_GNOME_VFS - if (myFilename.empty() && gnome_vfs_initialized()) + + if (myFilename.empty()) { myFilename = get_uri(); -#endif + } + cleanup(true); return true; } else { @@ -928,10 +919,10 @@ std::vector FileOpenDialogImplGtk::getFilenames() for (auto it : result_tmp) result.push_back(it); -#ifdef WITH_GNOME_VFS - if (result.empty() && gnome_vfs_initialized()) + if (result.empty()) { result = get_uris(); -#endif + } + return result; } @@ -963,11 +954,7 @@ FileSaveDialogImplGtk::FileSaveDialogImplGtk(Gtk::Window &parentWindow, const Gl /* One file at a time */ set_select_multiple(false); -#ifdef WITH_GNOME_VFS - if (gnome_vfs_initialized()) { - set_local_only(false); - } -#endif + set_local_only(false); /* Initalize to Autodetect */ extension = NULL; @@ -1310,11 +1297,11 @@ void FileSaveDialogImplGtk::updateNameAndExtension() { // Pick up any changes the user has typed in. Glib::ustring tmp = get_filename(); -#ifdef WITH_GNOME_VFS - if (tmp.empty() && gnome_vfs_initialized()) { + + if (tmp.empty()) { tmp = get_uri(); } -#endif + if (!tmp.empty()) { myFilename = tmp; } @@ -1449,11 +1436,7 @@ FileExportDialogImpl::FileExportDialogImpl(Gtk::Window &parentWindow, const Glib /* One file at a time */ set_select_multiple(false); -#ifdef WITH_GNOME_VFS - if (gnome_vfs_initialized()) { - set_local_only(false); - } -#endif + set_local_only(false); /* Initalize to Autodetect */ extension = NULL; @@ -1634,11 +1617,10 @@ bool FileExportDialogImpl::show() extension = type.extension; } myFilename = get_filename(); -#ifdef WITH_GNOME_VFS - if (myFilename.empty() && gnome_vfs_initialized()) { + + if (myFilename.empty()) { myFilename = get_uri(); } -#endif /* -- cgit v1.2.3 From ee527cbb228c6fba9c83bba5058d1a68ac647060 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 14 Oct 2017 21:29:10 +0200 Subject: Fixing problems with nested LPE and convert to paths --- src/live_effects/effect.cpp | 4 +-- src/live_effects/lpe-bendpath.cpp | 8 ++++++ src/live_effects/lpe-bendpath.h | 2 ++ src/live_effects/lpe-measure-segments.h | 2 +- src/path-chemistry.cpp | 2 -- src/selection-chemistry.cpp | 4 +++ src/sp-ellipse.cpp | 6 ++--- src/sp-item-group.cpp | 6 +---- src/sp-item.cpp | 8 +++--- src/sp-lpe-item.cpp | 48 ++++++++++++++++++++++----------- src/sp-lpe-item.h | 7 +++-- src/sp-spiral.cpp | 6 ++--- src/sp-star.cpp | 9 ++++--- 13 files changed, 69 insertions(+), 43 deletions(-) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 2e1160764..5674e29dc 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -563,8 +563,8 @@ void Effect::doBeforeEffect_impl(SPLPEItem const* lpeitem) setCurrentShape(shape); doBeforeEffect(lpeitem); if (apply_to_clippath_and_mask && SP_IS_GROUP(sp_lpe_item)) { - sp_lpe_item->apply_to_clippath(sp_lpe_item); - sp_lpe_item->apply_to_mask(sp_lpe_item); + sp_lpe_item->applyToClipPath(sp_lpe_item); + sp_lpe_item->applyToMask(sp_lpe_item); } update_helperpath(); } diff --git a/src/live_effects/lpe-bendpath.cpp b/src/live_effects/lpe-bendpath.cpp index 39714e629..ff5f738eb 100644 --- a/src/live_effects/lpe-bendpath.cpp +++ b/src/live_effects/lpe-bendpath.cpp @@ -151,6 +151,14 @@ LPEBendPath::resetDefaults(SPItem const* item) bend_path.set_new_value( path.toPwSb(), true ); } +void +LPEBendPath::transform_multiply(Geom::Affine const& postmul, bool set) +{ + if (sp_lpe_item) { + sp_lpe_item_update_patheffect(sp_lpe_item, false, false); + } +} + void LPEBendPath::addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector &hp_vec) { diff --git a/src/live_effects/lpe-bendpath.h b/src/live_effects/lpe-bendpath.h index 54c5d70fe..f232687ce 100644 --- a/src/live_effects/lpe-bendpath.h +++ b/src/live_effects/lpe-bendpath.h @@ -43,6 +43,8 @@ public: virtual void resetDefaults(SPItem const* item); + virtual void transform_multiply(Geom::Affine const& postmul, bool set); + void addCanvasIndicators(SPLPEItem const */*lpeitem*/, std::vector &hp_vec); virtual void addKnotHolderEntities(KnotHolder * knotholder, SPItem * item); diff --git a/src/live_effects/lpe-measure-segments.h b/src/live_effects/lpe-measure-segments.h index 3b14fb191..903a5cbd2 100644 --- a/src/live_effects/lpe-measure-segments.h +++ b/src/live_effects/lpe-measure-segments.h @@ -44,7 +44,7 @@ public: virtual void doOnRemove (SPLPEItem const* /*lpeitem*/); virtual void doEffect (SPCurve * curve){}; //stop the chain virtual void doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/); - virtual void transform_multiply(Geom::Affine const& postmul, bool set); + virtual void transform_multiply(Geom::Affine const& postmul, bool set); virtual Geom::PathVector doEffect_path(Geom::PathVector const &path_in); void createLine(Geom::Point start,Geom::Point end, const char * id, bool main, bool remove, bool arrows = false); void createTextLabel(Geom::Point pos, size_t counter, double length, Geom::Coord angle, bool remove, bool valid); diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 89cf6fb43..67a742ed2 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -556,8 +556,6 @@ sp_selected_item_to_curved_repr(SPItem *item, guint32 /*text_grouping_policy*/) return g_repr; } - - SP_LPE_ITEM(item)->removeAllPathEffects(true); SPCurve *curve = NULL; { SPShape *shape = dynamic_cast(item); diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 863d8858a..0bd611163 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -761,6 +761,10 @@ Inkscape::XML::Node* ObjectSet::group() { group->setPosition(topmost + 1); set(doc->getObjectByRepr(group)); + SPLPEItem *lpeitem = dynamic_cast(*(items().begin())); + if (lpeitem) { + sp_lpe_item_update_patheffect(lpeitem, true, true); + } DocumentUndo::done(doc, SP_VERB_SELECTION_GROUP, C_("Verb", "Group")); diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index bf50128f6..166237c8e 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -505,9 +505,9 @@ Geom::Affine SPGenericEllipse::set_transform(Geom::Affine const &xform) { if (hasPathEffect() && pathEffectsEnabled() && (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) { // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' // also if the effect is type BEND PATH to fix bug #179842 diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 27bee1541..3d4d7b253 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -967,11 +967,7 @@ sp_group_perform_patheffect(SPGroup *group, SPGroup *top_group, bool write) } } } - //SPPath *sub_path = dynamic_cast(sub_shape); - c = sub_shape->getCurveBeforeLPE(); - if (!c || (sub_shape->getCurve() != c)) { - c = sub_shape->getCurve(); - } + c = sub_shape->getCurve(); bool success = false; // only run LPEs when the shape has a curve defined if (c) { diff --git a/src/sp-item.cpp b/src/sp-item.cpp index a780f1a29..3fef28e5b 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -1406,9 +1406,11 @@ void SPItem::adjust_livepatheffect (Geom::Affine const &postmul, bool set) for (PathEffectList::iterator it = effect_list.begin(); it != effect_list.end(); ++it) { LivePathEffectObject *lpeobj = (*it)->lpeobject; - if (lpeobj && lpeobj->get_lpe()) { - Inkscape::LivePathEffect::Effect * effect = lpeobj->get_lpe(); - effect->transform_multiply(postmul, set); + if (lpeobj) { + Inkscape::LivePathEffect::Effect * lpe = lpeobj->get_lpe(); + if (lpe && lpe->isReady()) { + lpe->transform_multiply(postmul, set); + } } } } diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index 6e30419ef..c0688f869 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -35,6 +35,7 @@ #include "inkscape.h" #include "desktop.h" #include "ui/shape-editor.h" +#include "path-chemistry.h" #include "sp-ellipse.h" #include "display/curve.h" #include "svg/svg.h" @@ -304,8 +305,8 @@ bool SPLPEItem::performPathEffect(SPCurve *curve, SPShape *current, bool is_clip } } if(!SP_IS_GROUP(this) && !is_clip_or_mask && has_clipormask_lpe){ - this->apply_to_clippath(this); - this->apply_to_mask(this); + this->applyToClipPath(this); + this->applyToMask(this); } } return true; @@ -437,7 +438,9 @@ sp_lpe_item_cleanup_original_path_recursive(SPLPEItem *lpeitem, bool keep_paths) } repr->setAttribute("inkscape:original-d", NULL); } else { - sp_lpe_item_update_patheffect(lpeitem, true, true); + if (!keep_paths) { + sp_lpe_item_update_patheffect(lpeitem, true, true); + } } } else if (SP_IS_SHAPE(lpeitem)) { Inkscape::XML::Node *repr = lpeitem->getRepr(); @@ -451,14 +454,25 @@ sp_lpe_item_cleanup_original_path_recursive(SPLPEItem *lpeitem, bool keep_paths) } mask = dynamic_cast(lpeitem->parent); clip_path = dynamic_cast(lpeitem->parent); - if ((!lpeitem->hasPathEffectRecursive() && repr->attribute("inkscape:original-d")) || - ((mask || clip_path) && !lpeitem->hasPathEffectOnClipOrMaskRecursive() && repr->attribute("inkscape:original-d"))) + if ((!lpeitem->hasPathEffectRecursive() && repr->attribute("d")) || + ((mask || clip_path) && !lpeitem->hasPathEffectOnClipOrMaskRecursive() && repr->attribute("d"))) { if (!keep_paths) { repr->setAttribute("d", NULL); + } else { + SPDesktop * desktop = SP_ACTIVE_DESKTOP; + if (desktop) { + std::vector items; + items.push_back(SP_ITEM(lpeitem)); + std::vector selected = items; + std::vector to_select; + sp_item_list_to_curves(items, selected, to_select, true); + } } } else { - sp_lpe_item_update_patheffect(lpeitem, true, true); + if (!keep_paths) { + sp_lpe_item_update_patheffect(lpeitem, true, true); + } } } @@ -583,8 +597,10 @@ void SPLPEItem::removeAllPathEffects(bool keep_paths) LivePathEffectObject *lpeobj = (*it)->lpeobject; if (lpeobj) { Inkscape::LivePathEffect::Effect * lpe = lpeobj->get_lpe(); - lpe->keep_paths = keep_paths; - lpe->doOnRemove(this); + if (lpe) { + lpe->keep_paths = keep_paths; + lpe->doOnRemove(this); + } } // unlink and delete all references in the list (*it)->unlink(); @@ -713,53 +729,53 @@ bool SPLPEItem::hasPathEffectRecursive() const } void -SPLPEItem::apply_to_clippath(SPItem *item) +SPLPEItem::applyToClipPath(SPItem *item) { SPClipPath *clip_path = item->clip_ref->getObject(); if(clip_path) { std::vector clip_path_list = clip_path->childList(true); for ( std::vector::const_iterator iter=clip_path_list.begin();iter!=clip_path_list.end();++iter) { SPObject * clip_data = *iter; - apply_to_clip_or_mask(SP_ITEM(clip_data), item); + applyToClipPathOrMask(SP_ITEM(clip_data), item); } } if(SP_IS_GROUP(item)){ std::vector item_list = sp_item_group_item_list(SP_GROUP(item)); for ( std::vector::const_iterator iter=item_list.begin();iter!=item_list.end();++iter) { SPObject *subitem = *iter; - apply_to_clippath(SP_ITEM(subitem)); + applyToClipPath(SP_ITEM(subitem)); } } } void -SPLPEItem::apply_to_mask(SPItem *item) +SPLPEItem::applyToMask(SPItem *item) { SPMask *mask = item->mask_ref->getObject(); if(mask) { std::vector mask_list = mask->childList(true); for ( std::vector::const_iterator iter=mask_list.begin();iter!=mask_list.end();++iter) { SPObject * mask_data = *iter; - apply_to_clip_or_mask(SP_ITEM(mask_data), item); + applyToClipPathOrMask(SP_ITEM(mask_data), item); } } if(SP_IS_GROUP(item)){ std::vector item_list = sp_item_group_item_list(SP_GROUP(item)); for ( std::vector::const_iterator iter=item_list.begin();iter!=item_list.end();++iter) { SPObject *subitem = *iter; - apply_to_mask(SP_ITEM(subitem)); + applyToMask(SP_ITEM(subitem)); } } } void -SPLPEItem::apply_to_clip_or_mask(SPItem *clip_mask, SPItem *item) +SPLPEItem::applyToClipPathOrMask(SPItem *clip_mask, SPItem *item) { if (SP_IS_GROUP(clip_mask)) { std::vector item_list = sp_item_group_item_list(SP_GROUP(clip_mask)); for ( std::vector::const_iterator iter=item_list.begin();iter!=item_list.end();++iter) { SPItem *subitem = *iter; - apply_to_clip_or_mask(subitem, item); + applyToClipPathOrMask(subitem, item); } } else if (SP_IS_SHAPE(clip_mask)) { SPCurve * c = NULL; diff --git a/src/sp-lpe-item.h b/src/sp-lpe-item.h index d5d4e118b..82f3940c1 100644 --- a/src/sp-lpe-item.h +++ b/src/sp-lpe-item.h @@ -94,14 +94,13 @@ public: void removeAllPathEffects(bool keep_paths); void addPathEffect(std::string value, bool reset); void addPathEffect(LivePathEffectObject * new_lpeobj); - void apply_to_mask(SPItem * item); - void apply_to_clippath(SPItem * item); - void apply_to_clip_or_mask(SPItem * clip_mask, SPItem * item); + void applyToMask(SPItem * item); + void applyToClipPath(SPItem * item); + void applyToClipPathOrMask(SPItem * clip_mask, SPItem * item); bool forkPathEffectsIfNecessary(unsigned int nr_of_allowed_users = 1); void editNextParamOncanvas(SPDesktop *dt); }; - void sp_lpe_item_update_patheffect (SPLPEItem *lpeitem, bool wholetree, bool write); // careful, class already has method with *very* similar name! #endif /* !SP_LPE_ITEM_H_SEEN */ diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index f35d5e86b..a84fc6041 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -431,9 +431,9 @@ Geom::Affine SPSpiral::set_transform(Geom::Affine const &xform) { if (hasPathEffect() && pathEffectsEnabled() && (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) { // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' // also if the effect is type BEND PATH to fix bug #179842 diff --git a/src/sp-star.cpp b/src/sp-star.cpp index ccc8323d4..9844df98a 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -512,18 +512,19 @@ void SPStar::snappoints(std::vector &p, Inkscape:: Geom::Affine SPStar::set_transform(Geom::Affine const &xform) { bool opt_trans = (randomized == 0); + // Allow live effects if (hasPathEffect() && pathEffectsEnabled() && (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || - this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) || + this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) ) ) { // if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized' - // also if the effect is type BEND PATH to fix bug #179842 this->adjust_livepatheffect(xform); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return xform; } + // Only set transform with proportional scaling if (!xform.withoutTranslation().isUniformScale()) { // Adjust livepatheffect -- cgit v1.2.3 From 65f6d664e3b0cc41356807a2df728655fbf62c1c Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sat, 14 Oct 2017 21:33:23 +0200 Subject: Add note to use important in measure dialog --- src/live_effects/lpe-measure-segments.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/live_effects/lpe-measure-segments.cpp b/src/live_effects/lpe-measure-segments.cpp index 6d1f46535..5ed587922 100644 --- a/src/live_effects/lpe-measure-segments.cpp +++ b/src/live_effects/lpe-measure-segments.cpp @@ -76,7 +76,7 @@ LPEMeasureSegments::LPEMeasureSegments(LivePathEffectObject *lpeobject) : local_locale(_("Local Number Format"), _("Local number format"), "local_locale", &wr, this, true), rotate_anotation(_("Rotate Anotation"), _("Rotate Anotation"), "rotate_anotation", &wr, this, true), hide_back(_("Hide if label over"), _("Hide DIN line if label over"), "hide_back", &wr, this, true), - message(_("Info Box"), _("Important messages"), "message", &wr, this, _("Use \"Style Dialog\" to more styling. Each meassure element has extra selectors...")) + message(_("Info Box"), _("Important messages"), "message", &wr, this, _("Use \"Style Dialog\" to more styling. Each meassure element has extra selectors. Use !important to override defaults...")) { //set to true the parameters you want to be changed his default values registerParameter(&unit); -- cgit v1.2.3 From c169d8f366f0765513e08e94057d1e0dc3872c73 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 16:27:09 +0200 Subject: make --export-area-drawing work when exporting SVG Fixed bugs: - https://bugs.launchpad.net/inkscape/+bug/1597921 - https://bugs.launchpad.net/inkscape/+bug/1722844 --- src/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index aec7d96a9..537605e37 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,6 +59,7 @@ #include "document.h" #include "layer-model.h" #include "selection.h" +#include "selection-chemistry.h" #include "ui/interface.h" #include "print.h" #include "color.h" @@ -1116,6 +1117,9 @@ static int sp_process_file_list(std::vector fl) sp_item_list_to_curves(items, selected, to_select); } + if(sp_export_area_drawing) { + fit_canvas_to_drawing(doc, false); + } if(sp_export_id) { doc->ensureUpToDate(); -- cgit v1.2.3 From 201d28e01980bef947ef632628c731ab878185c6 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 18:12:01 +0200 Subject: Support --export-margin when exporting to SVG --- src/main.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 537605e37..c40337cbe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -354,7 +354,7 @@ struct poptOption options[] = { {"export-margin", 0, POPT_ARG_STRING, &sp_export_margin, SP_ARG_EXPORT_MARGIN, - N_("Only for PS/EPS/PDF, sets margin in mm around exported area (default 0)"), + N_("Sets margin around exported area (default 0) in units of page size for SVG and mm for PS/EPS/PDF"), N_("VALUE")}, {"export-area-snap", 0, @@ -1117,8 +1117,20 @@ static int sp_process_file_list(std::vector fl) sp_item_list_to_curves(items, selected, to_select); } + if (sp_export_margin) { + gdouble margin = g_ascii_strtod(sp_export_margin, NULL); + doc->ensureUpToDate(); + SPNamedView *nv; + Inkscape::XML::Node *nv_repr; + if ((nv = sp_document_namedview(doc, 0)) && (nv_repr = nv->getRepr())) { + sp_repr_set_svg_double(nv_repr, "fit-margin-top", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-left", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-right", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-bottom", margin); + } + } if(sp_export_area_drawing) { - fit_canvas_to_drawing(doc, false); + fit_canvas_to_drawing(doc, sp_export_margin ? true : false); } if(sp_export_id) { doc->ensureUpToDate(); @@ -1131,7 +1143,7 @@ static int sp_process_file_list(std::vector fl) } Inkscape::ObjectSet s(doc); s.set(obj); - s.fitCanvas(false); + s.fitCanvas(sp_export_margin ? true : false); } if (sp_export_svg) { Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, -- cgit v1.2.3 From b73dbb746ba026573dd7fc67a0cdf5ac9a934d4e Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 19:17:22 +0200 Subject: Support --export-area-page when using --export-id to export to SVG --- src/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index c40337cbe..792c1182a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1143,7 +1143,9 @@ static int sp_process_file_list(std::vector fl) } Inkscape::ObjectSet s(doc); s.set(obj); - s.fitCanvas(sp_export_margin ? true : false); + if (!sp_export_area_page) { + s.fitCanvas(sp_export_margin ? true : false); + } } if (sp_export_svg) { Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, -- cgit v1.2.3 From 16ff7505bac18399e83f38d160049d1c564a1db3 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 19:54:22 +0200 Subject: Refactoring: put SVG export into separate function --- src/main.cpp | 132 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 73 insertions(+), 59 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 792c1182a..5f6fc75cf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -182,6 +182,7 @@ enum { int sp_main_gui(int argc, char const **argv); int sp_main_console(int argc, char const **argv); static int sp_do_export_png(SPDocument *doc); +static int do_export_svg(SPDocument* doc); static int do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const *mime); static int do_export_emf(SPDocument* doc, gchar const* uri, char const *mime); static int do_export_wmf(SPDocument* doc, gchar const* uri, char const *mime); @@ -1097,65 +1098,7 @@ static int sp_process_file_list(std::vector fl) retVal |= sp_do_export_png(doc); } if (sp_export_svg || sp_export_inkscape_svg) { - if (sp_export_text_to_path) { - std::vector items; - SPRoot *root = doc->getRoot(); - doc->ensureUpToDate(); - for (auto& iter: root->children) { - SPItem* item = (SPItem*) &iter; - if (! (SP_IS_TEXT(item) || SP_IS_FLOWTEXT(item) || SP_IS_GROUP(item))) { - continue; - } - - te_update_layout_now_recursive(item); - items.push_back(item); - } - - std::vector selected; - std::vector to_select; - - sp_item_list_to_curves(items, selected, to_select); - - } - if (sp_export_margin) { - gdouble margin = g_ascii_strtod(sp_export_margin, NULL); - doc->ensureUpToDate(); - SPNamedView *nv; - Inkscape::XML::Node *nv_repr; - if ((nv = sp_document_namedview(doc, 0)) && (nv_repr = nv->getRepr())) { - sp_repr_set_svg_double(nv_repr, "fit-margin-top", margin); - sp_repr_set_svg_double(nv_repr, "fit-margin-left", margin); - sp_repr_set_svg_double(nv_repr, "fit-margin-right", margin); - sp_repr_set_svg_double(nv_repr, "fit-margin-bottom", margin); - } - } - if(sp_export_area_drawing) { - fit_canvas_to_drawing(doc, sp_export_margin ? true : false); - } - if(sp_export_id) { - doc->ensureUpToDate(); - - // "crop" the document to the specified object, cleaning as we go. - SPObject *obj = doc->getObjectById(sp_export_id); - if (sp_export_id_only) { - // If -j then remove all other objects to complete the "crop" - doc->getRoot()->cropToObject(obj); - } - Inkscape::ObjectSet s(doc); - s.set(obj); - if (!sp_export_area_page) { - s.fitCanvas(sp_export_margin ? true : false); - } - } - if (sp_export_svg) { - Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, - false, false, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY); - } - if (sp_export_inkscape_svg) { - // Export as inkscape SVG. - Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.inkscape"), doc, sp_export_inkscape_svg, false, - false, false, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG); - } + retVal |= do_export_svg(doc); } if (sp_export_ps) { retVal |= do_export_ps_pdf(doc, sp_export_ps, "image/x-postscript"); @@ -1617,6 +1560,77 @@ static int sp_do_export_png(SPDocument *doc) return retcode; } +/** + * Perform an SVG export + * + * \param doc Document to export. + */ + +static int do_export_svg(SPDocument* doc) +{ + if (sp_export_text_to_path) { + std::vector items; + SPRoot *root = doc->getRoot(); + doc->ensureUpToDate(); + for (auto& iter: root->children) { + SPItem* item = (SPItem*) &iter; + if (! (SP_IS_TEXT(item) || SP_IS_FLOWTEXT(item) || SP_IS_GROUP(item))) { + continue; + } + + te_update_layout_now_recursive(item); + items.push_back(item); + } + + std::vector selected; + std::vector to_select; + + sp_item_list_to_curves(items, selected, to_select); + + } + if (sp_export_margin) { + gdouble margin = g_ascii_strtod(sp_export_margin, NULL); + doc->ensureUpToDate(); + SPNamedView *nv; + Inkscape::XML::Node *nv_repr; + if ((nv = sp_document_namedview(doc, 0)) && (nv_repr = nv->getRepr())) { + sp_repr_set_svg_double(nv_repr, "fit-margin-top", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-left", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-right", margin); + sp_repr_set_svg_double(nv_repr, "fit-margin-bottom", margin); + } + } + if(sp_export_area_drawing) { + fit_canvas_to_drawing(doc, sp_export_margin ? true : false); + } + if(sp_export_id) { + doc->ensureUpToDate(); + + // "crop" the document to the specified object, cleaning as we go. + SPObject *obj = doc->getObjectById(sp_export_id); + if (sp_export_id_only) { + // If -j then remove all other objects to complete the "crop" + doc->getRoot()->cropToObject(obj); + } + Inkscape::ObjectSet s(doc); + s.set(obj); + if (!sp_export_area_page) { + s.fitCanvas(sp_export_margin ? true : false); + } + } + + if (sp_export_svg) { + Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, + false, false, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY); + } + if (sp_export_inkscape_svg) { + // Export as inkscape SVG. + Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.inkscape"), doc, sp_export_inkscape_svg, false, + false, false, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG); + } + return 0; +} + /** * Perform a PDF/PS/EPS export * -- cgit v1.2.3 From 300986fe58897667ba1c41859b5cec2f9e654efa Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 20:05:57 +0200 Subject: Some basic error handling for SVG export --- src/main.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 5f6fc75cf..d934d1d77 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1619,16 +1619,27 @@ static int do_export_svg(SPDocument* doc) } } + int ret = 0; if (sp_export_svg) { - Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, - false, false, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY); + try { + Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.plain"), doc, sp_export_svg, false, + false, false, Inkscape::Extension::FILE_SAVE_METHOD_SAVE_COPY); + } catch (Inkscape::Extension::Output::save_failed &e) { + g_warning("Failed to save plain SVG to: %s", sp_export_svg); + ret = 1; + } } if (sp_export_inkscape_svg) { // Export as inkscape SVG. - Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.inkscape"), doc, sp_export_inkscape_svg, false, - false, false, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG); + try { + Inkscape::Extension::save(Inkscape::Extension::db.get("org.inkscape.output.svg.inkscape"), doc, sp_export_inkscape_svg, false, + false, false, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG); + } catch (Inkscape::Extension::Output::save_failed &e) { + g_warning("Failed to save Inkscape SVG to: %s", sp_export_inkscape_svg); + ret = 1; + } } - return 0; + return ret; } /** -- cgit v1.2.3 From d780e396ddf12f0bb6e96bd99a8c288707016e46 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 20:13:06 +0200 Subject: Cleanup: rename sp_do_export_png for consistency Also actually return non-zero if PNG could not be saved. --- src/main.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d934d1d77..6ec04675b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -181,7 +181,7 @@ enum { int sp_main_gui(int argc, char const **argv); int sp_main_console(int argc, char const **argv); -static int sp_do_export_png(SPDocument *doc); +static int do_export_png(SPDocument *doc); static int do_export_svg(SPDocument* doc); static int do_export_ps_pdf(SPDocument* doc, gchar const* uri, char const *mime); static int do_export_emf(SPDocument* doc, gchar const* uri, char const *mime); @@ -1095,7 +1095,7 @@ static int sp_process_file_list(std::vector fl) sp_print_document_to_file(doc, sp_global_printer); } if (sp_export_png || (sp_export_id && sp_export_use_hints)) { - retVal |= sp_do_export_png(doc); + retVal |= do_export_png(doc); } if (sp_export_svg || sp_export_inkscape_svg) { retVal |= do_export_svg(doc); @@ -1322,8 +1322,13 @@ do_query_all_recurse (SPObject *o) } } +/** + * Perform a PNG export + * + * \param doc Document to export. + */ -static int sp_do_export_png(SPDocument *doc) +static int do_export_png(SPDocument *doc) { Glib::ustring filename; bool filename_from_hint = false; @@ -1532,12 +1537,10 @@ static int sp_do_export_png(SPDocument *doc) path = filename; } - int retcode = 0; //check if specified directory exists - if (!Inkscape::IO::file_directory_exists(filename.c_str())) { g_warning("File path \"%s\" includes directory that doesn't exist.\n", filename.c_str()); - retcode = 1; + return 1; } else { g_print("Background RRGGBBAA: %08x\n", bgcolor); @@ -1551,13 +1554,15 @@ static int sp_do_export_png(SPDocument *doc) g_print("Bitmap saved as: %s\n", filename.c_str()); } else { g_warning("Bitmap failed to save to: %s", filename.c_str()); + return 1; } } else { g_warning("Calculated bitmap dimensions %lu %lu are out of range (1 - %lu). Nothing exported.", width, height, (unsigned long int)PNG_UINT_31_MAX); + return 1; } } - return retcode; + return 0; } /** -- cgit v1.2.3 From 0519ede69ea1bb876975ae584827fd56d9800dfc Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 14 Oct 2017 20:19:18 +0200 Subject: Do not use GUI for --export-inkscape-svg --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index 6ec04675b..6e559692c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -731,6 +731,7 @@ main(int argc, char **argv) || !strncmp(argv[i], "--export-png", 12) || !strcmp(argv[i], "-l") || !strncmp(argv[i], "--export-plain-svg", 18) + || !strncmp(argv[i], "--export-inkscape-svg", 21) || !strcmp(argv[i], "-i") || !strncmp(argv[i], "--export-area-drawing", 21) || !strcmp(argv[i], "-D") -- cgit v1.2.3 From dd69413884f2f33f8757e3b1f062926d6472f4f0 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sun, 15 Oct 2017 17:36:00 +0200 Subject: Fix link for FAQ entry on DPI change (see also b862d73dd9a520d02886f295c0313588818513c4) --- po/es.po | 4 ++-- po/inkscape.pot | 2 +- po/is.po | 2 +- po/ru.po | 4 ++-- src/file-update.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/po/es.po b/po/es.po index c6e0e1c70..d824955c6 100644 --- a/po/es.po +++ b/po/es.po @@ -8448,7 +8448,7 @@ msgid "" "printing.)\n" "\n" "More information about this change are available in the Inkscape FAQ" +"inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ" msgstr "" "Hemos actualizado Inkscape para que cumpla el estándar CSS de 96 PPP " "para mejor compatibilidad con navegadores web; solíamos usar 90 PPP. El arte " @@ -8468,7 +8468,7 @@ msgstr "" "(por ejemplo, para impresión 3D.)\n" "\n" "Hay más información disponible acerca de este cambio en Inkscape - Preguntas frecuentes" +"inkscape.org/en/learn/faq#dpi_change'>Inkscape - Preguntas frecuentes" #: ../src/file-update.cpp:386 msgid "OK" diff --git a/po/inkscape.pot b/po/inkscape.pot index 36aec8154..82acfabdd 100644 --- a/po/inkscape.pot +++ b/po/inkscape.pot @@ -8311,7 +8311,7 @@ msgid "" "printing.)\n" "\n" "More information about this change are available in the Inkscape FAQ" +"inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ" msgstr "" #: ../src/file-update.cpp:391 diff --git a/po/is.po b/po/is.po index 777a0981e..467b0bce5 100644 --- a/po/is.po +++ b/po/is.po @@ -8371,7 +8371,7 @@ msgid "" "printing.)\n" "\n" "More information about this change are available in the Inkscape FAQ" +"inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ" msgstr "" #: ../src/file-update.cpp:391 diff --git a/po/ru.po b/po/ru.po index e0ec8c888..8bdcf923e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8473,7 +8473,7 @@ msgid "" "printing.)\n" "\n" "More information about this change are available in the Inkscape FAQ" +"inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ" msgstr "" "Мы обновили Inkscape для соответствия CSS стандарту 96 DPI для лучшей " "браузерной совместимости; ранее мы использовали 90 DPI. Цифровое изображение " @@ -8493,7 +8493,7 @@ msgstr "" "печати).\n" "\n" "Более подробную информацию об этом изменении можно найти в FAQ Inkscape" +"inkscape.org/en/learn/faq#dpi_change'>FAQ Inkscape" #: ../src/file-update.cpp:391 msgid "OK" diff --git a/src/file-update.cpp b/src/file-update.cpp index 3771d549b..303a5c4f1 100644 --- a/src/file-update.cpp +++ b/src/file-update.cpp @@ -359,7 +359,7 @@ void sp_file_convert_dpi(SPDocument *doc) "but is better for physical output that relies on accurate sizes and positions (for example, for " "3D printing.)\n\n" "More information about this change are available in the Inkscape FAQ" + "href='https://inkscape.org/en/learn/faq#dpi_change'>Inkscape FAQ" "")); moreinfo_text.set_line_wrap(true); moreinfo_text.set_size_request(554,-1); -- cgit v1.2.3 From 5c009e15be8446c010a4103a9626653c7819274a Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Mon, 16 Oct 2017 11:39:26 +0200 Subject: Update properties for SVG 2 text. Partial work from Alex Roman --- share/attributes/css_defaults | 8 +++++--- share/attributes/cssprops | 12 +++++++----- share/attributes/genMapDataCSS.pl | 18 +++++++++++------- share/attributes/svgprops | 14 ++++++++------ src/attributes.cpp | 3 ++- src/attributes.h | 3 ++- src/style.cpp | 32 +++++++++++++++++++++++++++++--- src/style.h | 5 +++-- testfiles/src/attributes-test.cpp | 5 +++-- 9 files changed, 70 insertions(+), 30 deletions(-) diff --git a/share/attributes/css_defaults b/share/attributes/css_defaults index ff9b39b6d..1a5c4ccf3 100644 --- a/share/attributes/css_defaults +++ b/share/attributes/css_defaults @@ -78,6 +78,8 @@ "image-rendering" - "auto" - "yes" +"inline-size" - "0" - "no" + "isolation" - "auto" - "no" "kerning" - "auto" - "yes" @@ -116,12 +118,12 @@ "shape-margin" - "0" - "no" -"shape-outside" - "auto" - "no" - -"shape-padding" - "none" - "no" +"shape-padding" - "0" - "no" "shape-rendering" - "auto" - "yes" +"shape-subtract" - "auto" - "no" + "solid-color" - "#000000" - "no" "solid-opacity" - "1" - "no" diff --git a/share/attributes/cssprops b/share/attributes/cssprops index 5e796235e..18f04ce3c 100644 --- a/share/attributes/cssprops +++ b/share/attributes/cssprops @@ -78,6 +78,8 @@ "image-rendering" - "pattern","image","feImage","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" +"inline-size" - "text" + "isolation" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" "kerning" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" @@ -112,16 +114,16 @@ "pointer-events" - "circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" -"shape-inside" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" - -"shape-margin" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-inside" - "text" -"shape-outside" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-margin" - "text" -"shape-padding" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-padding" - "text" "shape-rendering" - "path","rect","circle","ellipse","line","polyline","polygon","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" +"shape-subtract" - "text" + "solid-color" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" "solid-opacity" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" diff --git a/share/attributes/genMapDataCSS.pl b/share/attributes/genMapDataCSS.pl index a6f432a47..91d09e37b 100755 --- a/share/attributes/genMapDataCSS.pl +++ b/share/attributes/genMapDataCSS.pl @@ -215,22 +215,26 @@ push @{$properties{ "white-space" }->{elements}}, @text_content_elements; $properties{ "white-space" }->{default} = "normal"; $properties{ "white-space" }->{inherit} = "yes"; -push @{$properties{ "shape-inside" }->{elements}}, @text_content_elements; +push @{$properties{ "shape-inside" }->{elements}}, "text"; $properties{ "shape-inside" }->{default} = "auto"; $properties{ "shape-inside" }->{inherit} = "no"; -push @{$properties{ "shape-outside" }->{elements}}, @text_content_elements; -$properties{ "shape-outside" }->{default} = "auto"; -$properties{ "shape-outside" }->{inherit} = "no"; +push @{$properties{ "shape-subtract" }->{elements}}, "text"; +$properties{ "shape-subtract" }->{default} = "auto"; +$properties{ "shape-subtract" }->{inherit} = "no"; -push @{$properties{ "shape-padding" }->{elements}}, @text_content_elements; -$properties{ "shape-padding" }->{default} = "none"; +push @{$properties{ "shape-padding" }->{elements}}, "text"; +$properties{ "shape-padding" }->{default} = "0"; $properties{ "shape-padding" }->{inherit} = "no"; -push @{$properties{ "shape-margin" }->{elements}}, @text_content_elements; +push @{$properties{ "shape-margin" }->{elements}}, "text"; $properties{ "shape-margin" }->{default} = "0"; $properties{ "shape-margin" }->{inherit} = "no"; +push @{$properties{ "inline-size" }->{elements}}, "text"; +$properties{ "inline-size" }->{default} = "0"; +$properties{ "inline-size" }->{inherit} = "no"; + #CSS Text Level 3 push @{$properties{ "text-indent" }->{elements}}, @container_elements; diff --git a/share/attributes/svgprops b/share/attributes/svgprops index 810ad5661..fc2c01d9b 100644 --- a/share/attributes/svgprops +++ b/share/attributes/svgprops @@ -516,6 +516,8 @@ "image-rendering" - "pattern","image","feImage","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" +"inline-size" - "text" + "isolation" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" "kerning" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" @@ -524,7 +526,7 @@ "lighting-color" - "feDiffuseLighting","feSpecularLighting" -"line-height" - "text","flowRoot","flowPara" +"line-height" - "text","tspan","flowRoot","flowPara" "marker" - "path","line","polyline","polygon","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" @@ -550,16 +552,16 @@ "pointer-events" - "circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" -"shape-inside" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" - -"shape-margin" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-inside" - "text" -"shape-outside" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-margin" - "text" -"shape-padding" - "altGlyph","textPath","text","tref","tspan","flowRoot","flowPara","flowSpan" +"shape-padding" - "text" "shape-rendering" - "path","rect","circle","ellipse","line","polyline","polygon","a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use" +"shape-subtract" - "text" + "solid-color" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" "solid-opacity" - "a","defs","glyph","g","marker","mask","missing-glyph","pattern","svg","switch","symbol","use","circle","ellipse","image","line","path","polygon","polyline","rect","text","flowRoot","use" diff --git a/src/attributes.cpp b/src/attributes.cpp index 9ba646ab4..6522563af 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -507,9 +507,10 @@ static SPStyleProp const props[] = { /* SVG 2 Text Wrapping */ {SP_PROP_SHAPE_INSIDE, "shape-inside"}, - {SP_PROP_SHAPE_OUTSIDE, "shape-outside"}, + {SP_PROP_SHAPE_SUBTRACT,"shape-subtract"}, {SP_PROP_SHAPE_PADDING, "shape-padding"}, {SP_PROP_SHAPE_MARGIN, "shape-margin"}, + {SP_PROP_INLINE_SIZE, "inline-size"}, /* Text Decoration */ {SP_PROP_TEXT_DECORATION, "text-decoration"}, // CSS 2/CSS3-Shorthand diff --git a/src/attributes.h b/src/attributes.h index 3fee14133..a2c1c30f5 100644 --- a/src/attributes.h +++ b/src/attributes.h @@ -515,9 +515,10 @@ enum SPAttributeEnum { /* SVG 2 Text Wrapping */ SP_PROP_SHAPE_INSIDE, - SP_PROP_SHAPE_OUTSIDE, + SP_PROP_SHAPE_SUBTRACT, SP_PROP_SHAPE_PADDING, SP_PROP_SHAPE_MARGIN, + SP_PROP_INLINE_SIZE, /* Text Decoration */ SP_PROP_TEXT_DECORATION, // CSS 2/CSS3-Shorthand diff --git a/src/style.cpp b/src/style.cpp index d5bbcd9ce..608cca1e6 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -134,9 +134,10 @@ SPStyle::SPStyle(SPDocument *document_in, SPObject *object_in) : // SVG 2 Text Wrapping shape_inside( "shape-inside" ), // SPIString - //shape_outside( "shape-outside" ), // SPIString + shape_subtract( "shape-subtract" ), // SPIString shape_padding( "shape-padding", 0.0 ), // SPILength for now - //shape_margin( "shape-margin", 0.0 ), // SPILength for now + shape_margin( "shape-margin", 0.0 ), // SPILength for now + inline_size( "inline-size", 0.0 ), // SPILength for now text_decoration(), text_decoration_line(), @@ -252,6 +253,8 @@ SPStyle::SPStyle(SPDocument *document_in, SPObject *object_in) : stroke_width.setStylePointer( this ); stroke_dashoffset.setStylePointer( this ); shape_padding.setStylePointer( this ); + shape_margin.setStylePointer( this ); + inline_size.setStylePointer( this ); // Properties that depend on 'color' text_decoration_color.setStylePointer( this ); @@ -323,7 +326,10 @@ SPStyle::SPStyle(SPDocument *document_in, SPObject *object_in) : _properties.push_back( &white_space ); _properties.push_back( &shape_inside ); + _properties.push_back( &shape_subtract ); _properties.push_back( &shape_padding ); + _properties.push_back( &shape_margin ); + _properties.push_back( &inline_size ); _properties.push_back( &clip_rule ); _properties.push_back( &display ); @@ -799,9 +805,18 @@ SPStyle::readIfUnset( gint id, gchar const *val, SPStyleSrc const &source ) { case SP_PROP_SHAPE_INSIDE: shape_inside.readIfUnset( val, source ); break; + case SP_PROP_SHAPE_SUBTRACT: + shape_subtract.readIfUnset( val, source ); + break; case SP_PROP_SHAPE_PADDING: shape_padding.readIfUnset( val, source ); break; + case SP_PROP_SHAPE_MARGIN: + shape_margin.readIfUnset( val, source ); + break; + case SP_PROP_INLINE_SIZE: + inline_size.readIfUnset( val, source ); + break; case SP_PROP_DOMINANT_BASELINE: dominant_baseline.readIfUnset( val, source ); break; @@ -1153,7 +1168,6 @@ SPStyle::_mergeDecl( CRDeclaration const *const decl, SPStyleSrc const &source * convert to string. Alternatively, set from CRTerm directly rather * than converting to string. */ - guchar *const str_value_unsigned = cr_term_to_string(decl->value); gchar *const str_value = reinterpret_cast(str_value_unsigned); @@ -1720,9 +1734,18 @@ sp_style_unset_property_attrs(SPObject *o) if (style->shape_inside.set) { repr->setAttribute("shape-inside", NULL); } + if (style->shape_subtract.set) { + repr->setAttribute("shape-subtract", NULL); + } if (style->shape_padding.set) { repr->setAttribute("shape-padding", NULL); } + if (style->shape_margin.set) { + repr->setAttribute("shape-margin", NULL); + } + if (style->inline_size.set) { + repr->setAttribute("inline-size", NULL); + } if (style->writing_mode.set) { repr->setAttribute("writing-mode", NULL); } @@ -1815,7 +1838,10 @@ sp_css_attr_unset_text(SPCSSAttr *css) sp_repr_css_set_property(css, "text-anchor", NULL); sp_repr_css_set_property(css, "white-space", NULL); sp_repr_css_set_property(css, "shape-inside", NULL); + sp_repr_css_set_property(css, "shape-subtract", NULL); sp_repr_css_set_property(css, "shape-padding", NULL); + sp_repr_css_set_property(css, "shape-margin", NULL); + sp_repr_css_set_property(css, "inline-size", NULL); sp_repr_css_set_property(css, "kerning", NULL); // not implemented yet sp_repr_css_set_property(css, "dominant-baseline", NULL); // not implemented yet sp_repr_css_set_property(css, "alignment-baseline", NULL); // not implemented yet diff --git a/src/style.h b/src/style.h index 85d07b9ef..1b6ee2f47 100644 --- a/src/style.h +++ b/src/style.h @@ -166,9 +166,10 @@ public: /** SVG2 Text Wrapping */ SPIString shape_inside; - // SPIString shape_outside; + SPIString shape_subtract; SPILength shape_padding; - // SPILength shape_margin; + SPILength shape_margin; + SPILength inline_size; /* Text Decoration ----------------------- */ diff --git a/testfiles/src/attributes-test.cpp b/testfiles/src/attributes-test.cpp index f6881fc09..da9a8d592 100644 --- a/testfiles/src/attributes-test.cpp +++ b/testfiles/src/attributes-test.cpp @@ -51,7 +51,7 @@ std::vector getKnownAttrs() attindex.html lacks attributeName, begin, additive, font, marker; I've added these manually. - SVG 2: white-space, shape-inside, shape-outside, shape-padding, shape-margin + SVG 2: white-space, shape-inside, shape-subtrace, shape-padding, shape-margin */ AttributeInfo all_attrs[] = { AttributeInfo("attributeName", true), @@ -174,6 +174,7 @@ std::vector getKnownAttrs() AttributeInfo("image-rendering", true), AttributeInfo("in", true), AttributeInfo("in2", true), + AttributeInfo("inline-size", true), AttributeInfo("intercept", true), AttributeInfo("isolation", true), AttributeInfo("k", true), @@ -274,7 +275,7 @@ std::vector getKnownAttrs() AttributeInfo("seed", true), AttributeInfo("shape-inside", true), AttributeInfo("shape-margin", true), - AttributeInfo("shape-outside", true), + AttributeInfo("shape-subtract", true), AttributeInfo("shape-padding", true), AttributeInfo("shape-rendering", true), AttributeInfo("slope", true), -- cgit v1.2.3 From 398d69e9d27bd5e0a8db85cc799478534b9db52f Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Mon, 16 Oct 2017 22:27:05 +0200 Subject: Revive pango_win32 backend With these changes it's compiling and rendering text, however there seems to be an issue with setting font styles (e.g. font size is not set properly initially). OpenType font features are not supported. See https://bugs.launchpad.net/inkscape/+bug/1416674 for some history --- src/libnrtype/FontFactory.cpp | 2 ++ src/libnrtype/FontInstance.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index e160fc277..b2baeb2f0 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -634,6 +634,7 @@ void extract_openTypeTables(font_instance *res) { // Empty map... bitmap fonts seem to be loaded multiple times. res->openTypeTables.clear(); +#ifndef USE_PANGO_WIN32 auto const face = hb_ft_face_create(res->theFace, NULL); // First time to get size of array @@ -771,6 +772,7 @@ void extract_openTypeTables(font_instance *res) { hb_face_destroy (face); g_free(scripts_hb); +#endif // USE_PANGO_WIN32 } font_instance *font_factory::Face(PangoFontDescription *descr, bool canFail) diff --git a/src/libnrtype/FontInstance.cpp b/src/libnrtype/FontInstance.cpp index 7a16fc0c3..57aa22d48 100644 --- a/src/libnrtype/FontInstance.cpp +++ b/src/libnrtype/FontInstance.cpp @@ -556,10 +556,10 @@ bool font_instance::FontDecoration( double &underline_position, double &underl return false; } double scale=1.0/parent->fontSize; - underline_position = fabs(otm.otmUnderscorePosition *scale); - underline_thickness = fabs(otm.otmUnderscoreSize *scale); - linethrough_position = fabs(otm.otmStrikeoutPosition *scale); - linethrough_thickness = fabs(otm.otmStrikeoutSize *scale); + underline_position = fabs(otm.otmsUnderscorePosition *scale); + underline_thickness = fabs(otm.otmsUnderscoreSize *scale); + linethrough_position = fabs(otm.otmsStrikeoutPosition *scale); + linethrough_thickness = fabs(otm.otmsStrikeoutSize *scale); #else if ( theFace->units_per_EM == 0 ) { return false; // bitmap font @@ -683,12 +683,12 @@ void font_instance::FindFontMetrics() { if ( theFace ) { #ifdef USE_PANGO_WIN32 - + OUTLINETEXTMETRIC otm; if ( GetOutlineTextMetrics(parent->hScreenDC,sizeof(otm),&otm) ) { double scale=1.0/parent->fontSize; _ascent = fabs(otm.otmMacAscent * scale); _descent = fabs(otm.otmMacDescent * scale); - _xheight = fabs(otm.otmXHeight * scale); + _xheight = fabs(otm.otmsXHeight * scale); _ascent_max = fabs(otm.otmAscent * scale); _descent_max = fabs(otm.otmDescent * scale); -- cgit v1.2.3 From c943a6db760a6c5eb8110179c240e8f7bd021ac5 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Mon, 16 Oct 2017 13:00:24 +0200 Subject: Remove std::auto_ptr As C++11-compiler is now mandatory, conditional use of auto_ptr is no longer usefull. This commit does not remove the usage of std::auto_ptr in 2geom. --- src/live_effects/lpe-interpolate_points.cpp | 4 ---- src/ui/control-manager.h | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/live_effects/lpe-interpolate_points.cpp b/src/live_effects/lpe-interpolate_points.cpp index 0a0bcea14..7d4c88dc1 100644 --- a/src/live_effects/lpe-interpolate_points.cpp +++ b/src/live_effects/lpe-interpolate_points.cpp @@ -51,11 +51,7 @@ Geom::PathVector LPEInterpolatePoints::doEffect_path (Geom::PathVector const & path_in) { Geom::PathVector path_out; -#if __cplusplus <= 199711L - std::auto_ptr interpolator( Geom::Interpolate::Interpolator::create(static_cast(interpolator_type.get_value())) ); -#else std::unique_ptr interpolator( Geom::Interpolate::Interpolator::create(static_cast(interpolator_type.get_value())) ); -#endif for(Geom::PathVector::const_iterator path_it = path_in.begin(); path_it != path_in.end(); ++path_it) { if (path_it->empty()) diff --git a/src/ui/control-manager.h b/src/ui/control-manager.h index 3f090d0bd..418591991 100644 --- a/src/ui/control-manager.h +++ b/src/ui/control-manager.h @@ -76,11 +76,7 @@ public: private: ControlManager(); -#if __cplusplus <= 199711L - std::auto_ptr _impl; -#else std::unique_ptr _impl; -#endif friend class ControlManagerImpl; }; -- cgit v1.2.3 From 8ef37560aeca3d38db6603ca573929b19ea90105 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Mon, 16 Oct 2017 13:28:28 +0200 Subject: Replace boost::scoped_ptr This replaces all usage of boost::scoped_ptr with std::unique_ptr. Also removes the corresponding includes. --- src/extension/internal/cairo-renderer.cpp | 3 +-- src/extension/internal/gdkpixbuf-input.cpp | 3 +-- src/helper/pixbuf-ops.cpp | 3 +-- src/ui/dialog/icon-preview.cpp | 1 - src/ui/dialog/objects.h | 3 +-- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 3724a5e17..116364739 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -27,7 +27,6 @@ #include #include -#include #include "libnrtype/Layout-TNG.h" #include <2geom/transforms.h> @@ -517,7 +516,7 @@ static void sp_asbitmap_render(SPItem *item, CairoRenderContext *ctx) // Do the export SPDocument *document = item->document; - boost::scoped_ptr pb( + std::unique_ptr pb( sp_generate_internal_bitmap(document, NULL, bbox->min()[Geom::X], bbox->min()[Geom::Y], bbox->max()[Geom::X], bbox->max()[Geom::Y], width, height, res, res, (guint32) 0xffffff00, item )); diff --git a/src/extension/internal/gdkpixbuf-input.cpp b/src/extension/internal/gdkpixbuf-input.cpp index 7af7927f2..26e6531dd 100644 --- a/src/extension/internal/gdkpixbuf-input.cpp +++ b/src/extension/internal/gdkpixbuf-input.cpp @@ -2,7 +2,6 @@ #include #include -#include #include #include #include "dir-util.h" @@ -65,7 +64,7 @@ GdkpixbufInput::open(Inkscape::Extension::Input *mod, char const *uri) bool embed = ( link.compare( "embed" ) == 0 ); SPDocument *doc = NULL; - boost::scoped_ptr pb(Inkscape::Pixbuf::create_from_file(uri)); + std::unique_ptr pb(Inkscape::Pixbuf::create_from_file(uri)); // TODO: the pixbuf is created again from the base64-encoded attribute in SPImage. // Find a way to create the pixbuf only once. diff --git a/src/helper/pixbuf-ops.cpp b/src/helper/pixbuf-ops.cpp index 438a428e6..8d7202111 100644 --- a/src/helper/pixbuf-ops.cpp +++ b/src/helper/pixbuf-ops.cpp @@ -15,7 +15,6 @@ #include #endif -#include #include <2geom/transforms.h> #include "ui/interface.h" @@ -67,7 +66,7 @@ bool sp_export_jpg_file(SPDocument *doc, gchar const *filename, unsigned width, unsigned height, double xdpi, double ydpi, unsigned long bgcolor, double quality, SPItem* item) { - boost::scoped_ptr pixbuf( + std::unique_ptr pixbuf( sp_generate_internal_bitmap(doc, filename, x0, y0, x1, y1, width, height, xdpi, ydpi, bgcolor, item)); diff --git a/src/ui/dialog/icon-preview.cpp b/src/ui/dialog/icon-preview.cpp index 991139aa8..f9cd8929a 100644 --- a/src/ui/dialog/icon-preview.cpp +++ b/src/ui/dialog/icon-preview.cpp @@ -18,7 +18,6 @@ #endif #include -#include #include #include diff --git a/src/ui/dialog/objects.h b/src/ui/dialog/objects.h index b7fd1b4f8..8ad1b15ef 100644 --- a/src/ui/dialog/objects.h +++ b/src/ui/dialog/objects.h @@ -16,7 +16,6 @@ # include #endif -#include #include #include #include @@ -168,7 +167,7 @@ private: Gtk::Box _blur_vbox; Gtk::Dialog _colorSelectorDialog; - boost::scoped_ptr _selectedColor; + std::unique_ptr _selectedColor; //Methods: -- cgit v1.2.3 From e1cb749aab3c773073b1adde1b4cd07b2a6ce93e Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 17 Oct 2017 08:31:32 +0200 Subject: Replace boost::shared_ptr Replace boost::shared_ptr with C++11 smartpointer and remove the boost/shared_ptr.hpp header. --- src/display/drawing-surface.h | 1 - src/event-log.cpp | 14 ++++++-------- src/ui/tool/manipulator.h | 7 +++---- src/ui/tool/multi-path-manipulator.cpp | 5 ++--- src/ui/tool/multi-path-manipulator.h | 8 ++++---- src/ui/tool/node.h | 8 +++----- src/ui/tool/path-manipulator.h | 4 +--- 7 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/display/drawing-surface.h b/src/display/drawing-surface.h index 7bec1606a..78471649a 100644 --- a/src/display/drawing-surface.h +++ b/src/display/drawing-surface.h @@ -12,7 +12,6 @@ #ifndef SEEN_INKSCAPE_DISPLAY_DRAWING_SURFACE_H #define SEEN_INKSCAPE_DISPLAY_DRAWING_SURFACE_H -#include #include #include <2geom/affine.h> #include <2geom/rect.h> diff --git a/src/event-log.cpp b/src/event-log.cpp index 5a73b649e..41ab2f2d0 100644 --- a/src/event-log.cpp +++ b/src/event-log.cpp @@ -12,8 +12,6 @@ #include "event-log.h" #include -#include -#include #include "desktop.h" #include "inkscape.h" @@ -60,9 +58,9 @@ public: Inkscape::EventLog::CallbackMap *_callbacks; }; -void addBlocker(std::vector > &blockers, sigc::connection *connection) +void addBlocker(std::vector > &blockers, sigc::connection *connection) { - blockers.push_back(boost::make_shared(connection)); + blockers.emplace_back(new SignalBlocker(connection)); } @@ -98,7 +96,7 @@ public: dlg._event_list_selection->set_mode(Gtk::SELECTION_SINGLE); { - std::vector > blockers; + std::vector > blockers; addBlocker(blockers, &(*dlg._callback_connections)[Inkscape::EventLog::CALLB_SELECTION_CHANGE]); addBlocker(blockers, &(*dlg._callback_connections)[Inkscape::EventLog::CALLB_EXPAND]); @@ -119,7 +117,7 @@ public: void collapseRow(Gtk::TreeModel::Path const &path) { - std::vector > blockers; + std::vector > blockers; for (std::vector::iterator it(_connections.begin()); it != _connections.end(); ++it) { addBlocker(blockers, &(*it->_callback_connections)[Inkscape::EventLog::CALLB_SELECTION_CHANGE]); @@ -134,7 +132,7 @@ public: void selectRow(Gtk::TreeModel::Path const &path) { - std::vector > blockers; + std::vector > blockers; for (std::vector::iterator it(_connections.begin()); it != _connections.end(); ++it) { addBlocker(blockers, &(*it->_callback_connections)[Inkscape::EventLog::CALLB_SELECTION_CHANGE]); @@ -152,7 +150,7 @@ public: void clearEventList(Glib::RefPtr eventListStore) { if (eventListStore) { - std::vector > blockers; + std::vector > blockers; for (std::vector::iterator it(_connections.begin()); it != _connections.end(); ++it) { addBlocker(blockers, &(*it->_callback_connections)[Inkscape::EventLog::CALLB_SELECTION_CHANGE]); diff --git a/src/ui/tool/manipulator.h b/src/ui/tool/manipulator.h index 0f26c6de1..66b47ce98 100644 --- a/src/ui/tool/manipulator.h +++ b/src/ui/tool/manipulator.h @@ -17,7 +17,6 @@ #include #include #include -#include #include "ui/tools/tool-base.h" class SPDesktop; @@ -76,14 +75,14 @@ template class MultiManipulator : public PointManipulator { public: //typedef typename T::ItemType ItemType; - typedef typename std::pair > MapPair; - typedef typename std::map > MapType; + typedef typename std::pair > MapPair; + typedef typename std::map > MapType; MultiManipulator(SPDesktop *d, ControlPointSelection &sel) : PointManipulator(d, sel) {} void addItem(void *item) { - boost::shared_ptr m(_createManipulator(item)); + std::shared_ptr m(_createManipulator(item)); _mmap.insert(MapPair(item, m)); } void removeItem(void *item) { diff --git a/src/ui/tool/multi-path-manipulator.cpp b/src/ui/tool/multi-path-manipulator.cpp index f30c7e349..9cfa4ed31 100644 --- a/src/ui/tool/multi-path-manipulator.cpp +++ b/src/ui/tool/multi-path-manipulator.cpp @@ -10,7 +10,6 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#include #include "node.h" #include #include "desktop.h" @@ -161,7 +160,7 @@ void MultiPathManipulator::setItems(std::set const &s) if (sr.edit_transform != sr_new.edit_transform || sr.role != sr_new.role) { - boost::shared_ptr hold(i->second); + std::shared_ptr hold(i->second); if (sr.edit_transform != sr_new.edit_transform) hold->setControlsTransform(sr_new.edit_transform); if (sr.role != sr_new.role) { @@ -179,7 +178,7 @@ void MultiPathManipulator::setItems(std::set const &s) for (std::set::iterator i = shapes.begin(); i != shapes.end(); ++i) { ShapeRecord const &r = *i; if (!SP_IS_PATH(r.item) && !IS_LIVEPATHEFFECT(r.item)) continue; - boost::shared_ptr newpm(new PathManipulator(*this, (SPPath*) r.item, + std::shared_ptr newpm(new PathManipulator(*this, (SPPath*) r.item, r.edit_transform, _getOutlineColor(r.role, r.item), r.lpe_key)); newpm->showHandles(_show_handles); // always show outlines for clips and masks diff --git a/src/ui/tool/multi-path-manipulator.h b/src/ui/tool/multi-path-manipulator.h index 4f152e0a2..742c6d421 100644 --- a/src/ui/tool/multi-path-manipulator.h +++ b/src/ui/tool/multi-path-manipulator.h @@ -77,8 +77,8 @@ public: sigc::signal signal_coords_changed; /// Emitted whenever the coordinates /// shown in the status bar need updating private: - typedef std::pair > MapPair; - typedef std::map > MapType; + typedef std::pair > MapPair; + typedef std::map > MapType; template void invokeForAll(R (PathManipulator::*method)()) { @@ -88,11 +88,11 @@ private: // be a valid iterator and then assign i to it. MapType::iterator next_i = i; ++next_i; - // i->second is a boost::shared_ptr so try to hold on to it so + // i->second is a std::shared_ptr so try to hold on to it so // it won't get freed prematurely by the WriteXML() method or // whatever. See https://bugs.launchpad.net/inkscape/+bug/1617615 // Applicable to empty paths. - boost::shared_ptr hold(i->second); + std::shared_ptr hold(i->second); ((hold.get())->*method)(); i = next_i; } diff --git a/src/ui/tool/node.h b/src/ui/tool/node.h index a05f0e3b9..2964b66ca 100644 --- a/src/ui/tool/node.h +++ b/src/ui/tool/node.h @@ -22,8 +22,6 @@ #include #include -#include -#include #include "ui/tool/selectable-control-point.h" #include "snapped-point.h" #include "ui/tool/node-types.h" @@ -357,7 +355,7 @@ private: friend class NodeList; }; -class NodeList : ListNode, boost::noncopyable, public boost::enable_shared_from_this { +class NodeList : ListNode, boost::noncopyable { public: typedef std::size_t size_type; typedef Node &reference; @@ -465,9 +463,9 @@ private: * List of node lists. Represents an editable path. * Editable path composed of one or more subpaths. */ -class SubpathList : public std::list< boost::shared_ptr > { +class SubpathList : public std::list< std::shared_ptr > { public: - typedef std::list< boost::shared_ptr > list_type; + typedef std::list< std::shared_ptr > list_type; SubpathList(PathManipulator &pm) : _path_manipulator(pm) {} PathManipulator &pm() { return _path_manipulator; } diff --git a/src/ui/tool/path-manipulator.h b/src/ui/tool/path-manipulator.h index 283cb610a..5fa24c23b 100644 --- a/src/ui/tool/path-manipulator.h +++ b/src/ui/tool/path-manipulator.h @@ -15,8 +15,6 @@ #include #include <2geom/pathvector.h> #include <2geom/affine.h> -#include -#include #include "ui/tool/node.h" #include "ui/tool/manipulator.h" #include "live_effects/lpe-bspline.h" @@ -105,7 +103,7 @@ public: static bool is_item_type(void *item); private: typedef NodeList Subpath; - typedef boost::shared_ptr SubpathPtr; + typedef std::shared_ptr SubpathPtr; void _createControlPointsFromGeometry(); -- cgit v1.2.3 From 765af83f76a01ebfd7d17e1873e07a429dff1187 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Tue, 17 Oct 2017 14:09:05 +0200 Subject: Remove text 'width' and 'height' attributes. These were replaced by the 'inline-size' property. --- src/sp-text.cpp | 28 ---------------------------- src/sp-text.h | 6 +----- 2 files changed, 1 insertion(+), 33 deletions(-) diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 7bc120985..3289e4b24 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -72,10 +72,6 @@ void SPText::build(SPDocument *doc, Inkscape::XML::Node *repr) { this->readAttr( "textLength" ); this->readAttr( "lengthAdjust" ); - // SVG 2 Auto wrapped text - this->readAttr( "width" ); - this->readAttr( "height" ); - SPItem::build(doc, repr); this->readAttr( "sodipodi:linespacing" ); // has to happen after the styles are read @@ -107,22 +103,6 @@ void SPText::set(unsigned int key, const gchar* value) { this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_TEXT_LAYOUT_MODIFIED_FLAG); break; - case SP_ATTR_WIDTH: - if (!this->width.read(value) || this->width.value < 0.0) { - this->width.unset(); - } - - this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - break; - - case SP_ATTR_HEIGHT: - if (!this->height.read(value) || this->height.value < 0.0) { - this->height.unset(); - } - - this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); - break; - default: SPItem::set(key, value); break; @@ -284,14 +264,6 @@ Inkscape::XML::Node *SPText::write(Inkscape::XML::Document *xml_doc, Inkscape::X this->attributes.writeTo(repr); this->rebuildLayout(); // copied from update(), see LP Bug 1339305 - // SVG 2 Auto-wrapped text - if( this->width.computed > 0.0 ) { - sp_repr_set_svg_double(repr, "width", this->width.computed); - } - if( this->height.computed > 0.0 ) { - sp_repr_set_svg_double(repr, "height", this->height.computed); - } - SPItem::write(xml_doc, repr, flags); return repr; diff --git a/src/sp-text.h b/src/sp-text.h index be48d7fcb..93a4e0d3b 100644 --- a/src/sp-text.h +++ b/src/sp-text.h @@ -42,14 +42,10 @@ public: /** Completely recalculates the layout. */ void rebuildLayout(); -//semiprivate: (need to be accessed by the C-style functions still) + //semiprivate: (need to be accessed by the C-style functions still) TextTagAttributes attributes; Inkscape::Text::Layout layout; - // SVG 2 Auto-wrapped text - SVGLength width; - SVGLength height; - /** when the object is transformed it's nicer to change the font size and coordinates when we can, rather than just applying a matrix transform. is_root is used to indicate to the function that it should -- cgit v1.2.3 From f8d9cf44a22b5011b0367d404414a657ef45f139 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Tue, 17 Oct 2017 14:36:20 +0200 Subject: Allow multiple shapes in 'shape-inside' and 'shape-subtract'. Work from Alex Roman --- src/sp-text.cpp | 169 +++++++++++++++++++++++++++++++++++++++++--------------- src/sp-text.h | 3 + 2 files changed, 128 insertions(+), 44 deletions(-) diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 3289e4b24..7f2096bb7 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -28,6 +28,7 @@ #include #include +#include #include "svg/svg.h" #include "display/drawing-text.h" #include "attributes.h" @@ -422,58 +423,81 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio int child_attrs_offset = 0; Inkscape::Text::Layout::OptionalTextTagAttrs optional_attrs; - // Test SVG 2 text in shape implementation // To do: follow SPItem clip_ref/mask_ref code if (style->shape_inside.set ) { - // Extract out id - Glib::ustring shape_url = style->shape_inside.value; - if ( shape_url.compare(0,5,"url(#") != 0 || shape_url.compare(shape_url.size()-1,1,")") != 0 ){ - std::cerr << "SPText::_buildLayoutInput(): Invalid shape-inside value: " << shape_url << std::endl; - } else { - shape_url.erase(0,5); - shape_url.erase(shape_url.size()-1,1); - // std::cout << "SPText::_buildLayoutInput(): shape-inside: " << shape_url << std::endl; - SPShape *shape = dynamic_cast(document->getObjectById( shape_url )); - if ( shape ) { - - // This code adapted from sp-flowregion.cpp: GetDest() - if (!(shape->_curve)) { - shape->set_shape(); - } - SPCurve *curve = shape->getCurve(); + // Find union of all exclusion shapes + Shape *exclusion_shape; + if(style->shape_subtract.set) { + exclusion_shape = _buildExclusionShape(); + } - if ( curve ) { - Path *temp = new Path; - Path *padded = new Path; - temp->LoadPathVector( curve->get_pathvector(), shape->transform, true ); - if( style->shape_padding.set ) { - // std::cout << " padding: " << style->shape_padding.computed << std::endl; - temp->OutsideOutline ( padded, style->shape_padding.computed, join_round, butt_straight, 20.0 ); + // Extract out shapes (a comma separated list of urls) + Glib::ustring shapeInside_value = style->shape_inside.value; + std::vector shapes_url = Glib::Regex::split_simple(" ", shapeInside_value); + for (int i=0; i(document->getObjectById( shape_url )); + if ( shape ) { + + // This code adapted from sp-flowregion.cpp: GetDest() + if (!(shape->_curve)) { + shape->set_shape(); + } + SPCurve *curve = shape->getCurve(); + + if ( curve ) { + Path *temp = new Path; + Path *padded = new Path; + temp->LoadPathVector( curve->get_pathvector(), shape->transform, true ); + if( style->shape_padding.set ) { + // std::cout << " padding: " << style->shape_padding.computed << std::endl; + temp->OutsideOutline ( padded, style->shape_padding.computed, join_round, butt_straight, 20.0 ); + } else { + // std::cout << " no padding" << std::endl; + padded->Copy( temp ); + } + padded->Convert( 0.25 ); // Convert to polyline + Shape* sh = new Shape; + padded->Fill( sh, 0 ); + // for( unsigned i = 0; i < temp->pts.size(); ++i ) { + // std::cout << " ........ " << temp->pts[i].p << std::endl; + // } + // std::cout << " ...... shape: " << sh->numberOfPoints() << std::endl; + Shape *uncross = new Shape; + uncross->ConvertToShape( sh ); + + // Subtract exclusion shape + if(style->shape_subtract.set) { + Shape *copy = new Shape; + if (exclusion_shape && exclusion_shape->hasEdges()) { + copy->Booleen(uncross, const_cast(exclusion_shape), bool_op_diff); + } else { + copy->Copy(uncross); + } + layout.appendWrapShape( copy ); + //delete exclusion_shape; + continue; + } + + layout.appendWrapShape( uncross ); + + delete temp; + delete padded; + delete sh; + // delete uncross; } else { - // std::cout << " no padding" << std::endl; - padded->Copy( temp ); + std::cerr << "SPText::_buildLayoutInput(): Failed to get curve." << std::endl; } - padded->Convert( 0.25 ); // Convert to polyline - Shape* sh = new Shape; - padded->Fill( sh, 0 ); - // for( unsigned i = 0; i < temp->pts.size(); ++i ) { - // std::cout << " ........ " << temp->pts[i].p << std::endl; - // } - // std::cout << " ...... shape: " << sh->numberOfPoints() << std::endl; - Shape *uncross = new Shape; - uncross->ConvertToShape( sh ); - layout.appendWrapShape( uncross ); - - delete temp; - delete padded; - delete sh; - // delete uncross; } else { - std::cerr << "SPText::_buildLayoutInput(): Failed to get curve." << std::endl; + std::cerr << "SPText::_buildLayoutInput(): Failed to find shape." << std::endl; } - } else { - std::cerr << "SPText::_buildLayoutInput(): Failed to find shape." << std::endl; } } } @@ -567,6 +591,63 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio return length; } +Shape* SPText::_buildExclusionShape() const +{ + Shape *result = new Shape(); // Union of all exlusion shapes + Shape *shape_temp = new Shape(); + + Glib::ustring shapeSubtract_value = style->shape_subtract.value; + + // Extract out shapes (a comma separated list of urls) + std::vector shapes_url = Glib::Regex::split_simple(" ", shapeSubtract_value); + + for(int i=0; i(document->getObjectById( shape_url )); + if ( shape ) { + // This code adapted from sp-flowregion.cpp: GetDest() + if (!(shape->_curve)) { + shape->set_shape(); + } + SPCurve *curve = shape->getCurve(); + + if ( curve ) { + Path *temp = new Path; + Path *margin = new Path; + temp->LoadPathVector( curve->get_pathvector(), shape->transform, true ); + + if( shape->style->shape_margin.set ) { + temp->OutsideOutline ( margin, -shape->style->shape_margin.computed, join_round, butt_straight, 20.0 ); + } else { + margin->Copy( temp ); + } + + margin->Convert( 0.25 ); // Convert to polyline + Shape* sh = new Shape; + margin->Fill( sh, 0 ); + + Shape *uncross = new Shape; + uncross->ConvertToShape( sh ); + + if (result->hasEdges()) { + shape_temp->Booleen(result, uncross, bool_op_union); + std::swap(result, shape_temp); + } else { + result->Copy(uncross); + } + } + } + } + } + return result; +} + void SPText::rebuildLayout() { layout.clear(); diff --git a/src/sp-text.h b/src/sp-text.h index 93a4e0d3b..67613d043 100644 --- a/src/sp-text.h +++ b/src/sp-text.h @@ -68,6 +68,9 @@ private: that we don't get a spurious extra one at the end of the flow. */ unsigned _buildLayoutInput(SPObject *root, Inkscape::Text::Layout::OptionalTextTagAttrs const &parent_optional_attrs, unsigned parent_attrs_offset, bool in_textpath); + /** Union all exlusion shapes. */ + Shape* _buildExclusionShape() const; + public: /** Optimize textpath text on next set_transform. */ void optimizeTextpathText() -- cgit v1.2.3 From f113fba09e2df478335e983f04ad09798c774fe7 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Tue, 17 Oct 2017 19:47:08 +0200 Subject: Replace deprecated call to pango_win32_get_context --- src/libnrtype/FontFactory.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index b2baeb2f0..bf4cbc56f 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -89,26 +89,20 @@ font_factory::font_factory(void) : nbEnt(0), // Note: this "ents" cache only keeps fonts from being unreffed, does not speed up access maxEnt(32), ents(static_cast(g_malloc(maxEnt*sizeof(font_entry)))), - #ifdef USE_PANGO_WIN32 fontServer(pango_win32_font_map_for_display()), - fontContext(pango_win32_get_context()), pangoFontCache(pango_win32_font_map_get_font_cache(fontServer)), hScreenDC(pango_win32_get_dc()), #else fontServer(pango_ft2_font_map_new()), - fontContext(0), #endif + fontContext(pango_font_map_create_context(fontServer)), fontSize(512), loadedPtr(new FaceMapType()) { -#ifdef USE_PANGO_WIN32 -#else +#ifndef USE_PANGO_WIN32 pango_ft2_font_map_set_resolution(PANGO_FT2_FONT_MAP(fontServer), 72, 72); - - fontContext = pango_font_map_create_context(fontServer); - pango_ft2_font_map_set_default_substitute(PANGO_FT2_FONT_MAP(fontServer), FactorySubstituteFunc, this, -- cgit v1.2.3 From 41b862f1c4eaea48bdd0d546e2bb31907f15857b Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Wed, 18 Oct 2017 16:03:34 +0200 Subject: Refactor Util::ptr_shared Util::ptr_shared was only used in its specialization, so it is now refactored into a non-template class. Using it with arbitary classes was dangerous anyway. --- src/debug/demangle.cpp | 2 +- src/debug/demangle.h | 2 +- src/debug/event.h | 12 ++-- src/debug/gc-heap.h | 2 +- src/debug/heap.h | 2 +- src/debug/logger.cpp | 8 +-- src/debug/simple-event.h | 18 ++--- src/debug/sysv-heap.h | 2 +- src/debug/timestamp.cpp | 4 +- src/debug/timestamp.h | 2 +- src/gc-anchored.cpp | 2 +- src/io/resource.cpp | 4 +- src/io/resource.h | 2 +- src/layer-manager.cpp | 14 ++-- src/preferences.cpp | 4 +- src/sp-object.cpp | 2 +- src/sp-tref-reference.cpp | 8 +-- src/sp-tref-reference.h | 8 +-- src/ui/dialog/objects.cpp | 4 +- src/ui/dialog/styledialog.cpp | 12 ++-- src/ui/dialog/tags.cpp | 4 +- src/ui/tool/path-manipulator.cpp | 2 +- src/util/format.h | 10 +-- src/util/share.cpp | 11 +-- src/util/share.h | 131 +++++++++++++----------------------- src/xml/attribute-record.h | 4 +- src/xml/comment-node.h | 2 +- src/xml/composite-node-observer.cpp | 8 +-- src/xml/composite-node-observer.h | 8 +-- src/xml/event.cpp | 16 ++--- src/xml/event.h | 16 ++--- src/xml/helper-observer.cpp | 4 +- src/xml/helper-observer.h | 4 +- src/xml/log-builder.cpp | 8 +-- src/xml/log-builder.h | 8 +-- src/xml/node-observer.h | 8 +-- src/xml/pi-node.h | 2 +- src/xml/rebase-hrefs.cpp | 4 +- src/xml/repr-io.cpp | 6 +- src/xml/simple-document.cpp | 8 +-- src/xml/simple-document.h | 8 +-- src/xml/simple-node.cpp | 18 ++--- src/xml/simple-node.h | 2 +- src/xml/text-node.h | 4 +- 44 files changed, 188 insertions(+), 222 deletions(-) diff --git a/src/debug/demangle.cpp b/src/debug/demangle.cpp index 1d94f0eb9..04fe80d9b 100644 --- a/src/debug/demangle.cpp +++ b/src/debug/demangle.cpp @@ -50,7 +50,7 @@ MangleCache mangle_cache; } -Util::ptr_shared demangle(char const *name) { +Util::ptr_shared demangle(char const *name) { MangleCache::iterator found=mangle_cache.find(name); char const *result; diff --git a/src/debug/demangle.h b/src/debug/demangle.h index 7505d9550..c5e160caa 100644 --- a/src/debug/demangle.h +++ b/src/debug/demangle.h @@ -18,7 +18,7 @@ namespace Inkscape { namespace Debug { -Util::ptr_shared demangle(char const *name); +Util::ptr_shared demangle(char const *name); } diff --git a/src/debug/event.h b/src/debug/event.h index 1cdd4f7e2..2d3751ff5 100644 --- a/src/debug/event.h +++ b/src/debug/event.h @@ -40,23 +40,23 @@ public: struct PropertyPair { public: PropertyPair() {} - PropertyPair(Util::ptr_shared n, Util::ptr_shared v) + PropertyPair(Util::ptr_shared n, Util::ptr_shared v) : name(n), value(v) {} - PropertyPair(char const *n, Util::ptr_shared v) + PropertyPair(char const *n, Util::ptr_shared v) : name(Util::share_string(n)), value(v) {} - PropertyPair(Util::ptr_shared n, char const *v) + PropertyPair(Util::ptr_shared n, char const *v) : name(n), value(Util::share_string(v)) {} PropertyPair(char const *n, char const *v) : name(Util::share_string(n)), value(Util::share_string(v)) {} - Util::ptr_shared name; - Util::ptr_shared value; + Util::ptr_shared name; + Util::ptr_shared value; }; static Category category() { return OTHER; } - virtual Util::ptr_shared name() const=0; + virtual Util::ptr_shared name() const=0; virtual unsigned propertyCount() const=0; virtual PropertyPair property(unsigned property) const=0; diff --git a/src/debug/gc-heap.h b/src/debug/gc-heap.h index d120ddba9..0daf39487 100644 --- a/src/debug/gc-heap.h +++ b/src/debug/gc-heap.h @@ -23,7 +23,7 @@ public: int features() const { return SIZE_AVAILABLE | USED_AVAILABLE | GARBAGE_COLLECTED; } - Util::ptr_shared name() const { + Util::ptr_shared name() const { return Util::share_static_string("libgc"); } Heap::Stats stats() const { diff --git a/src/debug/heap.h b/src/debug/heap.h index e1e01f022..d7d39efb9 100644 --- a/src/debug/heap.h +++ b/src/debug/heap.h @@ -36,7 +36,7 @@ public: virtual int features() const=0; - virtual Util::ptr_shared name() const=0; + virtual Util::ptr_shared name() const=0; virtual Stats stats() const=0; virtual void force_collect()=0; }; diff --git a/src/debug/logger.cpp b/src/debug/logger.cpp index 2eb81a0ba..d422b8e72 100644 --- a/src/debug/logger.cpp +++ b/src/debug/logger.cpp @@ -26,7 +26,7 @@ bool Logger::_category_mask[Event::N_CATEGORIES]; namespace { -static void write_escaped_value(std::ostream &os, Util::ptr_shared value) { +static void write_escaped_value(std::ostream &os, Util::ptr_shared value) { for ( char const *current=value ; *current ; ++current ) { switch (*current) { case '&': @@ -58,7 +58,7 @@ static void write_indent(std::ostream &os, unsigned depth) { static std::ofstream log_stream; static bool empty_tag=false; -typedef std::vector, GC::Alloc, GC::MANUAL> > TagStack; +typedef std::vector > TagStack; static TagStack &tag_stack() { static TagStack stack; return stack; @@ -158,7 +158,7 @@ void Logger::init() { } void Logger::_start(Event const &event) { - Util::ptr_shared name=event.name(); + Util::ptr_shared name=event.name(); if (empty_tag) { log_stream << ">\n"; @@ -185,7 +185,7 @@ void Logger::_start(Event const &event) { } void Logger::_skip() { - tag_stack().push_back(Util::ptr_shared()); + tag_stack().push_back(Util::ptr_shared()); } void Logger::_finish() { diff --git a/src/debug/simple-event.h b/src/debug/simple-event.h index 03ce5d326..076b9b4b5 100644 --- a/src/debug/simple-event.h +++ b/src/debug/simple-event.h @@ -26,7 +26,7 @@ namespace Debug { template class SimpleEvent : public Event { public: - explicit SimpleEvent(Util::ptr_shared name) : _name(name) {} + explicit SimpleEvent(Util::ptr_shared name) : _name(name) {} explicit SimpleEvent(char const *name) : _name(Util::share_string(name)) {} // default copy @@ -34,7 +34,7 @@ public: static Category category() { return C; } - Util::ptr_shared name() const { return _name; } + Util::ptr_shared name() const { return _name; } unsigned propertyCount() const { return _properties.size(); } PropertyPair property(unsigned property) const { return _properties[property]; @@ -43,21 +43,21 @@ public: void generateChildEvents() const {} protected: - void _addProperty(Util::ptr_shared name, - Util::ptr_shared value) + void _addProperty(Util::ptr_shared name, + Util::ptr_shared value) { _properties.push_back(PropertyPair(name, value)); } - void _addProperty(Util::ptr_shared name, char const *value) { + void _addProperty(Util::ptr_shared name, char const *value) { _addProperty(name, Util::share_string(value)); } - void _addProperty(char const *name, Util::ptr_shared value) { + void _addProperty(char const *name, Util::ptr_shared value) { _addProperty(Util::share_string(name), value); } void _addProperty(char const *name, char const *value) { _addProperty(Util::share_string(name), Util::share_string(value)); } - void _addProperty(Util::ptr_shared name, long value) { + void _addProperty(Util::ptr_shared name, long value) { _addFormattedProperty(name, "%ld", value); } void _addProperty(char const *name, long value) { @@ -65,10 +65,10 @@ protected: } private: - Util::ptr_shared _name; + Util::ptr_shared _name; std::vector > _properties; - void _addFormattedProperty(Util::ptr_shared name, char const *format, ...) + void _addFormattedProperty(Util::ptr_shared name, char const *format, ...) { va_list args; va_start(args, format); diff --git a/src/debug/sysv-heap.h b/src/debug/sysv-heap.h index ba8f5db83..4bde77cd8 100644 --- a/src/debug/sysv-heap.h +++ b/src/debug/sysv-heap.h @@ -23,7 +23,7 @@ public: int features() const; - Util::ptr_shared name() const { + Util::ptr_shared name() const { return Util::share_static_string("standard malloc()"); } Stats stats() const; diff --git a/src/debug/timestamp.cpp b/src/debug/timestamp.cpp index 6de03a463..cdd47e881 100644 --- a/src/debug/timestamp.cpp +++ b/src/debug/timestamp.cpp @@ -19,8 +19,8 @@ namespace Inkscape { namespace Debug { -Util::ptr_shared timestamp() { - Util::ptr_shared result; +Util::ptr_shared timestamp() { + Util::ptr_shared result; GTimeVal timestamp; g_get_current_time(×tamp); gchar *value = g_strdup_printf( "%d.%06d", static_cast(timestamp.tv_sec), static_cast(timestamp.tv_usec) ); diff --git a/src/debug/timestamp.h b/src/debug/timestamp.h index 336ed5d0f..c145ffbc9 100644 --- a/src/debug/timestamp.h +++ b/src/debug/timestamp.h @@ -18,7 +18,7 @@ namespace Inkscape { namespace Debug { -Util::ptr_shared timestamp(); +Util::ptr_shared timestamp(); } diff --git a/src/gc-anchored.cpp b/src/gc-anchored.cpp index 4abd44b57..3ce6eff7b 100644 --- a/src/gc-anchored.cpp +++ b/src/gc-anchored.cpp @@ -27,7 +27,7 @@ typedef Debug::SimpleEvent RefCountEvent; class BaseAnchorEvent : public RefCountEvent { public: BaseAnchorEvent(Anchored const *object, int bias, - Util::ptr_shared name) + Util::ptr_shared name) : RefCountEvent(name) { _addProperty("base", Util::format("%p", Core::base(const_cast(object)))); diff --git a/src/io/resource.cpp b/src/io/resource.cpp index bc6c9f7b0..c3cd9e403 100644 --- a/src/io/resource.cpp +++ b/src/io/resource.cpp @@ -113,10 +113,10 @@ gchar *_get_path(Domain domain, Type type, char const *filename) return path; } -Util::ptr_shared get_path(Domain domain, Type type, char const *filename) +Util::ptr_shared get_path(Domain domain, Type type, char const *filename) { char *path = _get_path(domain, type, filename); - Util::ptr_shared result=Util::share_string(path); + Util::ptr_shared result=Util::share_string(path); g_free(path); return result; } diff --git a/src/io/resource.h b/src/io/resource.h index d12372024..d7dd506ad 100644 --- a/src/io/resource.h +++ b/src/io/resource.h @@ -56,7 +56,7 @@ enum Domain { USER }; -Util::ptr_shared get_path(Domain domain, Type type, +Util::ptr_shared get_path(Domain domain, Type type, char const *filename=NULL); Glib::ustring get_path_ustring(Domain domain, Type type, diff --git a/src/layer-manager.cpp b/src/layer-manager.cpp index 3a6cce99c..f68175055 100644 --- a/src/layer-manager.cpp +++ b/src/layer-manager.cpp @@ -40,8 +40,8 @@ public: virtual void notifyChildAdded( Node &/*node*/, Node &/*child*/, Node */*prev*/ ) {} virtual void notifyChildRemoved( Node &/*node*/, Node &/*child*/, Node */*prev*/ ) {} virtual void notifyChildOrderChanged( Node &/*node*/, Node &/*child*/, Node */*old_prev*/, Node */*new_prev*/ ) {} - virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} - virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { + virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} + virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { if ( name == _lockedAttr || name == _labelAttr ) { if ( _mgr && _obj ) { _mgr->_objectModified( _obj, 0 ); @@ -59,9 +59,9 @@ public: /* namespace { -Util::ptr_shared stringify_node(Node const &node); +Util::ptr_shared stringify_node(Node const &node); -Util::ptr_shared stringify_obj(SPObject const &obj) { +Util::ptr_shared stringify_obj(SPObject const &obj) { gchar *string; if (obj.id) { @@ -70,7 +70,7 @@ Util::ptr_shared stringify_obj(SPObject const &obj) { string = g_strdup_printf("SPObject(%p) repr(%p)", &obj, obj.repr); } - Util::ptr_shared result=Util::share_string(string); + Util::ptr_shared result=Util::share_string(string); g_free(string); return result; @@ -80,7 +80,7 @@ typedef Debug::SimpleEvent DebugLayer; class DebugLayerNote : public DebugLayer { public: - DebugLayerNote(Util::ptr_shared descr) + DebugLayerNote(Util::ptr_shared descr) : DebugLayer(Util::share_static_string("layer-note")) { _addProperty("descr", descr); @@ -97,7 +97,7 @@ public: class DebugLayerObj : public DebugLayer { public: - DebugLayerObj(SPObject const& obj, Util::ptr_shared name) + DebugLayerObj(SPObject const& obj, Util::ptr_shared name) : DebugLayer(name) { _addProperty("layer", stringify_obj(obj)); diff --git a/src/preferences.cpp b/src/preferences.cpp index 4d14afa93..9d5fb0639 100644 --- a/src/preferences.cpp +++ b/src/preferences.cpp @@ -76,7 +76,7 @@ public: _filter(filter) {} virtual ~PrefNodeObserver() {} - virtual void notifyAttributeChanged(XML::Node &node, GQuark name, Util::ptr_shared, Util::ptr_shared); + virtual void notifyAttributeChanged(XML::Node &node, GQuark name, Util::ptr_shared, Util::ptr_shared); private: Observer &_observer; Glib::ustring const _filter; @@ -561,7 +561,7 @@ Preferences::Observer::~Observer() prefs->removeObserver(*this); } -void Preferences::PrefNodeObserver::notifyAttributeChanged(XML::Node &node, GQuark name, Util::ptr_shared, Util::ptr_shared new_value) +void Preferences::PrefNodeObserver::notifyAttributeChanged(XML::Node &node, GQuark name, Util::ptr_shared, Util::ptr_shared new_value) { // filter out attributes we don't watch gchar const *attr_name = g_quark_to_string(name); diff --git a/src/sp-object.cpp b/src/sp-object.cpp index fc222f701..bc930a430 100644 --- a/src/sp-object.cpp +++ b/src/sp-object.cpp @@ -199,7 +199,7 @@ typedef Debug::SimpleEvent BaseRefCountEvent; class RefCountEvent : public BaseRefCountEvent { public: - RefCountEvent(SPObject *object, int bias, Util::ptr_shared name) + RefCountEvent(SPObject *object, int bias, Util::ptr_shared name) : BaseRefCountEvent(name) { _addProperty("object", Util::format("%p", object)); diff --git a/src/sp-tref-reference.cpp b/src/sp-tref-reference.cpp index dfb8dd60b..d683e34ed 100644 --- a/src/sp-tref-reference.cpp +++ b/src/sp-tref-reference.cpp @@ -75,8 +75,8 @@ void SPTRefReference::notifyChildOrderChanged(Inkscape::XML::Node &/*node*/, Ink void SPTRefReference::notifyContentChanged(Inkscape::XML::Node &/*node*/, - Inkscape::Util::ptr_shared /*old_content*/, - Inkscape::Util::ptr_shared /*new_content*/) + Inkscape::Util::ptr_shared /*old_content*/, + Inkscape::Util::ptr_shared /*new_content*/) { SPObject *owner = getOwner(); @@ -87,8 +87,8 @@ void SPTRefReference::notifyContentChanged(Inkscape::XML::Node &/*node*/, void SPTRefReference::notifyAttributeChanged(Inkscape::XML::Node &/*node*/, GQuark /*name*/, - Inkscape::Util::ptr_shared /*old_value*/, - Inkscape::Util::ptr_shared /*new_value*/) + Inkscape::Util::ptr_shared /*old_value*/, + Inkscape::Util::ptr_shared /*new_value*/) { // Do nothing - tref only cares about textual content } diff --git a/src/sp-tref-reference.h b/src/sp-tref-reference.h index b555ace2d..516e125c1 100644 --- a/src/sp-tref-reference.h +++ b/src/sp-tref-reference.h @@ -52,11 +52,11 @@ public: virtual void notifyChildOrderChanged(Inkscape::XML::Node &node, Inkscape::XML::Node &child, Inkscape::XML::Node *old_prev, Inkscape::XML::Node *new_prev); virtual void notifyContentChanged(Inkscape::XML::Node &node, - Inkscape::Util::ptr_shared old_content, - Inkscape::Util::ptr_shared new_content); + Inkscape::Util::ptr_shared old_content, + Inkscape::Util::ptr_shared new_content); virtual void notifyAttributeChanged(Inkscape::XML::Node &node, GQuark name, - Inkscape::Util::ptr_shared old_value, - Inkscape::Util::ptr_shared new_value); + Inkscape::Util::ptr_shared old_value, + Inkscape::Util::ptr_shared new_value); ///////////////////////////////////////////////////////////////////// protected: diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp index 49ffa38f5..b50d68239 100644 --- a/src/ui/dialog/objects.cpp +++ b/src/ui/dialog/objects.cpp @@ -148,8 +148,8 @@ public: _pnl->_objectsChanged( _obj ); } } - virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} - virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { + virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} + virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { if ( _pnl && _obj ) { if ( name == _lockedAttr || name == _labelAttr || name == _highlightAttr || name == _groupAttr || name == _styleAttr || name == _clipAttr || name == _maskAttr ) { _pnl->_updateObject(_obj, name == _highlightAttr); diff --git a/src/ui/dialog/styledialog.cpp b/src/ui/dialog/styledialog.cpp index aa453e8e8..60138fa89 100644 --- a/src/ui/dialog/styledialog.cpp +++ b/src/ui/dialog/styledialog.cpp @@ -56,8 +56,8 @@ public: }; virtual void notifyContentChanged(Inkscape::XML::Node &node, - Inkscape::Util::ptr_shared old_content, - Inkscape::Util::ptr_shared new_content); + Inkscape::Util::ptr_shared old_content, + Inkscape::Util::ptr_shared new_content); StyleDialog * _styleDialog; }; @@ -66,8 +66,8 @@ public: void StyleDialog::NodeObserver::notifyContentChanged( Inkscape::XML::Node &/*node*/, - Inkscape::Util::ptr_shared /*old_content*/, - Inkscape::Util::ptr_shared /*new_content*/ ) { + Inkscape::Util::ptr_shared /*old_content*/, + Inkscape::Util::ptr_shared /*new_content*/ ) { #ifdef DEBUG_STYLEDIALOG std::cout << "StyleDialog::NodeObserver::notifyContentChanged" << std::endl; @@ -111,8 +111,8 @@ public: virtual void notifyAttributeChanged( Inkscape::XML::Node &node, GQuark qname, - Util::ptr_shared /*old_value*/, - Util::ptr_shared /*new_value*/ ) { + Util::ptr_shared /*old_value*/, + Util::ptr_shared /*new_value*/ ) { if ( _styleDialog && _repr ) { // For the moment only care about attributes that are directly used in selectors. diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp index d804e1f68..ae45654a7 100644 --- a/src/ui/dialog/tags.cpp +++ b/src/ui/dialog/tags.cpp @@ -106,8 +106,8 @@ public: _pnl->_objectsChanged( _obj ); } } - virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} - virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { + virtual void notifyContentChanged( Node &/*node*/, Util::ptr_shared /*old_content*/, Util::ptr_shared /*new_content*/ ) {} + virtual void notifyAttributeChanged( Node &/*node*/, GQuark name, Util::ptr_shared /*old_value*/, Util::ptr_shared /*new_value*/ ) { if ( _pnl && _obj ) { if ( name == _labelAttr ) { _pnl->_updateObject( _obj); diff --git a/src/ui/tool/path-manipulator.cpp b/src/ui/tool/path-manipulator.cpp index f2899dd01..2c99e7fc8 100644 --- a/src/ui/tool/path-manipulator.cpp +++ b/src/ui/tool/path-manipulator.cpp @@ -68,7 +68,7 @@ public: } virtual void notifyAttributeChanged(Inkscape::XML::Node &/*node*/, GQuark attr, - Util::ptr_shared, Util::ptr_shared) + Util::ptr_shared, Util::ptr_shared) { // do nothing if blocked if (_blocked) return; diff --git a/src/util/format.h b/src/util/format.h index 690121254..d2fe2d0ef 100644 --- a/src/util/format.h +++ b/src/util/format.h @@ -20,20 +20,20 @@ namespace Inkscape { namespace Util { -inline ptr_shared vformat(char const *format, va_list args) { +inline ptr_shared vformat(char const *format, va_list args) { char *temp=g_strdup_vprintf(format, args); - ptr_shared result=share_string(temp); + ptr_shared result=share_string(temp); g_free(temp); return result; } // needed since G_GNUC_PRINTF can only be used on a declaration - ptr_shared format(char const *format, ...) G_GNUC_PRINTF(1,2); -inline ptr_shared format(char const *format, ...) { + ptr_shared format(char const *format, ...) G_GNUC_PRINTF(1,2); +inline ptr_shared format(char const *format, ...) { va_list args; va_start(args, format); - ptr_shared result=vformat(format, args); + ptr_shared result=vformat(format, args); va_end(args); return result; diff --git a/src/util/share.cpp b/src/util/share.cpp index 3cb289b10..d5d93fc75 100644 --- a/src/util/share.cpp +++ b/src/util/share.cpp @@ -1,5 +1,6 @@ /* - * Inkscape::Util::ptr_shared - like T const *, but stronger + * Inkscape::Util::ptr_shared - like T const *, but stronger. + * Used to hold c-style strings for objects that are managed by the gc. * * Authors: * MenTaLguY @@ -15,13 +16,13 @@ namespace Inkscape { namespace Util { -ptr_shared share_string(char const *string) { - g_return_val_if_fail(string != NULL, share_unsafe(NULL)); +ptr_shared share_string(char const *string) { + g_return_val_if_fail(string != NULL, share_unsafe(NULL)); return share_string(string, std::strlen(string)); } -ptr_shared share_string(char const *string, std::size_t length) { - g_return_val_if_fail(string != NULL, share_unsafe(NULL)); +ptr_shared share_string(char const *string, std::size_t length) { + g_return_val_if_fail(string != NULL, share_unsafe(NULL)); char *new_string=new (GC::ATOMIC) char[length+1]; std::memcpy(new_string, string, length); new_string[length] = 0; diff --git a/src/util/share.h b/src/util/share.h index 8f1e7045a..6e5a24d71 100644 --- a/src/util/share.h +++ b/src/util/share.h @@ -1,5 +1,6 @@ /* - * Inkscape::Util::ptr_shared - like T const *, but stronger + * Inkscape::Util::ptr_shared - like T const *, but stronger. + * Used to hold c-style strings for objects that are managed by the gc. * * Authors: * MenTaLguY @@ -19,120 +20,84 @@ namespace Inkscape { namespace Util { -template class ptr_shared { public: - ptr_shared() : _obj(NULL) {} - template - ptr_shared(ptr_shared const &other) : _obj(other._obj) {} + ptr_shared() : _string(NULL) {} + ptr_shared(ptr_shared const &other) : _string(other._string) {} - T const *pointer() const { return _obj; } + operator char const *() const { return _string; } + operator bool() const { return _string; } - template - operator T1 const *() const { return _obj; } + char const *pointer() const { return _string; } + char const &operator[](int i) const { return _string[i]; } - operator bool() const { return _obj; } - - T const &operator*() const { return *_obj; } - T const *operator->() const { return _obj; } - T const &operator[](int i) const { return _obj[i]; } - - ptr_shared operator+(int i) const { - return share_unsafe(_obj+i); + ptr_shared operator+(int i) const { + return share_unsafe(_string+i); } - ptr_shared operator-(int i) const { - return share_unsafe(_obj-i); + ptr_shared operator-(int i) const { + return share_unsafe(_string-i); } - - ptr_shared &operator+=(int i) const { - _obj += i; + //WARNING: No bounds checking in += and -= functions. Moving the pointer + //past the end of the string and then back could probably cause the garbage + //collector to deallocate the string inbetween, as there's temporary no + //valid reference pointing into the allocated space. + ptr_shared &operator+=(int i) { + _string += i; return *this; } - ptr_shared &operator-=(int i) const { - _obj -= i; + ptr_shared &operator-=(int i) { + _string -= i; return *this; } - - template - std::ptrdiff_t operator-(ptr_shared const &other) { - return _obj - other._obj; + std::ptrdiff_t operator-(ptr_shared const &other) { + return _string - other._string; } - template - ptr_shared &operator=(ptr_shared const &other) { - _obj = other._obj; + ptr_shared &operator=(ptr_shared const &other) { + _string = other._string; return *this; } - template - bool operator==(ptr_shared const &other) const { - return _obj == other._obj; + bool operator==(ptr_shared const &other) const { + return _string == other._string; } - - template - bool operator!=(ptr_shared const &other) const { - return _obj != other._obj; + bool operator!=(ptr_shared const &other) const { + return _string != other._string; } - - template - bool operator>(ptr_shared const &other) const { - return _obj > other._obj; + bool operator>(ptr_shared const &other) const { + return _string > other._string; } - - template - bool operator<(ptr_shared const &other) const { - return _obj < other._obj; - } - - static ptr_shared share_unsafe(T const *obj) { - return ptr_shared(obj); + bool operator<(ptr_shared const &other) const { + return _string < other._string; } -protected: - explicit ptr_shared(T const *obj) : _obj(obj) {} + friend ptr_shared share_unsafe(char const *string); private: - T const *_obj; -}; - -template -inline ptr_shared share(T const *obj) { - return share_unsafe(obj ? new T(*obj) : NULL); -} + ptr_shared(char const *string) : _string(string) {} + static ptr_shared share_unsafe(char const *string) { + return ptr_shared(string); + } -ptr_shared share_string(char const *string); -ptr_shared share_string(char const *string, std::size_t length); + //This class (and code usign it) assumes that it never has to free this + //pointer, and that the memory it points to will not be freed as long as a + //ptr_shared pointing to it exists. + char const *_string; +}; -template -inline ptr_shared reshare(T const *obj) { - return ptr_shared::share_unsafe(obj); -} +ptr_shared share_string(char const *string); +ptr_shared share_string(char const *string, std::size_t length); -template -inline ptr_shared share_unsafe(T const *obj) { - return ptr_shared::share_unsafe(obj); +inline ptr_shared share_unsafe(char const *string) { + return ptr_shared::share_unsafe(string); } -inline ptr_shared share_static_string(char const *string) { +//TODO: Do we need this function? +inline ptr_shared share_static_string(char const *string) { return share_unsafe(string); } -template -inline ptr_shared static_cast_shared(ptr_shared const &ref) { - return reshare(static_cast(ref.pointer())); -} - -template -inline ptr_shared dynamic_cast_shared(ptr_shared const &ref) { - return reshare(dynamic_cast(ref.pointer())); -} - -template -inline ptr_shared reinterpret_cast_shared(ptr_shared const &ref) { - return reshare(reinterpret_cast(ref.pointer())); -} - } } diff --git a/src/xml/attribute-record.h b/src/xml/attribute-record.h index 7caeab6b6..91118c8a0 100644 --- a/src/xml/attribute-record.h +++ b/src/xml/attribute-record.h @@ -22,13 +22,13 @@ namespace XML { * represented by this structure. */ struct AttributeRecord : public Inkscape::GC::Managed<> { - AttributeRecord(GQuark k, Inkscape::Util::ptr_shared v) + AttributeRecord(GQuark k, Inkscape::Util::ptr_shared v) : key(k), value(v) {} /** @brief GQuark corresponding to the name of the attribute */ GQuark key; /** @brief Shared pointer to the value of the attribute */ - Inkscape::Util::ptr_shared value; + Inkscape::Util::ptr_shared value; // accept default copy constructor and assignment operator }; diff --git a/src/xml/comment-node.h b/src/xml/comment-node.h index 56b8ad476..7c37a0d24 100644 --- a/src/xml/comment-node.h +++ b/src/xml/comment-node.h @@ -26,7 +26,7 @@ namespace XML { * @brief Comment node, e.g. <!-- Some comment --> */ struct CommentNode : public SimpleNode { - CommentNode(Util::ptr_shared content, Document *doc) + CommentNode(Util::ptr_shared content, Document *doc) : SimpleNode(g_quark_from_static_string("comment"), doc) { setContent(content); diff --git a/src/xml/composite-node-observer.cpp b/src/xml/composite-node-observer.cpp index 7343ab1a8..581a4c226 100644 --- a/src/xml/composite-node-observer.cpp +++ b/src/xml/composite-node-observer.cpp @@ -69,7 +69,7 @@ void CompositeNodeObserver::notifyChildOrderChanged(Node &node, Node &child, void CompositeNodeObserver::notifyContentChanged( Node &node, - Util::ptr_shared old_content, Util::ptr_shared new_content + Util::ptr_shared old_content, Util::ptr_shared new_content ) { _startIteration(); for ( ObserverRecordList::iterator iter=_active.begin() ; @@ -84,7 +84,7 @@ void CompositeNodeObserver::notifyContentChanged( void CompositeNodeObserver::notifyAttributeChanged( Node &node, GQuark name, - Util::ptr_shared old_value, Util::ptr_shared new_value + Util::ptr_shared old_value, Util::ptr_shared new_value ) { _startIteration(); for ( ObserverRecordList::iterator iter=_active.begin() ; @@ -133,13 +133,13 @@ public: } } - void notifyContentChanged(Node &node, Util::ptr_shared old_content, Util::ptr_shared new_content) { + void notifyContentChanged(Node &node, Util::ptr_shared old_content, Util::ptr_shared new_content) { if (vector.content_changed) { vector.content_changed(&node, old_content, new_content, data); } } - void notifyAttributeChanged(Node &node, GQuark name, Util::ptr_shared old_value, Util::ptr_shared new_value) { + void notifyAttributeChanged(Node &node, GQuark name, Util::ptr_shared old_value, Util::ptr_shared new_value) { if (vector.attr_changed) { vector.attr_changed(&node, g_quark_to_string(name), old_value, new_value, false, data); } diff --git a/src/xml/composite-node-observer.h b/src/xml/composite-node-observer.h index 6e93a57da..1004617bf 100644 --- a/src/xml/composite-node-observer.h +++ b/src/xml/composite-node-observer.h @@ -75,12 +75,12 @@ public: Node *old_prev, Node *new_prev); void notifyContentChanged(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content); + Util::ptr_shared old_content, + Util::ptr_shared new_content); void notifyAttributeChanged(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value); + Util::ptr_shared old_value, + Util::ptr_shared new_value); private: unsigned _iterating; diff --git a/src/xml/event.cpp b/src/xml/event.cpp index 9a760ccc5..54f55d5c3 100644 --- a/src/xml/event.cpp +++ b/src/xml/event.cpp @@ -107,15 +107,15 @@ public: } void notifyAttributeChanged(Node &node, GQuark name, - Inkscape::Util::ptr_shared /*old_value*/, - Inkscape::Util::ptr_shared new_value) + Inkscape::Util::ptr_shared /*old_value*/, + Inkscape::Util::ptr_shared new_value) { node.setAttribute(g_quark_to_string(name), new_value); } void notifyContentChanged(Node &node, - Inkscape::Util::ptr_shared /*old_value*/, - Inkscape::Util::ptr_shared new_value) + Inkscape::Util::ptr_shared /*old_value*/, + Inkscape::Util::ptr_shared new_value) { node.setContent(new_value); } @@ -461,8 +461,8 @@ public: } void notifyAttributeChanged(Node &node, GQuark name, - Inkscape::Util::ptr_shared /*old_value*/, - Inkscape::Util::ptr_shared new_value) + Inkscape::Util::ptr_shared /*old_value*/, + Inkscape::Util::ptr_shared new_value) { if (new_value) { g_warning("Event: Set attribute %s to \"%s\" on %s", g_quark_to_string(name), new_value.pointer(), node_to_string(node).c_str()); @@ -472,8 +472,8 @@ public: } void notifyContentChanged(Node &node, - Inkscape::Util::ptr_shared /*old_value*/, - Inkscape::Util::ptr_shared new_value) + Inkscape::Util::ptr_shared /*old_value*/, + Inkscape::Util::ptr_shared new_value) { if (new_value) { g_warning("Event: Set content of %s to \"%s\"", node_to_string(node).c_str(), new_value.pointer()); diff --git a/src/xml/event.h b/src/xml/event.h index f6b734c29..ca79983ba 100644 --- a/src/xml/event.h +++ b/src/xml/event.h @@ -167,8 +167,8 @@ private: class EventChgAttr : public Event { public: EventChgAttr(Node *repr, GQuark k, - Inkscape::Util::ptr_shared ov, - Inkscape::Util::ptr_shared nv, + Inkscape::Util::ptr_shared ov, + Inkscape::Util::ptr_shared nv, Event *next) : Event(repr, next), key(k), oldval(ov), newval(nv) {} @@ -176,9 +176,9 @@ public: /// GQuark corresponding to the changed attribute's name GQuark key; /// Value of the attribute before the change - Inkscape::Util::ptr_shared oldval; + Inkscape::Util::ptr_shared oldval; /// Value of the attribute after the change - Inkscape::Util::ptr_shared newval; + Inkscape::Util::ptr_shared newval; private: Event *_optimizeOne(); @@ -192,15 +192,15 @@ private: class EventChgContent : public Event { public: EventChgContent(Node *repr, - Inkscape::Util::ptr_shared ov, - Inkscape::Util::ptr_shared nv, + Inkscape::Util::ptr_shared ov, + Inkscape::Util::ptr_shared nv, Event *next) : Event(repr, next), oldval(ov), newval(nv) {} /// Content of the node before the change - Inkscape::Util::ptr_shared oldval; + Inkscape::Util::ptr_shared oldval; /// Content of the node after the change - Inkscape::Util::ptr_shared newval; + Inkscape::Util::ptr_shared newval; private: Event *_optimizeOne(); diff --git a/src/xml/helper-observer.cpp b/src/xml/helper-observer.cpp index 957f3df0a..6f1094e53 100644 --- a/src/xml/helper-observer.cpp +++ b/src/xml/helper-observer.cpp @@ -44,10 +44,10 @@ void SignalObserver::notifyChildRemoved(XML::Node&, XML::Node&, XML::Node*) void SignalObserver::notifyChildOrderChanged(XML::Node&, XML::Node&, XML::Node*, XML::Node*) { signal_changed()(); } -void SignalObserver::notifyContentChanged(XML::Node&, Util::ptr_shared, Util::ptr_shared) +void SignalObserver::notifyContentChanged(XML::Node&, Util::ptr_shared, Util::ptr_shared) {} -void SignalObserver::notifyAttributeChanged(XML::Node&, GQuark, Util::ptr_shared, Util::ptr_shared) +void SignalObserver::notifyAttributeChanged(XML::Node&, GQuark, Util::ptr_shared, Util::ptr_shared) { signal_changed()(); } sigc::signal& SignalObserver::signal_changed() diff --git a/src/xml/helper-observer.h b/src/xml/helper-observer.h index b4c0aba41..b06b61e9c 100644 --- a/src/xml/helper-observer.h +++ b/src/xml/helper-observer.h @@ -24,8 +24,8 @@ public: void notifyChildAdded(Node&, Node&, Node*); void notifyChildRemoved(Node&, Node&, Node*); void notifyChildOrderChanged(Node&, Node&, Node*, Node*); - void notifyContentChanged(Node&, Util::ptr_shared, Util::ptr_shared); - void notifyAttributeChanged(Node&, GQuark, Util::ptr_shared, Util::ptr_shared); + void notifyContentChanged(Node&, Util::ptr_shared, Util::ptr_shared); + void notifyAttributeChanged(Node&, GQuark, Util::ptr_shared, Util::ptr_shared); sigc::signal& signal_changed(); private: sigc::signal _signal_changed; diff --git a/src/xml/log-builder.cpp b/src/xml/log-builder.cpp index 2cbdcfacf..12577cf69 100644 --- a/src/xml/log-builder.cpp +++ b/src/xml/log-builder.cpp @@ -49,16 +49,16 @@ void LogBuilder::setChildOrder(Node &node, Node &child, } void LogBuilder::setContent(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content) + Util::ptr_shared old_content, + Util::ptr_shared new_content) { _log = new Inkscape::XML::EventChgContent(&node, old_content, new_content, _log); _log = _log->optimizeOne(); } void LogBuilder::setAttribute(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value) + Util::ptr_shared old_value, + Util::ptr_shared new_value) { _log = new Inkscape::XML::EventChgAttr(&node, name, old_value, new_value, _log); _log = _log->optimizeOne(); diff --git a/src/xml/log-builder.h b/src/xml/log-builder.h index e94dd1daa..8b0f6662d 100644 --- a/src/xml/log-builder.h +++ b/src/xml/log-builder.h @@ -58,12 +58,12 @@ public: Node *old_prev, Node *new_prev); void setContent(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content); + Util::ptr_shared old_content, + Util::ptr_shared new_content); void setAttribute(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value); + Util::ptr_shared old_value, + Util::ptr_shared new_value); /*@}*/ private: diff --git a/src/xml/node-observer.h b/src/xml/node-observer.h index 9c7e096e5..28c492d66 100644 --- a/src/xml/node-observer.h +++ b/src/xml/node-observer.h @@ -123,8 +123,8 @@ public: * @param new_content New content of @c node */ virtual void notifyContentChanged(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content) { + Util::ptr_shared old_content, + Util::ptr_shared new_content) { INK_UNUSED(node); INK_UNUSED(old_content); INK_UNUSED(new_content); @@ -141,8 +141,8 @@ public: * @param new_value New value of the modified attribute */ virtual void notifyAttributeChanged(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value) { + Util::ptr_shared old_value, + Util::ptr_shared new_value) { INK_UNUSED(node); INK_UNUSED(name); INK_UNUSED(old_value); diff --git a/src/xml/pi-node.h b/src/xml/pi-node.h index 76a3dc741..eeed1632d 100644 --- a/src/xml/pi-node.h +++ b/src/xml/pi-node.h @@ -24,7 +24,7 @@ namespace XML { * @brief Processing instruction node, e.g. <?xml version="1.0" encoding="utf-8" standalone="no"?> */ struct PINode : public SimpleNode { - PINode(GQuark target, Util::ptr_shared content, Document *doc) + PINode(GQuark target, Util::ptr_shared content, Document *doc) : SimpleNode(target, doc) { setContent(content); diff --git a/src/xml/rebase-hrefs.cpp b/src/xml/rebase-hrefs.cpp index a34df09a5..c023dc670 100644 --- a/src/xml/rebase-hrefs.cpp +++ b/src/xml/rebase-hrefs.cpp @@ -112,8 +112,8 @@ Inkscape::XML::rebase_href_attrs(gchar const *const old_abs_base, * * However, if we find that xlink:href doesn't need rebasing, then return immediately * with no change to attributes. */ - ptr_shared old_href; - ptr_shared sp_absref; + ptr_shared old_href; + ptr_shared sp_absref; List ret; { for (List ai(attributes); ai; ++ai) { diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index d8e0f5418..b5ce18887 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -812,7 +812,7 @@ static void repr_write_comment( Writer &out, const gchar * val, bool addWhitespa namespace { typedef std::map LocalNameMap; -typedef std::map, Inkscape::compare_quark_ids> NSMap; +typedef std::map NSMap; gchar const *qname_local_name(Glib::QueryQuark qname) { static LocalNameMap local_name_map; @@ -846,7 +846,7 @@ void add_ns_map_entry(NSMap &ns_map, Glib::QueryQuark prefix) { g_warning("No namespace known for normalized prefix %s", g_quark_to_string(prefix)); } } else { - ns_map.insert(NSMap::value_type(prefix, ptr_shared())); + ns_map.insert(NSMap::value_type(prefix, ptr_shared())); } } } @@ -905,7 +905,7 @@ static void sp_repr_write_stream_root_element(Node *repr, Writer &out, for ( NSMap::iterator iter=ns_map.begin() ; iter != ns_map.end() ; ++iter ) { Glib::QueryQuark prefix=(*iter).first; - ptr_shared ns_uri=(*iter).second; + ptr_shared ns_uri=(*iter).second; if (prefix.id()) { if ( prefix != xml_prefix ) { diff --git a/src/xml/simple-document.cpp b/src/xml/simple-document.cpp index bae28e4b4..cf7851897 100644 --- a/src/xml/simple-document.cpp +++ b/src/xml/simple-document.cpp @@ -100,8 +100,8 @@ void SimpleDocument::notifyChildOrderChanged(Node &parent, } void SimpleDocument::notifyContentChanged(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content) + Util::ptr_shared old_content, + Util::ptr_shared new_content) { if (_in_transaction) { _log_builder.setContent(node, old_content, new_content); @@ -110,8 +110,8 @@ void SimpleDocument::notifyContentChanged(Node &node, void SimpleDocument::notifyAttributeChanged(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value) + Util::ptr_shared old_value, + Util::ptr_shared new_value) { if (_in_transaction) { _log_builder.setAttribute(node, name, old_value, new_value); diff --git a/src/xml/simple-document.h b/src/xml/simple-document.h index 7cbe50dda..01933076f 100644 --- a/src/xml/simple-document.h +++ b/src/xml/simple-document.h @@ -56,12 +56,12 @@ public: Node *old_prev, Node *new_prev); void notifyContentChanged(Node &node, - Util::ptr_shared old_content, - Util::ptr_shared new_content); + Util::ptr_shared old_content, + Util::ptr_shared new_content); void notifyAttributeChanged(Node &node, GQuark name, - Util::ptr_shared old_value, - Util::ptr_shared new_value); + Util::ptr_shared old_value, + Util::ptr_shared new_value); protected: SimpleDocument(SimpleDocument const &doc) diff --git a/src/xml/simple-node.cpp b/src/xml/simple-node.cpp index 6bd47fd22..78fc52a27 100644 --- a/src/xml/simple-node.cpp +++ b/src/xml/simple-node.cpp @@ -36,7 +36,7 @@ namespace XML { namespace { -Util::ptr_shared stringify_node(Node const &node) { +Util::ptr_shared stringify_node(Node const &node) { gchar *string; switch (node.type()) { case ELEMENT_NODE: { @@ -59,7 +59,7 @@ Util::ptr_shared stringify_node(Node const &node) { default: string = g_strdup_printf("unknown(%p)", &node); } - Util::ptr_shared result=Util::share_string(string); + Util::ptr_shared result=Util::share_string(string); g_free(string); return result; } @@ -68,7 +68,7 @@ typedef Debug::SimpleEvent DebugXML; class DebugXMLNode : public DebugXML { public: - DebugXMLNode(Node const &node, Util::ptr_shared name) + DebugXMLNode(Node const &node, Util::ptr_shared name) : DebugXML(name) { _addProperty("node", stringify_node(node)); @@ -115,7 +115,7 @@ public: class DebugSetContent : public DebugXMLNode { public: DebugSetContent(Node const &node, - Util::ptr_shared content) + Util::ptr_shared content) : DebugXMLNode(node, Util::share_static_string("set-content")) { _addProperty("content", content); @@ -133,7 +133,7 @@ class DebugSetAttribute : public DebugXMLNode { public: DebugSetAttribute(Node const &node, GQuark name, - Util::ptr_shared value) + Util::ptr_shared value) : DebugXMLNode(node, Util::share_static_string("set-attribute")) { _addProperty("name", Util::share_static_string(g_quark_to_string(name))); @@ -290,8 +290,8 @@ void SimpleNode::_setParent(SimpleNode *parent) { } void SimpleNode::setContent(gchar const *content) { - ptr_shared old_content=_content; - ptr_shared new_content = ( content ? share_string(content) : ptr_shared() ); + ptr_shared old_content=_content; + ptr_shared new_content = ( content ? share_string(content) : ptr_shared() ); Debug::EventTracker<> tracker; if (new_content) { @@ -365,9 +365,9 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ } Debug::EventTracker<> tracker; - ptr_shared old_value=( existing ? existing->value : ptr_shared() ); + ptr_shared old_value=( existing ? existing->value : ptr_shared() ); - ptr_shared new_value=ptr_shared(); + ptr_shared new_value=ptr_shared(); if (cleaned_value) { new_value = share_string(cleaned_value); tracker.set(*this, key, new_value); diff --git a/src/xml/simple-node.h b/src/xml/simple-node.h index d09392249..f2cfa953c 100644 --- a/src/xml/simple-node.h +++ b/src/xml/simple-node.h @@ -144,7 +144,7 @@ private: Inkscape::Util::MutableList _attributes; - Inkscape::Util::ptr_shared _content; + Inkscape::Util::ptr_shared _content; unsigned _child_count; mutable bool _cached_positions_valid; diff --git a/src/xml/text-node.h b/src/xml/text-node.h index 53798b822..4d71203a5 100644 --- a/src/xml/text-node.h +++ b/src/xml/text-node.h @@ -26,13 +26,13 @@ namespace XML { * @brief Text node, e.g. "Some text" in <group>Some text</group> */ struct TextNode : public SimpleNode { - TextNode(Util::ptr_shared content, Document *doc) + TextNode(Util::ptr_shared content, Document *doc) : SimpleNode(g_quark_from_static_string("string"), doc) { setContent(content); _is_CData = false; } - TextNode(Util::ptr_shared content, Document *doc, bool is_CData) + TextNode(Util::ptr_shared content, Document *doc, bool is_CData) : SimpleNode(g_quark_from_static_string("string"), doc) { setContent(content); -- cgit v1.2.3 From d70a0114c644012de1581c176f2ab0bd248746f4 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Thu, 19 Oct 2017 12:38:44 +0200 Subject: Implement rendering for SVG 2 text with 'inline-size'. Work partially from Alex Roman. --- src/sp-text.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 7f2096bb7..3d9a41fe3 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -125,6 +125,7 @@ void SPText::remove_child(Inkscape::XML::Node *rch) { void SPText::update(SPCtx *ctx, guint flags) { + unsigned childflags = (flags & SP_OBJECT_MODIFIED_CASCADE); if (flags & SP_OBJECT_MODIFIED_FLAG) { childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -162,6 +163,18 @@ void SPText::update(SPCtx *ctx, guint flags) { attributes.update( em, ex, w, h ); + // Set inline_size computed value if necessary (i.e. if unit is %). + if (style->inline_size.set) { + if (style->inline_size.unit == SP_CSS_UNIT_PERCENT) { + if (style->writing_mode.computed == SP_CSS_WRITING_MODE_LR_TB || + style->writing_mode.computed == SP_CSS_WRITING_MODE_RL_TB) { + style->inline_size.computed = style->inline_size.value * ictx->viewport.width(); + } else { + style->inline_size.computed = style->inline_size.value * ictx->viewport.height(); + } + } + } + /* fixme: It is not nice to have it here, but otherwise children content changes does not work */ /* fixme: Even now it may not work, as we are delayed */ /* fixme: So check modification flag everywhere immediate state is used */ @@ -500,6 +513,56 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio } } } + } else if (style->inline_size.set) { + // If both shape_inside and inline_size are set, shape_inside wins out. + + // We construct a rectange with one dimension set by the computed value of 'inline-size' + // and the other dimension set to infinity. Text is layed out starting at the 'x' and 'y' + // attribute values. This is handled elsewhere. + + double inline_size = style->inline_size.computed; + unsigned mode = style->writing_mode.computed; + unsigned anchor = style->text_anchor.computed; + unsigned direction = style->direction.computed; + + Geom::Rect frame; + if (mode == SP_CSS_WRITING_MODE_LR_TB || + mode == SP_CSS_WRITING_MODE_RL_TB) { + // horizontal + frame = Geom::Rect::from_xywh(attributes.firstXY()[Geom::X], -100000, inline_size, 200000); + if (anchor == SP_CSS_TEXT_ANCHOR_MIDDLE) { + frame *= Geom::Translate (-inline_size/2.0, 0 ); + } else if ( (direction == SP_CSS_DIRECTION_LTR && anchor == SP_CSS_TEXT_ANCHOR_END ) || + (direction == SP_CSS_DIRECTION_RTL && anchor == SP_CSS_TEXT_ANCHOR_START) ) { + frame *= Geom::Translate (-inline_size, 0); + } + } else { + // vertical + frame = Geom::Rect::from_xywh(-100000, attributes.firstXY()[Geom::Y], 200000, inline_size); + if (anchor == SP_CSS_TEXT_ANCHOR_MIDDLE) { + frame *= Geom::Translate (0, -inline_size/2.0); + } else if (anchor == SP_CSS_TEXT_ANCHOR_END) { + frame *= Geom::Translate (0, -inline_size); + } + } + // std::cout << " inline_size frame: " << frame << std::endl; + + Shape *shape = new Shape; + shape->Reset(); + int v0 = shape->AddPoint(frame.corner(0)); + int v1 = shape->AddPoint(frame.corner(1)); + int v2 = shape->AddPoint(frame.corner(2)); + int v3 = shape->AddPoint(frame.corner(3)); + shape->AddEdge(v0, v1); + shape->AddEdge(v1, v2); + shape->AddEdge(v2, v3); + shape->AddEdge(v3, v0); + Shape *uncross = new Shape; + uncross->ConvertToShape( shape ); + + layout.appendWrapShape( uncross ); + + delete shape; } if (SP_IS_TEXT(root)) { @@ -507,6 +570,8 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio layout.strut.reset(); if (style) { + + // Strut font_instance *font = font_factory::Default()->FaceFromStyle( style ); if (font) { font->FontMetrics(layout.strut.ascent, layout.strut.descent, layout.strut.xheight); @@ -522,6 +587,32 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio layout.strut.computeEffective( style->line_height.computed/style->font_size.computed ); } } + + // SVG 2 Text wrapping + if (style->shape_inside.set) { + // 'x' and 'y' attributes are always ignored. + optional_attrs.x.clear(); + optional_attrs.y.clear(); + } + else if (style->inline_size.set) { + // For horizontal text: + // 'x' is used to calculate the left/right edges of the rectangle but is not + // needed later. If not deleted here, it will cause an incorrect positioning + // of the first line. + // 'y' is used to determine where the first line box is located and is needed + // during the output stage. + // For vertical text: + // Follow above but exchange 'x' and 'y'. + if (style->writing_mode.computed == SP_CSS_WRITING_MODE_LR_TB || + style->writing_mode.computed == SP_CSS_WRITING_MODE_RL_TB) { + // Horizontal text + optional_attrs.x.clear(); + } else { + // Vertical text + optional_attrs.y.clear(); + } + } + } // set textLength on the entire layout, see note in TNG-Layout.h -- cgit v1.2.3 From b5a5c57a386ed2ceb18609234d0107047177965d Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Mon, 25 Sep 2017 14:58:09 +0200 Subject: Remove unused script --- src/check-header-compile.in | 47 --------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100755 src/check-header-compile.in diff --git a/src/check-header-compile.in b/src/check-header-compile.in deleted file mode 100755 index 2295dcf91..000000000 --- a/src/check-header-compile.in +++ /dev/null @@ -1,47 +0,0 @@ -#! /bin/sh -# Check that each .h file has all the includes it needs. - -# Probably requires gnu find (for -printf '%P\n'). - -# This script hereby placed into the public domain. - -set -e -mydir=`dirname "$0"` -cd "$mydir" -srcdir="@srcdir@" -CXX="@CXX@" -INCLUDES="@GNOME_VFS_CFLAGS@ @POPPLER_GLIB_CFLAGS@ @INKSCAPE_CFLAGS@" -OBJEXT="@OBJEXT@" -config_h_dir=.. - -check_compile () { - (echo "#include "; echo "#include <$1>"; echo "int header_tst_dummy;") > header-tst.cpp - $CXX -c -I. -I"$srcdir" -I$config_h_dir $INCLUDES header-tst.cpp -} - -if [ $# = 0 ]; then - for i in `find "$srcdir" \ - -name bonobo -prune \ - -o -name dom -prune \ - -o -name ecma -prune \ - -o -name render -prune \ - -o -name xpath -prune \ - -o -name '*.h' \ - \! -name gnome.h \! -name nr-type-gnome.h \! -name Livarot.h \! -name radial.h \ - \! -name '*-test.h' \ - \! -name test-helpers.h \ - \! -name PylogFormatter.h \ - \! -name TRPIFormatter.h \ - \! -name win32.h \ - \! -name '*-w32.h' \ - \! -name '*-win32.h' \ - -printf '%P\n'` - do - check_compile "$i" - done -else - for i in "$@"; do - check_compile "$i" - done -fi -rm header-tst.cpp header-tst.$OBJEXT -- cgit v1.2.3 From ac2988a77c1e010b7f6d7bf81f8d3e5097486485 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Mon, 25 Sep 2017 14:56:54 +0200 Subject: Delete dead code --- src/xml/repr-io.cpp | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index d8e0f5418..7b02fe784 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -67,11 +67,6 @@ static void sp_repr_write_stream_element(Node *repr, Writer &out, gchar const *old_href_abs_base, gchar const *new_href_abs_base); -#ifdef HAVE_LIBWMF -static xmlDocPtr sp_wmf_convert (const char * file_name); -static char * sp_wmf_image_name (void * context); -#endif /* HAVE_LIBWMF */ - class XmlSource { @@ -323,7 +318,7 @@ int XmlSource::close() } /** - * Reads XML from a file, including WMF files, and returns the Document. + * Reads XML from a file, and returns the Document. * The default namespace can also be specified, if desired. */ Document *sp_repr_read_file (const gchar * filename, const gchar *default_ns) @@ -354,15 +349,6 @@ Document *sp_repr_read_file (const gchar * filename, const gchar *default_ns) Inkscape::IO::dump_fopen_call( filename, "N" ); -#ifdef HAVE_LIBWMF - if (strlen (localFilename) > 4) { - if ( (strcmp (localFilename + strlen (localFilename) - 4,".wmf") == 0) - || (strcmp (localFilename + strlen (localFilename) - 4,".WMF") == 0)) { - doc = sp_wmf_convert (localFilename); - } - } -#endif // !HAVE_LIBWMF - if ( !doc ) { XmlSource src; -- cgit v1.2.3 From 14c4dc0bb1ccc58d8dc97230342a61c927a9addb Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Wed, 27 Sep 2017 20:43:31 +0200 Subject: Remove a useless conditional Since "doc" is initialized to 0, the test is always true... --- src/xml/repr-io.cpp | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index 7b02fe784..f4b86a140 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -323,14 +323,13 @@ int XmlSource::close() */ Document *sp_repr_read_file (const gchar * filename, const gchar *default_ns) { - // g_warning( "Reading file: %s", filename ); xmlDocPtr doc = 0; Document * rdoc = 0; xmlSubstituteEntitiesDefault(1); - g_return_val_if_fail (filename != NULL, NULL); - if (!Inkscape::IO::file_test( filename, G_FILE_TEST_EXISTS )) { + g_return_val_if_fail(filename != NULL, NULL); + if (!Inkscape::IO::file_test(filename, G_FILE_TEST_EXISTS)) { g_warning("Can't open file: %s (doesn't exist)", filename); return NULL; } @@ -343,36 +342,32 @@ Document *sp_repr_read_file (const gchar * filename, const gchar *default_ns) gsize bytesWritten = 0; GError* error = NULL; // TODO: need to replace with our own fopen and reading - gchar* localFilename = g_filename_from_utf8 ( filename, - -1, &bytesRead, &bytesWritten, &error); - g_return_val_if_fail( localFilename != NULL, NULL ); + gchar* localFilename = g_filename_from_utf8(filename, -1, &bytesRead, &bytesWritten, &error); + g_return_val_if_fail(localFilename != NULL, NULL); - Inkscape::IO::dump_fopen_call( filename, "N" ); + Inkscape::IO::dump_fopen_call(filename, "N"); - if ( !doc ) { - XmlSource src; + XmlSource src; - if ( (src.setFile(filename) == 0) ) { + if (src.setFile(filename) == 0) { + doc = src.readXml(); + rdoc = sp_repr_do_read(doc, default_ns); + // For some reason, failed ns loading results in this + // We try a system check version of load with NOENT for adobe + if (rdoc && strcmp(rdoc->root()->name(), "ns:svg") == 0) { + xmlFreeDoc(doc); + src.setFile(filename, true); doc = src.readXml(); - rdoc = sp_repr_do_read( doc, default_ns ); - // For some reason, failed ns loading results in this - // We try a system check version of load with NOENT for adobe - if(rdoc && strcmp(rdoc->root()->name(), "ns:svg") == 0) { - xmlFreeDoc( doc ); - src.setFile(filename, true); - doc = src.readXml(); - rdoc = sp_repr_do_read( doc, default_ns ); - } + rdoc = sp_repr_do_read(doc, default_ns); } } - - if ( doc ) { - xmlFreeDoc( doc ); + if (doc) { + xmlFreeDoc(doc); } - if ( localFilename ) { - g_free( localFilename ); + if (localFilename) { + g_free(localFilename); } return rdoc; -- cgit v1.2.3 From 846fc829ce4ab4487a8b6836083d7cc72db16463 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Sat, 14 Oct 2017 11:50:10 +0200 Subject: Use standard glib macro instead of a custom one --- src/ui/interface.cpp | 3 +-- src/ui/widget/selected-style.cpp | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index f6a353b33..4f1e5cd6f 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -110,8 +110,7 @@ static GtkTargetEntry *completeDropTargets = 0; static int completeDropTargetsCount = 0; static bool temporarily_block_actions = false; -#define ENTRIES_SIZE(n) sizeof(n)/sizeof(n[0]) -static guint nui_drop_target_entries = ENTRIES_SIZE(ui_drop_target_entries); +static guint nui_drop_target_entries = G_N_ELEMENTS(ui_drop_target_entries); static void sp_ui_import_files(gchar *buffer); static void sp_ui_import_one_file(char const *filename); static void sp_ui_import_one_file_with_check(gpointer filename, gpointer unused); diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp index 5d911e9d2..d9b93f6db 100644 --- a/src/ui/widget/selected-style.cpp +++ b/src/ui/widget/selected-style.cpp @@ -107,8 +107,7 @@ static const GtkTargetEntry ui_drop_target_entries [] = { {"application/x-color", 0, APP_X_COLOR} }; -#define ENTRIES_SIZE(n) sizeof(n)/sizeof(n[0]) -static guint nui_drop_target_entries = ENTRIES_SIZE(ui_drop_target_entries); +static guint nui_drop_target_entries = G_N_ELEMENTS(ui_drop_target_entries); /* convenience function */ static Dialog::FillAndStroke *get_fill_and_stroke_panel(SPDesktop *desktop); -- cgit v1.2.3 From 4636481acc66c8ac24aff6642257d09e562eedb5 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Mon, 16 Oct 2017 00:41:54 +0200 Subject: Remove unused util/accumulators.h --- src/ui/tool/control-point-selection.h | 1 - src/ui/tool/control-point.h | 12 ---- src/util/CMakeLists.txt | 1 - src/util/accumulators.h | 113 ---------------------------------- 4 files changed, 127 deletions(-) delete mode 100644 src/util/accumulators.h diff --git a/src/ui/tool/control-point-selection.h b/src/ui/tool/control-point-selection.h index f122a468d..ec845b1b3 100644 --- a/src/ui/tool/control-point-selection.h +++ b/src/ui/tool/control-point-selection.h @@ -20,7 +20,6 @@ #include <2geom/forward.h> #include <2geom/point.h> #include <2geom/rect.h> -#include "util/accumulators.h" #include "util/unordered-containers.h" #include "ui/tool/commit-events.h" #include "ui/tool/manipulator.h" diff --git a/src/ui/tool/control-point.h b/src/ui/tool/control-point.h index 4a01b9f21..bc1f060cd 100644 --- a/src/ui/tool/control-point.h +++ b/src/ui/tool/control-point.h @@ -18,7 +18,6 @@ #include <2geom/point.h> #include "ui/control-types.h" -#include "util/accumulators.h" #include "display/sodipodi-ctrl.h" #include "enums.h" @@ -76,8 +75,6 @@ namespace UI { */ class ControlPoint : boost::noncopyable, public sigc::trackable { public: - typedef Inkscape::Util::ReverseInterruptible RInt; - typedef Inkscape::Util::Interruptible Int; /** * Enumeration representing the possible states of the control point, used to determine @@ -162,15 +159,6 @@ public: void transferGrab(ControlPoint *from, GdkEventMotion *event); /// @} - /// @name Receive notifications about control point events - /// @{ - /*sigc::signal signal_dragged; - sigc::signal::accumulated signal_clicked; - sigc::signal::accumulated signal_doubleclicked; - sigc::signal::accumulated signal_grabbed; - sigc::signal signal_ungrabbed;*/ - /// @} - /// @name Inspect the state of the control point /// @{ State state() const { return _state; } diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 9680b6377..64397db57 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -10,7 +10,6 @@ set(util_SRC # ------- # Headers - accumulators.h compose.hpp copy.h ege-appear-time-tracker.h diff --git a/src/util/accumulators.h b/src/util/accumulators.h deleted file mode 100644 index 2cd51b101..000000000 --- a/src/util/accumulators.h +++ /dev/null @@ -1,113 +0,0 @@ -/** @file - * Frequently used accumulators for use with libsigc++ - */ -/* Authors: - * Krzysztof Kosiński - * - * Copyright (C) 2009 Authors - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifndef SEEN_UTIL_ACCUMULATORS_H -#define SEEN_UTIL_ACCUMULATORS_H - -#include - -namespace Inkscape { -namespace Util { - -/** - * Accumulator which evaluates slots in reverse connection order. - * The slot that was connected last is evaluated first. - */ -struct Reverse { - typedef void result_type; - template - result_type operator()(T_iterator first, T_iterator last) const { - while (first != last) *(--last); - } -}; - -/** - * Accumulator type for interruptible signals. Slots return a boolean value; emission - * is stopped when true is returned from a slot. - */ -struct Interruptible { - typedef bool result_type; - template - result_type operator()(T_iterator first, T_iterator last) const { - for (; first != last; ++first) - if (*first) return true; - return false; - } -}; - -/** - * Same as Interruptible, but the slots are called in reverse order of connection, - * e.g. the slot that was connected last is evaluated first. - */ -struct ReverseInterruptible { - typedef bool result_type; - template - result_type operator()(T_iterator first, T_iterator last) const { - while (first != last) { - if (*(--last)) return true; - } - return false; - } -}; - -/** - * The template parameter specifies how many slots from the beginning of the list - * should be evaluated after other slots. Useful for signals which invoke other signals - * once complete. Undefined results if the signal does not have at least @c num_chained - * slots before first emission. - * - * For example, if template param = 3, the execution order is as follows: - * @verbatim - 8. 1. 2. 3. 4. 5. 6. 7. - S1 S2 S3 S4 S5 S6 S7 S8 @endverbatim - */ -template -struct Chained { - typedef void result_type; - template - result_type operator()(T_iterator first, T_iterator last) const { - T_iterator save_first = first; - // ARGH, iterator_traits is not defined for slot iterators! - //std::advance(first, num_chained); - for (unsigned i = 0; i < num_chained && first != last; ++i) ++first; - for (; first != last; ++first) *first; - for (unsigned i = 0; i < num_chained && save_first != last; ++i, ++save_first) - *save_first; - } -}; - -/** - * Executes a logical OR on the results from slots. - */ -struct LogicalOr { - typedef bool result_type; - template - result_type operator()(T_iterator first, T_iterator last) const { - bool ret = false; - for (; first != last; ++first) ret |= *first; - return ret; - } -}; - -} // namespace Util -} // namespace Inkscape - -#endif - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : -- cgit v1.2.3 From 60a9fec62112a75efe5bbdc465469ba2bc091702 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Mon, 16 Oct 2017 00:48:08 +0200 Subject: Remove unused util/compose.hpp --- src/util/CMakeLists.txt | 1 - src/util/compose.hpp | 393 ------------------------------------------------ 2 files changed, 394 deletions(-) delete mode 100644 src/util/compose.hpp diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 64397db57..b8c61e2fe 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -10,7 +10,6 @@ set(util_SRC # ------- # Headers - compose.hpp copy.h ege-appear-time-tracker.h ege-tags.h diff --git a/src/util/compose.hpp b/src/util/compose.hpp deleted file mode 100644 index b3f410c8e..000000000 --- a/src/util/compose.hpp +++ /dev/null @@ -1,393 +0,0 @@ -/* Defines String::compose(fmt, arg...) for easy, i18n-friendly - * composition of strings. - * - * Version 1.0. - * - * Copyright (c) 2002 Ole Laursen . - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA. - */ - -// -// Basic usage is like -// -// std::cout << String::compose("This is a %1x%2 matrix.", rows, cols); -// -// See http://www.cs.aau.dk/~olau/compose/ or the included README.compose for -// more details. -// - -#ifndef STRING_COMPOSE_H -#define STRING_COMPOSE_H - -#include -#include -#include -#include // for multimap - -namespace StringPrivate -{ - // the actual composition class - using string::compose is cleaner, so we - // hide it here - class Composition - { - public: - // initialize and prepare format string on the form "text %1 text %2 etc." - explicit Composition(std::string fmt); - - // supply an replacement argument starting from %1 - template - Composition &arg(const T &obj); - - // compose and return string - std::string str() const; - - private: - std::ostringstream os; - int arg_no; - - // we store the output as a list - when the output string is requested, the - // list is concatenated to a string; this way we can keep iterators into - // the list instead of into a string where they're possibly invalidated on - // inserting a specification string - typedef std::list output_list; - output_list output; - - // the initial parse of the format string fills in the specification map - // with positions for each of the various %?s - typedef std::multimap specification_map; - specification_map specs; - }; - - // helper for converting spec string numbers - inline int char_to_int(char c) - { - switch (c) { - case '0': return 0; - case '1': return 1; - case '2': return 2; - case '3': return 3; - case '4': return 4; - case '5': return 5; - case '6': return 6; - case '7': return 7; - case '8': return 8; - case '9': return 9; - default: return -1000; - } - } - - inline bool is_number(int n) - { - switch (n) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return true; - - default: - return false; - } - } - - - // implementation of class Composition - template - inline Composition &Composition::arg(const T &obj) - { - os << obj; - - std::string rep = os.str(); - - if (!rep.empty()) { // manipulators don't produce output - for (specification_map::const_iterator i = specs.lower_bound(arg_no), - end = specs.upper_bound(arg_no); i != end; ++i) { - output_list::iterator pos = i->second; - ++pos; - - output.insert(pos, rep); - } - - os.str(std::string()); - //os.clear(); - ++arg_no; - } - - return *this; - } - - inline Composition::Composition(std::string fmt) - : arg_no(1) - { - std::string::size_type b = 0, i = 0; - - // fill in output with the strings between the %1 %2 %3 etc. and - // fill in specs with the positions - while (i < fmt.length()) { - if (fmt[i] == '%' && i + 1 < fmt.length()) { - if (fmt[i + 1] == '%') { // catch %% - fmt.replace(i, 2, "%"); - ++i; - } - else if (is_number(fmt[i + 1])) { // aha! a spec! - // save string - output.push_back(fmt.substr(b, i - b)); - - int n = 1; // number of digits - int spec_no = 0; - - do { - spec_no += char_to_int(fmt[i + n]); - spec_no *= 10; - ++n; - } while (i + n < fmt.length() && is_number(fmt[i + n])); - - spec_no /= 10; - output_list::iterator pos = output.end(); - --pos; // safe since we have just inserted a string> - - specs.insert(specification_map::value_type(spec_no, pos)); - - // jump over spec string - i += n; - b = i; - } - else - ++i; - } - else - ++i; - } - - if (i - b > 0) // add the rest of the string - output.push_back(fmt.substr(b, i - b)); - } - - inline std::string Composition::str() const - { - // assemble string - std::string str; - - for (output_list::const_iterator i = output.begin(), end = output.end(); - i != end; ++i) - str += *i; - - return str; - } -} - -// now for the real thing(s) -namespace String -{ - // a series of functions which accept a format string on the form "text %1 - // more %2 less %3" and a number of templated parameters and spits out the - // composited string - template - inline std::string compose(const std::string &fmt, const T1 &o1) - { - StringPrivate::Composition c(fmt); - c.arg(o1); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10, const T11 &o11) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10).arg(o11); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10, const T11 &o11, const T12 &o12) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10).arg(o11).arg(o12); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10, const T11 &o11, const T12 &o12, - const T13 &o13) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10).arg(o11).arg(o12).arg(o13); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10, const T11 &o11, const T12 &o12, - const T13 &o13, const T14 &o14) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10).arg(o11).arg(o12).arg(o13).arg(o14); - return c.str(); - } - - template - inline std::string compose(const std::string &fmt, - const T1 &o1, const T2 &o2, const T3 &o3, - const T4 &o4, const T5 &o5, const T6 &o6, - const T7 &o7, const T8 &o8, const T9 &o9, - const T10 &o10, const T11 &o11, const T12 &o12, - const T13 &o13, const T14 &o14, const T15 &o15) - { - StringPrivate::Composition c(fmt); - c.arg(o1).arg(o2).arg(o3).arg(o4).arg(o5).arg(o6).arg(o7).arg(o8).arg(o9) - .arg(o10).arg(o11).arg(o12).arg(o13).arg(o14).arg(o15); - return c.str(); - } -} - - -#endif // STRING_COMPOSE_H -- cgit v1.2.3 From 347e5f3b12400d94812eefc275e1197ed224470b Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Tue, 17 Oct 2017 22:22:10 +0200 Subject: Remove unused icon-size.h --- src/CMakeLists.txt | 1 - src/icon-size.h | 31 ------------------------ src/live_effects/parameter/originalitemarray.cpp | 1 - src/live_effects/parameter/originalpatharray.cpp | 1 - src/live_effects/parameter/togglebutton.h | 1 - src/ui/widget/panel.cpp | 1 - src/widgets/button.h | 1 - src/widgets/ege-adjustment-action.cpp | 1 - src/widgets/ink-action.h | 1 - src/widgets/ink-toggle-action.cpp | 4 +-- src/widgets/ink-toggle-action.h | 1 - src/widgets/toolbox.h | 1 - 12 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 src/icon-size.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 09d6d25d4..72d984845 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -325,7 +325,6 @@ set(inkscape_SRC guide-snapper.h help.h helper-fns.h - icon-size.h id-clash.h inkscape-version.h inkscape.h diff --git a/src/icon-size.h b/src/icon-size.h deleted file mode 100644 index 8058e8da8..000000000 --- a/src/icon-size.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef SEEN_ICON_SIZE_H -#define SEEN_ICON_SIZE_H - -/* - * Generic icon widget - * - * Author: - * Lauris Kaplinski - * - * Copyright (C) 2002 Lauris Kaplinski - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include - -namespace Inkscape { - - enum IconSize { - ICON_SIZE_INVALID = ::GTK_ICON_SIZE_INVALID, - ICON_SIZE_MENU = ::GTK_ICON_SIZE_MENU, - ICON_SIZE_SMALL_TOOLBAR = ::GTK_ICON_SIZE_SMALL_TOOLBAR, - ICON_SIZE_LARGE_TOOLBAR = ::GTK_ICON_SIZE_LARGE_TOOLBAR, - ICON_SIZE_BUTTON = ::GTK_ICON_SIZE_BUTTON, - ICON_SIZE_DND = ::GTK_ICON_SIZE_DND, - ICON_SIZE_DIALOG = ::GTK_ICON_SIZE_DIALOG, - ICON_SIZE_DECORATION - }; -} // namespace Inkscape - -#endif // SEEN_ICON_SIZE_H diff --git a/src/live_effects/parameter/originalitemarray.cpp b/src/live_effects/parameter/originalitemarray.cpp index 830d8aa90..f45de4ad8 100644 --- a/src/live_effects/parameter/originalitemarray.cpp +++ b/src/live_effects/parameter/originalitemarray.cpp @@ -19,7 +19,6 @@ #include #include "inkscape.h" -#include "icon-size.h" #include "ui/clipboard.h" #include "svg/svg.h" #include "svg/stringstream.h" diff --git a/src/live_effects/parameter/originalpatharray.cpp b/src/live_effects/parameter/originalpatharray.cpp index 4535b6aa5..a98c91770 100644 --- a/src/live_effects/parameter/originalpatharray.cpp +++ b/src/live_effects/parameter/originalpatharray.cpp @@ -23,7 +23,6 @@ #include #include "inkscape.h" -#include "icon-size.h" #include "ui/clipboard.h" #include "svg/svg.h" #include "svg/stringstream.h" diff --git a/src/live_effects/parameter/togglebutton.h b/src/live_effects/parameter/togglebutton.h index 4d043b340..c5f8a3c28 100644 --- a/src/live_effects/parameter/togglebutton.h +++ b/src/live_effects/parameter/togglebutton.h @@ -12,7 +12,6 @@ #include #include "live_effects/parameter/parameter.h" -#include "icon-size.h" #include "ui/widget/registered-widget.h" namespace Inkscape { diff --git a/src/ui/widget/panel.cpp b/src/ui/widget/panel.cpp index 9332fe0f9..aea9b7e8e 100644 --- a/src/ui/widget/panel.cpp +++ b/src/ui/widget/panel.cpp @@ -24,7 +24,6 @@ #include #include "panel.h" -#include "icon-size.h" #include "preferences.h" #include "desktop.h" diff --git a/src/widgets/button.h b/src/widgets/button.h index 94a956de3..680ccb79d 100644 --- a/src/widgets/button.h +++ b/src/widgets/button.h @@ -18,7 +18,6 @@ #include #include -#include "icon-size.h" struct SPAction; diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index fc72f00c7..597c697cb 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -48,7 +48,6 @@ #include #include -#include "icon-size.h" #include "widgets/ege-adjustment-action.h" #include "gimp/gimpspinscale.h" #include "ui/icon-names.h" diff --git a/src/widgets/ink-action.h b/src/widgets/ink-action.h index 99786c878..396e4838b 100644 --- a/src/widgets/ink-action.h +++ b/src/widgets/ink-action.h @@ -2,7 +2,6 @@ #define SEEN_INK_ACTION #include -#include "icon-size.h" #include "attributes.h" /* Equivalent to GTK Actions of the same type, but can support Inkscape SVG icons */ diff --git a/src/widgets/ink-toggle-action.cpp b/src/widgets/ink-toggle-action.cpp index c091a2e0d..200d0d558 100644 --- a/src/widgets/ink-toggle-action.cpp +++ b/src/widgets/ink-toggle-action.cpp @@ -51,9 +51,9 @@ static void ink_toggle_action_class_init( InkToggleActionClass* klass ) g_param_spec_int( "iconSize", "Icon Size", "The size the icon", - (int)Inkscape::ICON_SIZE_MENU, + GTK_ICON_SIZE_MENU, (int)99, - (int)Inkscape::ICON_SIZE_SMALL_TOOLBAR, + GTK_ICON_SIZE_SMALL_TOOLBAR, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT) ) ); g_type_class_add_private( klass, sizeof(InkToggleActionClass) ); diff --git a/src/widgets/ink-toggle-action.h b/src/widgets/ink-toggle-action.h index 9130b9f9f..f329f57a6 100644 --- a/src/widgets/ink-toggle-action.h +++ b/src/widgets/ink-toggle-action.h @@ -4,7 +4,6 @@ #include #include "attributes.h" -#include "icon-size.h" G_BEGIN_DECLS #define INK_TOGGLE_ACTION_TYPE ( ink_toggle_action_get_type() ) diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h index 09178ec2f..afa382e5b 100644 --- a/src/widgets/toolbox.h +++ b/src/widgets/toolbox.h @@ -15,7 +15,6 @@ #include -#include "icon-size.h" #include "preferences.h" #define TOOLBAR_SLIDER_HINT "full" -- cgit v1.2.3 From 935c7b7808cb7c0e2d9952fda8962359d63781a2 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Tue, 17 Oct 2017 22:27:43 +0200 Subject: Remove all unused makefile.in --- src/2geom/makefile.in | 17 ----------------- src/debug/makefile.in | 17 ----------------- src/display/makefile.in | 17 ----------------- src/extension/implementation/makefile.in | 17 ----------------- src/extension/internal/makefile.in | 17 ----------------- src/extension/makefile.in | 17 ----------------- src/filters/makefile.in | 17 ----------------- src/helper/makefile.in | 17 ----------------- src/io/makefile.in | 17 ----------------- src/libcroco/makefile.in | 17 ----------------- src/libdepixelize/makefile.in | 17 ----------------- src/libuemf/makefile.in | 17 ----------------- src/livarot/makefile.in | 17 ----------------- src/live_effects/makefile.in | 17 ----------------- src/live_effects/parameter/makefile.in | 17 ----------------- src/svg/makefile.in | 17 ----------------- src/trace/makefile.in | 17 ----------------- src/ui/cache/makefile.in | 17 ----------------- src/ui/dialog/makefile.in | 17 ----------------- src/ui/makefile.in | 17 ----------------- src/ui/view/makefile.in | 17 ----------------- src/ui/widget/makefile.in | 17 ----------------- src/util/makefile.in | 17 ----------------- src/widgets/makefile.in | 17 ----------------- src/xml/makefile.in | 17 ----------------- 25 files changed, 425 deletions(-) delete mode 100644 src/2geom/makefile.in delete mode 100644 src/debug/makefile.in delete mode 100644 src/display/makefile.in delete mode 100644 src/extension/implementation/makefile.in delete mode 100644 src/extension/internal/makefile.in delete mode 100644 src/extension/makefile.in delete mode 100644 src/filters/makefile.in delete mode 100644 src/helper/makefile.in delete mode 100644 src/io/makefile.in delete mode 100644 src/libcroco/makefile.in delete mode 100644 src/libdepixelize/makefile.in delete mode 100644 src/libuemf/makefile.in delete mode 100644 src/livarot/makefile.in delete mode 100644 src/live_effects/makefile.in delete mode 100644 src/live_effects/parameter/makefile.in delete mode 100644 src/svg/makefile.in delete mode 100644 src/trace/makefile.in delete mode 100644 src/ui/cache/makefile.in delete mode 100644 src/ui/dialog/makefile.in delete mode 100644 src/ui/makefile.in delete mode 100644 src/ui/view/makefile.in delete mode 100644 src/ui/widget/makefile.in delete mode 100644 src/util/makefile.in delete mode 100644 src/widgets/makefile.in delete mode 100644 src/xml/makefile.in diff --git a/src/2geom/makefile.in b/src/2geom/makefile.in deleted file mode 100644 index ca7943377..000000000 --- a/src/2geom/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) 2geom/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) 2geom/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/debug/makefile.in b/src/debug/makefile.in deleted file mode 100644 index 542f3a999..000000000 --- a/src/debug/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) debug/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) debug/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/display/makefile.in b/src/display/makefile.in deleted file mode 100644 index 747f18e11..000000000 --- a/src/display/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) display/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) display/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/extension/implementation/makefile.in b/src/extension/implementation/makefile.in deleted file mode 100644 index d54ea1d3a..000000000 --- a/src/extension/implementation/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) extension/implementation/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) extension/implementation/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/extension/internal/makefile.in b/src/extension/internal/makefile.in deleted file mode 100644 index 466309a8f..000000000 --- a/src/extension/internal/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) extension/internal/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) extension/internal/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/extension/makefile.in b/src/extension/makefile.in deleted file mode 100644 index 5f19ccaa3..000000000 --- a/src/extension/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) extension/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) extension/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/filters/makefile.in b/src/filters/makefile.in deleted file mode 100644 index 5aa76ce1b..000000000 --- a/src/filters/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) filters/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) filters/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/helper/makefile.in b/src/helper/makefile.in deleted file mode 100644 index 7f40f58bc..000000000 --- a/src/helper/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) helper/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) helper/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/io/makefile.in b/src/io/makefile.in deleted file mode 100644 index 74148f11a..000000000 --- a/src/io/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) io/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) io/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/libcroco/makefile.in b/src/libcroco/makefile.in deleted file mode 100644 index 554670f45..000000000 --- a/src/libcroco/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) libcroco/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) libcroco/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/libdepixelize/makefile.in b/src/libdepixelize/makefile.in deleted file mode 100644 index 51d020db1..000000000 --- a/src/libdepixelize/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) libdepixelize/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) libdepixelize/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/libuemf/makefile.in b/src/libuemf/makefile.in deleted file mode 100644 index f1a595e1d..000000000 --- a/src/libuemf/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) libuemf/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) libuemf/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/livarot/makefile.in b/src/livarot/makefile.in deleted file mode 100644 index f92015275..000000000 --- a/src/livarot/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) livarot/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) livarot/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/live_effects/makefile.in b/src/live_effects/makefile.in deleted file mode 100644 index 8a4da813b..000000000 --- a/src/live_effects/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) live_effects/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) live_effects/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/live_effects/parameter/makefile.in b/src/live_effects/parameter/makefile.in deleted file mode 100644 index af48c8e7a..000000000 --- a/src/live_effects/parameter/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) live_effects/parameter/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) live_effects/parameter/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/svg/makefile.in b/src/svg/makefile.in deleted file mode 100644 index a906fc7c4..000000000 --- a/src/svg/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) svg/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) svg/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/trace/makefile.in b/src/trace/makefile.in deleted file mode 100644 index 8c2bfd912..000000000 --- a/src/trace/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) trace/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) trace/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/ui/cache/makefile.in b/src/ui/cache/makefile.in deleted file mode 100644 index af45adb0f..000000000 --- a/src/ui/cache/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) ui/cache/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) ui/cache/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/ui/dialog/makefile.in b/src/ui/dialog/makefile.in deleted file mode 100644 index 805c48aef..000000000 --- a/src/ui/dialog/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) ui/dialog/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) ui/dialog/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/ui/makefile.in b/src/ui/makefile.in deleted file mode 100644 index f8a407592..000000000 --- a/src/ui/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) ui/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) ui/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/ui/view/makefile.in b/src/ui/view/makefile.in deleted file mode 100644 index 0fe15637a..000000000 --- a/src/ui/view/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) ui/view/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) ui/view/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/ui/widget/makefile.in b/src/ui/widget/makefile.in deleted file mode 100644 index e479d7031..000000000 --- a/src/ui/widget/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd ../.. && $(MAKE) ui/widget/all - -clean %.a %.$(OBJEXT): - cd ../.. && $(MAKE) ui/widget/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/util/makefile.in b/src/util/makefile.in deleted file mode 100644 index fc4870075..000000000 --- a/src/util/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) util/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) util/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/widgets/makefile.in b/src/widgets/makefile.in deleted file mode 100644 index 5b756ebf3..000000000 --- a/src/widgets/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) widgets/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) widgets/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/xml/makefile.in b/src/xml/makefile.in deleted file mode 100644 index 376b4c218..000000000 --- a/src/xml/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) xml/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) xml/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) -- cgit v1.2.3 From c419daf4e13efc020401b3bcbbe8b6116bb3cdd7 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Wed, 18 Oct 2017 22:08:15 +0200 Subject: Drop obsolete wrapper around Glib::file_open_tmp --- src/extension/implementation/script.cpp | 21 ++++++++++----------- src/extension/implementation/xslt.cpp | 4 ++-- src/io/sys.cpp | 21 --------------------- src/io/sys.h | 2 -- src/ui/dialog/print.cpp | 3 +-- 5 files changed, 13 insertions(+), 38 deletions(-) diff --git a/src/extension/implementation/script.cpp b/src/extension/implementation/script.cpp index 8da56fecd..2901655f1 100644 --- a/src/extension/implementation/script.cpp +++ b/src/extension/implementation/script.cpp @@ -32,7 +32,6 @@ #include "extension/input.h" #include "extension/db.h" #include "inkscape.h" -#include "io/sys.h" #include "io/resource.h" #include "preferences.h" #include "script.h" @@ -398,7 +397,7 @@ ScriptDocCache::ScriptDocCache (Inkscape::UI::View::View * view) : _tempfd(0) { try { - _tempfd = Inkscape::IO::file_open_tmp(_filename, "ink_ext_XXXXXX.svg"); + _tempfd = Glib::file_open_tmp(_filename, "ink_ext_XXXXXX.svg"); } catch (...) { /// \todo Popup dialog here return; @@ -462,7 +461,7 @@ Gtk::Widget *Script::prefs_output(Inkscape::Extension::Output *module) \param filename File to open. First things first, this function needs a temporary file name. To - create on of those the function g_file_open_tmp is used with + create on of those the function Glib::file_open_tmp is used with the header of ink_ext_. The extension is then executed using the 'execute' function @@ -483,7 +482,7 @@ SPDocument *Script::open(Inkscape::Extension::Input *module, std::string tempfilename_out; int tempfd_out = 0; try { - tempfd_out = Inkscape::IO::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX.svg"); + tempfd_out = Glib::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX.svg"); } catch (...) { /// \todo Popup dialog here return NULL; @@ -513,7 +512,7 @@ SPDocument *Script::open(Inkscape::Extension::Input *module, mydoc->changeUriAndHrefs(filenameArg); } - // make sure we don't leak file descriptors from g_file_open_tmp + // make sure we don't leak file descriptors from Glib::file_open_tmp close(tempfd_out); unlink(tempfilename_out.c_str()); @@ -539,7 +538,7 @@ SPDocument *Script::open(Inkscape::Extension::Input *module, do that eh? First things first, the document is saved to a temporary file that - is an SVG file. To get the temporary filename g_file_open_tmp is used with + is an SVG file. To get the temporary filename Glib::file_open_tmp is used with ink_ext_ as a prefix. Don't worry, this file gets deleted at the end of the function. @@ -558,7 +557,7 @@ void Script::save(Inkscape::Extension::Output *module, std::string tempfilename_in; int tempfd_in = 0; try { - tempfd_in = Inkscape::IO::file_open_tmp(tempfilename_in, "ink_ext_XXXXXX.svg"); + tempfd_in = Glib::file_open_tmp(tempfilename_in, "ink_ext_XXXXXX.svg"); } catch (...) { /// \todo Popup dialog here throw Inkscape::Extension::Output::save_failed(); @@ -587,7 +586,7 @@ void Script::save(Inkscape::Extension::Output *module, success = fileout.toFile(lfilename); } - // make sure we don't leak file descriptors from g_file_open_tmp + // make sure we don't leak file descriptors from Glib::file_open_tmp close(tempfd_in); // FIXME: convert to utf8 (from "filename encoding") and unlink_utf8name unlink(tempfilename_in.c_str()); @@ -609,7 +608,7 @@ void Script::save(Inkscape::Extension::Output *module, This function is a little bit trickier than the previous two. It needs two temporary files to get it's work done. Both of these - files have random names created for them using the g_file_open_temp function + files have random names created for them using the Glib::file_open_temp function with the ink_ext_ prefix in the temporary directory. Like the other functions, the temporary files are deleted at the end. @@ -667,7 +666,7 @@ void Script::effect(Inkscape::Extension::Effect *module, std::string tempfilename_out; int tempfd_out = 0; try { - tempfd_out = Inkscape::IO::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX.svg"); + tempfd_out = Glib::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX.svg"); } catch (...) { /// \todo Popup dialog here return; @@ -740,7 +739,7 @@ void Script::effect(Inkscape::Extension::Effect *module, pump_events(); - // make sure we don't leak file descriptors from g_file_open_tmp + // make sure we don't leak file descriptors from Glib::file_open_tmp close(tempfd_out); g_unlink(tempfilename_out.c_str()); diff --git a/src/extension/implementation/xslt.cpp b/src/extension/implementation/xslt.cpp index 94852a98e..d11283db7 100644 --- a/src/extension/implementation/xslt.cpp +++ b/src/extension/implementation/xslt.cpp @@ -16,13 +16,13 @@ #include #endif +#include #include "file.h" #include "xslt.h" #include "../extension.h" #include "../output.h" #include "extension/input.h" -#include "io/sys.h" #include "io/resource.h" #include #include @@ -175,7 +175,7 @@ void XSLT::save(Inkscape::Extension::Output *module, SPDocument *doc, gchar cons std::string tempfilename_out; int tempfd_out = 0; try { - tempfd_out = Inkscape::IO::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX"); + tempfd_out = Glib::file_open_tmp(tempfilename_out, "ink_ext_XXXXXX"); } catch (...) { /// \todo Popup dialog here return; diff --git a/src/io/sys.cpp b/src/io/sys.cpp index 833dee437..2ff17cdc9 100644 --- a/src/io/sys.cpp +++ b/src/io/sys.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include @@ -107,26 +106,6 @@ int Inkscape::IO::mkdir_utf8name( char const *utf8name ) return retval; } -/* - * Wrapper around Glib::file_open_tmp(). - * Returns a handle to the temp file. - * name_used contains the actual name used (a raw filename, not necessarily utf8). - * - * Returns: - * A file handle (as from open()) to the file opened for reading and writing. - * The file is opened in binary mode on platforms where there is a difference. - * The file handle should be closed with close(). - * - * Note: - * On Windows Vista Glib::file_open_tmp fails with the current version of glibmm - * A special case is implemented for WIN32. This can be removed if the issue is fixed - * in future versions of glibmm - * */ -int Inkscape::IO::file_open_tmp(std::string& name_used, const std::string& prefix) -{ - return Glib::file_open_tmp(name_used, prefix); -} - bool Inkscape::IO::file_test( char const *utf8name, GFileTest test ) { bool exists = false; diff --git a/src/io/sys.h b/src/io/sys.h index 78d25afa3..e349fc09c 100644 --- a/src/io/sys.h +++ b/src/io/sys.h @@ -32,8 +32,6 @@ FILE *fopen_utf8name( char const *utf8name, char const *mode ); int mkdir_utf8name( char const *utf8name ); -int file_open_tmp( std::string& name_used, const std::string& prefix ); - bool file_test( char const *utf8name, GFileTest test ); bool file_directory_exists( char const *utf8name ); diff --git a/src/ui/dialog/print.cpp b/src/ui/dialog/print.cpp index 4d248fd09..532a8c364 100644 --- a/src/ui/dialog/print.cpp +++ b/src/ui/dialog/print.cpp @@ -26,7 +26,6 @@ #include "util/units.h" #include "helper/png-write.h" #include "svg/svg-color.h" -#include "io/sys.h" #include @@ -52,7 +51,7 @@ static void draw_page(GtkPrintOperation *, std::string tmp_base = "inkscape-print-png-XXXXXX"; int tmp_fd; - if ( (tmp_fd = Inkscape::IO::file_open_tmp (tmp_png, tmp_base)) >= 0) { + if ( (tmp_fd = Glib::file_open_tmp(tmp_png, tmp_base)) >= 0) { close(tmp_fd); guint32 bgcolor = 0x00000000; -- cgit v1.2.3 From 09197f2e18ef1b737057631c9ef8fc626c15ea98 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Thu, 19 Oct 2017 15:05:38 -0400 Subject: Removed author on request --- AUTHORS | 1 - 1 file changed, 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index eab25e82f..2aab0faf0 100644 --- a/AUTHORS +++ b/AUTHORS @@ -37,7 +37,6 @@ Alexander Clausen John Cliff Kees Cook Ben Cromwell -Robert Crosbie Jon Cruz Aurélie De-Cooman Kris De Gussem -- cgit v1.2.3 From d6c5424f69aeb91cf1cfeba262b5466a42dd95a5 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Thu, 19 Oct 2017 23:41:25 +0200 Subject: FontFactory: Add function to add additional font directories --- src/libnrtype/FontFactory.cpp | 32 ++++++++++++++++++++++++++++++++ src/libnrtype/FontFactory.h | 3 +++ 2 files changed, 35 insertions(+) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index bf4cbc56f..677b8abe7 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -17,8 +17,11 @@ #endif #include +#include +#include #include #include +#include "io/sys.h" #include "libnrtype/FontFactory.h" #include "libnrtype/font-instance.h" #include "util/unordered-containers.h" @@ -914,6 +917,35 @@ void font_factory::AddInCache(font_instance *who) nbEnt++; } +void font_factory::AddFontsDir(char const *utf8dir) +{ +#ifdef USE_PANGO_WIN32 + g_info("Adding additional font directories only supported for fontconfig backend."); +#else + if (!Inkscape::IO::file_test(utf8dir, G_FILE_TEST_IS_DIR)) { + g_warning("Fonts dir '%s' does not exist and will be ignored.", utf8dir); + return; + } + + gchar *dir; +# ifdef WIN32 + dir = g_win32_locale_filename_from_utf8(utf8dir); +# else + dir = g_filename_from_utf8(utf8dir, -1, NULL, NULL, NULL); +# endif + + FcConfig *conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); + FcBool res = FcConfigAppFontAddDir(conf, (FcChar8 const *)dir); + if (res = FcTrue) { + g_info("Fonts dir '%s' added successfully.", utf8dir); + } else { + g_warning("Could not add fonts dir '%s'.", utf8dir); + } + + g_free(dir); +#endif +} + /* Local Variables: mode:c++ diff --git a/src/libnrtype/FontFactory.h b/src/libnrtype/FontFactory.h index 41c4cb6eb..c273be2f4 100644 --- a/src/libnrtype/FontFactory.h +++ b/src/libnrtype/FontFactory.h @@ -136,6 +136,9 @@ public: // internal void AddInCache(font_instance *who); + /// Add a directory from which to include additional fonts + void AddFontsDir(char const *utf8dir); + private: void* loadedPtr; -- cgit v1.2.3 From 0ec8457e3dfde14a9f1be1e65ddd0aa35f9dcd7c Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Fri, 20 Oct 2017 22:54:21 +0200 Subject: Define INKSCAPE_FONTSDIR and add USER/SYSTEM resource paths for fonts (Note we always had an empty /share/fonts directory that didn't seem to have any purpose yet) --- src/io/resource.cpp | 2 ++ src/io/resource.h | 1 + src/path-prefix.h | 4 ++++ src/preferences.cpp | 2 +- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/io/resource.cpp b/src/io/resource.cpp index c3cd9e403..3f970dfa1 100644 --- a/src/io/resource.cpp +++ b/src/io/resource.cpp @@ -52,6 +52,7 @@ gchar *_get_path(Domain domain, Type type, char const *filename) case APPICONS: temp = INKSCAPE_APPICONDIR; break; case EXTENSIONS: temp = INKSCAPE_EXTENSIONDIR; break; case FILTERS: temp = INKSCAPE_FILTERDIR; break; + case FONTS: temp = INKSCAPE_FONTSDIR; break; case GRADIENTS: temp = INKSCAPE_GRADIENTSDIR; break; case ICONS: temp = INKSCAPE_PIXMAPDIR; break; case KEYS: temp = INKSCAPE_KEYSDIR; break; @@ -87,6 +88,7 @@ gchar *_get_path(Domain domain, Type type, char const *filename) switch (type) { case EXTENSIONS: name = "extensions"; break; case FILTERS: name = "filters"; break; + case FONTS: name = "fonts"; break; case GRADIENTS: name = "gradients"; break; case ICONS: name = "icons"; break; case KEYS: name = "keys"; break; diff --git a/src/io/resource.h b/src/io/resource.h index d7dd506ad..6ec08a28c 100644 --- a/src/io/resource.h +++ b/src/io/resource.h @@ -33,6 +33,7 @@ namespace Resource { enum Type { APPICONS, EXTENSIONS, + FONTS, GRADIENTS, ICONS, KEYS, diff --git a/src/path-prefix.h b/src/path-prefix.h index 1c17ce2d8..d6514d832 100644 --- a/src/path-prefix.h +++ b/src/path-prefix.h @@ -34,6 +34,7 @@ # define INKSCAPE_EXAMPLESDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/examples" ) # define INKSCAPE_EXTENSIONDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/extensions" ) # define INKSCAPE_FILTERDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/filters" ) +# define INKSCAPE_FONTSDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/fonts" ) # define INKSCAPE_GRADIENTSDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/gradients" ) # define INKSCAPE_KEYSDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/keys" ) # define INKSCAPE_PIXMAPDIR BR_DATADIR( INKSCAPE_LIBPREFIX "/share/inkscape/icons" ) @@ -58,6 +59,7 @@ # define INKSCAPE_EXAMPLESDIR WIN32_DATADIR("examples") # define INKSCAPE_EXTENSIONDIR WIN32_DATADIR("extensions") # define INKSCAPE_FILTERDIR WIN32_DATADIR("filters") +# define INKSCAPE_FONTSDIR WIN32_DATADIR("fonts") # define INKSCAPE_GRADIENTSDIR WIN32_DATADIR("gradients") # define INKSCAPE_KEYSDIR WIN32_DATADIR("keys") # define INKSCAPE_PIXMAPDIR WIN32_DATADIR("icons") @@ -81,6 +83,7 @@ # define INKSCAPE_EXAMPLESDIR "Contents/Resources/share/inkscape/examples" # define INKSCAPE_EXTENSIONDIR "Contents/Resources/share/inkscape/extensions" # define INKSCAPE_FILTERDIR "Contents/Resources/share/inkscape/filters" +# define INKSCAPE_FONTSDIR "Contents/Resources/share/inkscape/fonts" # define INKSCAPE_GRADIENTSDIR "Contents/Resources/share/inkscape/gradients" # define INKSCAPE_KEYSDIR "Contents/Resources/share/inkscape/keys" # define INKSCAPE_PIXMAPDIR "Contents/Resources/share/inkscape/icons" @@ -104,6 +107,7 @@ # define INKSCAPE_EXAMPLESDIR INKSCAPE_DATADIR "/inkscape/examples" # define INKSCAPE_EXTENSIONDIR INKSCAPE_DATADIR "/inkscape/extensions" # define INKSCAPE_FILTERDIR INKSCAPE_DATADIR "/inkscape/filters" +# define INKSCAPE_FONTSDIR INKSCAPE_DATADIR "/inkscape/fonts" # define INKSCAPE_GRADIENTSDIR INKSCAPE_DATADIR "/inkscape/gradients" # define INKSCAPE_KEYSDIR INKSCAPE_DATADIR "/inkscape/keys" # define INKSCAPE_PIXMAPDIR INKSCAPE_DATADIR "/inkscape/icons" diff --git a/src/preferences.cpp b/src/preferences.cpp index 9d5fb0639..7ebf55a79 100644 --- a/src/preferences.cpp +++ b/src/preferences.cpp @@ -147,7 +147,7 @@ void Preferences::_load() return; } // create some subdirectories for user stuff - char const *user_dirs[] = {"keys", "templates", "icons", "extensions", "palettes", NULL}; + char const *user_dirs[] = {"extensions", "fonts", "icons", "keys", "palettes", "templates", NULL}; for (int i=0; user_dirs[i]; ++i) { // XXX Why are we doing this here? shouldn't this be an IO load item? char *dir = Inkscape::IO::Resource::profile_path(user_dirs[i]); -- cgit v1.2.3 From 75444920325ba8a134eb16c4844f7fa15f34dd55 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Fri, 20 Oct 2017 22:59:35 +0200 Subject: Add preference to load additional fonts from 'fonts' directories - 'use_fontsdir_system' for /share/inkscape/fonts - 'use_fontsdir_user' for /inkscape/fonts in user config (both activated by default) --- src/inkscape.cpp | 13 +++++++++++++ src/ui/dialog/inkscape-preferences.cpp | 8 +++++++- src/ui/dialog/inkscape-preferences.h | 2 ++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/inkscape.cpp b/src/inkscape.cpp index c6c43272c..0c3763c2b 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -47,6 +47,7 @@ #include "inkscape.h" #include "io/sys.h" #include "io/resource.h" +#include "libnrtype/FontFactory.h" #include "message-stack.h" #include "path-prefix.h" #include "resource-manager.h" @@ -429,6 +430,7 @@ Application::Application(const char* argv, bool use_gui) : _trackalt(FALSE), _use_gui(use_gui) { + using namespace Inkscape::IO::Resource; /* fixme: load application defaults */ segv_handler = signal (SIGSEGV, Application::crash_handler); @@ -499,6 +501,17 @@ Application::Application(const char* argv, bool use_gui) : Inkscape::Extension::init(); autosave_init(); + + /* Initialize font factory */ + font_factory *factory = font_factory::Default(); + if (prefs->getBool("/options/font/use_fontsdir_system", true)) { + char const *fontsdir = get_path(SYSTEM, FONTS); + factory->AddFontsDir(fontsdir); + } + if (prefs->getBool("/options/font/use_fontsdir_user", true)) { + char const *fontsdir = get_path(USER, FONTS); + factory->AddFontsDir(fontsdir); + } } Application::~Application() diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index d87a3d94a..5ceacd7b8 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -460,11 +460,17 @@ void InkscapePreferences::initPageTools() _page_text.add_group_header( _("Text units")); _font_unit_type.init( "/options/font/unitType", sizeLabels, sizeValues, G_N_ELEMENTS(sizeLabels), SP_CSS_UNIT_PT ); - _page_text.add_line( false, _("Text size unit type:"), _font_unit_type, "", + _page_text.add_line( true, _("Text size unit type:"), _font_unit_type, "", _("Set the type of unit used in the text toolbar and text dialogs"), false); _font_output_px.init ( _("Always output text size in pixels (px)"), "/options/font/textOutputPx", true); // _page_text.add_line( false, "", _font_output_px, "", _("Always convert the text size units above into pixels (px) before saving to file")); + _page_text.add_group_header( _("Font directories")); + _font_fontsdir_system.init( _("Use Inkscape's fonts directory"), "/options/font/use_fontsdir_system", true); + _page_text.add_line( true, "", _font_fontsdir_system, "", _("Load additional fonts from \"fonts\" directory located in Inkscape's global \"share\" directory")); + _font_fontsdir_user.init( _("Use user's fonts directory"), "/options/font/use_fontsdir_user", true); + _page_text.add_line( true, "", _font_fontsdir_user, "", _("Load additional fonts from \"fonts\" directory located in Inkscape's user configuration directory")); + this->AddNewObjectsStyle(_page_text, "/tools/text"); //Spray diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index e6ba4e4b2..38b622095 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -328,6 +328,8 @@ protected: UI::Widget::PrefCheckButton _font_dialog; UI::Widget::PrefCombo _font_unit_type; UI::Widget::PrefCheckButton _font_output_px; + UI::Widget::PrefCheckButton _font_fontsdir_system; + UI::Widget::PrefCheckButton _font_fontsdir_user; UI::Widget::PrefCheckButton _misc_comment; UI::Widget::PrefCheckButton _misc_default_metadata; -- cgit v1.2.3 From fd55cff81015288863feceaa9cb579e2cdb2986e Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 21 Oct 2017 17:50:19 +0200 Subject: Add preferences widget 'PrefMultiEntry' This is a multiline text input, similar to 'PrefEntry' Newlines characters in the multiline input will be converted to '|' in the saved preference. This is because the XML parser will convert real newline characters to spaces when reading the preferences file the next time. --- src/ui/widget/preferences-widget.cpp | 31 +++++++++++++++++++++++++++++++ src/ui/widget/preferences-widget.h | 12 ++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp index 2981316c0..e93b83db4 100644 --- a/src/ui/widget/preferences-widget.cpp +++ b/src/ui/widget/preferences-widget.cpp @@ -34,6 +34,7 @@ #include #include +#include #ifdef WIN32 #include @@ -859,6 +860,36 @@ void PrefEntry::on_changed() } } +void PrefMultiEntry::init(Glib::ustring const &prefs_path, int height) +{ + // TODO: Figure out if there's a way to specify height in lines instead of px + // and how to obtain a reasonable default width if 'expand_widget' is not used + set_size_request(100, height); + set_hexpand(true); + set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + set_shadow_type(Gtk::SHADOW_IN); + + add(_text); + + _prefs_path = prefs_path; + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring value = prefs->getString(_prefs_path); + value = Glib::Regex::create("\\|")->replace_literal(value, 0, "\n", (Glib::RegexMatchFlags)0); + _text.get_buffer()->set_text(value); + _text.get_buffer()->signal_changed().connect(sigc::mem_fun(*this, &PrefMultiEntry::on_changed)); +} + +void PrefMultiEntry::on_changed() +{ + if (get_visible()) //only take action if user changed value + { + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring value = _text.get_buffer()->get_text(); + value = Glib::Regex::create("\\n")->replace_literal(value, 0, "|", (Glib::RegexMatchFlags)0); + prefs->setString(_prefs_path, value); + } +} + void PrefColorPicker::init(Glib::ustring const &label, Glib::ustring const &prefs_path, guint32 default_rgba) { diff --git a/src/ui/widget/preferences-widget.h b/src/ui/widget/preferences-widget.h index 142793509..2578be533 100644 --- a/src/ui/widget/preferences-widget.h +++ b/src/ui/widget/preferences-widget.h @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include #include #include @@ -195,6 +197,16 @@ protected: void on_changed(); }; +class PrefMultiEntry : public Gtk::ScrolledWindow +{ +public: + void init(Glib::ustring const &prefs_path, int height); +protected: + Glib::ustring _prefs_path; + Gtk::TextView _text; + void on_changed(); +}; + class PrefEntryButtonHBox : public Gtk::HBox { public: -- cgit v1.2.3 From 2dc0f89864fded681d8ece1d077d6ff5c77bbe97 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sat, 21 Oct 2017 18:25:18 +0200 Subject: Add preference to load additional fonts from custom directories 'custom_fontdirs' is a list of paths to search for fonts --- src/inkscape.cpp | 6 ++++++ src/ui/dialog/inkscape-preferences.cpp | 3 +++ src/ui/dialog/inkscape-preferences.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 0c3763c2b..e7e93929b 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -512,6 +513,11 @@ Application::Application(const char* argv, bool use_gui) : char const *fontsdir = get_path(USER, FONTS); factory->AddFontsDir(fontsdir); } + Glib::ustring fontdirs_pref = prefs->getString("/options/font/custom_fontdirs"); + std::vector fontdirs = Glib::Regex::split_simple("\\|", fontdirs_pref); + for (auto &fontdir : fontdirs) { + factory->AddFontsDir(fontdir.c_str()); + } } Application::~Application() diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 5ceacd7b8..ae013a27b 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -470,6 +470,9 @@ void InkscapePreferences::initPageTools() _page_text.add_line( true, "", _font_fontsdir_system, "", _("Load additional fonts from \"fonts\" directory located in Inkscape's global \"share\" directory")); _font_fontsdir_user.init( _("Use user's fonts directory"), "/options/font/use_fontsdir_user", true); _page_text.add_line( true, "", _font_fontsdir_user, "", _("Load additional fonts from \"fonts\" directory located in Inkscape's user configuration directory")); + _font_fontdirs_custom.init("/options/font/custom_fontdirs", 50); + _page_text.add_line(true, _("Additional font directories"), _font_fontdirs_custom, "", _("Load additional fonts from custom locations (one path per line)"), true); + this->AddNewObjectsStyle(_page_text, "/tools/text"); diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index 38b622095..531533cee 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -330,6 +330,7 @@ protected: UI::Widget::PrefCheckButton _font_output_px; UI::Widget::PrefCheckButton _font_fontsdir_system; UI::Widget::PrefCheckButton _font_fontsdir_user; + UI::Widget::PrefMultiEntry _font_fontdirs_custom; UI::Widget::PrefCheckButton _misc_comment; UI::Widget::PrefCheckButton _misc_default_metadata; -- cgit v1.2.3 From bd536de52298231e37a37ad0509c27dbd6615728 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sun, 22 Oct 2017 16:57:27 +0200 Subject: Preferences: fix inputs not properly expanding horizontally (gtk3 issue) --- src/ui/widget/preferences-widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp index e93b83db4..8b8e663a5 100644 --- a/src/ui/widget/preferences-widget.cpp +++ b/src/ui/widget/preferences-widget.cpp @@ -79,6 +79,7 @@ void DialogPage::add_line(bool indent, auto hb = Gtk::manage(new Gtk::Box()); hb->set_spacing(12); + hb->set_hexpand(true); hb->pack_start(widget, expand_widget, expand_widget); // Pack an additional widget into a box with the widget if desired @@ -865,7 +866,6 @@ void PrefMultiEntry::init(Glib::ustring const &prefs_path, int height) // TODO: Figure out if there's a way to specify height in lines instead of px // and how to obtain a reasonable default width if 'expand_widget' is not used set_size_request(100, height); - set_hexpand(true); set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); set_shadow_type(Gtk::SHADOW_IN); -- cgit v1.2.3 From e6919ea013dc0c926e049a1e7b1188829060baac Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sun, 22 Oct 2017 17:21:09 +0200 Subject: Preferences: Simplify code from 9f2c9d85b73ff773e6181d700678f28757714992 --- src/ui/dialog/inkscape-preferences.cpp | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index ae013a27b..bd4f5c75e 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1930,12 +1930,7 @@ void InkscapePreferences::initPageSpellcheck() static void appendList( Glib::ustring& tmp, const gchar* const*listing ) { - bool first = true; for (const gchar* const* ptr = listing; *ptr; ptr++) { - if (!first) { - tmp += " "; - } - first = false; tmp += *ptr; tmp += "\n"; } @@ -2000,22 +1995,12 @@ void InkscapePreferences::initPageSystem() _sys_systemdata_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); _page_system.add_line(true, _("System data: "), _sys_systemdata_scroll, "", _("Locations of system data"), true); - { - tmp = ""; - gchar** paths = 0; - gint count = 0; - gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, &count); - if (count > 0) { - tmp += paths[0]; - tmp += "\n"; - for (int i = 1; i < count; i++) { - tmp += " "; - tmp += paths[i]; - tmp += "\n"; - } - } - } - + tmp = ""; + gchar** paths = 0; + gint count = 0; + gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, &count); + appendList( tmp, paths ); + g_strfreev(paths); _sys_icon.get_buffer()->insert(_sys_icon.get_buffer()->end(), tmp); } _sys_icon.set_editable(false); -- cgit v1.2.3 From 8059f2c4d9751a531a1b672699508ccd2cc3c53b Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sun, 22 Oct 2017 17:21:38 +0200 Subject: Preferences: Minor consistency fixes for UI --- src/ui/dialog/inkscape-preferences.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index bd4f5c75e..351eb0845 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1991,9 +1991,10 @@ void InkscapePreferences::initPageSystem() _sys_systemdata.get_buffer()->insert(_sys_systemdata.get_buffer()->end(), tmp); _sys_systemdata.set_editable(false); _sys_systemdata_scroll.add(_sys_systemdata); - _sys_systemdata_scroll.set_size_request(0, 80); + _sys_systemdata_scroll.set_size_request(100, 80); _sys_systemdata_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - _page_system.add_line(true, _("System data: "), _sys_systemdata_scroll, "", _("Locations of system data"), true); + _sys_systemdata_scroll.set_shadow_type(Gtk::SHADOW_IN); + _page_system.add_line(true, _("System data: "), _sys_systemdata_scroll, "", _("Locations of system data"), true); tmp = ""; gchar** paths = 0; @@ -2005,8 +2006,9 @@ void InkscapePreferences::initPageSystem() } _sys_icon.set_editable(false); _sys_icon_scroll.add(_sys_icon); - _sys_icon_scroll.set_size_request(0, 80); + _sys_icon_scroll.set_size_request(100, 80); _sys_icon_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + _sys_icon_scroll.set_shadow_type(Gtk::SHADOW_IN); _page_system.add_line(true, _("Icon theme: "), _sys_icon_scroll, "", _("Locations of icon themes"), true); this->AddPage(_page_system, _("System"), PREFS_PAGE_SYSTEM); -- cgit v1.2.3 From f63768018051ac3213df44bb086aea1024df070a Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Sun, 22 Oct 2017 17:25:13 +0200 Subject: Preferences: cleanup --- src/ui/dialog/inkscape-preferences.cpp | 97 ++++++++++++++++------------------ 1 file changed, 46 insertions(+), 51 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 351eb0845..09ba06720 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1946,64 +1946,59 @@ void InkscapePreferences::initPageSystem() _page_system.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); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - { - // TRANSLATORS: following strings are paths in Inkscape preferences - Misc - System info - - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - - _page_system.add_group_header( _("System info")); + _page_system.add_group_header( _("System info")); - _sys_user_config.set_text((char const *)Inkscape::IO::Resource::profile_path("")); - _sys_user_config.set_editable(false); - _page_system.add_line(true, _("User config: "), _sys_user_config, "", _("Location of users configuration"), true); + _sys_user_config.set_text((char const *)Inkscape::IO::Resource::profile_path("")); + _sys_user_config.set_editable(false); + _page_system.add_line(true, _("User config: "), _sys_user_config, "", _("Location of users configuration"), true); - _sys_user_prefs.set_text(prefs->getPrefsFilename()); - _sys_user_prefs.set_editable(false); - _page_system.add_line(true, _("User preferences: "), _sys_user_prefs, "", _("Location of the users preferences file"), true); + _sys_user_prefs.set_text(prefs->getPrefsFilename()); + _sys_user_prefs.set_editable(false); + _page_system.add_line(true, _("User preferences: "), _sys_user_prefs, "", _("Location of the users preferences file"), true); - _sys_user_extension_dir.set_text((char const *)IO::Resource::get_path(IO::Resource::USER, IO::Resource::EXTENSIONS, "")); - _sys_user_extension_dir.set_editable(false); - _page_system.add_line(true, _("User extensions: "), _sys_user_extension_dir, "", _("Location of the users extensions"), true); + _sys_user_extension_dir.set_text((char const *)IO::Resource::get_path(IO::Resource::USER, IO::Resource::EXTENSIONS, "")); + _sys_user_extension_dir.set_editable(false); + _page_system.add_line(true, _("User extensions: "), _sys_user_extension_dir, "", _("Location of the users extensions"), true); - _sys_user_cache.set_text(g_get_user_cache_dir()); - _sys_user_cache.set_editable(false); - _page_system.add_line(true, _("User cache: "), _sys_user_cache, "", _("Location of users cache"), true); + _sys_user_cache.set_text(g_get_user_cache_dir()); + _sys_user_cache.set_editable(false); + _page_system.add_line(true, _("User cache: "), _sys_user_cache, "", _("Location of users cache"), true); - Glib::ustring tmp_dir = prefs->getString("/options/autosave/path"); - if (tmp_dir.empty()) { - tmp_dir = Glib::get_tmp_dir(); - } - _sys_tmp_files.set_text(tmp_dir); - _sys_tmp_files.set_editable(false); - _page_system.add_line(true, _("Temporary files: "), _sys_tmp_files, "", _("Location of the temporary files used for autosave"), true); - - _sys_data.set_text( INKSCAPE_DATADIR ); - _sys_data.set_editable(false); - _page_system.add_line(true, _("Inkscape data: "), _sys_data, "", _("Location of Inkscape data"), true); - - _sys_extension_dir.set_text(INKSCAPE_EXTENSIONDIR); - _sys_extension_dir.set_editable(false); - _page_system.add_line(true, _("Inkscape extensions: "), _sys_extension_dir, "", _("Location of the Inkscape extensions"), true); - - Glib::ustring tmp; - appendList( tmp, g_get_system_data_dirs() ); - _sys_systemdata.get_buffer()->insert(_sys_systemdata.get_buffer()->end(), tmp); - _sys_systemdata.set_editable(false); - _sys_systemdata_scroll.add(_sys_systemdata); - _sys_systemdata_scroll.set_size_request(100, 80); - _sys_systemdata_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - _sys_systemdata_scroll.set_shadow_type(Gtk::SHADOW_IN); - _page_system.add_line(true, _("System data: "), _sys_systemdata_scroll, "", _("Locations of system data"), true); - - tmp = ""; - gchar** paths = 0; - gint count = 0; - gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, &count); - appendList( tmp, paths ); - g_strfreev(paths); - _sys_icon.get_buffer()->insert(_sys_icon.get_buffer()->end(), tmp); + Glib::ustring tmp_dir = prefs->getString("/options/autosave/path"); + if (tmp_dir.empty()) { + tmp_dir = Glib::get_tmp_dir(); } + _sys_tmp_files.set_text(tmp_dir); + _sys_tmp_files.set_editable(false); + _page_system.add_line(true, _("Temporary files: "), _sys_tmp_files, "", _("Location of the temporary files used for autosave"), true); + + _sys_data.set_text( INKSCAPE_DATADIR ); + _sys_data.set_editable(false); + _page_system.add_line(true, _("Inkscape data: "), _sys_data, "", _("Location of Inkscape data"), true); + + _sys_extension_dir.set_text(INKSCAPE_EXTENSIONDIR); + _sys_extension_dir.set_editable(false); + _page_system.add_line(true, _("Inkscape extensions: "), _sys_extension_dir, "", _("Location of the Inkscape extensions"), true); + + Glib::ustring tmp; + appendList( tmp, g_get_system_data_dirs() ); + _sys_systemdata.get_buffer()->insert(_sys_systemdata.get_buffer()->end(), tmp); + _sys_systemdata.set_editable(false); + _sys_systemdata_scroll.add(_sys_systemdata); + _sys_systemdata_scroll.set_size_request(100, 80); + _sys_systemdata_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); + _sys_systemdata_scroll.set_shadow_type(Gtk::SHADOW_IN); + _page_system.add_line(true, _("System data: "), _sys_systemdata_scroll, "", _("Locations of system data"), true); + + tmp = ""; + gchar** paths = 0; + gint count = 0; + gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, &count); + appendList( tmp, paths ); + g_strfreev(paths); + _sys_icon.get_buffer()->insert(_sys_icon.get_buffer()->end(), tmp); _sys_icon.set_editable(false); _sys_icon_scroll.add(_sys_icon); _sys_icon_scroll.set_size_request(100, 80); -- cgit v1.2.3 From de6d47ed290e02aa4bdc64d6cea5a6c8c20e61c7 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Mon, 23 Oct 2017 00:10:41 +0200 Subject: Fix compilation on Ubuntu Trusty pango_fc_font_map_get_config() is available since pango 1.38 but trusty only has pango 1.36. While calling this function is the "proper" way to get the FcConfig attached to the FontFactory's font map, FcConfigAppFontAddDir() reference says "If config is NULL, the current configuration is used." and it seems to the current configuration is suitable to use in this case (which might change if we ever start to use multiple font maps with different FcConfig's attached but should be fine for now...) --- src/libnrtype/FontFactory.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 677b8abe7..95537734d 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -934,7 +934,10 @@ void font_factory::AddFontsDir(char const *utf8dir) dir = g_filename_from_utf8(utf8dir, -1, NULL, NULL, NULL); # endif - FcConfig *conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); + FcConfig *conf = NULL; +# if PANGO_VERSION_CHECK(1,38,0) + pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); +# endif FcBool res = FcConfigAppFontAddDir(conf, (FcChar8 const *)dir); if (res = FcTrue) { g_info("Fonts dir '%s' added successfully.", utf8dir); -- cgit v1.2.3 From 68d1c505514fe4024c72df86d60a57bcb2b827c8 Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Sun, 22 Oct 2017 19:10:24 +0200 Subject: Fix regression after r14761: handle size of selected nodes too big and sticky In r14761 a bug was introduced in ControlManagerImpl::setSelected(), the fixed value _resize was used to set the final value of targetSize for the node instead of item->ctrlResize which is decided conditionally depending on the node state. https://bugs.launchpad.net/inkscape/+bug/1568644 --- src/ui/control-manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/control-manager.cpp b/src/ui/control-manager.cpp index d0285e467..d0106bfcd 100644 --- a/src/ui/control-manager.cpp +++ b/src/ui/control-manager.cpp @@ -330,10 +330,12 @@ void ControlManagerImpl::setSelected(SPCanvasItem *item, bool selected) if (selected && _resizeOnSelect.count(item->ctrlType)) { item->ctrlResize = 2; + } else { + item->ctrlResize = 0; } // TODO refresh colors - double targetSize = _sizeTable[item->ctrlType][_size - 1] + _resize; + double targetSize = _sizeTable[item->ctrlType][_size - 1] + item->ctrlResize; g_object_set(item, "size", targetSize, NULL); } } -- cgit v1.2.3 From 7d6099e1503637df0505a2459b57b34dc291ad97 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Mon, 23 Oct 2017 14:55:39 +0200 Subject: Save decl list for 'font-face' rule. Micro-step in supporting rule. --- src/sp-style-elem.cpp | 67 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 1a3c194b9..2deaccad0 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -281,8 +281,10 @@ start_font_face_cb(CRDocHandler *a_handler, static_cast(parse_tmp.currStmt), unsigned(parse_tmp.stmtType)); // fixme: Check whether we need to unref currStmt if non-NULL. } + CRStatement *font_face_rule = cr_statement_new_at_font_face_rule (parse_tmp.stylesheet, NULL); + g_return_if_fail(font_face_rule && font_face_rule->type == AT_FONT_FACE_RULE_STMT); parse_tmp.stmtType = FONT_FACE_STMT; - parse_tmp.currStmt = NULL; + parse_tmp.currStmt = font_face_rule; } static void @@ -291,12 +293,26 @@ end_font_face_cb(CRDocHandler *a_handler) g_return_if_fail(a_handler->app_data != NULL); ParseTmp &parse_tmp = *static_cast(a_handler->app_data); g_return_if_fail(parse_tmp.hasMagic()); - if (parse_tmp.stmtType != FONT_FACE_STMT || parse_tmp.currStmt != NULL) { - g_warning("Expecting currStmt==NULL and stmtType==1 (FONT_FACE_STMT) at end of @font-face, but found currStmt=%p, stmtType=%u", - static_cast(parse_tmp.currStmt), unsigned(parse_tmp.stmtType)); - // fixme: Check whether we need to unref currStmt if non-NULL. - parse_tmp.currStmt = NULL; + + CRStatement *const font_face_rule = parse_tmp.currStmt; + if (parse_tmp.stmtType == FONT_FACE_STMT + && font_face_rule + && font_face_rule->type == AT_FONT_FACE_RULE_STMT) + { + parse_tmp.stylesheet->statements = cr_statement_append(parse_tmp.stylesheet->statements, + font_face_rule); + } else { + g_warning("Found stmtType=%u, stmt=%p, stmt.type=%u.", + unsigned(parse_tmp.stmtType), + font_face_rule, + unsigned(font_face_rule->type)); } + + std::cout << "end_font_face_cb: font face rule unsupported." << std::endl; + cr_declaration_dump (font_face_rule->kind.font_face_rule->decl_list, stdout, 2, TRUE); + printf ("\n"); + + parse_tmp.currStmt = NULL; parse_tmp.stmtType = NO_STMT; } @@ -305,26 +321,38 @@ property_cb(CRDocHandler *const a_handler, CRString *const a_name, CRTerm *const a_value, gboolean const a_important) { + // std::cout << "property_cb: Entrance: " << a_name->stryng->str << ": " << cr_term_to_string(a_value) << std::endl; g_return_if_fail(a_handler && a_name); g_return_if_fail(a_handler->app_data != NULL); ParseTmp &parse_tmp = *static_cast(a_handler->app_data); g_return_if_fail(parse_tmp.hasMagic()); - if (parse_tmp.stmtType == FONT_FACE_STMT) { - if (parse_tmp.currStmt != NULL) { - g_warning("Found non-NULL currStmt %p though stmtType==FONT_FACE_STMT.", parse_tmp.currStmt); - } - /* We currently ignore @font-face descriptors. */ - return; - } + CRStatement *const ruleset = parse_tmp.currStmt; - g_return_if_fail(ruleset - && ruleset->type == RULESET_STMT - && parse_tmp.stmtType == NORMAL_RULESET_STMT); - CRDeclaration *const decl = cr_declaration_new(ruleset, cr_string_dup(a_name), a_value); + g_return_if_fail(ruleset); + + CRDeclaration *const decl = cr_declaration_new (ruleset, cr_string_dup(a_name), a_value); g_return_if_fail(decl); decl->important = a_important; - CRStatus const append_status = cr_statement_ruleset_append_decl(ruleset, decl); - g_return_if_fail(append_status == CR_OK); + + switch (parse_tmp.stmtType) { + + case NORMAL_RULESET_STMT: { + g_return_if_fail (ruleset->type == RULESET_STMT); + CRStatus const append_status = cr_statement_ruleset_append_decl (ruleset, decl); + g_return_if_fail (append_status == CR_OK); + break; + } + case FONT_FACE_STMT: { + g_return_if_fail (ruleset->type == AT_FONT_FACE_RULE_STMT); + CRDeclaration *new_decls = cr_declaration_append (ruleset->kind.font_face_rule->decl_list, decl); + g_return_if_fail (new_decls); + ruleset->kind.font_face_rule->decl_list = new_decls; + break; + } + default: + g_warning ("property_cb: Unhandled stmtType: %u", parse_tmp.stmtType); + return; + } } CRParser* @@ -405,6 +433,7 @@ void SPStyleElem::read_content() { // If style sheet has changed, we need to cascade the entire object tree, top down // Get root, read style, loop through children update_style_recursively( (SPObject *)document->getRoot() ); + // cr_stylesheet_dump (document->style_sheet, stdout); } /** -- cgit v1.2.3 From 8a097e957fac49ee3a34b26776d1b7738a11a308 Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Mon, 23 Oct 2017 21:34:35 +0200 Subject: UI: Fix canvas scrollbar width a little The underlying issue are the three icons that are squished into the corners of scrollbars/rulers: - in gtk2 they where shrunk down till they fit into the available space (which probably wasn't a great solution either) - in gtk3 they blow up the container till it fits A proper fix would probably be to either a) moving those buttons elsewhere or b) specifically design small buttons/icons for this purpose --- share/ui/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/share/ui/style.css b/share/ui/style.css index f2883fda4..92b3c412c 100644 --- a/share/ui/style.css +++ b/share/ui/style.css @@ -88,7 +88,8 @@ combobox window.popup scrolledwindow treeview separator { -GtkComboBox-appears-as-list: true; } -#LockGuides { +#LockGuides, +#StickyZoom, +#CMS_Adjust { padding: 0; } - -- cgit v1.2.3 From d9c86888f170593390da648af3ba444acd177d54 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Tue, 24 Oct 2017 13:48:52 +0200 Subject: Give drawing a reasonable(?) default size if dimensions are in % and there is no view box. This prevents a GTK3 crash in file preview (#1611672). --- src/sp-root.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sp-root.cpp b/src/sp-root.cpp index 9ea1aa976..3f31588cc 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -245,12 +245,12 @@ void SPRoot::setRootDimensions() } else { - if( !this->width._set ) { - this->width.set( SVGLength::PX, 100, 100 ); // Random default + if( !this->width._set || this->width.unit == SVGLength::PERCENT) { + this->width.set( SVGLength::PX, 300, 300 ); // CSS/SVG default } - if( !this->height._set ) { - this->height.set( SVGLength::PX, 100, 100 ); // Random default + if( !this->height._set || this->height.unit == SVGLength::PERCENT) { + this->height.set( SVGLength::PX, 150, 150 ); // CSS/SVG default } } -- cgit v1.2.3 From fd52c97cdbf621ea9e869611be4d5fb9bec90ff7 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Wed, 25 Oct 2017 13:53:33 +0200 Subject: Add limited support for CSS 'font-face' rule. Basically, any ttf or otf file found will be loaded but no custom matching is done nor is the 'font-family' menu updated. --- src/libnrtype/FontFactory.cpp | 32 +++++++++++++++++++++++++ src/libnrtype/FontFactory.h | 3 +++ src/sp-style-elem.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 95537734d..2b1087eec 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -949,6 +949,38 @@ void font_factory::AddFontsDir(char const *utf8dir) #endif } +void font_factory::AddFontFile(char const *utf8file) +{ +#ifdef USE_PANGO_WIN32 + g_info("Adding additional font only supported for fontconfig backend."); +#else + if (!Inkscape::IO::file_test(utf8file, G_FILE_TEST_IS_REGULAR)) { + g_warning("Font file '%s' does not exist and will be ignored.", utf8file); + return; + } + + gchar *file; +# ifdef WIN32 + file = g_win32_locale_filename_from_utf8(utf8file); +# else + file = g_filename_from_utf8(utf8file, -1, NULL, NULL, NULL); +# endif + + FcConfig *conf = NULL; +# if PANGO_VERSION_CHECK(1,38,0) + pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); +# endif + FcBool res = FcConfigAppFontAddFile(conf, (FcChar8 const *)file); + if (res = FcTrue) { + g_info("Font file '%s' added successfully.", utf8file); + } else { + g_warning("Could not add font file '%s'.", utf8file); + } + + g_free(file); +#endif +} + /* Local Variables: mode:c++ diff --git a/src/libnrtype/FontFactory.h b/src/libnrtype/FontFactory.h index c273be2f4..12260f99a 100644 --- a/src/libnrtype/FontFactory.h +++ b/src/libnrtype/FontFactory.h @@ -139,6 +139,9 @@ public: /// Add a directory from which to include additional fonts void AddFontsDir(char const *utf8dir); + /// Add a an additional font. + void AddFontFile(char const *utf8file); + private: void* loadedPtr; diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 2deaccad0..da02d4ef1 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -12,6 +12,9 @@ #include #include +// For font-rule +#include "libnrtype/FontFactory.h" + using Inkscape::XML::TEXT_NODE; SPStyleElem::SPStyleElem() : SPObject() { @@ -308,12 +311,61 @@ end_font_face_cb(CRDocHandler *a_handler) unsigned(font_face_rule->type)); } - std::cout << "end_font_face_cb: font face rule unsupported." << std::endl; + std::cout << "end_font_face_cb: font face rule limited support." << std::endl; cr_declaration_dump (font_face_rule->kind.font_face_rule->decl_list, stdout, 2, TRUE); printf ("\n"); + // Get document + SPDocument* document = parse_tmp.document; + if (!document) { + std::cerr << "end_font_face_cb: No document!" << std::endl; + return; + } + if (!document->getURI()) { + std::cerr << "end_font_face_cb: Document URI is NULL" << std::endl; + return; + } + + // Add ttf or otf fonts. + CRDeclaration const *cur = NULL; + for (cur = font_face_rule->kind.font_face_rule->decl_list; cur; cur = cur->next) { + if (cur->property && + cur->property->stryng && + cur->property->stryng->str && + strcmp(cur->property->stryng->str, "src") == 0 ) { + + if (cur->value && + cur->value->content.str && + cur->value->content.str->stryng && + cur->value->content.str->stryng->str) { + + Glib::ustring value = cur->value->content.str->stryng->str; + std::size_t found = value.find_last_of("ttf"); + + if (value.rfind("ttf") == (value.length() - 3) || + value.rfind("otf") == (value.length() - 3)) { + + // Get file + Glib::ustring ttf_file = + Inkscape::IO::Resource::get_filename (document->getURI(), value); + + if (!ttf_file.empty()) { + font_factory *factory = font_factory::Default(); + factory->AddFontFile( ttf_file.c_str() ); + std::cout << "end_font_face_cb: Added font: " << ttf_file << std::endl; + + // FIX ME: Need to refresh font list. + } else { + std::cout << "end_font_face_cb: Failed to add: " << value << std::endl; + } + } + } + } + } + parse_tmp.currStmt = NULL; parse_tmp.stmtType = NO_STMT; + } static void -- cgit v1.2.3 From f346413e6258381d8e30825f22d8cd40fdf806bc Mon Sep 17 00:00:00 2001 From: Eduard Braun Date: Wed, 25 Oct 2017 23:05:44 +0200 Subject: Fix code accidentally made useless in de6d47ed290e02aa4bdc64d6cea5a6c8c20e61c7 --- src/libnrtype/FontFactory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 2b1087eec..9c62e5483 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -936,7 +936,7 @@ void font_factory::AddFontsDir(char const *utf8dir) FcConfig *conf = NULL; # if PANGO_VERSION_CHECK(1,38,0) - pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); + conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); # endif FcBool res = FcConfigAppFontAddDir(conf, (FcChar8 const *)dir); if (res = FcTrue) { @@ -968,7 +968,7 @@ void font_factory::AddFontFile(char const *utf8file) FcConfig *conf = NULL; # if PANGO_VERSION_CHECK(1,38,0) - pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); + conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); # endif FcBool res = FcConfigAppFontAddFile(conf, (FcChar8 const *)file); if (res = FcTrue) { -- cgit v1.2.3 From 4dc6e12d293df00624384d525e8b3bdc3d824152 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Thu, 26 Oct 2017 09:42:58 +0200 Subject: Remove unused functions. --- src/widgets/spw-utilities.cpp | 113 ------------------------------------------ src/widgets/spw-utilities.h | 16 ------ 2 files changed, 129 deletions(-) diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp index 29e86b885..992f1f6b7 100644 --- a/src/widgets/spw-utilities.cpp +++ b/src/widgets/spw-utilities.cpp @@ -61,31 +61,6 @@ Gtk::Label * spw_label(Gtk::Grid *table, const gchar *label_text, int col, int r return label_widget; } -GtkWidget * -spw_label_old(GtkWidget *table, const gchar *label_text, int col, int row) -{ - GtkWidget *label_widget; - - label_widget = gtk_label_new (label_text); - g_assert(label_widget != NULL); - gtk_widget_set_halign(label_widget, GTK_ALIGN_END); - gtk_widget_show (label_widget); - -#if GTK_CHECK_VERSION(3,12,0) - gtk_widget_set_margin_start(label_widget, 4); - gtk_widget_set_margin_end(label_widget, 4); -#else - gtk_widget_set_margin_left(label_widget, 4); - gtk_widget_set_margin_right(label_widget, 4); -#endif - gtk_widget_set_hexpand(label_widget, TRUE); - gtk_widget_set_halign(label_widget, GTK_ALIGN_FILL); - gtk_widget_set_valign(label_widget, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), label_widget, col, row, 1, 1); - - return label_widget; -} - /** * Creates a horizontal layout manager with 4-pixel spacing between children * and space for 'width' columns. @@ -104,94 +79,6 @@ Gtk::HBox * spw_hbox(Gtk::Grid * table, int width, int col, int row) return hb; } -/** - * Creates a checkbutton widget and adds it to a vbox. - * This is a compound widget that includes a label. - */ -GtkWidget *spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *vbox, - const gchar *label, const gchar *tip, gchar *key, GCallback cb) -{ - g_assert (dialog != NULL); - g_assert (vbox != NULL); - - GtkWidget *b = gtk_check_button_new_with_label (label); - gtk_widget_set_tooltip_text(b, tip); - g_assert (b != NULL); - gtk_widget_show (b); - gtk_box_pack_start (GTK_BOX (vbox), b, FALSE, FALSE, 0); - g_object_set_data (G_OBJECT (b), "key", key); - g_object_set_data (G_OBJECT (dialog), key, b); - g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); - return b; -} - - -/** - * Creates a checkbutton widget and adds it to a table. - * This is a compound widget that includes a label. - */ -GtkWidget * -spw_checkbutton(GtkWidget * dialog, GtkWidget * table, - const gchar * label, gchar * key, int /*col*/, int row, - int insensitive, GCallback cb) -{ - GtkWidget *b; - - g_assert(dialog != NULL); - g_assert(table != NULL); - - GtkWidget *l = gtk_label_new (label); - gtk_widget_set_halign(l, GTK_ALIGN_END); - gtk_widget_show (l); - - gtk_widget_set_halign(l, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(l, TRUE); - gtk_widget_set_valign(l, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), l, 0, row, 1, 1); - - b = gtk_check_button_new (); - gtk_widget_show (b); - - gtk_widget_set_halign(b, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(b, TRUE); - gtk_widget_set_valign(b, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), b, 1, row, 1, 1); - - g_object_set_data (G_OBJECT (b), "key", key); - g_object_set_data (G_OBJECT (dialog), key, b); - g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); - if (insensitive == 1) { - gtk_widget_set_sensitive (b, FALSE); - } - return b; -} - -/** - * Creates a dropdown widget. This is a compound widget that includes - * a label as well as the dropdown. - */ -GtkWidget * -spw_dropdown(GtkWidget * dialog, GtkWidget * table, - const gchar * label_text, gchar * key, int row, - GtkWidget * selector - ) -{ - g_assert(dialog != NULL); - g_assert(table != NULL); - g_assert(selector != NULL); - - spw_label_old(table, label_text, 0, row); - - gtk_widget_show (selector); - gtk_widget_set_halign(selector, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(selector, TRUE); - gtk_widget_set_valign(selector, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), selector, 1, row, 1, 1); - - g_object_set_data (G_OBJECT (dialog), key, selector); - return selector; -} - static void sp_set_font_size_recursive (GtkWidget *w, gpointer font) { diff --git a/src/widgets/spw-utilities.h b/src/widgets/spw-utilities.h index 71b451631..ea0d55279 100644 --- a/src/widgets/spw-utilities.h +++ b/src/widgets/spw-utilities.h @@ -27,22 +27,6 @@ namespace Gtk { Gtk::Label * spw_label(Gtk::Grid *table, gchar const *label_text, int col, int row, Gtk::Widget *target); Gtk::HBox * spw_hbox(Gtk::Grid *table, int width, int col, int row); -GtkWidget * spw_label_old(GtkWidget *table, gchar const *label_text, int col, int row); - -GtkWidget * -spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *table, - const gchar *label, const gchar *tip, gchar *key, GCallback cb); - -GtkWidget * -spw_checkbutton(GtkWidget *dialog, GtkWidget *table, - gchar const *label, gchar *key, int col, int row, - int sensitive, GCallback cb); - -GtkWidget * -spw_dropdown(GtkWidget *dialog, GtkWidget *table, - gchar const *label, gchar *key, int row, - GtkWidget *selector - ); void sp_set_font_size (GtkWidget *w, guint font); void sp_set_font_size_smaller (GtkWidget *w); -- cgit v1.2.3 From c8666174565f985a966c9e6ae292f54dda5377c3 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 27 Oct 2017 10:47:37 +0200 Subject: Try to ensure that panels are created with the correct desktop. Fixes bug #1720096. (Crash under Wayland in gdl code.) --- src/desktop.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/desktop.cpp b/src/desktop.cpp index c56c42267..d8f11a09c 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1936,10 +1936,16 @@ SPDesktop::show_dialogs() mapVerbPreference.insert(std::make_pair ("ObjectsPanel", "/dialogs/objects") ); mapVerbPreference.insert(std::make_pair ("TagsPanel", "/dialogs/tags") ); + for (std::map::const_iterator iter = mapVerbPreference.begin(); iter != mapVerbPreference.end(); ++iter) { Glib::ustring pref = iter->second; int visible = prefs->getInt(pref + "/visible", 0); if (visible) { + + // Try to ensure that the panel is created attached to the correct desktop (bug 1720096). + // There must be a better way of handling this problem! + INKSCAPE.activate_desktop(this); + _dlg_mgr->showDialog(iter->first.c_str(), false); // without grabbing focus, we need focus to remain on the canvas } } -- cgit v1.2.3 From a00c71b8589567f01ae95ee7a1c8263f97126be9 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 27 Oct 2017 10:51:47 +0200 Subject: Enable reopening of Prototype dialog on startup. --- src/desktop.cpp | 1 + src/ui/dialog/prototype.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/desktop.cpp b/src/desktop.cpp index d8f11a09c..2d1aa8829 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1935,6 +1935,7 @@ SPDesktop::show_dialogs() mapVerbPreference.insert(std::make_pair ("Symbols", "/dialogs/symbols") ); mapVerbPreference.insert(std::make_pair ("ObjectsPanel", "/dialogs/objects") ); mapVerbPreference.insert(std::make_pair ("TagsPanel", "/dialogs/tags") ); + mapVerbPreference.insert(std::make_pair ("Prototype", "/dialogs/prototype") ); for (std::map::const_iterator iter = mapVerbPreference.begin(); iter != mapVerbPreference.end(); ++iter) { diff --git a/src/ui/dialog/prototype.cpp b/src/ui/dialog/prototype.cpp index b3bf60aab..b7c9f7abf 100644 --- a/src/ui/dialog/prototype.cpp +++ b/src/ui/dialog/prototype.cpp @@ -22,6 +22,8 @@ namespace Inkscape { namespace UI { namespace Dialog { +// Note that in order for a dialog to be restored, it must be listed in SPDesktop::show_dialogs(). + Prototype::Prototype() : // UI::Widget::Panel("Prototype Label", "/dialogs/prototype", SP_VERB_DIALOG_PROTOTYPE, // "Prototype Apply Label", true), -- cgit v1.2.3 From b2d879e23ef18ce97e71f95d784da4d672874b4b Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Fri, 27 Oct 2017 20:52:00 +0200 Subject: Protect against missing "id". --- src/preferences.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/preferences.cpp b/src/preferences.cpp index 7ebf55a79..b02e71e46 100644 --- a/src/preferences.cpp +++ b/src/preferences.cpp @@ -393,6 +393,9 @@ std::vector Preferences::getAllDirs(Glib::ustring const &path) Inkscape::XML::Node *node = _getNode(path, false); if (node) { for (Inkscape::XML::NodeSiblingIterator i = node->firstChild(); i; ++i) { + if (i->attribute("id") == NULL) { + continue; + } temp.push_back(path + '/' + i->attribute("id")); } } @@ -702,6 +705,9 @@ Inkscape::XML::Node *Preferences::_getNode(Glib::ustring const &pref_key, bool c } for (child = node->firstChild(); child; child = child->next()) { + if (child->attribute("id") == NULL) { + continue; + } if (!strcmp(splits[part_i], child->attribute("id"))) { break; } -- cgit v1.2.3 From d437851688283ae4024e8dc174afcfab2e340301 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sat, 28 Oct 2017 07:25:15 +0200 Subject: Fix XML text parsing bug. Since xml2 2.9.0, xmlNodeGetSpacePreserve() only checks element nodes, thus we need to check text node parent for xml:space value. --- src/xml/repr-io.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index 725b313b1..2ff9d4776 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -561,7 +561,10 @@ static Node *sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gc return NULL; // empty text node } - bool preserve = (xmlNodeGetSpacePreserve (node) == 1); + // Since libxml2 2.9.0, only element nodes are checked, thus check parent. + // Note: this only handles XML's rules for white space. SVG's specific rules + // are handled in sp-string.cpp. + bool preserve = (xmlNodeGetSpacePreserve (node->parent) == 1); xmlChar *p; for (p = node->content; *p && g_ascii_isspace (*p) && !preserve; p++) -- cgit v1.2.3 From 15fe5b74c46cbe12da26ef3c5543c5e0bd8d64c1 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 28 Oct 2017 12:32:03 +0200 Subject: Trying libFuzzer --- CMakeLists.txt | 16 ++ testfiles/CMakeLists.txt | 8 + testfiles/fuzz-dict | 521 +++++++++++++++++++++++++++++++++++++++++++++++ testfiles/fuzzer.cpp | 15 ++ 4 files changed, 560 insertions(+) create mode 100644 testfiles/fuzz-dict create mode 100644 testfiles/fuzzer.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4732766c1..3293e872b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,6 +105,8 @@ option(WITH_LIBWPG "Compile with support of libwpg for WordPerfect Graphics" ON) option(WITH_NLS "Compile with Native Language Support (using gettext)" ON) option(WITH_YAML "Compile with YAML support (enables xverbs)" ON) +option(WITH_FUZZ "Compile for fuzzing purpose (use 'make fuzz' only)" OFF) + option(ENABLE_BINRELOC "Enable relocatable binaries" OFF) # ----------------------------------------------------------------------------- @@ -151,6 +153,20 @@ endif() # end badness # ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +# Fuzzing +# ----------------------------------------------------------------------------- + +mark_as_advanced(WITH_FUZZ) +if(WITH_FUZZ) + add_definitions("-fsanitize=address"#,undefined,signed-integer-overflow + "-fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep" + "-fno-omit-frame-pointer") + set(CMAKE_C_COMPILER /usr/bin/clang) + set(CMAKE_CXX_COMPILER /usr/bin/clang++) +endif() + # ----------------------------------------------------------------------------- # Relocatable Binary # ----------------------------------------------------------------------------- diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 554ab8fda..5dba0258b 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -31,3 +31,11 @@ foreach(source ${TEST_SOURCES}) add_dependencies(tests ${source}) endforeach() add_subdirectory(rendering_tests) + +if(WITH_FUZZ) + add_executable(fuzz fuzzer.cpp) + target_link_libraries(fuzz inkscape_base -lFuzzer "-fsanitize=address" + "-fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep" + "-fno-omit-frame-pointer") + +endif() diff --git a/testfiles/fuzz-dict b/testfiles/fuzz-dict new file mode 100644 index 000000000..7eee0d0a0 --- /dev/null +++ b/testfiles/fuzz-dict @@ -0,0 +1,521 @@ +"100" +"200" +"300" +"400" +"500" +"600" +"700" +"800" +"900" +"a" +"accent-height" +"accumulate" +"additive" +"after-edge" +"alignment-baseline" +"all" +"alphabetic" +"altGlyph" +"altGlyphDef" +"altGlyphItem" +"amplitude" +"animate" +"animateColor" +"animateMotion" +"animateTransform" +"arabic-form" +"ascent" +attr_encoding=" encoding=\"1\"" +attr_generic=" a=\"1\"" +attr_href=" href=\"1\"" +"attributeName" +"attributeType" +attr_standalone=" standalone=\"no\"" +attr_version=" version=\"1\"" +attr_xml_base=" xml:base=\"1\"" +attr_xml_id=" xml:id=\"1\"" +attr_xml_lang=" xml:lang=\"1\"" +attr_xmlns=" xmlns=\"1\"" +attr_xml_space=" xml:space=\"1\"" +"auto" +"azimuth" +"baseFrequency" +"baseline" +"baseline-shift" +"baseProfile" +"bbox" +"before-edge" +"begin" +"bevel" +"bias" +"bidi-override" +"blink" +"block" +"bold" +"bolder" +"butt" +"by" +"calcMode" +"cap-height" +"caption" +"central" +"circle" +"class" +"clip" +"clip-path" +"clipPath" +"clipPathUnits" +"clip-rule" +"collapse" +"color" +"color-interpolation" +"color-interpolation-filters" +"color-profile" +"color-rendering" +"compact" +"condensed" +"contentScriptType" +"contentStyleType" +"crispEdges" +"crosshair" +"currentColor" +"cursor" +"cx" +"cy" +"d" +"default" +"defs" +"desc" +"descent" +"diffuseConstant" +"direction" +"display" +"divisor" +"dominant-baseline" +"dur" +"dx" +"dy" +"edgeMode" +"elevation" +"ellipse" +"embed" +"enable-background" +"end" +entity_builtin="<" +entity_decimal="" +entity_external="&a;" +entity_hex="" +"e-resize" +"evenodd" +"expanded" +"exponent" +"externalResourcesRequired" +"extra-condensed" +"extra-expanded" +"feBlend" +"feColorMatrix" +"feComponentTransfer" +"feComposite" +"feConvolveMatrix" +"feDiffuseLighting" +"feDisplacementMap" +"feDistantLight" +"feFlood" +"feFuncA" +"feFuncB" +"feFuncG" +"feFuncR" +"feGaussianBlur" +"feImage" +"feMerge" +"feMergeNode" +"feMorphology" +"feOffset" +"fePointLight" +"feSpecularLighting" +"feSpotLight" +"feTile" +"feTurbulence" +"fill" +"fill-opacity" +"fill-rule" +"filter" +"filterRes" +"filterUnits" +"flood-color" +"flood-opacity" +"font" +"font-face" +"font-face-format" +"font-face-name" +"font-face-src" +"font-face-uri" +"font-family" +"font-size" +"font-size-adjust" +"font-stretch" +"font-style" +"font-variant" +"font-weight" +"foreignObject" +"format" +"from" +"fx" +"fy" +"g" +"g1" +"g2" +"geometricPrecision" +"glyph" +"glyph-name" +"glyph-orientation-horizontal" +"glyph-orientation-vertical" +"glyphRef" +"gradientTransform" +"gradientUnits" +"hanging" +"height" +"help" +"hidden" +"hkern" +"horiz-adv-x" +"horiz-origin-x" +"horiz-origin-y" +"icon" +"id" +"ideographic" +"image" +"image-rendering" +"in" +"in2" +"individual" +"inherit" +"inline" +"inline-table" +"intercept" +"italic" +"k" +"k1" +"k2" +"k3" +"k4" +"kernelMatrix" +"kernelUnitLength" +"kerning" +"keyPoints" +"keySplines" +"keyTimes" +"lang" +"lengthAdjust" +"letter-spacing" +"lighter" +"lighting-color" +"limitingConeAngle" +"line" +"linearGradient" +"linearRGB" +"'line-height'" +"line-through" +"list-item" +"local" +"lr" +"lr-tb" +"ltr" +"marker" +"marker-end" +"markerHeight" +"marker-mid" +"marker-start" +"markerUnits" +"markerWidth" +"mask" +"maskContentUnits" +"maskUnits" +"mathematical" +"max" +"media" +"menu" +"message-box" +"metadata" +"method" +"middle" +"min" +"missing-glyph" +"miter" +"mode" +"move" +"mpath" +"name" +"narrower" +"ne-resize" +"new" +"no-change" +"none" +"nonzero" +"normal" +"n-resize" +"numOctaves" +"nw-resize" +"oblique" +"offset" +"onabort" +"onactivate" +"onbegin" +"onclick" +"onend" +"onerror" +"onfocusin" +"onfocusout" +"onload" +"onmousedown" +"onmousemove" +"onmouseout" +"onmouseover" +"onmouseup" +"onrepeat" +"onresize" +"onscroll" +"onunload" +"onzoom" +"opacity" +"operator" +"optimizeLegibility" +"optimizeQuality" +"optimizeSpeed" +"order" +"orient" +"orientation" +"origin" +"overflow" +"overline" +"overline-position" +"overline-thickness" +"paint" +"painted" +"panose-1" +"path" +"pathLength" +"pattern" +"patternContentUnits" +"patternTransform" +"patternUnits" +"pointer" +"pointer-events" +"points" +"pointsAtX" +"pointsAtY" +"pointsAtZ" +"polygon" +"polyline" +"preserveAlpha" +"preserveAspectRatio" +"primitiveUnits" +"properties" +"r" +"radialGradient" +"radius" +"rect" +"refX" +"refY" +"rendering-intent" +"repeatCount" +"repeatDur" +"requiredExtensions" +"requiredFeatures" +"reset-size" +"restart" +"result" +"rl" +"rl-tb" +"rotate" +"round" +"rtl" +"run-in" +"rx" +"ry" +"scale" +"script" +"scroll" +"see" +"seed" +"semi-condensed" +"semi-expanded" +"se-resize" +"set" +"shape-rendering" +"slope" +"small-caps" +"small-caption" +"spacing" +"Specifying" +"specularConstant" +"specularExponent" +"spreadMethod" +"square" +"s-resize" +"sRGB" +"start" +"startOffset" +"status-bar" +"stdDeviation" +"stemh" +"stemv" +"stitchTiles" +"stop" +"stop-color" +"stop-opacity" +"strikethrough-position" +"strikethrough-thickness" +"string" +string_any="ANY" +string_brackets="[]" +string_cdata="CDATA" +string_col_fallback=":fallback" +string_col_generic=":a" +string_col_include=":include" +string_dashes="--" +string_empty_dblquotes="\"\"" +string_empty="EMPTY" +string_empty_quotes="''" +string_entities="ENTITIES" +string_entity="ENTITY" +string_fixed="#FIXED" +string_id="ID" +string_idref="IDREF" +string_idrefs="IDREFS" +string_implied="#IMPLIED" +string_nmtoken="NMTOKEN" +string_nmtokens="NMTOKENS" +string_notation="NOTATION" +string_parentheses="()" +string_pcdata="#PCDATA" +string_percent="%a" +string_public="PUBLIC" +string_required="#REQUIRED" +string_schema=":schema" +string_system="SYSTEM" +string_ucs4="UCS-4" +string_utf16="UTF-16" +string_utf8="UTF-8" +string_xmlns="xmlns:" +"stroke" +"stroke-dasharray" +"stroke-dashoffset" +"stroke-linecap" +"stroke-linejoin" +"stroke-miterlimit" +"stroke-opacity" +"stroke-width" +"style" +"sub" +"super" +"surfaceScale" +"svg" +"switch" +"sw-resize" +"symbol" +"systemLanguage" +"table" +"table-caption" +"table-cell" +"table-column" +"table-column-group" +"table-footer-group" +"table-header-group" +"table-row" +"table-row-group" +"tableValues" +tag_attlist="" +tag_doctype="" +tag_open_close="" +tag_open_exclamation="" +tag_xml_q="" +"target" +"targetX" +"targetY" +"tb" +"tb-rl" +"text" +"text-after-edge" +"text-anchor" +"text-before-edge" +"text-decoration" +"textLength" +"textPath" +"text-rendering" +"title" +"to" +"transform" +"tref" +"tspan" +"type" +"u1" +"u2" +"ultra-condensed" +"ultra-expanded" +"underline" +"underline-position" +"underline-thickness" +"unicode" +"unicode-bidi" +"unicode-range" +"units-per-em" +"use" +"use-script" +"v-alphabetic" +"values" +"version" +"vert-adv-y" +"vert-origin-x" +"vert-origin-y" +"v-hanging" +"v-ideographic" +"view" +"viewBox" +"viewTarget" +"visibility" +"visible" +"visibleFill" +"visiblePainted" +"visibleStroke" +"vkern" +"v-mathematical" +"wait" +"wider" +"width" +"widths" +"word-spacing" +"w-resize" +"writing-mode" +"x" +"x1" +"x2" +"xChannelSelector" +"x-height" +"xlink:actuate" +"xlink:arcrole" +"xlink:href" +"xlink:role" +"xlink:show" +"xlink:title" +"xlink:type" +#XML +"xml:base" +"xml:lang" +"xml:space" +"y" +"y1" +"y2" +"yChannelSelector" +"z" +"zoomAndPan" diff --git a/testfiles/fuzzer.cpp b/testfiles/fuzzer.cpp new file mode 100644 index 000000000..6dd09e753 --- /dev/null +++ b/testfiles/fuzzer.cpp @@ -0,0 +1,15 @@ +#include "xml/repr.h" +#include "inkscape.h" +#include "document.h" + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + g_type_init(); + Inkscape::GC::init(); + if ( !Inkscape::Application::exists() ) + Inkscape::Application::create("", false); + //void* a= sp_repr_read_mem((const char*)data, size, 0); + SPDocument *doc = SPDocument::createNewDocFromMem( (const char*)data, size, 0); + if(doc) + doc->doUnref(); + return 0; +} -- cgit v1.2.3 From d8addd5d7b1b24532e6f6a619a06c9d86fb6d228 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 28 Oct 2017 18:46:05 +0200 Subject: simpler structure -- compilers and flags have to be given externally --- testfiles/fuzz-dict | 521 -------------------------------------------------- testfiles/fuzzer.dict | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 521 insertions(+), 521 deletions(-) delete mode 100644 testfiles/fuzz-dict create mode 100644 testfiles/fuzzer.dict diff --git a/testfiles/fuzz-dict b/testfiles/fuzz-dict deleted file mode 100644 index 7eee0d0a0..000000000 --- a/testfiles/fuzz-dict +++ /dev/null @@ -1,521 +0,0 @@ -"100" -"200" -"300" -"400" -"500" -"600" -"700" -"800" -"900" -"a" -"accent-height" -"accumulate" -"additive" -"after-edge" -"alignment-baseline" -"all" -"alphabetic" -"altGlyph" -"altGlyphDef" -"altGlyphItem" -"amplitude" -"animate" -"animateColor" -"animateMotion" -"animateTransform" -"arabic-form" -"ascent" -attr_encoding=" encoding=\"1\"" -attr_generic=" a=\"1\"" -attr_href=" href=\"1\"" -"attributeName" -"attributeType" -attr_standalone=" standalone=\"no\"" -attr_version=" version=\"1\"" -attr_xml_base=" xml:base=\"1\"" -attr_xml_id=" xml:id=\"1\"" -attr_xml_lang=" xml:lang=\"1\"" -attr_xmlns=" xmlns=\"1\"" -attr_xml_space=" xml:space=\"1\"" -"auto" -"azimuth" -"baseFrequency" -"baseline" -"baseline-shift" -"baseProfile" -"bbox" -"before-edge" -"begin" -"bevel" -"bias" -"bidi-override" -"blink" -"block" -"bold" -"bolder" -"butt" -"by" -"calcMode" -"cap-height" -"caption" -"central" -"circle" -"class" -"clip" -"clip-path" -"clipPath" -"clipPathUnits" -"clip-rule" -"collapse" -"color" -"color-interpolation" -"color-interpolation-filters" -"color-profile" -"color-rendering" -"compact" -"condensed" -"contentScriptType" -"contentStyleType" -"crispEdges" -"crosshair" -"currentColor" -"cursor" -"cx" -"cy" -"d" -"default" -"defs" -"desc" -"descent" -"diffuseConstant" -"direction" -"display" -"divisor" -"dominant-baseline" -"dur" -"dx" -"dy" -"edgeMode" -"elevation" -"ellipse" -"embed" -"enable-background" -"end" -entity_builtin="<" -entity_decimal="" -entity_external="&a;" -entity_hex="" -"e-resize" -"evenodd" -"expanded" -"exponent" -"externalResourcesRequired" -"extra-condensed" -"extra-expanded" -"feBlend" -"feColorMatrix" -"feComponentTransfer" -"feComposite" -"feConvolveMatrix" -"feDiffuseLighting" -"feDisplacementMap" -"feDistantLight" -"feFlood" -"feFuncA" -"feFuncB" -"feFuncG" -"feFuncR" -"feGaussianBlur" -"feImage" -"feMerge" -"feMergeNode" -"feMorphology" -"feOffset" -"fePointLight" -"feSpecularLighting" -"feSpotLight" -"feTile" -"feTurbulence" -"fill" -"fill-opacity" -"fill-rule" -"filter" -"filterRes" -"filterUnits" -"flood-color" -"flood-opacity" -"font" -"font-face" -"font-face-format" -"font-face-name" -"font-face-src" -"font-face-uri" -"font-family" -"font-size" -"font-size-adjust" -"font-stretch" -"font-style" -"font-variant" -"font-weight" -"foreignObject" -"format" -"from" -"fx" -"fy" -"g" -"g1" -"g2" -"geometricPrecision" -"glyph" -"glyph-name" -"glyph-orientation-horizontal" -"glyph-orientation-vertical" -"glyphRef" -"gradientTransform" -"gradientUnits" -"hanging" -"height" -"help" -"hidden" -"hkern" -"horiz-adv-x" -"horiz-origin-x" -"horiz-origin-y" -"icon" -"id" -"ideographic" -"image" -"image-rendering" -"in" -"in2" -"individual" -"inherit" -"inline" -"inline-table" -"intercept" -"italic" -"k" -"k1" -"k2" -"k3" -"k4" -"kernelMatrix" -"kernelUnitLength" -"kerning" -"keyPoints" -"keySplines" -"keyTimes" -"lang" -"lengthAdjust" -"letter-spacing" -"lighter" -"lighting-color" -"limitingConeAngle" -"line" -"linearGradient" -"linearRGB" -"'line-height'" -"line-through" -"list-item" -"local" -"lr" -"lr-tb" -"ltr" -"marker" -"marker-end" -"markerHeight" -"marker-mid" -"marker-start" -"markerUnits" -"markerWidth" -"mask" -"maskContentUnits" -"maskUnits" -"mathematical" -"max" -"media" -"menu" -"message-box" -"metadata" -"method" -"middle" -"min" -"missing-glyph" -"miter" -"mode" -"move" -"mpath" -"name" -"narrower" -"ne-resize" -"new" -"no-change" -"none" -"nonzero" -"normal" -"n-resize" -"numOctaves" -"nw-resize" -"oblique" -"offset" -"onabort" -"onactivate" -"onbegin" -"onclick" -"onend" -"onerror" -"onfocusin" -"onfocusout" -"onload" -"onmousedown" -"onmousemove" -"onmouseout" -"onmouseover" -"onmouseup" -"onrepeat" -"onresize" -"onscroll" -"onunload" -"onzoom" -"opacity" -"operator" -"optimizeLegibility" -"optimizeQuality" -"optimizeSpeed" -"order" -"orient" -"orientation" -"origin" -"overflow" -"overline" -"overline-position" -"overline-thickness" -"paint" -"painted" -"panose-1" -"path" -"pathLength" -"pattern" -"patternContentUnits" -"patternTransform" -"patternUnits" -"pointer" -"pointer-events" -"points" -"pointsAtX" -"pointsAtY" -"pointsAtZ" -"polygon" -"polyline" -"preserveAlpha" -"preserveAspectRatio" -"primitiveUnits" -"properties" -"r" -"radialGradient" -"radius" -"rect" -"refX" -"refY" -"rendering-intent" -"repeatCount" -"repeatDur" -"requiredExtensions" -"requiredFeatures" -"reset-size" -"restart" -"result" -"rl" -"rl-tb" -"rotate" -"round" -"rtl" -"run-in" -"rx" -"ry" -"scale" -"script" -"scroll" -"see" -"seed" -"semi-condensed" -"semi-expanded" -"se-resize" -"set" -"shape-rendering" -"slope" -"small-caps" -"small-caption" -"spacing" -"Specifying" -"specularConstant" -"specularExponent" -"spreadMethod" -"square" -"s-resize" -"sRGB" -"start" -"startOffset" -"status-bar" -"stdDeviation" -"stemh" -"stemv" -"stitchTiles" -"stop" -"stop-color" -"stop-opacity" -"strikethrough-position" -"strikethrough-thickness" -"string" -string_any="ANY" -string_brackets="[]" -string_cdata="CDATA" -string_col_fallback=":fallback" -string_col_generic=":a" -string_col_include=":include" -string_dashes="--" -string_empty_dblquotes="\"\"" -string_empty="EMPTY" -string_empty_quotes="''" -string_entities="ENTITIES" -string_entity="ENTITY" -string_fixed="#FIXED" -string_id="ID" -string_idref="IDREF" -string_idrefs="IDREFS" -string_implied="#IMPLIED" -string_nmtoken="NMTOKEN" -string_nmtokens="NMTOKENS" -string_notation="NOTATION" -string_parentheses="()" -string_pcdata="#PCDATA" -string_percent="%a" -string_public="PUBLIC" -string_required="#REQUIRED" -string_schema=":schema" -string_system="SYSTEM" -string_ucs4="UCS-4" -string_utf16="UTF-16" -string_utf8="UTF-8" -string_xmlns="xmlns:" -"stroke" -"stroke-dasharray" -"stroke-dashoffset" -"stroke-linecap" -"stroke-linejoin" -"stroke-miterlimit" -"stroke-opacity" -"stroke-width" -"style" -"sub" -"super" -"surfaceScale" -"svg" -"switch" -"sw-resize" -"symbol" -"systemLanguage" -"table" -"table-caption" -"table-cell" -"table-column" -"table-column-group" -"table-footer-group" -"table-header-group" -"table-row" -"table-row-group" -"tableValues" -tag_attlist="" -tag_doctype="" -tag_open_close="" -tag_open_exclamation="" -tag_xml_q="" -"target" -"targetX" -"targetY" -"tb" -"tb-rl" -"text" -"text-after-edge" -"text-anchor" -"text-before-edge" -"text-decoration" -"textLength" -"textPath" -"text-rendering" -"title" -"to" -"transform" -"tref" -"tspan" -"type" -"u1" -"u2" -"ultra-condensed" -"ultra-expanded" -"underline" -"underline-position" -"underline-thickness" -"unicode" -"unicode-bidi" -"unicode-range" -"units-per-em" -"use" -"use-script" -"v-alphabetic" -"values" -"version" -"vert-adv-y" -"vert-origin-x" -"vert-origin-y" -"v-hanging" -"v-ideographic" -"view" -"viewBox" -"viewTarget" -"visibility" -"visible" -"visibleFill" -"visiblePainted" -"visibleStroke" -"vkern" -"v-mathematical" -"wait" -"wider" -"width" -"widths" -"word-spacing" -"w-resize" -"writing-mode" -"x" -"x1" -"x2" -"xChannelSelector" -"x-height" -"xlink:actuate" -"xlink:arcrole" -"xlink:href" -"xlink:role" -"xlink:show" -"xlink:title" -"xlink:type" -#XML -"xml:base" -"xml:lang" -"xml:space" -"y" -"y1" -"y2" -"yChannelSelector" -"z" -"zoomAndPan" diff --git a/testfiles/fuzzer.dict b/testfiles/fuzzer.dict new file mode 100644 index 000000000..7eee0d0a0 --- /dev/null +++ b/testfiles/fuzzer.dict @@ -0,0 +1,521 @@ +"100" +"200" +"300" +"400" +"500" +"600" +"700" +"800" +"900" +"a" +"accent-height" +"accumulate" +"additive" +"after-edge" +"alignment-baseline" +"all" +"alphabetic" +"altGlyph" +"altGlyphDef" +"altGlyphItem" +"amplitude" +"animate" +"animateColor" +"animateMotion" +"animateTransform" +"arabic-form" +"ascent" +attr_encoding=" encoding=\"1\"" +attr_generic=" a=\"1\"" +attr_href=" href=\"1\"" +"attributeName" +"attributeType" +attr_standalone=" standalone=\"no\"" +attr_version=" version=\"1\"" +attr_xml_base=" xml:base=\"1\"" +attr_xml_id=" xml:id=\"1\"" +attr_xml_lang=" xml:lang=\"1\"" +attr_xmlns=" xmlns=\"1\"" +attr_xml_space=" xml:space=\"1\"" +"auto" +"azimuth" +"baseFrequency" +"baseline" +"baseline-shift" +"baseProfile" +"bbox" +"before-edge" +"begin" +"bevel" +"bias" +"bidi-override" +"blink" +"block" +"bold" +"bolder" +"butt" +"by" +"calcMode" +"cap-height" +"caption" +"central" +"circle" +"class" +"clip" +"clip-path" +"clipPath" +"clipPathUnits" +"clip-rule" +"collapse" +"color" +"color-interpolation" +"color-interpolation-filters" +"color-profile" +"color-rendering" +"compact" +"condensed" +"contentScriptType" +"contentStyleType" +"crispEdges" +"crosshair" +"currentColor" +"cursor" +"cx" +"cy" +"d" +"default" +"defs" +"desc" +"descent" +"diffuseConstant" +"direction" +"display" +"divisor" +"dominant-baseline" +"dur" +"dx" +"dy" +"edgeMode" +"elevation" +"ellipse" +"embed" +"enable-background" +"end" +entity_builtin="<" +entity_decimal="" +entity_external="&a;" +entity_hex="" +"e-resize" +"evenodd" +"expanded" +"exponent" +"externalResourcesRequired" +"extra-condensed" +"extra-expanded" +"feBlend" +"feColorMatrix" +"feComponentTransfer" +"feComposite" +"feConvolveMatrix" +"feDiffuseLighting" +"feDisplacementMap" +"feDistantLight" +"feFlood" +"feFuncA" +"feFuncB" +"feFuncG" +"feFuncR" +"feGaussianBlur" +"feImage" +"feMerge" +"feMergeNode" +"feMorphology" +"feOffset" +"fePointLight" +"feSpecularLighting" +"feSpotLight" +"feTile" +"feTurbulence" +"fill" +"fill-opacity" +"fill-rule" +"filter" +"filterRes" +"filterUnits" +"flood-color" +"flood-opacity" +"font" +"font-face" +"font-face-format" +"font-face-name" +"font-face-src" +"font-face-uri" +"font-family" +"font-size" +"font-size-adjust" +"font-stretch" +"font-style" +"font-variant" +"font-weight" +"foreignObject" +"format" +"from" +"fx" +"fy" +"g" +"g1" +"g2" +"geometricPrecision" +"glyph" +"glyph-name" +"glyph-orientation-horizontal" +"glyph-orientation-vertical" +"glyphRef" +"gradientTransform" +"gradientUnits" +"hanging" +"height" +"help" +"hidden" +"hkern" +"horiz-adv-x" +"horiz-origin-x" +"horiz-origin-y" +"icon" +"id" +"ideographic" +"image" +"image-rendering" +"in" +"in2" +"individual" +"inherit" +"inline" +"inline-table" +"intercept" +"italic" +"k" +"k1" +"k2" +"k3" +"k4" +"kernelMatrix" +"kernelUnitLength" +"kerning" +"keyPoints" +"keySplines" +"keyTimes" +"lang" +"lengthAdjust" +"letter-spacing" +"lighter" +"lighting-color" +"limitingConeAngle" +"line" +"linearGradient" +"linearRGB" +"'line-height'" +"line-through" +"list-item" +"local" +"lr" +"lr-tb" +"ltr" +"marker" +"marker-end" +"markerHeight" +"marker-mid" +"marker-start" +"markerUnits" +"markerWidth" +"mask" +"maskContentUnits" +"maskUnits" +"mathematical" +"max" +"media" +"menu" +"message-box" +"metadata" +"method" +"middle" +"min" +"missing-glyph" +"miter" +"mode" +"move" +"mpath" +"name" +"narrower" +"ne-resize" +"new" +"no-change" +"none" +"nonzero" +"normal" +"n-resize" +"numOctaves" +"nw-resize" +"oblique" +"offset" +"onabort" +"onactivate" +"onbegin" +"onclick" +"onend" +"onerror" +"onfocusin" +"onfocusout" +"onload" +"onmousedown" +"onmousemove" +"onmouseout" +"onmouseover" +"onmouseup" +"onrepeat" +"onresize" +"onscroll" +"onunload" +"onzoom" +"opacity" +"operator" +"optimizeLegibility" +"optimizeQuality" +"optimizeSpeed" +"order" +"orient" +"orientation" +"origin" +"overflow" +"overline" +"overline-position" +"overline-thickness" +"paint" +"painted" +"panose-1" +"path" +"pathLength" +"pattern" +"patternContentUnits" +"patternTransform" +"patternUnits" +"pointer" +"pointer-events" +"points" +"pointsAtX" +"pointsAtY" +"pointsAtZ" +"polygon" +"polyline" +"preserveAlpha" +"preserveAspectRatio" +"primitiveUnits" +"properties" +"r" +"radialGradient" +"radius" +"rect" +"refX" +"refY" +"rendering-intent" +"repeatCount" +"repeatDur" +"requiredExtensions" +"requiredFeatures" +"reset-size" +"restart" +"result" +"rl" +"rl-tb" +"rotate" +"round" +"rtl" +"run-in" +"rx" +"ry" +"scale" +"script" +"scroll" +"see" +"seed" +"semi-condensed" +"semi-expanded" +"se-resize" +"set" +"shape-rendering" +"slope" +"small-caps" +"small-caption" +"spacing" +"Specifying" +"specularConstant" +"specularExponent" +"spreadMethod" +"square" +"s-resize" +"sRGB" +"start" +"startOffset" +"status-bar" +"stdDeviation" +"stemh" +"stemv" +"stitchTiles" +"stop" +"stop-color" +"stop-opacity" +"strikethrough-position" +"strikethrough-thickness" +"string" +string_any="ANY" +string_brackets="[]" +string_cdata="CDATA" +string_col_fallback=":fallback" +string_col_generic=":a" +string_col_include=":include" +string_dashes="--" +string_empty_dblquotes="\"\"" +string_empty="EMPTY" +string_empty_quotes="''" +string_entities="ENTITIES" +string_entity="ENTITY" +string_fixed="#FIXED" +string_id="ID" +string_idref="IDREF" +string_idrefs="IDREFS" +string_implied="#IMPLIED" +string_nmtoken="NMTOKEN" +string_nmtokens="NMTOKENS" +string_notation="NOTATION" +string_parentheses="()" +string_pcdata="#PCDATA" +string_percent="%a" +string_public="PUBLIC" +string_required="#REQUIRED" +string_schema=":schema" +string_system="SYSTEM" +string_ucs4="UCS-4" +string_utf16="UTF-16" +string_utf8="UTF-8" +string_xmlns="xmlns:" +"stroke" +"stroke-dasharray" +"stroke-dashoffset" +"stroke-linecap" +"stroke-linejoin" +"stroke-miterlimit" +"stroke-opacity" +"stroke-width" +"style" +"sub" +"super" +"surfaceScale" +"svg" +"switch" +"sw-resize" +"symbol" +"systemLanguage" +"table" +"table-caption" +"table-cell" +"table-column" +"table-column-group" +"table-footer-group" +"table-header-group" +"table-row" +"table-row-group" +"tableValues" +tag_attlist="" +tag_doctype="" +tag_open_close="" +tag_open_exclamation="" +tag_xml_q="" +"target" +"targetX" +"targetY" +"tb" +"tb-rl" +"text" +"text-after-edge" +"text-anchor" +"text-before-edge" +"text-decoration" +"textLength" +"textPath" +"text-rendering" +"title" +"to" +"transform" +"tref" +"tspan" +"type" +"u1" +"u2" +"ultra-condensed" +"ultra-expanded" +"underline" +"underline-position" +"underline-thickness" +"unicode" +"unicode-bidi" +"unicode-range" +"units-per-em" +"use" +"use-script" +"v-alphabetic" +"values" +"version" +"vert-adv-y" +"vert-origin-x" +"vert-origin-y" +"v-hanging" +"v-ideographic" +"view" +"viewBox" +"viewTarget" +"visibility" +"visible" +"visibleFill" +"visiblePainted" +"visibleStroke" +"vkern" +"v-mathematical" +"wait" +"wider" +"width" +"widths" +"word-spacing" +"w-resize" +"writing-mode" +"x" +"x1" +"x2" +"xChannelSelector" +"x-height" +"xlink:actuate" +"xlink:arcrole" +"xlink:href" +"xlink:role" +"xlink:show" +"xlink:title" +"xlink:type" +#XML +"xml:base" +"xml:lang" +"xml:space" +"y" +"y1" +"y2" +"yChannelSelector" +"z" +"zoomAndPan" -- cgit v1.2.3 From 7e6670263c3a42dfe70a4e97009f25259d7f6a4c Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 28 Oct 2017 18:46:05 +0200 Subject: simpler structure -- compilers and flags have to be given externally --- CMakeLists.txt | 14 +- testfiles/CMakeLists.txt | 9 +- testfiles/fuzz-dict | 521 ----------------------------------------------- testfiles/fuzzer.dict | 521 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 527 insertions(+), 538 deletions(-) delete mode 100644 testfiles/fuzz-dict create mode 100644 testfiles/fuzzer.dict diff --git a/CMakeLists.txt b/CMakeLists.txt index 3293e872b..b01956876 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,6 +106,7 @@ option(WITH_NLS "Compile with Native Language Support (using gettext)" ON) option(WITH_YAML "Compile with YAML support (enables xverbs)" ON) option(WITH_FUZZ "Compile for fuzzing purpose (use 'make fuzz' only)" OFF) +mark_as_advanced(WITH_FUZZ) option(ENABLE_BINRELOC "Enable relocatable binaries" OFF) @@ -154,19 +155,6 @@ endif() # ----------------------------------------------------------------------------- -# ----------------------------------------------------------------------------- -# Fuzzing -# ----------------------------------------------------------------------------- - -mark_as_advanced(WITH_FUZZ) -if(WITH_FUZZ) - add_definitions("-fsanitize=address"#,undefined,signed-integer-overflow - "-fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep" - "-fno-omit-frame-pointer") - set(CMAKE_C_COMPILER /usr/bin/clang) - set(CMAKE_CXX_COMPILER /usr/bin/clang++) -endif() - # ----------------------------------------------------------------------------- # Relocatable Binary # ----------------------------------------------------------------------------- diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 5dba0258b..923898fc3 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -34,8 +34,9 @@ add_subdirectory(rendering_tests) if(WITH_FUZZ) add_executable(fuzz fuzzer.cpp) - target_link_libraries(fuzz inkscape_base -lFuzzer "-fsanitize=address" - "-fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep" - "-fno-omit-frame-pointer") - + if(EXISTS ${LIB_FUZZING_ENGINE}) + target_link_libraries(fuzz inkscape_base -lFuzzingEngine) + else() + target_link_libraries(fuzz inkscape_base -lFuzzer) + endif() endif() diff --git a/testfiles/fuzz-dict b/testfiles/fuzz-dict deleted file mode 100644 index 7eee0d0a0..000000000 --- a/testfiles/fuzz-dict +++ /dev/null @@ -1,521 +0,0 @@ -"100" -"200" -"300" -"400" -"500" -"600" -"700" -"800" -"900" -"a" -"accent-height" -"accumulate" -"additive" -"after-edge" -"alignment-baseline" -"all" -"alphabetic" -"altGlyph" -"altGlyphDef" -"altGlyphItem" -"amplitude" -"animate" -"animateColor" -"animateMotion" -"animateTransform" -"arabic-form" -"ascent" -attr_encoding=" encoding=\"1\"" -attr_generic=" a=\"1\"" -attr_href=" href=\"1\"" -"attributeName" -"attributeType" -attr_standalone=" standalone=\"no\"" -attr_version=" version=\"1\"" -attr_xml_base=" xml:base=\"1\"" -attr_xml_id=" xml:id=\"1\"" -attr_xml_lang=" xml:lang=\"1\"" -attr_xmlns=" xmlns=\"1\"" -attr_xml_space=" xml:space=\"1\"" -"auto" -"azimuth" -"baseFrequency" -"baseline" -"baseline-shift" -"baseProfile" -"bbox" -"before-edge" -"begin" -"bevel" -"bias" -"bidi-override" -"blink" -"block" -"bold" -"bolder" -"butt" -"by" -"calcMode" -"cap-height" -"caption" -"central" -"circle" -"class" -"clip" -"clip-path" -"clipPath" -"clipPathUnits" -"clip-rule" -"collapse" -"color" -"color-interpolation" -"color-interpolation-filters" -"color-profile" -"color-rendering" -"compact" -"condensed" -"contentScriptType" -"contentStyleType" -"crispEdges" -"crosshair" -"currentColor" -"cursor" -"cx" -"cy" -"d" -"default" -"defs" -"desc" -"descent" -"diffuseConstant" -"direction" -"display" -"divisor" -"dominant-baseline" -"dur" -"dx" -"dy" -"edgeMode" -"elevation" -"ellipse" -"embed" -"enable-background" -"end" -entity_builtin="<" -entity_decimal="" -entity_external="&a;" -entity_hex="" -"e-resize" -"evenodd" -"expanded" -"exponent" -"externalResourcesRequired" -"extra-condensed" -"extra-expanded" -"feBlend" -"feColorMatrix" -"feComponentTransfer" -"feComposite" -"feConvolveMatrix" -"feDiffuseLighting" -"feDisplacementMap" -"feDistantLight" -"feFlood" -"feFuncA" -"feFuncB" -"feFuncG" -"feFuncR" -"feGaussianBlur" -"feImage" -"feMerge" -"feMergeNode" -"feMorphology" -"feOffset" -"fePointLight" -"feSpecularLighting" -"feSpotLight" -"feTile" -"feTurbulence" -"fill" -"fill-opacity" -"fill-rule" -"filter" -"filterRes" -"filterUnits" -"flood-color" -"flood-opacity" -"font" -"font-face" -"font-face-format" -"font-face-name" -"font-face-src" -"font-face-uri" -"font-family" -"font-size" -"font-size-adjust" -"font-stretch" -"font-style" -"font-variant" -"font-weight" -"foreignObject" -"format" -"from" -"fx" -"fy" -"g" -"g1" -"g2" -"geometricPrecision" -"glyph" -"glyph-name" -"glyph-orientation-horizontal" -"glyph-orientation-vertical" -"glyphRef" -"gradientTransform" -"gradientUnits" -"hanging" -"height" -"help" -"hidden" -"hkern" -"horiz-adv-x" -"horiz-origin-x" -"horiz-origin-y" -"icon" -"id" -"ideographic" -"image" -"image-rendering" -"in" -"in2" -"individual" -"inherit" -"inline" -"inline-table" -"intercept" -"italic" -"k" -"k1" -"k2" -"k3" -"k4" -"kernelMatrix" -"kernelUnitLength" -"kerning" -"keyPoints" -"keySplines" -"keyTimes" -"lang" -"lengthAdjust" -"letter-spacing" -"lighter" -"lighting-color" -"limitingConeAngle" -"line" -"linearGradient" -"linearRGB" -"'line-height'" -"line-through" -"list-item" -"local" -"lr" -"lr-tb" -"ltr" -"marker" -"marker-end" -"markerHeight" -"marker-mid" -"marker-start" -"markerUnits" -"markerWidth" -"mask" -"maskContentUnits" -"maskUnits" -"mathematical" -"max" -"media" -"menu" -"message-box" -"metadata" -"method" -"middle" -"min" -"missing-glyph" -"miter" -"mode" -"move" -"mpath" -"name" -"narrower" -"ne-resize" -"new" -"no-change" -"none" -"nonzero" -"normal" -"n-resize" -"numOctaves" -"nw-resize" -"oblique" -"offset" -"onabort" -"onactivate" -"onbegin" -"onclick" -"onend" -"onerror" -"onfocusin" -"onfocusout" -"onload" -"onmousedown" -"onmousemove" -"onmouseout" -"onmouseover" -"onmouseup" -"onrepeat" -"onresize" -"onscroll" -"onunload" -"onzoom" -"opacity" -"operator" -"optimizeLegibility" -"optimizeQuality" -"optimizeSpeed" -"order" -"orient" -"orientation" -"origin" -"overflow" -"overline" -"overline-position" -"overline-thickness" -"paint" -"painted" -"panose-1" -"path" -"pathLength" -"pattern" -"patternContentUnits" -"patternTransform" -"patternUnits" -"pointer" -"pointer-events" -"points" -"pointsAtX" -"pointsAtY" -"pointsAtZ" -"polygon" -"polyline" -"preserveAlpha" -"preserveAspectRatio" -"primitiveUnits" -"properties" -"r" -"radialGradient" -"radius" -"rect" -"refX" -"refY" -"rendering-intent" -"repeatCount" -"repeatDur" -"requiredExtensions" -"requiredFeatures" -"reset-size" -"restart" -"result" -"rl" -"rl-tb" -"rotate" -"round" -"rtl" -"run-in" -"rx" -"ry" -"scale" -"script" -"scroll" -"see" -"seed" -"semi-condensed" -"semi-expanded" -"se-resize" -"set" -"shape-rendering" -"slope" -"small-caps" -"small-caption" -"spacing" -"Specifying" -"specularConstant" -"specularExponent" -"spreadMethod" -"square" -"s-resize" -"sRGB" -"start" -"startOffset" -"status-bar" -"stdDeviation" -"stemh" -"stemv" -"stitchTiles" -"stop" -"stop-color" -"stop-opacity" -"strikethrough-position" -"strikethrough-thickness" -"string" -string_any="ANY" -string_brackets="[]" -string_cdata="CDATA" -string_col_fallback=":fallback" -string_col_generic=":a" -string_col_include=":include" -string_dashes="--" -string_empty_dblquotes="\"\"" -string_empty="EMPTY" -string_empty_quotes="''" -string_entities="ENTITIES" -string_entity="ENTITY" -string_fixed="#FIXED" -string_id="ID" -string_idref="IDREF" -string_idrefs="IDREFS" -string_implied="#IMPLIED" -string_nmtoken="NMTOKEN" -string_nmtokens="NMTOKENS" -string_notation="NOTATION" -string_parentheses="()" -string_pcdata="#PCDATA" -string_percent="%a" -string_public="PUBLIC" -string_required="#REQUIRED" -string_schema=":schema" -string_system="SYSTEM" -string_ucs4="UCS-4" -string_utf16="UTF-16" -string_utf8="UTF-8" -string_xmlns="xmlns:" -"stroke" -"stroke-dasharray" -"stroke-dashoffset" -"stroke-linecap" -"stroke-linejoin" -"stroke-miterlimit" -"stroke-opacity" -"stroke-width" -"style" -"sub" -"super" -"surfaceScale" -"svg" -"switch" -"sw-resize" -"symbol" -"systemLanguage" -"table" -"table-caption" -"table-cell" -"table-column" -"table-column-group" -"table-footer-group" -"table-header-group" -"table-row" -"table-row-group" -"tableValues" -tag_attlist="" -tag_doctype="" -tag_open_close="" -tag_open_exclamation="" -tag_xml_q="" -"target" -"targetX" -"targetY" -"tb" -"tb-rl" -"text" -"text-after-edge" -"text-anchor" -"text-before-edge" -"text-decoration" -"textLength" -"textPath" -"text-rendering" -"title" -"to" -"transform" -"tref" -"tspan" -"type" -"u1" -"u2" -"ultra-condensed" -"ultra-expanded" -"underline" -"underline-position" -"underline-thickness" -"unicode" -"unicode-bidi" -"unicode-range" -"units-per-em" -"use" -"use-script" -"v-alphabetic" -"values" -"version" -"vert-adv-y" -"vert-origin-x" -"vert-origin-y" -"v-hanging" -"v-ideographic" -"view" -"viewBox" -"viewTarget" -"visibility" -"visible" -"visibleFill" -"visiblePainted" -"visibleStroke" -"vkern" -"v-mathematical" -"wait" -"wider" -"width" -"widths" -"word-spacing" -"w-resize" -"writing-mode" -"x" -"x1" -"x2" -"xChannelSelector" -"x-height" -"xlink:actuate" -"xlink:arcrole" -"xlink:href" -"xlink:role" -"xlink:show" -"xlink:title" -"xlink:type" -#XML -"xml:base" -"xml:lang" -"xml:space" -"y" -"y1" -"y2" -"yChannelSelector" -"z" -"zoomAndPan" diff --git a/testfiles/fuzzer.dict b/testfiles/fuzzer.dict new file mode 100644 index 000000000..7eee0d0a0 --- /dev/null +++ b/testfiles/fuzzer.dict @@ -0,0 +1,521 @@ +"100" +"200" +"300" +"400" +"500" +"600" +"700" +"800" +"900" +"a" +"accent-height" +"accumulate" +"additive" +"after-edge" +"alignment-baseline" +"all" +"alphabetic" +"altGlyph" +"altGlyphDef" +"altGlyphItem" +"amplitude" +"animate" +"animateColor" +"animateMotion" +"animateTransform" +"arabic-form" +"ascent" +attr_encoding=" encoding=\"1\"" +attr_generic=" a=\"1\"" +attr_href=" href=\"1\"" +"attributeName" +"attributeType" +attr_standalone=" standalone=\"no\"" +attr_version=" version=\"1\"" +attr_xml_base=" xml:base=\"1\"" +attr_xml_id=" xml:id=\"1\"" +attr_xml_lang=" xml:lang=\"1\"" +attr_xmlns=" xmlns=\"1\"" +attr_xml_space=" xml:space=\"1\"" +"auto" +"azimuth" +"baseFrequency" +"baseline" +"baseline-shift" +"baseProfile" +"bbox" +"before-edge" +"begin" +"bevel" +"bias" +"bidi-override" +"blink" +"block" +"bold" +"bolder" +"butt" +"by" +"calcMode" +"cap-height" +"caption" +"central" +"circle" +"class" +"clip" +"clip-path" +"clipPath" +"clipPathUnits" +"clip-rule" +"collapse" +"color" +"color-interpolation" +"color-interpolation-filters" +"color-profile" +"color-rendering" +"compact" +"condensed" +"contentScriptType" +"contentStyleType" +"crispEdges" +"crosshair" +"currentColor" +"cursor" +"cx" +"cy" +"d" +"default" +"defs" +"desc" +"descent" +"diffuseConstant" +"direction" +"display" +"divisor" +"dominant-baseline" +"dur" +"dx" +"dy" +"edgeMode" +"elevation" +"ellipse" +"embed" +"enable-background" +"end" +entity_builtin="<" +entity_decimal="" +entity_external="&a;" +entity_hex="" +"e-resize" +"evenodd" +"expanded" +"exponent" +"externalResourcesRequired" +"extra-condensed" +"extra-expanded" +"feBlend" +"feColorMatrix" +"feComponentTransfer" +"feComposite" +"feConvolveMatrix" +"feDiffuseLighting" +"feDisplacementMap" +"feDistantLight" +"feFlood" +"feFuncA" +"feFuncB" +"feFuncG" +"feFuncR" +"feGaussianBlur" +"feImage" +"feMerge" +"feMergeNode" +"feMorphology" +"feOffset" +"fePointLight" +"feSpecularLighting" +"feSpotLight" +"feTile" +"feTurbulence" +"fill" +"fill-opacity" +"fill-rule" +"filter" +"filterRes" +"filterUnits" +"flood-color" +"flood-opacity" +"font" +"font-face" +"font-face-format" +"font-face-name" +"font-face-src" +"font-face-uri" +"font-family" +"font-size" +"font-size-adjust" +"font-stretch" +"font-style" +"font-variant" +"font-weight" +"foreignObject" +"format" +"from" +"fx" +"fy" +"g" +"g1" +"g2" +"geometricPrecision" +"glyph" +"glyph-name" +"glyph-orientation-horizontal" +"glyph-orientation-vertical" +"glyphRef" +"gradientTransform" +"gradientUnits" +"hanging" +"height" +"help" +"hidden" +"hkern" +"horiz-adv-x" +"horiz-origin-x" +"horiz-origin-y" +"icon" +"id" +"ideographic" +"image" +"image-rendering" +"in" +"in2" +"individual" +"inherit" +"inline" +"inline-table" +"intercept" +"italic" +"k" +"k1" +"k2" +"k3" +"k4" +"kernelMatrix" +"kernelUnitLength" +"kerning" +"keyPoints" +"keySplines" +"keyTimes" +"lang" +"lengthAdjust" +"letter-spacing" +"lighter" +"lighting-color" +"limitingConeAngle" +"line" +"linearGradient" +"linearRGB" +"'line-height'" +"line-through" +"list-item" +"local" +"lr" +"lr-tb" +"ltr" +"marker" +"marker-end" +"markerHeight" +"marker-mid" +"marker-start" +"markerUnits" +"markerWidth" +"mask" +"maskContentUnits" +"maskUnits" +"mathematical" +"max" +"media" +"menu" +"message-box" +"metadata" +"method" +"middle" +"min" +"missing-glyph" +"miter" +"mode" +"move" +"mpath" +"name" +"narrower" +"ne-resize" +"new" +"no-change" +"none" +"nonzero" +"normal" +"n-resize" +"numOctaves" +"nw-resize" +"oblique" +"offset" +"onabort" +"onactivate" +"onbegin" +"onclick" +"onend" +"onerror" +"onfocusin" +"onfocusout" +"onload" +"onmousedown" +"onmousemove" +"onmouseout" +"onmouseover" +"onmouseup" +"onrepeat" +"onresize" +"onscroll" +"onunload" +"onzoom" +"opacity" +"operator" +"optimizeLegibility" +"optimizeQuality" +"optimizeSpeed" +"order" +"orient" +"orientation" +"origin" +"overflow" +"overline" +"overline-position" +"overline-thickness" +"paint" +"painted" +"panose-1" +"path" +"pathLength" +"pattern" +"patternContentUnits" +"patternTransform" +"patternUnits" +"pointer" +"pointer-events" +"points" +"pointsAtX" +"pointsAtY" +"pointsAtZ" +"polygon" +"polyline" +"preserveAlpha" +"preserveAspectRatio" +"primitiveUnits" +"properties" +"r" +"radialGradient" +"radius" +"rect" +"refX" +"refY" +"rendering-intent" +"repeatCount" +"repeatDur" +"requiredExtensions" +"requiredFeatures" +"reset-size" +"restart" +"result" +"rl" +"rl-tb" +"rotate" +"round" +"rtl" +"run-in" +"rx" +"ry" +"scale" +"script" +"scroll" +"see" +"seed" +"semi-condensed" +"semi-expanded" +"se-resize" +"set" +"shape-rendering" +"slope" +"small-caps" +"small-caption" +"spacing" +"Specifying" +"specularConstant" +"specularExponent" +"spreadMethod" +"square" +"s-resize" +"sRGB" +"start" +"startOffset" +"status-bar" +"stdDeviation" +"stemh" +"stemv" +"stitchTiles" +"stop" +"stop-color" +"stop-opacity" +"strikethrough-position" +"strikethrough-thickness" +"string" +string_any="ANY" +string_brackets="[]" +string_cdata="CDATA" +string_col_fallback=":fallback" +string_col_generic=":a" +string_col_include=":include" +string_dashes="--" +string_empty_dblquotes="\"\"" +string_empty="EMPTY" +string_empty_quotes="''" +string_entities="ENTITIES" +string_entity="ENTITY" +string_fixed="#FIXED" +string_id="ID" +string_idref="IDREF" +string_idrefs="IDREFS" +string_implied="#IMPLIED" +string_nmtoken="NMTOKEN" +string_nmtokens="NMTOKENS" +string_notation="NOTATION" +string_parentheses="()" +string_pcdata="#PCDATA" +string_percent="%a" +string_public="PUBLIC" +string_required="#REQUIRED" +string_schema=":schema" +string_system="SYSTEM" +string_ucs4="UCS-4" +string_utf16="UTF-16" +string_utf8="UTF-8" +string_xmlns="xmlns:" +"stroke" +"stroke-dasharray" +"stroke-dashoffset" +"stroke-linecap" +"stroke-linejoin" +"stroke-miterlimit" +"stroke-opacity" +"stroke-width" +"style" +"sub" +"super" +"surfaceScale" +"svg" +"switch" +"sw-resize" +"symbol" +"systemLanguage" +"table" +"table-caption" +"table-cell" +"table-column" +"table-column-group" +"table-footer-group" +"table-header-group" +"table-row" +"table-row-group" +"tableValues" +tag_attlist="" +tag_doctype="" +tag_open_close="" +tag_open_exclamation="" +tag_xml_q="" +"target" +"targetX" +"targetY" +"tb" +"tb-rl" +"text" +"text-after-edge" +"text-anchor" +"text-before-edge" +"text-decoration" +"textLength" +"textPath" +"text-rendering" +"title" +"to" +"transform" +"tref" +"tspan" +"type" +"u1" +"u2" +"ultra-condensed" +"ultra-expanded" +"underline" +"underline-position" +"underline-thickness" +"unicode" +"unicode-bidi" +"unicode-range" +"units-per-em" +"use" +"use-script" +"v-alphabetic" +"values" +"version" +"vert-adv-y" +"vert-origin-x" +"vert-origin-y" +"v-hanging" +"v-ideographic" +"view" +"viewBox" +"viewTarget" +"visibility" +"visible" +"visibleFill" +"visiblePainted" +"visibleStroke" +"vkern" +"v-mathematical" +"wait" +"wider" +"width" +"widths" +"word-spacing" +"w-resize" +"writing-mode" +"x" +"x1" +"x2" +"xChannelSelector" +"x-height" +"xlink:actuate" +"xlink:arcrole" +"xlink:href" +"xlink:role" +"xlink:show" +"xlink:title" +"xlink:type" +#XML +"xml:base" +"xml:lang" +"xml:space" +"y" +"y1" +"y2" +"yChannelSelector" +"z" +"zoomAndPan" -- cgit v1.2.3 From ca7192d984bfe92d295e3bb695d48b4b300e5673 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 28 Oct 2017 18:56:01 +0200 Subject: add some doc --- testfiles/CMakeLists.txt | 5 +++++ testfiles/fuzzer.dict | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 923898fc3..62b028729 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -32,7 +32,12 @@ foreach(source ${TEST_SOURCES}) endforeach() add_subdirectory(rendering_tests) + if(WITH_FUZZ) + # to use the fuzzer, make sure you use the right compiler (clang) + # with the right flags -fsanitize=address -fsanitize-coverage=edge,trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep -fno-omit-frame-pointer + # (see libfuzzer doc for info in flags) + # first line is for integration into oss-fuzz https://github.com/google/oss-fuzz add_executable(fuzz fuzzer.cpp) if(EXISTS ${LIB_FUZZING_ENGINE}) target_link_libraries(fuzz inkscape_base -lFuzzingEngine) diff --git a/testfiles/fuzzer.dict b/testfiles/fuzzer.dict index 7eee0d0a0..8fae9bd4e 100644 --- a/testfiles/fuzzer.dict +++ b/testfiles/fuzzer.dict @@ -1,3 +1,7 @@ +# Dictionary for the fuzzer to "guess" faster important words. +# Contains xml keywords and svg element names and attributes. +# It might be useful to remove some of them, maybe. + "100" "200" "300" -- cgit v1.2.3 From 5b7195f3d468c240497565ccf2551da8e0dd7415 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 28 Oct 2017 18:59:06 +0000 Subject: small fix --- testfiles/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt index 62b028729..2f721d820 100644 --- a/testfiles/CMakeLists.txt +++ b/testfiles/CMakeLists.txt @@ -39,7 +39,7 @@ if(WITH_FUZZ) # (see libfuzzer doc for info in flags) # first line is for integration into oss-fuzz https://github.com/google/oss-fuzz add_executable(fuzz fuzzer.cpp) - if(EXISTS ${LIB_FUZZING_ENGINE}) + if(LIB_FUZZING_ENGINE) target_link_libraries(fuzz inkscape_base -lFuzzingEngine) else() target_link_libraries(fuzz inkscape_base -lFuzzer) -- cgit v1.2.3 From 01225070a051a96818fd9d0c218cafb982cdce21 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 29 Oct 2017 13:56:41 +0100 Subject: Fix a bug converting to paths nested LPE with powerstroke --- src/live_effects/lpe-powerstroke.cpp | 2 +- src/path-chemistry.cpp | 8 ++++++-- src/sp-lpe-item.cpp | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp index 6576e6a62..8066ade61 100644 --- a/src/live_effects/lpe-powerstroke.cpp +++ b/src/live_effects/lpe-powerstroke.cpp @@ -255,7 +255,7 @@ LPEPowerStroke::doOnApply(SPLPEItem const* lpeitem) void LPEPowerStroke::doOnRemove(SPLPEItem const* lpeitem) { - if (SP_IS_SHAPE(lpeitem)) { + if (SP_IS_SHAPE(lpeitem) && !keep_paths) { SPLPEItem *item = const_cast(lpeitem); SPCSSAttr *css = sp_repr_css_attr_new (); if (lpeitem->style->fill.isPaintserver()) { diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index 67a742ed2..b3b0c8076 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -398,9 +398,13 @@ sp_item_list_to_curves(const std::vector &items, std::vector& continue; } - + + SPLPEItem *lpeitem = dynamic_cast(item); + if (lpeitem) { + lpeitem->removeAllPathEffects(true); + } + if (group) { - group->removeAllPathEffects(true); std::vector item_list = sp_item_group_item_list(group); std::vector item_to_select; diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index c0688f869..5be950afa 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -604,9 +604,9 @@ void SPLPEItem::removeAllPathEffects(bool keep_paths) } // unlink and delete all references in the list (*it)->unlink(); - delete *it; - it = this->path_effect_list->erase(it); + ++it; } + this->path_effect_list->clear(); this->getRepr()->setAttribute("inkscape:path-effect", NULL); if (!keep_paths) { -- cgit v1.2.3 From bdf23d1d42a1664e5804ab3c29700706d1e29979 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Tue, 31 Oct 2017 01:42:22 +0000 Subject: fix asserts --- src/svg/svg-color.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/svg/svg-color.cpp b/src/svg/svg-color.cpp index 89a5636a8..60cbff3dc 100644 --- a/src/svg/svg-color.cpp +++ b/src/svg/svg-color.cpp @@ -398,7 +398,7 @@ guint32 sp_svg_read_color(gchar const *str, gchar const **end_ptr, guint32 dfl) * this check wrapper. */ gchar const *end = str; guint32 const ret = internal_sp_svg_read_color(str, &end, dfl); - assert(((ret == dfl) && (end == str)) + g_assert(((ret == dfl) && (end == str)) || (((ret & 0xff) == 0) && (str < end))); if (str < end) { @@ -407,7 +407,7 @@ guint32 sp_svg_read_color(gchar const *str, gchar const **end_ptr, guint32 dfl) buf[end - str] = '\0'; gchar const *buf_end = buf; guint32 const check = internal_sp_svg_read_color(buf, &buf_end, 1); - assert(check == ret + g_assert(check == ret && buf_end - buf == end - str); g_free(buf); @@ -425,7 +425,7 @@ guint32 sp_svg_read_color(gchar const *str, gchar const **end_ptr, guint32 dfl) */ static void rgb24_to_css(char *const buf, unsigned const rgb24) { - assert(rgb24 < (1u << 24)); + g_assert(rgb24 < (1u << 24)); /* SVG 1.1 Full allows additional colour names not supported by SVG Tiny, but we don't bother * with them: it's good for these colours to be copyable to non-SVG CSS stylesheets and for -- cgit v1.2.3 From 36216068dee24b54d67a35854d9160a9ec5f76dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A8le=20Duda?= Date: Tue, 31 Oct 2017 10:32:02 +0000 Subject: fix removing class when object to path --- src/path-chemistry.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index b3b0c8076..b824d15c7 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -430,6 +430,8 @@ sp_item_list_to_curves(const std::vector &items, std::vector& Inkscape::XML::Node *parent = item->getRepr()->parent(); // remember id char const *id = item->getRepr()->attribute("id"); + // remember class + char const *class_attr = item->getRepr()->attribute("class"); // remember title gchar *title = item->title(); // remember description @@ -444,6 +446,8 @@ sp_item_list_to_curves(const std::vector &items, std::vector& // restore id repr->setAttribute("id", id); + // restore class + repr->setAttribute("class", class_attr); // add the new repr to the parent parent->appendChild(repr); SPObject* newObj = document->getObjectByRepr(repr); -- cgit v1.2.3 From 8bd2ff33b87bae1db644b473a6e6055118cf7131 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Thu, 2 Nov 2017 18:37:43 +0100 Subject: Make shared library building an option --- CMakeLists.txt | 1 + src/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b01956876..09519c8ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,7 @@ option(WITH_LPETOOL "Compile with LPE Tool and experimental LPEs enabled" ON) option(WITH_OPENMP "Compile with OpenMP support" ON) option(WITH_PROFILING "Turn on profiling" OFF) # Set to true if compiler/linker should enable profiling +option(BUILD_SHARED_LIBS "Compile libraries as shared and not static" ON) option(ENABLE_POPPLER "Compile with support of libpoppler" ON) option(ENABLE_POPPLER_CAIRO "Compile with support of libpoppler-cairo for rendering PDF preview (depends on ENABLE_POPPLER)" ON) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 72d984845..4c56b211d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -540,7 +540,7 @@ set(INKSCAPE_TARGET_LIBS ) # Build everything except main and inkview.c in a shared library. -add_library(inkscape_base SHARED ${inkscape_SRC} ${sp_SRC}) +add_library(inkscape_base ${inkscape_SRC} ${sp_SRC}) if(WITH_DBUS) add_dependencies(inkscape_base inkscape_dbus) -- cgit v1.2.3 From 4e991ba74afefc4595c748a9435fc5a07f1c67d4 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Thu, 2 Nov 2017 19:20:46 +0100 Subject: do not build grid2 in target all --- CMakeLists.txt | 2 +- src/extension/plugins/grid2/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 09519c8ac..a1a68d4e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,7 +148,7 @@ add_definitions(-DORBIT2=1) add_definitions(-DHAVE_CONFIG_H) add_definitions(-DHAVE_CAIRO_PDF=1) # needed for src/libnrtype/Layout-TNG.h add_definitions(-DHAVE_TR1_UNORDERED_SET) # XXX make an option! -if(NOT WIN32) +if(BUILD_SHARED_LIBS AND NOT WIN32) add_definitions(-fPIC) endif() # diff --git a/src/extension/plugins/grid2/CMakeLists.txt b/src/extension/plugins/grid2/CMakeLists.txt index f39e259de..eb200e96e 100644 --- a/src/extension/plugins/grid2/CMakeLists.txt +++ b/src/extension/plugins/grid2/CMakeLists.txt @@ -2,7 +2,7 @@ set(grid_PART_SRCS grid.cpp) include_directories( ${CMAKE_BINARY_DIR}/src ) -add_library(grid2 SHARED ${grid_PART_SRCS}) +add_library(grid2 SHARED EXCLUDE_FROM_ALL ${grid_PART_SRCS}) target_link_libraries(grid2 inkscape_base) -- cgit v1.2.3 From 2479a36d9f59544f8b0978f1577ec8a7613c74be Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Thu, 2 Nov 2017 22:23:24 +0100 Subject: fix build --- CMakeScripts/HelperMacros.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeScripts/HelperMacros.cmake b/CMakeScripts/HelperMacros.cmake index a0bdd9866..54bbf9d09 100644 --- a/CMakeScripts/HelperMacros.cmake +++ b/CMakeScripts/HelperMacros.cmake @@ -29,7 +29,7 @@ macro(add_inkscape_lib name sources) - add_library(${name} ${sources}) + add_library(${name} STATIC ${sources}) # works fine without having the includes # listed is helpful for IDE's (QtCreator/MSVC) -- cgit v1.2.3 From 073da60232635543fe12186d4fcb81a3da15f0f2 Mon Sep 17 00:00:00 2001 From: Simon Wells Date: Fri, 3 Nov 2017 12:25:58 +1300 Subject: change assignment to equality --- src/libnrtype/FontFactory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libnrtype/FontFactory.cpp b/src/libnrtype/FontFactory.cpp index 9c62e5483..90df81261 100644 --- a/src/libnrtype/FontFactory.cpp +++ b/src/libnrtype/FontFactory.cpp @@ -939,7 +939,7 @@ void font_factory::AddFontsDir(char const *utf8dir) conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); # endif FcBool res = FcConfigAppFontAddDir(conf, (FcChar8 const *)dir); - if (res = FcTrue) { + if (res == FcTrue) { g_info("Fonts dir '%s' added successfully.", utf8dir); } else { g_warning("Could not add fonts dir '%s'.", utf8dir); @@ -971,7 +971,7 @@ void font_factory::AddFontFile(char const *utf8file) conf = pango_fc_font_map_get_config(PANGO_FC_FONT_MAP(fontServer)); # endif FcBool res = FcConfigAppFontAddFile(conf, (FcChar8 const *)file); - if (res = FcTrue) { + if (res == FcTrue) { g_info("Font file '%s' added successfully.", utf8file); } else { g_warning("Could not add font file '%s'.", utf8file); -- cgit v1.2.3