def __init__(self, module: str, *args: Any, **kwargs: Any): widgetFactory = lambda: EditWidget(module, ApplicationType.SINGLETON, "singleton") name = "" sortIndex = 0 icon = None if module in conf.serverConfig["modules"]: config = conf.serverConfig["modules"][module] if config["icon"]: if config["icon"].lower().startswith("http://") or config[ "icon"].lower().startswith("https://"): icon = config["icon"] else: icon = loadIcon(config["icon"]) else: icon = loadIcon("singleton") name = config["name"] sortIndex = config.get("sortIndex", 0) super(SingletonEntryHandler, self).__init__(widgetFactory, descr=name, icon=icon, sortIndex=sortIndex, vanishOnClose=False, *args, **kwargs)
def onTriggered(self) -> None: name = QtCore.QCoreApplication.translate("TreeHandler", "Edit entry") nodes = [] leafs = [] for item in self.parent().selectedItems(): if isinstance(item, self.parent().getLeafItemClass()): leafs.append(item.entryData) else: nodes.append(item.entryData) for entry in leafs: skelType = "leaf" modul = self.parent().module key = entry["key"] widget = lambda: EditWidget( modul, ApplicationType.TREE, key, skelType=skelType) handler = WidgetHandler(widget, descr=name, icon=loadIcon("edit")) handler.stackHandler() for entry in nodes: skelType = "node" modul = self.parent().module key = entry["key"] widget = lambda: EditWidget( modul, ApplicationType.TREE, key, skelType=skelType) handler = WidgetHandler(widget, descr=name, icon=loadIcon("edit")) handler.stackHandler()
def __init__(self, modul, *args, **kwargs): # Config parsen config = conf.serverConfig["modules"][modul] if "columns" in config: if "filter" in config: widgetGen = lambda: CalenderWidget(modul, config["columns"], config["filter"]) else: widgetGen = lambda: CalenderWidget(modul, config["columns"]) else: widgetGen = lambda: CalenderWidget(modul) if config["icon"]: if config["icon"].lower().startswith("http://") or config[ "icon"].lower().startswith("https://"): icon = config["icon"] else: icon = loadIcon(config["icon"]) else: icon = loadIcon(None) super(CalenderCoreHandler, self).__init__(widgetGen, descr=config["name"], icon=icon, vanishOnClose=False, *args, **kwargs) if "views" in config: for view in config["views"]: self.addChild(PredefinedViewHandler(modul, view["name"]))
def __init__(self, module: str, *args: Any, **kwargs: Any): super(WidgetHandler, self).__init__(*args, **kwargs) self.module = module config = conf.serverConfig["modules"][module] if config["icon"]: if config["icon"].lower().startswith("http://") or config[ "icon"].lower().startswith("https://"): icon = config["icon"] else: icon = loadIcon(config["icon"]) else: icon = loadIcon("hierarchy") super(HierarchyCoreHandler, self).__init__(lambda: HierarchyWidget(module), sortIndex=config.get("sortIndex", 0), descr=config["name"], icon=icon, vanishOnClose=False, *args, **kwargs) self.repos: List[Dict[str, Any]] = list() self.tmp_obj = QtCore.QObject() fetchTask = NetworkService.request("/%s/listRootNodes" % module, parent=self.tmp_obj) fetchTask.requestSucceeded.connect(self.setRepos)
def openEditor(self, item: Dict[str, Any], clone: bool = False) -> None: """ Open a new Editor-Widget for the given entity. @param item: Entity to open the editor for @type item: Dict @param clone: Clone the given entry? @type clone: Bool """ myHandler = WidgetHandler.mainWindow.handlerForWidget(self) # Always stack them as my child assert myHandler is not None if clone: icon = loadIcon("clone") if self.list.module in conf.serverConfig["modules"] and "name" in conf.serverConfig["modules"][ self.list.module]: descr = QtCore.QCoreApplication.translate("List", "Clone: %s") % \ conf.serverConfig["modules"][self.list.module]["name"] else: descr = QtCore.QCoreApplication.translate("List", "Clone entry") else: icon = loadIcon("edit") if self.list.module in conf.serverConfig["modules"] and "name" in conf.serverConfig["modules"][ self.list.module]: descr = QtCore.QCoreApplication.translate("List", "Edit: %s") % \ conf.serverConfig["modules"][self.list.module]["name"] else: descr = QtCore.QCoreApplication.translate("List", "Edit entry") modul = self.list.module key = item["key"] handler = WidgetHandler(lambda: EditWidget(modul, ApplicationType.LIST, key, clone=clone), descr, icon) handler.mainWindow.addHandler(handler, myHandler) handler.focus()
def getBreadCrumb(self) -> Any: if self.clone: descr = QtCore.QCoreApplication.translate("EditWidget", "Clone entry") icon = loadIcon("clone") elif self.key or self.applicationType == EditWidget.appSingleton: # We're editing descr = QtCore.QCoreApplication.translate("EditWidget", "Edit entry") icon = loadIcon("edit") else: descr = QtCore.QCoreApplication.translate("EditWidget", "Add entry") icon = loadIcon("add") return descr, icon
def __init__( self, moduleName: str, boneName: str, readOnly: bool, required: bool, destModule: str, multiple: bool, using: Union[str, None] = None, format: str = "$(name)", *args: Any, **kwargs: Any): super(RelationalEditBone, self).__init__(moduleName, boneName, readOnly, required, *args, **kwargs) logger.debug("RelationalEditBone: %r, %r, %r, %r", moduleName, boneName, readOnly, destModule) self.toModule = self.realModule = destModule if self.toModule.endswith("_rootNode"): self.realModule = destModule[:-9] self.multiple = multiple self.using = using self.format = format self.overlay = Overlay(self) self.internalEdits: InternalEdit = None self.blockAutoCompletion = False self.outerLayout = QtWidgets.QVBoxLayout(self.editWidget) # Vbox with Relational entry and optional using edit hboxWidget = QtWidgets.QWidget(self.editWidget) self.hboxLayout = QtWidgets.QHBoxLayout(hboxWidget) self.outerLayout.addWidget(hboxWidget) self.previewIcon = None self.addBtn = QtWidgets.QPushButton( QtCore.QCoreApplication.translate("RelationalEditBone", "Change selection"), parent=hboxWidget) self.addBtn.setIcon(loadIcon("select")) self.addBtn.released.connect(self.onAddBtnReleased) self.entry = QtWidgets.QLineEdit(hboxWidget) self.installAutoCompletion() self.hboxLayout.addWidget(self.entry) self.hboxLayout.addWidget(self.addBtn) if not self.multiple: ## FIXME: AND SELF REQUIRED self.delBtn = QtWidgets.QPushButton("", parent=self.editWidget) self.delBtn.setIcon(loadIcon("cancel")) self.delBtn.released.connect(self.onDelBtnReleased) self.hboxLayout.addWidget(self.delBtn) self.selection: Dict[str, Any] = None self.usingEdit = QtWidgets.QWidget(hboxWidget) self.previewLayout = QtWidgets.QVBoxLayout(self.usingEdit) self.outerLayout.addWidget(self.usingEdit) self.lastErrors = [] # List of errors we receveid in last unserialize call self.safeEval = safeeval.SafeEval() try: self.ast = self.safeEval.compile(self.format) except: self.ast = self.safeEval.compile("value['name']")
def getBreadCrumb(self) -> Any: return ( QtCore.QCoreApplication.translate("TextEditBone", "Text edit"), loadIcon( "press" ) # FIXME: QtGui.QIcon(QtGui.QPixmap(":icons/actions/text-edit.png") )
def __init__( self, tag: str, editMode: int, *args: Any, **kwargs: Any): # print("Tag.init", tag, editMode) super(Tag, self).__init__(*args, **kwargs) self.setLayout(QtWidgets.QHBoxLayout(self)) self.tag = tag self.lblDisplay = QtWidgets.QLabel(tag, self) self.editField = QtWidgets.QLineEdit(tag, self) self.btnDelete = QtWidgets.QPushButton("Löschen", self) self.btnDelete.setIcon(loadIcon("cancel-cross")) self.layout().addWidget(self.lblDisplay) self.layout().addWidget(self.editField) self.layout().addWidget(self.btnDelete) if editMode: self.lblDisplay.hide() self.editField.show() else: self.lblDisplay.show() self.editField.hide() self.editField.editingFinished.connect(self.onEditingFinished) self.btnDelete.released.connect(self.deleteLater) self.lblDisplay.mousePressEvent = self.onEdit
def __init__( self, module: str, *args: Any, **kwargs: Any): # Config parsen ListCoreHandlerConfig = conf.serverConfig["modules"][module] actions = ListCoreHandlerConfig.get("actions") widgetGen = lambda: ListWidget( module, config=conf.serverConfig["modules"][module], fields=ListCoreHandlerConfig.get("columns", list()), filter=ListCoreHandlerConfig.get("filter", dict()), actions=actions ) icon = None if "icon" in ListCoreHandlerConfig and ListCoreHandlerConfig["icon"]: icon = loadIcon(ListCoreHandlerConfig["icon"]) super(ListCoreHandler, self).__init__( widgetGen, descr=ListCoreHandlerConfig["name"], icon=icon, sortIndex=ListCoreHandlerConfig.get("sortIndex", 0), vanishOnClose=False, *args, **kwargs) if "views" in ListCoreHandlerConfig: for view in ListCoreHandlerConfig["views"]: viewConfig = deepcopy(view) viewConfig["handler"] = ListCoreHandlerConfig["handler"] self.addChild(PredefinedViewHandler(module, viewConfig, view["name"]))
def getBreadCrumb(self) -> Tuple[Union[str, None], QtGui.QIcon]: protoWrap = protocolWrapperInstanceSelector.select(self.moduleName) assert protoWrap is not None # FIXME: Bad hack to get the editWidget we belong to skel: Union[Dict[str, Any], None] = None for widget in WidgetHandler.mainWindow.handlerForWidget(self).widgets: if isinstance(widget, EditWidget): if (not widget.key) or widget.clone: # We're adding a new entry if widget.skelType == "leaf": skel = protoWrap.addLeafStructure elif widget.skelType == "node": skel = protoWrap.addNodeStructure else: skel = protoWrap.addStructure else: if widget.skelType == "leaf": skel = protoWrap.editLeafStructure elif widget.skelType == "node": skel = protoWrap.editNodeStructure else: skel = protoWrap.editStructure assert skel is not None assert self.boneName in skel return QtCore.QCoreApplication.translate("ExtendedRelationalBoneSelector", "Select %s") % skel[self.boneName][ "descr"], loadIcon("select")
def _mkEntry(self): self.newIndex += 1 wdg = self.widgetGen() self.addTab(wdg, loadIcon("bookmark-add"), "Neuer Eintrag %s" % self.newIndex) self.btn.setMinimumSize(0, 0) return wdg
def __init__(self, parent: QtWidgets.QWidget = None): super(HierarchyAddAction, self).__init__( loadIcon("add"), QtCore.QCoreApplication.translate("Hierarchy", "Add entry"), parent) self.triggered.connect(self.onTriggered) self.setShortcut(QtGui.QKeySequence.New) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
def __init__(self, parent: QtWidgets.QWidget = None): super(HierarchyCloneAction, self).__init__( loadIcon("clone"), QtCore.QCoreApplication.translate("HierarchyHandler", "Clone entry"), parent) self.triggered.connect(self.onTriggered) self.setShortcut(QtGui.QKeySequence.SaveAs) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
def __init__(self, parent: QtCore.QObject = None): super(HierarchyDeleteAction, self).__init__( loadIcon("delete"), QtCore.QCoreApplication.translate("Hierarchy", "Delete entry"), parent) self.triggered.connect(self.onTriggered) self.setShortcut(QtGui.QKeySequence.Delete) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
def __init__(self, parent: QtWidgets.QWidget = None): super(TreeEditAction, self).__init__( loadIcon("edit"), QtCore.QCoreApplication.translate("TreeHandler", "Edit entry"), parent) self.setShortcut(QtGui.QKeySequence.Open) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut) self.triggered.connect(self.onTriggered)
def __init__(self, widgetFactory: Callable, *args: Any, **kwargs: Any): super(TaskEntryHandler, self).__init__(widgetFactory, icon=loadIcon(":icons/menu/tasks.png"), vanishOnClose=True, *args, **kwargs) self.setText(0, QtCore.QCoreApplication.translate("tasks", "Tasks"))
def __init__(self, account: Dict[str, Any], parent: QtWidgets.QWidget = None) -> None: super(AccountItem, self).__init__( loadIcon("personae"), #QtGui.QIcon(":icons/profile.png"), account["name"], parent=parent) self.account = account
def __init__(self, parent: QtCore.QObject = None): super(FileDownloadAction, self).__init__( loadIcon("download"), QtCore.QCoreApplication.translate("FileHandler", "Download files"), parent) self.triggered.connect(self.onTriggered) self.setShortcut(QtGui.QKeySequence.Save) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
def __init__(self, parent: QtWidgets.QWidget = None): super(TreeMkDirAction, self).__init__( loadIcon("folder"), QtCore.QCoreApplication.translate("TreeHandler", "New directory"), parent) self.triggered.connect(self.onTriggered) self.setShortcut("SHIFT+Ctrl+N") self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)
def __init__(self, parent: QtWidgets.QWidget = None): super(TreeDeleteAction, self).__init__( loadIcon("delete"), QtCore.QCoreApplication.translate("TreeHandler", "Delete"), parent) self.parent().itemSelectionChanged.connect(self.onItemSelectionChanged) self.triggered.connect(self.onTriggered) self.setShortcut(QtGui.QKeySequence.Delete) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut) self.setEnabled(False)
def __init__(self, data: Dict[str, Any], parent: Union[QtWidgets.QListWidget, None] = None): super(NodeItem, self).__init__(loadIcon("folder"), str(data["name"]), parent=parent, type=1200) self.entryData = data self.setToolTip('<strong>{0}</strong>'.format(data["name"]))
def onTriggered(self) -> None: name = QtCore.QCoreApplication.translate("TreeHandler", "Add leaf entry") modul = self.parent().tree.module node = self.parent().getNode() widget = lambda: EditWidget( modul, ApplicationType.TREE, node=node, skelType="leaf") handler = WidgetHandler(widget, descr=name, icon=loadIcon("add")) #event.emit(QtCore.pyqtSignal('stackHandler(PyQt_PyObject)'), handler) handler.stackHandler()
def __init__(self, parent: QtWidgets.QWidget = None): super(TreeSimpleRenameAction, self).__init__( loadIcon("rename"), QtCore.QCoreApplication.translate("TreeHandler", "Rename entry"), parent) self.parent().itemSelectionChanged.connect(self.onItemSelectionChanged) self.triggered.connect(self.onTriggered) self.setShortcut("F2") self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut) self.setEnabled(False)
def __init__(self, module: str, *args: Any, **kwargs: Any): config = conf.serverConfig["modules"][module] if config["icon"]: if config["icon"].lower().startswith("http://") or config[ "icon"].lower().startswith("https://"): icon = config["icon"] else: icon = loadIcon(config["icon"]) else: icon = loadIcon("tree.svg") super(TreeBaseHandler, self).__init__(lambda: TreeWidget(module), sortIndex=config.get("sortIndex", 0), descr=config["name"], icon=icon, vanishOnClose=False, *args, **kwargs) logger.debug("TreeBaseHandler name: %r", config["name"])
def onTriggered(self) -> None: parent = self.parent() for item in parent.hierarchy.selectedItems(): modul = self.parent().getModul() key = item.entryData["key"] widget = lambda: EditWidget(modul, ApplicationType.HIERARCHY, key) handler = WidgetHandler(widget, descr=QtCore.QCoreApplication.translate( "Hierarchy", "Edit entry"), icon=loadIcon("edit")) handler.stackHandler()
def __init__(self, widgetGen): super().__init__() self.widgetGen = widgetGen self.setLayout(QtWidgets.QVBoxLayout(self)) self.btnAdd = QtWidgets.QPushButton("Hinzufügen", self) self.btnAdd.setIcon(loadIcon("add")) self.layout().addWidget(self.btnAdd) self.btnAdd.released.connect( self.onAddButtonClicked) # TODO: check if this is working # self.btnAdd.released.connect(lambda *args, **kwargs: self.genTag("", True)) # FIXME: Lambda self.btnAdd.show()
def onItemDoubleClicked(self, item: HierarchyItem, col: int) -> None: """ Open a editor for this entry. :param item: the item which was clicked :param col: the column index """ handler = utils.WidgetHandler( lambda: EditWidget(self.module, ApplicationType.HIERARCHY, item.entryData["key"]), descr=QtCore.QCoreApplication.translate("Hierarchy", "Edit entry"), icon=loadIcon("edit")) handler.stackHandler()
def _mkEntry(self): containterWdg = QtWidgets.QWidget() containterWdg.setLayout(QtWidgets.QHBoxLayout()) wdg = self.widgetGen() containterWdg.layout().addWidget(wdg) removeBtn = QtWidgets.QPushButton() removeBtn.setIcon(loadIcon("cancel")) containterWdg.layout().addWidget(removeBtn) self.layout().addWidget(containterWdg) idx = self.children().index(containterWdg) removeBtn.released.connect(lambda: self.removeLine(idx)) return wdg
def __init__(self, parent: QtWidgets.QWidget = None): super(TreeSwitchViewAction, self).__init__( loadIcon( "transfer" ), ## FIXME: QtGui.QIcon(":icons/actions/switch_list.png"), QtCore.QCoreApplication.translate("TreeHandler", "Switch View"), parent) self.triggered.connect(self.onTriggered) self.setShortcut("F8") if not self.parent().isIconMode(): self.setIcon(QtGui.QIcon(":icons/actions/switch_icon.svg")) self.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut)