Пример #1
0
    def update_doc(self, items):
        self.items = list(items)
        self.cursel = None

        self.document.marks.clear()
        self.document.delete(0, self.document.endpos())
        with dialogmode.FormBuilder(self.document) as f:
            prev = None
            for item in self.items:
                if item.value.token == 'namespace':
                    if prev:
                        f.append_text(
                            'default',
                            '\n' + '  ' * len(item.value.get_parents()))
                    f.append_text(item.style, item.text, mark_pair=item)

                else:
                    if prev and (prev.value.token == 'namespace'
                                 or prev.value.get_parents() !=
                                 item.value.get_parents()):

                        f.append_text(
                            'default',
                            '\n' + '  ' * (len(item.value.get_parents())))

                    f.append_text(item.style, item.text, mark_pair=item)
                    f.append_text('default', ' ')

                prev = item
Пример #2
0
    def build_msgbox(cls, caption, options, callback, keys=None, border=False):
        doc = document.Document()
        mode = cls()
        mode.callback = callback
        mode.keys = keys
        mode.border = border
        doc.setmode(mode)

        with dialogmode.FormBuilder(doc) as f:

            # caption
            if caption:
                f.append_text('caption', caption)
                f.append_text('default', ' ')

            mode.shortcuts = {}
            for n, option in enumerate(options):
                m = re.search(r'&([^&])', option)
                shortcut = m.group(1)
                mode.shortcuts[shortcut.lower()] = option

                f.append_text('button',
                              option,
                              on_shortcut=lambda wnd, key=shortcut: mode.
                              on_shortcut(wnd, key),
                              shortcut_style='button.shortcut')

                if n < len(options) - 1:
                    f.append_text('separator', cls.SEPARATOR)

            f.append_text('default', ' ')
            f.append_text('underline', ' ')

        return doc
Пример #3
0
    def build(self, stack):
        self.document.marks.clear()
        self.document.delete(0, self.document.endpos())

        self.stack = tuple(stack or ())
        with dialogmode.FormBuilder(self.document) as f:
            for n, (fname, lno, funcname, lines) in enumerate(self.stack):
                s = self.document.endpos()

                f.append_text('funcname', funcname.replace('&', '&&'))
                f.append_text('default', ':')

                dirname, filename = os.path.split(fname)
                f.append_text('filename', filename.replace('&', '&&'))
                f.append_text('default', ':')

                f.append_text('lineno', str(lno))
                f.append_text('default', ':')

                f.append_text('dirname', dirname.replace('&', '&&') + '\n')

                line = (lines[0] if lines else '').strip()
                if not line:
                    line = '(empty line)'
                f.append_text('line', line.replace('&', '&&') + '\n')

                t = self.document.endpos()
                self.document.marks[('stack', n)] = (s, t)
Пример #4
0
    def _set_log(self):
        self.document.delete(0, self.document.endpos())

        with dialogmode.FormBuilder(self.document) as f:
            f.append_text('git-log-header', 'git log')
            f.append_text('right-button',
                          '[Pre&v 100]',
                          shortcut_style='right-button.shortcut')
            f.append_text('right-button',
                          '[Nex&t 100]',
                          shortcut_style='right-button.shortcut')
            #            f.append_text('right-button', '[&Grep]',
            #                          shortcut_style='right-button.shortcut')
            #            f.append_text('right-button', '[Pa&th]',
            #                          shortcut_style='right-button.shortcut')
            f.append_text('git-log-header', '\n')

        default = self.get_styleid('default')
        self._commits = list(
            self._repo.iter_commits(max_count=self.max_count,
                                    skip=self._page_from))

        for x in self._commits:
            s = datetime.datetime.fromtimestamp(
                x.committed_date, TZ).strftime('%Y/%m/%d %H:%M:%S')
            self.document.append(s + ' ', default)
            self.document.append('{:12s} '.format(x.author.name[:12]), default)
            msgs = filter(lambda l: l,
                          (l.strip() for l in x.message.split('\n')))
            self.document.append(x.message.split('\n')[0] + '\n', default)
