71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Python imports
 | |
| import pathlib
 | |
| 
 | |
| # lib imports
 | |
| import gi
 | |
| gi.require_version('Gtk', '3.0')
 | |
| from gi.repository import Gtk
 | |
| 
 | |
| # Application imports
 | |
| 
 | |
| 
 | |
| class CommonActionsMixin:
 | |
|     def add_widgets(self, widgets):
 | |
|         for widget in widgets:
 | |
|             self.add(widget)
 | |
| 
 | |
|         test_button   = Gtk.Button(label="Test")
 | |
|         remove_button = Gtk.Button(label="X")
 | |
|         up_button     = Gtk.Button()
 | |
|         down_button   = Gtk.Button()
 | |
| 
 | |
|         up_button.set_image(Gtk.Image.new_from_icon_name("up", 4))
 | |
|         down_button.set_image(Gtk.Image.new_from_icon_name("down", 4))
 | |
| 
 | |
|         up_button.set_size_request(32, 32)
 | |
|         down_button.set_size_request(32, 32)
 | |
|         remove_button.set_size_request(32, 32)
 | |
|         test_button.set_size_request(96, 32)
 | |
| 
 | |
|         up_button.connect("clicked", self._move_up)
 | |
|         down_button.connect("clicked", self._move_down)
 | |
|         remove_button.connect("clicked", self._remove_self)
 | |
|         test_button.connect("clicked", self._do_run)
 | |
| 
 | |
|         self.add(test_button)
 | |
|         self.add(up_button)
 | |
|         self.add(down_button)
 | |
|         self.add(remove_button)
 | |
| 
 | |
|     def delete(self):
 | |
|         self.get_parent().destroy()
 | |
| 
 | |
|     def _move_up(self, widget):
 | |
|         event_system.push_gui_event(["move-up", self, ()])
 | |
| 
 | |
|     def _move_down(self, widget):
 | |
|         event_system.push_gui_event(["move-down", self, ()])
 | |
| 
 | |
|     def _has_method(self, obj, name):
 | |
|         ''' Checks if a given method exists. '''
 | |
|         return callable(getattr(obj, name, None))
 | |
| 
 | |
|     def get_file_parts(self, name):
 | |
|         file_extension = pathlib.Path(name).suffix
 | |
|         base = name.split(file_extension)[0]
 | |
|         return base, file_extension
 | |
| 
 | |
|     def _replace_last(self, string, find, replace):
 | |
|         reversed = string[::-1]
 | |
|         replaced = reversed.replace(find[::-1], replace[::-1], 1)
 | |
|         return replaced[::-1]
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     def _remove_self(self, widget):
 | |
|         event_system.push_gui_event(["delete", self, ()])
 | |
| 
 | |
|     def _do_run(self, widget):
 | |
|         event_system.push_gui_event(["run", self, ()])
 |