Merge Stable Changesto Master #9
							
								
								
									
										3
									
								
								plugins/trasher/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								plugins/trasher/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
"""
 | 
			
		||||
    Pligin Module
 | 
			
		||||
"""
 | 
			
		||||
							
								
								
									
										3
									
								
								plugins/trasher/__main__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								plugins/trasher/__main__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
"""
 | 
			
		||||
    Pligin Package
 | 
			
		||||
"""
 | 
			
		||||
							
								
								
									
										12
									
								
								plugins/trasher/manifest.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								plugins/trasher/manifest.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
    "manifest": {
 | 
			
		||||
        "name": "Trasher",
 | 
			
		||||
        "author": "ITDominator",
 | 
			
		||||
        "version": "0.0.1",
 | 
			
		||||
        "support": "",
 | 
			
		||||
        "requests": {
 | 
			
		||||
            "ui_target": "context_menu",
 | 
			
		||||
            "pass_fm_events": "true"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										115
									
								
								plugins/trasher/plugin.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								plugins/trasher/plugin.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
# Python imports
 | 
			
		||||
import os, threading, subprocess, inspect
 | 
			
		||||
 | 
			
		||||
# Lib imports
 | 
			
		||||
import gi
 | 
			
		||||
gi.require_version('Gtk', '3.0')
 | 
			
		||||
from gi.repository import Gtk, GLib, Gio
 | 
			
		||||
 | 
			
		||||
# Application imports
 | 
			
		||||
from plugins.plugin_base import PluginBase
 | 
			
		||||
from .xdgtrash import XDGTrash
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# NOTE: Threads WILL NOT die with parent's destruction.
 | 
			
		||||
def threaded(fn):
 | 
			
		||||
    def wrapper(*args, **kwargs):
 | 
			
		||||
        threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=False).start()
 | 
			
		||||
    return wrapper
 | 
			
		||||
 | 
			
		||||
# NOTE: Threads WILL die with parent's destruction.
 | 
			
		||||
def daemon_threaded(fn):
 | 
			
		||||
    def wrapper(*args, **kwargs):
 | 
			
		||||
        threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start()
 | 
			
		||||
    return wrapper
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Plugin(PluginBase):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        super().__init__()
 | 
			
		||||
        self.path               = os.path.dirname(os.path.realpath(__file__))
 | 
			
		||||
        self._GLADE_FILE        = f"{self.path}/trasher.glade"
 | 
			
		||||
        self.name               = "Trasher"  # NOTE: Need to remove after establishing private bidirectional 1-1 message bus
 | 
			
		||||
                                             #       where self.name should not be needed for message comms
 | 
			
		||||
        self.trashman           = XDGTrash()
 | 
			
		||||
        self.trash_files_path   = f"{GLib.get_user_data_dir()}/Trash/files"
 | 
			
		||||
        self.trash_info_path    = f"{GLib.get_user_data_dir()}/Trash/info"
 | 
			
		||||
 | 
			
		||||
        self.trashman.regenerate()
 | 
			
		||||
 | 
			
		||||
    def get_ui_element(self):
 | 
			
		||||
        self._builder           = Gtk.Builder()
 | 
			
		||||
        self._builder.add_from_file(self._GLADE_FILE)
 | 
			
		||||
 | 
			
		||||
        classes  = [self]
 | 
			
		||||
        handlers = {}
 | 
			
		||||
        for c in classes:
 | 
			
		||||
            methods = None
 | 
			
		||||
            try:
 | 
			
		||||
                methods = inspect.getmembers(c, predicate=inspect.ismethod)
 | 
			
		||||
                handlers.update(methods)
 | 
			
		||||
            except Exception as e:
 | 
			
		||||
                print(repr(e))
 | 
			
		||||
 | 
			
		||||
        self._builder.connect_signals(handlers)
 | 
			
		||||
 | 
			
		||||
        trasher = self._builder.get_object("trasher")
 | 
			
		||||
        trasher.show_all()
 | 
			
		||||
 | 
			
		||||
        return trasher
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def run(self):
 | 
			
		||||
        self._event_system.subscribe("show_trash_buttons", self._show_trash_buttons)
 | 
			
		||||
        self._event_system.subscribe("hide_trash_buttons", self._hide_trash_buttons)
 | 
			
		||||
 | 
			
		||||
    def _show_trash_buttons(self):
 | 
			
		||||
        self._builder.get_object("restore_from_trash").show()
 | 
			
		||||
        self._builder.get_object("empty_trash").show()
 | 
			
		||||
 | 
			
		||||
    def _hide_trash_buttons(self):
 | 
			
		||||
        self._builder.get_object("restore_from_trash").hide()
 | 
			
		||||
        self._builder.get_object("empty_trash").hide()
 | 
			
		||||
 | 
			
		||||
    def delete_files(self, widget = None, eve = None):
 | 
			
		||||
        self._event_system.emit("get_current_state")
 | 
			
		||||
        state    = self._fm_state
 | 
			
		||||
        uris     = state.selected_files
 | 
			
		||||
        response = None
 | 
			
		||||
 | 
			
		||||
        state.warning_alert.format_secondary_text(f"Do you really want to delete the {len(uris)} file(s)?")
 | 
			
		||||
        for uri in uris:
 | 
			
		||||
            file = Gio.File.new_for_path(uri)
 | 
			
		||||
 | 
			
		||||
            if not response:
 | 
			
		||||
                response = state.warning_alert.run()
 | 
			
		||||
                state.warning_alert.hide()
 | 
			
		||||
            if response == Gtk.ResponseType.YES:
 | 
			
		||||
                type = file.query_file_type(flags=Gio.FileQueryInfoFlags.NONE)
 | 
			
		||||
 | 
			
		||||
                if type == Gio.FileType.DIRECTORY:
 | 
			
		||||
                    state.tab.delete_file( file.get_path() )
 | 
			
		||||
                else:
 | 
			
		||||
                    file.delete(cancellable=None)
 | 
			
		||||
            else:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
    def trash_files(self, widget = None, eve = None, verbocity = False):
 | 
			
		||||
        self._event_system.emit("get_current_state")
 | 
			
		||||
        state = self._fm_state
 | 
			
		||||
        for uri in state.selected_files:
 | 
			
		||||
            self.trashman.trash(uri, verbocity)
 | 
			
		||||
 | 
			
		||||
    def restore_trash_files(self, widget = None, eve = None, verbocity = False):
 | 
			
		||||
        self._event_system.emit("get_current_state")
 | 
			
		||||
        state = self._fm_state
 | 
			
		||||
        for uri in state.selected_files:
 | 
			
		||||
            self.trashman.restore(filename=uri.split("/")[-1], verbose = verbocity)
 | 
			
		||||
 | 
			
		||||
    def empty_trash(self, widget = None, eve = None, verbocity = False):
 | 
			
		||||
        self.trashman.empty(verbose = verbocity)
 | 
			
		||||
 | 
			
		||||
    def go_to_trash(self, widget = None, eve = None, verbocity = False):
 | 
			
		||||
        self._event_system.emit("go_to_path", self.trash_files_path)
 | 
			
		||||
							
								
								
									
										126
									
								
								plugins/trasher/trasher.glade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								plugins/trasher/trasher.glade
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,126 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!-- Generated with glade 3.38.2 -->
 | 
			
		||||
<interface>
 | 
			
		||||
  <requires lib="gtk+" version="3.16"/>
 | 
			
		||||
  <object class="GtkImage" id="trash_img">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="icon-name">user-trash</property>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkImage" id="trash_img2">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="icon-name">user-trash</property>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkExpander" id="trasher">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="can-focus">True</property>
 | 
			
		||||
    <property name="margin-top">5</property>
 | 
			
		||||
    <property name="margin-bottom">10</property>
 | 
			
		||||
    <property name="label-fill">True</property>
 | 
			
		||||
    <child>
 | 
			
		||||
      <object class="GtkBox">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="can-focus">False</property>
 | 
			
		||||
        <property name="orientation">vertical</property>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="restore_from_trash">
 | 
			
		||||
            <property name="label" translatable="yes">Restore From Trash</property>
 | 
			
		||||
            <property name="name">restore_from_trash</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">True</property>
 | 
			
		||||
            <property name="receives-default">True</property>
 | 
			
		||||
            <property name="tooltip-text" translatable="yes">Restore From Trash...</property>
 | 
			
		||||
            <signal name="button-release-event" handler="restore_trash_files" swapped="no"/>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">0</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton" id="empty_trash">
 | 
			
		||||
            <property name="label" translatable="yes">Empty Trash</property>
 | 
			
		||||
            <property name="name">empty_trash</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">True</property>
 | 
			
		||||
            <property name="receives-default">True</property>
 | 
			
		||||
            <property name="tooltip-text" translatable="yes">Empty Trash...</property>
 | 
			
		||||
            <signal name="button-release-event" handler="empty_trash" swapped="no"/>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton">
 | 
			
		||||
            <property name="label" translatable="yes">Trash</property>
 | 
			
		||||
            <property name="name">trash</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">True</property>
 | 
			
		||||
            <property name="receives-default">True</property>
 | 
			
		||||
            <property name="tooltip-text" translatable="yes">Move to Trash...</property>
 | 
			
		||||
            <property name="margin-top">20</property>
 | 
			
		||||
            <property name="image">trash_img</property>
 | 
			
		||||
            <property name="always-show-image">True</property>
 | 
			
		||||
            <signal name="button-release-event" handler="trash_files" swapped="no"/>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">2</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton">
 | 
			
		||||
            <property name="label" translatable="yes">Go To Trash</property>
 | 
			
		||||
            <property name="name">go_to_trash</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">True</property>
 | 
			
		||||
            <property name="receives-default">True</property>
 | 
			
		||||
            <property name="tooltip-text" translatable="yes">Go To Trash...</property>
 | 
			
		||||
            <property name="image">trash_img2</property>
 | 
			
		||||
            <property name="always-show-image">True</property>
 | 
			
		||||
            <signal name="button-release-event" handler="go_to_trash" swapped="no"/>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">3</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkButton">
 | 
			
		||||
            <property name="label">gtk-delete</property>
 | 
			
		||||
            <property name="name">delete</property>
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">True</property>
 | 
			
		||||
            <property name="receives-default">True</property>
 | 
			
		||||
            <property name="tooltip-text" translatable="yes">Delete...</property>
 | 
			
		||||
            <property name="margin-top">20</property>
 | 
			
		||||
            <property name="use-stock">True</property>
 | 
			
		||||
            <property name="always-show-image">True</property>
 | 
			
		||||
            <signal name="button-release-event" handler="delete_files" swapped="no"/>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">4</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
    <child type="label">
 | 
			
		||||
      <object class="GtkLabel">
 | 
			
		||||
        <property name="visible">True</property>
 | 
			
		||||
        <property name="can-focus">False</property>
 | 
			
		||||
        <property name="hexpand">False</property>
 | 
			
		||||
        <property name="label" translatable="yes">Trash</property>
 | 
			
		||||
        <property name="justify">center</property>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
  </object>
 | 
			
		||||
</interface>
 | 
			
		||||
@@ -47,6 +47,8 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi
 | 
			
		||||
        event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc)
 | 
			
		||||
        event_system.subscribe("get_current_state", self.get_current_state)
 | 
			
		||||
        event_system.subscribe("display_message", self.display_message)
 | 
			
		||||
        event_system.subscribe("go_to_path", self.go_to_path)
 | 
			
		||||
        event_system.subscribe("do_hide_context_menu", self.do_hide_context_menu)
 | 
			
		||||
 | 
			
		||||
    def tear_down(self, widget=None, eve=None):
 | 
			
		||||
        self.fm_controller.save_state()
 | 
			
		||||
