Skip to content

Commit aab4f57

Browse files
committed
gtk template: required plugin dialog
1 parent 74db826 commit aab4f57

File tree

3 files changed

+36
-37
lines changed

3 files changed

+36
-37
lines changed

safeeyes/glade/required_plugin_dialog.glade

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
~ You should have received a copy of the GNU General Public License
2020
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
2121
-->
22-
<interface>
22+
<interface domain="safeeyes">
2323
<requires lib="gtk" version="4.0"/>
24-
<object class="GtkWindow" id="window_required_plugin">
24+
<template parent="GtkApplicationWindow" class="RequiredPluginDialog">
2525
<property name="title" translatable="1">Safe Eyes - Error</property>
2626
<property name="resizable">0</property>
2727
<property name="icon-name">io.github.slgobinath.SafeEyes</property>
28+
<signal name="close-request" handler="on_window_delete" swapped="no"/>
2829
<child>
2930
<object class="GtkBox" id="layout_box">
3031
<property name="margin-start">5</property>
@@ -105,16 +106,18 @@
105106
<property name="label" translatable="1">Quit</property>
106107
<property name="receives-default">1</property>
107108
<property name="vexpand">1</property>
109+
<signal name="clicked" handler="on_close_clicked" swapped="no"/>
108110
</object>
109111
</child>
110112
<child>
111113
<object class="GtkButton" id="btn_disable_plugin">
112114
<property name="label" translatable="1">Disable plugin temporarily</property>
115+
<signal name="clicked" handler="on_disable_plugin_clicked" swapped="no"/>
113116
</object>
114117
</child>
115118
</object>
116119
</child>
117120
</object>
118121
</child>
119-
</object>
122+
</template>
120123
</interface>

safeeyes/safeeyes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ def show_required_plugin_dialog(self, error: RequiredPluginException):
358358
error.get_message(),
359359
self.quit,
360360
lambda: self.disable_plugin(plugin_id),
361+
application=self,
361362
)
362363
dialog.show()
363364

safeeyes/ui/required_plugin_dialog.py

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
"""
2222

2323
import os
24+
import gi
25+
26+
gi.require_version("Gtk", "4.0")
27+
from gi.repository import Gtk
2428

2529
from safeeyes import utility
2630
from safeeyes.model import PluginDependency
@@ -31,62 +35,53 @@
3135
)
3236

3337

34-
class RequiredPluginDialog:
38+
@Gtk.Template(filename=REQUIRED_PLUGIN_DIALOG_GLADE)
39+
class RequiredPluginDialog(Gtk.ApplicationWindow):
3540
"""RequiredPluginDialog shows an error when a plugin has required
3641
dependencies.
3742
"""
3843

39-
def __init__(self, plugin_id, plugin_name, message, on_quit, on_disable_plugin):
40-
self.on_quit = on_quit
41-
self.on_disable_plugin = on_disable_plugin
44+
__gtype_name__ = "RequiredPluginDialog"
4245

43-
builder = utility.create_gtk_builder(REQUIRED_PLUGIN_DIALOG_GLADE)
44-
self.window = builder.get_object("window_required_plugin")
46+
lbl_header = Gtk.Template.Child()
47+
lbl_message = Gtk.Template.Child()
48+
btn_extra_link = Gtk.Template.Child()
4549

46-
self.window.connect("close-request", self.on_window_delete)
47-
builder.get_object("btn_close").connect("clicked", self.on_close_clicked)
48-
builder.get_object("btn_disable_plugin").connect(
49-
"clicked", self.on_disable_plugin_clicked
50-
)
50+
def __init__(
51+
self, plugin_id, plugin_name, message, on_quit, on_disable_plugin, application
52+
):
53+
super().__init__(application=application)
5154

52-
builder.get_object("lbl_header").set_label(
53-
_("The required plugin '%s' is missing dependencies!") % _(plugin_name)
54-
)
55-
56-
builder.get_object("lbl_main").set_label(
57-
_(
58-
"Please install the dependencies or disable the plugin. To hide this"
59-
" message, you can also deactivate the plugin in the settings."
60-
)
61-
)
55+
self.on_quit = on_quit
56+
self.on_disable_plugin = on_disable_plugin
6257

63-
builder.get_object("btn_close").set_label(_("Quit"))
64-
builder.get_object("btn_disable_plugin").set_label(
65-
_("Disable plugin temporarily")
58+
self.lbl_header.set_label(
59+
_("The required plugin '%s' is missing dependencies!") % _(plugin_name)
6660
)
6761

6862
if isinstance(message, PluginDependency):
69-
builder.get_object("lbl_message").set_label(_(message.message))
70-
btn_extra_link = builder.get_object("btn_extra_link")
71-
btn_extra_link.set_label(_("Click here for more information"))
72-
btn_extra_link.set_uri(message.link)
73-
btn_extra_link.set_visible(True)
63+
self.lbl_message.set_label(_(message.message))
64+
self.btn_extra_link.set_uri(message.link)
65+
self.btn_extra_link.set_visible(True)
7466
else:
75-
builder.get_object("lbl_message").set_label(_(message))
67+
self.lbl_message.set_label(_(message))
7668

7769
def show(self):
7870
"""Show the dialog."""
79-
self.window.present()
71+
self.present()
8072

73+
@Gtk.Template.Callback()
8174
def on_window_delete(self, *args):
8275
"""Window close event handler."""
83-
self.window.destroy()
76+
self.destroy()
8477
self.on_quit()
8578

79+
@Gtk.Template.Callback()
8680
def on_close_clicked(self, *args):
87-
self.window.destroy()
81+
self.destroy()
8882
self.on_quit()
8983

84+
@Gtk.Template.Callback()
9085
def on_disable_plugin_clicked(self, *args):
91-
self.window.destroy()
86+
self.destroy()
9287
self.on_disable_plugin()

0 commit comments

Comments
 (0)