- code cleanup in Tools
- some GUI structure optimization's
This commit is contained in:
@@ -46,57 +46,66 @@ class KeySensitiveListView(QtWidgets.QTreeView):
|
||||
event.ignore()
|
||||
|
||||
def dragMoveEvent(self, event):
|
||||
self.setDropIndicatorShown(True)
|
||||
if event.mimeData().hasUrls:
|
||||
event.accept()
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
def dropEvent(self, event):
|
||||
if event.mimeData().hasUrls:
|
||||
event.setDropAction(QtCore.Qt.CopyAction)
|
||||
drop_indicator = self.dropIndicatorPosition()
|
||||
|
||||
m = event.mimeData()
|
||||
if m.hasUrls:
|
||||
event.accept()
|
||||
for url in event.mimeData().urls():
|
||||
|
||||
for url in m.urls():
|
||||
self.filename = str(url.toLocalFile())
|
||||
|
||||
if self.filename == "":
|
||||
self.app.inform.emit("Open cancelled.")
|
||||
# file drop from outside application
|
||||
if drop_indicator == QtWidgets.QAbstractItemView.OnItem:
|
||||
if self.filename == "":
|
||||
self.app.inform.emit("Open cancelled.")
|
||||
else:
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.grb_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_gerber,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.exc_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_excellon,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.gcode_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_gcode,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.svg_list:
|
||||
object_type = 'geometry'
|
||||
self.app.worker_task.emit({'fcn': self.app.import_svg,
|
||||
'params': [self.filename, object_type, None]})
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.dxf_list:
|
||||
object_type = 'geometry'
|
||||
self.app.worker_task.emit({'fcn': self.app.import_dxf,
|
||||
'params': [self.filename, object_type, None]})
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.prj_list:
|
||||
# self.app.open_project() is not Thread Safe
|
||||
self.app.open_project(self.filename)
|
||||
else:
|
||||
event.ignore()
|
||||
else:
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.grb_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_gerber,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.exc_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_excellon,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.gcode_list:
|
||||
self.app.worker_task.emit({'fcn': self.app.open_gcode,
|
||||
'params': [self.filename]})
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.svg_list:
|
||||
object_type = 'geometry'
|
||||
self.app.worker_task.emit({'fcn': self.app.import_svg,
|
||||
'params': [self.filename, object_type, None]})
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.dxf_list:
|
||||
object_type = 'geometry'
|
||||
self.app.worker_task.emit({'fcn': self.app.import_dxf,
|
||||
'params': [self.filename, object_type, None]})
|
||||
|
||||
if self.filename.lower().rpartition('.')[-1] in self.app.prj_list:
|
||||
# self.app.open_project() is not Thread Safe
|
||||
self.app.open_project(self.filename)
|
||||
else:
|
||||
event.ignore()
|
||||
pass
|
||||
else:
|
||||
event.ignore()
|
||||
|
||||
|
||||
class TreeItem:
|
||||
"""
|
||||
Item of a tree model
|
||||
@@ -221,9 +230,15 @@ class ObjectCollection(QtCore.QAbstractItemModel):
|
||||
|
||||
### View
|
||||
self.view = KeySensitiveListView(app)
|
||||
self.view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||
self.view.setModel(self)
|
||||
|
||||
self.view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||
self.view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||
# self.view.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
|
||||
# self.view.setDragEnabled(True)
|
||||
# self.view.setAcceptDrops(True)
|
||||
# self.view.setDropIndicatorShown(True)
|
||||
|
||||
font = QtGui.QFont()
|
||||
font.setPixelSize(12)
|
||||
font.setFamily("Seagoe UI")
|
||||
@@ -501,13 +516,13 @@ class ObjectCollection(QtCore.QAbstractItemModel):
|
||||
if not self.hasIndex(row, column, parent):
|
||||
return QtCore.QModelIndex()
|
||||
|
||||
if not parent.isValid():
|
||||
parent_item = self.root_item
|
||||
else:
|
||||
parent_item = parent.internalPointer()
|
||||
# if not parent.isValid():
|
||||
# parent_item = self.root_item
|
||||
# else:
|
||||
# parent_item = parent.internalPointer()
|
||||
parent_item = parent.internalPointer() if parent.isValid() else self.root_item
|
||||
|
||||
child_item = parent_item.child(row)
|
||||
|
||||
if child_item:
|
||||
return self.createIndex(row, column, child_item)
|
||||
else:
|
||||
@@ -587,39 +602,27 @@ class ObjectCollection(QtCore.QAbstractItemModel):
|
||||
"setData() --> Could not remove the old object name from auto-completer model list")
|
||||
|
||||
obj.build_ui()
|
||||
self.app.inform.emit("Object renamed from %s to %s" % (old_name, new_name))
|
||||
self.app.inform.emit("Object renamed from %s to %s" % (old_name, new_name))
|
||||
|
||||
return True
|
||||
|
||||
def supportedDropActions(self):
|
||||
return Qt.MoveAction
|
||||
|
||||
def flags(self, index):
|
||||
default_flags = QtCore.QAbstractItemModel.flags(self, index)
|
||||
|
||||
if not index.isValid():
|
||||
return 0
|
||||
return Qt.ItemIsEnabled | default_flags
|
||||
|
||||
# Prevent groups from selection
|
||||
if not index.internalPointer().obj:
|
||||
return Qt.ItemIsEnabled
|
||||
else:
|
||||
return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
|
||||
return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable | \
|
||||
Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled
|
||||
|
||||
return QtWidgets.QAbstractItemModel.flags(self, index)
|
||||
|
||||
# def data(self, index, role=Qt.Qt.DisplayRole):
|
||||
# if not index.isValid() or not 0 <= index.row() < self.rowCount():
|
||||
# return QtCore.QVariant()
|
||||
# row = index.row()
|
||||
# if role == Qt.Qt.DisplayRole:
|
||||
# return self.object_list[row].options["name"]
|
||||
# if role == Qt.Qt.DecorationRole:
|
||||
# return self.icons[self.object_list[row].kind]
|
||||
# # if role == Qt.Qt.CheckStateRole:
|
||||
# # if row in self.checked_indexes:
|
||||
# # return Qt.Qt.Checked
|
||||
# # else:
|
||||
# # return Qt.Qt.Unchecked
|
||||
|
||||
def print_list(self):
|
||||
for obj in self.get_list():
|
||||
print(obj)
|
||||
# return QtWidgets.QAbstractItemModel.flags(self, index)
|
||||
|
||||
def append(self, obj, active=False):
|
||||
FlatCAMApp.App.log.debug(str(inspect.stack()[1][3]) + " --> OC.append()")
|
||||
@@ -629,8 +632,8 @@ class ObjectCollection(QtCore.QAbstractItemModel):
|
||||
# Check promises and clear if exists
|
||||
if name in self.promises:
|
||||
self.promises.remove(name)
|
||||
FlatCAMApp.App.log.debug("Promised object %s became available." % name)
|
||||
FlatCAMApp.App.log.debug("%d promised objects remaining." % len(self.promises))
|
||||
# FlatCAMApp.App.log.debug("Promised object %s became available." % name)
|
||||
# FlatCAMApp.App.log.debug("%d promised objects remaining." % len(self.promises))
|
||||
# Prevent same name
|
||||
while name in self.get_names():
|
||||
## Create a new name
|
||||
|
||||
Reference in New Issue
Block a user