| @@ -15,139 +15,6 @@ | |||||
| </property> | </property> | ||||
| <widget class="QWidget" name="centralwidget"> | <widget class="QWidget" name="centralwidget"> | ||||
| <layout class="QVBoxLayout" name="verticalLayout_5"> | <layout class="QVBoxLayout" name="verticalLayout_5"> | ||||
| <item> | |||||
| <widget class="QFrame" name="frame_transport"> | |||||
| <layout class="QHBoxLayout" name="horizontalLayout"> | |||||
| <property name="leftMargin"> | |||||
| <number>0</number> | |||||
| </property> | |||||
| <property name="rightMargin"> | |||||
| <number>0</number> | |||||
| </property> | |||||
| <property name="bottomMargin"> | |||||
| <number>0</number> | |||||
| </property> | |||||
| <item> | |||||
| <widget class="QLabel" name="label"> | |||||
| <property name="text"> | |||||
| <string>Transport Mode:</string> | |||||
| </property> | |||||
| <property name="alignment"> | |||||
| <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QComboBox" name="ch_transport"/> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="Line" name="line"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Vertical</enum> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QPushButton" name="b_transport_play"> | |||||
| <property name="maximumSize"> | |||||
| <size> | |||||
| <width>22</width> | |||||
| <height>22</height> | |||||
| </size> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string/> | |||||
| </property> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-playback-start.png</normaloff>:/16x16/media-playback-start.png</iconset> | |||||
| </property> | |||||
| <property name="checkable"> | |||||
| <bool>true</bool> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QPushButton" name="b_transport_stop"> | |||||
| <property name="maximumSize"> | |||||
| <size> | |||||
| <width>22</width> | |||||
| <height>22</height> | |||||
| </size> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string/> | |||||
| </property> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-playback-stop.png</normaloff>:/16x16/media-playback-stop.png</iconset> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QPushButton" name="b_transport_back"> | |||||
| <property name="maximumSize"> | |||||
| <size> | |||||
| <width>22</width> | |||||
| <height>22</height> | |||||
| </size> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string/> | |||||
| </property> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-seek-backward.png</normaloff>:/16x16/media-seek-backward.png</iconset> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QPushButton" name="b_transport_forward"> | |||||
| <property name="maximumSize"> | |||||
| <size> | |||||
| <width>22</width> | |||||
| <height>22</height> | |||||
| </size> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string/> | |||||
| </property> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-seek-forward.png</normaloff>:/16x16/media-seek-forward.png</iconset> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="Line" name="line_2"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Vertical</enum> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <widget class="QLabel" name="label_time"> | |||||
| <property name="text"> | |||||
| <string>TIME (TODO)</string> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | |||||
| <spacer name="horizontalSpacer"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| <property name="sizeHint" stdset="0"> | |||||
| <size> | |||||
| <width>40</width> | |||||
| <height>20</height> | |||||
| </size> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| </layout> | |||||
| </widget> | |||||
| </item> | |||||
| <item> | <item> | ||||
| <widget class="QSplitter" name="splitter"> | <widget class="QSplitter" name="splitter"> | ||||
| <property name="orientation"> | <property name="orientation"> | ||||
| @@ -336,7 +203,6 @@ | |||||
| <string>&Settings</string> | <string>&Settings</string> | ||||
| </property> | </property> | ||||
| <addaction name="act_settings_show_toolbar"/> | <addaction name="act_settings_show_toolbar"/> | ||||
| <addaction name="act_settings_show_transport"/> | |||||
| <addaction name="separator"/> | <addaction name="separator"/> | ||||
| <addaction name="act_settings_configure"/> | <addaction name="act_settings_configure"/> | ||||
| </widget> | </widget> | ||||
| @@ -361,9 +227,19 @@ | |||||
| <addaction name="act_canvas_print"/> | <addaction name="act_canvas_print"/> | ||||
| <addaction name="act_canvas_save_image"/> | <addaction name="act_canvas_save_image"/> | ||||
| </widget> | </widget> | ||||
| <widget class="QMenu" name="menu_Transport"> | |||||
| <property name="title"> | |||||
| <string>&Transport</string> | |||||
| </property> | |||||
| <addaction name="act_transport_play"/> | |||||
| <addaction name="act_transport_stop"/> | |||||
| <addaction name="act_transport_backwards"/> | |||||
| <addaction name="act_transport_forwards"/> | |||||
| </widget> | |||||
| <addaction name="menu_File"/> | <addaction name="menu_File"/> | ||||
| <addaction name="menu_Engine"/> | <addaction name="menu_Engine"/> | ||||
| <addaction name="menu_Plugin"/> | <addaction name="menu_Plugin"/> | ||||
| <addaction name="menu_Transport"/> | |||||
| <addaction name="menu_Canvas"/> | <addaction name="menu_Canvas"/> | ||||
| <addaction name="menu_Settings"/> | <addaction name="menu_Settings"/> | ||||
| <addaction name="menu_Help"/> | <addaction name="menu_Help"/> | ||||
| @@ -467,9 +343,6 @@ | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>&Remove All</string> | <string>&Remove All</string> | ||||
| </property> | </property> | ||||
| <property name="shortcut"> | |||||
| <string>Ctrl+Shift+R</string> | |||||
| </property> | |||||
| </action> | </action> | ||||
| <action name="act_help_about"> | <action name="act_help_about"> | ||||
| <property name="text"> | <property name="text"> | ||||
| @@ -649,6 +522,57 @@ | |||||
| <string>Ctrl+1</string> | <string>Ctrl+1</string> | ||||
| </property> | </property> | ||||
| </action> | </action> | ||||
| <action name="act_transport_play"> | |||||
| <property name="checkable"> | |||||
| <bool>true</bool> | |||||
| </property> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-playback-start.png</normaloff>:/16x16/media-playback-start.png</iconset> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string>&Play</string> | |||||
| </property> | |||||
| <property name="shortcut"> | |||||
| <string>Ctrl+Shift+P</string> | |||||
| </property> | |||||
| </action> | |||||
| <action name="act_transport_stop"> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-playback-stop.png</normaloff>:/16x16/media-playback-stop.png</iconset> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string>&Stop</string> | |||||
| </property> | |||||
| <property name="shortcut"> | |||||
| <string>Ctrl+Shift+X</string> | |||||
| </property> | |||||
| </action> | |||||
| <action name="act_transport_backwards"> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-seek-backward.png</normaloff>:/16x16/media-seek-backward.png</iconset> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string>&Backwards</string> | |||||
| </property> | |||||
| <property name="shortcut"> | |||||
| <string>Ctrl+Shift+B</string> | |||||
| </property> | |||||
| </action> | |||||
| <action name="act_transport_forwards"> | |||||
| <property name="icon"> | |||||
| <iconset resource="../resources.qrc"> | |||||
| <normaloff>:/16x16/media-seek-forward.png</normaloff>:/16x16/media-seek-forward.png</iconset> | |||||
| </property> | |||||
| <property name="text"> | |||||
| <string>&Forwards</string> | |||||
| </property> | |||||
| <property name="shortcut"> | |||||
| <string>Ctrl+Shift+F</string> | |||||
| </property> | |||||
| </action> | |||||
| </widget> | </widget> | ||||
| <customwidgets> | <customwidgets> | ||||
| <customwidget> | <customwidget> | ||||
| @@ -694,21 +618,5 @@ | |||||
| </hint> | </hint> | ||||
| </hints> | </hints> | ||||
| </connection> | </connection> | ||||
| <connection> | |||||
| <sender>act_settings_show_transport</sender> | |||||
| <signal>triggered(bool)</signal> | |||||
| <receiver>frame_transport</receiver> | |||||
| <slot>setVisible(bool)</slot> | |||||
| <hints> | |||||
| <hint type="sourcelabel"> | |||||
| <x>-1</x> | |||||
| <y>-1</y> | |||||
| </hint> | |||||
| <hint type="destinationlabel"> | |||||
| <x>377</x> | |||||
| <y>65</y> | |||||
| </hint> | |||||
| </hints> | |||||
| </connection> | |||||
| </connections> | </connections> | ||||
| </ui> | </ui> | ||||
| @@ -178,6 +178,7 @@ CARLA_EXPORT void carla_patchbay_refresh(); | |||||
| CARLA_EXPORT void carla_transport_play(); | CARLA_EXPORT void carla_transport_play(); | ||||
| CARLA_EXPORT void carla_transport_pause(); | CARLA_EXPORT void carla_transport_pause(); | ||||
| CARLA_EXPORT void carla_transport_relocate(uint32_t frames); | CARLA_EXPORT void carla_transport_relocate(uint32_t frames); | ||||
| CARLA_EXPORT uint64_t carla_get_current_transport_frame(); | |||||
| CARLA_EXPORT bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* name, const char* label, const void* extraPtr); | CARLA_EXPORT bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* name, const char* label, const void* extraPtr); | ||||
| CARLA_EXPORT bool carla_remove_plugin(unsigned int pluginId); | CARLA_EXPORT bool carla_remove_plugin(unsigned int pluginId); | ||||
| @@ -572,7 +572,7 @@ void carla_transport_play() | |||||
| CARLA_ASSERT(standalone.engine != nullptr); | CARLA_ASSERT(standalone.engine != nullptr); | ||||
| if (standalone.engine != nullptr) | if (standalone.engine != nullptr) | ||||
| return standalone.engine->transportPlay(); | |||||
| standalone.engine->transportPlay(); | |||||
| } | } | ||||
| void carla_transport_pause() | void carla_transport_pause() | ||||
| @@ -581,7 +581,7 @@ void carla_transport_pause() | |||||
| CARLA_ASSERT(standalone.engine != nullptr); | CARLA_ASSERT(standalone.engine != nullptr); | ||||
| if (standalone.engine != nullptr) | if (standalone.engine != nullptr) | ||||
| return standalone.engine->transportPause(); | |||||
| standalone.engine->transportPause(); | |||||
| } | } | ||||
| void carla_transport_relocate(uint32_t frames) | void carla_transport_relocate(uint32_t frames) | ||||
| @@ -590,7 +590,20 @@ void carla_transport_relocate(uint32_t frames) | |||||
| CARLA_ASSERT(standalone.engine != nullptr); | CARLA_ASSERT(standalone.engine != nullptr); | ||||
| if (standalone.engine != nullptr) | if (standalone.engine != nullptr) | ||||
| return standalone.engine->transportRelocate(frames); | |||||
| standalone.engine->transportRelocate(frames); | |||||
| } | |||||
| uint64_t carla_get_current_transport_frame() | |||||
| { | |||||
| CARLA_ASSERT(standalone.engine != nullptr); | |||||
| if (standalone.engine != nullptr) | |||||
| { | |||||
| const CarlaBackend::EngineTimeInfo& timeInfo(standalone.engine->getTimeInfo()); | |||||
| return timeInfo.frame; | |||||
| } | |||||
| return 0; | |||||
| } | } | ||||
| // ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -566,6 +566,7 @@ class CarlaMainW(QMainWindow): | |||||
| self.fInfoLabel = QLabel(self) | self.fInfoLabel = QLabel(self) | ||||
| self.fInfoLabel.setText("") | self.fInfoLabel.setText("") | ||||
| self.fInfoText = "" | |||||
| self.fDirModel = QFileSystemModel(self) | self.fDirModel = QFileSystemModel(self) | ||||
| self.fDirModel.setNameFilters(cString(Carla.host.get_supported_file_types()).split(";")) | self.fDirModel.setNameFilters(cString(Carla.host.get_supported_file_types()).split(";")) | ||||
| @@ -659,9 +660,10 @@ class CarlaMainW(QMainWindow): | |||||
| self.connect(self.ui.act_help_about, SIGNAL("triggered()"), SLOT("slot_aboutCarla()")) | self.connect(self.ui.act_help_about, SIGNAL("triggered()"), SLOT("slot_aboutCarla()")) | ||||
| self.connect(self.ui.act_help_about_qt, SIGNAL("triggered()"), app, SLOT("aboutQt()")) | self.connect(self.ui.act_help_about_qt, SIGNAL("triggered()"), app, SLOT("aboutQt()")) | ||||
| self.connect(self.ui.ch_transport, SIGNAL("currentIndexChanged(int)"), SLOT("slot_transportModeChanged(int)")) | |||||
| self.connect(self.ui.b_transport_play, SIGNAL("clicked(bool)"), SLOT("slot_transportPlayPause(bool)")) | |||||
| self.connect(self.ui.b_transport_stop, SIGNAL("clicked()"), SLOT("slot_transportStop()")) | |||||
| self.connect(self.ui.act_transport_play, SIGNAL("triggered(bool)"), SLOT("slot_transportPlayPause(bool)")) | |||||
| self.connect(self.ui.act_transport_stop, SIGNAL("triggered()"), SLOT("slot_transportStop()")) | |||||
| self.connect(self.ui.act_transport_backwards, SIGNAL("triggered()"), SLOT("slot_transportBackwards()")) | |||||
| self.connect(self.ui.act_transport_forwards, SIGNAL("triggered()"), SLOT("slot_transportForwards()")) | |||||
| self.connect(self.ui.graphicsView.horizontalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_horizontalScrollBarChanged(int)")) | self.connect(self.ui.graphicsView.horizontalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_horizontalScrollBarChanged(int)")) | ||||
| self.connect(self.ui.graphicsView.verticalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_verticalScrollBarChanged(int)")) | self.connect(self.ui.graphicsView.verticalScrollBar(), SIGNAL("valueChanged(int)"), SLOT("slot_verticalScrollBarChanged(int)")) | ||||
| @@ -969,23 +971,15 @@ class CarlaMainW(QMainWindow): | |||||
| else: | else: | ||||
| maxCount = MAX_DEFAULT_PLUGINS | maxCount = MAX_DEFAULT_PLUGINS | ||||
| self.ui.ch_transport.blockSignals(True) | |||||
| self.ui.ch_transport.addItem(self.tr("Internal")) | |||||
| if audioDriver == "JACK": | |||||
| self.ui.ch_transport.addItem(self.tr("JACK")) | |||||
| elif transportMode == TRANSPORT_MODE_JACK: | |||||
| if transportMode == TRANSPORT_MODE_JACK and audioDriver != "JACK": | |||||
| transportMode = TRANSPORT_MODE_INTERNAL | transportMode = TRANSPORT_MODE_INTERNAL | ||||
| self.ui.ch_transport.setCurrentIndex(transportMode) | |||||
| self.ui.ch_transport.blockSignals(False) | |||||
| for x in range(maxCount): | for x in range(maxCount): | ||||
| self.fPluginList.append(None) | self.fPluginList.append(None) | ||||
| Carla.host.set_engine_option(OPTION_TRANSPORT_MODE, transportMode, "") | Carla.host.set_engine_option(OPTION_TRANSPORT_MODE, transportMode, "") | ||||
| # Peaks | |||||
| # Peaks and TimeInfo | |||||
| self.fIdleTimerFast = self.startTimer(self.fSavedSettings["Main/RefreshInterval"]) | self.fIdleTimerFast = self.startTimer(self.fSavedSettings["Main/RefreshInterval"]) | ||||
| # LEDs and edit dialog parameters | # LEDs and edit dialog parameters | ||||
| self.fIdleTimerSlow = self.startTimer(self.fSavedSettings["Main/RefreshInterval"]*2) | self.fIdleTimerSlow = self.startTimer(self.fSavedSettings["Main/RefreshInterval"]*2) | ||||
| @@ -1010,12 +1004,6 @@ class CarlaMainW(QMainWindow): | |||||
| self.killTimer(self.fIdleTimerFast) | self.killTimer(self.fIdleTimerFast) | ||||
| self.killTimer(self.fIdleTimerSlow) | self.killTimer(self.fIdleTimerSlow) | ||||
| settings = QSettings() | |||||
| settings.setValue("Engine/TransportMode", self.ui.ch_transport.currentIndex()) | |||||
| self.ui.ch_transport.blockSignals(True) | |||||
| self.ui.ch_transport.clear() | |||||
| self.ui.ch_transport.blockSignals(False) | |||||
| patchcanvas.clear() | patchcanvas.clear() | ||||
| def loadProject(self, filename): | def loadProject(self, filename): | ||||
| @@ -1119,14 +1107,14 @@ class CarlaMainW(QMainWindow): | |||||
| self.ui.act_engine_start.setEnabled(not check) | self.ui.act_engine_start.setEnabled(not check) | ||||
| self.ui.act_engine_stop.setEnabled(check) | self.ui.act_engine_stop.setEnabled(check) | ||||
| self.ui.act_engine_configure.setEnabled(not check) | self.ui.act_engine_configure.setEnabled(not check) | ||||
| self.ui.frame_transport.setEnabled(check) | |||||
| if check: | if check: | ||||
| bufferSize = Carla.host.get_buffer_size() | bufferSize = Carla.host.get_buffer_size() | ||||
| sampleRate = Carla.host.get_sample_rate() | sampleRate = Carla.host.get_sample_rate() | ||||
| self.fInfoLabel.setText("Engine running, using %g sample rate and %i buffer size" % (sampleRate, bufferSize)) | |||||
| else: | |||||
| self.fInfoLabel.setText("Engine failed to start") | |||||
| self.fInfoText = "Engine running | SampleRate: %g | BufferSize: %i" % (sampleRate, bufferSize) | |||||
| self.fInfoLabel.setText(self.fInfoText) | |||||
| self.menuTransport(check) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_engineStop(self): | def slot_engineStop(self): | ||||
| @@ -1135,13 +1123,13 @@ class CarlaMainW(QMainWindow): | |||||
| self.ui.act_file_open.setEnabled(check) | self.ui.act_file_open.setEnabled(check) | ||||
| self.ui.act_engine_start.setEnabled(not check) | self.ui.act_engine_start.setEnabled(not check) | ||||
| self.ui.act_engine_stop.setEnabled(check) | self.ui.act_engine_stop.setEnabled(check) | ||||
| self.ui.frame_transport.setEnabled(check) | |||||
| if check: | |||||
| self.fInfoLabel.setText("Engine failed to stop, still running...") | |||||
| else: | |||||
| if not check: | |||||
| self.fInfoText = "" | |||||
| self.fInfoLabel.setText("Engine stopped") | self.fInfoLabel.setText("Engine stopped") | ||||
| self.menuTransport(check) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_pluginAdd(self): | def slot_pluginAdd(self): | ||||
| dialog = PluginDatabaseW(self) | dialog = PluginDatabaseW(self) | ||||
| @@ -1157,26 +1145,67 @@ class CarlaMainW(QMainWindow): | |||||
| def slot_pluginRemoveAll(self): | def slot_pluginRemoveAll(self): | ||||
| self.removeAllPlugins() | self.removeAllPlugins() | ||||
| self.connect(self.ui.ch_transport, SIGNAL("currentIndexChanged(int)"), SLOT("(int)")) | |||||
| self.connect(self.ui.b_transport_play, SIGNAL("clicked(bool)"), SLOT("(bool)")) | |||||
| self.connect(self.ui.b_transport_stop, SIGNAL("clicked()"), SLOT("()")) | |||||
| def menuTransport(self, enabled): | |||||
| self.ui.act_transport_play.setEnabled(enabled) | |||||
| self.ui.act_transport_stop.setEnabled(enabled) | |||||
| self.ui.act_transport_backwards.setEnabled(enabled) | |||||
| self.ui.act_transport_forwards.setEnabled(enabled) | |||||
| self.ui.menu_Transport.setEnabled(enabled) | |||||
| @pyqtSlot(int) | |||||
| def slot_transportModeChanged(self, newMode): | |||||
| Carla.host.set_engine_option(OPTION_TRANSPORT_MODE, newMode, "") | |||||
| def refreshTransport(self): | |||||
| if not self.fEngineStarted: | |||||
| return | |||||
| time = Carla.host.get_current_transport_frame() / int(Carla.host.get_sample_rate()) | |||||
| secs = time % 60 | |||||
| mins = (time / 60) % 60 | |||||
| hrs = (time / 3600) % 60 | |||||
| textTransport = "Transport %s, at %02i:%02i:%02i" % ("<TODO>", hrs, mins, secs) | |||||
| self.fInfoLabel.setText("%s | %s" % (self.fInfoText, textTransport)) | |||||
| @pyqtSlot(bool) | @pyqtSlot(bool) | ||||
| def slot_transportPlayPause(self, toggled): | def slot_transportPlayPause(self, toggled): | ||||
| if not self.fEngineStarted: | |||||
| return | |||||
| if toggled: | if toggled: | ||||
| Carla.host.transport_play() | Carla.host.transport_play() | ||||
| else: | else: | ||||
| Carla.host.transport_pause() | Carla.host.transport_pause() | ||||
| self.refreshTransport() | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_transportStop(self): | def slot_transportStop(self): | ||||
| if not self.fEngineStarted: | |||||
| return | |||||
| Carla.host.transport_pause() | Carla.host.transport_pause() | ||||
| Carla.host.transport_relocate(0) | Carla.host.transport_relocate(0) | ||||
| self.refreshTransport() | |||||
| @pyqtSlot() | |||||
| def slot_transportBackwards(self): | |||||
| if not self.fEngineStarted: | |||||
| return | |||||
| newFrame = Carla.host.get_current_transport_frame() - 100000 | |||||
| if newFrame < 0: | |||||
| newFrame = 0 | |||||
| Carla.host.transport_relocate(newFrame) | |||||
| @pyqtSlot() | |||||
| def slot_transportForwards(self): | |||||
| if not self.fEngineStarted: | |||||
| return | |||||
| newFrame = Carla.host.get_current_transport_frame() + 100000 | |||||
| Carla.host.transport_relocate(newFrame) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_aboutCarla(self): | def slot_aboutCarla(self): | ||||
| CarlaAboutW(self).exec_() | CarlaAboutW(self).exec_() | ||||
| @@ -1553,7 +1582,6 @@ class CarlaMainW(QMainWindow): | |||||
| settings.setValue("Geometry", self.saveGeometry()) | settings.setValue("Geometry", self.saveGeometry()) | ||||
| settings.setValue("SplitterState", self.ui.splitter.saveState()) | settings.setValue("SplitterState", self.ui.splitter.saveState()) | ||||
| settings.setValue("ShowToolbar", self.ui.toolBar.isVisible()) | settings.setValue("ShowToolbar", self.ui.toolBar.isVisible()) | ||||
| #settings.setValue("ShowTransport", self.ui.frame_transport.isVisible()) | |||||
| settings.setValue("HorizontalScrollBarValue", self.ui.graphicsView.horizontalScrollBar().value()) | settings.setValue("HorizontalScrollBarValue", self.ui.graphicsView.horizontalScrollBar().value()) | ||||
| settings.setValue("VerticalScrollBarValue", self.ui.graphicsView.verticalScrollBar().value()) | settings.setValue("VerticalScrollBarValue", self.ui.graphicsView.verticalScrollBar().value()) | ||||
| @@ -1567,11 +1595,6 @@ class CarlaMainW(QMainWindow): | |||||
| self.ui.act_settings_show_toolbar.setChecked(showToolbar) | self.ui.act_settings_show_toolbar.setChecked(showToolbar) | ||||
| self.ui.toolBar.setVisible(showToolbar) | self.ui.toolBar.setVisible(showToolbar) | ||||
| #showTransport = settings.value("ShowTransport", True, type=bool) | |||||
| #self.ui.act_settings_show_transport.setChecked(showTransport) | |||||
| #self.ui.frame_transport.setVisible(showTransport) | |||||
| self.ui.frame_transport.setVisible(False) | |||||
| if settings.contains("SplitterState"): | if settings.contains("SplitterState"): | ||||
| self.ui.splitter.restoreState(settings.value("SplitterState", "")) | self.ui.splitter.restoreState(settings.value("SplitterState", "")) | ||||
| else: | else: | ||||
| @@ -1643,6 +1666,8 @@ class CarlaMainW(QMainWindow): | |||||
| break | break | ||||
| pwidget.idleFast() | pwidget.idleFast() | ||||
| self.refreshTransport() | |||||
| elif event.timerId() == self.fIdleTimerSlow: | elif event.timerId() == self.fIdleTimerSlow: | ||||
| for pwidget in self.fPluginList: | for pwidget in self.fPluginList: | ||||
| if pwidget is None: | if pwidget is None: | ||||
| @@ -212,6 +212,9 @@ class Host(object): | |||||
| self.lib.carla_transport_relocate.argtypes = [c_uint32] | self.lib.carla_transport_relocate.argtypes = [c_uint32] | ||||
| self.lib.carla_transport_relocate.restype = None | self.lib.carla_transport_relocate.restype = None | ||||
| self.lib.carla_get_current_transport_frame.argtypes = None | |||||
| self.lib.carla_get_current_transport_frame.restype = c_uint64 | |||||
| self.lib.carla_add_plugin.argtypes = [c_enum, c_enum, c_char_p, c_char_p, c_char_p, c_void_p] | self.lib.carla_add_plugin.argtypes = [c_enum, c_enum, c_char_p, c_char_p, c_char_p, c_void_p] | ||||
| self.lib.carla_add_plugin.restype = c_bool | self.lib.carla_add_plugin.restype = c_bool | ||||
| @@ -443,6 +446,9 @@ class Host(object): | |||||
| def transport_relocate(self, frames): | def transport_relocate(self, frames): | ||||
| self.lib.carla_transport_relocate(frames) | self.lib.carla_transport_relocate(frames) | ||||
| def get_current_transport_frame(self): | |||||
| return self.lib.carla_get_current_transport_frame() | |||||
| def add_plugin(self, btype, ptype, filename, name, label, extraStuff): | def add_plugin(self, btype, ptype, filename, name, label, extraStuff): | ||||
| cfilename = filename.encode("utf-8") if filename else c_nullptr | cfilename = filename.encode("utf-8") if filename else c_nullptr | ||||
| cname = name.encode("utf-8") if name else c_nullptr | cname = name.encode("utf-8") if name else c_nullptr | ||||