Upgrade to gtk 3.12 and introduce reset menu

This commit is contained in:
Gobinath 2019-02-09 12:46:20 -05:00
parent 2119b62c81
commit 3ea9ee12c5
37 changed files with 431 additions and 83 deletions

View File

@ -317,8 +317,8 @@ def initialize_safeeyes():
style_dir_path = os.path.join(HOME_DIRECTORY, '.config/safeeyes/style')
startup_dir_path = os.path.join(HOME_DIRECTORY, '.config/autostart')
# Remove the ~/.config/safeeyes directory
delete(os.path.join(CONFIG_DIRECTORY, 'safeeyes.json'))
# Remove the ~/.config/safeeyes/safeeyes.json file
delete(CONFIG_FILE_PATH)
# Remove the startup file
delete(os.path.join(HOME_DIRECTORY, os.path.join(
@ -343,6 +343,13 @@ def initialize_safeeyes():
shutil.copy2(SYSTEM_STYLE_SHEET_PATH, STYLE_SHEET_PATH)
def reset_config():
# Remove the ~/.config/safeeyes/safeeyes.json file
delete(CONFIG_FILE_PATH)
# Copy the safeeyes.json
shutil.copy2(SYSTEM_CONFIG_FILE_PATH, CONFIG_FILE_PATH)
def replace_style_sheet():
"""
Replace the user style sheet by system style sheet.

View File

@ -143,6 +143,14 @@ msgstr "ثبّت الحالة الداخلية"
msgid "Long break interval must be a multiple of short break interval"
msgstr "الاستراحات الطويلة يجب أن تكون من مضاعفات مدة الاستراحات القصيرة"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "خيارات"

View File

@ -141,6 +141,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -145,6 +145,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -144,6 +144,14 @@ msgstr "Zachovat vnitřní stav"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Je třeba, aby dlouhé přestávky byly násobkem krátkých přestávek"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Možnosti"

View File

@ -143,6 +143,14 @@ msgid "Long break interval must be a multiple of short break interval"
msgstr ""
"Tiden for en lang pause skal være et multiplum af tiden for en kort pause"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Indstillinger"
@ -340,7 +348,6 @@ msgid "Minimum seconds to skip without screensaver"
msgstr "Mindste antal sekunder for at springe over uden pauseskærm"
# plugin/screensaver
#, fuzzy
msgid "Lock screen"
msgstr "Lås skærm"

View File

@ -144,6 +144,14 @@ msgstr "Internen Zustand persistieren"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Lange Pausen müssen ein Vielfaches von kurzen Pausen lang dauern"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Einstellungen"

View File

@ -145,6 +145,14 @@ msgstr "Persist the internal state"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Long break interval must be a multiple of short break interval"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr "Are you sure you want to delete this break?"
# Settings dialog
msgid "Options"
msgstr "Options"

View File

@ -144,6 +144,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Opciones"

View File

@ -144,6 +144,14 @@ msgstr "Sisemise seisundi säilitamine"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Pika pausi intervall peab olema lühikese pausi pikkuse kordne"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Valikud"

View File

@ -144,6 +144,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -147,6 +147,14 @@ msgstr ""
"Lintervalle entre les pauses longues doit être un multiple de lintervalle "
"entre les pauses courtes"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Options"

View File

@ -142,6 +142,14 @@ msgstr "आंतरिक अवस्था को जारी रखें"
msgid "Long break interval must be a multiple of short break interval"
msgstr "लम्बी ब्रेक अंतराल लघु ब्रेक अंतराल के एक बहुमान होना चाहिए"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "विकल्प"

View File

@ -142,6 +142,14 @@ msgstr "Belső állapot elmentése"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Hosszú pihenő fel kell legyen bontva több kicsire"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Opciók"

View File

@ -141,6 +141,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -147,6 +147,14 @@ msgstr ""
"L'intervallo per la pausa lunga deve essere un multiplo dell'intervallo per "
"la pausa breve"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Preferenze"

View File

@ -147,6 +147,14 @@ msgid "Long break interval must be a multiple of short break interval"
msgstr ""
"Ilgos pertraukos laikotarpis turi būti sudarytas iš kelių trumpų pertraukų"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Parametrai"

View File

@ -144,6 +144,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -8,8 +8,8 @@ msgstr ""
"POT-Creation-Date: \n"
"PO-Revision-Date: 2019-01-19 13:21+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/"
"safe-eyes/translations/nb_NO/>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/safe-"
"eyes/translations/nb_NO/>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -142,6 +142,14 @@ msgstr "Fortsett i inngangstilstand"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Tiden mellom lange pauser må være være en inndeling av de små pausene"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Innstillinger"
@ -207,7 +215,6 @@ msgid "Duration"
msgstr "Varighet"
# Settings dialog
#, fuzzy
msgid "Time to wait"
msgstr "Tid å vente"
@ -340,7 +347,6 @@ msgid "Minimum seconds to skip without screensaver"
msgstr "Minimalt antall sekunder å hoppe over uten skjermsparer"
# plugin/screensaver
#, fuzzy
msgid "Lock screen"
msgstr "Lås skjerm"

View File

@ -147,6 +147,14 @@ msgstr ""
"De tussenpoos van een lange pauze moet een vermenigvuldiging zijn van de "
"korte"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Opties"

View File

@ -145,6 +145,14 @@ msgstr "Utrzymaj stan wewnętrzny"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Długa przerwa musi być poprzedzona kilkoma krótkimi"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Opcje"

View File

@ -146,6 +146,14 @@ msgstr ""
"O intervalo de uma parada longa deve ser um múltiplo do intervalo de uma "
"parada curta"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Opções"

View File

@ -143,6 +143,14 @@ msgstr "Сохранять внутреннее состояние"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Время длинного перерыва должно быть кратно времени короткого перерыва"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Параметры"

View File

@ -130,6 +130,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -144,6 +144,14 @@ msgstr "Zachovať vnútorný stav"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Dlhá prestávka musí byť násobkom krátkej prestávky"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Možnosti"

View File

@ -141,6 +141,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -147,6 +147,14 @@ msgstr ""
"நீண்ட இடைவேளைகளுக்கிடையிலான நேரம் குறுகிய இடைவேளைகளுக்கிடையிலான நேரத்தின் மடங்காக "
"இருக்க வேண்டும்"
# Settings dialog
msgid "Reset"
msgstr "மீளமை"
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr "எல்லா அமைப்புகளையும் இயல்புநிலைக்கு நிச்சயமாக மாற்ற வேண்டுமா?"
# Settings dialog
msgid "Options"
msgstr "தேர்வுகள்"

View File

@ -145,6 +145,14 @@ msgstr "İç durum kalıcı olsun"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Uzun mola aralığı, kısa mola aralığının katı olmalıdır"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Seçenekler"

View File

@ -141,6 +141,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -146,6 +146,14 @@ msgid "Long break interval must be a multiple of short break interval"
msgstr ""
"Довгий інтервал перерви повинен бути кратним короткому інтервалу перерви"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Параметри"

View File

@ -145,6 +145,14 @@ msgstr "Persist the internal state"
msgid "Long break interval must be a multiple of short break interval"
msgstr "Thời gian nghỉ dài phải là bội số của thời gian nghỉ ngắn"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "Tùy chọn"

View File

@ -144,6 +144,14 @@ msgstr "维持内部状态"
msgid "Long break interval must be a multiple of short break interval"
msgstr "长休息时间间隔必须是短休息间隔的倍数"
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr "选项"

View File

@ -142,6 +142,14 @@ msgstr ""
msgid "Long break interval must be a multiple of short break interval"
msgstr ""
# Settings dialog
msgid "Reset"
msgstr ""
# Settings dialog
msgid "Are you sure you want to reset all settings to default?"
msgstr ""
# Settings dialog
msgid "Options"
msgstr ""

View File

@ -99,4 +99,11 @@
background: black;
opacity: 0.9;
border-color: transparent;
}
.btn_menu {
border-width: 0px;
border-radius: 0px;
border-image: None;
border-color: transparent;
}

View File

@ -20,7 +20,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<interface>
<requires lib="gtk+" version="3.10"/>
<requires lib="gtk+" version="3.12"/>
<object class="GtkAdjustment" id="adjustment_duration">
<property name="lower">1</property>
<property name="upper">3600</property>
@ -232,6 +232,7 @@
<object class="GtkBox" id="box9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_right">10</property>
<property name="margin_top">5</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property>

View File

@ -20,7 +20,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<interface>
<requires lib="gtk+" version="3.10"/>
<requires lib="gtk+" version="3.12"/>
<object class="GtkAdjustment" id="adjust_disable_keyboard_shortcut_duration">
<property name="upper">15</property>
<property name="step_increment">1</property>
@ -66,28 +66,114 @@
<property name="can_focus">False</property>
<property name="stock">gtk-add</property>
</object>
<object class="GtkWindow" id="window_settings">
<object class="GtkPopover" id="popover">
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="width_request">128</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Reset</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="on_reset_menu_clicked" swapped="no"/>
<style>
<class name="btn_menu"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkApplicationWindow" id="window_settings">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Safe Eyes</property>
<property name="window_position">center</property>
<property name="default_width">450</property>
<property name="default_height">600</property>
<property name="icon_name">safeeyes</property>
<property name="gravity">center</property>
<signal name="delete-event" handler="on_window_delete" swapped="no"/>
<child>
<object class="GtkNotebook" id="notebook">
<child type="titlebar">
<object class="GtkHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="show_border">False</property>
<property name="can_focus">False</property>
<property name="spacing">91</property>
<property name="show_close_button">True</property>
<property name="decoration_layout">menu:close</property>
<child>
<object class="GtkMenuButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="popover">popover</property>
<child>
<object class="GtkImage" id="img_icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">safeeyes</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
</child>
<child type="title">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">5</property>
<property name="label" translatable="yes">Safe Eyes</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStackSwitcher">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stack">stack</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="interpolate_size">True</property>
<child>
<object class="GtkBox" id="box_settings">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="orientation">vertical</property>
<property name="spacing">15</property>
<child>
@ -250,7 +336,7 @@
<signal name="close" handler="on_info_bar_long_break_close" swapped="no"/>
<signal name="response" handler="on_info_bar_long_break_close" swapped="no"/>
<child internal-child="action_area">
<object class="GtkButtonBox" id="infobar-action_area1">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="spacing">6</property>
<property name="layout_style">start</property>
@ -265,7 +351,7 @@
</packing>
</child>
<child internal-child="content_area">
<object class="GtkBox" id="infobar-content_area1">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="spacing">16</property>
<child>
@ -300,6 +386,9 @@
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<style>
<class name="info_bar_long_break"/>
</style>
@ -711,25 +800,16 @@
</child>
</object>
<packing>
<property name="tab_expand">True</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lbl_settings">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Settings</property>
</object>
<packing>
<property name="menu_label">lbl_settings</property>
<property name="tab_expand">True</property>
<property name="tab_fill">False</property>
<property name="name">Settings</property>
<property name="title" translatable="yes">Settings</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box_break">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow_breaks">
@ -745,8 +825,6 @@
<object class="GtkBox" id="box_breaks">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property>
@ -860,8 +938,6 @@
<object class="GtkButtonBox" id="buttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">5</property>
<property name="margin_right">5</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="layout_style">end</property>
@ -902,20 +978,9 @@
</child>
</object>
<packing>
<property name="name">page1</property>
<property name="title" translatable="yes">Breaks</property>
<property name="position">1</property>
<property name="tab_expand">True</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lbl_breaks">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Breaks</property>
</object>
<packing>
<property name="position">1</property>
<property name="tab_expand">True</property>
<property name="tab_fill">False</property>
</packing>
</child>
<child>
@ -932,8 +997,6 @@
<object class="GtkBox" id="box_plugins">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="orientation">vertical</property>
@ -959,20 +1022,9 @@
</child>
</object>
<packing>
<property name="name">page2</property>
<property name="title" translatable="yes">Plugins</property>
<property name="position">2</property>
<property name="tab_expand">True</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="lbl_plugins">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Plugins</property>
</object>
<packing>
<property name="position">2</property>
<property name="tab_expand">True</property>
<property name="tab_fill">False</property>
</packing>
</child>
</object>

View File

@ -21,6 +21,7 @@ import os
import gi
from safeeyes import Utility
from safeeyes.model import Config
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
@ -58,14 +59,8 @@ class SettingsDialog(object):
self.window = builder.get_object('window_settings')
self.box_short_breaks = builder.get_object('box_short_breaks')
self.box_long_breaks = builder.get_object('box_long_breaks')
box_plugins = builder.get_object('box_plugins')
for short_break in config.get('short_breaks'):
self.__create_break_item(short_break, True)
for long_break in config.get('long_breaks'):
self.__create_break_item(long_break, False)
for plugin_config in Utility.load_plugins_config(config):
box_plugins.pack_start(self.__create_plugin_item(plugin_config), False, False, 0)
self.box_plugins = builder.get_object('box_plugins')
self.popover = builder.get_object('popover')
self.spin_short_break_duration = builder.get_object('spin_short_break_duration')
self.spin_long_break_duration = builder.get_object('spin_long_break_duration')
@ -81,6 +76,28 @@ class SettingsDialog(object):
self.info_bar_long_break.hide()
# Set the current values of input fields
self.__initialize(config)
# Update relative states
# GtkSwitch state-set signal is available only from 3.14
if Gtk.get_minor_version() >= 14:
self.switch_strict_break.connect('state-set', self.on_switch_strict_break_activate)
self.switch_postpone.connect('state-set', self.on_switch_postpone_activate)
self.on_switch_strict_break_activate(self.switch_strict_break, self.switch_strict_break.get_active())
self.on_switch_postpone_activate(self.switch_postpone, self.switch_postpone.get_active())
self.initializing = False
def __initialize(self, config):
# Don't show infobar for changes made internally
self.infobar_long_break_shown = True
for short_break in config.get('short_breaks'):
self.__create_break_item(short_break, True)
for long_break in config.get('long_breaks'):
self.__create_break_item(long_break, False)
for plugin_config in Utility.load_plugins_config(config):
self.box_plugins.pack_start(self.__create_plugin_item(plugin_config), False, False, 0)
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_short_break_interval.set_value(config.get('short_break_interval'))
@ -91,15 +108,7 @@ class SettingsDialog(object):
self.switch_strict_break.set_active(config.get('strict_break'))
self.switch_postpone.set_active(config.get('allow_postpone') and not config.get('strict_break'))
self.switch_persist.set_active(config.get('persist_state'))
# Update relative states
# GtkSwitch state-set signal is available only from 3.14
if Gtk.get_minor_version() >= 14:
self.switch_strict_break.connect('state-set', self.on_switch_strict_break_activate)
self.switch_postpone.connect('state-set', self.on_switch_postpone_activate)
self.on_switch_strict_break_activate(self.switch_strict_break, self.switch_strict_break.get_active())
self.on_switch_postpone_activate(self.switch_postpone, self.switch_postpone.get_active())
self.initializing = False
self.infobar_long_break_shown = False
def __create_break_item(self, break_config, is_short):
"""
@ -137,6 +146,25 @@ class SettingsDialog(object):
parent_box.pack_start(box, False, False, 0)
return box
def on_reset_menu_clicked(self, button):
self.popover.hide()
def __confirmation_dialog_response(widget, response_id):
if response_id == Gtk.ResponseType.OK:
Utility.reset_config()
self.config = Config()
self.__initialize(self.config)
widget.destroy()
messagedialog = Gtk.MessageDialog(parent=self.window,
flags=Gtk.DialogFlags.MODAL,
type=Gtk.MessageType.WARNING,
buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
_("Reset"), Gtk.ResponseType.OK),
message_format=_("Are you sure you want to reset all settings to default?"))
messagedialog.connect("response", __confirmation_dialog_response)
messagedialog.format_secondary_text(_("You can't undo this action."))
messagedialog.show()
def __delete_break(self, break_config, is_short, on_remove):
"""
Remove the break after a confirmation.