Пример #1
0
    def setupTextEditQuery(self):

        editor = self.textEditQuery
        scintilla = Qsci.QsciScintilla

        editor.setBackspaceUnindents(True)
        editor.setTabIndents(True)

        # Set the font
        self.font = QtGui.QFont()
        self.font.setFamily('terminus')
        self.font.setFixedPitch(True)
        self.font.setPointSize(11)
        editor.setFont(self.font)

        # Add line numbers
        self.font_metrics = QtGui.QFontMetrics(self.font)
        editor.setMarginsFont(self.font)
        editor.setMarginWidth(0, self.font_metrics.width('0000') + 5)
        editor.setMarginLineNumbers(0, True)

        # Add "maximum width" line
        editor.setEdgeMode(Qsci.QsciScintilla.EdgeLine)
        editor.setEdgeColumn(80)
        editor.setEdgeColor(QtGui.QColor(0xCCCCCC))

        # Add folding
        editor.setFolding(scintilla.BoxedTreeFoldStyle)

        # Highlight the matching brace
        editor.setBraceMatching(scintilla.SloppyBraceMatch)

        # Highlight our current line
        editor.setCaretLineVisible(True)
        editor.setCaretLineBackgroundColor(QtGui.QColor(0xE8F3FE))

        # Set the lexer to enable syntax highlighting
        self.lexer = Qsci.QsciLexerSQL(editor)
        self.lexer.setDefaultFont(self.font)
        editor.setLexer(self.lexer)

        # Create an autocompletion API
        self.api = psql_api.PSQLApi(self.lexer)

        # Autocompletion
        editor.setAutoIndent(True)
        editor.setCallTipsStyle(scintilla.CallTipsContext)
        editor.setAutoCompletionThreshold(1)
        editor.setAutoCompletionSource(scintilla.AcsAll)
        editor.setAutoCompletionFillupsEnabled(True)

        editor.setEolMode(scintilla.EolUnix)

        editor.setIndentationGuides(True)
        editor.setIndentationsUseTabs(False)
        editor.setTabIndents(True)
        editor.setTabWidth(4)
Пример #2
0
    def __init__(self, parent):
        Qsci.QsciScintilla.__init__(self, parent)

        self.lexer = Qsci.QsciLexerSQL()
        self.lexer.setDefaultFont(self.font)
        self.lexer.setFont(self.font)
        self.setMarginsFont(self.font)

        fgColor = QtGui.QColor(190, 190, 190, 255)
        bgColor = QtGui.QColor(30, 36, 38, 255)
        black = QtGui.QColor(0, 0, 0, 255)
        comment = QtGui.QColor(101, 103, 99, 255)

        self.lexer.setDefaultColor(fgColor)
        self.lexer.setColor(fgColor, self.lexer.Default)
        self.lexer.setColor(comment, self.lexer.Comment)
        self.lexer.setColor(comment, self.lexer.CommentLine)
        self.lexer.setColor(comment, self.lexer.CommentDoc)
        self.lexer.setColor(QtGui.QColor(204, 33, 33, 255), self.lexer.Number)
        self.lexer.setColor(QtGui.QColor(114, 160, 207, 255), self.lexer.Keyword)
        self.lexer.setColor(QtGui.QColor(139, 226, 51, 255), self.lexer.DoubleQuotedString)
        self.lexer.setColor(QtGui.QColor(139, 226, 51, 255), self.lexer.SingleQuotedString)
        self.lexer.setColor(QtGui.QColor(252, 163, 61, 255), self.lexer.PlusKeyword)
        self.lexer.setColor(fgColor, self.lexer.Operator)
        self.lexer.setColor(fgColor, self.lexer.Identifier)
        self.lexer.setColor(comment, self.lexer.PlusComment)
        self.lexer.setColor(comment, self.lexer.CommentLineHash)
        self.lexer.setColor(comment, self.lexer.CommentDocKeyword)
        self.lexer.setColor(comment, self.lexer.CommentDocKeywordError)
        self.lexer.setPaper(bgColor)
        self.lexer.setDefaultPaper(bgColor)

        self.setCaretForegroundColor(fgColor)
        self.setSelectionBackgroundColor(black)
        self.setCaretLineVisible(True)
        self.setCaretLineBackgroundColor(QtGui.QColor(44, 53, 56, 255))
        self.setMarginsForegroundColor(bgColor)
        self.setMarginsBackgroundColor(black)
        self.setMatchedBraceForegroundColor(fgColor)
        self.setMatchedBraceBackgroundColor(QtGui.QColor(89, 71, 47, 255))

        self.setAutoIndent(True)
        self.setFolding(Qsci.QsciScintilla.NoFoldStyle)
        self.setWrapMode(Qsci.QsciScintilla.WrapWord)
        self.setMarginWidth(0, 30)
        self.setMarginLineNumbers(0, True)
        self.setBraceMatching(self.SloppyBraceMatch)

        self.setLexer(self.lexer)
        self.setUtf8(True)

        self.filename = None
