Moving to use ContextMenu

This commit is contained in:
2022-10-25 23:27:21 -05:00
parent efa42a301c
commit 9697e8ca16
16 changed files with 154 additions and 466 deletions

View File

@@ -5,7 +5,7 @@
"version": "0.0.1",
"support": "",
"requests": {
"ui_target": "context_menu",
"ui_target": "context_menu_plugins",
"pass_fm_events": "true"
}
}

View File

@@ -81,13 +81,12 @@ class Plugin(PluginBase):
self._archiver_dialogue = self._builder.get_object("archiver_dialogue")
self._arc_command_buffer = self._builder.get_object("arc_command_buffer")
icon = Gtk.Image(stock=Gtk.STOCK_FLOPPY)
button = Gtk.Button(label=self.name)
item = Gtk.ImageMenuItem(self.name)
item.set_image( Gtk.Image(stock=Gtk.STOCK_FLOPPY) )
item.connect("activate", self.show_archiver_dialogue)
item.set_always_show_image(True)
return item
button.set_image(icon)
button.connect("button-release-event", self.show_archiver_dialogue)
return button
def run(self):
...

View File

@@ -99,13 +99,11 @@ class Plugin(PluginBase):
self._file_group = self._builder.get_object("file_group")
def generate_reference_ui_element(self):
icon = Gtk.Image(stock=Gtk.STOCK_PROPERTIES )
button = Gtk.Button(label=self.name)
button.connect("button-release-event", self._show_properties_page)
button.set_image(icon)
return button
item = Gtk.ImageMenuItem(self.name)
item.set_image( Gtk.Image(stock=Gtk.STOCK_PROPERTIES) )
item.connect("activate", self._show_properties_page)
item.set_always_show_image(True)
return item
@threaded

View File

@@ -5,7 +5,7 @@
"version": "0.0.1",
"support": "",
"requests": {
"ui_target": "context_menu",
"ui_target": "context_menu_plugins",
"pass_fm_events": "true"
}
}

View File

@@ -70,13 +70,11 @@ class Plugin(PluginBase):
self._trailer_link = self._builder.get_object("trailer_link")
def generate_reference_ui_element(self):
icon = Gtk.Image(stock=Gtk.STOCK_FIND)
button = Gtk.Button(label=self.name)
button.connect("button-release-event", self._show_info_page)
button.set_image(icon)
return button
item = Gtk.ImageMenuItem(self.name)
item.set_image( Gtk.Image(stock=Gtk.STOCK_FIND) )
item.connect("activate", self._show_info_page)
item.set_always_show_image(True)
return item
@threaded
def _show_info_page(self, widget=None, eve=None):

View File

@@ -80,13 +80,11 @@ class Plugin(IPCServer, FileSearchMixin, GrepSearchMixin, PluginBase):
self.create_ipc_listener()
def generate_reference_ui_element(self):
icon = Gtk.Image(stock=Gtk.STOCK_FIND)
button = Gtk.Button(label=self.name)
button.connect("button-release-event", self._show_page)
button.set_image(icon)
return button
item = Gtk.ImageMenuItem(self.name)
item.set_image( Gtk.Image(stock=Gtk.STOCK_FIND) )
item.connect("activate", self._show_page)
item.set_always_show_image(True)
return item
def _show_page(self, widget=None, eve=None):
@@ -113,6 +111,7 @@ class Plugin(IPCServer, FileSearchMixin, GrepSearchMixin, PluginBase):
self.grep_list_parent.add(self._grep_list)
self.grep_list_parent.show_all()
time.sleep(0.05)
Gtk.main_iteration()
def reset_file_list_box(self) -> None:
@@ -128,4 +127,5 @@ class Plugin(IPCServer, FileSearchMixin, GrepSearchMixin, PluginBase):
self.file_list_parent.add(self._file_list)
self.file_list_parent.show_all()
time.sleep(0.05)
Gtk.main_iteration()

View File

@@ -47,34 +47,49 @@ class Plugin(PluginBase):
self._event_system.subscribe("trash_files", self.trash_files)
def generate_reference_ui_element(self):
self._builder = Gtk.Builder()
self._builder.add_from_file(self._GLADE_FILE)
trash_a = Gtk.MenuItem("Trash Actions")
trash_menu = Gtk.Menu()
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.restore = Gtk.MenuItem("Restore From Trash")
self.restore.connect("activate", self.restore_trash_files)
self._builder.connect_signals(handlers)
self.empty = Gtk.MenuItem("Empty Trash")
self.empty.connect("activate", self.empty_trash)
trasher = self._builder.get_object("trasher")
trasher.show_all()
trash = Gtk.ImageMenuItem("Trash")
trash.set_image( Gtk.Image.new_from_icon_name("user-trash", 16) )
trash.connect("activate", self.trash_files)
trash.set_always_show_image(True)
return trasher
go_to = Gtk.ImageMenuItem("Go To Trash")
go_to.set_image( Gtk.Image.new_from_icon_name("user-trash", 16) )
go_to.connect("activate", self.go_to_trash)
go_to.set_always_show_image(True)
delete = Gtk.ImageMenuItem("Delete")
delete.set_image( Gtk.Image(stock=Gtk.STOCK_DELETE) )
delete.connect("activate", self.delete_files)
delete.set_always_show_image(True)
trash_a.set_submenu(trash_menu)
trash_a.show_all()
self._appen_menu_items(trash_menu, [self.restore, self.empty, trash, go_to, delete])
return trash_a
def _appen_menu_items(self, menu, items):
for item in items:
menu.append(item)
def _show_trash_buttons(self):
self._builder.get_object("restore_from_trash").show()
self._builder.get_object("empty_trash").show()
self.restore.show()
self.empty.show()
def _hide_trash_buttons(self):
self._builder.get_object("restore_from_trash").hide()
self._builder.get_object("empty_trash").hide()
self.restore.hide()
self.empty.hide()
def delete_files(self, widget = None, eve = None):
self._event_system.emit("do_hide_context_menu")

View File

@@ -1,126 +0,0 @@
<?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>
<property name="margin-bottom">20</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="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>

View File

@@ -5,7 +5,7 @@
"version": "0.0.1",
"support": "",
"requests": {
"ui_target": "context_menu",
"ui_target": "context_menu_plugins",
"pass_fm_events": "true"
}
}

View File

@@ -70,12 +70,11 @@ class Plugin(PluginBase):
def generate_reference_ui_element(self):
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(f"{self.path}/../../icons/video.png", 16, 16, True)
icon = Gtk.Image.new_from_pixbuf(pixbuf)
button = Gtk.Button(label=self.name)
button.set_image(icon)
button.connect("button-release-event", self._show_thumbnailer_page)
return button
item = Gtk.ImageMenuItem("Delete")
item.set_image( icon )
item.connect("activate", self._show_thumbnailer_page)
item.set_always_show_image(True)
return item
@threaded