Commit Graph

520 Commits

Author SHA1 Message Date
Peter Hutterer e030b0b3ea base: add an argument to peek at the first drawing only
Use --peek to download the first (oldest) drawing on the device but do not
delete it. This is primarily intended as a debugging option, so we can debug
the tablet handling without having to draw new drawings (which cause the
protocol messages to change slightly).

Since the tablet only has a "download oldest file" command this isn't very
useful to end users. If there are two or more files on the tablet, we can only
ever retrieve the oldest one.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:59:14 +10:00
Peter Hutterer 23989e4291 config: make the TuhiConfig a singleton object too
We only ever have one of those anyway, so let's make it a singleton. This
patch keeps the self.config assignment and config passing to keep the churn at
at a minimum. But this way we can assign runtime options to the config and
have those as globally accessible options.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:59:14 +10:00
Peter Hutterer 6e4b190169 protocol: rename a few protocol messages to better reflect what they do
0xc3 is 'download the oldest file'
0xca is 'delete the oldest file' (usually the one we just received) from the tablet.
0xc1 is 'how many files are there'

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:59:14 +10:00
Peter Hutterer 8690e305cf test: ignore empty files
Some raw log files may be empty if we cancelled tuhi at the wrong time. Skip
over those while testing

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:50:40 +10:00
Peter Hutterer 6c94898458 test: print the file name that triggered an exception on error
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:50:40 +10:00
Peter Hutterer 31d352bb1f test: remove unused idx variable
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-22 09:50:40 +10:00
Peter Hutterer d633637899 gui: initialize the drawing with the right zoom factor
Fixes #172

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 11:49:26 +02:00
Benjamin Tissoires a8d8641442
Add the logo to the Readme
now we have a logo, so use it

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
2019-08-21 09:43:47 +02:00
Peter Hutterer fa888b742f wacom: switch to the new protocol stroke parsers
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer a24c54a570 tools: add an svg generation tool
This takes the raw log YAML file tuhi saves for each interaction, extracts the
pen data and then creates an SVG from that. Good for testing whether the
stroke parsing is sane.

Where --all is given, it will search through the directory that tuhi uses to
store the raw logs.

Two fixmes: the pointsize is hardcoded to 5 (intuos pro) because there's no
easy way here to get the point size. Same for the pressure range.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer 07dba6c892 wacom: store the default orientation for each tablet
Not actually used at this point, but this way we have default
width/height/orientation etc. all in one place.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer e420b04fda protocol: add stroke parsing
This is a slightly different model as the messages, primarily because it's not
quite as model-specific. So there's only one parse function and it can handle
both file types that we currently support (intuos pro and the spark/slate
bits).

All wrapped into their own classes to make future extensions a bit easier.
It's not a 1:1 implementation of the tuhi/wacom.py bits either because we now
know about a few extra bits like the flags in stroke headers.

Most importantly though, this can be easily tested now, with one test case
searching for raw logs in $XDG_DATA_HOME/tuhi/raw and parsing all of those. So
the more files are sitting in there (i.e. the more the tablet is used), the
better the test suite becomes.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer 541077a65b Add a utility function module
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer 91203701cf wacom: group the list2hex output
Group by size 8 by default.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 09:31:52 +02:00
Peter Hutterer f08100bae2 meson.build: de-duplicate the icondir defines
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 15:25:30 +10:00
Jakub Steiner 4cf5501044 Update icon based on the new logo
And add a symbolic variant as well

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 15:08:38 +10:00
Peter Hutterer 244b4f5994 wacom: make the parents for the raw log directory too
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-21 14:04:23 +10:00
Peter Hutterer 10c34bc655 gui: simplify the Config's singleton pattern
Use __new__ instead of instance(), this way we can just use the same config
object as Config().do_something.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>k
2019-08-20 12:19:52 +10:00
Peter Hutterer 64fcf04e32 svg: use our Json SVG converter from kete
A few minor changes like passing in a filename and fixing the different
spellings of the orientations.

In order to use it from kete though we have to mess with the PYTHONPATH. But
since it's a in-tree tool only anyway... meh.

This loses the ability to disable pressure on tablets. I think that's just a
leftover from before we knew how to handle pressure in SVG exports. We should
just fix that properly instead of having a config option here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer ac811920b8 tuhi: move the gui/svg.py file to tuhi
One JSON to SVG converter per project is enough.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer f5bafb7f73 gui: use mm in the svg 2019-08-20 12:02:30 +10:00
Peter Hutterer 92fcfd12cc wacom: update the dimensions with the point size
Make sure our dimensions are in actual µm.

