[smc-discuss] [Git][smc/ibus-braille][master] Liblouis integration improved

Nalin x GNU gitlab at mg.gitlab.com
Fri Feb 7 04:02:10 PST 2020



Nalin x GNU pushed to branch master at SMC / ibus-braille


Commits:
e6cb7bf8 by Nalin.x.Linux at 2020-02-07T17:31:18+05:30
Liblouis integration improved

- - - - -


5 changed files:

- braille/Makefile.am
- + braille/liblouis_language_list.txt
- engine/engine.py
- preferences/main.py
- preferences/ui.glade


Changes:

=====================================
braille/Makefile.am
=====================================
@@ -31,6 +31,7 @@ SUBDIRS = english \
 
 braille_DATA = \
 	languages.txt \
+	liblouis_language_list.txt\
 	$(NULL)
 
 EXTRA_DIST = \


=====================================
braille/liblouis_language_list.txt
=====================================
@@ -0,0 +1,165 @@
+Afrikaans-Grade-1 afr-za-g1.ctb
+Afrikaans-Grade-2 afr-za-g2.ctb
+Arabic-Computer-Braille ar-ar-comp8.utb
+Arabic-Grade-1 ar-ar-g1.utb
+Arabic-Grade-2 ar-ar-g2.ctb
+Assamese-Grade-1 as-in-g1.utb
+Awadhi-Grade-1 aw-in-g1.utb
+Bengali-Grade-1 be-in-g1.utb
+Bulgarian-Grade-1 bg.ctb
+Bihari-Grade-1 bh.ctb
+Tibetan-Grade-1 bo.ctb
+Box-Drowing-Braille boxes.ctb
+Braj-Braille-Grade-1 br-in-g1.utb
+Catalan-Grade-1 ca-g1.ctb
+Cherokee-Grade-1 chr-us-g1.ctb
+Sorani-Kurdish-Grade-1 ckb-g1.ctb
+Czech-Computer-Braille cs-comp8.utb
+Czech-Grade-1 cs-g1.ctb
+Welsh-Grade-1 cy-cy-g1.utb
+Welsh-Grade-2 cy-cy-g2.ctb
+Danish-Computer-Braille da-dk-g08.ctb
+Danish-6-dots-Grade-1 da-dk-g16.ctb
+Danish-8-dots-Grade-1 da-dk-g18.ctb
+Danish-6-dots-Grade-2 da-dk-g26.ctb
+Danish-6-dots-Grade-1.5 da-dk-g26l.ctb
+Danish-8-dots-Grade-2 da-dk-g28.ctb
+Danish-8-dots-Grade-1.5 da-dk-g28l.ctb
+Danish-Log-Text-Braille da-lt.ctb
+German-Chess-Braille de-chess.ctb
+German-Computer-Braille de-de-comp8.ctb
+German-Grade-0-Braille de-g0.utb
+German-Grade-1-Braille de-g1.ctb
+German-Grade-2-Braille de-g2.ctb
+Dravidian-Braille dra.ctb
+Greek-Braille el.ctb
+English-Canada en_CA.ctb
+English-Chess-Braille en-chess.ctb
+English-UK-Computer-Braille en-gb-comp8.ctb
+English-UK-Grade-1 en-gb-g1.utb
+English-UK-Grade-2 en-GB-g2.ctb
+English-India-Grade-1 en-in-g1.ctb
+English-US-NABCC en-nabcc.utb
+Unified-English-Grade-1 en-ueb-g1.ctb
+Unified-English-Grade-2 en-ueb-g2.ctb
+Unified-English-Math en-ueb-math.ctb
+English-US-6-dot-Computer-Braille en-us-comp6.ctb
+English-US-8-dot-Computer-Braille en-us-comp8.ctb
+English-US-Grade-1 en-us-g1.ctb
+English-US-Grade-2 en-us-g2.ctb
+English-US-Mathtext en-us-mathtext.ctb
+Esperanto eo-g1.ctb
+Esperanto-X-System-Grade-1 eo-g1-x-system.ctb
+Spanish-Computer-Braille Es-Es-G0.utb
+Spanish es-g1.ctb
+Spanish-Grade-2 es-g2.ctb
+Estonian et.ctb
+Estonian-Grade-0 et-g0.utb
+Ethiopic-Grade-1 ethio-g1.ctb
+Persian-Computer-Braille fa-ir-comp8.ctb
+Persian fa-ir-g1.utb
+Finnish fi1.ctb
+Finnish-8-dot-Braille fi2.ctb
+Finnish-Computer-Braille fi-fi-8dot.ctb
+Finnish-Braille fi.utb
+French-Grade-1 fr-bfu-comp6.utb
+French-Computer-Braille fr-bfu-comp8.utb
+French-Grade-2 fr-bfu-g2.ctb
+Irish-Grade-1 ga-g1.utb
+Irish-Grade-2 ga-g2.ctb
+Gaelic gd.ctb
+Gondi gon.ctb
+Greek-Internationalized-Braille grc-international-en.utb
+Gujarati-Grade-1 gu-in-g1.utb
+Hawaiian-Braille haw-us-g1.ctb
+Hebrew he.ctb
+Hindi-Grade-1 hi-in-g1.utb
+Croatian-Computer-Braille hr-comp8.utb
+Croatian-Grade-1 hr-g1.ctb
+Hungarian-Computer-Braille hu-hu-comp8.ctb
+Hungarian-Grade-1 hu-hu-g1.ctb
+Hungarian-Grade-2 hu-hu-g2.ctb
+Armenian hy.ctb
+International-Phonetic-Alphabet IPA.utb
+Icelandic-8-dot is.ctb
+Italian it-it-comp6.utb
+Italian-Computer-Braille it-it-comp8.utb
+Inuktitut-Grade-1 iu-ca-g1.ctb
+Kannada-Grade-1 ka-in-g1.utb
+Khasi-Grade-1 kh-in-g1.utb
+Korean-Grade-1-2006 ko-2006-g1.ctb
+Korean-Grade-2-2006 ko-2006-g2.ctb
+Korean-Grade-1 ko-g1.ctb
+Korean-Grade-2 ko-g2.ctb
+Konkani kok.ctb
+Kurukh kru.ctb
+Kashmiri-Grade-1 ks-in-g1.utb
+Lithuanian lt-6dot.utb
+Lithuanian-8-dot-Braille lt.ctb
+Latvian-Grade-1 Lv-Lv-g1.utb
+Maori-Braille-Table mao-nz-g1.ctb
+Malayalam-Grade-1 ml-in-g1.utb
+Manipuri-Grade-1 mn-in-g1.utb
+Mongolian-Grade-1 mn-MN-g1.utb
+Mongolian-Grade-2 mn-MN-g2.ctb
+Marathi-Grade-1 mr-in-g1.utb
+Maltese mt.ctb
+Munda mun.ctb
+Marwari mwr.ctb
+Nepali ne.ctb
+Dutch-Belgium-Grade-0 nl-BE-g0.utb
+Dutch-Netherlands-Grade-0 nl-NL-g0.utb
+Norwegian-Literary-Braille-8-dot no-no-8dot.utb
+Norwegian-Computer-Braille no-no-comp8.ctb
+Norwegian-Literary-Braille-Grade-0 no-no-g0.utb
+Norwegian-grade-1 no-no-g1.ctb
+Norwegian-grade-2 no-no-g2.ctb
+Norwegian-grade-3 no-no-g3.ctb
+Norwegian-Generic no-no-generic.ctb
+Nepali-Grade-1 np-in-g1.utb
+Oriya-Grade-1 or-in-g1.utb
+Pali pi.ctb
+Polish-Computer-Braille pl-pl-comp8.ctb
+Polish-Grade-1 Pl-Pl-g1.utb
+Portuguese-Brazil-Computer-Braille pt-br-comp8.ctb
+Portuguese-Brazil-Grade-1 pt-br-g1.ctb
+Portuguese-Computer-Braille pt-pt-comp8.ctb
+Portuguese-Grade-1 pt-pt-g1.utb
+Portuguese-Grade-2 pt-pt-g2.ctb
+Punjabi-Grade-1 pu-in-g1.utb
+Romanian ro.ctb
+Russian-Computer-Braille ru-compbrl.ctb
+Russian ru.ctb
+Russian-literary ru-litbrl.ctb
+Russian-Grade-1 ru-ru-g1.utb
+Sanskrit-Grade-1 sa-in-g1.utb
+Swedish-1996-standard se-se.ctb
+Swedish-Grade-1 Se-Se-g1.utb
+Sindhi-Grade-1 si-in-g1.utb
+Sinhala sin.utb
+Slovak-official sk-g1.ctb
+Slovak-Grade-1 sk-sk-g1.utb
+Slovenian-8-Dot-Computer-Braille sl-si-comp8.ctb
+Slovene-Grade-1 sl-si-g1.utb
+Sotho-Grade-1 sot-za-g1.ctb
+Serbian-Grade-1 sr-g1.ctb
+Swedish-Computer-1989 sv-1989.ctb
+Swedish-Computer-1996 sv-1996.ctb
+Tamil ta.ctb
+Tamil-Grade-1 ta-ta-g1.ctb
+Telugu-Grade-1 te-in-g1.utb
+Turkish tr.ctb
+Turkish-Grade-1 tr-g1.ctb
+Turkish-Grade-2 tr-g2.ctb
+Tswana-Grade-1 tsn-za-g1.ctb
+Ukrainian uk.utb
+Unicode-Braille unicode-braille.utb
+Urdu-Grade-1 ur-pk-g1.utb
+Urdu-Grade-2 ur-pk-g2.ctb
+Vietnamese-Computer vi.ctb
+Vietnamese-Grade-1 vi-g1.ctb
+Simplified-Chinese zh-chn.ctb
+Chinese-Common-Grade-1 zhcn-g1.ctb
+Chinese-Common-Grade-2 zhcn-g2.ctb
+Hong-Kong-Cantonese zh-hk.ctb
+Bopomofo-based-Chinese zh-tw.ctb


