static void *dev_create_plugin_data(const SoundPluginType *plugin_type, SoundPlugin *plugin, hash_t *state, float sample_rate, int block_size, bool is_loading){ Devdata *devdata = new Devdata; plugin->data = devdata; if (state!=NULL) { devdata->code = STRING_get_qstring(STRING_fromBase64(HASH_get_string(state, "code"))); devdata->options = STRING_get_qstring(STRING_fromBase64(HASH_get_string(state, "options"))); } else devdata->code = DEFAULT_FAUST_DEV_PROGRAM; if (is_loading==false) { FAUST_start_compilation(plugin); } else { if (FAUST_compile_now(plugin, is_loading)==false){ GFX_Message(NULL, "Something went wrong when compiling: %s", devdata->reply.error_message.toUtf8().constData()); plugin->data = NULL; delete devdata; return NULL; } } return devdata; }
void DISK_delete_base64_file(const wchar_t *wfilename){ radium::ScopedMutex lock(&g_mutex); QString key = STRING_get_qstring(wfilename); QTemporaryFile *file = g_temporary_files[key]; R_ASSERT_RETURN_IF_FALSE(file!=NULL); g_temporary_files.remove(key); delete file; }
disk_t *DISK_open_binary_for_reading(const wchar_t *wfilename){ QString filename = STRING_get_qstring(wfilename); disk_t *disk = new disk_t(filename, disk_t::READ, true); if (disk->open()==false){ delete disk; return NULL; } return disk; }
// Only used for audio files, so we don't bother with decompression. const wchar_t *DISK_base64_to_file(const wchar_t *wfilename, const char *chars){ QFile *file; QTemporaryFile *temporary_write_file = NULL; QFile outfile; QByteArray data = QByteArray::fromBase64(chars); if (wfilename==NULL) { temporary_write_file = new QTemporaryFile; file = temporary_write_file; } else { outfile.setFileName(STRING_get_qstring(wfilename)); file = &outfile; } if (file->open(QIODevice::WriteOnly)==false){ GFX_Message(NULL, "Unable to open file \"%s\" (%s)", file->fileName().toUtf8().constData(), file->errorString().toUtf8().constData()); return NULL; } if (file->write(data) != data.size()){ GFX_Message(NULL, "Unable to write to file \"%s\" (%s)", file->fileName().toUtf8().constData(), file->errorString().toUtf8().constData()); file->close(); return NULL; } file->close(); if (wfilename==NULL){ radium::ScopedMutex lock(&g_mutex); g_temporary_files[temporary_write_file->fileName()] = temporary_write_file; } return STRING_create(file->fileName()); }
virtual void setGuiValue(dyn_t val){ { QAbstractButton *button = dynamic_cast<QAbstractButton*>(_widget); if (button!=NULL){ if(val.type==BOOL_TYPE) button->setChecked(val.bool_number); else handleError("Button->setValue received %s, expected BOOL_TYPE", DYN_type_name(val.type)); return; } } { QAbstractSlider *slider = dynamic_cast<QAbstractSlider*>(_widget); if (slider!=NULL){ if(val.type==INT_TYPE) slider->setValue(val.bool_number); else handleError("Slider->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QLabel *label = dynamic_cast<QLabel*>(_widget); if (label!=NULL){ if(val.type==STRING_TYPE) label->setText(STRING_get_qstring(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QLineEdit *line_edit = dynamic_cast<QLineEdit*>(_widget); if (line_edit!=NULL){ if(val.type==STRING_TYPE) line_edit->setText(STRING_get_qstring(val.string)); else handleError("Line->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QTextEdit *text_edit = dynamic_cast<QTextEdit*>(_widget); if (text_edit!=NULL){ if(val.type==STRING_TYPE) text_edit->setPlainText(STRING_get_chars(val.string)); else handleError("Text->setValue received %s, expected STRING_TYPE", DYN_type_name(val.type)); return; } } { QSpinBox *spinbox = dynamic_cast<QSpinBox*>(_widget); if (spinbox!=NULL){ if (val.type==INT_TYPE) spinbox->setValue((int)val.int_number); else handleError("IntText->setValue received %s, expected INT_TYPE", DYN_type_name(val.type)); return; } } { QDoubleSpinBox *doublespinbox = dynamic_cast<QDoubleSpinBox*>(_widget); if (doublespinbox!=NULL){ if (val.type==FLOAT_TYPE) doublespinbox->setValue(val.float_number); else handleError("FloatText->setValue received %s, expected FLOAT_TYPE", DYN_type_name(val.type)); return; } } handleError("Gui #%d does not have a setValue method", _gui_num); }
bool DISK_file_exists(const wchar_t *wfilename){ QString filename = STRING_get_qstring(wfilename); return QFile::exists(filename); }
int DISK_write_wchar(disk_t *disk, const wchar_t *wdata){ QString data = STRING_get_qstring(wdata); return DISK_write_qstring(disk, data); }
disk_t *DISK_open_for_reading(const wchar_t *wfilename){ QString filename = STRING_get_qstring(wfilename); return DISK_open_for_reading(filename); }