Compare commits

...

12 Commits

Author SHA1 Message Date
deltragon 5cde669c80
Merge 81d705b38e into a3ca7b7639 2024-10-16 14:12:52 +02:00
openSUSE Lietuviškai a3ca7b7639
Translated using Weblate (Lithuanian)
Currently translated at 100.0% (135 of 135 strings)

Translation: Safe Eyes/Translations
Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/lt/
2024-10-14 08:16:28 +02:00
deltragon 81d705b38e remove unused import 2024-10-02 19:12:22 +02:00
deltragon 8228fc4282 more glade fixes for gtk4 2024-09-28 18:59:00 +02:00
deltragon 1df85dfa4a fixup confirmation dialogs for gtk4 2024-09-28 18:59:00 +02:00
deltragon 3e59d9535a gtk4: plugin settings 2024-09-28 18:20:24 +02:00
deltragon 9b41e57abd gtk4: new break 2024-09-28 18:18:00 +02:00
deltragon 8a509a94d6 gtk4: break settings 2024-09-28 18:17:18 +02:00
deltragon e40b081eb1 gtk4: settings dialog 2024-09-28 18:16:29 +02:00
deltragon be614316a9 gtk4: about dialog 2024-09-28 18:13:26 +02:00
deltragon 3d28775479 gtk4: get break screen ui running 2024-09-28 18:11:41 +02:00
deltragon 2b9f6c871a gtk4: simple changes 2024-09-28 18:08:24 +02:00
25 changed files with 837 additions and 1773 deletions

View File

@ -6,8 +6,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2024-10-11 21:39+0000\n" "PO-Revision-Date: 2024-10-14 06:16+0000\n"
"Last-Translator: Moo <hazap@hotmail.com>\n" "Last-Translator: openSUSE Lietuviškai <opensuse.lietuviu.kalba@gmail.com>\n"
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/safe-eyes/" "Language-Team: Lithuanian <https://hosted.weblate.org/projects/safe-eyes/"
"translations/lt/>\n" "translations/lt/>\n"
"Language: lt\n" "Language: lt\n"
@ -537,57 +537,60 @@ msgstr "Pristabdyti mediją"
# plugin/limitconsecutiveskipping # plugin/limitconsecutiveskipping
msgid "Limit Consecutive Skipping" msgid "Limit Consecutive Skipping"
msgstr "" msgstr "Apriboti nuoseklų praleidinėjimą"
# plugin/limitconsecutiveskipping # plugin/limitconsecutiveskipping
msgid "How many skips or postpones are allowed in a row" msgid "How many skips or postpones are allowed in a row"
msgstr "" msgstr "Kiek leidžiama praleisti arba atidėti kartų iš eilės"
# plugin/limitconsecutiveskipping # plugin/limitconsecutiveskipping
msgid "Limit how many breaks can be skipped or postponed in a row" msgid "Limit how many breaks can be skipped or postponed in a row"
msgstr "" msgstr "Apriboti, kiek kartų galima iš eilės praleisti arba atidėti pertraukų"
# plugin/limitconsecutiveskipping # plugin/limitconsecutiveskipping
#, python-format #, python-format
msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row"
msgstr "" msgstr "Paeiliui praleistos arba atidėtos pertraukos: %(num)d/%(allowed)d"
# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop
msgid "RSI Prevention" msgid "RSI Prevention"
msgstr "" msgstr "Apsaugokite savo akis nuo įtampos"
msgid "" msgid ""
"Please install service providing tray icons for your desktop environment." "Please install service providing tray icons for your desktop environment."
msgstr "" msgstr ""
"Prašome įdiegti savo darbalaukio aplinkos sistemos ženkliukų dėklo paslaugą."
#, python-format #, python-format
msgid "Next long break at %s" msgid "Next long break at %s"
msgstr "" msgstr "Kita ilga pertrauka: %s"
#, python-format #, python-format
msgid "Next breaks at %(short)s/%(long)s" msgid "Next breaks at %(short)s/%(long)s"
msgstr "" msgstr "Kitos pertraukos: %(short)s/%(long)s"
#, python-format #, python-format
msgid "The required plugin '%s' is missing dependencies!" msgid "The required plugin '%s' is missing dependencies!"
msgstr "" msgstr "Reikalingam papildiniui „%s“ trūksta priklausomybių!"
msgid "" msgid ""
"Please install the dependencies or disable the plugin. To hide this message, " "Please install the dependencies or disable the plugin. To hide this message, "
"you can also deactivate the plugin in the settings." "you can also deactivate the plugin in the settings."
msgstr "" msgstr ""
"Prašome įdiegti priklausomybes arba pašalinti papildinį. Norėdami paslėpti "
"šį pranešimą, taip pat galite išjungti šį papildinį nuostatose."
msgid "Click here for more information" msgid "Click here for more information"
msgstr "" msgstr "Norėdami sužinoti daugiau, spauskite čia"
msgid "Disable plugin temporarily" msgid "Disable plugin temporarily"
msgstr "" msgstr "Laikinai išjungti papildinį"
msgid "Disable permanently" msgid "Disable permanently"
msgstr "" msgstr "Išjungti visam laikui"
msgid "License:" msgid "License:"
msgstr "" msgstr "Licencija:"
# Short break # Short break
#~ msgid "Tightly close your eyes" #~ msgid "Tightly close your eyes"

View File