=====================================
engine/engine.py
=====================================
@@ -60,6 +60,7 @@ except:
 
 
 def speak(text):
+	pass
 	if(speechd_available):
 		client.speak(text);
 	elif (espeak_available):
@@ -85,10 +86,16 @@ class EngineSharadaBraille(IBus.Engine):
 		super(EngineSharadaBraille, self).__init__()
 		self.pressed_keys = u""
 		
+		self.liblouis_language_table_conversion_dict = {}
+		for line in open(data_dir+"/braille/liblouis_language_list.txt").readlines():
+			language, tablename = line[:-1].split(" ");
+			self.liblouis_language_table_conversion_dict[language] = tablename;
+
 		Config = configparser.ConfigParser()
 		try:
 			Config.read("{}/isb.cfg".format(home_dir))
 			self.checked_languages = Config.get('cfg',"checked_languages").split(",")
+			self.checked_languages_liblouis = Config.get('cfg',"checked_languages_liblouis").split(",")
 			self.simple_mode = int(Config.get('cfg',"simple-mode"))
 			self.keycode_map = {}
 			for key,value in {"dot-1":"1","dot-2":"2","dot-3":"3","dot-4":"4","dot-5":"5",
@@ -98,23 +105,26 @@ class EngineSharadaBraille(IBus.Engine):
 			self.key_to_switch_between_languages = int(Config.get('cfg',"switch_between_languages"))
 			self.list_switch_key = int(Config.get('cfg',"list_switch_key"))
 			self.language_iter = int(Config.get('cfg',"default-language"))
+			self.language_iter_liblouis = int(Config.get('cfg',"default-language-liblouis"))
 			self.conventional_braille = int(Config.get('cfg',"conventional-braille"))
 			self.liblouis_mode = int(Config.get('cfg',"liblouis-mode"))
 			self.one_hand_mode = int(Config.get('cfg',"one-hand-mode"))
 			self.one_hand_conversion_delay = int(Config.get('cfg',"one-hand-conversion-delay"))*1/1000;
-			self.liblouis_table_list = Config.get('cfg',"liblouis-table-list").split(",")
 		except:
 			self.checked_languages = ["english-en","hindi-hi"]
+			self.checked_languages_liblouis = ["English-US-Grade-1", "English-US-Grade-2"]
 			self.simple_mode =  0
 			self.keycode_map = {33:"1",32:"2",31:"3",36:"4",37:"5",38:"6",44:"7",52:"8",30:"a",34:"c",35:"9",39:"0"}
 			self.key_to_switch_between_languages = 119
 			self.list_switch_key = 56
 			self.language_iter = 0
+			self.language_iter_liblouis = 0
 			self.conventional_braille = False;
 			self.one_hand_mode = False
 			self.one_hand_conversion_delay = 0.5
-			self.liblouis_mode = False;
-			self.liblouis_table_list = ['unicode.dis','en-us-g2.ctb'];
+			self.liblouis_mode = True;
+
+		self.language_liblouis = self.liblouis_language_table_conversion_dict[self.checked_languages_liblouis[self.language_iter_liblouis]]
 
 
 		self.conventional_braille_dot_4 = False;
@@ -138,7 +148,17 @@ class EngineSharadaBraille(IBus.Engine):
 		self.__prop_list.append(IBus.Property(key="test", icon="ibus-local"))
 		
 		#Load the first language by default
-		self.load_map(self.checked_languages[self.language_iter])
+		if (self.liblouis_mode):
+			language_name = self.checked_languages_liblouis[self.language_iter_liblouis];
+			self.language_liblouis = self.liblouis_language_table_conversion_dict[language_name]
+			speak("{} Loaded!".format(language_name));
+		else:
+			self.load_built_in_table(self.checked_languages[self.language_iter])
+
+
+		# Used with liblouis based engine
+		self.last_appeared_word_length = 0;
+		self.louis_typing_word_combinations = "";
 
 
 	def do_enable (self):
@@ -171,10 +191,10 @@ class EngineSharadaBraille(IBus.Engine):
 				self.old_braille_letter_map_pos = self.braille_letter_map_pos
 
 			#Move map position to contraction if any
-			if (ordered_pressed_keys in self.contractions_dict.keys()
-			and self.liblouis_mode == False
-			and self.one_hand_mode == False):
-				self.braille_letter_map_pos = self.contractions_dict[ordered_pressed_keys];
+			if (self.liblouis_mode == False):
+				if (ordered_pressed_keys in self.contractions_dict.keys()
+				and self.one_hand_mode == False):
+					self.braille_letter_map_pos = self.contractions_dict[ordered_pressed_keys];
 			
 			#Toggle Punctuation
 			elif ordered_pressed_keys == "0":
@@ -257,8 +277,23 @@ class EngineSharadaBraille(IBus.Engine):
 						for i in ordered_pressed_keys:
 							sum = sum + pow(2,int(i)-1);
 						pressed_dots = 0x2800 + sum
-						#self.louis_current_typing_word = self.louis_current_typing_word + chr(pressed_dots)
-						self.__commit_string(chr(pressed_dots))
+
+						# Adding last typed combination to list
+						self.louis_typing_word_combinations = self.louis_typing_word_combinations + chr(pressed_dots)
+
+						# Deleting last appeared word
+						self.delete_surrounding_text(-(self.last_appeared_word_length),self.last_appeared_word_length);
+
+						# Translating typing combinations
+						word = louis.backTranslate(['unicode.dis',self.language_liblouis],self.louis_typing_word_combinations,None,0)
+						result = word[0];
+
+						# Storing length of result for deleting on
+						self.last_appeared_word_length = len(result);
+
+						# Commiting resut
+						self.__commit_string(result);
+
 					else:
 						if (self.one_hand_mode):
 							if (self.three_dot_pos == 1 and self.pressed_keys != ""):
@@ -302,20 +337,13 @@ class EngineSharadaBraille(IBus.Engine):
 					self.pressed_keys  += self.keycode_map[keycode];
 				return True
 			else:
+
+				self.last_appeared_word_length = 0;
+				self.louis_typing_word_combinations = "";
+
 				if (keyval == keysyms.space):
 					self.braille_letter_map_pos = 0;
-					if(self.liblouis_mode):
-						surrounding_text = self.get_surrounding_text()
-						text = surrounding_text[0].get_text()
-						cursor_pos = surrounding_text[1]
-						string_up_to_cursor = text[:cursor_pos];
-						count = len(string_up_to_cursor.split()[-1])
-						last_word = string_up_to_cursor.split()[-1]
-						if (string_up_to_cursor[-1] != " "):
-							word = louis.backTranslate(self.liblouis_table_list,last_word,None,0)
-							self.delete_surrounding_text(-(count),count);
-							self.__commit_string(word[0])
-					else:
+					if(not self.liblouis_mode):
 						if (self.conventional_braille == True ):
 							if(self.conventional_braille_dot_3):
 								self.__commit_string(self.map["3"][self.old_braille_letter_map_pos]);
@@ -329,21 +357,21 @@ class EngineSharadaBraille(IBus.Engine):
 								return True
 				else:
 					if (keycode == self.key_to_switch_between_languages):
-						if (len(self.checked_languages)-1 == self.language_iter):
-							self.language_iter = 0
-							self.load_map(self.checked_languages[self.language_iter])
+						if(self.liblouis_mode):
+							self.language_iter_liblouis=(self.language_iter_liblouis+1)%len(self.checked_languages_liblouis);
+							language_name = self.checked_languages_liblouis[self.language_iter_liblouis];
+							self.language_liblouis = self.liblouis_language_table_conversion_dict[language_name]
+							speak("{} Loaded!".format(language_name));
 						else:
-							self.language_iter = self.language_iter + 1
-							self.load_map(self.checked_languages[self.language_iter])
+							self.language_iter=(self.language_iter+1)%len(self.checked_languages);
+							self.load_built_in_table(self.checked_languages[self.language_iter])
 					
 					if (keycode == self.list_switch_key):
-						if (self.braille_letter_map_pos == 0):
-							self.braille_letter_map_pos = 1;
-						else:
-							self.braille_letter_map_pos = 0;
+						self.braille_letter_map_pos = (self.braille_letter_map_pos+1)%2
+
 				return False
 	
-	def load_map(self,language_with_code):
+	def load_built_in_table(self,language_with_code):
 		self.language = language_with_code.split("-")[0]
 		set_language(language_with_code.split("-")[1])
 		print ("loading Map for language : %s" %self.language)
@@ -408,7 +436,7 @@ class EngineSharadaBraille(IBus.Engine):
 
 	def __commit_string(self, text):
 		self.commit_text(IBus.Text.new_from_string(text))
-		if (len(text) > 1):
+		if (len(text) > 1 or self.liblouis_mode):
 			speak(text)
 
 	def three_dot_do_commit(self):


=====================================
preferences/main.py
=====================================
@@ -26,6 +26,8 @@ from gi.repository import Gdk
 from gi.repository import IBus
 home_dir = os.environ['HOME']
 data_dir = "/usr/share/ibus-braille/braille"
+
+import louis
 liblouis_table_dir = "/usr/share/liblouis/tables/"
 
 #Key code map #{30:"a",31:"s",32:"d",33:"f",34:"g",35:"h",36:"j",37:"k",38:"l",39:";"}
@@ -36,15 +38,9 @@ class ibus_sharada_braille_preferences():
 		self.guibuilder.add_from_file("/usr/share/ibus-braille-preferences/ui.glade")
 		self.window = self.guibuilder.get_object("window")
 		self.combobox_default_languge = self.guibuilder.get_object("combobox_default_languge")
+		self.combobox_default_languge_liblouis = self.guibuilder.get_object("combobox_default_languge_liblouis")
 		self.box_ibus_table = self.guibuilder.get_object("box_ibus_table")
-		self.entry_liblouis_table_list = self.guibuilder.get_object("entry_liblouis_table_list")
-		self.combobox_liblouis_table_list = self.guibuilder.get_object("combobox_liblouis_table_list")
-
-		self.liblouis_table_liststore = Gtk.ListStore(str)
-		for item in sorted(os.listdir(liblouis_table_dir)):
-			if(".ctb" in item or ".utb" in item):
-				self.liblouis_table_liststore.append([item])
-		self.combobox_liblouis_table_list.set_model(self.liblouis_table_liststore)
+		self.box_liblouis_language_list = self.guibuilder.get_object("box_liblouis_language_list")
 		
 		self.config = configparser.ConfigParser()
 		self.default_key_dict = { "dot-1":33,"dot-2":32,"dot-3":31,"dot-4":36,"dot-5":37,"dot-6":38,
@@ -54,11 +50,14 @@ class ibus_sharada_braille_preferences():
 		try:
 			self.config.read("{}/isb.cfg".format(home_dir))
 			self.checked_languages = self.config.get('cfg',"checked_languages").split(",")
+			self.checked_languages_liblouis = self.config.get('cfg',"checked_languages_liblouis").split(",")
+
 			self.key_dict = {}
 			default_language = int(self.config.get('cfg',"default-language"))
+			default_language_liblouis = int(self.config.get('cfg',"default-language-liblouis"))
+
 			one_hand_conversion_delay = int(self.config.get('cfg',"one-hand-conversion-delay"))
-			liblouis_table_list = self.config.get('cfg',"liblouis-table-list")
-			print(liblouis_table_list)
+
 			for key in self.default_key_dict.keys():
 				self.key_dict[key] =  int(self.config.get('cfg',key))
 			# The following are for a try only
@@ -75,16 +74,17 @@ class ibus_sharada_braille_preferences():
 				pass
 			self.config.add_section('cfg')
 			self.checked_languages = ["english-en","hindi-hi","numerical-en"]
+			self.checked_languages_liblouis = ["English-US-Grade-1","English-US-Grade-2"]
 			self.reset_keys_and_shorcuts(None,None)
 			self.config.set('cfg',"simple-mode",str(0))
 			self.config.set('cfg',"conventional-braille",str(0))
 			self.config.set('cfg',"one-hand-mode",str(0))
 			self.config.set('cfg',"one-hand-conversion-delay",str(500))
-			self.config.set('cfg',"liblouis-mode",str(0))
+			self.config.set('cfg',"liblouis-mode",str(1))
 			self.config.set('cfg',"default-language",str(0))
+			self.config.set('cfg',"default-language-liblouis",str(0))
 			default_language = 0;
-			liblouis_table_list = "unicode.dis,en-us-g2.ctb";
-			self.config.set('cfg',"liblouis-table-list",str(liblouis_table_list))
+			default_language_liblouis = 0;
 			self.key_dict = self.default_key_dict.copy()
 			
 		self.checked_languages_liststore = Gtk.ListStore(str)
@@ -98,6 +98,20 @@ class ibus_sharada_braille_preferences():
 		self.combobox_default_languge.show()
 		self.combobox_default_languge.set_active(default_language)
 		
+
+		# Setting Liblouis default language combobox
+		self.checked_languages_liblouis_liststore = Gtk.ListStore(str)
+		for item in self.checked_languages_liblouis:
+			self.checked_languages_liblouis_liststore.append([item]);
+
+		self.combobox_default_languge_liblouis.set_model(self.checked_languages_liblouis_liststore)
+		renderer_text = Gtk.CellRendererText()
+		self.combobox_default_languge_liblouis.pack_start(renderer_text, True)
+		self.combobox_default_languge_liblouis.add_attribute(renderer_text, "text", 0)
+		self.combobox_default_languge_liblouis.show()
+		self.combobox_default_languge_liblouis.set_active(default_language_liblouis)
+
+
 		#Create checkbuttons for each available language
 		self.available_languages = []
 		print(self.checked_languages)
@@ -134,8 +148,29 @@ class ibus_sharada_braille_preferences():
 		self.box_liblouis.set_visible(value)
 		self.box_ibus_table.set_visible(not value)
 
-		#set liblouis_table_list entry
-		self.entry_liblouis_table_list.set_text(liblouis_table_list)
+		#Create checkbuttons for each available language in Liblouis
+		self.available_liblouis_languages = []
+		print(self.checked_languages_liblouis)
+		for item in open("{}/liblouis_language_list.txt".format(data_dir)).readlines():
+			language_name,table_name = item[:-1].split(" ");
+
+			# Checking the validity of table
+			flag = True;
+			try:
+				louis.checkTable([table_name])
+			except:
+				flag = False;
+
+			if(flag):
+				widget = Gtk.CheckButton.new_with_label(language_name)
+
+				self.available_liblouis_languages.append(language_name)
+				if language_name in self.checked_languages_liblouis:
+					widget.set_active(True)
+				widget.connect("clicked",self.language_toggled_liblouis)
+				self.box_liblouis_language_list.pack_start(widget,0,0,0);
+				widget.show()
+		self.box_liblouis_language_list.show()
 
 		#Set one-hand-mode checkbox
 		checkbutton_one_hand_mode = self.guibuilder.get_object("checkbutton_one_hand_mode")
@@ -151,6 +186,9 @@ class ibus_sharada_braille_preferences():
 	def combobox_default_languge_changed(self,widget,data=None):
 		self.config.set('cfg',"default-language",str(int(widget.get_active())))
 	
+	def combobox_default_languge_liblouis_changed(self,widget,data=None):
+		self.config.set('cfg',"default-language-liblouis",str(int(widget.get_active())))
+
 	def simple_mode_toggled(self,widget,data=None):
 		self.config.set('cfg',"simple-mode",str(int(widget.get_active())))
 
@@ -168,22 +206,6 @@ class ibus_sharada_braille_preferences():
 		self.config.set('cfg',"liblouis-mode",str(value))
 		self.box_liblouis.set_visible(value)
 		self.box_ibus_table.set_visible(not value)
-
-	def liblouis_add_to_list_button_clicked(self,widget,data=None):
-		cur_list = self.entry_liblouis_table_list.get_text()
-		active = self.combobox_liblouis_table_list.get_active()
-		new_item = self.liblouis_table_liststore[active][0]
-		table_list = cur_list+","+new_item
-		self.entry_liblouis_table_list.set_text(table_list)
-		self.config.set('cfg',"liblouis-table-list",str(table_list))
-
-	def liblouis_clear_list_button_clicked(self,widget,data=None):
-		self.entry_liblouis_table_list.set_text("unicode.dis")
-
-	def liblouis_reset_list_button_clicked(self,widget,data=None):
-		table_list = "unicode.dis,en-us-g2.ctb";
-		self.entry_liblouis_table_list.set_text(table_list)
-		self.config.set('cfg',"liblouis-table-list",str(table_list))
 		
 	
 	def reset_keys_and_shorcuts(self,widget,data=None):
@@ -242,12 +264,33 @@ class ibus_sharada_braille_preferences():
 		self.combobox_default_languge.set_active(0)
 		self.combobox_default_languge.show()
 	
+	def language_toggled_liblouis(self,widget,data=None):
+		label = widget.get_label()
+		if (widget.get_active()):
+			if (label not in self.checked_languages_liblouis):
+				self.checked_languages_liblouis.append(label)
+		else:
+			if (label in self.checked_languages_liblouis):
+				if (len(self.checked_languages_liblouis) > 2):
+					self.checked_languages_liblouis.remove(label)
+				else:
+					widget.set_active(True)
+		print(self.checked_languages_liblouis)
+
+		self.checked_languages_liblouis_liststore = Gtk.ListStore(str)
+		for item in self.checked_languages_liblouis:
+			self.checked_languages_liblouis_liststore.append([item]);
+		self.combobox_default_languge_liblouis.set_model(self.checked_languages_liblouis_liststore)
+		self.combobox_default_languge_liblouis.set_active(0)
+		self.combobox_default_languge_liblouis.show()
+
 	def close(self,widget,data=None):
 		Gtk.main_quit()
 
 	def apply(self,widget,data=None):
 		file = open("{}/isb.cfg".format(home_dir),"w")
 		self.config.set('cfg',"checked_languages",str(','.join(self.checked_languages)))
+		self.config.set('cfg',"checked_languages_liblouis",str(','.join(self.checked_languages_liblouis)))
 		self.config.write(file)
 		file.close()
 		bus = IBus.Bus()


=====================================
preferences/ui.glade
=====================================
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 
+<!-- Generated with glade 3.22.1 
 
 Copyright (C) 
 
@@ -43,15 +43,12 @@ along with .  If not, see <http://www.gnu.org/licenses/>.
       </row>
     </data>
   </object>
-  <object class="GtkListStore" id="liststore2">
-    <columns>
-      <!-- column-name table -->
-      <column type="gchararray"/>
-    </columns>
-  </object>
   <object class="GtkWindow" id="window">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">IBus-Sharada-Braille Preferences</property>
+    <child>
+      <placeholder/>
+    </child>
     <child>
       <object class="GtkBox" id="box1">
         <property name="visible">True</property>
@@ -256,131 +253,85 @@ along with .  If not, see <http://www.gnu.org/licenses/>.
                     <property name="border_width">10</property>
                     <property name="orientation">vertical</property>
                     <child>
-                      <object class="GtkBox" id="box8">
+                      <object class="GtkBox">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
                         <child>
-                          <object class="GtkBox" id="box5">
+                          <object class="GtkLabel" id="label_default_language1">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <child>
-                              <object class="GtkLabel" id="label20">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">Table List</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="entry_liblouis_table_list">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="margin_top">5</property>
-                                <property name="margin_bottom">5</property>
-                                <property name="editable">False</property>
-                              </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="button_clear_list">
-                                <property name="label" translatable="yes">Clear List</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <signal name="clicked" handler="liblouis_clear_list_button_clicked" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
-                            </child>
+                            <property name="label" translatable="yes">Default Language</property>
+                            <property name="use_underline">True</property>
+                            <property name="mnemonic_widget">combobox_default_languge</property>
                           </object>
                           <packing>
                             <property name="expand">False</property>
-                            <property name="fill">True</property>
+                            <property name="fill">False</property>
                             <property name="position">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkBox" id="box9">
+                          <object class="GtkComboBox" id="combobox_default_languge_liblouis">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <signal name="changed" handler="combobox_default_languge_liblouis_changed" swapped="no"/>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSeparator">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">5</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="shadow_type">in</property>
+                        <child>
+                          <object class="GtkViewport">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <child>
-                              <object class="GtkComboBox" id="combobox_liblouis_table_list">
+                              <object class="GtkBox" id="box_liblouis_language_list">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="margin_top">5</property>
-                                <property name="margin_bottom">5</property>
-                                <property name="model">liststore2</property>
+                                <property name="orientation">vertical</property>
                                 <child>
-                                  <object class="GtkCellRendererText" id="cellrenderertext2"/>
-                                  <attributes>
-                                    <attribute name="text">0</attribute>
-                                  </attributes>
+                                  <placeholder/>
                                 </child>
                               </object>
-                              <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="button4">
-                                <property name="label" translatable="yes">Add to List</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <property name="image_position">right</property>
-                                <signal name="clicked" handler="liblouis_add_to_list_button_clicked" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkButton" id="button5">
-                                <property name="label" translatable="yes">Reset to default</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">True</property>
-                                <signal name="clicked" handler="liblouis_reset_list_button_clicked" swapped="no"/>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">True</property>
-                                <property name="position">2</property>
-                              </packing>
                             </child>
                           </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                          </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
+                        <property name="expand">True</property>
                         <property name="fill">True</property>
-                        <property name="position">1</property>
+                        <property name="position">2</property>
                       </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
+                    <property name="expand">True</property>
                     <property name="fill">True</property>
                     <property name="position">2</property>
                   </packing>
@@ -928,4 +879,10 @@ along with .  If not, see <http://www.gnu.org/licenses/>.
       </object>
     </child>
   </object>
+  <object class="GtkListStore" id="liststore2">
+    <columns>
+      <!-- column-name table -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
 </interface>



View it on GitLab: https://gitlab.com/smc/ibus-braille/commit/e6cb7bf8ebdc09d9c5a4d0530fdc00c3b53bde5a

-- 
View it on GitLab: https://gitlab.com/smc/ibus-braille/commit/e6cb7bf8ebdc09d9c5a4d0530fdc00c3b53bde5a
You're receiving this email because of your account on gitlab.com.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.smc.org.in/pipermail/discuss-smc.org.in/attachments/20200207/0e0072e6/attachment-0001.html>


More information about the discuss mailing list