Пример #3
0
    def __init__(self):
        QtGui.QDialog.__init__(self)

        self.setupUi(self)
        self.retranslateUi(self)
        self.lineEdit.setEnabled(
            False
        )  # Disable the Linedit, for only SQLITE would be using that object
        self.interact_browse.setEnabled(
            False
        )  # Disable the Browse button,for only SQLITE would be using that object
        self.interact_comboBox.setEnabled(True)
        self.sqleditor.setEnabled(True)
        self.tables_button.setEnabled(True)
        self.save_report_button.setEnabled(False)
        self.close_interact_button.setEnabled(True)
        self.execute_sql_button.setEnabled(True)
        sql_code = Qsci.QsciLexerSQL()
        self.sqleditor.setLexer(sql_code)

        try:
            self.setWindowFlags(QtCore.Qt.WindowMinMaxButtonsHint
                                | QtCore.Qt.WindowCancelButtonHint
                                | QtCore.Qt.WindowCloseButtonHint)
        except:
            pass
        self.sqleditor.setFocus()
        self.setWindowTitle("%s Database Interaction" %
                            (variables.database_type))
        self.connect(self.execute_sql_button, QtCore.SIGNAL("clicked()"),
                     self.browse_sql_script)
        self.connect(self.close_interact_button, QtCore.SIGNAL("clicked()"),
                     self.close_database)
        self.connect(self.tables_button, QtCore.SIGNAL("clicked()"),
                     self.show_tables)
        self.connect(self.interact_browse, QtCore.SIGNAL("clicked()"),
                     self.connect_sqlite_database)
        self.connect(self.save_report_button, QtCore.SIGNAL("clicked()"),
                     self.save_report)

        if variables.database_type == 'MySQL':

            database_list = []
            variables.database_mysql_query.execute('select version()')
            self.interact_server_name.setText(
                '<font color=green>MySQL Server:</font>')
            self.interact_server_connection.setText(
                '<font color=green>%s</font>' %
                (variables.mysql_server_connection))
            variables.report_server_version = variables.database_mysql_query.fetchall(
            )[0][0]
            self.label_4.setText('<font color=green>%s</font>' %
                                 (variables.report_server_version))

            variables.database_mysql_query.execute('show databases;')
            data = variables.database_mysql_query.fetchall()
            for iterate in data:
                database_list.append(iterate[0])
            self.interact_comboBox.addItems(database_list)

        elif variables.database_type == 'Oracle':

            database_list = [variables.username.upper()]
            variables.database_oracle_query.execute('select * from v$version')
            temp_data = variables.database_oracle_query.fetchall()
            self.interact_server_name.setText('<font color=green>%s</font>' %
                                              (temp_data[0][0]))
            self.interact_server_connection.setText(
                '<font color=green>%s</font>' %
                (variables.oracle_server_connection))
            variables.report_server_version = temp_data[3][0]
            self.label_4.setText('<font color=green>%s</font>' %
                                 (variables.report_server_version))
            variables.database_oracle_query.execute(
                """SELECT username FROM all_users ORDER BY username""")
            data = variables.database_oracle_query.fetchall()
            for iterate in data:
                if variables.username.upper() != str(iterate):
                    database_list.append(iterate[0])
            self.interact_comboBox.addItems(database_list)

        elif variables.database_type == 'PostgreSQL':
            variables.database_postgresql_query = variables.database_postgresql.cursor(
            )
            database_list = []
            variables.database_postgresql_query.execute('SELECT version()')
            temp_data = variables.database_postgresql_query.fetchall()[0][0]
            server_edition = temp_data.index(',')
            self.interact_server_name.setText('<font color=green>%s:</font>' %
                                              (temp_data[0:server_edition]))
            self.interact_server_connection.setText(
                '<font color=green>%s</font>' %
                (variables.postgres_server_connection))
            variables.report_server_version = temp_data[server_edition + 1:-1]
            self.label_4.setText('<font color=green>%s</font>' %
                                 (variables.report_server_version))
            variables.database_postgresql_query.execute(
                'select * from pg_catalog.pg_database')
            data = variables.database_postgresql_query.fetchall()
            for iterate in data:
                database_list.append(iterate[0])
            self.interact_comboBox.addItems(database_list)

        elif variables.database_type == 'MSSQL':

            database_list = []
            variables.database_mssql_query.execute(
                "SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')"
            )
            temp_data = variables.database_mssql_query.fetchall()
            self.interact_server_name.setText(
                '<font color=green>%s %s</font>' %
                (temp_data[0][2], temp_data[0][1]))
            self.interact_server_connection.setText(
                '<font color=green>%s</font>' %
                (variables.mssql_server_connection))
            variables.report_server_version = temp_data[0][0]
            self.label_4.setText('<font color=green>%s</font>' %
                                 (variables.report_server_version))
            variables.database_mssql_query.execute(
                'select * from sys.databases')
            data = variables.database_mssql_query.fetchall()
            for iterate in data:
                database_list.append(iterate[0])
            self.interact_comboBox.addItems(database_list)

        else:
            variables.report_server_type = "SQlite"
            self.interact_browse.setEnabled(True)
            self.lineEdit.setEnabled(True)
            self.interact_comboBox.setEnabled(False)
            self.sqleditor.setEnabled(False)
            self.tables_button.setEnabled(False)
            self.close_interact_button.setEnabled(False)
            self.execute_sql_button.setEnabled(False)
            variables.report_server_version = ""
            self.interact_server_name.setText(
                '<font color=green>SQLite: None Selected</font>')
            self.interact_server_connection.setText(
                '<font color=green>%s</font>' % (variables.server_connection))
            self.label_4.setText('<font color=green>None Selected</font>')