@ -20,7 +20,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.20"/> <requires lib="gtk" version="4.0"/>
<object class="GtkTextBuffer" id="text_buffer_license"> <object class="GtkTextBuffer" id="text_buffer_license">
<property name="text">This program is free software: you can redistribute it and/or modify <property name="text">This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -36,176 +36,121 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</property> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</property>
</object> </object>
<object class="GtkWindow" id="window_about"> <object class="GtkWindow" id="window_about">
<property name="can-focus">False</property>
<property name="title">Safe Eyes</property> <property name="title">Safe Eyes</property>
<property name="resizable">False</property> <property name="resizable">0</property>
<property name="window-position">center-always</property>
<property name="icon-name">safeeyes</property> <property name="icon-name">safeeyes</property>
<property name="type-hint">dialog</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child> <child>
<object class="GtkBox" id="layout_box"> <object class="GtkBox" id="layout_box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property> <property name="margin-start">5</property>
<property name="margin-left">5</property> <property name="margin-end">5</property>
<property name="margin-right">5</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="hexpand">True</property> <property name="hexpand">1</property>
<property name="vexpand">True</property> <property name="vexpand">1</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="baseline-position">top</property> <property name="baseline-position">top</property>
<child> <child>
<object class="GtkBox" id="box1"> <object class="GtkBox" id="box1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="hexpand">True</property> <property name="hexpand">1</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkLabel" id="lbl_app_name"> <object class="GtkLabel" id="lbl_app_name">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="margin-top">10</property> <property name="margin-top">10</property>
<property name="margin-bottom">10</property> <property name="margin-bottom">10</property>
<property name="label">Safe Eyes 2.2.2</property> <property name="label">Safe Eyes 2.2.2</property>
<property name="justify">center</property> <property name="justify">center</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<attributes> <attributes>
<attribute name="style" value="normal"/> <attribute name="style" value="normal"/>
<attribute name="weight" value="bold"/> <attribute name="weight" value="bold"/>
</attributes> </attributes>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_decription"> <object class="GtkLabel" id="lbl_decription">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="margin-top">4</property> <property name="margin-top">4</property>
<property name="label" translatable="yes">Safe Eyes protects your eyes from eye strain (asthenopia) by reminding you to take breaks while you're working long hours at the computer</property> <property name="label" translatable="yes">Safe Eyes protects your eyes from eye strain (asthenopia) by reminding you to take breaks while you&apos;re working long hours at the computer</property>
<property name="justify">fill</property> <property name="justify">fill</property>
<property name="wrap">True</property> <property name="wrap">1</property>
<property name="width-chars">60</property> <property name="width-chars">60</property>
<property name="max-width-chars">60</property> <property name="max-width-chars">60</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_license"> <object class="GtkLabel" id="lbl_license">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="margin-top">10</property> <property name="margin-top">10</property>
<property name="label" translatable="yes">License:</property> <property name="label" translatable="yes">License:</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkTextView" id="txt_license"> <object class="GtkTextView" id="txt_license">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">True</property> <property name="can-focus">1</property>
<property name="hexpand">True</property> <property name="hexpand">1</property>
<property name="vexpand">True</property> <property name="vexpand">1</property>
<property name="editable">False</property> <property name="editable">0</property>
<property name="wrap-mode">word</property> <property name="wrap-mode">word</property>
<property name="buffer">text_buffer_license</property> <property name="buffer">text_buffer_license</property>
<property name="accepts-tab">False</property> <property name="accepts-tab">0</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLinkButton" id="btn_url"> <object class="GtkLinkButton" id="btn_url">
<property name="label">https://slgobinath.github.io/SafeEyes</property> <property name="label">https://slgobinath.github.io/SafeEyes</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">True</property> <property name="can-focus">1</property>
<property name="focus-on-click">False</property> <property name="focus-on-click">0</property>
<property name="receives-default">True</property> <property name="receives-default">1</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="relief">none</property> <property name="has-frame">0</property>
<property name="uri">https://slgobinath.github.io/SafeEyes</property> <property name="uri">https://slgobinath.github.io/SafeEyes</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSeparator" id="separator"> <object class="GtkSeparator" id="separator">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButtonBox" id="buttonbox"> <object class="GtkBox" id="buttonbox">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">False</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="margin-right">5</property> <property name="margin-end">5</property>
<child> <child>
<object class="GtkLinkButton" id="btn_url1"> <object class="GtkLinkButton" id="btn_url1">
<property name="label" translatable="yes">List of Contributors</property> <property name="label" translatable="yes">List of Contributors</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">True</property> <property name="can-focus">1</property>
<property name="focus-on-click">False</property> <property name="focus-on-click">0</property>
<property name="receives-default">True</property> <property name="receives-default">1</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="relief">none</property>
<property name="uri">https://github.com/slgobinath/SafeEyes/graphs/contributors?type=a</property> <property name="uri">https://github.com/slgobinath/SafeEyes/graphs/contributors?type=a</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_close"> <object class="GtkButton" id="btn_close">
<property name="label" translatable="yes">Close</property> <property name="label" translatable="yes">Close</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can-focus">True</property> <property name="can-focus">1</property>
<property name="receives-default">True</property> <property name="receives-default">1</property>
<signal name="clicked" handler="on_close_clicked" swapped="no"/> <property name="hexpand">1</property>
<property name="vexpand">1</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLinkButton" id="btn_url2"> <object class="GtkLinkButton" id="btn_url2">
@ -215,21 +160,11 @@ along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</pr
<property name="focus-on-click">False</property> <property name="focus-on-click">False</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="relief">none</property> <property name="has-frame">0</property>
<property name="uri">https://github.com/slgobinath/SafeEyes?tab=readme-ov-file#how-you-can-help-improving-translation-of-safe-eyes</property> <property name="uri">https://github.com/slgobinath/SafeEyes?tab=readme-ov-file#how-you-can-help-improving-translation-of-safe-eyes</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</child> </child>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<!-- <!--
~ Safe Eyes is a utility to remind you to take break frequently ~ Safe Eyes is a utility to remind you to take break frequently
~ to protect your eyes from eye strain. ~ to protect your eyes from eye strain.
@ -20,220 +19,162 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkWindow" id="window_main"> <object class="GtkWindow" id="window_main">
<property name="can_focus">False</property>
<property name="window_position">center</property>
<property name="hide_titlebar_when_maximized">True</property>
<property name="icon_name">safeeyes</property> <property name="icon_name">safeeyes</property>
<property name="skip_taskbar_hint">True</property> <property name="decorated">0</property>
<property name="urgency_hint">True</property> <property name="deletable">0</property>
<property name="focus_on_map">False</property>
<property name="decorated">False</property>
<property name="deletable">False</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
<child> <property name="child">
<object class="GtkGrid" id="grid1"> <object class="GtkGrid" id="grid1">
<property name="visible">True</property> <property name="row_homogeneous">1</property>
<property name="can_focus">False</property> <property name="column_homogeneous">1</property>
<property name="row_homogeneous">True</property>
<property name="column_homogeneous">True</property>
<child> <child>
<object class="GtkBox" id="box_center_parent"> <object class="GtkBox" id="box_center_parent">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<child> <child>
<object class="GtkGrid" id="grid_central"> <object class="GtkGrid" id="grid_central">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="row_spacing">10</property> <property name="row_spacing">10</property>
<child> <child>
<object class="GtkImage" id="img_break"> <object class="GtkImage" id="img_break">
<property name="visible">True</property> <layout>
<property name="can_focus">False</property> <property name="column">0</property>
<property name="row">0</property>
</layout>
</object> </object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkGrid" id="grid_parent"> <object class="GtkGrid" id="grid_parent">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="hexpand">True</property> <property name="hexpand">1</property>
<property name="row_spacing">15</property> <property name="row_spacing">15</property>
<child> <child>
<object class="GtkLabel" id="lbl_message"> <object class="GtkLabel" id="lbl_message">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label">Hello World</property> <property name="label">Hello World</property>
<property name="justify">center</property> <property name="justify">center</property>
<style> <style>
<class name="lbl_message"/> <class name="lbl_message"/>
</style> </style>
<layout>
<property name="column">0</property>
<property name="row">0</property>
<property name="column-span">3</property>
</layout>
</object> </object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">3</property>
</packing>
</child> </child>
<child>
<object class="GtkAlignment" id="alignment_button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="yscale">0.20000000298023224</property>
<child> <child>
<object class="GtkLabel" id="lbl_count"> <object class="GtkLabel" id="lbl_count">
<property name="visible">True</property> <property name="halign">center</property>
<property name="can_focus">False</property>
<property name="label">00</property> <property name="label">00</property>
<style> <style>
<class name="lbl_count"/> <class name="lbl_count"/>
</style> </style>
<layout>
<property name="column">1</property>
<property name="row">2</property>
</layout>
</object> </object>
</child> </child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child> <child>
<object class="GtkBox" id="box_buttons"> <object class="GtkBox" id="box_buttons">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="spacing">50</property> <property name="spacing">50</property>
<property name="homogeneous">True</property> <property name="homogeneous">1</property>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
<child> <child>
<placeholder/> <placeholder/>
</child> </child>
<layout>
<property name="column">1</property>
<property name="row">3</property>
</layout>
</object>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<layout>
<property name="column">0</property>
<property name="row">1</property>
<property name="row-span">3</property>
</layout>
</object>
</child>
</object> </object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="height">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_widget"> <object class="GtkLabel" id="lbl_widget">
<property name="visible">True</property> <property name="vexpand">1</property>
<property name="can_focus">False</property>
<property name="label">Widget</property> <property name="label">Widget</property>
<property name="yalign">0.25</property> <property name="yalign">0.25</property>
<style> <style>
<class name="lbl_widget"/> <class name="lbl_widget"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
<layout>
<property name="column">0</property>
<property name="row">1</property>
<property name="row-span">2</property>
</layout>
</object> </object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="height">2</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box_top_panel"> <object class="GtkBox" id="box_top_panel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkToolbar" id="toolbar"> <object class="GtkBox" id="toolbar">
<property name="visible">True</property> <property name="css-classes">toolbar</property>
<property name="can_focus">False</property> <property name="can_focus">0</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="toolbar_style">icons</property>
<property name="icon_size">2</property>
<style> <style>
<class name="toolbar"/> <class name="toolbar"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_top"> <object class="GtkLabel" id="lbl_top">
<property name="visible">True</property> <property name="vexpand">1</property>
<property name="can_focus">False</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<style> <style>
<class name="box_top_panel"/> <class name="box_top_panel"/>
</style> </style>
</object> <layout>
<packing> <property name="column">0</property>
<property name="left_attach">0</property> <property name="row">0</property>
<property name="top_attach">0</property> </layout>
</packing>
</child>
</object> </object>
</child> </child>
</object>
</property>
<style> <style>
<class name="window_main"/> <class name="window_main"/>
</style> </style>

View File

@ -20,42 +20,31 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property> <property name="margin-end">5</property>
<property name="margin_right">5</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">5</property>
<property name="margin_bottom">5</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_name"> <object class="GtkLabel" id="lbl_name">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="halign">start</property>
<property name="label">label</property> <property name="label">label</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSwitch" id="switch_value"> <object class="GtkSwitch" id="switch_value">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</interface> </interface>

View File

