72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
# Python imports
|
|
|
|
# Lib imports
|
|
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gtk
|
|
|
|
# Application imports
|
|
from shellfm.windows.tabs.tab import Tab
|
|
from .icon_view import IconView
|
|
|
|
|
|
|
|
|
|
class FileView(Gtk.ScrolledWindow):
|
|
"""docstring for FileView."""
|
|
|
|
def __init__(self):
|
|
super(FileView, self).__init__()
|
|
self.tab_state = Tab()
|
|
self.icon_view = IconView(self.tab_state)
|
|
self.tab_widget = self.create_tab_widget()
|
|
|
|
self._setup_styling()
|
|
self._setup_signals()
|
|
|
|
self.add(self.icon_view)
|
|
self.show_all()
|
|
|
|
|
|
def _setup_styling(self):
|
|
self.set_hexpand(True)
|
|
self.set_vexpand(True)
|
|
|
|
def _setup_signals(self):
|
|
# self.connect("update-tab-title", self._update_tab_title)
|
|
...
|
|
|
|
def _update_tab_title(self, widget=None, eve=None):
|
|
label = self.tab_widget.get_children()[0]
|
|
label.set_label(f"{self.tab_state.get_end_of_path()}")
|
|
label.set_width_chars( len(self.tab_state.get_end_of_path()) )
|
|
|
|
def set_path(self, path):
|
|
if path:
|
|
self.tab_state.set_path(path)
|
|
self.icon_view.load_store()
|
|
self._update_tab_title()
|
|
|
|
def create_tab_widget(self):
|
|
button_box = Gtk.ButtonBox()
|
|
label = Gtk.Label()
|
|
close = Gtk.Button()
|
|
icon = Gtk.Image(stock=Gtk.STOCK_CLOSE)
|
|
|
|
label.set_label(f"{self.tab_state.get_end_of_path()}")
|
|
label.set_width_chars(len(self.tab_state.get_end_of_path()))
|
|
label.set_xalign(0.0)
|
|
|
|
close.add(icon)
|
|
button_box.add(label)
|
|
button_box.add(close)
|
|
|
|
close.connect("released", self.close_tab)
|
|
|
|
button_box.show_all()
|
|
return button_box
|
|
|
|
|
|
def close_tab(self, widget, eve=None):
|
|
self.get_parent().emit('close-view', (self,))
|