Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
873 changes: 873 additions & 0 deletions dwpicker/capture.py

Large diffs are not rendered by default.

26 changes: 23 additions & 3 deletions dwpicker/designer/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
from dwpicker.designer.display import DisplayOptions
from dwpicker.designer.menu import MenuWidget
from dwpicker.designer.attributes import AttributeEditor
from dwpicker.designer.qsplitter import CustomSplitter
from dwpicker.designer.viewportwidget import ViewportWidget


DIRECTION_OFFSETS = {
Expand All @@ -39,6 +41,9 @@ def __init__(self, document, parent=None):
title = "Picker editor - " + document.data['general']['name']
self.setWindowTitle(title)

self.splitter_layout = CustomSplitter(QtCore.Qt.Horizontal)
self.splitter_layout.setObjectName("SplitterLayout")

self.document = document
self.document.shapes_changed.connect(self.update)
self.document.general_option_changed.connect(self.generals_modified)
Expand All @@ -47,6 +52,8 @@ def __init__(self, document, parent=None):

self.display_options = DisplayOptions()

self.viewport_widget = ViewportWidget(self)

self.shape_canvas = ShapeEditCanvas(
self.document, self.display_options)
self.shape_canvas.callContextMenu.connect(self.call_context_menu)
Expand All @@ -67,6 +74,7 @@ def __init__(self, document, parent=None):
self.menu.snapValuesChanged.connect(self.snap_value_changed)
self.menu.buttonLibraryRequested.connect(self.call_library)
self.menu.useSnapToggled.connect(self.use_snap)
self.menu.viewportToggled.connect(self.toggle_viewport)
method = self.shape_canvas.set_lock_background_shape
self.menu.lockBackgroundShapeToggled.connect(method)
self.menu.undoRequested.connect(self.document.undo)
Expand Down Expand Up @@ -115,18 +123,27 @@ def __init__(self, document, parent=None):
self.attribute_editor.panelDoubleClicked.connect(
self.shape_canvas.select_panel_shapes)

self.splitter_layout.addWidget(self.viewport_widget)
self.splitter_layout.addWidget(self.shape_canvas)
self.splitter_layout.setSizes([0, 1])

self.hlayout = QtWidgets.QHBoxLayout()
self.hlayout.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hlayout.setContentsMargins(0, 0, 0, 0)
self.hlayout.addWidget(self.shape_canvas)
self.hlayout.addWidget(self.splitter_layout)
self.hlayout.addWidget(self.attribute_editor)

self.vlayout = QtWidgets.QVBoxLayout(self)
self.vlayout.setObjectName("VerticalLayout")
self.vlayout.setContentsMargins(0, 0, 0, 0)
self.vlayout.setSpacing(0)
self.vlayout.addWidget(self.menu)
self.vlayout.addLayout(self.hlayout)

def toggle_viewport(self):
if self.splitter_layout.splitter_handle:
self.splitter_layout.splitter_handle.toggle_left_widget()

def call_library(self, point):
self.shape_library_menu.move(point)
self.shape_library_menu.show()
Expand Down Expand Up @@ -284,13 +301,16 @@ def create_library_shape(self, path):

def create_shape(
self, template, before=False, position=None, targets=None,
image=False):
image=False,filepath=None):

options = deepcopy(template)
panel = self.shape_canvas.display_options.current_panel
options['panel'] = max((panel, 0))
if image:
filename = get_image_path(self, "Select background image.")
if filepath:
filename = filepath
else:
filename = get_image_path(self, "Select background image.")
if filename:
filename = format_path(filename)
options['image.path'] = filename
Expand Down
6 changes: 6 additions & 0 deletions dwpicker/designer/menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class MenuWidget(QtWidgets.QWidget):
symmetryRequested = QtCore.Signal(bool)
undoRequested = QtCore.Signal()
useSnapToggled = QtCore.Signal(bool)
viewportToggled = QtCore.Signal()

def __init__(self, display_options, parent=None):
super(MenuWidget, self).__init__(parent=parent)
Expand Down Expand Up @@ -89,6 +90,10 @@ def __init__(self, display_options, parent=None):
self.hierarchy.setChecked(state)
self.hierarchy.toggled.connect(self.toggle_hierarchy_display)

self.viewport = QtWidgets.QAction(icon('3d_axis.png'), '', self)
self.viewport.triggered.connect(self.viewportToggled.emit)
self.viewport.setToolTip('Toggle viewport')

self.snap = QtWidgets.QAction(icon('snap.png'), '', self)
self.snap.setToolTip('Snap grid enable')
self.snap.setCheckable(True)
Expand Down Expand Up @@ -202,6 +207,7 @@ def __init__(self, display_options, parent=None):
self.toolbar.addAction(self.lock_bg)
self.toolbar.addAction(self.isolate)
self.toolbar.addAction(self.hierarchy)
self.toolbar.addAction(self.viewport)
self.toolbar.addSeparator()
self.toolbar.addAction(self.snap)
self.toolbar.addWidget(self.snapx)
Expand Down
26 changes: 26 additions & 0 deletions dwpicker/designer/qsplitter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from dwpicker.pyside import QtWidgets, QtCore


class CustomSplitterHandle(QtWidgets.QSplitterHandle):
def __init__(self, orientation, parent):
super(CustomSplitterHandle, self).__init__(orientation, parent)
self.splitter = parent

def toggle_left_widget(self):
"""Collapse or expand the left widget"""
sizes = self.splitter.sizes()
if sizes[0] > 0: # If left widget is visible
self.splitter.setSizes([0, sizes[1]])
else:
self.splitter.setSizes([sizes[1] // 2, sizes[1] // 2])


class CustomSplitter(QtWidgets.QSplitter):
def __init__(self, orientation, parent=None):
super(CustomSplitter, self).__init__(orientation, parent)
self.splitter_handle = None

def createHandle(self):
handle = CustomSplitterHandle(self.orientation(), self)
self.splitter_handle = handle
return handle
Loading