Download src/Mod/Draft/draftguitools/gui_layers.py from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 25 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Draft/draftguitools/gui_layers.py
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/src/Mod/Draft/draftguitools/gui_layers.py
-
curl -L -o gui_layers.py https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Draft/draftguitools/gui_layers.py
25 kB
| # SPDX-License-Identifier: LGPL-2.1-or-later | |
| # *************************************************************************** | |
| # * Copyright (c) 2014 Yorik van Havre <yorik@uncreated.net> * | |
| # * Copyright (c) 2020 Eliud Cabrera Castillo <e.cabrera-castillo@tum.de> * | |
| # * Copyright (c) 2025 FreeCAD Project Association * | |
| # * * | |
| # * This file is part of the FreeCAD CAx development system. * | |
| # * * | |
| # * This program is free software; you can redistribute it and/or modify * | |
| # * it under the terms of the GNU Lesser General Public License (LGPL) * | |
| # * as published by the Free Software Foundation; either version 2 of * | |
| # * the License, or (at your option) any later version. * | |
| # * for detail see the LICENCE text file. * | |
| # * * | |
| # * This program is distributed in the hope that it will be useful, * | |
| # * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
| # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
| # * GNU Library General Public License for more details. * | |
| # * * | |
| # * You should have received a copy of the GNU Library General Public * | |
| # * License along with this program; if not, write to the Free Software * | |
| # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * | |
| # * USA * | |
| # * * | |
| # *************************************************************************** | |
| """Provides GUI tools to create Layer objects.""" | |
| ## @package gui_layers | |
| # \ingroup draftguitools | |
| # \brief Provides GUI tools to create Layer objects. | |
| ## \addtogroup draftguitools | |
| # @{ | |
| from PySide.QtCore import QT_TRANSLATE_NOOP | |
| import os | |
| import FreeCAD as App | |
| import FreeCADGui as Gui | |
| import Draft_rc | |
| from draftguitools import gui_base | |
| from draftmake import make_layer | |
| from draftobjects import layer | |
| from draftutils import params | |
| from draftutils import utils | |
| from draftutils.translate import translate | |
| # The module is used to prevent complaints from code checkers (flake8) | |
| bool(Draft_rc.__name__) | |
| def getColorIcon(color): | |
| "returns a QtGui.QIcon from a color 3-float tuple" | |
| from PySide import QtCore, QtGui | |
| c = QtGui.QColor(int(color[0] * 255), int(color[1] * 255), int(color[2] * 255)) | |
| im = QtGui.QImage(48, 48, QtGui.QImage.Format_ARGB32) | |
| im.fill(c) | |
| px = QtGui.QPixmap.fromImage(im) | |
| return QtGui.QIcon(px) | |
| class Layer(gui_base.GuiCommandSimplest): | |
| """GuiCommand to create a Layer object in the document.""" | |
| def __init__(self): | |
| super().__init__(name="Draft_Layer") | |
| def GetResources(self): | |
| """Set icon, menu and tooltip.""" | |
| return { | |
| "Pixmap": "Draft_Layer", | |
| "MenuText": QT_TRANSLATE_NOOP("Draft_Layer", "New Layer"), | |
| "ToolTip": QT_TRANSLATE_NOOP( | |
| "Draft_Layer", | |
| "Adds a layer to the document.\nObjects added to this layer can share the same visual properties.", | |
| ), | |
| } | |
| def Activated(self): | |
| """Execute when the command is called. | |
| It calls the `finish(False)` method of the active Draft command. | |
| """ | |
| super().Activated() | |
| self.doc.openTransaction(translate("draft", "Create layer")) | |
| Gui.addModule("Draft") | |
| Gui.doCommand( | |
| "layer = Draft.make_layer(name=None, line_color=None, shape_color=None, line_width=None, draw_style=None, transparency=None)" | |
| ) | |
| Gui.doCommand("FreeCAD.ActiveDocument.recompute()") | |
| self.doc.commitTransaction() | |
| class AddToLayer(gui_base.GuiCommandNeedsSelection): | |
| """GuiCommand for the Draft_AddToLayer tool.""" | |
| def __init__(self): | |
| super().__init__(name="Draft_AddToLayer") | |
| def GetResources(self): | |
| """Set icon, menu and tooltip.""" | |
| return { | |
| "Pixmap": "Draft_AddToLayer", | |
| "MenuText": QT_TRANSLATE_NOOP("Draft_AddToLayer", "Add to Layer"), | |
| "ToolTip": QT_TRANSLATE_NOOP( | |
| "Draft_AddToLayer", | |
| "Adds selected objects to a layer, or removes them from any layer", | |
| ), | |
| } | |
| def Activated(self): | |
| """Execute when the command is called.""" | |
| super().Activated() | |
| if not hasattr(Gui, "draftToolBar"): | |
| return | |
| self.ui = Gui.draftToolBar | |
| objs = [obj for obj in App.ActiveDocument.Objects if utils.get_type(obj) == "Layer"] | |
| objs.sort(key=lambda obj: obj.Label) | |
| self.objects = [None] + [None] + objs | |
| self.labels = ( | |
| [translate("draft", "Remove From Layer")] | |
| + ["---"] | |
| + [obj.Label for obj in objs] | |
| + ["---"] | |
| + [translate("draft", "Add to New Layer")] | |
| ) | |
| self.icons = ( | |
| [self.ui.getIcon(":/icons/list-remove.svg")] | |
| + [None] | |
| + [obj.ViewObject.Icon for obj in objs] | |
| + [None] | |
| + [self.ui.getIcon(":/icons/list-add.svg")] | |
| ) | |
| self.ui.sourceCmd = self | |
| self.ui.popupMenu(self.labels, self.icons) | |
| def proceed(self, option): | |
| self.ui.sourceCmd = None | |
| if option == self.labels[0]: | |
| # "Remove from layer" | |
| changed = False | |
| for obj in Gui.Selection.getSelection(): | |
| lyr = layer.get_layer(obj) | |
| if lyr is not None: | |
| if not changed: | |
| self.doc.openTransaction(translate("draft", "Remove from layer")) | |
| changed = True | |
| lyr.Proxy.removeObject(lyr, obj) | |
| if changed: | |
| self.doc.commitTransaction() | |
| self.doc.recompute() | |
| return | |
| if option == self.labels[-1]: | |
| # "Add to new layer..." | |
| from PySide import QtWidgets | |
| txt, ok = QtWidgets.QInputDialog.getText( | |
| None, | |
| translate("draft", "New Layer"), | |
| translate("draft", "Layer name"), | |
| text=translate("draft", "Layer", "Object label"), | |
| ) | |
| if not ok: | |
| return | |
| if not txt: | |
| return | |
| self.doc.openTransaction(translate("draft", "Add to new layer")) | |
| lyr = make_layer.make_layer( | |
| name=txt, | |
| line_color=None, | |
| shape_color=None, | |
| line_width=None, | |
| draw_style=None, | |
| transparency=None, | |
| ) | |
| for obj in Gui.Selection.getSelection(): | |
| lyr.Proxy.addObject(lyr, obj) | |
| self.doc.commitTransaction() | |
| self.doc.recompute() | |
| return | |
| # Layer has been selected | |
| i = self.labels.index(option) | |
| lyr = self.objects[i] | |
| self.doc.openTransaction(translate("draft", "Add to layer")) | |
| for obj in Gui.Selection.getSelection(): | |
| lyr.Proxy.addObject(lyr, obj) | |
| self.doc.commitTransaction() | |
| self.doc.recompute() | |
| class LayerManager: | |
| """GuiCommand that displays a Layers manager dialog""" | |
| def GetResources(self): | |
| return { | |
| "Pixmap": "Draft_LayerManager", | |
| "MenuText": QT_TRANSLATE_NOOP("Draft_LayerManager", "Manage Layers"), | |
| "ToolTip": QT_TRANSLATE_NOOP("Draft_LayerManager", "Allows to modify the layers"), | |
| } | |
| def IsActive(self): | |
| """Return True when this command should be available.""" | |
| return bool(App.activeDocument()) | |
| def Activated(self): | |
| from PySide import QtCore, QtGui, QtWidgets | |
| # store changes to be committed | |
| self.deleteList = [] | |
| # create the dialog | |
| self.dialog = Gui.PySideUic.loadUi(":/ui/dialogLayers.ui") | |
| # set nice icons | |
| self.dialog.setWindowIcon(QtGui.QIcon(":/icons/Draft_Layer.svg")) | |
| self.dialog.buttonNew.setIcon(QtGui.QIcon(":/icons/document-new.svg")) | |
| self.dialog.buttonDelete.setIcon(QtGui.QIcon(":/icons/delete.svg")) | |
| self.dialog.buttonSelectAll.setIcon(QtGui.QIcon(":/icons/edit-select-all.svg")) | |
| self.dialog.buttonToggle.setIcon(QtGui.QIcon(":/icons/dagViewVisible.svg")) | |
| self.dialog.buttonIsolate.setIcon(QtGui.QIcon(":/icons/Std_ShowSelection.svg")) | |
| self.dialog.buttonCancel.setIcon(QtGui.QIcon(":/icons/edit_Cancel.svg")) | |
| self.dialog.buttonOK.setIcon(QtGui.QIcon(":/icons/edit_OK.svg")) | |
| # restore window geometry from stored state | |
| w = params.get_param("LayersManagerWidth") | |
| h = params.get_param("LayersManagerHeight") | |
| self.dialog.resize(w, h) | |
| # center the dialog over FreeCAD window | |
| mw = Gui.getMainWindow() | |
| self.dialog.move( | |
| mw.frameGeometry().topLeft() + mw.rect().center() - self.dialog.rect().center() | |
| ) | |
| # connect signals/slots | |
| self.dialog.buttonNew.clicked.connect(self.addItem) | |
| self.dialog.buttonDelete.clicked.connect(self.onDelete) | |
| self.dialog.buttonSelectAll.clicked.connect(self.dialog.tree.selectAll) | |
| self.dialog.buttonToggle.clicked.connect(self.onToggle) | |
| self.dialog.buttonCancel.clicked.connect(self.dialog.reject) | |
| self.dialog.buttonIsolate.clicked.connect(self.onIsolate) | |
| self.dialog.buttonOK.clicked.connect(self.accept) | |
| self.dialog.rejected.connect(self.reject) | |
| # set the model up | |
| self.model = QtGui.QStandardItemModel() | |
| self.dialog.tree.setModel(self.model) | |
| self.dialog.tree.setUniformRowHeights(True) | |
| self.dialog.tree.setItemDelegate(Layers_Delegate()) | |
| self.dialog.tree.setItemsExpandable(False) | |
| self.dialog.tree.setRootIsDecorated(False) # removes spacing in first column | |
| self.dialog.tree.setSelectionMode( | |
| QtWidgets.QTreeView.ExtendedSelection | |
| ) # allow one to select many | |
| # fill the tree view | |
| self.update() | |
| # rock 'n roll!!! | |
| self.dialog.exec_() | |
| def accept(self): | |
| "when OK button is pressed" | |
| doc = App.ActiveDocument | |
| changed = False | |
| trans_name = translate("draft", "Layers change") | |
| # delete layers | |
| for name in self.deleteList: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| doc.removeObject(name) | |
| # apply changes | |
| for row in range(self.model.rowCount()): | |
| # get or create layer | |
| name = self.model.item(row, 1).toolTip() | |
| obj = None | |
| if name: | |
| obj = doc.getObject(name) | |
| if not obj: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| obj = make_layer.make_layer( | |
| name=None, | |
| line_color=None, | |
| shape_color=None, | |
| line_width=None, | |
| draw_style=None, | |
| transparency=None, | |
| ) | |
| vobj = obj.ViewObject | |
| # visibility | |
| checked = self.model.item(row, 0).checkState() == QtCore.Qt.Checked | |
| if checked != vobj.Visibility: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.Visibility = checked | |
| # label | |
| label = self.model.item(row, 1).text() | |
| # Setting Label="" is possible in the Property editor but we avoid it here: | |
| if label and obj.Label != label: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| obj.Label = label | |
| # line width | |
| width = self.model.item(row, 2).data(QtCore.Qt.DisplayRole) | |
| # Setting LineWidth=0 is possible in the Property editor but we avoid it here: | |
| if width and vobj.LineWidth != width: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.LineWidth = width | |
| # draw style | |
| style = self.model.item(row, 3).text() | |
| if style is not None and vobj.DrawStyle != style: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.DrawStyle = style | |
| # line color | |
| color = self.model.item(row, 4).data(QtCore.Qt.UserRole) | |
| if color is not None and vobj.LineColor[:3] != color: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.LineColor = color | |
| # shape color | |
| color = self.model.item(row, 5).data(QtCore.Qt.UserRole) | |
| if color is not None and vobj.ShapeColor[:3] != color: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.ShapeColor = color | |
| # transparency | |
| transparency = self.model.item(row, 6).data(QtCore.Qt.DisplayRole) | |
| if transparency is not None and vobj.Transparency != transparency: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.Transparency = transparency | |
| # line print color | |
| color = self.model.item(row, 7).data(QtCore.Qt.UserRole) | |
| if color is not None and vobj.LinePrintColor[:3] != color: | |
| if not changed: | |
| doc.openTransaction(trans_name) | |
| changed = True | |
| vobj.LinePrintColor = color | |
| # recompute | |
| if changed: | |
| doc.commitTransaction() | |
| doc.recompute() | |
| # exit | |
| self.dialog.reject() | |
| def reject(self): | |
| "when Cancel button is pressed or dialog is closed" | |
| # save dialog size | |
| params.set_param("LayersManagerWidth", self.dialog.width()) | |
| params.set_param("LayersManagerHeight", self.dialog.height()) | |
| return True | |
| def update(self): | |
| "rebuild the model from document contents" | |
| self.model.clear() | |
| # set header | |
| self.model.setHorizontalHeaderLabels( | |
| [ | |
| translate("Draft", "On"), | |
| translate("Draft", "Name"), | |
| translate("Draft", "Line Width"), | |
| translate("Draft", "Draw Style"), | |
| translate("Draft", "Line Color"), | |
| translate("Draft", "Face Color"), | |
| translate("Draft", "Transparency"), | |
| translate("Draft", "Line Print Color"), | |
| ] | |
| ) | |
| self.dialog.tree.header().setDefaultSectionSize(72) | |
| self.dialog.tree.setColumnWidth(0, 32) # on/off column | |
| self.dialog.tree.setColumnWidth(1, 128) # name column | |
| # populate | |
| objs = [obj for obj in App.ActiveDocument.Objects if utils.get_type(obj) == "Layer"] | |
| objs.sort(key=lambda o: o.Label) | |
| for obj in objs: | |
| self.addItem(obj) | |
| def addItem(self, obj=None): | |
| "adds a row to the model" | |
| from PySide import QtCore, QtGui | |
| # create row with default values | |
| onItem = QtGui.QStandardItem() | |
| onItem.setCheckable(True) | |
| onItem.setCheckState(QtCore.Qt.Checked) | |
| nameItem = QtGui.QStandardItem(translate("Draft", "New Layer")) | |
| widthItem = QtGui.QStandardItem() | |
| widthItem.setData(params.get_param_view("DefaultShapeLineWidth"), QtCore.Qt.DisplayRole) | |
| styleItem = QtGui.QStandardItem(utils.DRAW_STYLES[params.get_param("DefaultDrawStyle")]) | |
| lineColorItem = QtGui.QStandardItem() | |
| lineColorItem.setData( | |
| utils.get_rgba_tuple(params.get_param_view("DefaultShapeLineColor"))[:3], | |
| QtCore.Qt.UserRole, | |
| ) | |
| shapeColorItem = QtGui.QStandardItem() | |
| shapeColorItem.setData( | |
| utils.get_rgba_tuple(params.get_param_view("DefaultShapeColor"))[:3], QtCore.Qt.UserRole | |
| ) | |
| transparencyItem = QtGui.QStandardItem() | |
| transparencyItem.setData( | |
| params.get_param_view("DefaultShapeTransparency"), QtCore.Qt.DisplayRole | |
| ) | |
| linePrintColorItem = QtGui.QStandardItem() | |
| linePrintColorItem.setData( | |
| utils.get_rgba_tuple(params.get_param("DefaultPrintColor"))[:3], QtCore.Qt.UserRole | |
| ) | |
| # populate with object data | |
| if obj: | |
| vobj = obj.ViewObject | |
| onItem.setCheckState(QtCore.Qt.Checked if vobj.Visibility else QtCore.Qt.Unchecked) | |
| nameItem.setText(obj.Label) | |
| nameItem.setToolTip(obj.Name) | |
| widthItem.setData(vobj.LineWidth, QtCore.Qt.DisplayRole) | |
| styleItem.setText(vobj.DrawStyle) | |
| lineColorItem.setData(vobj.LineColor[:3], QtCore.Qt.UserRole) | |
| shapeColorItem.setData(vobj.ShapeColor[:3], QtCore.Qt.UserRole) | |
| transparencyItem.setData(vobj.Transparency, QtCore.Qt.DisplayRole) | |
| if hasattr(vobj, "LinePrintColor"): | |
| linePrintColorItem.setData(vobj.LinePrintColor[:3], QtCore.Qt.UserRole) | |
| lineColorItem.setIcon(getColorIcon(lineColorItem.data(QtCore.Qt.UserRole))) | |
| shapeColorItem.setIcon(getColorIcon(shapeColorItem.data(QtCore.Qt.UserRole))) | |
| linePrintColorItem.setIcon(getColorIcon(linePrintColorItem.data(QtCore.Qt.UserRole))) | |
| # append row | |
| self.model.appendRow( | |
| [ | |
| onItem, | |
| nameItem, | |
| widthItem, | |
| styleItem, | |
| lineColorItem, | |
| shapeColorItem, | |
| transparencyItem, | |
| linePrintColorItem, | |
| ] | |
| ) | |
| def onDelete(self): | |
| "delete selected rows" | |
| rows = [] | |
| for index in self.dialog.tree.selectedIndexes(): | |
| if not index.row() in rows: | |
| rows.append(index.row()) | |
| # append layer name to the delete list | |
| if index.column() == 1: | |
| name = self.model.itemFromIndex(index).toolTip() | |
| if name: | |
| if not name in self.deleteList: | |
| self.deleteList.append(name) | |
| # delete rows starting from the lowest, to not alter row indexes while deleting | |
| rows.sort() | |
| rows.reverse() | |
| for row in rows: | |
| self.model.takeRow(row) | |
| def onToggle(self): | |
| "toggle selected layers on/off" | |
| from PySide import QtCore | |
| state = None | |
| for index in self.dialog.tree.selectedIndexes(): | |
| if index.column() == 0: | |
| # get state from first selected row | |
| if state is None: | |
| if self.model.itemFromIndex(index).checkState() == QtCore.Qt.Checked: | |
| state = QtCore.Qt.Unchecked | |
| else: | |
| state = QtCore.Qt.Checked | |
| self.model.itemFromIndex(index).setCheckState(state) | |
| def onIsolate(self): | |
| "isolates the selected layers (turns all the others off" | |
| from PySide import QtCore | |
| onrows = [] | |
| for index in self.dialog.tree.selectedIndexes(): | |
| if not index.row() in onrows: | |
| onrows.append(index.row()) | |
| for row in range(self.model.rowCount()): | |
| if not row in onrows: | |
| self.model.item(row, 0).setCheckState(QtCore.Qt.Unchecked) | |
| if App.GuiUp: | |
| from PySide import QtCore, QtGui, QtWidgets | |
| class Layers_Delegate(QtWidgets.QStyledItemDelegate): | |
| "model delegate" | |
| def __init__(self, parent=None, *args): | |
| QtWidgets.QStyledItemDelegate.__init__(self, parent, *args) | |
| # setEditorData() is triggered several times. | |
| # But we want to show the color dialog only the first time | |
| self.first = True | |
| def createEditor(self, parent, option, index): | |
| if index.column() == 0: # Layer on/off | |
| editor = QtWidgets.QCheckBox(parent) | |
| if index.column() == 1: # Layer name | |
| editor = QtWidgets.QLineEdit(parent) | |
| elif index.column() == 2: # Line width | |
| editor = QtWidgets.QSpinBox(parent) | |
| editor.setMaximum(99) | |
| elif index.column() == 3: # Line style | |
| editor = QtWidgets.QComboBox(parent) | |
| editor.addItems(utils.DRAW_STYLES) | |
| elif index.column() == 4: # Line color | |
| editor = QtWidgets.QLineEdit(parent) | |
| self.first = True | |
| elif index.column() == 5: # Shape color | |
| editor = QtWidgets.QLineEdit(parent) | |
| self.first = True | |
| elif index.column() == 6: # Transparency | |
| editor = QtWidgets.QSpinBox(parent) | |
| editor.setMaximum(100) | |
| elif index.column() == 7: # Line print color | |
| editor = QtWidgets.QLineEdit(parent) | |
| self.first = True | |
| return editor | |
| def setEditorData(self, editor, index): | |
| if index.column() == 0: # Layer on/off | |
| editor.setChecked(index.data()) | |
| elif index.column() == 1: # Layer name | |
| editor.setText(index.data()) | |
| elif index.column() == 2: # Line width | |
| editor.setValue(index.data()) | |
| elif index.column() == 3: # Line style | |
| editor.setCurrentIndex(utils.DRAW_STYLES.index(index.data())) | |
| elif index.column() == 4: # Line color | |
| editor.setText(str(index.data(QtCore.Qt.UserRole))) | |
| if self.first: | |
| c = index.data(QtCore.Qt.UserRole) | |
| color = QtWidgets.QColorDialog.getColor( | |
| QtGui.QColor(int(c[0] * 255), int(c[1] * 255), int(c[2] * 255)) | |
| ) | |
| editor.setText(str(color.getRgbF())) | |
| self.first = False | |
| elif index.column() == 5: # Shape color | |
| editor.setText(str(index.data(QtCore.Qt.UserRole))) | |
| if self.first: | |
| c = index.data(QtCore.Qt.UserRole) | |
| color = QtWidgets.QColorDialog.getColor( | |
| QtGui.QColor(int(c[0] * 255), int(c[1] * 255), int(c[2] * 255)) | |
| ) | |
| editor.setText(str(color.getRgbF())) | |
| self.first = False | |
| elif index.column() == 6: # Transparency | |
| editor.setValue(index.data()) | |
| elif index.column() == 7: # Line print color | |
| editor.setText(str(index.data(QtCore.Qt.UserRole))) | |
| if self.first: | |
| c = index.data(QtCore.Qt.UserRole) | |
| color = QtWidgets.QColorDialog.getColor( | |
| QtGui.QColor(int(c[0] * 255), int(c[1] * 255), int(c[2] * 255)) | |
| ) | |
| editor.setText(str(color.getRgbF())) | |
| self.first = False | |
| def setModelData(self, editor, model, index): | |
| if index.column() == 0: # Layer on/off | |
| model.setData(index, editor.isChecked()) | |
| elif index.column() == 1: # Layer name | |
| model.setData(index, editor.text()) | |
| elif index.column() == 2: # Line width | |
| model.setData(index, editor.value()) | |
| elif index.column() == 3: # Line style | |
| model.setData(index, utils.DRAW_STYLES[editor.currentIndex()]) | |
| elif index.column() == 4: # Line color | |
| model.setData(index, eval(editor.text()), QtCore.Qt.UserRole) | |
| model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text()))) | |
| elif index.column() == 5: # Shape color | |
| model.setData(index, eval(editor.text()), QtCore.Qt.UserRole) | |
| model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text()))) | |
| elif index.column() == 6: # Transparency | |
| model.setData(index, editor.value()) | |
| elif index.column() == 7: # Line prin color | |
| model.setData(index, eval(editor.text()), QtCore.Qt.UserRole) | |
| model.itemFromIndex(index).setIcon(getColorIcon(eval(editor.text()))) | |
| Gui.addCommand("Draft_Layer", Layer()) | |
| Gui.addCommand("Draft_AddToLayer", AddToLayer()) | |
| Gui.addCommand("Draft_LayerManager", LayerManager()) | |
| ## @} | |