Geom::Point OffsetKnotHolderEntity::knot_get() const { SPOffset const *offset = SP_OFFSET(item); Geom::Point np; sp_offset_top_point(offset,&np); return np; }
void OffsetKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint /*state*/) { SPOffset *offset = SP_OFFSET(item); offset->rad = sp_offset_distance_to_original(offset, p); offset->knot = p; offset->knotSet = true; (static_cast<SPObject *>(offset))->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); }
void SelectionDescriber::_updateMessageFromSelection(Inkscape::Selection *selection) { GSList const *items = selection->itemList(); if (!items) { // no items _context.set(Inkscape::NORMAL_MESSAGE, _when_nothing); } else { SPItem *item = SP_ITEM(items->data); SPObject *layer = selection->desktop()->layerForObject(item); SPObject *root = selection->desktop()->currentRoot(); // Layer name gchar *layer_name; if (layer == root) { layer_name = g_strdup(_("root")); } else { char const *layer_label; bool is_label = false; if (layer->label()) { layer_label = layer->label(); is_label = true; } else { layer_label = layer->defaultLabel(); } char *quoted_layer_label = xml_quote_strdup(layer_label); if (is_label) { layer_name = g_strdup_printf(_("layer <b>%s</b>"), quoted_layer_label); } else { layer_name = g_strdup_printf(_("layer <b><i>%s</i></b>"), quoted_layer_label); } g_free(quoted_layer_label); } // Parent name SPObject *parent = item->parent; gchar const *parent_label = parent->getId(); char *quoted_parent_label = xml_quote_strdup(parent_label); gchar *parent_name = g_strdup_printf(_("<i>%s</i>"), quoted_parent_label); g_free(quoted_parent_label); gchar *in_phrase; guint num_layers = selection->numberOfLayers(); guint num_parents = selection->numberOfParents(); if (num_layers == 1) { if (num_parents == 1) { if (layer == parent) in_phrase = g_strdup_printf(_(" in %s"), layer_name); else in_phrase = g_strdup_printf(_(" in group %s (%s)"), parent_name, layer_name); } else { in_phrase = g_strdup_printf(ngettext(" in <b>%i</b> parents (%s)", " in <b>%i</b> parents (%s)", num_parents), num_parents, layer_name); } } else { in_phrase = g_strdup_printf(ngettext(" in <b>%i</b> layers", " in <b>%i</b> layers", num_layers), num_layers); } g_free (layer_name); g_free (parent_name); if (!items->next) { // one item char *item_desc = item->description(); if (SP_IS_USE(item) && SP_IS_SYMBOL(item->firstChild())) { _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s. %s. %s.", item_desc, in_phrase, _("Convert symbol to group to edit"), _when_selected); } else if (SP_IS_USE(item) || (SP_IS_OFFSET(item) && SP_OFFSET (item)->sourceHref)) { _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s. %s. %s.", item_desc, in_phrase, _("Use <b>Shift+D</b> to look up original"), _when_selected); } else if (SP_IS_TEXT_TEXTPATH(item)) { _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s. %s. %s.", item_desc, in_phrase, _("Use <b>Shift+D</b> to look up path"), _when_selected); } else if (SP_IS_FLOWTEXT(item) && !SP_FLOWTEXT(item)->has_internal_frame()) { _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s. %s. %s.", item_desc, in_phrase, _("Use <b>Shift+D</b> to look up frame"), _when_selected); } else { _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s. %s.", item_desc, in_phrase, _when_selected); } g_free(item_desc); } else { // multiple items int object_count = g_slist_length((GSList *)items); gchar *objects_str = NULL; GSList *terms = collect_terms ((GSList *)items); int n_terms = g_slist_length(terms); if (n_terms == 0) { objects_str = g_strdup_printf ( // this is only used with 2 or more objects ngettext("<b>%i</b> object selected", "<b>%i</b> objects selected", object_count), object_count); } else if (n_terms == 1) { objects_str = g_strdup_printf ( // this is only used with 2 or more objects ngettext("<b>%i</b> object of type <b>%s</b>", "<b>%i</b> objects of type <b>%s</b>", object_count), object_count, (gchar *) terms->data); } else if (n_terms == 2) { objects_str = g_strdup_printf ( // this is only used with 2 or more objects ngettext("<b>%i</b> object of types <b>%s</b>, <b>%s</b>", "<b>%i</b> objects of types <b>%s</b>, <b>%s</b>", object_count), object_count, (gchar *) terms->data, (gchar *) terms->next->data); } else if (n_terms == 3) { objects_str = g_strdup_printf ( // this is only used with 2 or more objects ngettext("<b>%i</b> object of types <b>%s</b>, <b>%s</b>, <b>%s</b>", "<b>%i</b> objects of types <b>%s</b>, <b>%s</b>, <b>%s</b>", object_count), object_count, (gchar *) terms->data, (gchar *) terms->next->data, (gchar *) terms->next->next->data); } else { objects_str = g_strdup_printf ( // this is only used with 2 or more objects ngettext("<b>%i</b> object of <b>%i</b> types", "<b>%i</b> objects of <b>%i</b> types", object_count), object_count, n_terms); } g_slist_free (terms); // indicate all, some, or none filtered gchar *filt_str = NULL; int n_filt = count_filtered((GSList *)items); //all filtered if (n_filt) { filt_str = g_strdup_printf(ngettext("; <i>%d filtered object</i> ", "; <i>%d filtered objects</i> ", n_filt), n_filt); } else { filt_str = g_strdup_printf("%s", ""); } _context.setF(Inkscape::NORMAL_MESSAGE, "%s%s%s. %s.", objects_str, filt_str, in_phrase, _when_selected); if (objects_str) { g_free(objects_str); objects_str = 0; } if (filt_str) { g_free(filt_str); objects_str = 0; } } g_free(in_phrase); } }
MMISSING, JWMISSING, DISTMISSING, ASGMISSING, NULL, NULL, }; /* Extractor index array. */ int extract_idxs[] = { SQLITE_DB_INDX_FIRSTNAME, SQLITE_DB_INDX_FIRSTNAME, SQLITE_DB_INDX_LASTNAME, LATLON, ASG_FIELDS, SQLITE_DB_INDX_CLASS, SQLITE_DB_INDX_COAUTHS, }; /* Simprof offset array. */ size_t sp_offsets[] = { SP_OFFSET(fname), SP_OFFSET(midname), SP_OFFSET(lname), SP_OFFSET(dist), SP_OFFSET(asg), SP_OFFSET(cl), SP_OFFSET(coauths), };