Browse Source

Catia almost finished now, only missing JACK2 rename callback

tags/v0.9.0
falkTX 13 years ago
parent
commit
696685ba4b
5 changed files with 171 additions and 225 deletions
  1. +1
    -1
      src/catarina.py
  2. +17
    -31
      src/catia.py
  3. +7
    -2
      src/shared.py
  4. +133
    -190
      src/shared_jack.py
  5. +13
    -1
      src/ui/catia.ui

+ 1
- 1
src/catarina.py View File

@@ -863,7 +863,7 @@ class CatarinaMainW(QMainWindow, ui_catarina.Ui_CatarinaMainW):
elif (tag == "data"): elif (tag == "data"):
group_data = text.split(":") group_data = text.split(":")
if (len(group_data) == 7 and group_data[0].isdigit() and group_data[1].isdigit() and group_data[2].isdigit() and if (len(group_data) == 7 and group_data[0].isdigit() and group_data[1].isdigit() and group_data[2].isdigit() and
is_number(group_data[3]) and is_number(group_data[4]) and is_number(group_data[5]) and is_number(group_data[6])):
isNumber(group_data[3]) and isNumber(group_data[4]) and isNumber(group_data[5]) and isNumber(group_data[6])):
group_obj = [None, None, None, None] group_obj = [None, None, None, None]
group_obj[iGroupId] = int(group_data[0]) group_obj[iGroupId] = int(group_data[0])
group_obj[iGroupName] = group_name group_obj[iGroupName] = group_name


+ 17
- 31
src/catia.py View File

@@ -76,8 +76,6 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
self.m_xruns = 0 self.m_xruns = 0
self.m_buffer_size = 0 self.m_buffer_size = 0
self.m_sample_rate = 0 self.m_sample_rate = 0
self.m_last_buffer_size = 0
self.m_last_sample_rate = 0
self.m_next_sample_rate = 0 self.m_next_sample_rate = 0


self.m_last_bpm = None self.m_last_bpm = None
@@ -275,17 +273,22 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
"<tr><td align='right'><b>Port Latency:</b></td><td>&nbsp;%s</td></tr>" "<tr><td align='right'><b>Port Latency:</b></td><td>&nbsp;%s</td></tr>"
"<tr><td align='right'><b>Total Port Latency:</b></td><td>&nbsp;%s</td></tr>" "<tr><td align='right'><b>Total Port Latency:</b></td><td>&nbsp;%s</td></tr>"
"</table>" "</table>"
% (group_name, port_short_name, port_nameR, alias1text, alias1text, flags_text, type_text, latency_text, latency_total_text))
% (group_name, port_short_name, port_nameR, alias1text, alias2text, flags_text, type_text, latency_text, latency_total_text))


QMessageBox.information(self, self.tr("Port Information"), info) QMessageBox.information(self, self.tr("Port Information"), info)


elif (action == patchcanvas.ACTION_PORT_RENAME): elif (action == patchcanvas.ACTION_PORT_RENAME):
port_id = value1
new_name = value_str
port_id = value1
port_short_name = unicode2ascii(value_str)


for port in self.m_port_list: for port in self.m_port_list:
if (port[iPortId] == port_id): if (port[iPortId] == port_id):
port_nameR = port[iPortNameR] port_nameR = port[iPortNameR]
if (port_nameR.split(":", 1)[0] == a2j_client_name):
a2j_split = port_nameR.split(":", 3)
port_name = "%s:%s: %s" % (a2j_split[0], a2j_split[1], port_short_name)
else:
port_name = "%s:%s" % (port[iPortGroupName], port_short_name)
break break
else: else:
return return
@@ -304,12 +307,12 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
elif (aliases[0] == 1 and self.m_savedSettings["Main/JackPortAlias"] == 1): elif (aliases[0] == 1 and self.m_savedSettings["Main/JackPortAlias"] == 1):
jacklib.port_unset_alias(port_ptr, aliases[1]) jacklib.port_unset_alias(port_ptr, aliases[1])


