本文整理汇总了C++中SPDesktop::applyCurrentOrToolStyle方法的典型用法代码示例。如果您正苦于以下问题:C++ SPDesktop::applyCurrentOrToolStyle方法的具体用法?C++ SPDesktop::applyCurrentOrToolStyle怎么用?C++ SPDesktop::applyCurrentOrToolStyle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SPDesktop
的用法示例。
在下文中一共展示了SPDesktop::applyCurrentOrToolStyle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
static void sp_box3d_drag(Box3DContext &bc, guint /*state*/)
{
SPDesktop *desktop = bc.desktop;
if (!bc.item) {
if (Inkscape::have_viable_layer(desktop, bc._message_context) == false) {
return;
}
// Create object
SPBox3D *box3d = 0;
box3d = SPBox3D::createBox3D((SPItem *)desktop->currentLayer());
// Set style
desktop->applyCurrentOrToolStyle(box3d, "/tools/shapes/3dbox", false);
bc.item = box3d;
// TODO: Incorporate this in box3d-side.cpp!
for (int i = 0; i < 6; ++i) {
Box3DSide *side = Box3DSide::createBox3DSide(box3d);
guint desc = Box3D::int_to_face(i);
Box3D::Axis plane = (Box3D::Axis) (desc & 0x7);
plane = (Box3D::is_plane(plane) ? plane : Box3D::orth_plane_or_axis(plane));
side->dir1 = Box3D::extract_first_axis_direction(plane);
side->dir2 = Box3D::extract_second_axis_direction(plane);
side->front_or_rear = (Box3D::FrontOrRear) (desc & 0x8);
// Set style
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring descr = "/desktop/";
descr += box3d_side_axes_string(side);
descr += "/style";
Glib::ustring cur_style = prefs->getString(descr);
bool use_current = prefs->getBool("/tools/shapes/3dbox/usecurrent", false);
if (use_current && !cur_style.empty()) {
// use last used style
side->setAttribute("style", cur_style.data());
} 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);
}
side->updateRepr(); // calls box3d_side_write() and updates, e.g., the axes string description
}
box3d_set_z_orders(SP_BOX3D(bc.item));
bc.item->updateRepr();
// TODO: It would be nice to show the VPs during dragging, but since there is no selection
// at this point (only after finishing the box), we must do this "manually"
/* bc._vpdrag->updateDraggers(); */
desktop->canvas->forceFullRedrawAfterInterruptions(5);
}
g_assert(bc.item);
SPBox3D *box = SP_BOX3D(bc.item);
box->orig_corner0 = bc.drag_origin_proj;
box->orig_corner7 = bc.drag_ptC_proj;
box3d_check_for_swapped_coords(box);
/* we need to call this from here (instead of from box3d_position_set(), for example)
because z-order setting must not interfere with display updates during undo/redo */
box3d_set_z_orders (box);
box3d_position_set(box);
// status text
bc._message_context->setF(Inkscape::NORMAL_MESSAGE, _("<b>3D Box</b>; with <b>Shift</b> to extrude along the Z axis"));
}