本文整理汇总了C++中inkscape::Selection::singleItem方法的典型用法代码示例。如果您正苦于以下问题:C++ Selection::singleItem方法的具体用法?C++ Selection::singleItem怎么用?C++ Selection::singleItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inkscape::Selection
的用法示例。
在下文中一共展示了Selection::singleItem方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onSelectionChanged
void
LivePathEffectEditor::onApply()
{
Inkscape::Selection *sel = _getSelection();
if ( sel && !sel->isEmpty() ) {
SPItem *item = sel->singleItem();
if ( item && SP_IS_LPE_ITEM(item) ) {
SPDocument *doc = current_desktop->doc();
const Util::EnumData<LivePathEffect::EffectType>* data = combo_effecttype.get_active_data();
if (!data) return;
// If item is a SPRect, convert it to path first:
if ( SP_IS_RECT(item) ) {
sp_selected_path_to_curves(current_desktop, false);
item = sel->singleItem(); // get new item
}
LivePathEffect::Effect::createAndApply(data->key.c_str(), doc, item);
sp_document_done(doc, SP_VERB_DIALOG_LIVE_PATH_EFFECT,
_("Create and apply path effect"));
lpe_list_locked = false;
onSelectionChanged(sel);
}
}
}
示例2: setup
void LpeTool::setup() {
PenTool::setup();
Inkscape::Selection *selection = this->desktop->getSelection();
SPItem *item = selection->singleItem();
this->sel_changed_connection.disconnect();
this->sel_changed_connection =
selection->connectChanged(sigc::bind(sigc::ptr_fun(&sp_lpetool_context_selection_changed), (gpointer)this));
this->shape_editor = new ShapeEditor(this->desktop);
lpetool_context_switch_mode(this, Inkscape::LivePathEffect::INVALID_LPE);
lpetool_context_reset_limiting_bbox(this);
lpetool_create_measuring_items(this);
// TODO temp force:
this->enableSelectionCue();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (item) {
this->shape_editor->set_item(item);
}
if (prefs->getBool("/tools/lpetool/selcue")) {
this->enableSelectionCue();
}
}
示例3:
/*
* Attempts to perform the construction of the given type (i.e., to apply the corresponding LPE) to
* a single selected item. Returns whether we succeeded.
*/
bool
lpetool_try_construction(LpeTool *lc, Inkscape::LivePathEffect::EffectType const type)
{
Inkscape::Selection *selection = lc->desktop->getSelection();
SPItem *item = selection->singleItem();
// TODO: should we check whether type represents a valid geometric construction?
if (item && SP_IS_LPE_ITEM(item) && Inkscape::LivePathEffect::Effect::acceptsNumClicks(type) == 0) {
Inkscape::LivePathEffect::Effect::createAndApply(type, lc->desktop->getDocument(), item);
return true;
}
return false;
}
示例4: onDown
void LivePathEffectEditor::onDown()
{
Inkscape::Selection *sel = _getSelection();
if ( sel && !sel->isEmpty() ) {
SPItem *item = sel->singleItem();
if ( item && SP_IS_LPE_ITEM(item) ) {
sp_lpe_item_down_current_path_effect(SP_LPE_ITEM(item));
sp_document_done ( sp_desktop_document (current_desktop), SP_VERB_DIALOG_LIVE_PATH_EFFECT,
_("Move path effect down") );
effect_list_reload(SP_LPE_ITEM(item));
}
}
}
示例5: spdc_endpoint_snap_free
void spdc_endpoint_snap_free(ToolBase const * const ec, Geom::Point& p, boost::optional<Geom::Point> &start_of_line, guint const /*state*/)
{
SPDesktop *dt = ec->desktop;
SnapManager &m = dt->namedview->snap_manager;
Inkscape::Selection *selection = dt->getSelection();
// selection->singleItem() is the item that is currently being drawn. This item will not be snapped to (to avoid self-snapping)
// TODO: Allow snapping to the stationary parts of the item, and only ignore the last segment
m.setup(dt, true, selection->singleItem());
Inkscape::SnapCandidatePoint scp(p, Inkscape::SNAPSOURCE_NODE_HANDLE);
if (start_of_line) {
scp.addOrigin(*start_of_line);
}
Inkscape::SnappedPoint sp = m.freeSnap(scp);
p = sp.getPoint();
m.unSetup();
}
示例6: ShapeEditor
static void
sp_lpetool_context_setup(SPEventContext *ec)
{
SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(ec);
if (((SPEventContextClass *) lpetool_parent_class)->setup)
((SPEventContextClass *) lpetool_parent_class)->setup(ec);
Inkscape::Selection *selection = sp_desktop_selection (ec->desktop);
SPItem *item = selection->singleItem();
lc->sel_changed_connection.disconnect();
lc->sel_changed_connection =
selection->connectChanged(sigc::bind(sigc::ptr_fun(&sp_lpetool_context_selection_changed), (gpointer)lc));
lc->shape_editor = new ShapeEditor(ec->desktop);
lpetool_context_switch_mode(lc, Inkscape::LivePathEffect::INVALID_LPE);
lpetool_context_reset_limiting_bbox(lc);
lpetool_create_measuring_items(lc);
// TODO temp force:
ec->enableSelectionCue();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (item) {
lc->shape_editor->set_item(item, SH_NODEPATH);
lc->shape_editor->set_item(item, SH_KNOTHOLDER);
}
if (prefs->getBool("/tools/lpetool/selcue")) {
ec->enableSelectionCue();
}
lc->_lpetool_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
}
示例7: sp_selection_move_screen
//.........这里部分代码省略.........
break;
case GDK_less:
case GDK_comma:
if (MOD__ALT) {
gint mul = 1 + gobble_key_events(
get_group0_keyval(&event->key), 0); // with any mask
sp_selection_scale_screen(selection, -2*mul);
} else if (MOD__CTRL) {
sp_selection_scale_times(selection, 0.5);
} else {
gint mul = 1 + gobble_key_events(
get_group0_keyval(&event->key), 0); // with any mask
sp_selection_scale(selection, -offset*mul);
}
ret = TRUE;
break;
case GDK_greater:
case GDK_period:
if (MOD__ALT) {
gint mul = 1 + gobble_key_events(
get_group0_keyval(&event->key), 0); // with any mask
sp_selection_scale_screen(selection, 2*mul);
} else if (MOD__CTRL) {
sp_selection_scale_times(selection, 2);
} else {
gint mul = 1 + gobble_key_events(
get_group0_keyval(&event->key), 0); // with any mask
sp_selection_scale(selection, offset*mul);
}
ret = TRUE;
break;
case GDK_Return:
if (MOD__CTRL_ONLY) {
if (selection->singleItem()) {
SPItem *clicked_item = selection->singleItem();
if ( SP_IS_GROUP(clicked_item) ||
SP_IS_BOX3D(clicked_item)) { // enter group or a 3D box
desktop->setCurrentLayer(reinterpret_cast<SPObject *>(clicked_item));
sp_desktop_selection(desktop)->clear();
} else {
SP_EVENT_CONTEXT(sc)->desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Selected object is not a group. Cannot enter."));
}
}
ret = TRUE;
}
break;
case GDK_BackSpace:
if (MOD__CTRL_ONLY) {
sp_select_context_up_one_layer(desktop);
ret = TRUE;
}
break;
case GDK_s:
case GDK_S:
if (MOD__SHIFT_ONLY) {
if (!selection->isEmpty()) {
seltrans->increaseState();
}
ret = TRUE;
}
break;
case GDK_g:
case GDK_G:
if (MOD__SHIFT_ONLY) {
sp_selection_to_guides(desktop);
ret = true;