diff libervia/desktop_kivy/plugins/plugin_wid_settings.py @ 493:b3cedbee561d

refactoring: rename `cagou` to `libervia.desktop_kivy` + update imports and names following backend changes
author Goffi <goffi@goffi.org>
date Fri, 02 Jun 2023 18:26:16 +0200
parents cagou/plugins/plugin_wid_settings.py@203755bbe0fe
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libervia/desktop_kivy/plugins/plugin_wid_settings.py	Fri Jun 02 18:26:16 2023 +0200
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+
+
+#Libervia Desktop-Kivy
+# Copyright (C) 2016-2021 Jérôme Poisson (goffi@goffi.org)
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+from libervia.backend.core import log as logging
+from libervia.backend.core.i18n import _
+from libervia.backend.core.constants import Const as C
+from libervia.backend.tools.common import data_format
+from libervia.frontends.quick_frontend import quick_widgets
+from kivy.uix.label import Label
+from kivy.uix.widget import Widget
+from libervia.desktop_kivy.core import cagou_widget
+from libervia.desktop_kivy import G
+
+
+log = logging.getLogger(__name__)
+
+
+PLUGIN_INFO = {
+    "name": _("settings"),
+    "main": "LiberviaDesktopKivySettings",
+    "description": _("LiberviaDesktopKivy/SàT settings"),
+    "icon_symbol": "wrench",
+}
+
+
+class LiberviaDesktopKivySettings(quick_widgets.QuickWidget, cagou_widget.LiberviaDesktopKivyWidget):
+    # XXX: this class can't be called "Settings", because Kivy has already a class
+    #      of this name, and the kv there would apply
+
+    def __init__(self, host, target, profiles):
+        quick_widgets.QuickWidget.__init__(self, G.host, target, profiles)
+        cagou_widget.LiberviaDesktopKivyWidget.__init__(self)
+        # the Widget() avoid LiberviaDesktopKivyWidget header to be down at the beginning
+        # then up when the UI is loaded
+        self.loading_widget = Widget()
+        self.add_widget(self.loading_widget)
+        extra = {}
+        G.local_platform.update_params_extra(extra)
+        G.host.bridge.param_ui_get(
+            -1, C.APP_NAME, data_format.serialise(extra), self.profile,
+            callback=self.get_params_ui_cb,
+            errback=self.get_params_ui_eb)
+
+    def change_widget(self, widget):
+        self.clear_widgets([self.loading_widget])
+        del self.loading_widget
+        self.add_widget(widget)
+
+    def get_params_ui_cb(self, xmlui):
+        G.host.action_manager({"xmlui": xmlui}, ui_show_cb=self.change_widget, profile=self.profile)
+
+    def get_params_ui_eb(self, failure):
+        self.change_widget(Label(
+            text=_("Can't load parameters!"),
+            bold=True,
+            color=(1,0,0,1)))
+        G.host.show_dialog("Can't load params UI", str(failure), "error")