Пример #1
0
    def __init__(self, *args, **kwargs):
        super(EditorBase, self).__init__(*args, **kwargs)

        # Make sure editor always has a monospace font.
        self.__zoom = 0
        self.setFont()

        self.__highlighter = Highlighter(self.document())
        self.__highlighter.setRules(PythonHighlighter)

        # Set general document option
        option = self.document().defaultTextOption()
        option.setFlags(option.flags() | option.IncludeTrailingSpaces |
                        option.AddSpaceForLineAndParagraphSeparators)

        if self.indentUsingSpaces():
            option.setFlags(option.flags() | option.ShowTabsAndSpaces)

        self.document().setDefaultTextOption(option)

        # View Settings
        # self.setShowWhitespace()
        # self.setShowLineEndings()
        # self.setWrap()
        # self.setHighlightCurrentLine()
        # self.setLongLineIndicatorPosition()

        # So that graphical elements wont break.
        self.cursorPositionChanged.connect(self.viewport().update)
Пример #2
0
    def __init__(self, player_key):

        self.level = None
        self.player = None
        self.player_key = player_key
        self.objects = []

        self.ui = UI(self)

        self.turn_tracker = TurnTracker(self)
        self.turn = 'player'
        self.active_ability = None

        self.effect_tracker = EffectTracker(self)

        self.clock = pygame.time.Clock()
        self.tick = 0

        self.pointer = Pointer(self)
        self.highlighter = Highlighter(self)

        self.sub_screen = pygame.Surface((720, 720)).convert()

        self.game_display = GameDisplay(self)
        self.screen_mode = 'zoomed'

        self.zoomed_sub_screen = pygame.Surface((19 * 16, 15 * 24)).convert()
        self.zoomed_sub_screen_scale = pygame.Surface(
            (19 * 16 * 2, 15 * 24 * 2)).convert()
        self.zoomed_sub_screen_scale_rect = self.zoomed_sub_screen_scale.get_rect(
        )
        self.zoomed_sub_screen_scale_rect.topleft = (56, 0)
Пример #3
0
    def __init__(self, parent=None):

        super(Editor, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.file_path = None
        self.proc = QProcess()

        Highlighter(self.ui.text_editor)

        self.ui.actionRun.triggered.connect(self.run_triggered)

        self.ui.actionOpen.triggered.connect(self.open_triggered)

        self.ui.actionSave.triggered.connect(self.save_triggered)

        self.ui.actionClose.triggered.connect(self.close_triggered)

        self.proc.started.connect(self.process_started)

        self.proc.errorOccurred.connect(self.process_error_occurred)

        self.proc.readyReadStandardOutput.connect(
            self.process_ready_read_standard_output)

        self.proc.finished.connect(self.process_finished)

        self.proc.readyReadStandardError.connect(
            self.process_ready_read_standard_error)
Пример #4
0
    def __init__(self):
        super().__init__()
        self.text_area = TextArea(self, bg="white", fg="black", undo=True)
        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.scroll_text)
        self.text_area.configure(yscrollcommand=self.scrollbar.set)
        self.scrollbar.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg="grey",
                                        fg="white",
                                        width=1)
        self.highlighter = Highlighter(self.text_area, 'languages/python.yaml')

        # first_100_numbers = [str(n+1) for n in range(100)]
        # self.line_numbers.insert(1.0, "\n".join(first_100_numbers))
        # self.line_numbers.configure(state="disabled", width=3)

        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()
Пример #5
0
    def __init__(self, settings, parent_textEdit):

        sys.excepthook = exception_handler
        QtWidgets.QDialog.__init__(self)
        self.settings = settings
        self.parent_textEdit = parent_textEdit
        self.queryTime = ""
        self.queryFilters = ""
        textEditSql = ""

        # Set up the user interface from Designer.
        self.ui = Ui_Dialog_sql()
        self.ui.setupUi(self)
        #self.setWindowTitle("Query: " + self.queryname)
        self.ui.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
        highlighter = Highlighter(self.ui.textEdit_sql)
        self.ui.textEdit_sql.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.textEdit_sql.customContextMenuRequested.connect(self.sql_menu)
        # fill textEdit_sql from queryname
        self.ui.textEdit_sql.setText(textEditSql)
        self.ui.tableWidget_results.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableWidget_results.customContextMenuRequested.connect(
            self.table_menu)

        # Add tables and fields to treeWidget
        self.get_schema_update_treeWidget()
        self.ui.treeWidget.itemClicked.connect(self.get_item)
        self.ui.pushButton_runSQL.clicked.connect(self.run_SQL)
        self.ui.pushButton_export.clicked.connect(self.export_file)
        self.ui.splitter.setSizes([20, 180])
        self.ui.splitter_2.setSizes([10, 290])
Пример #6
0
    def __init__(self):
        super().__init__()

        self.title('Python Text Editor v3')
        self.geometry('800x600')

        self.foreground = 'black'
        self.background = 'lightgrey'
        self.text_foreground = 'black'
        self.text_background = 'white'

        self.load_scheme_file('schemes/default.yaml')
        self.configure_ttk_elements()

        self.font_size = 15
        self.font_family = "Ubuntu Mono"
        self.load_font_file('schemes/font.yaml')

        self.text_area = TextArea(self,
                                  bg=self.text_background,
                                  fg=self.text_foreground,
                                  undo=True,
                                  font=(self.font_family, self.font_size))

        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.scroll_text)
        self.text_area.configure(yscrollcommand=self.scrollbar.set)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg="grey",
                                        fg="white",
                                        width=1)
        self.highlighter = Highlighter(self.text_area, 'languages/python.yaml')

        self.menu = tk.Menu(self, bg=self.background, fg=self.foreground)
        self.all_menus = [self.menu]

        sub_menu_items = ["file", "edit", "tools", "help"]
        self.generate_sub_menus(sub_menu_items)
        self.configure(menu=self.menu)

        self.right_click_menu = tk.Menu(self,
                                        bg=self.background,
                                        fg=self.foreground,
                                        tearoff=0)
        self.right_click_menu.add_command(label='Cut', command=self.edit_cut)
        self.right_click_menu.add_command(label='Copy', command=self.edit_copy)
        self.right_click_menu.add_command(label='Paste',
                                          command=self.edit_paste)
        self.all_menus.append(self.right_click_menu)

        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()

        self.open_file = ''
Пример #7
0
def main():
    highlighter = Highlighter() 
    queries = make_queries_dict()

    if FLAGS.input_file is not None:
        scrape_document_file(FLAGS.input_file, queries, highlighter)
    else:
        scrape_query_file(queries[FLAGS.query], highlighter)
Пример #8
0
 def load_syntax_highlighting_file(self):
     syntax_file = filedialog.askopenfilename(filetypes=[("YAML file",
                                                          ("*.yaml",
                                                           "*.yml"))])
     if syntax_file:
         self.highlighter.clear_highlight()
         self.highlighter = Highlighter(self.text_area, syntax_file)
         self.highlighter.force_highlight()
Пример #9
0
 def load_syntax_highlighting(self):
     syntax_file = filedialog.askopenfilename(filetypes=[('YAML file',
                                                          ('*.yaml',
                                                           '*.yml'))])
     if syntax_file:
         self.highlighter.clear_highlight()
         self.highlighter = Highlighter(self.text_area, syntax_file)
         self.highlighter.force_highlight()
Пример #10
0
 def __init__(self, left, top, width, height, parent=None):
     super().__init__(parent)
     self.left = left
     self.top = top
     self.width = width
     self.height = height
     self.setParent(parent)
     self.initWidget()
     self.highLighter = Highlighter(self.document())
Пример #11
0
    def __init__(self, app, parent_textEdit):

        sys.excepthook = exception_handler
        QtWidgets.QDialog.__init__(self)
        self.app = app
        self.parent_textEdit = parent_textEdit
        self.queryTime = ""
        self.queryFilters = ""
        textEditSql = ""

        # Set up the user interface from Designer.
        self.ui = Ui_Dialog_sql()
        self.ui.setupUi(self)
        try:
            w = int(self.app.settings['dialogsql_w'])
            h = int(self.app.settings['dialogsql_h'])
            if h > 50 and w > 50:
                self.resize(w, h)
        except:
            pass
        self.setWindowFlags(self.windowFlags()
                            & ~QtCore.Qt.WindowContextHelpButtonHint)
        font = 'font: ' + str(self.app.settings['fontsize']) + 'pt '
        font += '"' + self.app.settings['font'] + '";'
        self.setStyleSheet(font)
        #self.setWindowTitle("Query: " + self.queryname)
        self.ui.treeWidget.setContextMenuPolicy(Qt.CustomContextMenu)
        highlighter = Highlighter(self.ui.textEdit_sql)
        self.ui.textEdit_sql.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.textEdit_sql.customContextMenuRequested.connect(self.sql_menu)
        # fill textEdit_sql from queryname
        self.ui.textEdit_sql.setText(textEditSql)
        self.ui.tableWidget_results.setContextMenuPolicy(Qt.CustomContextMenu)
        self.ui.tableWidget_results.customContextMenuRequested.connect(
            self.table_menu)

        # Add tables and fields to treeWidget
        self.get_schema_update_treeWidget()
        self.ui.treeWidget.itemClicked.connect(self.get_item)
        self.ui.pushButton_runSQL.clicked.connect(self.run_SQL)
        self.ui.pushButton_export.clicked.connect(self.export_file)
        self.ui.splitter.setSizes([20, 180])
        try:
            s0 = int(self.app.settings['dialogsql_splitter_h0'])
            s1 = int(self.app.settings['dialogsql_splitter_h1'])
            if s0 > 10 and s1 > 10:
                self.ui.splitter.setSizes([s0, s1])
        except:
            pass
        self.ui.splitter_2.setSizes([10, 290])
        try:
            s0 = int(self.app.settings['dialogsql_splitter_v0'])
            s1 = int(self.app.settings['dialogsql_splitter_v1'])
            if s0 > 10 and s1 > 10:
                self.ui.splitter_2.setSizes([s0, s1])
        except:
            pass
Пример #12
0
 def terminal_mode(self, event=None):
     if self.thee_mode == 1:
         self.line_numbers.destroy()
     self.text_area.config(state=tk.NORMAL, tabs=4)
     self.text_area.delete('1.0', tk.END)
     self.text_area.insert(tk.END, self.terminal_mode_buffer)
     self.terminal.writeLoop()
     self.highlighter = Highlighter(self.text_area)
     self.thee_mode = 2
