Added addContentLayout(QLayout *) method to SideBarWidget in order to
allow subclasses to add whole layouts as well.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Implemented context menu for ResourcesBrowser with various actions
inside depending on selected item.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Encapsulate conversion from a QModelIndex to a ResourcesTreeItem
or a ResourcesItem into static methods.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added isLocalResource() method which returns whether it belongs to a
local ResourcesProvider or not.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added isLocal() method for returning whether according provider class
provides local resources or not (will allow a download option for
non-local resources later).
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Added a new class ResourcesBrowser which represents a complete view
for browsing all available resources. It only allows filtering at the
moment but more features will follow soon.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Automatically select either controller or key group box in
MidiControlListener new action dialog if the user changes something
inside the group.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
It's not a good idea to have a separate constant determining the number
of items in an enumeration because you can easily get inconsistencies.
Use the last element of enumeration as NumActions constant instead.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
MidiControlListener's toggleLoop action makes the song object emit a
loopPointsChanged signal, which timeLine connects to and enables or
disables the loop points accordingly.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
LMMS didn't compile successfully if individual paths to headers of
each Qt module were not added to the list of include directories to be
searched by the pre-processor. However it has to work this way,
therefore I changed lines like
#include <QGraphicsScene>
to
#include <QtGui/QGraphicsScene>
Please care in the future!
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
The MIDI device(s) where the MidiControlListener can receive events from
can now be configured in the setup dialog.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Moved the code to unsubscribe all readable and/or writeable ports to own
methods and thus made them publically available to avoid duplicate code.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Changed MidiControlListener to use the built-in API to save and restore
the midiPort configuration instead and removed the old iterator.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Introduces a new class, DummyMidiEventProcessor, that does nothing but
update the baseNoteModel upon keypress.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Adds GUI elements to the global setup dialog to configure remote
controlling of LMMS via MIDI. The GUI is not yet fully functional,
though.
Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
Moved baseNoteModel from InstrumentTrack class to MidiEventProcessor
class in order to make Piano class independent from InstrumentTrack
class (so it can be used by other classes as well).
Furthermore did various cleanups and coding style improvements.
So far the type and basedir properties were saved as numbers (as they
are defined in internal enumeration). This is bad style so these
properties are now translated into a human-readable string when saving
and back to internal enumeration type when loading.
Added a new LCD spinbox which allows to control the range of the pitch
knob. This way it's possible to extend the range of the pitch knob up
to 24 semitones in each direction.
LV2 core was not compiled conditionally into LMMS binary so compilation
failed when building without LV2 support. Furthermore added
compatibility code for SLV2 <= 0.6.2.
MidiControlListener is MidiEventProcessor that listens for specific
MIDI events in order to control LMMS' transportation (currently only
start/stop). Can be advanced later to control other things in LMMS.
Allows you to record automation by arming an automatable model
and then recording with the RecordAndPlay button.
Known bugs:
* when you record and there is already an auto clip, it repeats it
* it freezes when you try to do it with the Volume or Panning slider
* crashes when you try to do it with a solo/mute button
When closing a InstrumentTrackWindow save its position so it can be
restored later when showing it. Fixes windows always popping up
somewhere else when toggling instrument track button repeatedly.
This patch enables the usage of PC keyboard for playing instrument piano
or piano roll on OS X by evaluating nativeVirtualKey rather than
nativeScanCode.
Up to now there were insufficient checks whether the remote plugin
has died and so the result usually has been a complete lock-up of LMMS
(especially when using buggy VST plugins or similiar). By adding
according checks to remotePlugin::lock() and remotePlugin::unlock()
as well as remotePluginBase::waitForMessage() those lock-ups are gone.
This commit fixes lockup of the whole audio engine as soon as LMMS'
JACK backend got zombified due to longer delays (e.g. when audio engine
is blocked while loading a project). Restart JACK backend in such cases
and show an according message to the user.
Furthermore this commit includes various cleanups and improvements.
Due to optimizations in the graphics subsystem of Qt 4.5
songEditor::paintEvent() didn't get called regularly anymore and thus
the range of the horizontal scrollbar didn't get updated at all.
This commit makes the GUI track all changes related to the length of
the song.
This commit ensures that all defined data types in include/lmms_basics.h are
suffxed with "_t" to keep consistency as well as to fix issues on systems
with older STL/libstdc++.