@@ -100,7 +102,7 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi
 | 
			
		||||
        gc.collect()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def do_action_from_menu_controls(self, widget, event_button):
 | 
			
		||||
    def do_action_from_menu_controls(self, widget, eve = None):
 | 
			
		||||
        action = widget.get_name()
 | 
			
		||||
        self.hide_context_menu()
 | 
			
		||||
        self.hide_new_file_menu()
 | 
			
		||||
@@ -124,16 +126,6 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi
 | 
			
		||||
            self.paste_files()
 | 
			
		||||
        if action == "archive":
 | 
			
		||||
            self.show_archiver_dialogue()
 | 
			
		||||
        if action == "delete":
 | 
			
		||||
            self.delete_files()
 | 
			
		||||
        if action == "trash":
 | 
			
		||||
            self.trash_files()
 | 
			
		||||
        if action == "go_to_trash":
 | 
			
		||||
            self.path_entry.set_text(self.trash_files_path)
 | 
			
		||||
        if action == "restore_from_trash":
 | 
			
		||||
            self.restore_trash_files()
 | 
			
		||||
        if action == "empty_trash":
 | 
			
		||||
            self.empty_trash()
 | 
			
		||||
        if action == "create":
 | 
			
		||||
            self.create_files()
 | 
			
		||||
        if action in ["save_session", "save_session_as", "load_session"]:
 | 
			
		||||
