Browse Source

Implement file callback, used in audio and midi-file plugs

tags/1.9.4
falkTX 11 years ago
parent
commit
0098991645
3 changed files with 28 additions and 2 deletions
  1. +1
    -1
      source/backend/engine/CarlaEngine.cpp
  2. +2
    -1
      source/carla_backend.py
  3. +25
    -0
      source/carla_host.py

+ 1
- 1
source/backend/engine/CarlaEngine.cpp View File

@@ -1632,7 +1632,7 @@ void CarlaEngine::setCallback(const EngineCallbackFunc func, void* const ptr) no
const char* CarlaEngine::runFileCallback(const FileCallbackOpcode action, const bool isDir, const char* const title, const char* const filter) noexcept
{
CARLA_SAFE_ASSERT_RETURN(title != nullptr && title[0] != '\0', nullptr);
CARLA_SAFE_ASSERT_RETURN(filter != nullptr && filter[0] != '\0', nullptr);
CARLA_SAFE_ASSERT_RETURN(filter != nullptr, nullptr);
carla_debug("CarlaEngine::runFileCallback(%i:%s, %s, \"%s\", \"%s\")", action, FileCallbackOpcode2Str(action), bool2str(isDir), title, filter);
CARLA_ENGINE_THREAD_SAFE_SECTION



+ 2
- 1
source/carla_backend.py View File

@@ -29,9 +29,10 @@ from sys import platform, maxsize
kIs64bit = bool(architecture()[0] == "64bit" and maxsize > 2**32)

# ------------------------------------------------------------------------------------------------------------
# Define enum type (integer)
# Define custom types

c_enum = c_int
c_uintptr = c_uint64 if kIs64bit else c_uint32

# ------------------------------------------------------------------------------------------------------------
# Set Platform


+ 25
- 0
source/carla_host.py View File

@@ -163,6 +163,8 @@ class HostWindow(QMainWindow):
if Carla.host is not None:
Carla.host.set_engine_callback(engineCallback)

Carla.host.set_file_callback(fileCallback)

# -------------------------------------------------------------
# Internal stuff

@@ -1218,3 +1220,26 @@ def engineCallback(ptr, action, pluginId, value1, value2, value3, valueStr):
Carla.gui.ErrorCallback.emit(valueStr)
elif action == ENGINE_CALLBACK_QUIT:
Carla.gui.QuitCallback.emit()

# ------------------------------------------------------------------------------------------------------------
# File callback

def fileCallback(ptr, action, isDir, title, filter):
if Carla.gui is None:
return None

ret = ""

if action == FILE_CALLBACK_DEBUG:
pass
elif action == FILE_CALLBACK_OPEN:
ret = QFileDialog.getOpenFileName(Carla.gui, charPtrToString(title), "", charPtrToString(filter) ) #, QFileDialog.ShowDirsOnly if isDir else 0x0)
elif action == FILE_CALLBACK_SAVE:
ret = QFileDialog.getSaveFileName(Carla.gui, charPtrToString(title), "", charPtrToString(filter), QFileDialog.ShowDirsOnly if isDir else 0x0)

if not ret:
return None

Carla.gui._fileRet = c_char_p(ret.encode("utf-8"))
retval = cast(byref(Carla.gui._fileRet), POINTER(c_uintptr))
return retval.contents.value

Loading…
Cancel
Save