Пример #1
0
    def create_widgets(self, base, rows=15, column=60):
        cc = self.cc
        fr = Frame(base).pack(side='top', fill='both', expand=1)
        sbar = Scrollbar(fr)
        self.buf = buf = tk.Text(fr, width=column, height=rows, padx=5)
        sbar.config(command=buf.yview)
        sbar.pack(side='right', fill='y')
        buf.config(yscrollcommand=sbar.set)
        buf.pack(side='left', fill='both', expand=1)

        for cond, proc in (
                #('<Button>', self._append_event_text),
            ('<ButtonPress>', self._append_event_text),
            ('<ButtonRelease>', self._append_event_text),
            ('<KeyPress>', self._append_event_text),
            ('<KeyRelease>', self._append_event_text),
                #('<Key>', self._append_event_text),
            ('<Control-w>', lambda e, ac=cc: ac.close()),
            ('<Enter>', lambda e, wi=buf: wi.focus_set()),
            ('<MouseWheel>', self._append_event_text),
            ('<Configure>', self._configure_notify),
        ):
            buf.bind(cond, proc)

        #cc.top.bind('<Configure>', self._configure_notify, '+')
        self.timer = None
        shortcut = self.find_menu('eventview-shortcut')
        ui.register_shortcut(buf, shortcut)
        #if ui.need_unpost: shortcut.bind('<FocusOut>', lambda ev, wi=shortcut: wi.unpost())
        buf.insert(INSERT,
                   'platform: %s: %s\n' % (platform.system(), sys.platform))
Пример #2
0
    def create_widgets(self, base, rows=15, column=60):
        buf = tk.Text(base, width=column, height=rows, undo=1,
                      maxundo=1000).pack(fill='both', expand=1)
        #buf = ui.scrolled_widget(base, tk.Text, width=column, height=rows, undo=1, maxundo=1000)
        self.buf = buf
        shortcut = self.find_menu('text-shortcut')
        ui.register_shortcut(buf, shortcut)

        cc = self.cc
        cc.bind('<MouseWheel>', self._adjust_font_size, '+')
        cc.bind('<Button-4>', self._adjust_font_size, '+')
        cc.bind('<Button-5>', self._adjust_font_size, '+')
Пример #3
0
    def create_widgets(self, base, columns=30, rows=5):
        cc = self.cc
        buf = tk.ScrolledText(base,
                              width=columns,
                              height=rows,
                              undo=1,
                              maxundo=1000)
        buf.pack(fill='both', expand=1)
        self.buf = buf
        buf.insert(END, 'メニューの機能試験')
        cc.find_status_bar()

        shortcut = self.find_menu('text-shortcut')
        ui.register_shortcut(buf, shortcut)

        cc.bind('<MouseWheel>', self._adjust_font_size, '+')
        cc.bind('<Button-4>', self._adjust_font_size, '+')
        cc.bind('<Button-5>', self._adjust_font_size, '+')
Пример #4
0
    def create_widgets(self, base):
        cc = self.cc
        cc.find_status_bar()

        if False:
            fr = Frame(base)
            fr.pack(side='top', fill='x')

            cap = '&Tree Editor'
            cap = 'ツリーエディタ(&T)'
            pos, label = item_caption(cap)
            cap = Label(fr, text=label, underline=pos).pack(side='left')

        fr = Frame(base).pack(side='top', fill='both', expand=1)

        tree = Treeview(fr,
                        show='tree',
                        takefocus=True,
                        height=10,
                        selectmode='extended')
        self.tree = tree
        ysb = Scrollbar(fr, orient='vertical', command=tree.yview)
        ysb.pack(side='right', fill='y')
        tree.configure(yscroll=ysb.set)
        tree.pack(side='top', fill='both', expand=1)
        tree.heading('#0', text='Path', anchor='w')

        shortcut = self.find_menu('tree-shortcut')
        ui.register_shortcut(tree, shortcut)

        tree.timer = None
        delay_msec = 600

        def _delay_proc(event):
            # 遅延表示
            if tree.timer: tree.after_cancel(tree.timer)
            tiid = tree.focus()
            if tiid:
                tree.timer = tree.after(
                    delay_msec,
                    lambda wi=tree, iid=tiid: trace(wi.index(iid),
                                                    wi.item(iid, 'text'), iid))

        tree.bind('<<TreeviewSelect>>', _delay_proc)
        tree.bind('<<TreeviewOpen>>', _delay_proc)
        tree.bind('<<TreeviewClose>>', _delay_proc)

        sm = cc.menu['select-mode']
        sm.set('sm.extended')
        self.selection_mode = sm

        self.__test_data(tree)

        for ev, cmd in (
            ('<Control-c>', 'copy'),
            ('<Control-Insert>', 'copy'),
            ('<Control-v>', 'paste'),
            ('<Shift-Insert>', 'paste'),
            ('<Delete>', 'delete-node'),
            ('<F2>', 'rename'),
            ('<Control-w>', 'close'),
            ('<Control-Right>', 'expand-all'),
            ('<Control-Left>', 'collapse-all'),
        ):
            tree.bind(ev, self.bind_proc(cmd))
