loading screen

first
sezanzeb 4 years ago
parent 4988e85b1f
commit 8dc45e51a5

@ -257,7 +257,7 @@
<property name="icon_name">mouse</property>
<signal name="delete-event" handler="on_close" swapped="no"/>
<child>
<object class="GtkBox">
<object class="GtkBox" id="wrapper">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
@ -289,6 +289,9 @@
<object class="GtkComboBoxText" id="device_selection">
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item translatable="yes"> </item>
</items>
<signal name="changed" handler="on_select_device" swapped="no"/>
</object>
<packing>
@ -424,6 +427,9 @@
<property name="width_request">200</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<items>
<item translatable="yes"> </item>
</items>
<signal name="changed" handler="on_select_preset" swapped="no"/>
</object>
<packing>
@ -515,17 +521,53 @@
</packing>
</child>
<child>
<object class="GtkStatusbar" id="status_bar">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_start">10</property>
<property name="margin_end">10</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
<object class="GtkStatusbar" id="status_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_start">10</property>
<property name="margin_end">10</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
</object>
<packing>
<property name="expand">True</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">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="keycode">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_start">10</property>
<property name="margin_end">10</property>
<property name="width_chars">4</property>
</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>
@ -663,4 +705,90 @@ Control_R</property>
<placeholder/>
</child>
</object>
<object class="GtkDialog" id="loading">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Key Mapper</property>
<property name="modal">True</property>
<property name="window_position">center</property>
<property name="icon_name">mouse</property>
<property name="type_hint">dialog</property>
<property name="urgency_hint">True</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="layout_style">end</property>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImage" id="error-image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="yalign">0</property>
<property name="xpad">12</property>
<property name="ypad">12</property>
<property name="icon_name">mouse</property>
<property name="icon_size">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="secondary_error_label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">10</property>
<property name="margin_start">10</property>
<property name="margin_end">10</property>
<property name="ypad">6</property>
<property name="label" translatable="yes">Loading...</property>
<property name="use_markup">True</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<placeholder/>
</child>
</object>
</interface>

@ -0,0 +1,45 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# key-mapper - GUI for device specific keyboard mappings
# Copyright (C) 2020 sezanzeb <proxima@hip70890b.de>
#
# 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 <https://www.gnu.org/licenses/>.
"""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()

@ -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)

@ -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(

Loading…
Cancel
Save