File 0001-Make-libpinyin-setup-could-response-build-config.patch of Package ibus-libpinyin

From 0e9bebe762778c9b0daef5aa6d9ab4606f42a9c3 Mon Sep 17 00:00:00 2001
From: ZhaoQiang <qzhao@suse.com>
Date: Tue, 12 Aug 2025 20:51:27 +0800
Subject: [PATCH] Make libpinyin setup could response build config

---
 configure.ac                        |  17 +++-
 setup/Makefile.am                   |   3 +
 setup/config.py.in                  |   9 ++
 setup/ibus-libpinyin-preferences.ui |  89 +------------------
 setup/main2.py                      | 128 +++++++++++++++++++---------
 5 files changed, 117 insertions(+), 129 deletions(-)

diff --git a/configure.ac b/configure.ac
index 44bb868..303977d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -165,6 +165,7 @@ AC_ARG_ENABLE(lua-extension,
 )
 
 # check lua
+LUA_EXTENSION="False"
 PKG_CHECK_MODULES(LUA, [
     lua >= 5.1
 ], [],
@@ -179,8 +180,11 @@ then
     [enable_lua_extension=no]
     );
 fi
-
 AM_CONDITIONAL(IBUS_BUILD_LUA_EXTENSION, [test x"$enable_lua_extension" = x"yes"])
+if test x"$enable_lua_extension" = x"yes"; then
+    LUA_EXTENSION="True"
+fi
+AC_SUBST(LUA_EXTENSION)
 
 # --enable-cloud-input-mode
 CLOUD_INPUT_MODE="False"
