Browse Source

Render: Add custom filename prefix option (Closes #25)

tags/v0.9.0
falkTX 11 years ago
parent
commit
c119b1c2da
4 changed files with 221 additions and 197 deletions
  1. +197
    -180
      resources/ui/render.ui
  2. +3
    -6
      src/jacklib.py
  3. +7
    -6
      src/jacklib_helpers.py
  4. +14
    -5
      src/render.py

+ 197
- 180
resources/ui/render.ui View File

@@ -14,6 +14,121 @@
<string>Render</string> <string>Render</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="2" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="group_encoding">
<property name="title">
<string>Encoding</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>&amp;Format:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>cb_format</cstring>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="cb_format"/>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="tb_format">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Bit &amp;Depth:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>cb_depth</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QComboBox" name="cb_depth">
<item>
<property name="text">
<string notr="true">8</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">16</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">24</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">32</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Float</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rb_mono">
<property name="text">
<string>Mono</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="rb_stereo">
<property name="text">
<string>Stereo</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QRadioButton" name="rb_outro">
<property name="text">
<string>Other:</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="sb_channels">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>3</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@@ -64,11 +179,70 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<item row="1" column="1">
<widget class="QGroupBox" name="group_time">
<property name="title">
<string>Use Transport</string>
</property> </property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>&amp;Start Time:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>te_start</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QTimeEdit" name="te_start">
<property name="displayFormat">
<string>hh:mm:ss</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&amp;End Time:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>te_end</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QTimeEdit" name="te_end">
<property name="displayFormat">
<string>hh:mm:ss</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="b_now_start">
<property name="text">
<string>now</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="b_now_end">
<property name="text">
<string>now</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
@@ -120,19 +294,6 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Buffer Size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>cb_buffer_size</cstring>
</property>
</widget>
</item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QComboBox" name="cb_buffer_size"> <widget class="QComboBox" name="cb_buffer_size">
<property name="editable"> <property name="editable">
@@ -201,6 +362,19 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&amp;Buffer Size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>cb_buffer_size</cstring>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_3">
<property name="text"> <property name="text">
@@ -229,178 +403,21 @@
</item> </item>
</layout> </layout>
</item> </item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="group_encoding">
<property name="title">
<string>Encoding</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_6">
<item row="3" column="1" colspan="2">
<widget class="QLineEdit" name="le_prefix">
<property name="text"> <property name="text">
<string>&amp;Format:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>cb_format</cstring>
<string/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="cb_format"/>
</item>
<item row="0" column="3">
<widget class="QToolButton" name="tb_format">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text"> <property name="text">
<string>Bit &amp;Depth:</string>
<string>Filename prefix:</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
<property name="buddy">
<cstring>cb_depth</cstring>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QComboBox" name="cb_depth">
<item>
<property name="text">
<string notr="true">8</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">16</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">24</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">32</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">Float</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rb_mono">
<property name="text">
<string>Mono</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="rb_stereo">
<property name="text">
<string>Stereo</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QRadioButton" name="rb_outro">
<property name="text">
<string>Other:</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QSpinBox" name="sb_channels">
<property name="enabled">
<bool>false</bool>
</property>
<property name="minimum">
<number>3</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="group_time">
<property name="title">
<string>Use Transport</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>&amp;Start Time:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>te_start</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QTimeEdit" name="te_start">
<property name="displayFormat">
<string>hh:mm:ss</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>&amp;End Time:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>te_end</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QTimeEdit" name="te_end">
<property name="displayFormat">
<string>hh:mm:ss</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="b_now_start">
<property name="text">
<string>now</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="b_now_end">
<property name="text">
<string>now</string>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>


+ 3
- 6
src/jacklib.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-


# JACK ctypes definitions for usage in python applications # JACK ctypes definitions for usage in python applications
# Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2010-2013 Filipe Coelho <falktx@falktx.com>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ except:
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Pre-Types # Pre-Types


c_enum = c_int
c_enum = c_int
c_uchar = c_uint8 c_uchar = c_uint8


class _jack_port(Structure): class _jack_port(Structure):
@@ -59,9 +59,6 @@ class _jack_port(Structure):
class _jack_client(Structure): class _jack_client(Structure):
_fields_ = [] _fields_ = []


class pthread_t(Structure):
_fields_ = []

# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Defines # Defines


@@ -91,7 +88,7 @@ jack_latency_callback_mode_t = c_enum # JackLatencyCallbackMode


jack_port_t = _jack_port jack_port_t = _jack_port
jack_client_t = _jack_client jack_client_t = _jack_client
jack_port_type_id_t = c_uint32 # JACK2 only
jack_port_type_id_t = c_uint32 # JACK2 only


# enum JackOptions # enum JackOptions
JackNullOption = 0x00 JackNullOption = 0x00


+ 7
- 6
src/jacklib_helpers.py View File

@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-


# Helper functions for extra jacklib functionality # Helper functions for extra jacklib functionality
# Copyright (C) 2012 Filipe Coelho <falktx@falktx.com>
# Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -28,8 +28,12 @@ except ImportError:
# Get JACK error status as string # Get JACK error status as string


def get_jack_status_error_string(cStatus): def get_jack_status_error_string(cStatus):
status = cStatus.value

if status == 0x0:
return ""

errorString = "" errorString = ""
status = cStatus.value


if status & jacklib.JackFailure: if status & jacklib.JackFailure:
errorString += "Overall operation failed;\n" errorString += "Overall operation failed;\n"
@@ -58,10 +62,7 @@ def get_jack_status_error_string(cStatus):
if status & jacklib.JackClientZombie: if status & jacklib.JackClientZombie:
errorString += "Client is being shutdown against its will;\n" errorString += "Client is being shutdown against its will;\n"


if errorString:
errorString = errorString.strip().rsplit(";", 1)[0] + "."

return errorString
return errorString.strip().rsplit(";", 1)[0] + "."


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Convert C char** -> Python list # Convert C char** -> Python list


+ 14
- 5
src/render.py View File

@@ -196,6 +196,14 @@ class RenderW(QDialog):


arguments = [] arguments = []


# Filename prefix
arguments.append("-fp")
arguments.append(self.ui.le_prefix.text())

# Format
arguments.append("-f")
arguments.append(self.ui.cb_format.currentText())

# Bit depth # Bit depth
arguments.append("-b") arguments.append("-b")
arguments.append(self.ui.cb_depth.currentText()) arguments.append(self.ui.cb_depth.currentText())
@@ -209,10 +217,6 @@ class RenderW(QDialog):
else: else:
arguments.append(str(self.ui.sb_channels.value())) arguments.append(str(self.ui.sb_channels.value()))


# Format
arguments.append("-f")
arguments.append(self.ui.cb_format.currentText())

# Controlled by transport # Controlled by transport
if useTransport: if useTransport:
arguments.append("-jt") arguments.append("-jt")
@@ -339,6 +343,7 @@ class RenderW(QDialog):


settings.setValue("Geometry", self.saveGeometry()) settings.setValue("Geometry", self.saveGeometry())
settings.setValue("OutputFolder", self.ui.le_folder.text()) settings.setValue("OutputFolder", self.ui.le_folder.text())
settings.setValue("FilenamePrefix", self.ui.le_prefix.text())
settings.setValue("EncodingFormat", self.ui.cb_format.currentText()) settings.setValue("EncodingFormat", self.ui.cb_format.currentText())
settings.setValue("EncodingDepth", self.ui.cb_depth.currentText()) settings.setValue("EncodingDepth", self.ui.cb_depth.currentText())
settings.setValue("EncodingChannels", channels) settings.setValue("EncodingChannels", channels)
@@ -356,6 +361,8 @@ class RenderW(QDialog):
if os.path.exists(outputFolder): if os.path.exists(outputFolder):
self.ui.le_folder.setText(outputFolder) self.ui.le_folder.setText(outputFolder)


self.ui.le_prefix.setText(settings.value("FilenamePrefix", "jack_capture_"))

encFormat = settings.value("EncodingFormat", "Wav", type=str) encFormat = settings.value("EncodingFormat", "Wav", type=str)


for i in range(self.ui.cb_format.count()): for i in range(self.ui.cb_format.count()):
@@ -385,9 +392,11 @@ class RenderW(QDialog):
self.ui.te_end.setTime(settings.value("EndTime", self.ui.te_end.time(), type=QTime)) self.ui.te_end.setTime(settings.value("EndTime", self.ui.te_end.time(), type=QTime))


def closeEvent(self, event): def closeEvent(self, event):
self.saveSettings()

if self.fJackClient: if self.fJackClient:
jacklib.client_close(self.fJackClient) jacklib.client_close(self.fJackClient)
self.saveSettings()
QDialog.closeEvent(self, event) QDialog.closeEvent(self, event)


def done(self, r): def done(self, r):


Loading…
Cancel
Save