generated from itdominator/Python-With-Gtk-Template
addeed dialogs
This commit is contained in:
3
src/core/widgets/dialogs/__init__.py
Normal file
3
src/core/widgets/dialogs/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
"""
|
||||
Dialogs module
|
||||
"""
|
49
src/core/widgets/dialogs/about_widget.py
Normal file
49
src/core/widgets/dialogs/about_widget.py
Normal file
@@ -0,0 +1,49 @@
|
||||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
|
||||
# Application imports
|
||||
|
||||
|
||||
|
||||
|
||||
class AboutWidget:
|
||||
"""docstring for AboutWidget."""
|
||||
|
||||
def __init__(self):
|
||||
super(AboutWidget, self).__init__()
|
||||
|
||||
_GLADE_FILE = f"{settings.get_ui_widgets_path()}/about_ui.glade"
|
||||
self._builder = Gtk.Builder()
|
||||
self._builder.add_from_file(_GLADE_FILE)
|
||||
|
||||
self._setup_styling()
|
||||
self._setup_signals()
|
||||
self._load_widgets()
|
||||
|
||||
|
||||
def _setup_styling(self):
|
||||
...
|
||||
|
||||
def _setup_signals(self):
|
||||
event_system.subscribe("show_about_page", self.show_about_page)
|
||||
event_system.subscribe("hide_about_page", self.hide_about_page)
|
||||
settings.register_signals_to_builder([self,], self._builder)
|
||||
|
||||
def _load_widgets(self):
|
||||
builder = settings.get_builder()
|
||||
|
||||
self.about_page = self._builder.get_object("about_page")
|
||||
builder.expose_object(f"about_page", self.about_page)
|
||||
|
||||
|
||||
def show_about_page(self, widget=None, eve=None):
|
||||
response = self.about_page.run()
|
||||
if response in [Gtk.ResponseType.CANCEL, Gtk.ResponseType.DELETE_EVENT]:
|
||||
self.hide_about_page()
|
||||
|
||||
def hide_about_page(self, widget=None, eve=None):
|
||||
self.about_page.hide()
|
87
src/core/widgets/dialogs/message_widget.py
Normal file
87
src/core/widgets/dialogs/message_widget.py
Normal file
@@ -0,0 +1,87 @@
|
||||
# Python imports
|
||||
import os
|
||||
import shutil
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import Gio
|
||||
|
||||
# Application imports
|
||||
|
||||
|
||||
|
||||
class MessageWidget(Gtk.MessageDialog):
|
||||
"""docstring for MessageWidget."""
|
||||
|
||||
def __init__(self):
|
||||
super(MessageWidget, self).__init__()
|
||||
|
||||
self._setup_styling()
|
||||
self._setup_signals()
|
||||
self._subscribe_to_events()
|
||||
self._load_widgets()
|
||||
|
||||
|
||||
def _setup_styling(self):
|
||||
self.type = Gtk.MessageType.WARNING
|
||||
|
||||
def _setup_signals(self):
|
||||
...
|
||||
|
||||
def _subscribe_to_events(self):
|
||||
event_system.subscribe("delete_files", self.delete_files)
|
||||
|
||||
def _load_widgets(self):
|
||||
message_area = self.get_message_area()
|
||||
message_area.get_children()[0].set_label("Alert!")
|
||||
message_area.show_all()
|
||||
|
||||
self.set_image( Gtk.Image.new_from_icon_name("user-alert", 16) )
|
||||
self.add_buttons(Gtk.STOCK_NO, Gtk.ResponseType.NO)
|
||||
self.add_buttons(Gtk.STOCK_YES, Gtk.ResponseType.YES)
|
||||
|
||||
def delete_files(self, widget = None, eve = None, uris = None, msg = f"Do you really want to delete the file(s)?"):
|
||||
response = None
|
||||
|
||||
self.format_secondary_text(msg)
|
||||
for uri in uris:
|
||||
file = Gio.File.new_for_path(uri)
|
||||
|
||||
if not response:
|
||||
response = self.run()
|
||||
self.hide()
|
||||
|
||||
if response == Gtk.ResponseType.YES:
|
||||
type = file.query_file_type(flags=Gio.FileQueryInfoFlags.NONE)
|
||||
|
||||
if type == Gio.FileType.DIRECTORY:
|
||||
self.delete_file( file.get_path() )
|
||||
else:
|
||||
file.delete(cancellable = None)
|
||||
else:
|
||||
break
|
||||
|
||||
return response
|
||||
|
||||
def delete_file(self, to_delete_file):
|
||||
try:
|
||||
logger.debug(f"Deleting: {to_delete_file}")
|
||||
if os.path.exists(to_delete_file):
|
||||
if os.path.isfile(to_delete_file):
|
||||
os.remove(to_delete_file)
|
||||
elif os.path.isdir(to_delete_file):
|
||||
shutil.rmtree(to_delete_file)
|
||||
else:
|
||||
logger.debug("An error occured deleting the file:")
|
||||
return False
|
||||
else:
|
||||
logger.debug("The folder/file does not exist")
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.debug("An error occured deleting the file:")
|
||||
logger.debug( repr(e) )
|
||||
return False
|
||||
|
||||
return True
|
Reference in New Issue
Block a user