Пример #13
0
    def editor_mode(self, event=None):
        self.text_area.config(state=tk.NORMAL, tabs=4)
        self.text_area.delete('1.0', tk.END)
        self.text_area.insert(tk.END, self.editor_mode_buffer)
        self.highlighter = Highlighter(self.text_area)
        self.thee_mode = 1

        self.line_numbers = LineNumbers(self.frame1, self.text_area)
        self.line_numbers.config(bg=self.text_background,
                                 width=len(self.line_numbers.line_number) * 10,
                                 highlightthickness=0)
        self.line_numbers.grid(row=0, column=0, sticky='ns')

        self.status_bar1.set("Line %d, Column %d" % (self.line, self.column))
        self.status_bar3.set("%s" % self.file_name)
        self.status_bar4.set("Spaces: %d" % self.spaces)
        self.status_bar5.set("%s" % self.status)
Пример #14
0
 def register_syntax(self, fileName):
     ext = manage_files.get_file_extension(fileName)[1:]
     if self.highlighter is not None and \
         not self.path.endswith(ext):
         self.highlighter.deleteLater()
     if not self.path.endswith(ext):
         if ext in loader.extensions:
             self.highlighter = Highlighter(
                 self.document(), loader.extensions.get(ext, 'py'))
         else:
             try:
                 self.highlighter = HighlighterPygments(
                     self.document(), fileName)
             except:
                 print 'There is no lexer for this file'
         #for apply rehighlighting (rehighlighting form highlighter not responding)
         self.firstVisibleBlock().document().find('\n').insertText('')
Пример #15
0
    def __init__(self):
        super().__init__()

        self.text_area = TextArea(self, bg="white", fg="black", undo=True)

        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.scroll_text)
        self.text_area.configure(yscrollcommand=self.scrollbar.set)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg="grey",
                                        fg="white",
                                        width=1)
        self.highlighter = Highlighter(self.text_area, 'languages/python.yaml')

        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()
Пример #16
0
    def __init__(self, parent, type):
        super().__init__()

        self._parent = parent
        self._type = type

        fileLabel = QtWidgets.QLabel()
        fileLabel.setText("File:")

        self._fileComboBox = QtWidgets.QComboBox()
        self._fileComboBox.currentIndexChanged.connect(self.currentChanged)

        fileLayout = QtWidgets.QHBoxLayout()
        fileLayout.addWidget(fileLabel)
        fileLayout.addWidget(self._fileComboBox)

        self._editor = ShaderSource()
        self._highlighter = Highlighter(self._editor.document())

        layout = QtWidgets.QVBoxLayout(self)
        layout.addLayout(fileLayout)
        layout.addWidget(self._editor)
Пример #17
0
 def init_ui(self):
     self.text_edit = QTextEdit(self)
     self.setCentralWidget(self.text_edit)
     
     font = QFont("Menlo", 12)
     # TODO: Create a layout and change the line spacing
     #spacing = QFontMetrics(font).lineSpacing()
     self.text_edit.setFont(font)
     self.highlighter = Highlighter(self.text_edit.document(), DEFAULT_RULES, DEFAULT_STYLE)
     #print("Highlighter doc: {}".format(self.text_edit.document()))
     
     menu_bar = self.menuBar()
     m_file = menu_bar.addMenu("File")
     
     i_open = QAction("Open", self)
     i_open.setShortcut('Ctrl+O')
     i_open.triggered.connect(self.on_open)
     
     m_file.addAction(i_open)
     
     self.setGeometry(300, 300, 350, 300)
     self.setWindowTitle("tea")
Пример #18
0
    def __init__(self, manager, white_player='human', black_player='human'):

        # game state members
        self.game_manager = manager
        self.game_running = False
        self.needs_redraw = True
        self.screen = None
        self.clock = pygame.time.Clock()

        # game components
        self.game_logic = GameLogic(self)
        self.game_grid = GameGrid(self)
        self.game_board = None

        self.white_player = None
        self.black_player = None
        self.initialize_players(white_player, black_player)

        self.turn_manager = TurnManager(self)
        self.highlighter = Highlighter(self)
        self.logger = Logger(self)

        self.buttons = {}
Пример #19
0
 def setupEditor(self):
     self.highlighter = Highlighter(self.ui.mainTextEdit.document())
