Commit Graph

27 Commits

Author SHA1 Message Date
Benjamin Tissoires 1d3bf40a8c kete/prompt: do_fetch: allow for devices in pairable mode to be paired
this is something quite useful actually
2018-01-29 11:09:25 +01:00
Peter Hutterer 6ad3851afd wacom: set the device time to UTC time on pairing
And let us handle the local time zone conversions in the client, because
having timestamps in localtime in the daemon is confusing and error-prone (how
is the client supposed to know what localtime was?)
2018-01-29 09:44:50 +01:00
Peter Hutterer dfdface640 Colorise the output log
Modified version from
https://stackoverflow.com/questions/384076/how-can-i-color-python-logging-output

Modifications (from that post) include:
* make flake8 happy by removing whitespaces and whatnot
* move everything into a class
* add the LIGHT_* colors
* remove the magic 30+ offset, assign the real color codes instead
* remove the $BG feature, we don't need background colors
2018-01-29 09:14:53 +01:00
Peter Hutterer 7d86305b52 kete: ignore errors during exit
Errors that occur during shutdown because one of the things hasn't been set up
in the expected way do not matter. For the shell we still require a manual
user exit though.

  File "./tools/tuhi-kete.py", line 344, in stop
    self.manager.disconnect(self.s1)
AttributeError: 'Searcher' object has no attribute 's1'

  File "./tools/tuhi-kete.py", line 267, in _on_name_vanished
    self.mainloop.quit()
AttributeError: 'NoneType' object has no attribute 'quit'
2018-01-29 10:12:04 +10:00
Peter Hutterer 8b50a7c2da kete/prompt: improve the help messages
Now that we have a prompt, make the various help <cmd> messages detailed
enough that someone who doesn't know tuhi well can still figure it out.
2018-01-29 10:12:04 +10:00
Benjamin Tissoires 03672a68f6 kete/prompt: add info command
convenient function to list the currently available drawings
2018-01-29 10:12:04 +10:00
Benjamin Tissoires dd84145b3b kete/prompt: implement pairing
we have to tweak a little the Searcher class for it to not prompt the
request whether to pair to the device or not.
2018-01-29 10:00:22 +10:00
Benjamin Tissoires c1a11280c0 kete/prompt: implement fetch 2018-01-29 10:00:22 +10:00
Benjamin Tissoires 60252f8649 kete/prompt: use argparse instead of home made parser 2018-01-29 09:08:22 +10:00
Benjamin Tissoires b33afcce0c kete/prompt: filter out EOF from the list of commands in the help
It doesn't make any sense to show this.
2018-01-29 09:08:22 +10:00
Benjamin Tissoires 72d19ffdad kete/prompt: re-write the last line
If a log message comes in the background, it will clear the current
command.
Rewrite the current line buffer from readline so we get more user
friendly.
2018-01-29 09:08:22 +10:00
Benjamin Tissoires a833ff2b4c kete/prompt: interleave the logs in a better way with the prompt
We overwrite the current formatter to display or not
the prompt depending if we are in the prompt or not.

To prevent races between the background events and our
current configuration, we acquire/release the lock on
the current handler.
2018-01-29 09:08:22 +10:00
Benjamin Tissoires 8bd79d6b79 kete: add a prompt for interactive commands
Only list and listen commands are currently implemented.

The Ctrl-C handling has been a little bit tricky. The default GLib
mainloop tends to add its own SIGINT handler, which prevents us to
gracefully handle the KeyboardInterrupt exception during cmdloop().

So we need to create the mainloop in TuhiKeteShellWorker directly,
but bypassing the GLib.Mainloop() python facility.
2018-01-29 09:08:22 +10:00
Benjamin Tissoires e1e5a9357b kete: fix disconnect signals on Searcher
We should disconnect the signals on stop() no matter what state we are
2018-01-29 09:08:22 +10:00
Benjamin Tissoires 403eb51ea7 kete: have a common worker implementation
For the various commands, it is easier if we have a common interface
than just a simple function call.

Each current command runs something before the mainloop is created, and
then something after the mainloop is terminated. Having such a worker
allows us to have only one place where we start the mainloop, meaning
that the interactive prompt will not try to start it more than once,
and most above, will not kill it in the middle of a command while other
commands are still running.
2018-01-29 09:08:22 +10:00
Benjamin Tissoires 8e1bba496f kete: use logger instead of plain prints for device notifications 2018-01-29 09:08:22 +10:00
Benjamin Tissoires 5a5a2bc2b8 kete: validate the device address before processing it 2018-01-29 09:08:22 +10:00
Peter Hutterer 4efc415aa1 kete: disconnect from the device/manager signals on exit
Otherwise we resubscribe if we repeatedly call listen in interactive mode
2018-01-25 16:02:34 +10:00
Peter Hutterer 6ad127da3a kete: handle Listening property changes correctly
Previously the assumption was that any change in that property is only from
True to False
2018-01-25 16:02:34 +10:00
Benjamin Tissoires d4c5f2c081 kete: remove unused local variables 2018-01-25 14:58:28 +10:00
Peter Hutterer a9b6ea68e5 kete: on fetch, write the file as svg into $PWD
Again, very rudimentary but we're planning on making kete a bit better anyway.

Also note that this doesn't make use of the tuhi.drawing module on purpose,
parsing the format twice avoids some bugs and also keeps tuhi-kete separate
from the tuhi daemon.

Part of #7
2018-01-25 14:56:11 +10:00
Peter Hutterer 7a31a994fb dbus: return the drawings as array of timestamps
As we're planning to cache the data locally, the timestamps are a
unique-enough way that makes it possible to access a specific drawing.
And this way we can also delete some drawings without all other indices
shifting around.

Fixes #16
2018-01-25 14:55:10 +10:00
Peter Hutterer 3d516530c6 wacom: throw the exception (if any) to the "done" handler
Attach an errno to all exceptions, so we can bubble that up to the client
and display a message.

Fixes #24
2018-01-25 14:55:10 +10:00
Peter Hutterer a8ea4eb01b kete: improve an error message
This is a debugging tool, but still...
2018-01-25 09:18:59 +10:00
Peter Hutterer b3fad1be1b kete: ignore errors during StopListening
If the daemon goes away while we're listening, this is not a real problem.
2018-01-25 09:18:59 +10:00
Peter Hutterer 2ee934a81d kete: don't let a second client start searching 2018-01-24 19:25:00 +10:00
Benjamin Tissoires 6fa14b65f2 kete: Move the file in a tools folder
This is an unbelievable commit. This just moves one file in a new dir,
and this fixes bug #19.
2018-01-23 19:42:23 +10:00