| 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)
|
|---|