Пример #20
0
    def __init__(self):
        """Initialize Tab with layout and behavior."""
        super(Tab, self).__init__()

        # regex pattern for SQL query block comments
        self.block_comment_re = re.compile(
            r'(^)?[^\S\n]*/(?:\*(.*?)\*/[^\S\n]*|/[^\n]*)($)?',
            re.DOTALL | re.MULTILINE)

        main_layout = QVBoxLayout(self)

        # define gdb props
        self.gdb = None
        self.gdb_items = None
        self.gdb_columns_names = None
        self.gdb_schemas = None

        # connected geodatabase path toolbar
        self.connected_gdb_path_label = QLabel('')
        self.connected_gdb_path_label.setTextInteractionFlags(
            Qt.TextSelectableByMouse)
        self.connected_gdb_path_label.setToolTip(
            'Connected geodatabase that queries will be run against')
        self.connected_gdb_path_label.setText(not_connected_to_gdb_message)

        self.browse_to_gdb = QPushButton('Browse')
        self.browse_to_gdb.setShortcut(QKeySequence('Ctrl+B'))
        self.browse_to_gdb.clicked.connect(
            lambda evt, arg=True: self.connect_to_geodatabase(
                evt, triggered_with_browse=True))

        self.gdb_sql_dialect_combobox = QComboBox()
        for dialect in sql_dialects_names:
            self.gdb_sql_dialect_combobox.addItem(dialect)

        self.gdb_browse_toolbar = QToolBar()
        self.gdb_browse_toolbar.setMaximumHeight(50)
        self.gdb_browse_toolbar.addWidget(self.browse_to_gdb)
        self.gdb_browse_toolbar.addWidget(self.connected_gdb_path_label)
        self.gdb_browse_toolbar.addSeparator()
        self.gdb_browse_toolbar.addWidget(self.gdb_sql_dialect_combobox)

        # table with results
        self.table = ResultTable()

        # execute SQL query
        self.execute = QAction('Execute', self)
        self.execute.setShortcuts(
            [QKeySequence('F5'),
             QKeySequence('Ctrl+Return')])
        self.execute.triggered.connect(self.run_query)
        self.addAction(self.execute)

        # enter a SQL query
        self.query = TextEditor()
        self.query.setPlainText('')
        font = self.query.font()
        font.setFamily('Consolas')
        font.setStyleHint(QFont.Monospace)

        # TODO: add line numbers to the text editor
        font.setPointSize(14)
        self.query.setFont(font)
        self.query.setTabStopWidth(20)
        self.highlighter = Highlighter(self.query.document())

        # TODO select block of text - Ctrl+/ and they become comments
        self.completer = Completer()
        self.query.set_completer(self.completer.completer)

        # errors panel to show if query fails to execute properly
        self.errors_panel = QPlainTextEdit()
        font = self.query.font()
        font.setPointSize(12)
        self.errors_panel.setStyleSheet('color:red')
        self.errors_panel.setFont(font)
        self.errors_panel.hide()

        # splitter between the toolbar, query window, and the result set table
        splitter = QSplitter(Qt.Vertical)
        splitter.addWidget(self.gdb_browse_toolbar)
        splitter.addWidget(self.query)
        splitter.addWidget(self.table)
        splitter.addWidget(self.errors_panel)

        # add the settings after the widget have been added
        splitter.setCollapsible(0, True)
        splitter.setCollapsible(1, False)
        splitter.setCollapsible(2, False)
        splitter.setCollapsible(3, False)
        splitter.setStretchFactor(0, 3)
        splitter.setStretchFactor(1, 7)
        splitter.setSizes((100, 200, 300))
        self.table.hide()

        # TOC
        self.toc = QTreeWidget()
        self.toc.setHeaderHidden(True)

        # second splitter between the TOC to the left and the query/table to the
        # right
        toc_splitter = QSplitter(Qt.Horizontal)
        toc_splitter.addWidget(self.toc)
        toc_splitter.addWidget(splitter)
        toc_splitter.setCollapsible(0, True)
        toc_splitter.setSizes((200, 800))  # set the TOC vs data panel

        main_layout.addWidget(toc_splitter)

        margins = QMargins()
        margins.setBottom(10)
        margins.setLeft(10)
        margins.setRight(10)
        margins.setTop(10)
        main_layout.setContentsMargins(margins)

        self.setLayout(main_layout)
        QApplication.setStyle(QStyleFactory.create('Cleanlooks'))
        self.show()

        return
Пример #21
0
    def __init__(self):
        super().__init__()

        self.title('Text Editor')
        self.text_area = TextArea(self, bg="white", fg="black", undo=True)

        self.background = 'lightgrey'
        self.foreground = 'black'
        self.text_foreground = 'black'
        self.text_background = 'white'

        self.config_dir = os.path.join(str(Path.home()), '.tkedit')
        self.default_scheme_path = os.path.join(self.config_dir,
                                                'schemes/default.yaml')
        self.python_language_path = os.path.join(self.config_dir,
                                                 'languages/python.yaml')
        self.font_scheme_path = os.path.join(self.config_dir,
                                             'schemes/font.yaml')
        self.create_config_directory_if_needed()

        self.load_scheme_file(self.default_scheme_path)
        self.configure_ttk_elements()
        self.font_size = 15
        self.font_family = "Ubuntu Mono"
        self.load_font_file(self.font_scheme_path)

        self.highlighter = Highlighter(self.text_area,
                                       self.python_language_path)

        self.menu = tk.Menu(self, bg=self.background, fg=self.foreground)

        self.all_menus = [self.menu]

        sub_menu_items = ['file', 'edit', 'tools', 'help']
        self.generate_sub_menus(sub_menu_items)
        self.configure(menu=self.menu)

        self.right_click_menu = tk.Menu(self,
                                        bg='lightgrey',
                                        fg='black',
                                        tearoff=0)
        self.right_click_menu.add_command(label='Cut', command=self.edit_cut)
        self.right_click_menu.add_command(label='Copy', command=self.edit_copy)
        self.right_click_menu.add_command(label='Paste',
                                          command=self.edit_paste)
        self.all_menus.append(self.right_click_menu)

        self.open_file = None

        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.scroll_text)
        self.text_area.configure(yscrollcommand=self.scrollbar.set)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg='grey',
                                        fg='white',
                                        width=1)
        '''
        self.line_numbers = tk.Text(self, bg="grey", fg="yellow")
        first_100_numbers = [str(n+1) for n in range(100)]

        self.line_numbers.insert(1.0, "\n".join(first_100_numbers))
        self.line_numbers.configure(state="disabled", width=3)
        '''

        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()
