mirror of https://github.com/KLayout/klayout.git
WIP: mouse tracking on instance, box, path and text editor.
This commit is contained in:
parent
316cf77175
commit
655c8c7658
|
|
@ -1010,9 +1010,7 @@ PartialShapeFinder::visit_cell (const db::Cell &cell, const db::Box &search_box,
|
|||
|
||||
PartialService::PartialService (db::Manager *manager, lay::LayoutView *view, lay::Dispatcher *root)
|
||||
: QObject (),
|
||||
lay::ViewService (view->view_object_widget ()),
|
||||
lay::Editable (view),
|
||||
lay::Plugin (view),
|
||||
lay::EditorServiceBase (view),
|
||||
db::Object (manager),
|
||||
mp_view (view),
|
||||
mp_root (root),
|
||||
|
|
@ -1531,13 +1529,16 @@ PartialService::wheel_event (int /*delta*/, bool /*horizonal*/, const db::DPoint
|
|||
bool
|
||||
PartialService::mouse_move_event (const db::DPoint &p, unsigned int buttons, bool prio)
|
||||
{
|
||||
clear_mouse_cursors ();
|
||||
|
||||
if (m_dragging) {
|
||||
|
||||
set_cursor (lay::Cursor::size_all);
|
||||
|
||||
m_alt_ac = ac_from_buttons (buttons);
|
||||
|
||||
// drag the vertex or edge/segment
|
||||
// @@@ Provide object snapping also when moving edges, provide mouse tracking
|
||||
// drag the vertex or edge/segment
|
||||
if (is_single_point_selection ()) {
|
||||
// for a single selected point, m_start is the original position and we snap the target -
|
||||
// thus, we can bring the point on grid or to an object's edge or vertex
|
||||
|
|
|
|||
|
|
@ -25,10 +25,8 @@
|
|||
#ifndef HDR_edtPartialService
|
||||
#define HDR_edtPartialService
|
||||
|
||||
#include "layEditable.h"
|
||||
#include "layEditorServiceBase.h"
|
||||
#include "layObjectInstPath.h"
|
||||
#include "layLayoutView.h"
|
||||
#include "layPlugin.h"
|
||||
#include "layViewObject.h"
|
||||
#include "layRubberBox.h"
|
||||
#include "laySnap.h"
|
||||
|
|
@ -140,9 +138,7 @@ struct EdgeWithIndex
|
|||
*/
|
||||
class PartialService
|
||||
: public QObject,
|
||||
public lay::ViewService,
|
||||
public lay::Editable,
|
||||
public lay::Plugin,
|
||||
public lay::EditorServiceBase,
|
||||
public db::Object
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
#include "layTipDialog.h"
|
||||
#include "layEditorOptionsPages.h"
|
||||
#include "layDispatcher.h"
|
||||
#include "layLayoutView.h"
|
||||
#include "edtPlugin.h"
|
||||
#include "edtConfig.h"
|
||||
#include "edtService.h"
|
||||
|
|
|
|||
|
|
@ -728,9 +728,18 @@ BoxService::update_marker ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
BoxService::do_mouse_move_inactive (const db::DPoint &p)
|
||||
{
|
||||
lay::PointSnapToObjectResult snap_details = snap2_details (p);
|
||||
mouse_cursor_from_snap_details (snap_details);
|
||||
}
|
||||
|
||||
void
|
||||
BoxService::do_mouse_move (const db::DPoint &p)
|
||||
{
|
||||
do_mouse_move_inactive (p);
|
||||
|
||||
set_cursor (lay::Cursor::cross);
|
||||
m_p2 = snap2 (p);
|
||||
update_marker ();
|
||||
|
|
@ -826,9 +835,18 @@ TextService::do_activated ()
|
|||
return true; // start editing immediately
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
TextService::do_mouse_move_inactive (const db::DPoint &p)
|
||||
{
|
||||
lay::PointSnapToObjectResult snap_details = snap2_details (p);
|
||||
mouse_cursor_from_snap_details (snap_details);
|
||||
}
|
||||
|
||||
void
|
||||
TextService::do_mouse_move (const db::DPoint &p)
|
||||
{
|
||||
do_mouse_move_inactive (p);
|
||||
|
||||
set_cursor (lay::Cursor::cross);
|
||||
m_text.trans (db::DTrans (m_rot, snap2 (p) - db::DPoint ()));
|
||||
update_marker ();
|
||||
|
|
@ -1010,9 +1028,18 @@ PathService::set_last_point (const db::DPoint &p)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
PathService::do_mouse_move_inactive (const db::DPoint &p)
|
||||
{
|
||||
lay::PointSnapToObjectResult snap_details = snap2_details (p);
|
||||
mouse_cursor_from_snap_details (snap_details);
|
||||
}
|
||||
|
||||
void
|
||||
PathService::do_mouse_move (const db::DPoint &p)
|
||||
{
|
||||
do_mouse_move_inactive (p);
|
||||
|
||||
set_cursor (lay::Cursor::cross);
|
||||
if (m_points.size () >= 2) {
|
||||
set_last_point (p);
|
||||
|
|
@ -1454,9 +1481,18 @@ InstService::make_cell (const lay::CellView &cv)
|
|||
return std::pair<bool, db::cell_index_type> (true, inst_cell_index);
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
InstService::do_mouse_move_inactive (const db::DPoint &p)
|
||||
{
|
||||
clear_mouse_cursors ();
|
||||
add_mouse_cursor (snap (p));
|
||||
}
|
||||
|
||||
void
|
||||
InstService::do_mouse_move (const db::DPoint &p)
|
||||
{
|
||||
do_mouse_move_inactive (p);
|
||||
|
||||
set_cursor (lay::Cursor::cross);
|
||||
|
||||
const lay::CellView &cv = view ()->cellview (m_cv_index);
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ public:
|
|||
virtual lay::PropertiesPage *properties_page (db::Manager *manager, QWidget *parent);
|
||||
virtual void do_begin_edit (const db::DPoint &p);
|
||||
virtual void do_mouse_move (const db::DPoint &p);
|
||||
virtual void do_mouse_move_inactive (const db::DPoint &p);
|
||||
virtual bool do_mouse_click (const db::DPoint &p);
|
||||
virtual void do_finish_edit ();
|
||||
virtual void do_cancel_edit ();
|
||||
|
|
@ -147,6 +148,7 @@ public:
|
|||
virtual void do_begin_edit (const db::DPoint &p);
|
||||
virtual void do_mouse_transform (const db::DPoint &p, db::DFTrans trans);
|
||||
virtual void do_mouse_move (const db::DPoint &p);
|
||||
virtual void do_mouse_move_inactive (const db::DPoint &p);
|
||||
virtual bool do_mouse_click (const db::DPoint &p);
|
||||
virtual void do_finish_edit ();
|
||||
virtual void do_cancel_edit ();
|
||||
|
|
@ -178,6 +180,7 @@ public:
|
|||
virtual void do_begin_edit (const db::DPoint &p);
|
||||
virtual void do_mouse_move (const db::DPoint &p);
|
||||
virtual bool do_mouse_click (const db::DPoint &p);
|
||||
virtual void do_mouse_move_inactive (const db::DPoint &p);
|
||||
virtual void do_finish_edit ();
|
||||
virtual void do_cancel_edit ();
|
||||
virtual bool do_activated ();
|
||||
|
|
@ -210,6 +213,7 @@ public:
|
|||
|
||||
virtual lay::PropertiesPage *properties_page (db::Manager *manager, QWidget *parent);
|
||||
virtual void do_begin_edit (const db::DPoint &p);
|
||||
virtual void do_mouse_move_inactive (const db::DPoint &p);
|
||||
virtual void do_mouse_move (const db::DPoint &p);
|
||||
virtual bool do_mouse_click (const db::DPoint &p);
|
||||
virtual void do_mouse_transform (const db::DPoint &p, db::DFTrans trans);
|
||||
|
|
|
|||
Loading…
Reference in New Issue