@@ -169,3 +161,9 @@ class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMi
 | 
			
		||||
        wid, tid = self.fm_controller.get_active_wid_and_tid()
 | 
			
		||||
        tab      = self.get_fm_window(wid).get_tab_by_id(tid)
 | 
			
		||||
        tab.execute([f"{tab.terminal_app}"], start_dir=tab.get_current_directory())
 | 
			
		||||
 | 
			
		||||
    def go_to_path(self, path):
 | 
			
		||||
        self.path_entry.set_text(path)
 | 
			
		||||
 | 
			
		||||
    def do_hide_context_menu(self):
 | 
			
		||||
        self.hide_context_menu()
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,6 @@ import gi
 | 
			
		||||
from gi.repository import GLib
 | 
			
		||||
 | 
			
		||||
# Application imports
 | 
			
		||||
from trasher.xdgtrash import XDGTrash
 | 
			
		||||
from shellfm.windows.controller import WindowController
 | 
			
		||||
from plugins.plugins_controller import PluginsController
 | 
			
		||||
 | 
			
		||||
@@ -22,6 +21,7 @@ class State:
 | 
			
		||||
    selected_files: [] = None
 | 
			
		||||
    to_copy_files:  [] = None
 | 
			
		||||
    to_cut_files:   [] = None
 | 
			
		||||
    warning_alert: type = None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Controller_Data:
 | 
			
		||||