Пример #22
0
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.doctree=None
        self.lineMarks={}

        # We put things we want rendered here
        self.render_queue = Queue()
        # We get things rendered back
        self.pdf_queue = Queue()
        # We get doctrees for the outline viewer
        self.doctree_queue = Queue()

        print('Starting background renderer...', end=' ')
        self.renderProcess=Process(target = renderQueue,
            args=(self.render_queue, self.pdf_queue, self.doctree_queue))
        self.renderProcess.daemon=True
        self.renderProcess.start()
        print('DONE')

        # This is always the same
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        # Adjust column widths in the structure tree
        self.ui.tree.header().setStretchLastSection(False)
        self.ui.tree.header().setResizeMode(0, QtGui.QHeaderView.Stretch)
        self.ui.tree.header().setResizeMode(1, QtGui.QHeaderView.ResizeToContents)

        self.pdf=PDFWidget()

        self.ui.pageNum = QtGui.QSpinBox()
        self.ui.pageNum.setMinimum(1)
        self.ui.pageNum.setValue(1)
        self.connect(self.pdf,QtCore.SIGNAL('pageCount'),
            self.ui.pageNum.setMaximum)
        self.connect(self.pdf,QtCore.SIGNAL('pageChanged'),
            self.ui.pageNum.setValue)
        self.connect(self.ui.pageNum,QtCore.SIGNAL('valueChanged(int)'),
            self.pdf.gotoPage)

        self.ui.actionShow_ToolBar=self.ui.toolBar.toggleViewAction()
        self.ui.actionShow_ToolBar.setText("Show Main Toolbar")
        self.ui.menuView.addAction(self.ui.actionShow_ToolBar)

        self.ui.pdfbar.addAction(self.pdf.ui.previous)
        self.ui.pdfbar.addWidget(self.ui.pageNum)
        self.ui.pdfbar.addAction(self.pdf.ui.__next__)
        self.ui.pdfbar.addSeparator()
        self.ui.pdfbar.addAction(self.pdf.ui.zoomin)
        self.ui.pdfbar.addAction(self.pdf.ui.zoomout)
        self.ui.actionShow_PDFBar=self.ui.pdfbar.toggleViewAction()
        self.ui.actionShow_PDFBar.setText("Show PDF Toolbar")
        self.ui.menuView.addAction(self.ui.actionShow_PDFBar)

        self.ui.dockLayout.addWidget(self.ui.pdfbar)
        self.ui.dockLayout.addWidget(self.pdf)
        self.ui.dock.hide()
        self.ui.actionShow_PDF=self.ui.dock.toggleViewAction()
        self.ui.actionShow_PDF.setText('Show Preview')
        self.ui.menuView.addAction(self.ui.actionShow_PDF)
        self.ui.actionShow_Structure=self.ui.structure.toggleViewAction()
        self.ui.actionShow_Structure.setText('Show Document Outline')
        self.ui.menuView.addAction(self.ui.actionShow_Structure)

        self.text_md5=''
        self.style_md5=''

        self.hl1 = Highlighter(self.ui.text.document(),'rest')
        self.hl2 = Highlighter(self.ui.style.document(),'javascript')

        self.editorPos=QtGui.QLabel()
        self.ui.statusBar.addWidget(self.editorPos)
        self.editorPos.show()

        self.statusMessage=QtGui.QLabel()
        self.ui.statusBar.addWidget(self.statusMessage)
        self.statusMessage.show()

        self.on_text_cursorPositionChanged()
        self.on_actionRender_triggered()

        # Connect editing actions to the editors
        self.ui.text.undoAvailable.connect(self.ui.actionUndo1.setEnabled)
        self.ui.actionUndo1.triggered.connect(self.ui.text.undo)
        self.ui.text.redoAvailable.connect(self.ui.actionRedo1.setEnabled)
        self.ui.actionRedo1.triggered.connect(self.ui.text.redo)

        self.ui.text.copyAvailable.connect(self.ui.actionCopy1.setEnabled)
        self.ui.actionCopy1.triggered.connect(self.ui.text.copy)
        self.ui.text.copyAvailable.connect(self.ui.actionCut1.setEnabled)
        self.ui.actionCut1.triggered.connect(self.ui.text.cut)
        self.ui.actionPaste1.triggered.connect(self.ui.text.paste)


        self.ui.style.undoAvailable.connect(self.ui.actionUndo2.setEnabled)
        self.ui.actionUndo2.triggered.connect(self.ui.style.undo)
        self.ui.style.redoAvailable.connect(self.ui.actionRedo2.setEnabled)
        self.ui.actionRedo2.triggered.connect(self.ui.style.redo)

        self.ui.style.copyAvailable.connect(self.ui.actionCopy2.setEnabled)
        self.ui.actionCopy2.triggered.connect(self.ui.style.copy)
        self.ui.style.copyAvailable.connect(self.ui.actionCut2.setEnabled)
        self.ui.actionCut2.triggered.connect(self.ui.style.cut)
        self.ui.actionPaste2.triggered.connect(self.ui.style.paste)

        self.clipBoard=QtGui.QApplication.clipboard()
        self.clipBoard.changed.connect(self.clipChanged)

        self.hookEditToolbar(self.ui.text)
        self.clipChanged(QtGui.QClipboard.Clipboard)

        self.text_fname=None
        self.style_fname=None
        self.pdf_fname=None

        self.ui.searchbar.setVisible(False)
        self.ui.searchWidget=SearchWidget()
        self.ui.searchbar.addWidget(self.ui.searchWidget)
        self.ui.actionFind.triggered.connect(self.ui.searchbar.show)
        self.ui.actionFind.triggered.connect(self.ui.searchWidget.ui.text.setFocus)
        self.ui.searchWidget.ui.close.clicked.connect(self.ui.searchbar.hide)
        self.ui.searchWidget.ui.close.clicked.connect(self.returnFocus)
        self.ui.searchWidget.ui.next.clicked.connect(self.doFind)
        self.ui.searchWidget.ui.previous.clicked.connect(self.doFindBackwards)

        self.updatePdf()

        self.renderTimer=QtCore.QTimer()
        self.renderTimer.timeout.connect(self.on_actionRender_triggered)
        self.renderTimer.start(5000)