@ -20,76 +20,49 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkImage" id="img_properties">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-properties</property>
</object>
<object class="GtkImage" id="img_delete">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-delete</property>
</object>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property> <property name="margin-end">5</property>
<property name="margin_right">5</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">5</property>
<property name="margin_bottom">5</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<property name="vexpand">0</property>
<child> <child>
<object class="GtkLabel" id="lbl_name"> <object class="GtkLabel" id="lbl_name">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label">label</property> <property name="label">label</property>
<property name="xalign">0</property> <property name="xalign">0</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_properties"> <object class="GtkButton" id="btn_properties">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="receives_default">True</property> <property name="receives-default">1</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="image">img_properties</property> <property name="icon-name">gtk-properties</property>
<property name="always_show_image">True</property>
<style> <style>
<class name="btn_circle"/> <class name="btn_circle"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_delete"> <object class="GtkButton" id="btn_delete">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="receives_default">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="image">img_delete</property> <property name="icon-name">edit-delete</property>
<property name="always_show_image">True</property>
<style> <style>
<class name="btn_circle"/> <class name="btn_circle"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</interface> </interface>

View File

@ -20,47 +20,37 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkAdjustment" id="adjustment_value"> <object class="GtkAdjustment" id="adjustment_value">
<property name="upper">100</property> <property name="upper">100</property>
<property name="step_increment">1</property> <property name="step-increment">1</property>
<property name="page_increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property> <property name="margin-end">5</property>
<property name="margin_right">5</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">5</property>
<property name="margin_bottom">5</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_name"> <object class="GtkLabel" id="lbl_name">
<property name="visible">True</property> <property name="halign">start</property>
<property name="can_focus">False</property> <property name="visible">1</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label">label</property> <property name="label">label</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSpinButton" id="spin_value"> <object class="GtkSpinButton" id="spin_value">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="adjustment">adjustment_value</property> <property name="adjustment">adjustment_value</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</interface> </interface>

View File

@ -20,81 +20,58 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkImage" id="img_properties">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-properties</property>
</object>
<object class="GtkImage" id="img_disable">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon-name">_Cancel</property>
</object>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property> <property name="margin-end">5</property>
<property name="margin_right">5</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">5</property>
<property name="margin_bottom">5</property> <property name="vexpand">0</property>
<child> <child>
<object class="GtkImage" id="img_plugin_icon"> <object class="GtkImage" id="img_plugin_icon">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="stock">gtk-about</property> <property name="icon-name">gtk-about</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box2"> <object class="GtkBox" id="box2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_plugin_name"> <object class="GtkLabel" id="lbl_plugin_name">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">end</property> <property name="valign">end</property>
<property name="label">Plugin Name</property> <property name="label">Plugin Name</property>
<property name="xalign">0.05000000074505806</property> <property name="xalign">0.05000000074505806</property>
<property name="yalign">1</property> <property name="yalign">1</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<style> <style>
<class name="lbl_plugin_name"/> <class name="lbl_plugin_name"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_plugin_description"> <object class="GtkLabel" id="lbl_plugin_description">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">start</property> <property name="valign">start</property>
<property name="label">Plugin Description</property> <property name="label">Plugin Description</property>
<property name="xalign">0.05000000074505806</property> <property name="xalign">0.05000000074505806</property>
<property name="yalign">0</property> <property name="yalign">0</property>
<property name="hexpand">1</property>
<property name="vexpand">1</property>
<style> <style>
<class name="lbl_plugin_description"/> <class name="lbl_plugin_description"/>
</style> </style>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkLinkButton" id="btn_plugin_extra_link"> <object class="GtkLinkButton" id="btn_plugin_extra_link">
@ -111,21 +88,15 @@
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box3"> <object class="GtkBox" id="box3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkSwitch" id="switch_enable"> <object class="GtkSwitch" id="switch_enable">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
@ -135,9 +106,8 @@
<property name="visible">False</property> <property name="visible">False</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="image">img_disable</property> <property name="icon-name">gtk-cancel</property>
<property name="tooltip-text" translatable="yes">Disable permanently</property> <property name="tooltip-text" translatable="yes">Disable permanently</property>
<property name="always_show_image">True</property>
<style> <style>
<class name="btn_circle"/> <class name="btn_circle"/>
</style> </style>
@ -145,24 +115,18 @@
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_properties"> <object class="GtkButton" id="btn_properties">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="receives_default">True</property> <property name="receives-default">1</property>
<property name="halign">center</property> <property name="halign">center</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="image">img_properties</property> <property name="icon-name">gtk-properties</property>
<property name="always_show_image">True</property>
<style> <style>
<class name="btn_circle"/> <class name="btn_circle"/>
</style> </style>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</interface> </interface>

View File

@ -20,41 +20,31 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkBox" id="box"> <object class="GtkBox" id="box">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">5</property>
<property name="margin_left">5</property> <property name="margin-end">5</property>
<property name="margin_right">5</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">5</property>
<property name="margin_bottom">5</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_name"> <object class="GtkLabel" id="lbl_name">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="halign">start</property>
<property name="label">label</property> <property name="label">label</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="txt_value"> <object class="GtkEntry" id="txt_value">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</interface> </interface>

View File

@ -20,11 +20,11 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkAdjustment" id="adjustment_duration"> <object class="GtkAdjustment" id="adjustment_duration">
<property name="upper">100</property> <property name="upper">100</property>
<property name="step_increment">1</property> <property name="step-increment">1</property>
<property name="page_increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkListStore" id="lst_break_types"> <object class="GtkListStore" id="lst_break_types">
<columns> <columns>
@ -41,87 +41,62 @@
</data> </data>
</object> </object>
<object class="GtkWindow" id="dialog_new_break"> <object class="GtkWindow" id="dialog_new_break">
<property name="can_focus">False</property>
<property name="title" translatable="yes">New Break</property> <property name="title" translatable="yes">New Break</property>
<property name="resizable">False</property> <property name="resizable">0</property>
<property name="modal">True</property> <property name="modal">1</property>
<property name="window_position">center-on-parent</property> <property name="default-width">500</property>
<property name="default_width">500</property> <property name="default-height">50</property>
<property name="default_height">50</property> <property name="destroy-with-parent">1</property>
<property name="destroy_with_parent">True</property> <property name="icon-name">safeeyes</property>
<property name="icon_name">safeeyes</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child> <child>
<object class="GtkBox" id="box_settings"> <object class="GtkBox" id="box_settings">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">10</property>
<property name="margin_left">10</property> <property name="margin-end">10</property>
<property name="margin_right">10</property> <property name="margin-top">10</property>
<property name="margin_top">10</property> <property name="margin-bottom">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkFrame" id="frame2"> <object class="GtkFrame" id="frame2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkBox" id="box6"> <object class="GtkBox" id="box6">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">12</property>
<property name="margin_right">10</property> <property name="margin-end">10</property>
<property name="margin_top">5</property> <property name="margin-top">5</property>
<property name="margin_bottom">10</property> <property name="margin-bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<child> <child>
<object class="GtkEntry" id="txt_break"> <object class="GtkEntry" id="txt_break">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="width_chars">64</property> <property name="width-chars">64</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box7"> <object class="GtkBox" id="box7">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration3"> <object class="GtkLabel" id="lbl_duration3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Type</property> <property name="label" translatable="yes">Type</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkComboBox" id="cmb_type"> <object class="GtkComboBox" id="cmb_type">
<property name="visible">True</property> <property name="halign">end</property>
<property name="can_focus">False</property> <property name="visible">1</property>
<property name="model">lst_break_types</property> <property name="model">lst_break_types</property>
<property name="active">0</property> <property name="active">0</property>
<property name="id_column">0</property> <property name="id-column">0</property>
<child> <child>
<object class="GtkCellRendererText" id="cellrenderertext1"/> <object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes> <attributes>
@ -129,22 +104,6 @@
</attributes> </attributes>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<placeholder/>
</child> </child>
</object> </object>
</child> </child>
@ -152,61 +111,36 @@
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel" id="label2"> <object class="GtkLabel" id="label2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Break</property> <property name="label" translatable="yes">Break</property>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButtonBox" id="buttonbox1"> <object class="GtkBox" id="buttonbox1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">True</property> <property name="homogeneous">1</property>
<property name="baseline_position">top</property> <property name="baseline-position">top</property>
<property name="layout_style">end</property> <property name="halign">end</property>
<child> <child>
<object class="GtkButton" id="btn_discard"> <object class="GtkButton" id="btn_discard">
<property name="label">Discard</property> <property name="label">Discard</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="receives_default">True</property> <property name="receives-default">1</property>
<signal name="clicked" handler="discard" swapped="no"/>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_save"> <object class="GtkButton" id="btn_save">
<property name="label" translatable="yes">Save</property> <property name="label" translatable="yes">Save</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="has_focus">True</property> <property name="receives-default">1</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="save" swapped="no"/>
</object> </object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child> </child>
</object> </object>
</child> </child>

