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)
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
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>')
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()