Commit Graph

589 Commits (1dc1acaba38784e9273c61683a1dfcf56ee06296)

Author SHA1 Message Date
Peter Hutterer 1dc1acaba3 gui: move most of the tuhi-gui startup script to application.py
Add a new main() there so we have a single entry point for the gui instead of
a complex script that needs to be called. That start up script should really
just be the minimum bits possible.

It's still not perfect because we won't work without the gresources and they
require that the pkgdatadir is set. But at least it moves all the logic out of
the startup script.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-29 10:42:44 +10:00
Peter Hutterer bb9f9b6c26 gui: reshuffle the includes until gi and flake8 are happy
We have implied inclusion orders here, specifically with gi. This works as
long as the files are included in the right order from other files but its not
generic enough - we really do need the gi.require_version() bit
everywhere to avoid issues.

Of course, once we do this flake8 complains about everything so let's
reshuffle things in an order it's happy with. This seems to be local modules
first, then ... whatever except when not?

application.py is excluded from this patch because it's about to get changed
in the next one and I'm too lazy to separate those out.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-29 10:42:44 +10:00
Peter Hutterer e37016dc7b Fix deprecated use of @GObject.property → @GObject.Property
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-29 10:42:44 +10:00
Peter Hutterer 97a4ab04d0 ble: downgrade a message from info to debug
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-29 10:42:10 +10:00
Peter Hutterer 90ac2c7150 tools: call directly into Tuhi's main from tuhi-live
This sets up the config dir, loggers, etc. for us. Fixes regressions
introduced a while ago when Tuhi.run() was removed and then more obvious
breakage now that we require the Config path to be set up.

Fixes #206

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-29 10:42:10 +10:00
Peter Hutterer 658fe44d76 tools: remove noop statement from tuhi-live
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 08afa02690 tools: use the dbus client bindings from tuhi-live too
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer cd84de4f32 tools: use the shared dbus client bindings for kete
Since most of the signals are propagated by the bindings we largely just need
to hook up simple methods to log what is happening.

One nasty hack: we import some of the bits into the kete namespace so
tuhi-live continues to work. This can be fixed up in a follow-up commit.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 07cefa3c26 dbusclient: add the start/stop live from kete to the bindings
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 695b7c43be dbusclient: drop the duplicate device argument
The first argument in any signal is the object that emits it, so we don't have
to add it again.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 71ca2ca569 gui: fix two signal disconnections
Both of the signals here are connect to the device, not Tuhi. The only reason
this worked was because the signal sent by the dbus bindings had the device
twice in the arguments and 'tuhi' was actually the device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 2d142b4be3 dbusclient: drop the word Kete from the generic dbus client bindings
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer 28f92882ec dbusclient: fix a few super() calls
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer f477e86a96 gui: move the dbus client handler bits to the tuhi module
This is used by the GUI and by kete and it's just an abstraction of the
handling anyway with little actual logic. Let's make this sharable.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:17:38 +02:00
Peter Hutterer ed29c0daae gui: stop listening on an authorization error
This conflicts with trying to register the device on authentication errors and
making re-registration unreliable. Tuhi would keep connecting to the device
while holding the button down, so we'd get another failed connection and a
disconnect from the device. The Register signal would come in and get lost
somehow.

Fixes #195

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 14:55:12 +02:00
Peter Hutterer 488512231c gui: reset the signal list after disconnecting them
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 14:55:12 +02:00
Peter Hutterer c0628f1f19 meson.build: check for missing python modules
Check those modules that aren't part of the python installation and bail out
of meson where they're missing. This is technically wrong because we don't
need them at build-time and only at run-time but pragmatically sensible
because we waste too much time dealing with those bugs.

Fixes #200

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 17:36:16 +10:00
Peter Hutterer 9c399c8eac flatpak: fix the pyxdg path
So we don't need to be redirected every time.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 17:35:52 +10:00
Peter Hutterer 505f1c786f flatpak: use specific versions of svgwrite and pyxdg
flathub requires us to use specific versions, so let's do that here too so
we're consistent in testing.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 17:35:52 +10:00
Peter Hutterer cab716938f flatpak: indentation fix 2019-08-28 17:35:52 +10:00
Peter Hutterer 6c0ddd96bc protocol: add missing space for NordicData's str()
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:33:28 +10:00
Peter Hutterer 827ccbfa07 protcol: just print the class name during str()
<class '....'> doesn't make things easier to debug

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:33:28 +10:00
Peter Hutterer 1fb36ebc40 protocol: fix typo in printing a NordicData object
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:33:28 +10:00
Peter Hutterer db87390c48 protocol: use __str__, not __repr__ for the various messages
str() is the preferred one, though I can't find a good explanation when to use
what.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-28 15:33:28 +10:00
Peter Hutterer f24967ad12 gui: require pygi version 3.30
This was the one that introduced the Gtk.Template class that we use. And
better to have a meaningful exit than a crash.