@@ -207,6 +211,7 @@ AM_CONDITIONAL(ENABLE_CLOUD_INPUT_MODE, test x"$enable_cloud_input_mode" = x"yes
 AC_SUBST(CLOUD_INPUT_MODE)
 
 # --disable-english-input-mode
+ENGLISH_INPUT_MODE="False"
 AC_ARG_ENABLE(english-input-mode,
     AS_HELP_STRING([--disable-english-input-mode],
     [do not build english input mode]),
@@ -215,16 +220,24 @@ AC_ARG_ENABLE(english-input-mode,
 )
 
 AM_CONDITIONAL(IBUS_BUILD_ENGLISH_INPUT_MODE, [test x"$enable_english_input_mode" = x"yes"])
+if test x"$enable_english_input_mode" = x"yes"; then
+    ENGLISH_INPUT_MODE="True"
+fi
+AC_SUBST(ENGLISH_INPUT_MODE)
 
 # --disable-table-input-mode
+TABLE_INPUT_MODE="False"
 AC_ARG_ENABLE(table-input-mode,
         AS_HELP_STRING([--disable-table-input-mode],
         [do not build table input mode]),
         [enable_table_input_mode=$enableval],
         [enable_table_input_mode=yes]
 )
-
 AM_CONDITIONAL(IBUS_BUILD_TABLE_INPUT_MODE, [test x"$enable_table_input_mode" = x"yes"])
+if test x"$enable_table_input_mode" = x"yes"; then
+       TABLE_INPUT_MODE="True"
+fi
+AC_SUBST(TABLE_INPUT_MODE)
 
 # --disable-libnotify
 AC_ARG_ENABLE(libnotify,
diff --git a/setup/Makefile.am b/setup/Makefile.am
index d14e62e..5798916 100644
--- a/setup/Makefile.am
+++ b/setup/Makefile.am
@@ -35,6 +35,9 @@ libexec_SCRIPTS = \
 
 CLEANFILES = \
 	*.pyc \
+	config.py \
+	Makefile.in \
+	Makefile \
 	$(NULL)
 
 EXTRA_DIST = \
diff --git a/setup/config.py.in b/setup/config.py.in
index c5b858a..a1bfa07 100644
--- a/setup/config.py.in
+++ b/setup/config.py.in
@@ -31,3 +31,12 @@ def get_longname():
 
 def support_cloud_input():
     return @CLOUD_INPUT_MODE@
+
+def enable_lua_extension():
+    return @LUA_EXTENSION@
+
+def enable_table_mode():
+    return @TABLE_INPUT_MODE@
+
+def enable_english_input_mode():
+    return @ENGLISH_INPUT_MODE@
diff --git a/setup/ibus-libpinyin-preferences.ui b/setup/ibus-libpinyin-preferences.ui
index 214e3a4..fefa833 100644
--- a/setup/ibus-libpinyin-preferences.ui
+++ b/setup/ibus-libpinyin-preferences.ui
@@ -2263,7 +2263,7 @@
                     <property name="orientation">vertical</property>
                     <property name="spacing">16</property>
                     <child>
-                      <object class="GtkFrame">
+                      <object class="GtkFrame" id="frameInputModes">
                         <property name="visible">True</property>
                         <property name="can-focus">False</property>
                         <property name="label-xalign">0</property>
@@ -2274,96 +2274,11 @@
                             <property name="can-focus">False</property>
                             <property name="left-padding">12</property>
                             <child>
-                              <!-- n-columns=2 n-rows=3 -->
-                              <object class="GtkGrid">
+                              <object class="GtkGrid" id="gridInputModes">
                                 <property name="visible">True</property>
                                 <property name="can-focus">False</property>
                                 <property name="row-homogeneous">True</property>
                                 <property name="column-homogeneous">True</property>
-                                <child>
-                                  <object class="GtkCheckButton" id="LuaExtension">
-                                    <property name="label" translatable="yes">Lua Extension</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="halign">start</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">0</property>
-                                    <property name="top-attach">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="TableMode">
-                                    <property name="label" translatable="yes">Table Mode</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="halign">start</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">1</property>
-                                    <property name="top-attach">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="EnglishMode">
-                                    <property name="label" translatable="yes">English Mode</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="halign">start</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">0</property>
-                                    <property name="top-attach">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="EnglishCandidate">
-                                    <property name="label" translatable="yes">English Candidate</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="halign">start</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">1</property>
-                                    <property name="top-attach">1</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="EmojiCandidate">
-                                    <property name="label" translatable="yes">Emoji Candidate</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="halign">start</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">0</property>
-                                    <property name="top-attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkCheckButton" id="SuggestionCandidate">
-                                    <property name="label" translatable="yes">Suggestion Candidate</property>
-                                    <property name="visible">True</property>
-                                    <property name="can-focus">True</property>
-                                    <property name="receives-default">False</property>
-                                    <property name="xalign">0</property>
-                                    <property name="draw-indicator">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="left-attach">1</property>
-                                    <property name="top-attach">2</property>
-                                  </packing>
-                                </child>
                               </object>
                             </child>
                           </object>
diff --git a/setup/main2.py b/setup/main2.py
index 47796b6..4d867a7 100644
--- a/setup/main2.py
+++ b/setup/main2.py
@@ -420,52 +420,100 @@ class PreferencesDialog:
     def __init_user_data(self):
         #page User Data
         self.__page_user_data.show()
+        self.__frame_input_modes = self.__builder.get_object("frameInputModes")
+        grid = self.__builder.get_object("gridInputModes")
 
-        self.__frame_lua_script = self.__builder.get_object("frameLuaScript")
         path = os.path.join(pkgdatadir, 'user.lua')
-        if not os.access(path, os.R_OK):
-            self.__frame_lua_script.hide()
-        self.__frame_user_table = self.__builder.get_object("frameUserTable")
-        self.__lua_extension = self.__builder.get_object("LuaExtension")
-        self.__table_mode = self.__builder.get_object("TableMode")
-        self.__english_mode = self.__builder.get_object("EnglishMode")
-        self.__emoji_candidate = self.__builder.get_object("EmojiCandidate")
-        self.__english_candidate = self.__builder.get_object("EnglishCandidate")
-        self.__suggestion_candidate = self.__builder.get_object("SuggestionCandidate")
-        self.__import_table = self.__builder.get_object("ImportTable")
-        self.__export_table = self.__builder.get_object("ExportTable")
-        self.__clear_user_table = self.__builder.get_object("ClearUserTable")
-        self.__edit_lua = self.__builder.get_object("EditLua")
-        self.__import_dictionary = self.__builder.get_object("ImportDictionary")
-        self.__export_dictionary = self.__builder.get_object("ExportDictionary")
-        self.__clear_user_data = self.__builder.get_object("ClearUserDictionary")
-        self.__clear_all_data = self.__builder.get_object("ClearAllDictionary")
+        if os.access(path, os.R_OK): 
+            lua_visible = config.enable_lua_extension()
+        else:
+            lua_visible = False
+
+        input_mode_buttons = [
+#            obj_id,          label,           visible;
+            ("lua_extension", "Lua Extension", lua_visible),
+            ("table_mode",    "Table Mode",    config.enable_table_mode()),
+            ("english_mode",  "English Mode",  config.enable_english_input_mode()),
+            ("english_candidate", "English Candidate", True),
+            ("emoji_candidate", "Emoji Candidate", True),
+            ("suggestion_candidate", "Suggestion Candidate", True),
+        ]
 
-        # read values
-        self.__frame_lua_script.set_sensitive(self.__get_value("lua-extension"))
-        self.__frame_user_table.set_sensitive(self.__get_value("table-input-mode"))
-        self.__lua_extension.set_active(self.__get_value("lua-extension"))
-        self.__table_mode.set_active(self.__get_value("table-input-mode"))
-        self.__english_mode.set_active(self.__get_value("english-input-mode"))
-        self.__emoji_candidate.set_active(self.__get_value("emoji-candidate"))
-        self.__english_candidate.set_active(self.__get_value("english-candidate"))
-        self.__suggestion_candidate.set_active(self.__get_value("suggestion-candidate"))
+        row = 0
+        col = 0
+        self.input_mode_buttons = {}
+        for obj_id, label, visible in input_mode_buttons:
+            if not visible:
+                continue
+            else:
+                # Button initial:
+                button = Gtk.CheckButton(label=label)
+                button.set_name(obj_id)
+                button.set_visible(True)
+                button.set_can_focus(True)
+                button.set_receives_default(False)
+                button.set_halign(Gtk.Align.START)
+                grid.attach(button, col, row, 1, 1)
+                setattr(self, obj_id, button)
+                self.obj_id = button
+
+                # Read button value and set connect signal:
+                if obj_id == "lua_extension":
+                    self.lua_extension.set_active(self.__get_value("lua-extension"))
+                    self.lua_extension.connect("toggled", self.__lua_extension_cb)
+                elif obj_id == "table_mode":
+                    self.table_mode.set_active(self.__get_value("table-input-mode"))
+                    self.table_mode.connect("toggled", self.__table_mode_cb)
+                elif obj_id == "english_mode":
+                    self.english_mode.set_active(self.__get_value("english-input-mode"))
+                    self.english_mode.connect("toggled", self.__english_mode_cb)
+                elif obj_id == "english_candidate":
+                    self.english_candidate.set_active(self.__get_value("english-candidate"))
+                    self.english_candidate.connect("toggled", self.__toggled_cb, "english-candidate")
+                elif obj_id == "emoji_candidate":
+                    self.emoji_candidate.set_active(self.__get_value("emoji-candidate"))
+                    self.emoji_candidate.connect("toggled", self.__toggled_cb, "emoji-candidate")
+                elif obj_id == "suggestion_candidate":
+                    self.suggestion_candidate.set_active(self.__get_value("suggestion-candidate"))
+                    self.suggestion_candidate.connect("toggled", self.__toggled_cb, "suggestion-candidate")
+
+            # Move to the next button position:
+            col += 1
+            if col > 1:
+                col = 0
+                row += 1
 
-        # connect signals
-        self.__lua_extension.connect("toggled", self.__lua_extension_cb)
-        self.__table_mode.connect("toggled", self.__table_mode_cb)
-        self.__english_mode.connect("toggled", self.__english_mode_cb)
-        self.__emoji_candidate.connect("toggled", self.__toggled_cb, "emoji-candidate")
-        self.__english_candidate.connect("toggled", self.__toggled_cb, "english-candidate")
-        self.__suggestion_candidate.connect("toggled", self.__toggled_cb, "suggestion-candidate")
-        self.__edit_lua.connect("clicked", self.__edit_lua_cb)
-        self.__import_dictionary.connect("clicked", self.__import_dictionary_cb, "import-dictionary")
+        self.__frame_lua_script = self.__builder.get_object("frameLuaScript")
+        if lua_visible:
+            if self.__get_value("lua-extension"):
+                self.__edit_lua = self.__builder.get_object("EditLua")
+                self.__edit_lua.connect("clicked", self.__edit_lua_cb)
+            else:
+                self.__frame_lua_script.set_sensitive(False)
+        else:
+            self.__frame_lua_script.hide()
+
+        self.__frame_user_dictionary = self.__builder.get_object("frameUserDictionary")
+        self.__export_dictionary = self.__builder.get_object("ExportDictionary")
         self.__export_dictionary.connect("clicked", self.__export_dictionary_cb, "export-dictionary")
-        self.__clear_user_data.connect("clicked", self.__clear_user_data_cb, "user")
+        self.__import_dictionary = self.__builder.get_object("ImportDictionary")
+        self.__import_dictionary.connect("clicked", self.__import_dictionary_cb, "import-dictionary")
+        self.__clear_all_data = self.__builder.get_object("ClearAllDictionary")
         self.__clear_all_data.connect("clicked", self.__clear_user_data_cb, "all")
-        self.__import_table.connect("clicked", self.__import_table_cb, "import-custom-table")
-        self.__export_table.connect("clicked", self.__export_table_cb, "export-custom-table")
-        self.__clear_user_table.connect("clicked", self.__clear_user_table_cb, "clear-custom-table", "user")
+        self.__clear_user_data = self.__builder.get_object("ClearUserDictionary")
+        self.__clear_user_data.connect("clicked", self.__clear_user_data_cb, "user")
+
+        self.__frame_user_table = self.__builder.get_object("frameUserTable")
+        if not config.enable_table_mode():
+            self.__frame_user_table.hide()
+        else:
+            self.__frame_user_table.set_sensitive(config.enable_table_mode())
+            self.__export_table = self.__builder.get_object("ExportTable")
+            self.__export_table.connect("clicked", self.__export_table_cb, "export-custom-table")
+            self.__import_table = self.__builder.get_object("ImportTable")
+            self.__import_table.connect("clicked", self.__import_table_cb, "import-custom-table")
+            self.__clear_user_table = self.__builder.get_object("ClearUserTable")
+            self.__clear_user_table.connect("clicked", self.__clear_user_table_cb, "clear-custom-table", "user")
 
     def __lua_extension_cb(self, widget):
         self.__set_value("lua-extension", widget.get_active())
-- 
2.49.0

openSUSE Build Service is sponsored by