Пример #5
0
    def test_build_shortcut(self):
        kaa.app.DEFAULT_THEME = 'basic'

        doc = self._getdoc('')

        doc.mode.themes = [{'basic': [
            Style('default', 'default', 'default', False, False),
            Style('shortcut', 'default', 'default', False, False),
        ]}]
        doc.mode._build_theme()

        f = dialogmode.FormBuilder(doc)

        def cb(wnd):
            pass
        f.append_text('default', 'ab&cdef', on_shortcut=cb,
                      shortcut_style='shortcut', shortcut_mark='mark1')

        assert doc.gettext(0, doc.endpos()) == 'abcdef'

        id1 = doc.mode.get_styleid('default')
        id2 = doc.mode.get_styleid('shortcut')
        assert doc.styles.getints(
            0, doc.endpos()) == [id1, id1, id2, id1, id1, id1]
        assert doc.marks['mark1'] == 2
Пример #6
0
    def build(cls, target):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)
        mode.target = target

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption', 'Select word:')
            f.append_text('default', ' ')
            f.append_text('default', '', mark_pair='query')
            f.append_text('default', ' ')

            f.append_text('right-button', '[&Replace]',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=mode.selected)

            f.append_text('right-button', '[&Add word]',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=mode.register)

            f.append_text('right-button', '[&Skip]',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=mode.skip)

            f.append_text('right-button', '[&Quit]',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=mode.quit)

        return doc
Пример #7
0
    def test_build_mark(self):
        doc = self._getdoc('')

        f = dialogmode.FormBuilder(doc)
        f.append_text('default', 'abc', 'mark1', 'mark2')
        f.append_text('default', 'def', 'mark3', 'mark4')

        assert doc.gettext(doc.marks['mark3'], doc.marks['mark4']) == 'def'
Пример #8
0
    def test_build(self):
        doc = self._getdoc('')

        f = dialogmode.FormBuilder(doc)
        f.append_text('default', 'abc')

        assert doc.gettext(0, doc.endpos()) == 'abc'
        assert doc.styles.getints(0, doc.endpos()) == [0] * doc.endpos()
Пример #9
0
    def build(cls, target):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)
        mode.target = target

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption', 'Select word:')
            f.append_text('default', ' ')
            f.append_text('default', '', mark_pair='query')

        return doc
Пример #10
0
    def build(cls, target):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)

        mode.org_wnd = target
        mode.target = target.splitter.parent

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption',
                          'Hit cursor left/right key to resize window.')
        return doc
Пример #11
0
    def build_document(self):
        with dialogmode.FormBuilder(self.document) as f:
            self._build_input(f)
            self._build_buttons(f)
            self._build_options(f)

            self.document.insert(self.document.marks['searchtext'][0],
                                 self.option.text)

            self.update_option_style()

        kaa.app.messagebar.set_message(
            "Hit alt+N/alt+P to search Next/Prev. Hit up to show history.")
Пример #12
0
    def build(cls, caption, callback):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)

        mode.callback = callback

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption', caption)
            f.append_text('default', ' ')
            f.append_text('default', '', mark_pair='query')

        return doc
Пример #13
0
    def build(cls, caption, callback, filter=None, history=(), value=''):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)
        mode.caption = caption
        mode.callback = callback
        mode.filter = filter
        mode.history = history

        with dialogmode.FormBuilder(doc) as f:
            # caption
            f.append_text('caption', caption)
            f.append_text('default', ' ')
            f.append_text('default', value, mark_pair='inputtext')

        return doc
Пример #14
0
    def update_doc(self, items):
        self.items = list(collections.OrderedDict((i, 1)
                                                  for i in items).keys())

        self.cursel = None

        self.document.marks.clear()
        self.document.delete(0, self.document.endpos())
        with dialogmode.FormBuilder(self.document) as f:
            if self.caption:
                f.append_text(self.CAPTION_STYLE, self.caption + ':\n')

            for n, item in enumerate(self.items):
                f.append_text(item.style, item.text, mark_pair=item)
                if n != (len(self.items) - 1):
                    f.append_text('default', self.SEP)