View File

@ -20,7 +20,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkWindow" id="window_required_plugin"> <object class="GtkWindow" id="window_required_plugin">
<property name="title" translatable="1">Safe Eyes - Error</property> <property name="title" translatable="1">Safe Eyes - Error</property>
<property name="resizable">0</property> <property name="resizable">0</property>
@ -71,7 +71,10 @@
</child> </child>
<child> <child>
<object class="GtkLabel" id="lbl_main"> <object class="GtkLabel" id="lbl_main">
<property name="margin">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="wrap">1</property> <property name="wrap">1</property>
<property name="justify">center</property> <property name="justify">center</property>
<property name="max-width-chars">60</property> <property name="max-width-chars">60</property>

View File

@ -20,23 +20,18 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkAdjustment" id="adjustment_duration"> <object class="GtkAdjustment" id="adjustment_duration">
<property name="lower">1</property> <property name="lower">1</property>
<property name="upper">3600</property> <property name="upper">3600</property>
<property name="step_increment">1</property> <property name="step-increment">1</property>
<property name="page_increment">10</property> <property name="page-increment">10</property>
</object> </object>
<object class="GtkAdjustment" id="adjustment_interval"> <object class="GtkAdjustment" id="adjustment_interval">
<property name="lower">1</property> <property name="lower">1</property>
<property name="upper">120</property> <property name="upper">120</property>
<property name="step_increment">1</property> <property name="step-increment">1</property>
<property name="page_increment">10</property> <property name="page-increment">10</property>
</object>
<object class="GtkImage" id="img_break">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-missing-image</property>
</object> </object>
<object class="GtkListStore" id="lst_break_types"> <object class="GtkListStore" id="lst_break_types">
<columns> <columns>
@ -53,89 +48,61 @@
</data> </data>
</object> </object>
<object class="GtkWindow" id="dialog_settings_break"> <object class="GtkWindow" id="dialog_settings_break">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Break Settings</property> <property name="title" translatable="yes">Break Settings</property>
<property name="resizable">False</property> <property name="resizable">0</property>
<property name="modal">True</property> <property name="modal">1</property>
<property name="window_position">center-on-parent</property> <property name="default-width">500</property>
<property name="default_width">500</property> <property name="default-height">50</property>
<property name="default_height">50</property> <property name="destroy-with-parent">1</property>
<property name="destroy_with_parent">True</property> <property name="icon-name">safeeyes</property>
<property name="icon_name">safeeyes</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child>
<placeholder/>
</child>
<child> <child>
<object class="GtkBox" id="box_settings"> <object class="GtkBox" id="box_settings">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">10</property>
<property name="margin_left">10</property> <property name="margin-end">10</property>
<property name="margin_right">10</property> <property name="margin-top">10</property>
<property name="margin_top">10</property> <property name="margin-bottom">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property> <property name="spacing">5</property>
<child> <child>
<object class="GtkFrame" id="frame2"> <object class="GtkFrame" id="frame2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkBox" id="box6"> <object class="GtkBox" id="box6">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">12</property>
<property name="margin_right">10</property> <property name="margin-end">10</property>
<property name="margin_top">5</property> <property name="margin-top">5</property>
<property name="margin_bottom">10</property> <property name="margin-bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<child> <child>
<object class="GtkEntry" id="txt_break"> <object class="GtkEntry" id="txt_break">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box7"> <object class="GtkBox" id="box7">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration3"> <object class="GtkLabel" id="lbl_duration3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Type</property> <property name="label" translatable="yes">Type</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkComboBox" id="cmb_type"> <object class="GtkComboBox" id="cmb_type">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="model">lst_break_types</property> <property name="model">lst_break_types</property>
<property name="active">0</property> <property name="active">0</property>
<property name="id_column">0</property> <property name="id-column">0</property>
<property name="halign">end</property>
<child> <child>
<object class="GtkCellRendererText" id="cellrenderertext1"/> <object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes> <attributes>
@ -143,62 +110,31 @@
</attributes> </attributes>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box8"> <object class="GtkBox" id="box8">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration4"> <object class="GtkLabel" id="lbl_duration4">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Image</property> <property name="label" translatable="yes">Image</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="btn_image"> <object class="GtkButton" id="btn_image">
<property name="halign">end</property>
<property name="label" translatable="yes">Select</property> <property name="label" translatable="yes">Select</property>
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="receives_default">True</property> <property name="receives-default">1</property>
<property name="image">img_break</property> <property name="icon-name">gtk-missing-image</property>
<property name="always_show_image">True</property>
<signal name="clicked" handler="select_image" swapped="no"/>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
@ -206,119 +142,70 @@
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel" id="label2"> <object class="GtkLabel" id="label2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Break</property> <property name="label" translatable="yes">Break</property>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkFrame" id="frame4"> <object class="GtkFrame" id="frame4">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkBox" id="box9"> <object class="GtkBox" id="box9">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">12</property>
<property name="margin_right">10</property> <property name="margin-end">10</property>
<property name="margin_top">5</property> <property name="margin-top">5</property>
<property name="margin_bottom">10</property> <property name="margin-bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<child> <child>
<object class="GtkBox" id="box10"> <object class="GtkBox" id="box10">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration5"> <object class="GtkLabel" id="lbl_duration5">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Override</property> <property name="label" translatable="yes">Override</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSwitch" id="switch_override_interval"> <object class="GtkSwitch" id="switch_override_interval">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box11"> <object class="GtkBox" id="box11">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">100</property> <property name="spacing">100</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration6"> <object class="GtkLabel" id="lbl_duration6">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Time (in minutes)</property> <property name="label" translatable="yes">Time (in minutes)</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSpinButton" id="spin_interval"> <object class="GtkSpinButton" id="spin_interval">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="text">0</property> <property name="text">0</property>
<property name="adjustment">adjustment_interval</property> <property name="adjustment">adjustment_interval</property>
<property name="numeric">True</property> <property name="numeric">1</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
@ -326,118 +213,69 @@
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel" id="label4"> <object class="GtkLabel" id="label4">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Time to wait</property> <property name="label" translatable="yes">Time to wait</property>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkFrame" id="frame1"> <object class="GtkFrame" id="frame1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkBox" id="box2"> <object class="GtkBox" id="box2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">12</property>
<property name="margin_right">10</property> <property name="margin-end">10</property>
<property name="margin_top">5</property> <property name="margin-top">5</property>
<property name="margin_bottom">10</property> <property name="margin-bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<child> <child>
<object class="GtkBox" id="box4"> <object class="GtkBox" id="box4">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration1"> <object class="GtkLabel" id="lbl_duration1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Override</property> <property name="label" translatable="yes">Override</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSwitch" id="switch_override_duration"> <object class="GtkSwitch" id="switch_override_duration">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkBox" id="box3"> <object class="GtkBox" id="box3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="spacing">100</property> <property name="spacing">100</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration"> <object class="GtkLabel" id="lbl_duration">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Time (in seconds)</property> <property name="label" translatable="yes">Time (in seconds)</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSpinButton" id="spin_duration"> <object class="GtkSpinButton" id="spin_duration">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="adjustment">adjustment_duration</property> <property name="adjustment">adjustment_duration</property>
<property name="numeric">True</property> <property name="numeric">1</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
</child> </child>
@ -445,138 +283,67 @@
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel" id="label1"> <object class="GtkLabel" id="label1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Duration</property> <property name="label" translatable="yes">Duration</property>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkFrame" id="frame3"> <object class="GtkFrame" id="frame3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label_xalign">0</property>
<child>
<object class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="left_padding">12</property>
<child> <child>
<object class="GtkBox" id="box1"> <object class="GtkBox" id="box1">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-start">12</property>
<property name="margin_top">5</property> <property name="margin-top">5</property>
<property name="margin_bottom">10</property> <property name="margin-bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property> <property name="spacing">3</property>
<child> <child>
<object class="GtkBox" id="box5"> <object class="GtkBox" id="box5">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-end">10</property>
<property name="margin_right">10</property> <property name="margin-top">5</property>
<property name="margin_top">5</property> <property name="margin-bottom">10</property>
<property name="margin_bottom">10</property>
<property name="spacing">10</property> <property name="spacing">10</property>
<property name="homogeneous">1</property>
<child> <child>
<object class="GtkLabel" id="lbl_duration2"> <object class="GtkLabel" id="lbl_duration2">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="halign">start</property> <property name="halign">start</property>
<property name="valign">center</property> <property name="valign">center</property>
<property name="label" translatable="yes">Override</property> <property name="label" translatable="yes">Override</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkSwitch" id="switch_override_plugins"> <object class="GtkSwitch" id="switch_override_plugins">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">True</property> <property name="can-focus">1</property>
<property name="halign">end</property> <property name="halign">end</property>
<property name="valign">center</property> <property name="valign">center</property>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child> </child>
<child> <child>
<object class="GtkGrid" id="grid_plugins"> <object class="GtkGrid" id="grid_plugins">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-end">10</property>
<property name="margin_right">10</property> <property name="margin-bottom">10</property>
<property name="margin_bottom">10</property> <property name="row-homogeneous">1</property>
<property name="row_homogeneous">True</property> <property name="column-homogeneous">1</property>
<property name="column_homogeneous">True</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
</object> </object>
</child> </child>
<child type="label"> <child type="label">
<object class="GtkLabel" id="label3"> <object class="GtkLabel" id="label3">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Plugins</property> <property name="label" translatable="yes">Plugins</property>
</object> </object>
</child> </child>
</object> </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child> </child>
</object> </object>
</child> </child>