Пример #23
0
        self.setExtraSelections(extraSelections)


if __name__ == "__main__":

    try:
        import json
    except ImportError:
        import simplejson as json
    from highlighter import Highlighter

    app = QtGui.QApplication(sys.argv)

    js = CodeEditor()
    js.setWindowTitle('javascript')
    hl = Highlighter(js.document(), "javascript")
    js.show()

    def validateJSON():
        style = str(js.toPlainText())
        if not style.strip():  #no point in validating an empty string
            return
        pos = None
        try:
            json.loads(style)
        except ValueError:
            _, e, _ = sys.exc_info()
            s = str(e)
            print(s)
            if s == 'No JSON object could be decoded':
                pos = 0
Пример #24
0
    def openFile(self):
        file = QtWidgets.QFileDialog.getOpenFileName(None, "Open File", "", "NW4F Shader Archive (*.sharc)")[0]
        if not (file and os.path.isfile(file)):
            return

        self.closeFile()
        self.fileLineEdit.setText(file)

        with open(file, 'rb') as inf:
            inb = inf.read()

        self.sharc.set(*sharc.load(inb), sharc.header)
        self.numPrograms = self.sharc.progList.len()

        self.codeFiles = []
        for code in self.sharc.codeList:
            self.codeFiles.append(code.name)

        for program in self.sharc.progList:
            model = ShaderModel(self)
            model.vertexCode.addItems(self.codeFiles)
            model.fragmentCode.addItems(self.codeFiles)
            model.vertexCode.setCurrentIndex(program.vtxShIdx)
            model.fragmentCode.setCurrentIndex(program.frgShIdx)

            for i, macro in enumerate(program.vertexMacros):
                nameCell = QtWidgets.QTableWidgetItem()
                valueCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(macro.name)
                valueCell.setText(macro.value)

                model.vertexMacros.setItem(i, 0, nameCell)
                model.vertexMacros.setItem(i, 1, valueCell)
                model.vertexMacros.setRowCount(i + 2)

            for i, macro in enumerate(program.fragmentMacros):
                nameCell = QtWidgets.QTableWidgetItem()
                valueCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(macro.name)
                valueCell.setText(macro.value)

                model.fragmentMacros.setItem(i, 0, nameCell)
                model.fragmentMacros.setItem(i, 1, valueCell)
                model.fragmentMacros.setRowCount(i + 2)

            for i, sym in enumerate(program.uniformVariables):
                nameCell = QtWidgets.QTableWidgetItem()
                defaultValCell = QtWidgets.QTableWidgetItem()
                offsetCell = QtWidgets.QTableWidgetItem()
                symCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(sym.variable.name)
                defaultValCell.setText(str(sym.variable.default))
                offsetCell.setText(str(sym.variable.offset))
                symCell.setText(sym.name)

                model.uniformVars.setItem(i, 0, nameCell)
                model.uniformVars.setItem(i, 1, defaultValCell)
                model.uniformVars.setItem(i, 2, offsetCell)
                model.uniformVars.setItem(i, 3, symCell)
                model.uniformVars.setRowCount(i + 2)

            for i, sym in enumerate(program.uniformBlocks):
                nameCell = QtWidgets.QTableWidgetItem()
                defaultValCell = QtWidgets.QTableWidgetItem()
                symCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(sym.variable.name)
                defaultValCell.setText(str(sym.variable.default))
                symCell.setText(sym.name)

                model.uniformBlocks.setItem(i, 0, nameCell)
                model.uniformBlocks.setItem(i, 1, defaultValCell)
                model.uniformBlocks.setItem(i, 3, symCell)
                model.uniformBlocks.setRowCount(i + 2)

            for i, sym in enumerate(program.samplerVariables):
                nameCell = QtWidgets.QTableWidgetItem()
                symCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(sym.variable.name)
                symCell.setText(sym.name)

                model.samplerVars.setItem(i, 0, nameCell)
                model.samplerVars.setItem(i, 3, symCell)
                model.samplerVars.setRowCount(i + 2)

            for i, sym in enumerate(program.attribVariables):
                nameCell = QtWidgets.QTableWidgetItem()
                symCell = QtWidgets.QTableWidgetItem()

                nameCell.setText(sym.variable.name)
                symCell.setText(sym.name)

                model.vertexAttribs.setItem(i, 0, nameCell)
                model.vertexAttribs.setItem(i, 3, symCell)
                model.vertexAttribs.setRowCount(i + 2)

            modelItem = QtWidgets.QTreeWidgetItem(1)
            modelItem.setText(0, program.name)
            self.treeWidget.topLevelItem(0).addChild(modelItem)
            self.widgets.addWidget(model)

        for code in self.sharc.codeList:
            source = ShaderSource()
            highlighter = Highlighter(source.document())
            source.setPlainText(code.code)

            sourceItem = QtWidgets.QTreeWidgetItem(2)
            sourceItem.setText(0, code.name)
            self.treeWidget.topLevelItem(1).addChild(sourceItem)
            self.widgets.addWidget(source)

        if self.numPrograms:
            self.treeWidget.topLevelItem(0).setExpanded(True)
            self.treeWidget.topLevelItem(0).child(0).setSelected(True)

        if self.sharc.codeList.len():
            self.treeWidget.topLevelItem(1).setExpanded(True)
