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