Пример #15
0
    def build(self, stack):
        self.document.marks.clear()
        self.document.delete(0, self.document.endpos())

        self.stack = tuple(stack or ())
        with dialogmode.FormBuilder(self.document) as f:
            f.append_text('button',
                          '[&Step]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_step)

            f.append_text('button',
                          '[&Next]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_next)

            f.append_text('button',
                          '[&Return]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_return)

            f.append_text('button',
                          '[&Continue]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_continue)

            f.append_text('button',
                          '[&Expr]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_expr)

            f.append_text('button',
                          '[&Kill]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_kill)

            f.append_text('button',
                          '[&Breakpoint]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_breakpoint)

            f.append_text('button',
                          '[&Quit]',
                          shortcut_style='button.shortcut',
                          on_shortcut=self.on_quit)

            f.append_text('status', '-Waiting-', mark_pair='status')
Пример #16
0
    def build_document(self):
        with dialogmode.FormBuilder(self.document) as f:
            self._build_input(f)
            self._build_buttons(f)
            self._build_options(f)

            self.document.insert(self.document.marks['searchtext'][0],
                                 self.option.text)

            self.document.insert(self.document.marks['replacetext'][0],
                                 self.option.replace_to)

            self.update_option_style()

        kaa.app.messagebar.set_message(
            "Hit enter to move field. Hit up to show history.`")
        return
Пример #17
0
    def build(cls, filename, callback):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)

        mode.callback = callback

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption', 'Directory name:')
            f.append_text('default', ' ')
            f.append_text('default', filename, mark_pair='filename')
            f.append_text('default', ' ')

            f.append_text(
                'right-button',
                '[&Select this dir]',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.on_select_dir(wnd))

        return doc
Пример #18
0
    def build(cls, caption, items, sel, callback, onchange=None):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)

        mode.items = items
        mode.cursel = sel
        mode.callback = callback
        mode.onchange = onchange

        with dialogmode.FormBuilder(doc) as f:

            if caption:
                f.append_text('caption', caption.replace('&', '&&'))
                f.append_text('default', cls.CAPTIONSEP)

            for i, item in enumerate(items):
                f.append_text('default', item.replace('&', '&&'), mark_pair=i)
                f.append_text('default', cls.ITEMSEP)

            mode._update_style(None)
        return doc
Пример #19
0
    def build(cls, filename, newline, encoding, callback):
        doc = document.Document()
        mode = cls()
        doc.setmode(mode)

        mode.newline = newline if newline else kaa.app.config.DEFAULT_NEWLINE
        mode.encoding = encoding if encoding else kaa.app.config.DEFAULT_ENCODING
        mode.callback = callback

        with dialogmode.FormBuilder(doc) as f:
            f.append_text('caption', 'Filename:')
            f.append_text('default', ' ')
            f.append_text('default', filename, mark_pair='filename')
            f.append_text('default', ' ')

            f.append_text(
                'right-button',
                '[&Encoding:{}]'.format(mode.encoding),
                mark_pair='enc',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.select_encoding(wnd))

            f.append_text(
                'right-button',
                '[&Newline:{}]'.format(mode.newline),
                mark_pair='newline',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.select_newline(wnd))

            f.append_text(
                'right-button',
                '[&Create dir]',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.create_dir(wnd))

        return doc
Пример #20
0
    def build_doc(self):
        self.document.delete(0, self.document.endpos())

        filename = self.target.document.get_filename()
        dir, fname = os.path.split(filename)

        mode = self.target.document.mode
        fileinfo = self.target.document.fileinfo

        with dialogmode.FormBuilder(self.document) as f:
            f.append_text('caption', '    File name: ')
            f.append_text('default', ' {}\n'.format(fname.replace('&', '&&')))

            f.append_text('caption', '    Directory: ')
            f.append_text('default', ' {}\n'.format(dir.replace('&', '&&')))

            f.append_text('default', '\n')

            f.append_text('caption', '         Mode: ')
            f.append_text('default', ' {}     '.format(mode.MODENAME))
            f.append_text('button',
                          '[Change &Mode]\n',
                          on_shortcut=self._on_update_mode,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)

            f.append_text('caption', '     Encoding: ')
            f.append_text(
                'default',
                ' {}\n'.format(fileinfo.encoding if fileinfo else ''))

            f.append_text('caption', '      Newline: ')
            f.append_text('default',
                          ' {}\n'.format(fileinfo.newline if fileinfo else ''))

            f.append_text('caption', '  Line number: ')
            f.append_text(
                'default',
                ' {}       '.format('Show' if mode.SHOW_LINENO else 'Hide'))
            f.append_text('button',
                          '[Change &Line number]\n',
                          on_shortcut=self._on_update_lineno,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)

            f.append_text('default', '\n')

            f.append_text('caption',
                          '    Tab width: ',
                          shortcut_style='shortcut')
            f.append_text('default', ' {}          '.format(mode.tab_width))
            f.append_text('button',
                          '[Change &Tab width]\n',
                          on_shortcut=self._on_update_tab,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)

            f.append_text('caption',
                          ' Indent width: ',
                          shortcut_style='shortcut')
            f.append_text('default', ' {}          '.format(mode.indent_width))
            f.append_text('button',
                          '[Change &Indent width]\n',
                          on_shortcut=self._on_update_indent,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)

            f.append_text('caption',
                          '      Use tab: ',
                          shortcut_style='shortcut')
            f.append_text(
                'default',
                ' {}        {}'.format('Yes' if mode.indent_tab else 'No',
                                       '' if mode.indent_tab else ' '))
            f.append_text('button',
                          '[Change &Use tab]\n',
                          on_shortcut=self._on_update_usetab,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)

            f.append_text('caption',
                          '  Auto Indent: ',
                          shortcut_style='shortcut')
            f.append_text(
                'default',
                ' {}        {}'.format('Yes' if mode.auto_indent else 'No',
                                       '' if mode.auto_indent else ' '))
            f.append_text('button',
                          '[&Auto Indent]\n',
                          on_shortcut=self._on_update_autoindent,
                          shortcut_style='shortcut',
                          shortcut_need_alt=False)
Пример #21
0
    def build_document(self):
        with dialogmode.FormBuilder(self.document) as f:
            # search text
            f.append_text('caption', '   Search:')
            f.append_text('default', ' ')
            f.append_text('default', self.option.text, mark_pair='searchtext')
            f.append_text('default', '\n')

            # directory
            f.append_text('caption', 'Directory:')
            f.append_text('default', ' ')

            path = self.option.directory
            if path:
                p = kaa.utils.shorten_filename(path)
                path = p if len(p) < len(path) else path
            f.append_text('default', path, mark_pair='directory')
            f.append_text('default', '\n')

            # filename
            f.append_text('caption', 'Filenames:')
            f.append_text('default', ' ')
            f.append_text('default',
                          self.option.filenames,
                          mark_pair='filenames')
            f.append_text('default', '\n')

            # working directory
            f.append_text('default', '(current dir)')
            f.append_text('default', ' ')
            f.append_text('default', os.getcwd())
            f.append_text('default', '\n')

            # buttons
            f.append_text('right-button',
                          '[&Search]',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=self.run_grep)

            f.append_text('right-button',
                          '[&Dir]',
                          mark_pair='select-dir',
                          shortcut_style='right-button.shortcut',
                          on_shortcut=self._select_dir)

            f.append_text('right-button',
                          '[&Tree]',
                          mark_pair='search-tree',
                          on_shortcut=self.toggle_option_tree,
                          shortcut_style='right-button.shortcut',
                          shortcut_mark='shortcut-t')

            f.append_text('right-button',
                          '[&Ignore case]',
                          mark_pair='ignore-case',
                          on_shortcut=self.toggle_option_ignorecase,
                          shortcut_style='right-button.shortcut',
                          shortcut_mark='shortcut-i')

            f.append_text('right-button',
                          '[&Word]',
                          mark_pair='word',
                          on_shortcut=self.toggle_option_word,
                          shortcut_style='right-button.shortcut',
                          shortcut_mark='shortcut-w')

            f.append_text('right-button',
                          '[&Regex]',
                          mark_pair='regex',
                          on_shortcut=self.toggle_option_regex,
                          shortcut_style='right-button.shortcut',
                          shortcut_mark='shortcut-r')

            f.append_text(
                'right-button',
                '[&Encoding:{}]'.format(self.option.encoding),
                mark_pair='enc',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.select_encoding(wnd))

            f.append_text(
                'right-button',
                '[&Newline:{}]'.format(self.option.newline),
                mark_pair='newline',
                shortcut_style='right-button.shortcut',
                on_shortcut=lambda wnd: wnd.document.mode.select_newline(wnd))

            self.update_option_style()
            kaa.app.messagebar.set_message(
                "Hit alt+S to begin search. Hit up to show history.")