Пример #4
0
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.name = _(self.name)
        self.query_editor = Qsci.QsciScintilla()

        self.query_editor.setLexer(Qsci.QsciLexerSQL())
        self.query_editor.setCaretLineVisible(True)

        self.go_button = QtGui.QPushButton(_("Execute Query"), self)
        self.go_button.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_Return)

        icon = QtGui.QIcon.fromTheme('x-office-spreadsheet')
        self.action_export_xls = QtGui.QAction(icon,
                                               "Export to Excel Spreadsheet",
                                               self)
        self.action_export_csv = QtGui.QAction(icon, "Export to csv", self)

        self.action_export_xls.setEnabled(export_xls.AVAILABLE)

        menu = QtGui.QMenu(self)
        menu.addAction(self.action_export_xls)
        menu.addAction(self.action_export_csv)

        export_toolbutton = QtGui.QToolButton(self)
        export_toolbutton.setText(_("&Export"))
        export_toolbutton.setPopupMode(export_toolbutton.InstantPopup)
        export_toolbutton.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                        QtGui.QSizePolicy.Preferred)

        export_toolbutton.setMenu(menu)

        self.back_button = QtGui.QPushButton("<", self)
        self.back_button.setMaximumWidth(40)
        self.back_button.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_Up)
        self.next_button = QtGui.QPushButton(">", self)
        self.next_button.setMaximumWidth(40)
        self.next_button.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_Down)

        self.clear_text_button = QtGui.QPushButton("clear text", self)
        self.clear_text_button.setShortcut(QtCore.Qt.CTRL +
                                           QtCore.Qt.Key_Delete)

        self.hist_combobox_headers = [
            _("Query History"),
            _("Clear Items"),
            _("Clear All History")
        ]

        self.hist_combobox = QtGui.QComboBox(self)
        self.hist_combobox.addItems(self.hist_combobox_headers)

        self.model = QtSql.QSqlQueryModel(self)
        table_view = QtGui.QTableView(self)
        table_view.setModel(self.model)

        top_frame = QtGui.QWidget(self)
        layout = QtGui.QHBoxLayout(top_frame)
        layout.setMargin(0)
        layout.addWidget(self.go_button)
        layout.addWidget(export_toolbutton)

        sub_frame = QtGui.QFrame(self)
        layout = QtGui.QHBoxLayout(sub_frame)
        layout.setMargin(0)
        layout.addWidget(self.back_button)
        layout.addWidget(self.next_button)
        layout.addWidget(self.clear_text_button)

        frame = QtGui.QFrame(self)
        frame.setMaximumWidth(200)
        layout = QtGui.QVBoxLayout(frame)
        layout.setMargin(0)
        layout.addWidget(top_frame)
        layout.addWidget(sub_frame)

        layout.addItem(
            QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum,
                              QtGui.QSizePolicy.Expanding))
        layout.addWidget(self.hist_combobox)

        top_frame = QtGui.QFrame(self)
        layout = QtGui.QHBoxLayout(top_frame)
        layout.setMargin(0)
        layout.addWidget(self.query_editor)
        layout.addWidget(frame)

        splitter = QtGui.QSplitter(self)
        splitter.setOrientation(QtCore.Qt.Vertical)
        splitter.addWidget(top_frame)
        splitter.addWidget(table_view)

        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(splitter)
        splitter.setSizes([50, 400])

        self.query_editor.setFocus()

        self.history = QtCore.QStringList()
        self.get_history()
        self.history_position = -1

        self.connect_signals()