Пример #25
0
 def __init__(self):
     super().__init__()
     self.ui = Ui_MainWindow()
     self.init_UI()  # 界面绘制交给InitUi方法
     self.file_status = FileStatus()
     self.highlighter = Highlighter(self.ui)
Пример #26
0
    def add(self):
        current = self.treeWidget.currentItem()
        if current.type() == 0:
            index = self.treeWidget.indexOfTopLevelItem(current)

        else:
            index = current.type() - 1

        if index == 0:
            name = QtWidgets.QInputDialog.getText(self, "Choose name",
                                                  "Choose a name for this shader model (if exists, won't be added):",
                                                  QtWidgets.QLineEdit.Normal)[0]

            if not name:
                return

            for i in range(self.treeWidget.topLevelItem(0).childCount()):
                modelItem = self.treeWidget.topLevelItem(0).child(i)
                if modelItem.text(0) == name:
                    return

            model = ShaderModel(self)
            model.vertexCode.addItems(self.codeFiles)
            model.fragmentCode.addItems(self.codeFiles)
            model.vertexCode.setCurrentIndex(-1)
            model.fragmentCode.setCurrentIndex(-1)

            modelItem = QtWidgets.QTreeWidgetItem(1)
            modelItem.setText(0, name)
            self.treeWidget.topLevelItem(0).addChild(modelItem)
            self.widgets.addWidget(model)

        else:
            file = QtWidgets.QFileDialog.getOpenFileName(None, "Open File", "", "GLSL Shader (*.sh *.glsl)")[0]
            if not (file and os.path.isfile(file)):
                return

            name = os.path.basename(file)
            if name in self.codeFiles:
                return

            self.codeFiles.append(name)

            code = sharc.ShaderCode()
            code.name = name

            with open(file, encoding='utf-8') as inf:
                code.code = inf.read()

            self.sharc.codeList.append(code)

            source = ShaderSource()
            highlighter = Highlighter(source.document())
            source.setPlainText(code.code)

            sourceItem = QtWidgets.QTreeWidgetItem(2)
            sourceItem.setText(0, code.name)
            self.treeWidget.topLevelItem(1).addChild(sourceItem)
            self.widgets.addWidget(source)

            for i in range(self.numPrograms):
                model = self.widgets.widget(i)

                vtxShIdx = model.vertexCode.currentIndex()
                model.vertexCode.clear()
                model.vertexCode.addItems(self.codeFiles)
                model.vertexCode.setCurrentIndex(vtxShIdx)

                frgShIdx = model.fragmentCode.currentIndex()
                model.fragmentCode.clear()
                model.fragmentCode.addItems(self.codeFiles)
                model.fragmentCode.setCurrentIndex(frgShIdx)