Note that this will mess with any cached JSON files since they are now on a
different scale.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer 643dd34476 protocol: add the message for getting the point size
The dimensions of the tablet are in device units, the point size tells us how
big the actual tablet is.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer 57aa0de954 protocol: the spark doesn't support get width/height
Let's make those noop messages that return the hardcoded width/height instead.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer ff2618e68a protocol: add helper functions for converting to/from little endians
A few messages where we assumed the argument is a single byte are actually
little-endian 16 bits. let's add easy-to-use wrappers.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 12:02:30 +10:00
Peter Hutterer a7836abfe6 tools: fix syntax error in kete
Introduced in cc7ba1b365 for slightly
overzealous flake8 handling.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-20 11:56:38 +10:00
Peter Hutterer 6d718f16b5 wacom: rework the file data prefix handling
We know how it's supposed to look like, so let's hardcode it a bit better.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 15:46:50 +02:00
Peter Hutterer 116589d28d wacom: pen data first four bytes are the internal file format
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 15:46:50 +02:00
Peter Hutterer f742779c1a tuhi: log the tuhi server session data to a file
Storage is $XDG_DATA_HOME/tuhi/session-logs/tuhi-$DATE.log
Because it's really useful to have the logs of an old session around when
something goes wrong. Even for simple things like "what uuid was I using
again?"

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 15:43:01 +02:00
Peter Hutterer 9ef4002b39 Move the default config setting to the entry points
Have this in the effective main() methods (or close to that anyway) instead of
hidden away in the config implementations.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 15:43:01 +02:00
Peter Hutterer be9b3c02cc base: allow for a None vendor ID
Unsure how to trigger this case but I have all my devices (not recently
connected) with a vendor ID of None.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 15:41:10 +02:00
Peter Hutterer 8d67bbf5c4 gui: drop an unused config path
This is the copy of tuhi-kete, no need to keep the config path around here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 14:30:26 +10:00
Peter Hutterer 101e2f380e gui: store the cached SVGs in $XDG_CACHE_DIR instead
This is transient data, they're constantly regenerated. Let's store them as
such.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 14:26:27 +10:00
Peter Hutterer cc7ba1b365 kete: move the ini file template out of the code
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 14:11:36 +10:00
Peter Hutterer be6d57562a Switch to pathlib everywhere
gresources and svgwrite don't (yet?) take a Path though, so we have to use
os.fspath() to convert those.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 14:11:36 +10:00
Peter Hutterer c8759eb400 gui: unify the loggers across the GUI
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-19 14:11:25 +10:00
Peter Hutterer 6dc67f13c8 svg: call the super constructor
Presumably gobject sets a few things up, so let's call it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:22:53 +10:00
Peter Hutterer 32091d9a7b wacom: improve a timestamp debug message
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:21:24 +10:00
Peter Hutterer e5375a55dd wacom: name an argument to make it more obvious what the magic 5 means
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:21:24 +10:00
Peter Hutterer d73da09e26 protocol: 0xc7 on the spark seems to be in big-endian
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:10:25 +10:00
Peter Hutterer 790d8c5e31 wacom: fix pressure range for the IntuosPro
8191 seems to be the max value

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:05:49 +10:00
Peter Hutterer 85f2e3c67a wacom: fix the dimensions for the Spark
The reachable range is 2100x14800, highest pressure is 1023. Unlike the slate
the paper block still affords to address almost the whole range even though
the paper is slightly narrower than the range - but it can slide left/right by
about 5mm.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 15:05:49 +10:00
Peter Hutterer bd6278a305 wacom: change the raw log file name to include the timestamp
Because it's annoying when there's an issue with the timestamp in the file and
you have to grep for the file name.

And while we're there, change the human readable date to be actually readable.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 14:58:41 +10:00
Peter Hutterer 35acce3ea6 wacom: log the raw yaml data into a subdirectory
It gets a bit too confusing otherwise with all the weirdly named files around

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 14:58:41 +10:00
Peter Hutterer 6bf7715e83 wacom: write just the timestamp to the log file
Easier to parse than a strftime. And we can just add that one in a comment
anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 14:58:41 +10:00
Peter Hutterer 7f8222b351 wacom: add missing linebreaks to the yml log file
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-15 14:58:41 +10:00
Peter Hutterer e6057e256d Merge tuhigui into tuhi.gui
Let's make this a submodule of tuhi so we can share some code.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-14 08:18:39 +10:00
Peter Hutterer a87a297be3 Merge tuhigui/data to just data/
Step one in making the tuihgui a submodule of tuhi

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-14 08:18:39 +10:00
Peter Hutterer 547aec3d9b config: use super() instead of named base class
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-14 08:18:39 +10:00
Peter Hutterer d8859d1b6a README: headline fix
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2019-08-14 08:18:39 +10:00