Fixes #197

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-27 19:31:00 +10:00
Peter Hutterer e6ea60d6c1 gui: hook up ctrl+q for app.quit
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 13:18:28 +10:00
Peter Hutterer c71076ca1d tuhi 0.2
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:23:20 +10:00
Peter Hutterer b0b076d52a config: don't purge drawings
We used to drop all but the last 10 drawings on startup and as the comment
says so that users don't rely on tuhi for storage. That's mostly fine when
Tuhi is a separate daemon but now the primary interface is the GUI. So we can
run into this situation:

- user starts Tuhi (which in turn starts tuhi-gui and tuhi-server)
- tuhi-server downloads 20 fresh drawings from the device
- tuhi-gui crashes before it can fetch them from the tuhi-server
- restart Tuhi, the server now purges 10 out of those 20 drawings that the
  user has never seen. They're gone for good.

Let's drop that code until we figure out a better solution to that (e.g. drop
drawings older than X months but that too is fraught with errors).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:18:10 +10:00
Peter Hutterer a0fb4cf0f9 wacom: use 'with' to group request/replies together
Previously, the YAML output was basically:

  - send: [0xb9, 0x01, 0x00]
  - recv: [0xba, 0x02, 0x44, 0x00]

using a context manager where replies are expeced we can now group the
replies in the yaml file:

        with logger as _:
           self.send_nordic_command(...)
           self.wait_nordic_data(...)

And that will prodice a grouped entry in the YAML file:

  - send: [0xb9, 0x01, 0x00]
    recv: [0xba, 0x02, 0x44, 0x00]

Which means processing those becomes a bit easier.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:05:17 +10:00
Peter Hutterer 3e0ba27856 base: set up the loggers a bit more sensibly
Both handlers need to be set up to log at debug level, the logger itself will
filter correctly anyway where verbose isn't given. And we want them both to
log in the same format, so let's re-use the formatter.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:05:17 +10:00
Peter Hutterer 79480b867d protocol: store the interaction name in the NordicData where appropriate
This means the data logger can then access that name without needing a
separate lookup table.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:05:17 +10:00
Peter Hutterer e30787234c wacom: change the data logger to take a request msg instead of just raw data
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-26 09:05:17 +10:00
Peter Hutterer 9a21c2318a wacom: store the default point size for each tablet
It'll be overwritten by the messages anyway but for the converter tool this is
handy.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 11:31:30 +02:00
Peter Hutterer 35a0727f4e flatpak: update pyparsing to latest release
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 11:03:14 +02:00
Peter Hutterer f9f58c0fbd flatpak: update to GNOME runtime 3.32
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 11:03:14 +02:00
Peter Hutterer a8fb795b58 data: add screenshot links to the appdata file
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 11:03:14 +02:00
Peter Hutterer 8eea6468b7 wacom: add a session id field to make it easier to find log files
The session id is a UUID, postfixed by an incrementing number. The UUID stays
the same for Tuhi's livetime, the number increments with every bluetooth
connect/disconnect. Result is e.g. 4e55c30035d043ce9f6f4914fb223820-2.

This session id is printed to the log file, added to the YAML raw logs and to
the JSON file, making it easier which log part resulted in which drawing, etc.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:46:14 +02:00
Peter Hutterer 44d2018f1c protocol: assume the initial stroke point to be 0, 0, 0
Reproduced on the Spark, first bytes in a new file recording were
- file header: 0x62, 0x38, 0x62, 0x74
- stroke point: 0xbf, 0xff, 0xff, 0x4a, 0x14, 0x29, 0x31, 0x6a
- stroke delta: 0xa8, 0x02, 0x04, 0xc3,

The initial point thus has a delta pressure value 0x6a which must be added to
*something*. And zero is the most sensible *something* that I can think of.

Fixes #111

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:44:55 +02:00
Peter Hutterer c466c7d431 protocol: handle error code 0x7
Deprecated, but still exists on the Slate so let's wrap the connect attempt
so we throw the right error.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 02ca3a7058 gui: hook up the auth signal with a re-register workflow
When we get an authorization error, show a revealer to re-register the device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer f21af42131 protocol: on the spark treat a general error during connect as wrong uuid
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 7a121cfe6c protocol: print the DeviceError as something useful
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 88d9cf14bd wacom: move an assignment to a shared path
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer daac9114e1 gui: pass a dbus device error on as signal
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 1ddf899d3e protocol: augment the new exceptions with errnos
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 14da500310 dbus: change EAGAIN to EBUSY for "already listening"
Seems like a more precise description.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer ebf48be0ad wacom: replace the last exception with a protocol exception
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer be38e1a781 wacom: replace one 'old' exception with the new protocol one
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 22673b9e5a wacom.py: drop two now-unused functions
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00
Peter Hutterer 77048d572d protocol: use a MisingReplyError instead of timeout exceptions
It's caused by a timeout but the underlying issue is that we never got the
reply that we wanted.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-23 10:38:36 +02:00