diff --git a/data/key-mapper.glade b/data/key-mapper.glade index af2f777f..71cb9885 100644 --- a/data/key-mapper.glade +++ b/data/key-mapper.glade @@ -257,7 +257,7 @@ mouse - + True False @@ -289,6 +289,9 @@ True False + + + @@ -424,6 +427,9 @@ 200 True False + + + @@ -515,17 +521,53 @@ - + True False - 10 - 10 - 10 - 10 - 6 - 6 - vertical - 2 + + + True + False + 10 + 10 + 10 + 10 + 6 + 6 + vertical + 2 + + + True + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + False + 10 + 10 + 4 + + + False + True + 2 + + False @@ -663,4 +705,90 @@ Control_R + + False + Key Mapper + True + center + mouse + dialog + True + + + True + False + vertical + + + True + False + center + end + + + + + + + + + False + True + end + 0 + + + + + True + False + + + True + False + 0 + 12 + 12 + mouse + 6 + + + False + False + 0 + + + + + True + False + 10 + 10 + 10 + 10 + 6 + Loading... + True + 0 + 0.5 + + + True + True + 1 + + + + + True + True + 2 + + + + + + + + diff --git a/keymapper/gtk/loading.py b/keymapper/gtk/loading.py new file mode 100644 index 00000000..aad62d1b --- /dev/null +++ b/keymapper/gtk/loading.py @@ -0,0 +1,45 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# key-mapper - GUI for device specific keyboard mappings +# Copyright (C) 2020 sezanzeb +# +# This file is part of key-mapper. +# +# key-mapper is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# key-mapper 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with key-mapper. If not, see . + + +"""Error dialog.""" + + +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('GLib', '2.0') +from gi.repository import Gtk + +from keymapper.data import get_data_path + + +class LoadingDialog: + """Displays 'Loading...' until Key Mapper is loaded.""" + def __init__(self): + """Open a dialog that says 'Loading...'.""" + gladefile = get_data_path('key-mapper.glade') + builder = Gtk.Builder() + builder.add_from_file(gladefile) + dialog = builder.get_object('loading') + dialog.show() + self.dialog = dialog + + def close(self): + self.dialog.destroy() diff --git a/keymapper/gtk/window.py b/keymapper/gtk/window.py index b9b2c6a0..3b404707 100755 --- a/keymapper/gtk/window.py +++ b/keymapper/gtk/window.py @@ -35,6 +35,7 @@ from keymapper.presets import get_presets, find_newest_preset, \ from keymapper.logger import logger from keymapper.linux import get_devices from keymapper.gtk.row import Row +from keymapper.gtk.loading import LoadingDialog from keymapper.gtk.unsaved import unsaved_changes_dialog, GO_BACK @@ -100,14 +101,23 @@ class Window: window = self.get('window') window.show() + window.set_sensitive(False) + self.get('wrapper').set_opacity(0) + loading = LoadingDialog() self.window = window + gtk_iteration() + self.populate_devices() self.select_newest_preset() self.timeout = GLib.timeout_add(100, self.check_add_row) + window.set_sensitive(True) + self.get('wrapper').set_opacity(1) + loading.close() + def get(self, name): """Get a widget from the window""" return self.builder.get_object(name) diff --git a/keymapper/presets.py b/keymapper/presets.py index 15ca36db..47b2daed 100644 --- a/keymapper/presets.py +++ b/keymapper/presets.py @@ -75,6 +75,7 @@ def find_newest_preset(device=None): device : string If set, will return the newest preset for the device or None """ + print('find_newest_preset') # sort the oldest files to the front in order to use pop to get the newest if device is None: paths = sorted(