elif (aliases[0] == 0 and self.m_savedSettings["Main/JackPortAlias"] == 2):
if (aliases[0] == 0 and self.m_savedSettings["Main/JackPortAlias"] == 2):
# If 2nd alias is enabled and port had no previous aliases, set the 1st alias now # If 2nd alias is enabled and port had no previous aliases, set the 1st alias now
jacklib.port_set_alias(port_ptr, new_name)
jacklib.port_set_alias(port_ptr, port_name)


if (jacklib.port_set_alias(port_ptr, new_name) == 0):
patchcanvas.renamePort(port_id, new_name)
if (jacklib.port_set_alias(port_ptr, port_name) == 0):
patchcanvas.renamePort(port_id, port_short_name)


elif (action == patchcanvas.ACTION_PORTS_CONNECT): elif (action == patchcanvas.ACTION_PORTS_CONNECT):
port_a_id = value1 port_a_id = value1
@@ -474,7 +477,6 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
port_id = self.m_last_port_id port_id = self.m_last_port_id
group_id = -1 group_id = -1


# Use the real port_name on m_port_list
port_nameR = port_name port_nameR = port_name


alias_n = self.m_savedSettings["Main/JackPortAlias"] alias_n = self.m_savedSettings["Main/JackPortAlias"]
@@ -486,11 +488,7 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
port_name = aliases[1] port_name = aliases[1]


port_flags = jacklib.port_flags(port_ptr) port_flags = jacklib.port_flags(port_ptr)

if (":" in port_name):
group_name = port_name.split(":")[0]
else:
group_name = port_nameR.split(":")[0]
group_name = port_name.split(":", 1)[0]


if (port_flags & jacklib.JackPortIsInput): if (port_flags & jacklib.JackPortIsInput):
port_mode = patchcanvas.PORT_MODE_INPUT port_mode = patchcanvas.PORT_MODE_INPUT
@@ -501,9 +499,8 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):


if (group_name == a2j_client_name): if (group_name == a2j_client_name):
haveA2J = True haveA2J = True
port_name = str(jacklib.port_short_name(port_ptr), encoding="ascii")
port_type = patchcanvas.PORT_TYPE_MIDI_A2J port_type = patchcanvas.PORT_TYPE_MIDI_A2J
group_name = port_name.split(" [", 1)[0]
group_name = port_name.replace("%s:" % (a2j_client_name), "", 1).split(" [", 1)[0]
port_short_name = port_name.split("): ", 1)[1] port_short_name = port_name.split("): ", 1)[1]


else: else:
@@ -519,17 +516,6 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
port_type = patchcanvas.PORT_TYPE_NULL port_type = patchcanvas.PORT_TYPE_NULL


for group in self.m_group_list: for group in self.m_group_list:
#if (haveA2J):
#if (" VST" in group_name and group_name[0].isdigit()):
#group_name = group_name.replace(group_name[0], "", 1) # <- TESTING (useful for vsthost/dssi-vst)

#if (group_name.lower() == group[1].lower() or # <- TESTING (useful for LMMS)
#group_name.split(" ")[0].lower() == group[1].split(" ")[0].lower() or # <- TESTING (useful for Renoise and Loomer plugins)
#"vst_"+group_name.rsplit(" ",1)[0].replace(" ","").lower() == group[1] # <- TESTING (useful for vsthost/dssi-vst)
#):
#group_id = group[0]
#break

if (group[iGroupName] == group_name): if (group[iGroupName] == group_name):
group_id = group[iGroupId] group_id = group[iGroupId]
break break
@@ -681,8 +667,8 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
self.pb_dsp_load.setMaximum(0) self.pb_dsp_load.setMaximum(0)
self.pb_dsp_load.update() self.pb_dsp_load.update()


#if (self.next_sample_rate):
#jack_sample_rate(self, self.next_sample_rate)
if (self.m_next_sample_rate):
jack_sample_rate(self, self.m_next_sample_rate)


patchcanvas.clear() patchcanvas.clear()


