def mouseDoubleClickEvent(self, e): if e.button() != QtCore.Qt.LeftButton: return settings = FLSettings() if not settings.readBoolEntry("ebcomportamiento/FLTableDoubleClick", False): self.recordChoosed.emit()
def loadControls(self): if self.pushButtonCancel: self.pushButtonCancel.hide() if self.bottomToolbar: self.toolButtonClose.hide() self.bottomToolbar = QtWidgets.QFrame() self.bottomToolbar.setMinimumSize(self.iconSize) self.bottomToolbar.layout = QtWidgets.QHBoxLayout() self.bottomToolbar.setLayout(self.bottomToolbar.layout) self.bottomToolbar.layout.setContentsMargins(0, 0, 0, 0) self.bottomToolbar.layout.setSpacing(0) self.bottomToolbar.layout.addStretch() self.bottomToolbar.setFocusPolicy(QtCore.Qt.NoFocus) self.layout.addWidget(self.bottomToolbar) # if self.layout: # self.layout = None # Limpiamos la toolbar sizePolicy = QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Policy(0), QtWidgets.QSizePolicy.Policy(0)) sizePolicy.setHeightForWidth(True) pbSize = self.iconSize settings = FLSettings() if settings.readBoolEntry("application/isDebuggerMode", False): pushButtonExport = QtWidgets.QToolButton() pushButtonExport.setObjectName("pushButtonExport") pushButtonExport.setSizePolicy(sizePolicy) pushButtonExport.setMinimumSize(pbSize) pushButtonExport.setMaximumSize(pbSize) pushButtonExport.setIcon(QtGui.QIcon(filedir("../share/icons", "gtk-properties.png"))) pushButtonExport.setShortcut(QKeySequence(self.tr("F3"))) pushButtonExport.setWhatsThis("Exportar a XML(F3)") pushButtonExport.setToolTip("Exportar a XML(F3)") pushButtonExport.setFocusPolicy(QtCore.Qt.NoFocus) self.bottomToolbar.layout.addWidget(pushButtonExport) pushButtonExport.clicked.connect(self.exportToXml) spacer = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.bottomToolbar.layout.addItem(spacer) if not self.pushButtonCancel: self.pushButtonCancel = QtWidgets.QToolButton() self.pushButtonCancel.setObjectName("pushButtonCancel") self.pushButtonCancel.clicked.connect(self.close) self.pushButtonCancel.setSizePolicy(sizePolicy) self.pushButtonCancel.setMaximumSize(pbSize) self.pushButtonCancel.setMinimumSize(pbSize) self.pushButtonCancel.setIcon( QtGui.QIcon(filedir("../share/icons", "gtk-stop.png"))) # self.pushButtonCancel.setFocusPolicy(QtCore.Qt.StrongFocus) # self.pushButtonCancel.setFocus() self.pushButtonCancel.setShortcut(QKeySequence(self.tr("Esc"))) self.pushButtonCancel.setWhatsThis("Cerrar formulario (Esc)") self.pushButtonCancel.setToolTip("Cerrar formulario (Esc)") self.bottomToolbar.layout.addWidget(self.pushButtonCancel) self.setFocusPolicy(QtCore.Qt.NoFocus)
def closeEvent(self, evnt): dialog = QtWidgets.QDialog() dialog.setWindowTitle("Salir de Pineboo") dialog.setWindowIcon(QtGui.QIcon('share/icons/pineboo-logo-16.png')) dialog.setWindowModality(QtCore.Qt.ApplicationModal) _layout = QtWidgets.QVBoxLayout() dialog.setLayout(_layout) buttonBox = QtWidgets.QDialogButtonBox() OKButton = QtWidgets.QPushButton("&Aceptar") cancelButton = QtWidgets.QPushButton("&Cancelar") buttonBox.addButton(OKButton, QtWidgets.QDialogButtonBox.AcceptRole) buttonBox.addButton( cancelButton, QtWidgets.QDialogButtonBox.RejectRole) label = QtWidgets.QLabel("¿ Desea salir ?") _layout.addWidget(label) _layout.addWidget(buttonBox) OKButton.clicked.connect(dialog.accept) cancelButton.clicked.connect(dialog.reject) if not dialog.exec_(): evnt.ignore() else: sett_ = FLSettings() sett_.writeEntryList("application/mainForm/tabsOpened", self.openTabs)
def doTransaction(self, cursor): if not cursor or not self.db(): return False settings = FLSettings() if self.transaction_ == 0: if settings.readBoolEntry("application/isDebuggerMode", False): logger.warn("Iniciando Transacción... %s", self.transaction_) if self.transaction(): self.savePoint(self.transaction_) self.lastActiveCursor_ = cursor self.transaction_ = self.transaction_ + 1 # cursor.d.transactionsOpened_.push(self.transaction_) cursor.d.transactionsOpened_.append(self.transaction_) return True else: logger.warn( "doTransaction: Fallo al intentar iniciar la transacción") return False else: if settings.readBoolEntry("application/isDebuggerMode", False): logger.warn("Creando punto de salvaguarda %s", self.transaction_) self.savePoint(self.transaction_) self.transaction_ = self.transaction_ + 1 cursor.d.transactionsOpened_.append(self.transaction_) # push
def content(n, b, only_path=False): global warn_ b.readSettings() util = FLUtil() separator = "\\" if util.getOS().find("WIN") > -1 else "/" for info in b.dirs_: content_path = info.path_ + separator + n if info.active_ and os.path.exists(content_path): if not warn_: warn_ = FLStaticLoaderWarning() timer = QtCore.QTimer() settings = FLSettings() if not warn_.warns_ and settings.readBoolEntry("ebcomportamiento/SLInterface", True): timer.singleShot(500, warn_.popupWarnings) if not warn_.paths_: timer.singleShot(1500, warn_.updateScripts) msg = "%s -> ...%s" % (n, info.path_[0:40]) if not msg in warn_.warns_: warn_.warns_.append(msg) warn_.paths_.append("%s:%s" % (n, info.path_)) if settings.readBoolEntry("ebcomportamiento/SLConsola", False): logger.warn("CARGA ESTATICA ACTIVADA:%s -> %s", n, info.path_) if only_path: return content_path else: from pineboolib.pncontrolsfactory import aqApp return aqApp.db().managerModules().contentFS(info.path_ + separator + n) return None
def changeStateDockAreas(self): visible_ = self.actionModulos.isChecked() if visible_: sett_ = FLSettings() sizeA_ = sett_.readEntry("application/mainForm/AreasSize", None) if sizeA_ is not None: self.dockAreasTab.resize(sizeA_) self.dockAreasTab.setVisible(visible_)
def changeStateDockFavoritos(self): visible_ = self.actionFavoritos.isChecked() if visible_: sett_ = FLSettings() sizeF_ = sett_.readEntry("application/mainForm/FavoritesSize", None) if sizeF_ is not None: self.dockFavoritos.resize(sizeF_) self.dockFavoritos.setVisible(visible_)
def doCommit(self, cur, notify=True): if not cur and not self.db(): return False if not notify: cur.autocommit.emit() if self.transaction_ > 0: if cur.d.transactionsOpened_: trans = cur.d.transactionsOpened_.pop() if not trans == self.transaction_: logger.warn( "El cursor va a terminar la transacción %s pero la última que inició es la %s", self.transaction_, trans) else: logger.warn( "El cursor va a terminar la transacción %s pero no ha iniciado ninguna", self.transaction_) self.transaction_ = self.transaction_ - 1 else: return True if self.transaction_ == 0: settings = FLSettings() if settings.readBoolEntry("application/isDebuggerMode", False): logger.warn("Terminando transacción... %s", self.transaction_) try: # self.conn.commit() self.releaseSavePoint(self.transaction_) self.commitTransaction() self.lastActiveCursor_ = None if notify: cur.d.modeAccess_ = FLSqlCursor.Browse # aqApp.emitTransactionEnd(cur) return True except Exception as e: logger.error( "doCommit: Fallo al intentar terminar transacción: %s", e) return False else: logger.info("Liberando punto de salvaguarda %s...", self.transaction_) if self.transaction_ == 1: self.releaseSavePoint(self.transaction_) if notify: cur.d.modeAccess_ = FLSqlCursor.Browse return True self.releaseSavePoint(self.transaction_) if notify: cur.d.modeAccess_ = FLSqlCursor.Browse return True
def show(self): if not self.tiempo_ini: self.tiempo_ini = time.time() super(FLFormDB, self).show() tiempo_fin = time.time() settings = FLSettings() if settings.readBoolEntry("application/isDebuggerMode", False): self.logger.warn("INFO:: Tiempo de carga de %s: %.3fs %s (iface %s)" % (self.actionName_, tiempo_fin - self.tiempo_ini, self, self.iface)) self.tiempo_ini = None
def changeStateDockFavoritos(self): visible_ = self.actionFavoritos.isChecked() if visible_: sett_ = FLSettings() sizeF_ = sett_.readEntry("application/mainForm/FavoritesSize", None) if sizeF_ is not None: self.dockFavoritos.resize(sizeF_) self.dockFavoritos.setVisible(visible_)
def restoreOpenedTabs(self): # Cargamos pestañas abiertas sett_ = FLSettings() tabsOpened_ = sett_.readListEntry("application/mainForm/tabsOpened") if tabsOpened_: for t in tabsOpened_: for k, module in sorted(pineboolib.project.modules.items()): if hasattr(module, "mainform"): if t in module.mainform.actions: module.mainform.actions[t].run() break
def restoreOpenedTabs(self): # Cargamos pestañas abiertas sett_ = FLSettings() tabsOpened_ = sett_.readListEntry("application/mainForm/tabsOpened") if tabsOpened_: for t in tabsOpened_: for k, module in sorted(pineboolib.project.modules.items()): if hasattr(module, "mainform"): if t in module.mainform.actions: module.mainform.actions[t].run() break
def readSettings(self): settings = FLSettings() self.enabled_ = settings.readBoolEntry("%senabled" % self.key_, False) self.dirs_.clear() dirs = settings.readListEntry("%sdirs" % self.key_) i = 0 while i < len(dirs): active_ = dirs[i] i += 1 path_ = dirs[i] i += 1 self.dirs_.append(AQStaticDirInfo(active_, path_))
def checkDependencies(dict_, exit=True): from importlib import import_module dependences = [] error = [] for key in dict_.keys(): if not key in DEPENDECIE_CHECKED: try: mod_ = import_module(key) mod_ver = None if key == "ply": version_check("ply", mod_.__version__, '3.9') elif key == "Pillow": version_check("Pillow", mod_.__version__, '5.1.0') elif key == "PyQt5.QtCore": version_check("PyQt5", mod_.QT_VERSION_STR, '5.9') mod_ver = mod_.QT_VERSION_STR if not mod_ver: mod_ver = getattr(mod_, "__version__", None) or getattr(mod_, "version", "???") settings = FLSettings() if settings.readBoolEntry("application/isDebuggerMode", False): logger.warn("Versión de %s: %s", key, mod_ver) except ImportError: dependences.append(dict_[key]) error.append(traceback.format_exc()) DEPENDECIE_CHECKED.append(key) msg = "" if len(dependences) > 0: logger.warn("HINT: Dependencias incumplidas:") for dep in dependences: logger.warn("HINT: Instale el paquete %s" % dep) msg += "Instale el paquete %s.\n%s" % (dep, error) if exit: if getattr(pineboolib.project, "_DGI", None): if pineboolib.project._DGI.useDesktop() and pineboolib.project._DGI.localDesktop(): try: ret = QtWidgets.QMessageBox.warning(None, "Pineboo - Dependencias Incumplidas -", msg, QtWidgets.QMessageBox.Ok) except Exception: logger.error("No se puede mostrar el diálogo de dependecias incumplidas") if not getattr(sys, 'frozen', False): sys.exit(32) return len(dependences) == 0
def create_app(DGI): """Create a MainForm using the DGI or the core.""" from PyQt5 import QtGui, QtWidgets from pineboolib.utils import filedir import pineboolib app = QtWidgets.QApplication(sys.argv) if DGI.localDesktop(): noto_fonts = [ "NotoSans-BoldItalic.ttf", "NotoSans-Bold.ttf", "NotoSans-Italic.ttf", "NotoSans-Regular.ttf"] for fontfile in noto_fonts: QtGui.QFontDatabase.addApplicationFont( filedir("../share/fonts/Noto_Sans", fontfile)) sett_ = FLSettings() styleA = sett_.readEntry("application/style", None) if styleA is None: styleA = "Fusion" QtWidgets.QApplication.setStyle(styleA) fontA = sett_.readEntry("application/font", None) if fontA is None: font = QtGui.QFont('Noto Sans', 9) font.setBold(False) font.setItalic(False) else: font = QtGui.QFont(fontA[0], int(fontA[1]), int(fontA[2]), fontA[3] == "true") QtWidgets.QApplication.setFont(font) if DGI.mobilePlatform(): pineboolib.main.Project.mainFormName = "Mobile" # Es necesario importarlo a esta altura, QApplication tiene que ser # construido antes que cualquier widget mainForm = importlib.import_module("pineboolib.plugins.mainform.%s.%s" % ( pineboolib.main.Project.mainFormName.lower(), pineboolib.main.Project.mainFormName.lower())) else: mainForm = DGI.mainForm() # mainForm = getattr(module_, "MainForm")() # from pineboolib import mainForm return app, mainForm
def loadProfiles(self): """ Actualiza el ComboBox de los perfiles """ self.ui.cbProfiles.clear() if not os.path.exists(self.profileDir): os.mkdir(filedir(self.profileDir)) files = [f for f in os.listdir(self.profileDir) if os.path.isfile(os.path.join(self.profileDir, f))] for file in files: fileName = file.split(".")[0] self.ui.cbProfiles.addItem(fileName) settings = FLSettings() last_profile = settings.readEntry("DBA/last_profile", None) if last_profile: self.ui.cbProfiles.setCurrentText(last_profile)
def writeSettingEntry(self, key, value): """ Establece el valor de un setting en el directorio de instalación de AbanQ @param key. Clave identificadora del setting @param Valor del setting @return Indicador de si la escritura del settings se realiza correctamente """ FLSettings().writeEntry(key, value)
def create_app(DGI): """Create a MainForm using the DGI or the core.""" from PyQt5 import QtGui, QtWidgets, QtCore from pineboolib.utils import filedir import pineboolib app = QtWidgets.QApplication(sys.argv) app.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) pineboolib.base_dir = filedir(".") # Almacena base_dir para luego usarlo sobre filedir pineboolib._DGI = DGI # Almacenamos de DGI seleccionado para futuros usos if DGI.localDesktop(): noto_fonts = [ "NotoSans-BoldItalic.ttf", "NotoSans-Bold.ttf", "NotoSans-Italic.ttf", "NotoSans-Regular.ttf"] for fontfile in noto_fonts: QtGui.QFontDatabase.addApplicationFont( filedir("../share/fonts/Noto_Sans", fontfile)) sett_ = FLSettings() styleA = sett_.readEntry("application/style", None) if styleA is None: styleA = "Fusion" app.setStyle(styleA) fontA = sett_.readEntry("application/font", None) if fontA is None: if DGI.mobilePlatform(): font = QtGui.QFont('Noto Sans', 14) else: font = QtGui.QFont('Noto Sans', 9) font.setBold(False) font.setItalic(False) else: font = QtGui.QFont(fontA[0], int(fontA[1]), int(fontA[2]), fontA[3] == "true") app.setFont(font) return app
def open(self): """ Abre la conexión seleccionada """ fileName = os.path.join(self.profileDir, "%s.xml" % self.ui.cbProfiles.currentText()) tree = ET.parse(fileName) root = tree.getroot() last_profile = self.ui.cbProfiles.currentText() if last_profile not in (None, ""): settings = FLSettings() settings.writeEntry("DBA/last_profile", last_profile) for profile in root.findall("profile-data"): if getattr(profile.find("password"), "text", None): psP = profile.find("password").text psP = base64.b64decode(psP).decode() if psP: if self.ui.lePassword.text() != psP: QMessageBox.information(self.ui, "Pineboo", "Contraseña Incorrecta") return self.database = root.find("database-name").text for db in root.findall("database-server"): self.hostname = db.find("host").text self.portnumber = db.find("port").text self.driveralias = db.find("type").text for credentials in root.findall("database-credentials"): self.username = credentials.find("username").text ps = credentials.find("password").text if ps: self.password = base64.b64decode(ps).decode() else: self.password = "" if self.pNSqlDrivers.isDesktopFile(self.driveralias): self.database = "tempdata/%s.sqlite3" % self.database self.close()
def show_connection_dialog(project, app): """Show the connection dialog, and configure the project accordingly.""" from pineboolib import dlgconnect connection_window = dlgconnect.DlgConnect(project._DGI) connection_window.load() connection_window.show() ret = app.exec_() if connection_window.close(): # if connection_window.ruta: # prjpath = connection_window.ruta # print("Cargando desde ruta %r " % prjpath) # project.load(prjpath) # elif connection_window.database: if connection_window.database: logger.info("Cargando credenciales") project.deleteCache = FLSettings().readBoolEntry("ebcomportamiento/deleteCache", False) project.parseProject = FLSettings().readBoolEntry("ebcomportamiento/parseProject", False) project.load_db(connection_window.database, connection_window.hostname, connection_window.portnumber, connection_window.username, connection_window.password, connection_window.driveralias) if not connection_window.ruta and not connection_window.database: sys.exit(ret)
def readSettingEntry(self, key, def_=u"", ok=False): """ Lee el valor de un setting en el directorio de la instalación de AbanQ @param key. Clave identificadora del setting @param def. Valor por defecto en el caso de que el setting no esté establecido @param ok. Indicador de que la lectura es correcta @return Valor del setting """ value = FLSettings().readEntry(key, def_, ok) if value is None: value = def_ return value
def writeSettings(self): settings = FLSettings() settings.writeEntry("%senabled" % self.key_, self.enabled_) dirs = [] active_dirs = [] for info in self.dirs_: dirs.append(str(info.active_)) dirs.append(info.path_) if info.active_: active_dirs.append(info.path_) settings.writeEntry("%sdirs" % self.key_, dirs) settings.writeEntry("%sactiveDirs" % self.key_, ",".join(active_dirs))
def loadState(self): sett_ = FLSettings() viewFavorites_ = sett_.readBoolEntry("application/mainForm/viewFavorites", True) viewAreas_ = sett_.readBoolEntry("application/mainForm/viewAreas", True) sizeF_ = sett_.readEntry("application/mainForm/FavoritesSize", None) sizeA_ = sett_.readEntry("application/mainForm/AreasSize", None) sizeMF_ = sett_.readEntry("application/mainForm/mainFormSize", None) if sizeF_ is not None: self.dockFavoritos.resize(sizeF_) if sizeA_ is not None: self.dockAreasTab.resize(sizeA_) if sizeMF_ is not None: self.resize(sizeMF_) else: self.showMaximized() """
def loadPreferences(self): sett_ = FLSettings() viewFavorites_ = sett_.readBoolEntry( "application/mainForm/viewFavorites", True) viewAreas_ = sett_.readBoolEntry("application/mainForm/viewAreas", True) sizeF_ = sett_.readEntry("application/mainForm/FavoritesSize", None) sizeA_ = sett_.readEntry("application/mainForm/AreasSize", None) sizeMF_ = sett_.readEntry("application/mainForm/mainFormSize", None) if sizeF_ is not None: self.dockFavoritos.resize(sizeF_) if sizeA_ is not None: self.dockAreasTab.resize(sizeA_) if sizeMF_ is not None: self.resize(sizeMF_) else: self.showMaximized() self.dockFavoritos.setVisible(viewFavorites_) self.actionFavoritos.setChecked(viewFavorites_) self.dockAreasTab.setVisible(viewAreas_) self.actionModulos.setChecked(viewAreas_)
def readSettingEntry(self, key, def_=u"", ok=False): value = FLSettings().readEntry(key, def_, ok) if value == None: value = def_ return value
def saveState(self): sett_ = FLSettings() sett_.writeEntryList("application/mainForm/tabsOpened", self.openTabs) sett_.writeEntry("application/mainForm/viewFavorites", self.dockFavoritos.isVisible()) sett_.writeEntry("application/mainForm/FavoritesSize", self.dockFavoritos.size()) sett_.writeEntry("application/mainForm/viewAreas", self.dockAreasTab.isVisible()) sett_.writeEntry("application/mainForm/AreasSize", self.dockFavoritos.size()) sett_.writeEntry("application/mainForm/mainFormSize", self.size())
def process_layout_box(xmllayout, widget=widget, mode="box"): for c in xmllayout: try: row = int(c.get("row")) col = int(c.get("column")) except Exception: row = col = None if c.tag == "property": # Ya se han procesado previamente ... continue elif c.tag == "widget": new_widget = createWidget(c.get("class"), parent=widget) loadWidget(c, new_widget, parent, origWidget) path = c.find("./property[@name='name']/cstring").text if not pineboolib.project._DGI.localDesktop(): origWidget.ui_[path] = new_widget if pineboolib.project._DGI.localDesktop(): new_widget.show() if mode == "box": if pineboolib.project._DGI.localDesktop(): widget.layout.addWidget(new_widget) elif mode == "grid": if pineboolib.project._DGI.localDesktop(): rowSpan = c.get("rowspan") or 1 colSpan = c.get("colspan") or 1 widget.layout.addWidget(new_widget, row, col, int(rowSpan), int(colSpan)) elif c.tag == "spacer": sH = None sV = None hPolicy = QtWidgets.QSizePolicy.Fixed vPolicy = QtWidgets.QSizePolicy.Fixed orient_ = None policy_ = None policy_name = None spacer_name = None for p in c.findall("property"): pname, value = loadProperty(p) if pname == "sizeHint": width = value.width() height = value.height() elif pname == "orientation": orient_ = 1 if value == 1 else 2 # 1 Horizontal, 2 Vertical elif pname == "sizeType": #print("Convirtiendo %s a %s" % (p.find("enum").text, value)) from pineboolib.fllegacy.FLSettings import FLSettings settings = FLSettings() if settings.readBoolEntry("ebcomportamiento/spacerLegacy", False): policy_ = QtWidgets.QSizePolicy.Policy(value) else: policy_ = 7 # Siempre Expanding elif pname == "name": spacer_name = value if orient_ == 1: hPolicy = policy_ else: vPolicy = policy_ # print("Nuevo spacer %s (%s,%s,(%s,%s), %s, %s" % (spacer_name, "Horizontal" if orient_ == # 1 else "Vertical", policy_name, width, height, hPolicy, vPolicy)) new_spacer = QtWidgets.QSpacerItem(width, height, hPolicy, vPolicy) widget.layout.addItem(new_spacer) #print("Spacer %s.%s --> %s" % (spacer_name, new_spacer, widget.objectName())) else: logger.warn("qt3ui: Unknown layout xml tag", repr(c.tag)) widget.setLayout(widget.layout)
def load(self): self.ui_ = pineboolib.project.conn.managerModules().createUI( filedir('plugins/mainform/pineboo/mainform.ui'), None, self) self.w_ = self frameGm = self.frameGeometry() screen = QApplication.desktop().screenNumber( QApplication.desktop().cursor().pos()) centerPoint = QApplication.desktop().screenGeometry(screen).center() frameGm.moveCenter(centerPoint) self.move(frameGm.topLeft()) self.areasTab = QTabWidget() self.areasTab.setTabPosition(QTabWidget.West) self.formTab = QTabWidget() try: self.areasTab.removeItem = self.areasTab.removeTab self.areasTab.addItem = self.areasTab.addTab except Exception: pass self.dockAreasTab = QDockWidget() self.dockAreasTab.setWindowTitle("Módulos") #self.dockAreas = QtWidgets.QDockWidget() self.dockFavoritos = QDockWidget() self.dockFavoritos.setWindowTitle("Favoritos") self.dockForm = QDockWidget() self.dockConsole = None self.dockAreasTab.setWidget(self.areasTab) self.dockAreasTab.setMaximumWidth(400) self.dockFavoritos.setMaximumWidth(400) self.dockFavoritos.setMaximumHeight(500) # self.dockAreasTab.setMinimumWidth(400) # self.dockAreasTab.setMaximumHeight(500) self.dockForm.setWidget(self.formTab) self.addDockWidget(Qt.RightDockWidgetArea, self.dockForm) # self.dockForm.setMaximumWidth(950) self.addDockWidget(Qt.LeftDockWidgetArea, self.dockFavoritos) self.addDockWidget(Qt.LeftDockWidgetArea, self.dockAreasTab) # self.dockAreasTab.show() # self.dockForm.show() # self.areasTab.removeItem(0) #Borramos tab de ejemplo. self.formTab.setTabsClosable(True) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.formTab.tabCloseRequested[int].connect(self.closeFormTab) self.formTab.removeTab(0) #app_icon = QtGui.QIcon('share/icons/pineboo-logo-16.png') # app_icon.addFile(filedir('share/icons/pineboo-logo-16.png'), # QtCore.QSize(16, 16)) # app_icon.addFile(filedir('share/icons/pineboo-logo-24.png'), # QtCore.QSize(24, 24)) # app_icon.addFile(filedir('share/icons/pineboo-logo-32.png'), # QtCore.QSize(32, 32)) # app_icon.addFile(filedir('share/icons/pineboo-logo-48.png'), # QtCore.QSize(48, 48)) # app_icon.addFile(filedir('share/icons/pineboo-logo-64.png'), # QtCore.QSize(64, 64)) # app_icon.addFile(filedir('share/icons/pineboo-logo-128.png'), # QtCore.QSize(128, 128)) # app_icon.addFile(filedir('share/icons/pineboo-logo-256.png'), # QtCore.QSize(256, 256)) # self.setWindowIcon(app_icon) self.setWindowIcon(QtGui.QIcon('share/icons/pineboo-logo-16.png')) self.actionAcercaQt.triggered.connect(pineboolib.project.aboutQt) self.actionAcercaPineboo.triggered.connect(pineboolib.project.aboutPineboo) self.actionFavoritos.triggered.connect(self.changeStateDockFavoritos) self.dockFavoritos.visibilityChanged.connect(self.changeStateActionFavoritos) self.actionModulos.triggered.connect(self.changeStateDockAreas) self.dockAreasTab.visibilityChanged.connect(self.changeStateActionAreas) self.actionTipografia.triggered.connect(pineboolib.project.chooseFont) self.menuPineboo.addSeparator() # self.actionEstilo.triggered.connect(pineboolib.main.styleDialog) # pineboolib.pnapplication.initStyle(self.configMenu) self.setWindowTitle("Pineboo") logger.info("Módulos y pestañas ...") for k, area in sorted(pineboolib.project.areas.items()): self.loadArea(area) for k, module in sorted(pineboolib.project.modules.items()): self.loadModule(module) # Cargando Area desarrollo si procede ... sett_ = FLSettings() if (sett_.readBoolEntry("application/isDebuggerMode", False)): areaDevelop = Struct(idarea="dvl", descripcion="Desarrollo") self.loadArea(areaDevelop) self.loadDevelop() self.restoreOpenedTabs() self.loadState() # Cargamos nombre de vertical util = FLUtil() verticalName = util.sqlSelect("flsettings", "valor", "flkey='verticalName'") cbPosInfo = util.sqlSelect("flsettings", "valor", "flkey='PosInfo'") statusText = "" if verticalName != None: statusText = verticalName if cbPosInfo == 'True': from pineboolib.pncontrolsfactory import SysType sys_ = SysType() statusText += "\t\t\t" + sys_.nameUser() + "@" + sys_.nameBD() self.statusBar().showMessage(statusText)
def eventFilter(self, o, e): r = self.currentRow() c = self.currentColumn() nr = self.numRows() nc = self.numCols() if e.type() == QtCore.QEvent.KeyPress: key_event = e if key_event.key() == QtCore.Qt.Key_Escape and self.popup_ and self.parentWidget(): self.parentWidget().hide() return True if key_event.key() == QtCore.Qt.Key_Insert: return True if key_event.key() == QtCore.Qt.Key_F2: return True if key_event.key() == QtCore.Qt.Key_Up and r == 0: return True if key_event.key() == QtCore.Qt.Key_Left and c == 0: return True if key_event.key() == QtCore.Qt.Key_Down and r == nr - 1: return True if key_event.key() == QtCore.Qt.Key_Right and c == nc - 1: return True if key_event.key() in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return) and r > -1: self.recordChoosed.emit() return True if key_event.key() == QtCore.Qt.Key_Space: from pineboolib.pncontrolsfactory import FLCheckBox chk = FLCheckBox(self.cellWidget(r, c)) if chk: chk.animateClick() settings = FLSettings() if not settings.readBoolEntry("ebcomportamiento/FLTableShortCut", False): if key_event.key() == QtCore.Qt.Key_A and not self.popup_: if self.cursor_ and not self.readonly_ and not self.editonly_ and not self.onlyTable_: self.cursor_.insertRecord() return True else: return False if key_event.key() == QtCore.Qt.Key_C and not self.popup_: if self.cursor_ and not self.readonly_ and not self.editonly_ and not self.onlyTable_: self.cursor_.copyRecord() return True else: return False if key_event.key() == QtCore.Qt.Key_M and not self.popup_: if self.cursor_ and not self.readonly_ and not self.onlyTable_: self.cursor_.editRecord() return True else: return False if key_event.key() == QtCore.Qt.Key_Delete and not self.popup_: if self.cursor_ and not self.readonly_ and not self.editonly_ and not self.onlyTable_: self.cursor_.deleteRecord() return True else: return False if key_event.key() == QtCore.Qt.Key_V and not self.popup_: if self.cursor_ and not self.onlyTable_: self.cursor_.browseRecord() return True return False return super(FLDataTable, self).eventFilter(o, e)
def loadPreferences(self): dCache = FLSettings().readBoolEntry("DEVELOP/deleteCache", False) parseProject = FLSettings().readBoolEntry("DEVELOP/parseProject", False) self.ui.cBDeleteCache.setChecked(dCache) self.ui.cBParseProject.setChecked(parseProject)
def savePreferences(self): FLSettings().writeEntry("DEVELOP/deleteCache", self.ui.cBDeleteCache.isChecked()) FLSettings().writeEntry("DEVELOP/parseProject", self.ui.cBParseProject.isChecked())
def saveState(self): if self: sett_ = FLSettings() sett_.writeEntryList("application/mainForm/tabsOpened", self.openTabs) sett_.writeEntry("application/mainForm/viewFavorites", self.dockFavoritos.isVisible()) sett_.writeEntry("application/mainForm/FavoritesSize", self.dockFavoritos.size()) sett_.writeEntry("application/mainForm/viewAreas", self.dockAreasTab.isVisible()) sett_.writeEntry("application/mainForm/AreasSize", self.dockFavoritos.size()) sett_.writeEntry("application/mainForm/mainFormSize", self.size())
def load(self): if self.ui: del self.ui self.ui = uic.loadUi(filedir('plugins/mainform/pineboo/mainform.ui'), self) frameGm = self.frameGeometry() screen = QtWidgets.QApplication.desktop().screenNumber( QtWidgets.QApplication.desktop().cursor().pos()) centerPoint = QtWidgets.QApplication.desktop().screenGeometry( screen).center() frameGm.moveCenter(centerPoint) self.move(frameGm.topLeft()) self.areasTab = QtWidgets.QTabWidget() self.areasTab.setTabPosition(QtWidgets.QTabWidget.West) self.formTab = QtWidgets.QTabWidget() try: self.areasTab.removeItem = self.areasTab.removeTab self.areasTab.addItem = self.areasTab.addTab except Exception: pass self.dockAreasTab = QtWidgets.QDockWidget() self.dockAreasTab.setWindowTitle("Módulos") #self.dockAreas = QtWidgets.QDockWidget() self.dockFavoritos = QtWidgets.QDockWidget() self.dockFavoritos.setWindowTitle("Favoritos") self.dockForm = QtWidgets.QDockWidget() self.dockAreasTab.setWidget(self.areasTab) self.dockAreasTab.setMaximumWidth(400) self.dockFavoritos.setMaximumWidth(400) self.dockFavoritos.setMaximumHeight(500) # self.dockAreasTab.setMinimumWidth(400) # self.dockAreasTab.setMaximumHeight(500) self.dockForm.setWidget(self.formTab) self.addDockWidget(Qt.RightDockWidgetArea, self.dockForm) # self.dockForm.setMaximumWidth(950) self.addDockWidget(Qt.LeftDockWidgetArea, self.dockFavoritos) self.addDockWidget(Qt.LeftDockWidgetArea, self.dockAreasTab) # self.dockAreasTab.show() # self.dockForm.show() # self.areasTab.removeItem(0) #Borramos tab de ejemplo. self.formTab.setTabsClosable(True) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.formTab.tabCloseRequested[int].connect(self.closeFormTab) self.formTab.removeTab(0) #app_icon = QtGui.QIcon('share/icons/pineboo-logo-16.png') # app_icon.addFile(filedir('share/icons/pineboo-logo-16.png'), # QtCore.QSize(16, 16)) # app_icon.addFile(filedir('share/icons/pineboo-logo-24.png'), # QtCore.QSize(24, 24)) # app_icon.addFile(filedir('share/icons/pineboo-logo-32.png'), # QtCore.QSize(32, 32)) # app_icon.addFile(filedir('share/icons/pineboo-logo-48.png'), # QtCore.QSize(48, 48)) # app_icon.addFile(filedir('share/icons/pineboo-logo-64.png'), # QtCore.QSize(64, 64)) # app_icon.addFile(filedir('share/icons/pineboo-logo-128.png'), # QtCore.QSize(128, 128)) # app_icon.addFile(filedir('share/icons/pineboo-logo-256.png'), # QtCore.QSize(256, 256)) # self.setWindowIcon(app_icon) self.setWindowIcon(QtGui.QIcon('share/icons/pineboo-logo-16.png')) self.actionAcercaQt.triggered.connect(pineboolib.main.aboutQt) self.actionAcercaPineboo.triggered.connect( pineboolib.main.aboutPineboo) self.actionFavoritos.triggered.connect(self.changeStateDockFavoritos) self.dockFavoritos.visibilityChanged.connect( self.changeStateActionFavoritos) self.actionModulos.triggered.connect(self.changeStateDockAreas) self.dockAreasTab.visibilityChanged.connect( self.changeStateActionAreas) self.actionTipografia.triggered.connect(pineboolib.main.fontDialog) self.menuPineboo.addSeparator() # self.actionEstilo.triggered.connect(pineboolib.main.styleDialog) pineboolib.main.initStyle(self.configMenu) self.setWindowTitle("Pineboo") logger.info("Módulos y pestañas ...") for k, area in sorted(pineboolib.project.areas.items()): self.loadArea(area) for k, module in sorted(pineboolib.project.modules.items()): self.loadModule(module) # Cargando Area desarrollo si procede ... sett_ = FLSettings() if (sett_.readBoolEntry("application/isDebuggerMode", False)): areaDevelop = Struct(idarea="dvl", descripcion="Desarrollo") self.loadArea(areaDevelop) self.loadDevelop() self.restoreOpenedTabs() self.loadPreferences() # Cargamos nombre de vertical util = FLUtil() verticalName = util.sqlSelect("flsettings", "valor", "flkey='verticalName'") cbPosInfo = util.sqlSelect("flsettings", "valor", "flkey='PosInfo'") if verticalName != None: statusText = verticalName if cbPosInfo == 'True': sys_ = SysType() statusText += "\t\t\t" + sys_.nameUser() + "@" + sys_.nameDB() if verticalName != None: self.statusBar().showMessage(statusText)
def __init__(self, database): self.db_ = database.DBName() self.key_ = "StaticLoader/%s/" % self.db_ settings = FLSettings() self.enabled_ = settings.readBoolEntry("%senabled" % self.key_, False)