Channel strip UI layout and code improvements (#68) * Overhaul channel fader/meter layout: * Put value readout/edit entry and peak value readout next to each other above the fader and meter. When channels are shrunk, they are displayed one under the other. * Add tick marks for left/center/right on balance slider and add tooltip displaying left/right value. This also changes the appearance of slider handle depending on theme. * Convert occurences of `Gtk.HBox` and `Gtk.VBox` to `Gtk.Box`. * Remove `Gtk.Frame`s from layout and set border style via CSS where needed. * You can now shrink the width of input *and* output channels and it also reduces the width of the meter display. * On project load, give input focus to fader of last added channel and deselect volume entry widget. * Some code reorganization and cleanup in `abspeak`, `channel`, and `meter` module: * Refactor channel strip UI creation to reduce DRY. * Use `super()` instead of directly accessing the super-class where appropriate * Unify `widen` and `narrow` `Channel` methods. * Remove outdated size request handling methods in `MeterWidget`. * Style context getter for `AbspeakWidget` returns context for wrapped label widget. Fixes: #67 Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Improve channel properties dialog layout * Don't create unnecesary nested `Gtk.VBox`. * Use `Gtk.Box` instead of deprecated `Gtk.VBox`. * Use `Gtk.Grid` instead of deprecated `Gtk.Table`. * Left-align field labels. * Set padding for `Gtk.Frame`s. * Pack Mode and Value radio buttons into grid instead of into their own Hboxes, so that they are properly aligned. Closes: #36 Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Channel dialogs usability improvements * Remember last used settings for new input/outut channel dialogs (MIDI CCs are always initialized with -1 by default, so they can be auto-assigned). * Add mnemonics for all input/output channel dialog fields. Fixes: #38 Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Minor clean-up of JackMixer initialisation * Raise `RuntimeError` instead of calling `sys.exit(1)` when a `Mixer` instance can not be created. * Fail immediately instaed of uselessly calling `self.create_ui`. * Some code formatting & ordering clean-up and typo fixes. Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
Optionally ask for confirmation before quitting (#54) * Add 'confirm_quit' option to settings * Add option to preferences dialog * Open confirmation dialog when attempting to quit via menu, closing the window or signal when 'confirm_quit' is enabled and not running under NSM. * Some refactoring, re-ordering and re-fromatting of `gui.Factory` code. Signed-off-by: Christopher Arndt <chris@chrisarndt.de>