Пример #5
0
    def create_widgets(self, base, ModelClass=_EmptyTableData, *args, **opts):
        """コンポーネントを作成する"""
        cc = self.cc
        td = ModelClass(*args, **opts)
        hinfo = td.column_info

        cols = [hi[0] for hi in hinfo]
        if not cols: raise ui.AppException('no column')

        fr = Frame(base)
        self.style_name = tree_style = 'Sheet%d.Treeview' % 1
        self.table = tbl = Treeview(fr,
                                    takefocus=1,
                                    show='tree headings',
                                    columns=cols,
                                    style=tree_style)
        fr.pack(side='top', expand=1, fill='both')
        ysb = Scrollbar(fr, orient='vertical', command=tbl.yview)
        tbl.configure(yscroll=ysb.set)
        ysb.pack(side='right', fill='y')

        xsb = Scrollbar(base, orient='horizontal', command=tbl.xview)
        tbl.configure(xscroll=xsb.set)
        xsb.bind('<MouseWheel>',
                 lambda e, wi=tbl: wi.xview_scroll(
                     -1 * (1 if e.delta > 0 else -1), 'page'))
        xsb.bind('<Enter>', lambda e, wi=xsb: wi.focus_set())

        if len(hinfo[0]) == 4:
            for col, cap, w, st in hinfo:
                tbl.heading(col,
                            text=cap,
                            command=lambda c=col: sorter(tbl, c, c, 0))
                tbl.column(col, stretch=st, width=w)

        elif len(hinfo[0]) == 6:
            for col, cap, w, st, sc, isFloat in hinfo:
                tbl.heading(col,
                            text=cap,
                            command=lambda tc=col, c=sc, fc=isFloat: sorter(
                                tbl, tc, c, 0, fc))
                tbl.column(col, stretch=st, width=w)

        tbl.column('#0', stretch=False, width=80, anchor='e')
        #tbl.heading('#0', anchor='e')

        tbl.pack(side='left', expand=1, fill='both')
        xsb.pack(side='top', fill='x')
        ui.register_editable_cell(tbl)

        self._load_table_data(td)

        if 0:
            # フォントを指定する場合
            def set_font(font):
                self.font = font

            fn = 'Times-10-normal'
            tbl.after_idle(lambda font=fn: set_font(font))

        shortcut = self.find_menu('tsv-shortcut')
        ui.register_shortcut(tbl, shortcut)

        for ev, cmd in (
            ('<Control-a>', 'select-all'),
            ('<Control-c>', 'copy'),
            ('<Control-d>', 'delete'),
            ('<Control-Insert>', 'copy'),
            ('<Control-v>', 'paste'),
            ('<Shift-Insert>', 'paste'),
            ('<Control-d>', 'duplicate'),
            ('<Control-q>', 'exit'),
            ('<Control-w>', 'close'),
            ('<Delete>', 'delete'),
        ):
            tbl.bind(ev, self.bind_proc(cmd))

        cc.bind('<MouseWheel>', self._adjust_font_size, '+')
        cc.bind('<Button-4>', self._adjust_font_size, '+')
        cc.bind('<Button-5>', self._adjust_font_size, '+')