diff --git a/po/messages.pot b/po/messages.pot index d9fd612..4331528 100644 --- a/po/messages.pot +++ b/po/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gnome-runcat-extension 21\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-05 02:43+0300\n" +"POT-Creation-Date: 2022-10-29 11:47-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,19 +17,19 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/panelMenuButton.js:95 +#: src/panelMenuButton.js:110 msgid "Open System Monitor" msgstr "" -#: src/panelMenuButton.js:99 +#: src/panelMenuButton.js:114 msgid "Settings" msgstr "" -#: src/prefs.js:48 +#: src/prefs.js:55 msgid "RunCat Settings" msgstr "" -#: src/prefs.js:59 +#: src/prefs.js:66 msgid "Version" msgstr "" @@ -46,45 +46,49 @@ msgid "Idle threshold" msgstr "" #: src/resources/ui/preferences.ui:34 +msgid "Animated idle" +msgstr "" + +#: src/resources/ui/preferences.ui:48 msgid "Displaying items" msgstr "" -#: src/resources/ui/preferences.ui:38 +#: src/resources/ui/preferences.ui:52 msgid "Character and percentage" msgstr "" -#: src/resources/ui/preferences.ui:39 +#: src/resources/ui/preferences.ui:53 msgid "Percentage only" msgstr "" -#: src/resources/ui/preferences.ui:40 +#: src/resources/ui/preferences.ui:54 msgid "Character only" msgstr "" -#: src/resources/ui/preferences.ui:51 +#: src/resources/ui/preferences.ui:65 msgid "Reset preferences" msgstr "" -#: src/resources/ui/preferences.ui:52 +#: src/resources/ui/preferences.ui:66 msgid "Reset RunCat preferences to defaults" msgstr "" -#: src/resources/ui/preferences.ui:65 +#: src/resources/ui/preferences.ui:79 msgid "Reset" msgstr "" -#: src/resources/ui/preferences.ui:84 +#: src/resources/ui/preferences.ui:98 msgid "The cat tells you the CPU usage by running speed" msgstr "" -#: src/resources/ui/preferences.ui:88 +#: src/resources/ui/preferences.ui:102 msgid "Visit RunCat's GitHub page" msgstr "" -#: src/resources/ui/preferences.ui:98 +#: src/resources/ui/preferences.ui:112 msgid "Visit Homepage" msgstr "" -#: src/resources/ui/preferences.ui:102 +#: src/resources/ui/preferences.ui:116 msgid "About RunCat" msgstr "" diff --git a/po/ru.po b/po/ru.po index 23722be..cba6b1e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnome-runcat-extension 20\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-05 02:43+0300\n" +"POT-Creation-Date: 2022-10-29 11:47-0600\n" "PO-Revision-Date: 2022-09-30 19:16+0300\n" "Last-Translator: Sergei Kolesnikov \n" "Language-Team: Russian\n" @@ -18,19 +18,19 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" -#: src/panelMenuButton.js:95 +#: src/panelMenuButton.js:110 msgid "Open System Monitor" msgstr "Открыть Системный монитор" -#: src/panelMenuButton.js:99 +#: src/panelMenuButton.js:114 msgid "Settings" msgstr "Настройки" -#: src/prefs.js:48 +#: src/prefs.js:55 msgid "RunCat Settings" msgstr "Настройки RunCat" -#: src/prefs.js:59 +#: src/prefs.js:66 msgid "Version" msgstr "Версия" @@ -47,47 +47,51 @@ msgid "Idle threshold" msgstr "Порог бездействия" #: src/resources/ui/preferences.ui:34 +msgid "Animated idle" +msgstr "" + +#: src/resources/ui/preferences.ui:48 msgid "Displaying items" msgstr "Отображаемые элементы" -#: src/resources/ui/preferences.ui:38 +#: src/resources/ui/preferences.ui:52 msgid "Character and percentage" msgstr "Персонаж и проценты" -#: src/resources/ui/preferences.ui:39 +#: src/resources/ui/preferences.ui:53 msgid "Percentage only" msgstr "Только проценты" -#: src/resources/ui/preferences.ui:40 +#: src/resources/ui/preferences.ui:54 msgid "Character only" msgstr "Только персонаж" -#: src/resources/ui/preferences.ui:51 +#: src/resources/ui/preferences.ui:65 msgid "Reset preferences" msgstr "Сбросить настройки" -#: src/resources/ui/preferences.ui:52 +#: src/resources/ui/preferences.ui:66 msgid "Reset RunCat preferences to defaults" msgstr "Сбросить настройки RunCat к значениям по умолчанию" -#: src/resources/ui/preferences.ui:65 +#: src/resources/ui/preferences.ui:79 msgid "Reset" msgstr "Сбрость" -#: src/resources/ui/preferences.ui:84 +#: src/resources/ui/preferences.ui:98 msgid "The cat tells you the CPU usage by running speed" msgstr "" "Котик, который показывает загрузку\n" " процессора скоростью бега" -#: src/resources/ui/preferences.ui:88 +#: src/resources/ui/preferences.ui:102 msgid "Visit RunCat's GitHub page" msgstr "Посетить страницу RunCat на GitHub" -#: src/resources/ui/preferences.ui:98 +#: src/resources/ui/preferences.ui:112 msgid "Visit Homepage" msgstr "Открыть домашнюю страницу" -#: src/resources/ui/preferences.ui:102 +#: src/resources/ui/preferences.ui:116 msgid "About RunCat" msgstr "О RunCat" diff --git a/src/constants.js b/src/constants.js index 92b8f0c..25b5091 100644 --- a/src/constants.js +++ b/src/constants.js @@ -15,7 +15,17 @@ var PanelMenuButtonVisibility = { var Settings = { IDLE_THRESHOLD: 'idle-threshold', + ANIMATED_IDLE: 'animated-idle', DISPLAYING_ITEMS: 'displaying-items', }; +var RunnerPacks = { + CAT: 'cat', +}; + +var RunnerStates = { + IDLE: 'idle', + ACTIVE: 'active', +}; + var SYSTEM_MONITOR_COMMAND = 'gnome-system-monitor -r'; \ No newline at end of file diff --git a/src/panelMenuButton.js b/src/panelMenuButton.js index 086ff4d..38b98d6 100644 --- a/src/panelMenuButton.js +++ b/src/panelMenuButton.js @@ -18,24 +18,38 @@ const { SCHEMA_PATH, PanelMenuButtonVisibility, Settings, + RunnerPacks, + RunnerStates, } = Extension.imports.constants; const { createGenerator: createCpuGenerator } = Extension.imports.dataProviders.cpu; -const getGIcon = name => Gio.icon_new_for_string( - `${Extension.path}/resources/icons/cat/my-${name}-symbolic.svg`, +const queryGIconExists = (name, state, index) => Gio.file_new_for_path( + `${Extension.path}/resources/icons/${name}/my-${state}-${index}-symbolic.svg`, +).query_exists(null); + +const getGIcon = (name, state, index) => Gio.icon_new_for_string( + `${Extension.path}/resources/icons/${name}/my-${state}-${index}-symbolic.svg`, ); -// eslint-disable-next-line func-names -const spritesGenerator = function* () { - const SPRITES_COUNT = 5; +const getGIconSet = (name, state) => { + let count = 0; + const SET = []; + while (queryGIconExists(name, state, count)) { + SET[count] = getGIcon(name, state, count); + count++; + } + return SET; +}; - const sprites = [...Array(SPRITES_COUNT).keys()] - .map(i => getGIcon(`active-${i}`)); +// eslint-disable-next-line func-names +const spritesGenerator = function* (name, state) { + const SET = getGIconSet(name, state); + const LENGTH = SET.length; let i; while (true) { - for (i = 0; i < SPRITES_COUNT; i++) { - yield sprites[i]; + for (i = 0; i < LENGTH; i++) { + yield SET[i]; } } }; @@ -63,8 +77,9 @@ var PanelMenuButton = GObject.registerClass( this.ui = { builder: Gtk.Builder.new(), icons: { - idle: getGIcon('idle'), - runningGenerator: spritesGenerator(), + idle: getGIcon(RunnerPacks.CAT, RunnerStates.IDLE, 0), + idleGenerator: spritesGenerator(RunnerPacks.CAT, RunnerStates.IDLE), + runningGenerator: spritesGenerator(RunnerPacks.CAT, RunnerStates.ACTIVE), }, }; this.ui.builder.set_translation_domain(Extension.metadata.uuid); @@ -74,7 +89,7 @@ var PanelMenuButton = GObject.registerClass( this.ui.builder.add_from_file(`${Extension.path}/resources/ui/extension.ui`); const icon = this.ui.builder.get_object('icon'); - icon.set_property('gicon', this.ui.icons.idle); + icon.set_property('gicon', this.ui.icons.idleGenerator.next().value); if (!itemsVisibility.character) { icon.hide(); } @@ -120,6 +135,7 @@ var PanelMenuButton = GObject.registerClass( this.gioSettings = ExtensionUtils.getSettings(SCHEMA_PATH); this.settings = { idleThreshold: this.gioSettings.get_int(Settings.IDLE_THRESHOLD), + animatedIdle: this.gioSettings.get_boolean(Settings.ANIMATED_IDLE), displayingItems: this.gioSettings.get_enum(Settings.DISPLAYING_ITEMS), }; @@ -127,6 +143,10 @@ var PanelMenuButton = GObject.registerClass( this.settings.idleThreshold = this.gioSettings.get_int(Settings.IDLE_THRESHOLD); }); + this.gioSettings.connect(`changed::${Settings.ANIMATED_IDLE}`, () => { + this.settings.animatedIdle = this.gioSettings.get_boolean(Settings.ANIMATED_IDLE); + }); + this.gioSettings.connect(`changed::${Settings.DISPLAYING_ITEMS}`, () => { this.settings.displayingItems = this.gioSettings.get_enum(Settings.DISPLAYING_ITEMS); @@ -161,7 +181,12 @@ var PanelMenuButton = GObject.registerClass( repaintUi() { const isRunningSpriteShown = this.data?.cpu > this.settings.idleThreshold; - const gicon = isRunningSpriteShown ? this.ui.icons.runningGenerator.next().value : this.ui.icons.idle; + const idleSprite = this.settings.animatedIdle + ? this.ui.icons.idleGenerator.next().value + : this.ui.icons.idle; + const gicon = isRunningSpriteShown + ? this.ui.icons.runningGenerator.next().value + : idleSprite; this.ui.builder.get_object('icon').set_gicon(gicon); this.ui.builder.get_object('label').set_text(`${Math.round(this.data.cpu)}%`); diff --git a/src/prefs.js b/src/prefs.js index 3ed90e2..5de02f1 100644 --- a/src/prefs.js +++ b/src/prefs.js @@ -28,6 +28,13 @@ function fillPreferencesWindow(window) { Gio.SettingsBindFlags.DEFAULT, ); + settings.bind( + Settings.ANIMATED_IDLE, + builder.get_object(Settings.ANIMATED_IDLE), + 'state', + Gio.SettingsBindFlags.DEFAULT, + ); + const combo = builder.get_object(Settings.DISPLAYING_ITEMS); combo.set_selected(settings.get_enum(Settings.DISPLAYING_ITEMS)); combo.connect('notify::selected', widget => { @@ -36,7 +43,7 @@ function fillPreferencesWindow(window) { builder.get_object('reset').connect('clicked', () => { settings.reset(Settings.IDLE_THRESHOLD); - + settings.reset(Settings.ANIMATED_IDLE); settings.reset(Settings.DISPLAYING_ITEMS); combo.set_selected(settings.get_enum(Settings.DISPLAYING_ITEMS)); }); diff --git a/src/resources/icons/cat/my-idle-0-symbolic.svg b/src/resources/icons/cat/my-idle-0-symbolic.svg new file mode 100644 index 0000000..7921797 --- /dev/null +++ b/src/resources/icons/cat/my-idle-0-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 0 + + + + RunCat: Sleeping Frame 0 + + diff --git a/src/resources/icons/cat/my-idle-1-symbolic.svg b/src/resources/icons/cat/my-idle-1-symbolic.svg new file mode 100644 index 0000000..58929e7 --- /dev/null +++ b/src/resources/icons/cat/my-idle-1-symbolic.svg @@ -0,0 +1,64 @@ + + + + + + + + image/svg+xml + + RunCat: Sleeping Frame 1 + + + + RunCat: Sleeping Frame 1 + + + + + diff --git a/src/resources/icons/cat/my-idle-2-symbolic.svg b/src/resources/icons/cat/my-idle-2-symbolic.svg new file mode 100644 index 0000000..588bd47 --- /dev/null +++ b/src/resources/icons/cat/my-idle-2-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 2 + + + + RunCat: Sleeping Frame 2 + + diff --git a/src/resources/icons/cat/my-idle-3-symbolic.svg b/src/resources/icons/cat/my-idle-3-symbolic.svg new file mode 100644 index 0000000..2a23378 --- /dev/null +++ b/src/resources/icons/cat/my-idle-3-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 3 + + + + RunCat: Sleeping Frame 3 + + diff --git a/src/resources/icons/cat/my-idle-4-symbolic.svg b/src/resources/icons/cat/my-idle-4-symbolic.svg new file mode 100644 index 0000000..c1f79b7 --- /dev/null +++ b/src/resources/icons/cat/my-idle-4-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 4 + + + + RunCat: Sleeping Frame 4 + + diff --git a/src/resources/icons/cat/my-idle-5-symbolic.svg b/src/resources/icons/cat/my-idle-5-symbolic.svg new file mode 100644 index 0000000..101cdcc --- /dev/null +++ b/src/resources/icons/cat/my-idle-5-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 5 + + + + RunCat: Sleeping Frame 5 + + diff --git a/src/resources/icons/cat/my-idle-6-symbolic.svg b/src/resources/icons/cat/my-idle-6-symbolic.svg new file mode 100644 index 0000000..e77b4cf --- /dev/null +++ b/src/resources/icons/cat/my-idle-6-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 6 + + + + RunCat: Sleeping Frame 6 + + diff --git a/src/resources/icons/cat/my-idle-7-symbolic.svg b/src/resources/icons/cat/my-idle-7-symbolic.svg new file mode 100644 index 0000000..a769944 --- /dev/null +++ b/src/resources/icons/cat/my-idle-7-symbolic.svg @@ -0,0 +1,14 @@ + + + + + + image/svg+xml + + RunCat: Sleeping Frame 7 + + + + RunCat: Sleeping Frame 7 + + diff --git a/src/resources/icons/cat/my-idle-symbolic.svg b/src/resources/icons/cat/my-idle-symbolic.svg deleted file mode 100644 index 0f7163d..0000000 --- a/src/resources/icons/cat/my-idle-symbolic.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - image/svg+xml - - RunCat: Sleeping - - - - RunCat: Sleeping - - diff --git a/src/resources/ui/preferences.ui b/src/resources/ui/preferences.ui index 50bf420..7fa9b37 100644 --- a/src/resources/ui/preferences.ui +++ b/src/resources/ui/preferences.ui @@ -29,6 +29,20 @@ + + + Animated idle + animated-idle + + + + start + center + + + + + Displaying items @@ -116,4 +130,5 @@ 100 1 + \ No newline at end of file diff --git a/src/schemas/org.gnome.shell.extensions.runcat.gschema.xml b/src/schemas/org.gnome.shell.extensions.runcat.gschema.xml index e15598f..58c2ec3 100644 --- a/src/schemas/org.gnome.shell.extensions.runcat.gschema.xml +++ b/src/schemas/org.gnome.shell.extensions.runcat.gschema.xml @@ -17,10 +17,17 @@ + + true + Animated idle + + + 'character-and-percentage' Displaying items +