File diff suppressed because it is too large Load Diff

View File

@ -20,39 +20,23 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<interface> <interface>
<requires lib="gtk+" version="3.12"/> <requires lib="gtk" version="4.0"/>
<object class="GtkWindow" id="dialog_settings_plugin"> <object class="GtkWindow" id="dialog_settings_plugin">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Plugin Settings</property> <property name="title" translatable="yes">Plugin Settings</property>
<property name="resizable">False</property> <property name="resizable">0</property>
<property name="modal">True</property> <property name="modal">1</property>
<property name="window_position">center-on-parent</property> <property name="default-width">400</property>
<property name="default_width">400</property> <property name="default-height">10</property>
<property name="default_height">10</property> <property name="destroy-with-parent">1</property>
<property name="destroy_with_parent">True</property> <property name="icon-name">safeeyes</property>
<property name="icon_name">safeeyes</property>
<property name="type_hint">dialog</property>
<property name="skip_taskbar_hint">True</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child> <child>
<object class="GtkBox" id="box_settings"> <object class="GtkBox" id="box_settings">
<property name="visible">True</property> <property name="visible">1</property>
<property name="can_focus">False</property> <property name="margin-top">10</property>
<property name="margin_top">10</property> <property name="margin-bottom">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">15</property> <property name="spacing">15</property>
<property name="homogeneous">True</property> <property name="homogeneous">1</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object> </object>
</child> </child>
</object> </object>

View File

@ -27,6 +27,10 @@ from dataclasses import dataclass
from packaging.version import parse from packaging.version import parse
import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
from safeeyes import utility from safeeyes import utility
@ -399,7 +403,8 @@ class TrayAction:
def get_icon(self): def get_icon(self):
if self.system_icon: if self.system_icon:
return self.__icon image = Gtk.Image.new_from_icon_name(self.__icon)
return image
else: else:
image = utility.load_and_scale_image(self.__icon, 16, 16) image = utility.load_and_scale_image(self.__icon, 16, 16)
image.show() image.show()

View File

@ -25,7 +25,7 @@ Comment[tr]=Gözünüzü yorgunluğa karşı koruyun
Comment[uk]=Захистіть свої очі від втоми Comment[uk]=Захистіть свої очі від втоми
Comment[vi]=Bảo vệ đôi mắt của bạn khỏi sự mệt mỏi Comment[vi]=Bảo vệ đôi mắt của bạn khỏi sự mệt mỏi
GenericName=RSI Prevention GenericName=RSI Prevention
Exec=env GDK_BACKEND=x11 safeeyes Exec=safeeyes
Icon=io.github.slgobinath.SafeEyes Icon=io.github.slgobinath.SafeEyes
Terminal=false Terminal=false
Type=Application Type=Application

View File

@ -27,7 +27,7 @@ import re
import subprocess import subprocess
import gi import gi
gi.require_version('Gdk', '3.0') gi.require_version('Gdk', '4.0')
from gi.repository import Gdk from gi.repository import Gdk
from gi.repository import GdkX11 # noqa F401 from gi.repository import GdkX11 # noqa F401
from gi.repository import Gio from gi.repository import Gio

View File

@ -25,8 +25,8 @@ import os
import re import re
import gi import gi
from safeeyes.model import TrayAction from safeeyes.model import TrayAction
gi.require_version('Gtk', '3.0') gi.require_version('Gio', '2.0')
from gi.repository import Gtk, Gio from gi.repository import Gio
tray_icon_path = None tray_icon_path = None
@ -90,5 +90,5 @@ def get_tray_action(break_obj):
if players: if players:
return TrayAction.build("Pause media", return TrayAction.build("Pause media",
tray_icon_path, tray_icon_path,
Gtk.STOCK_MEDIA_PAUSE, "media-playback-pause",
lambda: __pause_players(players)) lambda: __pause_players(players))

View File

@ -26,8 +26,6 @@ import os
from safeeyes import utility from safeeyes import utility
from safeeyes.model import TrayAction from safeeyes.model import TrayAction
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
context = None context = None
lock_screen = False lock_screen = False
@ -131,5 +129,5 @@ def on_stop_break():
def get_tray_action(break_obj): def get_tray_action(break_obj):
return TrayAction.build("Lock screen", return TrayAction.build("Lock screen",
tray_icon_path, tray_icon_path,
Gtk.STOCK_DIALOG_AUTHENTICATION, "dialog-password",
__lock_screen) __lock_screen)

View File

@ -19,7 +19,7 @@
import datetime import datetime
from safeeyes.model import BreakType from safeeyes.model import BreakType
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '4.0')
from gi.repository import Gio, GLib from gi.repository import Gio, GLib
import logging import logging
from safeeyes import utility from safeeyes import utility

View File

@ -36,7 +36,7 @@ from safeeyes.plugin_manager import PluginManager
from safeeyes.core import SafeEyesCore from safeeyes.core import SafeEyesCore
from safeeyes.ui.settings_dialog import SettingsDialog from safeeyes.ui.settings_dialog import SettingsDialog
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio, GLib from gi.repository import Gtk, Gio, GLib
SAFE_EYES_VERSION = "2.2.2" SAFE_EYES_VERSION = "2.2.2"

View File

@ -35,8 +35,11 @@ class AboutDialog:
def __init__(self, version): def __init__(self, version):
builder = utility.create_gtk_builder(ABOUT_DIALOG_GLADE) builder = utility.create_gtk_builder(ABOUT_DIALOG_GLADE)
builder.connect_signals(self)
self.window = builder.get_object('window_about') self.window = builder.get_object('window_about')
self.window.connect("close-request", self.on_window_delete)
builder.get_object('btn_close').connect('clicked', self.on_close_clicked)
builder.get_object('lbl_decription').set_label(_("Safe Eyes protects your eyes from eye strain (asthenopia) by reminding you to take breaks while you're working long hours at the computer")) builder.get_object('lbl_decription').set_label(_("Safe Eyes protects your eyes from eye strain (asthenopia) by reminding you to take breaks while you're working long hours at the computer"))
builder.get_object('lbl_license').set_label(_('License') + ':') builder.get_object('lbl_license').set_label(_('License') + ':')
@ -47,7 +50,7 @@ class AboutDialog:
""" """
Show the About dialog. Show the About dialog.
""" """
self.window.show_all() self.window.present()
def on_window_delete(self, *args): def on_window_delete(self, *args):
""" """

View File

