#!/usr/bin/python3

import sys
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class AppWindow(Gtk.ApplicationWindow):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_border_width(10)
        self.vpaned = Gtk.Paned.new(Gtk.Orientation.VERTICAL)
        hpaned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
        button0 = Gtk.Button.new_with_label("TabBar")
        button1 = Gtk.Button.new_with_label("SideBar")
        button2 = Gtk.Button.new_with_label("TreeView")
        button0.connect("clicked", self.on_button_clicked)
        button1.connect("clicked", self.on_button_clicked)
        button2.connect("clicked", self.on_button_clicked)
        self.vpaned.add1(hpaned)
        self.vpaned.add2(button0)
        hpaned.add1(button1)
        hpaned.add2(button2)
        self.add(self.vpaned)
        self.set_size_request(400, 250)
        self.show_all()

    def on_button_clicked(self, button):
        self.destroy()

class Application(Gtk.Application):
    conf_filepath = 'test_paned.conf'

    def __init__(self, *args, **kwargs):
        super().__init__(*args, application_id="org.example.myapp",
                         **kwargs)
        self.window = None

    def do_activate(self):
        if not self.window:
            self.window = AppWindow(application=self, title="Panes")
        self.window.show_all()
        self.window.present()
        self.window.vpaned.connect('notify::position', self.on_position_event)
        try:
            with open(self.conf_filepath) as _f:
                position = int(_f.read())
                self.window.vpaned.set_position(position)
        except FileNotFoundError:
            pass

    def on_position_event(self, widget, param):
        print(widget.get_position())
        with open(self.conf_filepath, 'w') as _f:
            _f.write(str(widget.get_position()))

if __name__ == "__main__":
    app = Application()
    app.run(sys.argv)
