Commit Graph

630 Commits

Author SHA1 Message Date
94d3da7e09
GUI updates to handle monitor-section changes
This fixes various MS related action sensitivity issues, as well
as action-states.

Also manually adding a monitor-section to a session now always
immediately shows it, regardless of prior ToggleMonitorSection
visibility.
2019-03-01 16:51:08 +01:00
65bda27d42 Tweaks to Mixer and Monitor keybindings:
Add Mixer-specific view keybindings for list, vca, mon.  (thanks to: the_CLA)
Move monitor keybindings (mute, dim, mono) to be globally-accessible.

Implement new mixer-specific actions to show/hide monitor,vcas,mixbuses (the_CLA)
Move monitor funcs (mute,dim,mono) to globally-accessible actions.
Make a new Monitor group insted of using Transport group.
Allow use-monitor-section to be controlled by both menu and session-options dialog.
2018-12-07 12:57:26 -06:00
245d48dbd0
NO-OP: Clarify function name 2018-11-28 15:16:25 +01:00
f150f6c074
Use central method to check for engine where required
These are generally places where tracks/busses are created or port
connections change.
2018-11-28 00:01:50 +01:00
0140b24248 Change get_routes to get_routelist where appropriate. 2018-11-07 17:00:16 -08:00
269b0ebcd8 Same for midi input enable button 2018-03-13 08:05:41 -07:00
b8856076c2 Trim and vca button should also be insensitive in strip aux mode 2018-03-12 16:03:53 -07:00
ceac42cc03 NO-OP: whitespace
- remove trailing whitespace
- remove space after opening brackets and before closing brackets
- add space around operators
- do not use '//' for multi-line comments, do not use "//" on line-start
  to comment-out code breaking indenting (-Wmisleading-indent)