Пример #27
0
    def __init__(self):
        super().__init__()

        self.title('Python Text Editor v3')
        self.geometry('800x600')

        self.foreground = 'black'
        self.background = 'lightgrey'
        self.text_foreground = '#313131'
        self.text_background = '#f0f0f0'
        self.terminal_background = 'darkcyan'
        self.terminal_foreground = 'white'

        self.config_dir = os.path.join(str(Path.home()), '.tkedit')

        self.default_scheme_path = os.path.join(self.config_dir,
                                                'schemes/default.yaml')
        self.python_language_path = os.path.join(self.config_dir,
                                                 'languages/python.yaml')
        self.font_scheme_path = os.path.join(self.config_dir,
                                             'schemes/font.yaml')
        self.create_config_directory_if_needed()

        self.load_scheme_file(self.default_scheme_path)
        self.configure_ttk_elements()

        # Change
        self.font_size = 14
        self.font_family = "Droid Sana Mono"

        self.terminal_font_size = 12
        self.terminal_font_family = "Consolas"
        # Change

        self.load_font_file(self.font_scheme_path)

        self.text_area = TextArea(self,
                                  bg=self.text_background,
                                  fg=self.text_foreground,
                                  undo=True,
                                  font=(self.font_family, self.font_size))

        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.scroll_text)
        self.text_area.configure(yscrollcommand=self.scrollbar.set)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg="grey",
                                        fg="white",
                                        width=1,
                                        font=(self.font_family,
                                              self.font_size))
        self.highlighter = Highlighter(self.text_area,
                                       self.python_language_path)
        self.terminal = Terminal(self,
                                 height=8,
                                 bg=self.terminal_background,
                                 fg=self.terminal_foreground,
                                 undo=True,
                                 font=(self.terminal_font_family,
                                       self.terminal_font_size))

        self.menu = tk.Menu(self, bg=self.background, fg=self.foreground)
        self.all_menus = [self.menu]

        self.text_area.__setattr__("update_line",
                                   self.line_numbers.force_update)
        self.text_area.__setattr__("update_highlight",
                                   self.highlighter.force_highlight)

        sub_menu_items = ["file", "edit", "tools", "help"]
        self.generate_sub_menus(sub_menu_items)
        self.configure(menu=self.menu)

        self.right_click_menu = tk.Menu(self,
                                        bg=self.background,
                                        fg=self.foreground,
                                        tearoff=0)
        self.right_click_menu.add_command(label='Cut', command=self.edit_cut)
        self.right_click_menu.add_command(label='Copy', command=self.edit_copy)
        self.right_click_menu.add_command(label='Paste',
                                          command=self.edit_paste)
        # Change
        self.right_click_menu.add_command(label='Undo', command=self.edit_undo)
        self.right_click_menu.add_command(label='Redo', command=self.edit_redo)
        # Change
        self.all_menus.append(self.right_click_menu)

        # change
        self.count_area = tk.Text(self, height=1)
        self.count_area.pack(side=tk.BOTTOM, fill=tk.X)
        # change
        # Change
        self.terminal.pack(side=tk.BOTTOM, fill=tk.X)
        # Change
        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()

        self.open_file = ''
Пример #28
0
    def __init__(self):
        '''
        @update 1.添加横向滚动条 2.修正行号与滚动条和窗口的关联 3.修正行号显示
        '''
        super().__init__()

        self.title('Python Text Editor v3')
        self.geometry('800x600')

        self.foreground = 'black'
        self.background = 'lightgrey'
        self.text_foreground = 'black'
        self.text_background = 'white'

        self.config_dir = os.path.join(str(Path.home()), '.tkedit')

        self.default_scheme_path = os.path.join(self.config_dir,
                                                'schemes/default.yaml')
        self.python_language_path = os.path.join(self.config_dir,
                                                 'languages/python.yaml')
        self.none_language_path = os.path.join(self.config_dir,
                                               'languages/None.yaml')
        self.font_scheme_path = os.path.join(self.config_dir,
                                             'fonts/font.yaml')
        self.create_config_directory_if_needed()

        self.load_scheme_file(self.default_scheme_path)
        self.configure_ttk_elements()

        self.font_size = 15
        self.font_family = "Ubuntu Mono"
        self.load_font_file(self.font_scheme_path)

        self.text_area = TextArea(self,
                                  bg=self.text_background,
                                  fg=self.text_foreground,
                                  undo=True,
                                  font=(self.font_family, self.font_size))

        self.scrollbar = ttk.Scrollbar(orient="vertical",
                                       command=self.text_area.yview)
        self.scrollbar2 = ttk.Scrollbar(orient="horizontal",
                                        command=self.text_area.xview)

        self.line_numbers = LineNumbers(self,
                                        self.text_area,
                                        bg="grey",
                                        fg="white",
                                        width=1,
                                        font=(self.font_family,
                                              self.font_size))
        self.scrollbar.config(command=self.text_area.yview)
        self.text_area.config(yscrollcommand=self.scrollbar.set,
                              xscrollcommand=self.scrollbar2.set)
        self.highlighter = Highlighter(self.text_area, self.none_language_path)

        self.menu = tk.Menu(self, bg=self.background, fg=self.foreground)
        self.all_menus = [self.menu]

        sub_menu_items = ["file", "edit", "tools", "help"]
        self.generate_sub_menus(sub_menu_items)
        self.configure(menu=self.menu)

        self.right_click_menu = tk.Menu(self,
                                        bg=self.background,
                                        fg=self.foreground,
                                        tearoff=0)
        self.right_click_menu.add_command(label='Cut', command=self.edit_cut)
        self.right_click_menu.add_command(label='Copy', command=self.edit_copy)
        self.right_click_menu.add_command(label='Paste',
                                          command=self.edit_paste)
        self.all_menus.append(self.right_click_menu)

        self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
        self.scrollbar2.pack(side=tk.BOTTOM, fill=tk.X)
        self.line_numbers.pack(side=tk.LEFT, fill=tk.Y)
        self.text_area.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

        self.bind_events()

        self.open_file = ''