@@ -34,11 +34,9 @@ class Controller_Data:
 | 
			
		||||
        self.logger              = self.settings.get_logger()
 | 
			
		||||
        self.keybindings         = self.settings.get_keybindings()
 | 
			
		||||
 | 
			
		||||
        self.trashman            = XDGTrash()
 | 
			
		||||
        self.fm_controller       = WindowController()
 | 
			
		||||
        self.plugins             = PluginsController(_settings)
 | 
			
		||||
        self.fm_controller_data  = self.fm_controller.get_state_from_file()
 | 
			
		||||
        self.trashman.regenerate()
 | 
			
		||||
 | 
			
		||||
        self.window             = self.settings.get_main_window()
 | 
			
		||||
        self.window1            = self.builder.get_object("window_1")
 | 
			
		||||
@@ -142,6 +140,7 @@ class Controller_Data:
 | 
			
		||||
        state.tab            = self.get_fm_window(state.wid).get_tab_by_id(state.tid)
 | 
			
		||||
        state.icon_grid      = self.builder.get_object(f"{state.wid}|{state.tid}|icon_grid")
 | 
			
		||||
        state.store          = state.icon_grid.get_model()
 | 
			
		||||
        state.warning_alert  = self.warning_alert
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        selected_files       = state.icon_grid.get_selected_items()
 | 
			
		||||
