SolarFM/src/versions/solarfm-0.0.1/solarfm/core/widgets/fm_widget/file_view.py

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