- do add a single space after comment-start /*{SPACE}... or //{SPACE}...
- reserve duplicate whitespace "  " for alignment, remove other duplicate
  whitespace
- use established "TODO" and "XXX" (highlighted keywords)
- remove equal-sign series "====" (those indicate merge conflicts)
2018-02-24 13:55:20 +01:00
55ee5d2e50 Fix duplicate if(A) else if (A) condition
Issue came to be from consolidating Session and UI configuration.
Found by PVS-Studio - https://www.viva64.com/en/b/0540/
2017-11-23 09:50:50 +01:00
ea5fa64c0b manually fix up various cases where Gtk:Frame foo_frame had been changed to foo_sample 2017-09-18 14:59:11 -04:00
30b087ab3d globally change all use of "frame" to refer to audio into "sample".
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
2017-09-18 12:39:17 -04:00
e6064b286e basic GUI framework for setting Disk I/O options 2017-09-18 11:40:53 -04:00
a4a87f56e9 mega-commit to save state of first "it compilesand links" state for separated disk i/o changes.
THIS WILL NOT RUN. THIS REQUIRES MANY CHANGES
2017-09-18 11:40:52 -04:00
ae0dcdc0c5 Fix various tooltip markup (ampersand) entity-escape:
* track/port names
* plugin-names
* MIDI patch-names
2017-09-14 19:23:37 +02:00
b5e1eb7538 Migrate PC dialog to RouteUI, midnam handing to RTAV.
This allows to to bring up the PC dialog from Editor/Editor-Mixer & Mixer
for both MIDI Tracks as well as MIDI Busses.
2017-09-09 18:25:36 +02:00
6d0b009995 Refactor update_io_button
Check, in order, if the io is connected to another Ardour route, then a
user bundle, then some physical ports with simple configuration, and
lastly another client.

Before, Routes were considered connected as long as every io port
connected to that route, even if the channel order was mixed or worse if
all ports were connected to the same channel. Now Routes and Bundles are
considered connected if they are exclusively connected, in the right
order, to all their ports with matching datatype.
2017-08-28 19:43:28 +02:00
5aeb5f0c7d Remove unneeded test
The for loop will not be executed if |port_connections| is empty, no
need to check beforehand.
2017-08-25 21:35:18 +02:00
18cf003aa9 Fix typo in dea8ee7f 2017-08-24 16:20:51 +02:00
dea8ee7f38 Make clicks on io menu bundles always connect
If a bundle was already connected, a click on the corresponding entry
disconnected it, essentially giving toggle semantics to the io menus.
This behavior has three problems:

 — When clicking on a not yet connected bundle, the new bundle replaces
   any already connected one. This is not consistent with a toggle mode.
 — It is a less discoverable and less easy way to disconnect a bundle
   than the already present "Disconnect" menu entry.
 — Bundles that match the I/O channels only partially (recently added to cater
   for e.g. MIDI+STEREO tracks connecting to Master) are never
   considered "connected" because the channels are not connected 1:1.
   Those will thus never toggle, making the behavior inconsistent.

Change the semantics to ensure a bundle is connected on click instead.
2017-08-24 15:41:40 +02:00
74fada443d Make the output menu able to connect partial matches
Use the new partial connection feature of IO::connect_ports_to_bundle.
2017-08-23 23:31:28 +02:00
cc63df7e8d Populate strips output menus with a more user-friendly heuristic
Ensure the master bus is the first proposed bundle if it is present.
Also propose internal route inputs before physical outs or other
software via JACK.

Last, but not least, add to the menu not only exactly matching bundles,
but also bundles that have the same number of channels than the route
output when considering only the DataType we think the user wants to
use. This covers both the case of a MIDI+STEREO instrument track
connecting to master, and the case of a STEREO track connecting to a
MIDI+STEREO vocoder track.
2017-08-23 23:31:10 +02:00
452e22e9c9 Improve maybe_add_bundle_to_output_menu
Avoid proposing the monitor section in the list if the current route is
not the master bus. Also allow the caller to pass a DataType as argument
to allow partial bundle match on that datatype only.
2017-08-23 22:59:43 +02:00
8119026bc8 Use port enumeration instead of manual indexed loop 2017-08-23 22:59:43 +02:00
ce9bdd1db0 Generalise heuristic for user-intended main type of a route's IO
The heuristic currently used to display port connections in a
compact user-friendly way only considers Audio and MIDI data types.

Replace it by a better heuristic that does essentially the same thing
with all DataTypes, assuming they are ordered by likeliness of usage.
Currently the result is the same since there are only two DataTypes.
2017-08-23 22:59:38 +02:00
f90a70e774 Remove never changing and/or unused arguments 2017-08-23 22:10:51 +02:00
7009ff0300 Update Selection API to include all Stripables 2017-08-06 22:17:58 +02:00
4ff6ed0f22 Add touch to trim-control 2017-07-24 01:59:22 +02:00
eb1e423b75 Remove <gtkmm.h> include from header files. 2017-07-17 21:06:04 +02:00
f9e5e4360e Move more Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
b5e9451bc7 Remove unused sources & includes 2017-07-17 21:06:04 +02:00
f6e182b937 Move Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
5c92613698 Separate Ardour UI widgets into dedicated library 2017-07-17 21:06:04 +02:00
Thomas Brand
63ea7b6516 NO-OP whitespace (updated GH PR #357) 2017-07-01 19:28:26 +02:00
e74d1f1048 Use quotes for bundled library includes 2017-06-29 00:22:45 +02:00
c3c4efaa09 Use mnemonic-save API for menu-element texts 2017-06-29 00:22:42 +02:00
d55cb9ba94 Update GUI to follow Slavable API change 2017-06-22 22:04:10 +02:00
7c94499aec Remove Cruft -- AutomationStyle never did anything.
Trim automation is planned via SlavableAC as normal AutomationMode.
Some of this code have a revival (a special "Trim+Preview" state
before merging Automation but that has to be more general than Pan & Gain.
2017-06-21 13:16:27 +02:00
99ee7d7b61 Use PBD::to_string from pbd/string_convert.h in MixerStrip class
The numeric formatting is equivalent. Even though this string is being used in
the UI as a label I think this is another case where we don't want a localized
numeric string, which would only be relevant with a track count >=1000.
2017-04-19 09:37:01 +10:00
634207dd6a Use AxisView::get/set_gui_property API in MixerStrip class 2017-04-19 09:36:58 +10:00
962e7a214a Revert "consistent use of context-menu popups"
This reverts commit b3722f7063.

In some cases ardour shows context-menu on right-mouse-button
release. In this case selecting a menu-entry should happen
with the left-mouse button (or any button?!)

Using ev->button is only correct if the menu is temporary and only
visible while the button is held, button release then activates the
menu-item.

This needs further work, in some cases allowing any button (0) to work
makes sense and overall consistency needs to be improved.
Different places use different strategies for context-menus which
don't always match the button used in the event-handler.

This is a hotfix (to make TAV context menus work again with left-click)
2017-03-24 14:48:46 +01:00
b3722f7063 consistent use of context-menu popups 2017-03-16 02:36:48 +01:00
c93bef0ab6 Consolidate code 2017-03-08 22:17:16 +01:00
6df23c4e65 consolidate Ardour+Mixbus code, fix duplicate SeparatorElem in MB. 2017-02-20 16:35:55 +01:00
edd1061c3d save/restore VCA master state inside slaves, so that a reloaded session ends up back in the same state 2017-02-06 16:49:08 +01:00
b759bae0cd Right-click on a VCA to assign it to the selected channels. 2017-02-02 11:02:10 -06:00
Daniel Sheeler
33c74357f0 Meter point toggle button now uses a popup menu instead of toggling 2017-01-24 13:38:23 +01:00
86e46ae41d Better fix for widgets that do not apply to master bus: leave them in place, but insensitive, to retain layout 2017-01-09 19:41:31 -06:00
69d043766f Revert "Remove the Solo+Iso buttons in the Master bus."
This reverts commit 7f280e2bed.
2017-01-09 19:07:36 -06:00
7f280e2bed Remove the Solo+Iso buttons in the Master bus. 2017-01-09 08:17:38 -06:00
36c34330b2 Vertically line up mixer strip (backport from Mixbus) 2016-12-21 03:53:45 +01:00
afa6720288 UI tweak for the spacer at the bottom of the master bus. 2016-12-12 12:16:43 -06:00
857c0d4a5e Refine instrument fan-out:
* prefix (rather than suffix) portgroup-name
* check if group already exists
* disconnect targets (when autoconnect preference is enabled)
* expose tracks/busses option
2016-11-11 10:48:33 +01:00
33942e6d52 Implement instrument fan-out options (group, track/bus) 2016-11-10 21:39:20 +01:00
b116a68a5c C++ implementation of fan_out_instrument.lua 2016-11-10 04:54:59 +01:00
b302f70265 Skip pin-management for MB channelstrip plugins 2016-09-15 15:32:45 +02:00
1d686ac978 Make name_button behave more like a Gtk::MenuToolButton
Make it popup its menu in attached mode, and on mouse down, but keep the
context menu behavior on right-click.
2016-08-18 11:52:22 +02:00
3ab6ff8be7 Make in/out buttons behave more like Gtk::MenuToolButton
Make them popup their menu as if attached rather than as a context menu.
2016-08-18 11:50:38 +02:00
b48e803cf6 Make the group button in MixerStrip behave like a dropdown
Since it mostly is a multiple-choice menu.
2016-08-17 01:46:11 +02:00
4093cf6b90 Make the trim knob on busses show only if there is audio
The trim knob has been designed to operate only on audio channels. If
the bus has none, hide the knob that would otherwise have no effect at
all.

Factor the trim control show/hide code out of MixerStrip::set_route(),
and also call that code in response to I/O changes in the route.
2016-07-24 13:51:11 +02:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
9389ee1e96 Better heuristics for guessing the primary type of an input or output
In order to choose which port name to display (if any) in the button,
MixerStrip::update_io_button() first chose a primary type for the input
or output. It was AUDIO in all cases, except if the route was a
MidiTrack where the primary type was MIDI.

In the latter case, it enabled the following code of update_io_button()
to show the MIDI sources feeding the MidiTrack rather than showing an
unhelpful dash.

But this simple heuristic has several shortcommings:
 - Going further, tracks and busses will probably loose strong types so
   the approach is not future-proof;
 - It doesn't take midi busses into account, yet there is no reason for
   them to be handled differently than midi tracks;
 - It falls short when the midi track contains a synthesiser and is
   meant to output audio.

Improve the heuristics by choosing the data type as follows:
 A) If there are connected audio ports, consider audio as primary type.
 B) Else, if there are connected midi ports, consider midi as primary type.
 C) If there are audio ports, consider audio as primary type.
 D) Else, if there are midi ports, consider midi as primary type.

These new heuristics give the same results for audio tracks and busses
(whose audio inputs have not been removed), and the same result for the
input of midi tracks (again, provided the inputs have not been tampered
with). It improves the situation for inputs of midi busses, and output
of midi tracks and busses, especially when synthesisers are in use.
2016-07-09 21:08:16 +02:00
35b4cb91d2 update_io_button: store input() or output() in a variable
This avoids repeating "if (for_input)" checks.
2016-07-09 21:08:16 +02:00
da7d7f9502 many changes associated with rationalizing selection flow 2016-07-06 13:39:10 -04:00
e4ba62e4c4 show first word of comment on track's comment-button 2016-06-21 18:18:54 +02:00
b5a134d73a fix comment-button highlight 2016-06-20 00:59:21 +02:00
30fd6ed4de mark mixer strip name label (button) as having occasional text
Sometimes it shows a track number, sometimes not, but this should never affect its size request
2016-06-14 11:48:50 -04:00
b5387804a4 remove commented line 2016-06-14 11:48:08 -04:00
3888b244a6 mark mixer strip width and hide buttons as square 2016-06-14 11:47:53 -04:00
0678d0ada1 use new ControlSlaveUI object in mixer strip 2016-06-09 13:12:09 -04:00
01812f53c3 use, or mostly use PresentationInfo for selection status of Routes.
Needs extension to Surfaces, replacing GuiSelectionChanged signal concept
2016-06-05 20:50:57 -04:00
518f7f9892 RouteUI connects to Route's PropertyChange signal; derived types implement route_property_changed() 2016-06-05 16:33:02 -04:00
2161c5d507 use new RouteGroup property names 2016-06-05 16:33:01 -04:00
c31435b474 RouteUI is now also derived from SessionHandlePtr but NOT AxisView. Fix initialization.
Only "most derived" classes can initialize virtual base classes (SessionHandlePtr)
2016-06-05 16:33:01 -04:00
384d05dd35 change AxisView color API to be virtual and implement per-type variants 2016-06-05 16:33:01 -04:00
171b70927a make AxisView::marked_for_display() be virtual so we can use the a Stripable's PresentationInfo hidden() status 2016-06-05 16:33:01 -04:00
8818e1887a there is no explicit "Remote Control ID" control anymore - all done by ordering in the GUI 2016-06-02 19:19:22 -04:00
0d999ea4ec remove un-used name_hbox widget from TimeAxisView 2016-06-01 21:57:43 -04:00
22cbc69074 only show "Pin Connections..." in mixer-strip if there are plugins 2016-06-01 22:43:40 +02:00
f513878c8a MSVC itself defines a class called CheckMenuItem - so make sure we know to use the one from Gtk 2016-06-01 14:30:29 +01:00
4b11bb4d15 no-op; change comment 2016-05-31 15:30:44 -04:00
760beab7fa use Slavable API in GUI 2016-05-31 15:30:41 -04:00
653ae4acd6 universal change in the design of the way Route/Track controls are designed and used. The controls now own their own state, rather than proxy for state in their owners.
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
2016-05-31 15:30:40 -04:00
91f8c0be54 use new API for control slave/master relationships 2016-05-31 15:30:40 -04:00
b34f949518 follow session track-number policy in mixer strip, as is done in the editor 2016-05-31 15:30:40 -04:00
04e26fe7e6 move VCA assignment up to Route level 2016-05-31 15:30:39 -04:00
dc9f579a8b add GUI support for slaving VCAs to other VCAs 2016-05-31 15:30:39 -04:00
9339a7b997 add solo/mute controls to VCAMasterStrip 2016-05-31 15:30:39 -04:00
7f244ce14d use VCAUpdateStatus to keep VCA button current 2016-05-31 15:30:39 -04:00
3be9d6dccc remove debug output 2016-05-31 15:30:39 -04:00
8ce39c891b change sort ordering model in mixer and editor
This allows correct reordering of the mixer "track_model" even
when non-route elements are present.

This isn't really utilized in the Editor at present because we do
not show VCAs there at all, but it will become important in the
future when we represent VCA automation there
2016-05-31 15:30:39 -04:00
75b327964b tweak mixer VCA button appearance and prepare for live updates to VCA state 2016-05-31 15:30:39 -04:00
d47dc72595 single button for VCA assignment, plus unassign now works 2016-05-31 15:30:38 -04:00
acaaa98bd0 start shaping up VCA assign process 2016-05-31 15:30:38 -04:00
4d14ae4e23 mostly restore VCA state on session loading.
This does not restore VCA assignments
2016-05-31 15:30:38 -04:00
33e56e58d7 initial part of vca assignment via context menu 2016-05-31 15:30:38 -04:00
089549acb6 add 4 harrison-style vca assign buttons to the mixer strip 2016-05-31 15:30:38 -04:00
ac7df69b49 rec-safe GUI 2016-05-24 21:30:33 +02:00
6605b52c17 centralize rec-en sensitivity & prepare for rec-safe 2016-05-24 03:01:27 +02:00
cc0abf4ef5 add route-ui pin-manager 2016-05-10 20:54:11 +02:00
3dc322fa66 fix 8f14f422e0, port_prefix already includes colon 2016-04-17 16:52:38 +02:00
8f14f422e0 unhardcode "Program Name" string length 2016-04-17 14:01:57 +02:00
6f4ccfcd3b hide strict-i/o UI for Mixbus 2016-04-15 14:53:18 +02:00
d739d2fd64 hide add/remove output buttons on mixer-strip. 2016-04-14 20:04:58 +02:00
bff4972e5b add mixer strip context menu to en/disable strict-i/o 2016-03-28 18:25:34 +02:00
b77236d4b4 fixing leaking tooltip string
Manually created version of PR #211
2016-02-26 14:36:51 -05:00
6991a07902 remove all trace of SAE from source code.
This had become incoherent over time, and posed a development hazard and burden going forward
2016-02-22 15:31:24 -05:00
dd32c05cda GainMeter(Base) now has an explicit gain control given to it 2016-01-25 11:47:44 -05:00
9e5b7db89f first compiling, mostly working version of group controls changes 2016-01-22 11:58:31 -05:00
5a766dc24d indicate monitor-state 2016-01-08 14:22:02 +01:00
559649c338 use config value to avoid race on session-setup. 2016-01-08 11:34:28 +01:00
ca6ee56347 kunterbunte Monitor-Sektion
reduce color diversity and clean up color definitions of
the monitor section: mute, solo: use mixer-colors, prefix all MS-colors
with "monitor section"
2016-01-01 13:28:47 +01:00
7edd521afe unhardcode "ardour:" port-prefix 2015-12-21 18:54:34 +01:00
ffde3968ec allow to show/hide Monitor Section 2015-12-19 17:42:36 +01:00
André Nusser
7a846b7e6d Make capitalization consistent and other minor spelling corrections. 2015-12-01 00:39:35 +01:00
778e656bd7 update editor-mixer frozen state - fixes #6689 2015-11-21 19:47:36 +01:00
cf8b9464c5 tweak selection code for mixer strip Duplicate func 2015-11-17 17:34:33 -06:00
6f955aa0bd add Duplicate action to track and mixer context menus 2015-11-17 16:55:11 -06:00
696b89b71a rework 8b80fe0, use std::string, not char* 2015-10-15 11:24:15 +02:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
9f2aba1451 mixer-strip name context-menu cleanup
patch thanks to chaot4
2015-09-27 21:45:40 +02:00
c829c10a74 band-aid for Glib::operator<<
it seems that g_locale_from_utf8() (called by <<) is not thread safe,
at least not on OSX.

glib error-code 1, Invalid byte sequence in conversion input
-> throws Glib::Error.

possible fix for #6435, route-creation is interrupted via catch(...)
2015-09-19 19:00:43 +02:00
1d42ed077e Use ARDOUR_UI_UTILS::set_tooltip rather than via ARDOUR_UI::set_tip
This removes the direct dependence on ARDOUR_UI/Gtk_UI for setting
tooltips. Removes inclusion of ardour_ui.h from 16 files.
2015-09-16 16:55:17 -04:00
6b019a4953 Move UIConfiguration Singleton into UIConfiguration header
This removes the direct dependence on ardour_ui.h from 39 files
2015-09-16 16:55:17 -04:00
45d487f16e Move ARDOUR_UI::ui_scale into UIConfiguration class 2015-09-16 16:55:17 -04:00
6cfceb8823 fix mixer-strip input button update 2015-08-23 19:50:04 +02:00
71595234bc indicate port-connections of non-track type
Previously a Midi-track with synth showed “-“ for the output
even if the audio output ports were connected. (only MIDI
connections are displayed on the button).
2015-07-02 10:03:21 +02:00
1d5c6104f5 replace old ArdourButton::Icon API with Gtkmm2ext. 2015-05-24 21:45:39 +02:00
db7d0c59b5 remove explicit VectorIcon Element 2015-05-24 20:28:24 +02:00
ff563d293e separate detent & zero-arc flags for knob 2015-04-25 16:59:33 +02:00
517211681e 0dBFS peak meter GUI 2015-04-25 06:46:56 +02:00
c43c3d3e08 more trim knob tweaks 2015-04-25 02:25:07 +02:00
50a0748c2b trim typo and details 2015-04-25 01:17:25 +02:00
e22d7c2e28 tweak trim-knob size (same height as midi-input) 2015-04-25 01:04:54 +02:00
de80782f05 add trim control to mixer-strip. 2015-04-24 22:37:03 +02:00
b38ab89d92 clean up GUI scaling 2015-04-22 21:40:43 +02:00
451450d3f8 scalable panners 2015-04-20 20:45:36 +02:00
494009a6e2 towards scaleable meter and mixer UI
somewhat hacky solution, but there's no good central point to
control this and get integer rounding/summing, is there?
2015-04-20 20:45:36 +02:00
edb9a24727 when building context menu for click on mixer strip, ensure clicked-on strip sets selection appropriately 2015-04-13 22:43:22 -04:00
d25e8f2233 update ArdourButton Icon API 2015-04-07 22:34:09 +02:00
c819449552 add explanatory comment 2015-04-06 20:14:37 -04:00
803853b4a4 rationalize incorrect design for removing tracks.
Still requires a way to make this work correctly from the mixer window
2015-04-06 17:56:23 -04:00
446baca43b renice mixer strip
Also speed up track creation(!). get_icon()’s
regexp file search takes a surprising long time.
2015-04-06 18:44:55 +02:00
c57d2627a2 and lock, too. 2015-04-05 02:06:03 +02:00
0c468dc379 add more contexts for SLA. 2015-04-05 00:44:03 +02:00
6d531b82e0 add context to single-letter translatable 2015-04-05 00:17:53 +02:00
22ca914f1b Revert "fix typo, list output bundles properly."
This reverts commit ba8b91679a.
2015-04-02 19:01:22 +02:00
d6574c9c40 remove duplicated calls to update solo/mute state from RouteUI descendants.
RouteUI::set_route() already does the right thing. Also remove RouteUI::mute_changed() since its
only role was to handle the mute change signal from a route, which boost::bind() makes unnecessary
since we can connect update_mute_display() directly.
2015-03-31 12:31:06 -04:00
nick_m
ca1856a09b Mixer visibility prefs changes teke effect "live". 2015-03-29 17:43:07 +11:00
d44273e8a4 make mixer strip “Add XXX Port” translatable 2015-03-24 02:57:25 +01:00
37a9ef0501 indicate MIDI port names (vs audio system ports) 2015-03-12 16:18:06 +01:00