@@ -155,7 +154,6 @@ class Controller_Data:
 | 
			
		||||
        #     state.to_cut_files   = self.format_to_uris(state.store, state.wid, state.tid, self.to_cut_files, True)
 | 
			
		||||
 | 
			
		||||
        event_system.emit("update_state_info_plugins", state)
 | 
			
		||||
 | 
			
		||||
        return state
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -208,45 +208,6 @@ class WidgetFileActionMixin:
 | 
			
		||||
        elif self.to_cut_files:
 | 
			
		||||
            self.handle_files(self.to_cut_files, "move", target)
 | 
			
		||||
 | 
			
		||||
    def delete_files(self):
 | 
			
		||||
        state    = self.get_current_state()
 | 
			
		||||
        uris     = self.format_to_uris(state.store, state.wid, state.tid, self.selected_files, True)
 | 
			
		||||
        response = None
 | 
			
		||||
 | 
			
		||||
        self.warning_alert.format_secondary_text(f"Do you really want to delete the {len(uris)} file(s)?")
 | 
			
		||||
        for uri in uris:
 | 
			
		||||
            file = Gio.File.new_for_path(uri)
 | 
			
		||||
 | 
			
		||||
            if not response:
 | 
			
		||||
                response = self.warning_alert.run()
 | 
			
		||||
                self.warning_alert.hide()
 | 
			
		||||
            if response == Gtk.ResponseType.YES:
 | 
			
		||||
                type = file.query_file_type(flags=Gio.FileQueryInfoFlags.NONE)
 | 
			
		||||
 | 
			
		||||
                if type == Gio.FileType.DIRECTORY:
 | 
			
		||||
                    state.tab.delete_file( file.get_path() )
 | 
			
		||||
                else:
 | 
			
		||||
                    file.delete(cancellable=None)
 | 
			
		||||
            else:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def trash_files(self):
 | 
			
		||||
        state = self.get_current_state()
 | 
			
		||||
        uris  = self.format_to_uris(state.store, state.wid, state.tid, self.selected_files, True)
 | 
			
		||||
        for uri in uris:
 | 
			
		||||
            self.trashman.trash(uri, False)
 | 
			
		||||
 | 
			
		||||
    def restore_trash_files(self):
 | 
			
		||||
        state = self.get_current_state()
 | 
			
		||||
        uris  = self.format_to_uris(state.store, state.wid, state.tid, self.selected_files, True)
 | 
			
		||||
        for uri in uris:
 | 
			
		||||
            self.trashman.restore(filename=uri.split("/")[-1], verbose=False)
 | 
			
		||||
 | 
			
		||||
    def empty_trash(self):
 | 
			
		||||
        self.trashman.empty(verbose=False)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def create_files(self):
 | 
			
		||||
        fname_field = self.builder.get_object("new_fname_field")
 | 
			
		||||
        self.show_new_file_menu(fname_field)
 | 
			
		||||
 
 | 
			
		||||
@@ -88,12 +88,11 @@ class WindowMixin(TabMixin):
 | 
			
		||||
        formatted_mount_free = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::free")) )
 | 
			
		||||
        formatted_mount_size = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::size")) )
 | 
			
		||||
 | 
			
		||||
        # NOTE: Hides empty trash and other desired buttons based on context.
 | 
			
		||||
        if self.trash_files_path == current_directory:
 | 
			
		||||
            self.builder.get_object("restore_from_trash").show()
 | 
			
		||||
            self.builder.get_object("empty_trash").show()
 | 
			
		||||
            event_system.emit("show_trash_buttons")
 | 
			
		||||
        else:
 | 
			
		||||
            self.builder.get_object("restore_from_trash").hide()
 | 
			
		||||
            self.builder.get_object("empty_trash").hide()
 | 
			
		||||
            event_system.emit("hide_trash_buttons")
 | 
			
		||||
 | 
			
		||||
        # If something selected
 | 
			
		||||
        self.bottom_size_label.set_label(f"{formatted_mount_free} free / {formatted_mount_size}")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
"""
 | 
			
		||||
Trasher module
 | 
			
		||||
"""
 | 
			
		||||
