class FileListApp(Gtk.Application):
    def __init__(self):
        super(FileListApp, self).__init__(
            application_id="apps.nassimian.filelisting",
            flags=Gio.ApplicationFlags.FLAGS_NONE
        )

        self.connect("activate", self.on_activate)


    def on_activate(self, data=None):
        self.treeview = FileListView(column_idx=(1, 3, 2))
        self.treeview.connect('dir-changed', self.on_dir_changed)

        # Create a new window
        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
        window.set_size_request(300, 200)
        window.connect("destroy", Gtk.main_quit)

        scrolledwindow = Gtk.ScrolledWindow()
        scrolledwindow.add(self.treeview)
        window.add(scrolledwindow)
        window.set_title(self.treeview.get_model().dirname)
        window.set_application(self)
        window.show_all()


    def on_dir_changed(self, treeview, dirname):
        self.get_windows()[0].set_title(dirname)
class FileListApp(Gtk.Application):
    def __init__(self):
        super(FileListApp, self).__init__(
            application_id="apps.nassimian.filelisting",
            flags=Gio.ApplicationFlags.FLAGS_NONE
        )

    def do_activate(self, data=None):
        self.treeview = FileListView(column_idx=(1, 3, 2))
        self.treeview.connect('dir-activated', self.on_dir_activated)
        self.treeview.connect('file-activated', self.on_file_activated)

        # Create a new window
        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
        window.set_size_request(300, 200)
        window.connect("destroy", Gtk.main_quit)

        scrolledwindow = Gtk.ScrolledWindow()
        scrolledwindow.add(self.treeview)
        window.add(scrolledwindow)
        window.set_title(self.treeview.get_model().dirname)
        window.set_application(self)
        window.show_all()


    def on_dir_activated(self, treeview, dirname):
        self.get_windows()[0].set_title(dirname)

    def on_file_activated(self, treeview, filename):
        try:
            check_call(['xdg-open', filename])
        except OSError: # Platform not freedesktop.org-compatible
            if os.platform == 'darwin':
                check_call(['open', filename])
            else:
                os.startfile(filename)
    def on_activate(self, data=None):
        self.treeview = FileListView(column_idx=(1, 3, 2))
        self.treeview.connect('dir-changed', self.on_dir_changed)

        # Create a new window
        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
        window.set_size_request(300, 200)
        window.connect("destroy", Gtk.main_quit)

        scrolledwindow = Gtk.ScrolledWindow()
        scrolledwindow.add(self.treeview)
        window.add(scrolledwindow)
        window.set_title(self.treeview.get_model().dirname)
        window.set_application(self)
        window.show_all()