@@ -915,7 +901,7 @@ class CatiaMainW(QMainWindow, ui_catia.Ui_CatiaMainW):
self.act_settings_show_statusbar.setChecked(show_statusbar) self.act_settings_show_statusbar.setChecked(show_statusbar)
self.frame_statusbar.setVisible(show_statusbar) self.frame_statusbar.setVisible(show_statusbar)


transport_set_view(self, self.settings.value("TransportView", TRANSPORT_VIEW_HMS, type=int))
setTransportView(self, self.settings.value("TransportView", TRANSPORT_VIEW_HMS, type=int))


self.m_savedSettings = { self.m_savedSettings = {
"Main/RefreshInterval": self.settings.value("Main/RefreshInterval", 100, type=int), "Main/RefreshInterval": self.settings.value("Main/RefreshInterval", 100, type=int),


+ 7
- 2
src/shared.py View File

@@ -18,6 +18,7 @@


# Imports (Global) # Imports (Global)
import os, sys import os, sys
from unicodedata import normalize
from PyQt4.QtCore import qWarning, SIGNAL, SLOT from PyQt4.QtCore import qWarning, SIGNAL, SLOT
from PyQt4.QtGui import QIcon, QMessageBox, QFileDialog from PyQt4.QtGui import QIcon, QMessageBox, QFileDialog


@@ -155,8 +156,8 @@ MIDI_CC_LIST = (
"0x5F FX 5 Depth [Phaser]" "0x5F FX 5 Depth [Phaser]"
) )


# Check if a string is a number (floats support)
def is_number(string):
# Check if a string is a number (float support)
def isNumber(string):
if (string): if (string):
if (string.startswith("-")): if (string.startswith("-")):
string = string.replace("-", "", 1) string = string.replace("-", "", 1)
@@ -179,6 +180,10 @@ def toList(value):
else: else:
return value return value


# Remove/convert non-ascii chars from a string
def unicode2ascii(string):
return normalize('NFKD', string).encode("ascii", "ignore").decode("utf-8")

# Get Icon from user theme, using our own as backup (Oxygen) # Get Icon from user theme, using our own as backup (Oxygen)
def getIcon(icon, size=16): def getIcon(icon, size=16):
return QIcon.fromTheme(icon, QIcon(":/%ix%i/%s.png" % (size, size, icon))) return QIcon.fromTheme(icon, QIcon(":/%ix%i/%s.png" % (size, size, icon)))


+ 133
- 190
src/shared_jack.py View File

@@ -90,93 +90,44 @@ jack.client = None
# ------------------------------------------------------------- # -------------------------------------------------------------
# Property change calls # Property change calls


#def jack_buffer_size(self, buffer_size):
#if (buffer_size != self.buffer_size):
#if (jack.client):
#jacklib.set_buffer_size(jack.client, buffer_size)
#else:
#jacksettings.setBufferSize(buffer_size)
def jack_buffer_size(self, buffer_size):
if (self.m_buffer_size != buffer_size):
if (jack.client):
failed = bool(jacklib.set_buffer_size(jack.client, buffer_size) != 0)
else:
failed = bool(jacksettings.setBufferSize(buffer_size))


#else:
## Make GUIs show previous value
#if ("setBufferSize" in dir(self)):
#QTimer.singleShot(100, lambda bf=buffer_size: self.setBufferSize(bf))
#else:
#QTimer.singleShot(100, lambda parent=self, bf=buffer_size: setBufferSize(parent, bf))
if (failed):
print("Failed to change buffer-size as %i, reset to %i" % (buffer_size, self.m_buffer_size))
setBufferSize(self, self.m_buffer_size, True)


#def jack_sample_rate(self, sample_rate):
#if (jack.client):
#setSampleRate(self, sample_rate, True)
#else:
#jacksettings.setSampleRate(sample_rate)
#setSampleRate(self, sample_rate)
def jack_sample_rate(self, sample_rate):
if (jack.client):
setSampleRate(self, sample_rate, True)
else:
if (jacksettings.setSampleRate(sample_rate)):
setSampleRate(self, sample_rate)


#def jack_buffer_size_cb(self, text):
#if (text.isEmpty()): return
#jack_buffer_size(self, int(QStringStr(text).replace("*","")))
@pyqtSlot(str)
def slot_jackBufferSize_ComboBox(self, text):
if (not text or text.isdigit() == False):
return
jack_buffer_size(self, int(text))


#def jack_buffer_size_m(self, buffer_size):
#jack_buffer_size(self, buffer_size)
@pyqtSlot(int)
def slot_jackBufferSize_Menu(self, buffer_size):
jack_buffer_size(self, buffer_size)


#def jack_sample_rate_cb(self, text):
#if (text.isEmpty()): return
#jack_sample_rate(self, int(QStringStr(text).replace("*","")))
@pyqtSlot(str)
def slot_jackSampleRate_ComboBox(self, text):
if (not text or text.isdigit() == False):
return
jack_sample_rate(self, int(text))


# ------------------------------------------------------------- # -------------------------------------------------------------
# Transport calls # Transport calls


#def transport_playpause(self, play):
#if (not jack.client): return
#if (play):
#jacklib.transport_start(jack.client)
#else:
#jacklib.transport_stop(jack.client)
#refreshTransport(self)

#def transport_stop(self):
#if (not jack.client): return
#jacklib.transport_stop(jack.client)
#jacklib.transport_locate(jack.client, 0)
#refreshTransport(self)

#def transport_backwards(self):
#if (not jack.client): return
#new_frame = int(jacklib.get_current_transport_frame(jack.client))-100000
#if (new_frame < 0): new_frame = 0
#jacklib.transport_locate(jack.client, new_frame)

#def transport_forwards(self):
#if (not jack.client): return
#new_frame = int(jacklib.get_current_transport_frame(jack.client))+100000
#jacklib.transport_locate(jack.client, new_frame)

#def transport_view_menu(self):
#menu = QMenu(self)
#act_t_hms = menu.addAction("Hours:Minutes:Seconds")
#act_t_bbt = menu.addAction("Beat:Bar:Tick")
#act_t_fr = menu.addAction("Frames")

#act_t_hms.setCheckable(True)
#act_t_bbt.setCheckable(True)
#act_t_fr.setCheckable(True)

#if (self.selected_transport_view == TRANSPORT_VIEW_HMS):
#act_t_hms.setChecked(True)
#elif (self.selected_transport_view == TRANSPORT_VIEW_BBT):
#act_t_bbt.setChecked(True)
#elif (self.selected_transport_view == TRANSPORT_VIEW_FRAMES):
#act_t_fr.setChecked(True)

#act_selected = menu.exec_(QCursor().pos())

#if (act_selected == act_t_hms):
#transport_set_view(self, TRANSPORT_VIEW_HMS)
#elif (act_selected == act_t_bbt):
#transport_set_view(self, TRANSPORT_VIEW_BBT)
#elif (act_selected == act_t_fr):
#transport_set_view(self, TRANSPORT_VIEW_FRAMES)

def transport_set_view(self, view):
def setTransportView(self, view):
if (view == TRANSPORT_VIEW_HMS): if (view == TRANSPORT_VIEW_HMS):
self.m_selected_transport_view = TRANSPORT_VIEW_HMS self.m_selected_transport_view = TRANSPORT_VIEW_HMS
self.label_time.setMinimumWidth(QFontMetrics(self.label_time.font()).width("00:00:00")+3) self.label_time.setMinimumWidth(QFontMetrics(self.label_time.font()).width("00:00:00")+3)
@@ -189,50 +140,64 @@ def transport_set_view(self, view):
else: else:
self.m_selected_transport_view = None self.m_selected_transport_view = None


#def transport_bpm_set(self, bpm):
#if (not jack.client): return
#if (self.last_bpm != bpm):
#pos = jacklib.jack_position_t
#pos.valid = 0
#state = jacklib.transport_query(jack.client, pos)

#pos.beats_per_minute = bpm

#if (state > jacklib.TransportStopped):
#pos.frame += self.buffer_size
@pyqtSlot(bool)
def slot_transportPlayPause(self, play):
if (not jack.client): return
if (play):
jacklib.transport_start(jack.client)
else:
jacklib.transport_stop(jack.client)
refreshTransport(self)


#if (not pos.valid & jacklib.PositionBBT):
#pos.bar = 1
#pos.beat = 1
#pos.tick = 0
#pos.valid = jacklib.PositionBBT
#QTimer.singleShot(self.buffer_size, transport_fix)
@pyqtSlot()
def slot_transportStop(self):
if (not jack.client): return
jacklib.transport_stop(jack.client)
jacklib.transport_locate(jack.client, 0)
refreshTransport(self)


#jacklib.transport_reposition(jack.client, pos)
@pyqtSlot()
def slot_transportBackwards(self):
if (not jack.client): return
new_frame = jacklib.get_current_transport_frame(jack.client)-100000
if (new_frame < 0): new_frame = 0
jacklib.transport_locate(jack.client, new_frame)


#self.last_bpm = bpm
@pyqtSlot()
def slot_transportForwards(self):
if (not jack.client): return
new_frame = jacklib.get_current_transport_frame(jack.client)+100000
jacklib.transport_locate(jack.client, new_frame)


#def transport_fix():
#pos = jacklib.jack_position_t
#pos.valid = 0
#jacklib.transport_query(jack.client, pos)
#pos.frame += jacklib.get_buffer_size(jack.client)
#jacklib.transport_reposition(jack.client, pos)
@pyqtSlot()
def slot_transportViewMenu(self):
menu = QMenu(self)
act_t_hms = menu.addAction("Hours:Minutes:Seconds")
act_t_bbt = menu.addAction("Beat:Bar:Tick")
act_t_fr = menu.addAction("Frames")


# -------------------------------------------------------------
# Refresh GUI stuff
act_t_hms.setCheckable(True)
act_t_bbt.setCheckable(True)
act_t_fr.setCheckable(True)


#def refreshBufferSize(self):
#if (self.last_buffer_size != self.buffer_size):
#setBufferSize(self, self.buffer_size)
if (self.m_selected_transport_view == TRANSPORT_VIEW_HMS):
act_t_hms.setChecked(True)
elif (self.m_selected_transport_view == TRANSPORT_VIEW_BBT):
act_t_bbt.setChecked(True)
elif (self.m_selected_transport_view == TRANSPORT_VIEW_FRAMES):
act_t_fr.setChecked(True)


#self.last_buffer_size = self.buffer_size
act_selected = menu.exec_(QCursor().pos())


#def refreshSampleRate(self):
#if (self.last_sample_rate != self.sample_rate):
#setSampleRate(self, self.sample_rate)
if (act_selected == act_t_hms):
setTransportView(self, TRANSPORT_VIEW_HMS)
elif (act_selected == act_t_bbt):
setTransportView(self, TRANSPORT_VIEW_BBT)
elif (act_selected == act_t_fr):
setTransportView(self, TRANSPORT_VIEW_FRAMES)


#self.last_sample_rate = self.sample_rate
# -------------------------------------------------------------
# Refresh GUI stuff


def refreshDSPLoad(self): def refreshDSPLoad(self):
if (not jack.client): return if (not jack.client): return
@@ -250,44 +215,26 @@ def refreshTransport(self):
secs = time % 60 secs = time % 60
mins = (time / 60) % 60 mins = (time / 60) % 60
hrs = (time / 3600) % 60 hrs = (time / 3600) % 60
secH = minH = hrsH = ""
if secs < 10: secH = "0"
if mins < 10: minH = "0"
if hrs < 10: hrsH = "0"
self.label_time.setText("%s%i:%s%i:%s%i" % (hrsH, hrs, minH, mins, secH, secs))

#elif (self.m_selected_transport_view == TRANSPORT_VIEW_BBT):
#if (pos.valid & jacklib.PositionBBT):
#bar = pos.bar
#beat = pos.beat
#tick = pos.tick
#barH = beatH = tickH = ""
#if (bar == 0):
#beat = 0
#tick = 0
#barH = "00"
#elif bar < 10: barH = "00"
#elif bar < 100: barH = "0"
#if tick < 10: tickH = "000"
#elif tick < 100: tickH = "00"
#elif tick < 1000: tickH = "0"
#self.label_time.setText(barH+str(bar)+"|"+beatH+str(beat)+"|"+tickH+str(tick))
#else:
#self.label_time.setText("000|00|0000")

#elif (self.m_selected_transport_view == TRANSPORT_VIEW_FRAMES):
#frame = pos.frame
#frame1 = pos.frame % 1000
#frame2 = (pos.frame / 1000) % 1000
#frame3 = (pos.frame / 1000000) % 1000
#frame1h = frame2h = frame3h = ""
#if frame1 < 10: frame1h = "00"
#elif frame1 < 100: frame1h = "0"
#if frame2 < 10: frame2h = "00"
#elif frame2 < 100: frame2h = "0"
#if frame3 < 10: frame3h = "00"
#elif frame3 < 100: frame3h = "0"
#self.label_time.setText(frame3h+str(frame3)+"'"+frame2h+str(frame2)+"'"+frame1h+str(frame1))
self.label_time.setText("%02i:%02i:%02i" % (hrs, mins, secs))

elif (self.m_selected_transport_view == TRANSPORT_VIEW_BBT):
if (pos.valid & jacklib.JackPositionBBT):
bar = pos.bar
beat = pos.beat
tick = pos.tick
if (bar == 0):
beat = 0
tick = 0
self.label_time.setText("%03i|%02i|%04i" % (bar, beat, tick))
else:
self.label_time.setText("000|00|0000")

elif (self.m_selected_transport_view == TRANSPORT_VIEW_FRAMES):
frame = pos.frame
frame1 = pos.frame % 1000
frame2 = (pos.frame / 1000) % 1000
frame3 = (pos.frame / 1000000) % 1000
self.label_time.setText("%03i'%03i'%03i" % (frame3, frame2, frame1))


if (pos.valid & jacklib.JackPositionBBT): if (pos.valid & jacklib.JackPositionBBT):
if (self.m_last_bpm != pos.beats_per_minute): if (self.m_last_bpm != pos.beats_per_minute):
@@ -320,8 +267,8 @@ def refreshTransport(self):
# ------------------------------------------------------------- # -------------------------------------------------------------
# Set GUI stuff # Set GUI stuff


def setBufferSize(self, buffer_size):
if (self.m_buffer_size == buffer_size):
def setBufferSize(self, buffer_size, forced=False):
if (self.m_buffer_size == buffer_size and not forced):
return return


self.m_buffer_size = buffer_size self.m_buffer_size = buffer_size
@@ -354,7 +301,7 @@ def setBufferSize(self, buffer_size):
for act_bf in self.act_jack_bf_list: for act_bf in self.act_jack_bf_list:
act_bf.setEnabled(True) act_bf.setEnabled(True)
if (act_bf.text().replace("&","") == str(buffer_size)): if (act_bf.text().replace("&","") == str(buffer_size)):
#if (act_bf.isChecked() == False):
if (act_bf.isChecked() == False):
act_bf.setChecked(True) act_bf.setChecked(True)
else: else:
if (act_bf.isChecked()): if (act_bf.isChecked()):
@@ -371,13 +318,13 @@ def setSampleRate(self, sample_rate, future=False):


if (future): if (future):
pass pass
#if (self.sender() == self.cb_sample_rate): # Changed using GUI
#ask = QMessageBox.question(self, self.tr("Change Sample Rate"), self.tr("It's not possible to change Sample Rate while JACK is running.\n"
#"Do you want to change as soon as JACK stops?"), QMessageBox.Ok|QMessageBox.Cancel)
#if (ask == QMessageBox.Ok):
#self.next_sample_rate = sample_rate
#else:
#self.next_sample_rate = 0
if (self.sender() == self.cb_sample_rate): # Changed using GUI
ask = QMessageBox.question(self, self.tr("Change Sample Rate"), self.tr("It's not possible to change Sample Rate while JACK is running.\n"
"Do you want to change as soon as JACK stops?"), QMessageBox.Ok|QMessageBox.Cancel)
if (ask == QMessageBox.Ok):
self.m_next_sample_rate = sample_rate
else:
self.m_next_sample_rate = 0


# not future # not future
else: else:
@@ -388,9 +335,6 @@ def setSampleRate(self, sample_rate, future=False):
sample_rate = sample_rates[i] sample_rate = sample_rates[i]
sample_rate_str = str(sample_rate) sample_rate_str = str(sample_rate)


#if (self.m_next_sample_rate != 0 and self.m_next_sample_rate != self.m_sample_rate and self.m_sample_rate == sample_rate):
#text += "*"

self.cb_sample_rate.setItemText(i, sample_rate_str) self.cb_sample_rate.setItemText(i, sample_rate_str)


if (self.m_sample_rate == sample_rate): if (self.m_sample_rate == sample_rate):
@@ -404,7 +348,7 @@ def setDSPLoad(self, dsp_load):
self.pb_dsp_load.setValue(dsp_load) self.pb_dsp_load.setValue(dsp_load)


def setXruns(self, xruns): def setXruns(self, xruns):
self.b_xruns.setText("%s Xrun%s" % ((str(xruns) if (xruns >= 0) else "--"), ("" if (xruns == 1) else "s")))
self.b_xruns.setText("%s Xrun%s" % (str(xruns) if (xruns >= 0) else "--", "" if (xruns == 1) else "s"))


# ------------------------------------------------------------- # -------------------------------------------------------------
# External Dialogs # External Dialogs
@@ -433,33 +377,32 @@ def setJackConnections(self, modes):
self.connect(self.b_jack_clear_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()")) self.connect(self.b_jack_clear_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()"))
self.connect(self.b_jack_configure, SIGNAL("clicked()"), lambda: slot_showJackSettings(self)) self.connect(self.b_jack_configure, SIGNAL("clicked()"), lambda: slot_showJackSettings(self))
self.connect(self.b_jack_render, SIGNAL("clicked()"), lambda: slot_showRender(self)) self.connect(self.b_jack_render, SIGNAL("clicked()"), lambda: slot_showRender(self))
#self.connect(self.cb_buffer_size, SIGNAL("currentIndexChanged(QString)"), lambda: jack_buffer_size_cb(self, self.cb_buffer_size.currentText()))
#self.connect(self.cb_sample_rate, SIGNAL("currentIndexChanged(QString)"), lambda: jack_sample_rate_cb(self, self.cb_sample_rate.currentText()))
self.connect(self.cb_buffer_size, SIGNAL("currentIndexChanged(QString)"), lambda: slot_jackBufferSize_ComboBox(self, self.cb_buffer_size.currentText()))
self.connect(self.cb_sample_rate, SIGNAL("currentIndexChanged(QString)"), lambda: slot_jackSampleRate_ComboBox(self, self.cb_sample_rate.currentText()))
self.connect(self.b_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()")) self.connect(self.b_xruns, SIGNAL("clicked()"), SLOT("slot_JackClearXruns()"))


#if ("buffer-size" in modes):
#self.connect(self.act_jack_bf_16, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 16))
#self.connect(self.act_jack_bf_32, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 32))
#self.connect(self.act_jack_bf_64, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 64))
#self.connect(self.act_jack_bf_128, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 128))
#self.connect(self.act_jack_bf_256, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 256))
#self.connect(self.act_jack_bf_512, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 512))
#self.connect(self.act_jack_bf_1024, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 1024))
#self.connect(self.act_jack_bf_2048, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 2048))
#self.connect(self.act_jack_bf_4096, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 4096))
#self.connect(self.act_jack_bf_8192, SIGNAL("triggered(bool)"), lambda: jack_buffer_size_m(self, 8192))

#if ("transport" in modes):
#self.connect(self.act_transport_play, SIGNAL("triggered(bool)"), lambda: transport_playpause(self, self.act_transport_play.isChecked()))
#self.connect(self.act_transport_stop, SIGNAL("triggered()"), lambda: transport_stop(self))
#self.connect(self.act_transport_backwards, SIGNAL("triggered()"), lambda: transport_backwards(self))
#self.connect(self.act_transport_forwards, SIGNAL("triggered()"), lambda: transport_forwards(self))
#self.connect(self.b_transport_play, SIGNAL("clicked(bool)"), lambda: transport_playpause(self, self.b_transport_play.isChecked()))
#self.connect(self.b_transport_stop, SIGNAL("clicked()"), lambda: transport_stop(self))
#self.connect(self.b_transport_backwards, SIGNAL("clicked()"), lambda: transport_backwards(self))
#self.connect(self.b_transport_forwards, SIGNAL("clicked()"), lambda: transport_forwards(self))
#self.connect(self.sb_bpm, SIGNAL("valueChanged(double)"), lambda: transport_bpm_set(self, self.sb_bpm.value()))
#self.connect(self.label_time, SIGNAL("customContextMenuRequested(QPoint)"), lambda: transport_view_menu(self))
if ("buffer-size" in modes):
self.connect(self.act_jack_bf_16, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 16))
self.connect(self.act_jack_bf_32, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 32))
self.connect(self.act_jack_bf_64, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 64))
self.connect(self.act_jack_bf_128, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 128))
self.connect(self.act_jack_bf_256, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 256))
self.connect(self.act_jack_bf_512, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 512))
self.connect(self.act_jack_bf_1024, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 1024))
self.connect(self.act_jack_bf_2048, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 2048))
self.connect(self.act_jack_bf_4096, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 4096))
self.connect(self.act_jack_bf_8192, SIGNAL("triggered(bool)"), lambda: slot_jackBufferSize_Menu(self, 8192))