@@ -668,6 +668,289 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="stock">gtk-edit</property>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkDialog" id="context_menu_popup">
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="resizable">False</property>
 | 
			
		||||
    <property name="window-position">mouse</property>
 | 
			
		||||
    <property name="type-hint">splashscreen</property>
 | 
			
		||||
    <property name="skip-pager-hint">True</property>
 | 
			
		||||
    <property name="decorated">False</property>
 | 
			
		||||
    <property name="deletable">False</property>
 | 
			
		||||
    <property name="gravity">static</property>
 | 
			
		||||
    <signal name="focus-out-event" handler="hide_context_menu" swapped="no"/>
 | 
			
		||||
    <child internal-child="vbox">
 | 
			
		||||
      <object class="GtkBox">
 | 
			
		||||
        <property name="can-focus">False</property>
 | 
			
		||||
        <property name="orientation">vertical</property>
 | 
			
		||||
        <property name="spacing">2</property>
 | 
			
		||||
        <child internal-child="action_area">
 | 
			
		||||
          <object class="GtkButtonBox">
 | 
			
		||||
            <property name="can-focus">False</property>
 | 
			
		||||
            <property name="layout-style">end</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">False</property>
 | 
			
		||||
            <property name="position">0</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkBox" id="context_menu">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">False</property>
 | 
			
		||||
            <property name="orientation">vertical</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkExpander">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can-focus">True</property>
 | 
			
		||||
                <property name="margin-top">5</property>
 | 
			
		||||
                <property name="margin-bottom">5</property>
 | 
			
		||||
                <property name="expanded">True</property>
 | 
			
		||||
                <property name="label-fill">True</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <object class="GtkBox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="orientation">vertical</property>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-open</property>
 | 
			
		||||
                        <property name="name">open</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Open...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">0</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Open With</property>
 | 
			
		||||
                        <property name="name">open_with</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="image">open_with_img</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-execute</property>
 | 
			
		||||
                        <property name="name">execute</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Execute in Terminal</property>
 | 
			
		||||
                        <property name="name">execute_in_terminal</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="image">exec_in_term_img</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child type="label">
 | 
			
		||||
                  <object class="GtkLabel">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="hexpand">False</property>
 | 
			
		||||
                    <property name="label" translatable="yes">Open</property>
 | 
			
		||||
                    <property name="justify">center</property>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
              </object>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="expand">False</property>
 | 
			
		||||
                <property name="fill">True</property>
 | 
			
		||||
                <property name="position">4</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkExpander">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can-focus">True</property>
 | 
			
		||||
                <property name="margin-top">5</property>
 | 
			
		||||
                <property name="margin-bottom">5</property>
 | 
			
		||||
                <property name="expanded">True</property>
 | 
			
		||||
                <property name="label-fill">True</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <object class="GtkBox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="orientation">vertical</property>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-new</property>
 | 
			
		||||
                        <property name="name">create</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">New File/Folder...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">0</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Rename</property>
 | 
			
		||||
                        <property name="name">rename</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Rename...</property>
 | 
			
		||||
                        <property name="image">rename_img2</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-cut</property>
 | 
			
		||||
                        <property name="name">cut</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Cut...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-copy</property>
 | 
			
		||||
                        <property name="name">copy</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Copy...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-paste</property>
 | 
			
		||||
                        <property name="name">paste</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Paste...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">4</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Archive</property>
 | 
			
		||||
                        <property name="name">archive</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Archive...</property>
 | 
			
		||||
                        <property name="image">archive_img</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">5</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child type="label">
 | 
			
		||||
                  <object class="GtkLabel">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="hexpand">False</property>
 | 
			
		||||
                    <property name="label" translatable="yes">File Actions</property>
 | 
			
		||||
                    <property name="justify">center</property>
 | 
			
		||||
                    <property name="ellipsize">end</property>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
              </object>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="expand">False</property>
 | 
			
		||||
                <property name="fill">True</property>
 | 
			
		||||
                <property name="position">5</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkFileChooserDialog" id="save_load_dialog">
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="type-hint">dialog</property>
 | 
			
		||||
