1 | #!/usr/bin/python3 |
---|
2 | |
---|
3 | import sys |
---|
4 | import gi |
---|
5 | gi.require_version('Gtk', '3.0') |
---|
6 | from gi.repository import Gtk |
---|
7 | |
---|
8 | class AppWindow(Gtk.ApplicationWindow): |
---|
9 | |
---|
10 | def __init__(self, *args, **kwargs): |
---|
11 | super().__init__(*args, **kwargs) |
---|
12 | self.set_border_width(10) |
---|
13 | self.vpaned = Gtk.Paned.new(Gtk.Orientation.VERTICAL) |
---|
14 | hpaned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL) |
---|
15 | button0 = Gtk.Button.new_with_label("TabBar") |
---|
16 | button1 = Gtk.Button.new_with_label("SideBar") |
---|
17 | button2 = Gtk.Button.new_with_label("TreeView") |
---|
18 | button0.connect("clicked", self.on_button_clicked) |
---|
19 | button1.connect("clicked", self.on_button_clicked) |
---|
20 | button2.connect("clicked", self.on_button_clicked) |
---|
21 | self.vpaned.add1(hpaned) |
---|
22 | self.vpaned.add2(button0) |
---|
23 | hpaned.add1(button1) |
---|
24 | hpaned.add2(button2) |
---|
25 | self.add(self.vpaned) |
---|
26 | self.set_size_request(400, 250) |
---|
27 | self.show_all() |
---|
28 | |
---|
29 | def on_button_clicked(self, button): |
---|
30 | self.destroy() |
---|
31 | |
---|
32 | class Application(Gtk.Application): |
---|
33 | conf_filepath = 'test_paned.conf' |
---|
34 | |
---|
35 | def __init__(self, *args, **kwargs): |
---|
36 | super().__init__(*args, application_id="org.example.myapp", |
---|
37 | **kwargs) |
---|
38 | self.window = None |
---|
39 | |
---|
40 | def do_activate(self): |
---|
41 | if not self.window: |
---|
42 | self.window = AppWindow(application=self, title="Panes") |
---|
43 | self.window.show_all() |
---|
44 | self.window.present() |
---|
45 | self.window.vpaned.connect('notify::position', self.on_position_event) |
---|
46 | try: |
---|
47 | with open(self.conf_filepath) as _f: |
---|
48 | position = int(_f.read()) |
---|
49 | self.window.vpaned.set_position(position) |
---|
50 | except FileNotFoundError: |
---|
51 | pass |
---|
52 | |
---|
53 | def on_position_event(self, widget, param): |
---|
54 | print(widget.get_position()) |
---|
55 | with open(self.conf_filepath, 'w') as _f: |
---|
56 | _f.write(str(widget.get_position())) |
---|
57 | |
---|
58 | if __name__ == "__main__": |
---|
59 | app = Application() |
---|
60 | app.run(sys.argv) |
---|