示例#1
0
    def mouseDoubleClickEvent(self, e):
        if e.button() != QtCore.Qt.LeftButton:
            return

        settings = FLSettings()
        if not settings.readBoolEntry("ebcomportamiento/FLTableDoubleClick", False):
            self.recordChoosed.emit()
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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
示例#5
0
    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
示例#6
0
 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_)
示例#7
0
    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_)
示例#8
0
    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
示例#9
0
 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
示例#10
0
    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_)
示例#11
0
 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
示例#12
0
 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
示例#13
0
    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_))
示例#14
0
文件: utils.py 项目: deavid/pineboo
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
示例#15
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
示例#16
0
    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)
示例#17
0
    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)
示例#18
0
文件: pineboo.py 项目: deavid/pineboo
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
示例#19
0
    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()
示例#20
0
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)
示例#21
0
    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
示例#22
0
    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))
示例#23
0
    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()

        """
示例#24
0
    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_)
示例#25
0
 def readSettingEntry(self, key, def_=u"", ok=False):
     value = FLSettings().readEntry(key, def_, ok)
     if value == None:
         value = def_
     return value
示例#26
0
 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())
示例#27
0
文件: pnqt3ui.py 项目: deavid/pineboo
    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)
示例#28
0
    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)
示例#29
0
    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)
示例#30
0
 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)
示例#31
0
 def savePreferences(self):
     FLSettings().writeEntry("DEVELOP/deleteCache",
                             self.ui.cBDeleteCache.isChecked())
     FLSettings().writeEntry("DEVELOP/parseProject",
                             self.ui.cBParseProject.isChecked())
示例#32
0
 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())
示例#33
0
    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)
示例#34
0
    def __init__(self, database):
        self.db_ = database.DBName()

        self.key_ = "StaticLoader/%s/" % self.db_
        settings = FLSettings()
        self.enabled_ = settings.readBoolEntry("%senabled" % self.key_, False)