if ("transport" in modes):
self.connect(self.act_transport_play, SIGNAL("triggered(bool)"), lambda: slot_transportPlayPause(self, self.act_transport_play.isChecked()))
self.connect(self.act_transport_stop, SIGNAL("triggered()"), lambda: slot_transportStop(self))
self.connect(self.act_transport_backwards, SIGNAL("triggered()"), lambda: slot_transportBackwards(self))
self.connect(self.act_transport_forwards, SIGNAL("triggered()"), lambda: slot_transportForwards(self))
self.connect(self.b_transport_play, SIGNAL("clicked(bool)"), lambda: slot_transportPlayPause(self, self.b_transport_play.isChecked()))
self.connect(self.b_transport_stop, SIGNAL("clicked()"), lambda: slot_transportStop(self))
self.connect(self.b_transport_backwards, SIGNAL("clicked()"), lambda: slot_transportBackwards(self))
self.connect(self.b_transport_forwards, SIGNAL("clicked()"), lambda: slot_transportForwards(self))
self.connect(self.label_time, SIGNAL("customContextMenuRequested(QPoint)"), lambda: slot_transportViewMenu(self))


if ("misc" in modes): if ("misc" in modes):
if (LINUX): if (LINUX):


+ 13
- 1
src/ui/catia.ui View File

@@ -150,6 +150,18 @@
<property name="toolTip"> <property name="toolTip">
<string>Beats per Minute</string> <string>Beats per Minute</string>
</property> </property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
<property name="prefix">
<string/>
</property>
<property name="suffix">
<string> BPM</string>
</property>
<property name="decimals"> <property name="decimals">
<number>2</number> <number>2</number>
</property> </property>
@@ -446,7 +458,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>702</width> <width>702</width>
<height>18</height>
<height>20</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menu_File"> <widget class="QMenu" name="menu_File">


Loading…
Cancel
Save