@@ -2321,417 +2604,6 @@ SolarFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspe
 | 
			
		||||
      <class name="search-border"/>
 | 
			
		||||
    </style>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkImage" id="trash_img">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="icon-name">user-trash</property>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkImage" id="trash_img2">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="icon-name">user-trash</property>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkDialog" id="context_menu_popup">
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="resizable">False</property>
 | 
			
		||||
    <property name="window-position">mouse</property>
 | 
			
		||||
    <property name="type-hint">splashscreen</property>
 | 
			
		||||
    <property name="skip-pager-hint">True</property>
 | 
			
		||||
    <property name="decorated">False</property>
 | 
			
		||||
    <property name="deletable">False</property>
 | 
			
		||||
    <property name="gravity">static</property>
 | 
			
		||||
    <signal name="focus-out-event" handler="hide_context_menu" swapped="no"/>
 | 
			
		||||
    <child internal-child="vbox">
 | 
			
		||||
      <object class="GtkBox">
 | 
			
		||||
        <property name="can-focus">False</property>
 | 
			
		||||
        <property name="orientation">vertical</property>
 | 
			
		||||
        <property name="spacing">2</property>
 | 
			
		||||
        <child internal-child="action_area">
 | 
			
		||||
          <object class="GtkButtonBox">
 | 
			
		||||
            <property name="can-focus">False</property>
 | 
			
		||||
            <property name="layout-style">end</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <placeholder/>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">False</property>
 | 
			
		||||
            <property name="position">0</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
        <child>
 | 
			
		||||
          <object class="GtkBox" id="context_menu">
 | 
			
		||||
            <property name="visible">True</property>
 | 
			
		||||
            <property name="can-focus">False</property>
 | 
			
		||||
            <property name="orientation">vertical</property>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkExpander">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can-focus">True</property>
 | 
			
		||||
                <property name="margin-top">5</property>
 | 
			
		||||
                <property name="margin-bottom">5</property>
 | 
			
		||||
                <property name="expanded">True</property>
 | 
			
		||||
                <property name="label-fill">True</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <object class="GtkBox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="orientation">vertical</property>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-open</property>
 | 
			
		||||
                        <property name="name">open</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Open...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">0</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Open With</property>
 | 
			
		||||
                        <property name="name">open_with</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="image">open_with_img</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-execute</property>
 | 
			
		||||
                        <property name="name">execute</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Execute in Terminal</property>
 | 
			
		||||
                        <property name="name">execute_in_terminal</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="image">exec_in_term_img</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child type="label">
 | 
			
		||||
                  <object class="GtkLabel">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="hexpand">False</property>
 | 
			
		||||
                    <property name="label" translatable="yes">Open</property>
 | 
			
		||||
                    <property name="justify">center</property>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
              </object>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="expand">False</property>
 | 
			
		||||
                <property name="fill">True</property>
 | 
			
		||||
                <property name="position">4</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkExpander">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can-focus">True</property>
 | 
			
		||||
                <property name="margin-top">5</property>
 | 
			
		||||
                <property name="margin-bottom">5</property>
 | 
			
		||||
                <property name="expanded">True</property>
 | 
			
		||||
                <property name="label-fill">True</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <object class="GtkBox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="orientation">vertical</property>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-new</property>
 | 
			
		||||
                        <property name="name">create</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">New File/Folder...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">0</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Rename</property>
 | 
			
		||||
                        <property name="name">rename</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Rename...</property>
 | 
			
		||||
                        <property name="image">rename_img2</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-cut</property>
 | 
			
		||||
                        <property name="name">cut</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Cut...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-copy</property>
 | 
			
		||||
                        <property name="name">copy</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Copy...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-paste</property>
 | 
			
		||||
                        <property name="name">paste</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Paste...</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">4</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Archive</property>
 | 
			
		||||
                        <property name="name">archive</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Archive...</property>
 | 
			
		||||
                        <property name="image">archive_img</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">5</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child type="label">
 | 
			
		||||
                  <object class="GtkLabel">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="hexpand">False</property>
 | 
			
		||||
                    <property name="label" translatable="yes">File Actions</property>
 | 
			
		||||
                    <property name="justify">center</property>
 | 
			
		||||
                    <property name="ellipsize">end</property>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
              </object>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="expand">False</property>
 | 
			
		||||
                <property name="fill">True</property>
 | 
			
		||||
                <property name="position">5</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
            <child>
 | 
			
		||||
              <object class="GtkExpander">
 | 
			
		||||
                <property name="visible">True</property>
 | 
			
		||||
                <property name="can-focus">True</property>
 | 
			
		||||
                <property name="margin-top">5</property>
 | 
			
		||||
                <property name="margin-bottom">10</property>
 | 
			
		||||
                <property name="label-fill">True</property>
 | 
			
		||||
                <child>
 | 
			
		||||
                  <object class="GtkBox">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="orientation">vertical</property>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton" id="restore_from_trash">
 | 
			
		||||
                        <property name="label" translatable="yes">Restore From Trash</property>
 | 
			
		||||
                        <property name="name">restore_from_trash</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Restore From Trash...</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">0</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton" id="empty_trash">
 | 
			
		||||
                        <property name="label" translatable="yes">Empty Trash</property>
 | 
			
		||||
                        <property name="name">empty_trash</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Empty Trash...</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">1</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Trash</property>
 | 
			
		||||
                        <property name="name">trash</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Move to Trash...</property>
 | 
			
		||||
                        <property name="margin-top">20</property>
 | 
			
		||||
                        <property name="image">trash_img</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">2</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label" translatable="yes">Go To Trash</property>
 | 
			
		||||
                        <property name="name">go_to_trash</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Go To Trash...</property>
 | 
			
		||||
                        <property name="image">trash_img2</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">3</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                    <child>
 | 
			
		||||
                      <object class="GtkButton">
 | 
			
		||||
                        <property name="label">gtk-delete</property>
 | 
			
		||||
                        <property name="name">delete</property>
 | 
			
		||||
                        <property name="visible">True</property>
 | 
			
		||||
                        <property name="can-focus">True</property>
 | 
			
		||||
                        <property name="receives-default">True</property>
 | 
			
		||||
                        <property name="tooltip-text" translatable="yes">Delete...</property>
 | 
			
		||||
                        <property name="margin-top">20</property>
 | 
			
		||||
                        <property name="use-stock">True</property>
 | 
			
		||||
                        <property name="always-show-image">True</property>
 | 
			
		||||
                        <signal name="button-release-event" handler="do_action_from_menu_controls" swapped="no"/>
 | 
			
		||||
                      </object>
 | 
			
		||||
                      <packing>
 | 
			
		||||
                        <property name="expand">False</property>
 | 
			
		||||
                        <property name="fill">True</property>
 | 
			
		||||
                        <property name="position">4</property>
 | 
			
		||||
                      </packing>
 | 
			
		||||
                    </child>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
                <child type="label">
 | 
			
		||||
                  <object class="GtkLabel">
 | 
			
		||||
                    <property name="visible">True</property>
 | 
			
		||||
                    <property name="can-focus">False</property>
 | 
			
		||||
                    <property name="hexpand">False</property>
 | 
			
		||||
                    <property name="label" translatable="yes">Trash</property>
 | 
			
		||||
                    <property name="justify">center</property>
 | 
			
		||||
                  </object>
 | 
			
		||||
                </child>
 | 
			
		||||
              </object>
 | 
			
		||||
              <packing>
 | 
			
		||||
                <property name="expand">False</property>
 | 
			
		||||
                <property name="fill">True</property>
 | 
			
		||||
                <property name="position">6</property>
 | 
			
		||||
              </packing>
 | 
			
		||||
            </child>
 | 
			
		||||
          </object>
 | 
			
		||||
          <packing>
 | 
			
		||||
            <property name="expand">False</property>
 | 
			
		||||
            <property name="fill">True</property>
 | 
			
		||||
            <property name="position">1</property>
 | 
			
		||||
          </packing>
 | 
			
		||||
        </child>
 | 
			
		||||
      </object>
 | 
			
		||||
    </child>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkMessageDialog" id="warning_alert">
 | 
			
		||||
    <property name="can-focus">False</property>
 | 
			
		||||
    <property name="resizable">False</property>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user