summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--caribou/antler/antler_settings.py9
-rw-r--r--caribou/antler/keyboard_view.py6
-rw-r--r--caribou/settings/caribou_settings.py14
-rw-r--r--libcaribou/json-deserializer.vala24
-rw-r--r--libcaribou/keyboard-model.vala10
5 files changed, 33 insertions, 30 deletions
diff --git a/caribou/antler/antler_settings.py b/caribou/antler/antler_settings.py
index 703a7fd..da8ac2f 100644
--- a/caribou/antler/antler_settings.py
+++ b/caribou/antler/antler_settings.py
@@ -5,6 +5,15 @@ AntlerSettings = SettingsTopGroup(
_("Antler Preferences"), "/org/gnome/antler/", "org.gnome.antler",
[SettingsGroup("antler", _("Antler"), [
SettingsGroup("appearance", _("Appearance"), [
+ StringSetting(
+ "keyboard_type", _("Keyboard Type"), "touch",
+ _("The keyboard geometery Caribou should use"),
+ _("The keyboard geometery determines the shape "
+ "and complexity of the keyboard, it could range from "
+ "a 'natural' look and feel good for composing simple "
+ "text, to a fullscale keyboard."),
+ allowed=[(('touch'), _('Touch')),
+ (('scan'), _('Scan'))]),
BooleanSetting("use_system", _("Use System Theme"),
True, _("Use System Theme")),
FloatSetting("min_alpha", _("Minimum Alpha"),
diff --git a/caribou/antler/keyboard_view.py b/caribou/antler/keyboard_view.py
index 9402f36..385a636 100644
--- a/caribou/antler/keyboard_view.py
+++ b/caribou/antler/keyboard_view.py
@@ -227,16 +227,16 @@ class AntlerLayout(Gtk.HBox):
class AntlerKeyboardView(Gtk.Notebook):
def __init__(self):
gobject.GObject.__init__(self)
+ settings = AntlerSettings()
self.set_show_tabs(False)
- self.keyboard_model = Caribou.KeyboardModel()
+ self.keyboard_model = Caribou.KeyboardModel(
+ keyboard_type=settings.keyboard_type.value)
self.scanner = Caribou.Scanner()
self.scanner.set_keyboard(self.keyboard_model)
self.keyboard_model.connect("notify::active-group", self._on_group_changed)
self.layers = {}
-
- settings = AntlerSettings()
use_system = settings.use_system
use_system.connect("value-changed", self._on_use_system_theme_changed)
diff --git a/caribou/settings/caribou_settings.py b/caribou/settings/caribou_settings.py
index 3d2c219..f3f9b00 100644
--- a/caribou/settings/caribou_settings.py
+++ b/caribou/settings/caribou_settings.py
@@ -3,19 +3,7 @@ from caribou.i18n import _
CaribouSettings = SettingsTopGroup(
_("Caribou Preferences"), "/org/gnome/caribou/", "org.gnome.caribou",
- [SettingsGroup("keyboard", _("Keyboard"), [
- SettingsGroup("general", _("General"), [
- StringSetting(
- "keyboard_type", _("Keyboard Type"), "touch",
- _("The keyboard geometery Caribou should use"),
- _("The keyboard geometery determines the shape "
- "and complexity of the keyboard, it could range from "
- "a 'natural' look and feel good for composing simple "
- "text, to a fullscale keyboard."),
- allowed=[(('touch'), _('Touch')),
- (('scan'), _('Scan'))])]),
- ]),
- SettingsGroup("scanning", _("Scanning"), [
+ [SettingsGroup("scanning", _("Scanning"), [
BooleanSetting(
"scan_enabled", _("Enable scanning"), False,
_("Enable switch scanning"),
diff --git a/libcaribou/json-deserializer.vala b/libcaribou/json-deserializer.vala
index 818655c..ea448a4 100644
--- a/libcaribou/json-deserializer.vala
+++ b/libcaribou/json-deserializer.vala
@@ -18,23 +18,22 @@ namespace Caribou {
return false;
}
- public static GLib.File get_layout_file (string group,
+ public static GLib.File get_layout_file (string keyboard_type, string group,
string variant) throws IOError {
- Settings caribou_settings = new Settings ("org.gnome.caribou");
- string kb_type = caribou_settings.get_string("keyboard-type");
List<string> dirs = new List<string> ();
string custom_dir = Environment.get_variable("CARIBOU_LAYOUTS_DIR");
if (custom_dir != null)
- dirs.append (Path.build_filename (custom_dir, "layouts", kb_type));
+ dirs.append (Path.build_filename (custom_dir, "layouts",
+ keyboard_type));
dirs.append (Path.build_filename (Environment.get_user_data_dir (),
- "caribou", "layouts", kb_type));
+ "caribou", "layouts", keyboard_type));
foreach (string data_dir in Environment.get_system_data_dirs ()) {
dirs.append (Path.build_filename (
- data_dir, "caribou", "layouts", kb_type));
+ data_dir, "caribou", "layouts", keyboard_type));
}
foreach (string data_dir in dirs) {
@@ -46,19 +45,22 @@ namespace Caribou {
throw new IOError.NOT_FOUND (
"Could not find layout file for %s %s", group, variant); }
- public static bool load_group (GroupModel group) {
+ public static GroupModel? load_group (string keyboard_type,
+ string group, string variant) {
Json.Parser parser = new Json.Parser ();
try {
- GLib.File f = get_layout_file (group.group, group.variant);
+ GLib.File f = get_layout_file (keyboard_type, group, variant);
parser.load_from_stream (f.read (), (Cancellable) null);
- create_levels_from_json (group, parser.get_root ());
} catch (GLib.Error e) {
stdout.printf ("Failed to load JSON: %s\n", e.message);
- return false;
+ return null;
}
- return true;
+ GroupModel grp = new GroupModel (group, variant);
+ create_levels_from_json (grp, parser.get_root ());
+
+ return grp;
}
public static void create_levels_from_json (GroupModel group,
diff --git a/libcaribou/keyboard-model.vala b/libcaribou/keyboard-model.vala
index a1fa2fc..3b06c9f 100644
--- a/libcaribou/keyboard-model.vala
+++ b/libcaribou/keyboard-model.vala
@@ -3,6 +3,7 @@ using Bus;
namespace Caribou {
public class KeyboardModel : Object {
public string active_group { get; private set; default = ""; }
+ public string keyboard_type { get; construct; }
XAdapter xadapter;
HashTable<string, GroupModel> groups;
@@ -13,13 +14,15 @@ namespace Caribou {
string[] grps, variants;
int i;
- groups = new HashTable<string, GroupModel> (str_hash, str_equal);
+ assert (keyboard_type != null);
xadapter = XAdapter.get_default ();
xadapter.group_changed.connect (on_group_changed);
xadapter.get_groups (out grps, out variants);
+ groups = new HashTable<string, GroupModel> (str_hash, str_equal);
+
for (i=0;i<grps.length;i++)
populate_group (grps[i], variants[i]);
@@ -28,8 +31,9 @@ namespace Caribou {
}
private void populate_group (string group, string variant) {
- GroupModel grp = new GroupModel (group, variant);
- if (JsonDeserializer.load_group (grp))
+ GroupModel grp = JsonDeserializer.load_group (keyboard_type,
+ group, variant);
+ if (grp != null)
groups.insert (GroupModel.create_group_name (group, variant), grp);
}