@ -27,7 +27,7 @@ from safeeyes import utility
from Xlib.display import Display from Xlib.display import Display
from Xlib.display import X from Xlib.display import X
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '4.0')
from gi.repository import Gdk from gi.repository import Gdk
from gi.repository import GLib from gi.repository import GLib
from gi.repository import Gtk from gi.repository import Gtk
@ -59,7 +59,9 @@ class BreakScreen:
# Initialize the theme # Initialize the theme
css_provider = Gtk.CssProvider() css_provider = Gtk.CssProvider()
css_provider.load_from_path(style_sheet_path) css_provider.load_from_path(style_sheet_path)
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
display = Gdk.Display.get_default()
Gtk.StyleContext.add_provider_for_display(display, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
def initialize(self, config): def initialize(self, config):
""" """
@ -152,25 +154,25 @@ class BreakScreen:
utility.start_thread(self.__lock_keyboard) utility.start_thread(self.__lock_keyboard)
display = Gdk.Display.get_default() display = Gdk.Display.get_default()
screen = display.get_default_screen() monitors = display.get_monitors()
no_of_monitors = display.get_n_monitors() logging.info("Show break screens in %d display(s)", len(monitors))
logging.info("Show break screens in %d display(s)", no_of_monitors)
skip_button_disabled = self.context.get('skip_button_disabled', False) skip_button_disabled = self.context.get('skip_button_disabled', False)
postpone_button_disabled = self.context.get('postpone_button_disabled', False) postpone_button_disabled = self.context.get('postpone_button_disabled', False)
for monitor_num in range(no_of_monitors): i = 0
monitor = display.get_monitor(monitor_num)
for monitor in monitors:
monitor_gemoetry = monitor.get_geometry() monitor_gemoetry = monitor.get_geometry()
x = monitor_gemoetry.x x = monitor_gemoetry.x
y = monitor_gemoetry.y y = monitor_gemoetry.y
builder = Gtk.Builder() builder = Gtk.Builder()
builder.add_from_file(BREAK_SCREEN_GLADE) builder.add_from_file(BREAK_SCREEN_GLADE)
builder.connect_signals(self)
window = builder.get_object("window_main") window = builder.get_object("window_main")
window.set_title("SafeEyes-" + str(monitor_num)) window.connect("close-request", self.on_window_delete)
window.set_title("SafeEyes-" + str(i))
lbl_message = builder.get_object("lbl_message") lbl_message = builder.get_object("lbl_message")
lbl_count = builder.get_object("lbl_count") lbl_count = builder.get_object("lbl_count")
lbl_widget = builder.get_object("lbl_widget") lbl_widget = builder.get_object("lbl_widget")
@ -179,15 +181,14 @@ class BreakScreen:
toolbar = builder.get_object("toolbar") toolbar = builder.get_object("toolbar")
for tray_action in tray_actions: for tray_action in tray_actions:
toolbar_button = None # TODO: apparently, this would be better served with an icon theme + Gtk.button.new_from_icon_name
if tray_action.system_icon: icon = tray_action.get_icon()
toolbar_button = Gtk.ToolButton.new_from_stock(tray_action.get_icon()) toolbar_button = Gtk.Button()
else: toolbar_button.set_child(icon)
toolbar_button = Gtk.ToolButton.new(tray_action.get_icon(), tray_action.name)
tray_action.add_toolbar_button(toolbar_button) tray_action.add_toolbar_button(toolbar_button)
toolbar_button.connect("clicked", lambda button, action: self.__tray_action(button, action), tray_action) toolbar_button.connect("clicked", lambda button, action: self.__tray_action(button, action), tray_action)
toolbar_button.set_tooltip_text(_(tray_action.name)) toolbar_button.set_tooltip_text(_(tray_action.name))
toolbar.add(toolbar_button) toolbar.append(toolbar_button)
toolbar_button.show() toolbar_button.show()
# Add the buttons # Add the buttons
@ -197,7 +198,7 @@ class BreakScreen:
btn_postpone.get_style_context().add_class('btn_postpone') btn_postpone.get_style_context().add_class('btn_postpone')
btn_postpone.connect('clicked', self.on_postpone_clicked) btn_postpone.connect('clicked', self.on_postpone_clicked)
btn_postpone.set_visible(True) btn_postpone.set_visible(True)
box_buttons.pack_start(btn_postpone, True, True, 0) box_buttons.append(btn_postpone)
if not self.strict_break and not skip_button_disabled: if not self.strict_break and not skip_button_disabled:
# Add the skip button # Add the skip button
@ -205,7 +206,7 @@ class BreakScreen:
btn_skip.get_style_context().add_class('btn_skip') btn_skip.get_style_context().add_class('btn_skip')
btn_skip.connect('clicked', self.on_skip_clicked) btn_skip.connect('clicked', self.on_skip_clicked)
btn_skip.set_visible(True) btn_skip.set_visible(True)
box_buttons.pack_start(btn_skip, True, True, 0) box_buttons.append(btn_skip)
# Set values # Set values
if image_path: if image_path:
@ -216,23 +217,14 @@ class BreakScreen:
self.windows.append(window) self.windows.append(window)
self.count_labels.append(lbl_count) self.count_labels.append(lbl_count)
# Set visual to apply css theme. It should be called before show method.
window.set_visual(window.get_screen().get_rgba_visual())
if self.context['desktop'] == 'kde': if self.context['desktop'] == 'kde':
# Fix flickering screen in KDE by setting opacity to 1 # Fix flickering screen in KDE by setting opacity to 1
window.set_opacity(0.9) window.set_opacity(0.9)
# In Unity, move the window before present window.fullscreen_on_monitor(monitor)
window.move(x, y)
window.resize(monitor_gemoetry.width, monitor_gemoetry.height)
window.stick()
window.set_keep_above(True)
window.fullscreen_on_monitor(screen, monitor_num)
window.present() window.present()
# In other desktop environments, move the window after present
window.move(x, y) i = i + 1
window.resize(monitor_gemoetry.width, monitor_gemoetry.height)
logging.info("Moved break screen to Display[%d, %d]", x, y)
def __update_count_down(self, count): def __update_count_down(self, count):
""" """

View File

@ -40,7 +40,7 @@ class RequiredPluginDialog:
builder = utility.create_gtk_builder(REQUIRED_PLUGIN_DIALOG_GLADE) builder = utility.create_gtk_builder(REQUIRED_PLUGIN_DIALOG_GLADE)
self.window = builder.get_object('window_required_plugin') self.window = builder.get_object('window_required_plugin')
self.window.connect("delete-event", self.on_window_delete) self.window.connect("close-request", self.on_window_delete)
builder.get_object('btn_close').connect('clicked', self.on_close_clicked) builder.get_object('btn_close').connect('clicked', self.on_close_clicked)
builder.get_object('btn_disable_plugin').connect('clicked', self.on_disable_plugin_clicked) builder.get_object('btn_disable_plugin').connect('clicked', self.on_disable_plugin_clicked)
@ -64,7 +64,7 @@ class RequiredPluginDialog:
""" """
Show the dialog. Show the dialog.
""" """
self.window.show_all() self.window.present()
def on_window_delete(self, *args): def on_window_delete(self, *args):
""" """

View File

@ -23,9 +23,9 @@ import gi
from safeeyes import utility from safeeyes import utility
from safeeyes.model import Config, PluginDependency from safeeyes.model import Config, PluginDependency
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '4.0')
from gi.repository import Gtk from gi.repository import Gtk, Gio
from gi.repository import GdkPixbuf from gi.repository import GdkPixbuf, Gdk
SETTINGS_DIALOG_GLADE = os.path.join(utility.BIN_DIRECTORY, "glade/settings_dialog.glade") SETTINGS_DIALOG_GLADE = os.path.join(utility.BIN_DIRECTORY, "glade/settings_dialog.glade")
@ -55,7 +55,6 @@ class SettingsDialog:
self.warn_bar_rpc_server_shown = False self.warn_bar_rpc_server_shown = False
builder = utility.create_gtk_builder(SETTINGS_DIALOG_GLADE) builder = utility.create_gtk_builder(SETTINGS_DIALOG_GLADE)
builder.connect_signals(self)
self.window = builder.get_object('window_settings') self.window = builder.get_object('window_settings')
self.box_short_breaks = builder.get_object('box_short_breaks') self.box_short_breaks = builder.get_object('box_short_breaks')
@ -80,18 +79,26 @@ class SettingsDialog:
self.info_bar_long_break.hide() self.info_bar_long_break.hide()
self.warn_bar_rpc_server.hide() self.warn_bar_rpc_server.hide()
self.window.connect("close-request", self.on_window_delete)
builder.get_object('reset_menu').connect('clicked', self.on_reset_menu_clicked)
self.spin_short_break_interval.connect('value-changed', self.on_spin_short_break_interval_change)
self.info_bar_long_break.connect('close', self.on_info_bar_long_break_close)
self.info_bar_long_break.connect('response', self.on_info_bar_long_break_close)
self.spin_long_break_interval.connect('value-changed', self.on_spin_long_break_interval_change)
self.warn_bar_rpc_server.connect('close', self.on_warn_bar_rpc_server_close)
self.warn_bar_rpc_server.connect('response', self.on_warn_bar_rpc_server_close)
builder.get_object('btn_add_break').connect('clicked', self.add_break)
# Set the current values of input fields # Set the current values of input fields
self.__initialize(config) self.__initialize(config)
# Update relative states
# GtkSwitch state-set signal is available only from 3.14
if Gtk.get_minor_version() >= 14:
# Add event listener to postpone switch # Add event listener to postpone switch
self.switch_postpone.connect('state-set', self.on_switch_postpone_activate) self.switch_postpone.connect('state-set', self.on_switch_postpone_activate)
self.on_switch_postpone_activate(self.switch_postpone, self.switch_postpone.get_active()) self.on_switch_postpone_activate(self.switch_postpone, self.switch_postpone.get_active())
# Add event listener to RPC server switch # Add event listener to RPC server switch
self.switch_rpc_server.connect('state-set', self.on_switch_rpc_server_activate) self.switch_rpc_server.connect('state-set', self.on_switch_rpc_server_activate)
self.on_switch_rpc_server_activate(self.switch_rpc_server, self.switch_rpc_server.get_active()) self.on_switch_rpc_server_activate(self.switch_rpc_server, self.switch_rpc_server.get_active())
self.initializing = False self.initializing = False
def __initialize(self, config): def __initialize(self, config):
@ -103,7 +110,7 @@ class SettingsDialog:
self.__create_break_item(long_break, False) self.__create_break_item(long_break, False)
for plugin_config in utility.load_plugins_config(config): for plugin_config in utility.load_plugins_config(config):
self.box_plugins.pack_start(self.__create_plugin_item(plugin_config), False, False, 0) self.box_plugins.append(self.__create_plugin_item(plugin_config))
self.spin_short_break_duration.set_value(config.get('short_break_duration')) self.spin_short_break_duration.set_value(config.get('short_break_duration'))
self.spin_long_break_duration.set_value(config.get('long_break_duration')) self.spin_long_break_duration.set_value(config.get('long_break_duration'))
@ -152,61 +159,62 @@ class SettingsDialog:
) )
) )
box.set_visible(True) box.set_visible(True)
parent_box.pack_start(box, False, False, 0) parent_box.append(box)
return box return box
def on_reset_menu_clicked(self, button): def on_reset_menu_clicked(self, button):
self.popover.hide() self.popover.hide()
def __confirmation_dialog_response(widget, response_id): def __confirmation_dialog_response(dialog, result):
if response_id == Gtk.ResponseType.OK: response_id = dialog.choose_finish(result)
if response_id == 1:
utility.reset_config() utility.reset_config()
self.config = Config() self.config = Config()
# Remove breaks from the container # Remove breaks from the container
self.box_short_breaks.foreach(lambda element: self.box_short_breaks.remove(element)) self.__clear_children(self.box_short_breaks)
self.box_long_breaks.foreach(lambda element: self.box_long_breaks.remove(element)) self.__clear_children(self.box_long_breaks)
# Remove plugins from the container self.__clear_children(self.box_plugins)
self.box_plugins.foreach(lambda element: self.box_plugins.remove(element))
# Initialize again # Initialize again
self.__initialize(self.config) self.__initialize(self.config)
widget.destroy()
messagedialog = Gtk.MessageDialog() messagedialog = Gtk.AlertDialog()
messagedialog.set_modal(True) messagedialog.set_modal(True)
messagedialog.set_transient_for(self.window) messagedialog.set_buttons(['_Cancel', _("Reset")])
messagedialog.set_property('message_type', Gtk.MessageType.WARNING) messagedialog.set_message(_("Are you sure you want to reset all settings to default?"))
messagedialog.set_property('text', _("Are you sure you want to reset all settings to default?")) messagedialog.set_detail(_("You can't undo this action."))
messagedialog.set_property('secondary-text', _("You can't undo this action."))
messagedialog.add_button('_Cancel', Gtk.ResponseType.CANCEL)
messagedialog.add_button(_("Reset"), Gtk.ResponseType.OK)
messagedialog.connect("response", __confirmation_dialog_response) messagedialog.set_cancel_button(0)
messagedialog.show() messagedialog.set_default_button(0)
messagedialog.choose(self.window, None, __confirmation_dialog_response)
def __clear_children(self, widget):
while widget.get_last_child() is not None:
widget.remove(widget.get_last_child())
def __delete_break(self, break_config, is_short, on_remove): def __delete_break(self, break_config, is_short, on_remove):
""" """
Remove the break after a confirmation. Remove the break after a confirmation.
""" """
def __confirmation_dialog_response(widget, response_id): def __confirmation_dialog_response(dialog, result):
if response_id == Gtk.ResponseType.OK: response_id = dialog.choose_finish(result)
if response_id == 1:
if is_short: if is_short:
self.config.get('short_breaks').remove(break_config) self.config.get('short_breaks').remove(break_config)
else: else:
self.config.get('long_breaks').remove(break_config) self.config.get('long_breaks').remove(break_config)
on_remove() on_remove()
widget.destroy()
messagedialog = Gtk.MessageDialog() messagedialog = Gtk.AlertDialog()
messagedialog.set_modal(True) messagedialog.set_modal(True)
messagedialog.set_transient_for(self.window) messagedialog.set_buttons(['_Cancel', _("Delete")])
messagedialog.set_property('message_type', Gtk.MessageType.WARNING) messagedialog.set_message(_("Are you sure you want to delete this break?"))
messagedialog.set_property('text', _("Are you sure you want to delete this break?")) messagedialog.set_detail(_("You can't undo this action."))
messagedialog.set_property('secondary-text', _("You can't undo this action."))
messagedialog.add_button('_Cancel', Gtk.ResponseType.CANCEL)
messagedialog.add_button(_("Delete"), Gtk.ResponseType.OK)
messagedialog.connect("response", __confirmation_dialog_response) messagedialog.set_cancel_button(0)
messagedialog.show() messagedialog.set_default_button(0)
messagedialog.choose(self.window, None, __confirmation_dialog_response)
def __create_plugin_item(self, plugin_config): def __create_plugin_item(self, plugin_config):
""" """
@ -279,7 +287,7 @@ class SettingsDialog:
""" """
Show the SettingsDialog. Show the SettingsDialog.
""" """
self.window.show() self.window.present()
def on_switch_postpone_activate(self, switch, state): def on_switch_postpone_activate(self, switch, state):
""" """
@ -374,17 +382,18 @@ class PluginSettingsDialog:
self.property_controls = [] self.property_controls = []
builder = utility.create_gtk_builder(SETTINGS_DIALOG_PLUGIN_GLADE) builder = utility.create_gtk_builder(SETTINGS_DIALOG_PLUGIN_GLADE)
builder.connect_signals(self)
self.window = builder.get_object('dialog_settings_plugin') self.window = builder.get_object('dialog_settings_plugin')
box_settings = builder.get_object('box_settings') box_settings = builder.get_object('box_settings')
self.window.set_title(_('Plugin Settings')) self.window.set_title(_('Plugin Settings'))
for setting in config.get('settings'): for setting in config.get('settings'):
if setting['type'].upper() == 'INT': if setting['type'].upper() == 'INT':
box_settings.pack_start(self.__load_int_item(setting['label'], setting['id'], setting['safeeyes_config'], setting.get('min', 0), setting.get('max', 120)), False, False, 0) box_settings.append(self.__load_int_item(setting['label'], setting['id'], setting['safeeyes_config'], setting.get('min', 0), setting.get('max', 120)))
elif setting['type'].upper() == 'TEXT': elif setting['type'].upper() == 'TEXT':
box_settings.pack_start(self.__load_text_item(setting['label'], setting['id'], setting['safeeyes_config']), False, False, 0) box_settings.append(self.__load_text_item(setting['label'], setting['id'], setting['safeeyes_config']))
elif setting['type'].upper() == 'BOOL': elif setting['type'].upper() == 'BOOL':
box_settings.pack_start(self.__load_bool_item(setting['label'], setting['id'], setting['safeeyes_config']), False, False, 0) box_settings.append(self.__load_bool_item(setting['label'], setting['id'], setting['safeeyes_config']))
self.window.connect("close-request", self.on_window_delete)
def __load_int_item(self, name, key, settings, min_value, max_value): def __load_int_item(self, name, key, settings, min_value, max_value):
""" """
@ -438,7 +447,7 @@ class PluginSettingsDialog:
""" """
Show the Properties dialog. Show the Properties dialog.
""" """
self.window.show_all() self.window.present()
class BreakSettingsDialog: class BreakSettingsDialog:
@ -456,7 +465,6 @@ class BreakSettingsDialog:
self.on_remove = on_remove self.on_remove = on_remove
builder = utility.create_gtk_builder(SETTINGS_DIALOG_BREAK_GLADE) builder = utility.create_gtk_builder(SETTINGS_DIALOG_BREAK_GLADE)
builder.connect_signals(self)
self.window = builder.get_object('dialog_settings_break') self.window = builder.get_object('dialog_settings_break')
self.txt_break = builder.get_object('txt_break') self.txt_break = builder.get_object('txt_break')
self.switch_override_interval = builder.get_object('switch_override_interval') self.switch_override_interval = builder.get_object('switch_override_interval')
@ -464,7 +472,7 @@ class BreakSettingsDialog:
self.switch_override_plugins = builder.get_object('switch_override_plugins') self.switch_override_plugins = builder.get_object('switch_override_plugins')
self.spin_interval = builder.get_object('spin_interval') self.spin_interval = builder.get_object('spin_interval')
self.spin_duration = builder.get_object('spin_duration') self.spin_duration = builder.get_object('spin_duration')
self.img_break = builder.get_object('img_break') self.btn_image = builder.get_object('btn_image')
self.cmb_type = builder.get_object('cmb_type') self.cmb_type = builder.get_object('cmb_type')
grid_plugins = builder.get_object('grid_plugins') grid_plugins = builder.get_object('grid_plugins')
@ -502,7 +510,7 @@ class BreakSettingsDialog:
row = 0 row = 0
col = 0 col = 0
for plugin_id in plugin_map.keys(): for plugin_id in plugin_map.keys():
chk_button = Gtk.CheckButton(_(plugin_map[plugin_id])) chk_button = Gtk.CheckButton.new_with_label(_(plugin_map[plugin_id]))
self.plugin_check_buttons[plugin_id] = chk_button self.plugin_check_buttons[plugin_id] = chk_button
grid_plugins.attach(chk_button, row, col, 1, 1) grid_plugins.attach(chk_button, row, col, 1, 1)
if plugins_overriden: if plugins_overriden:
@ -513,8 +521,15 @@ class BreakSettingsDialog:
if row > 2: if row > 2:
col += 1 col += 1
row = 0 row = 0
# GtkSwitch state-set signal is available only from 3.14
if Gtk.get_minor_version() >= 14: if 'image' in self.break_config:
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(self.break_config['image'], 16, 16, True)
image = Gtk.Image.new_from_pixbuf(pixbuf)
self.btn_image.set_child(image)
self.window.connect("close-request", self.on_window_delete)
self.btn_image.connect('clicked', self.select_image)
self.switch_override_interval.connect('state-set', self.on_switch_override_interval_activate) self.switch_override_interval.connect('state-set', self.on_switch_override_interval_activate)
self.switch_override_duration.connect('state-set', self.on_switch_override_duration_activate) self.switch_override_duration.connect('state-set', self.on_switch_override_duration_activate)
self.switch_override_plugins.connect('state-set', self.on_switch_override_plugins_activate) self.switch_override_plugins.connect('state-set', self.on_switch_override_plugins_activate)
@ -545,24 +560,36 @@ class BreakSettingsDialog:
""" """
Show a file chooser dialog and let the user to select an image. Show a file chooser dialog and let the user to select an image.
""" """
dialog = Gtk.FileChooserDialog(_('Please select an image'), self.window, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) dialog = Gtk.FileDialog()
dialog.set_title(_('Please select an image'))
png_filter = Gtk.FileFilter() png_filter = Gtk.FileFilter()
png_filter.set_name("PNG files") png_filter.set_name("PNG files")
png_filter.add_mime_type("image/png") png_filter.add_mime_type("image/png")
png_filter.add_pattern("*.png") png_filter.add_pattern("*.png")
dialog.add_filter(png_filter) filters = Gio.ListStore.new(Gtk.FileFilter)
filters.append(png_filter)
dialog.set_filters(filters)
response = dialog.run() dialog.open(self.window, None, self.select_image_callback)
if response == Gtk.ResponseType.OK:
self.break_config['image'] = dialog.get_filename() def select_image_callback(self, dialog, result):
response = None
try:
response = dialog.open_finish(result)
except Exception:
# user pressing "Cancel" throws a generic exception here
pass
if response is not None:
self.break_config['image'] = response.get_path()
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(self.break_config['image'], 16, 16, True) pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(self.break_config['image'], 16, 16, True)
self.img_break.set_from_pixbuf(pixbuf) image = Gtk.Image.new_from_pixbuf(pixbuf)
elif response == Gtk.ResponseType.CANCEL: self.btn_image.set_child(image)
else:
self.break_config.pop('image', None) self.break_config.pop('image', None)
self.img_break.set_from_stock('gtk-missing-image', Gtk.IconSize.BUTTON) self.btn_image.set_icon_name('gtk-missing-image')
dialog.destroy()
def on_window_delete(self, *args): def on_window_delete(self, *args):
""" """
@ -608,7 +635,7 @@ class BreakSettingsDialog:
""" """
Show the Properties dialog. Show the Properties dialog.
""" """
self.window.show_all() self.window.present()
class NewBreakDialog: class NewBreakDialog:
@ -621,7 +648,6 @@ class NewBreakDialog:
self.on_add = on_add self.on_add = on_add
builder = utility.create_gtk_builder(SETTINGS_DIALOG_NEW_BREAK_GLADE) builder = utility.create_gtk_builder(SETTINGS_DIALOG_NEW_BREAK_GLADE)
builder.connect_signals(self)
self.window = builder.get_object('dialog_new_break') self.window = builder.get_object('dialog_new_break')
self.txt_break = builder.get_object('txt_break') self.txt_break = builder.get_object('txt_break')
self.cmb_type = builder.get_object('cmb_type') self.cmb_type = builder.get_object('cmb_type')
@ -630,6 +656,10 @@ class NewBreakDialog:
list_types[0][0] = _(list_types[0][0]) list_types[0][0] = _(list_types[0][0])
list_types[1][0] = _(list_types[1][0]) list_types[1][0] = _(list_types[1][0])
self.window.connect("close-request", self.on_window_delete)
builder.get_object('btn_discard').connect('clicked', self.discard)
builder.get_object('btn_save').connect('clicked', self.save)
# Set the values # Set the values
self.window.set_title(_('New Break')) self.window.set_title(_('New Break'))
@ -663,4 +693,4 @@ class NewBreakDialog:
""" """
Show the Properties dialog. Show the Properties dialog.
""" """
self.window.show_all() self.window.present()

View File

@ -38,13 +38,13 @@ from pathlib import Path
import babel.core import babel.core
import babel.dates import babel.dates
import gi import gi
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '4.0')
from gi.repository import Gtk from gi.repository import Gtk
from gi.repository import GLib from gi.repository import GLib
from gi.repository import GdkPixbuf from gi.repository import GdkPixbuf
from packaging.version import parse from packaging.version import parse
gi.require_version('Gdk', '3.0') gi.require_version('Gdk', '4.0')
BIN_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) BIN_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
HOME_DIRECTORY = os.environ.get('HOME') or os.path.expanduser('~') HOME_DIRECTORY = os.environ.get('HOME') or os.path.expanduser('~')
@ -654,7 +654,7 @@ def create_gtk_builder(glade_file):
builder.add_from_file(glade_file) builder.add_from_file(glade_file)
# Tranlslate all sub components # Tranlslate all sub components
for obj in builder.get_objects(): for obj in builder.get_objects():
if (not isinstance(obj, Gtk.SeparatorMenuItem)) and hasattr(obj, "get_label"): if hasattr(obj, "get_label"):
label = obj.get_label() label = obj.get_label()
if label is not None: if label is not None:
obj.set_label(_(label)) obj.set_label(_(label))