Skip to content

Commit

Permalink
[tinyPy] Add methods to create file dialogs filtered by filename exte…
Browse files Browse the repository at this point in the history
…nsion
  • Loading branch information
eumagga0x2a committed Jan 27, 2021
1 parent f2c854a commit e1756d3
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 46 deletions.
46 changes: 39 additions & 7 deletions avidemux_plugins/ADM_scriptEngines/tinyPy/src/ADM_pyAvidemux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ char *pyFileSelWrite(IEditor *editor, const char *title)

return me;
}

/**
\fn pyFileSelRead
*/
Expand All @@ -261,20 +262,51 @@ char *pyFileSelRead(IEditor *editor, const char *title)

return me;
}

#if defined(__APPLE__)
#define MAX_LEN 1024
#else
#define MAX_LEN 4096
#endif

/**
\fn pyFileSelWriteEx
*/
char *pyFileSelWriteEx(IEditor *editor, const char *title, const char *ext)
{
char me[MAX_LEN] = {0};
const char *txt = QT_TRANSLATE_NOOP("tinypy","Save File");
if(!FileSel_SelectWrite((title && strlen(title)) ? title : txt, me, MAX_LEN, NULL, ext))
return NULL;

return ADM_strdup(me);
}

/**
\fn pyFileSelReadEx
*/
char *pyFileSelReadEx(IEditor *editor, const char *title, const char *ext)
{
char me[MAX_LEN] = {0};
const char *txt = QT_TRANSLATE_NOOP("tinypy","Open File");
if(!FileSel_SelectRead((title && strlen(title)) ? title : txt, me, MAX_LEN, NULL, ext))
return NULL;

return ADM_strdup(me);
}

/**
\fn pyDirSelect
*/

char *pyDirSelect(IEditor *editor, const char *title)
{
char me[1024] = {0};

if (!FileSel_SelectDir((title && strlen(title)) ? title : QT_TR_NOOP("Select a directory"), me, 1023, NULL))
{
return NULL;
}
char me[MAX_LEN] = {0};
const char *txt = QT_TRANSLATE_NOOP("tinypy","Select Directory");
if (!FileSel_SelectDir((title && strlen(title)) ? title : txt, me, MAX_LEN, NULL))
return NULL;

return ADM_strdup(me);
return ADM_strdup(me);
}
/**
\fn pyDisplayError
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ double pyGetDts(IEditor *editor, int frameNum);
/* File operation */
char *pyFileSelWrite(IEditor *editor, const char *title);
char *pyFileSelRead(IEditor *editor, const char *title);
char *pyFileSelWriteEx(IEditor *editor, const char *title, const char *ext);
char *pyFileSelReadEx(IEditor *editor, const char *title, const char *ext);
char *pyDirSelect(IEditor *editor, const char *title);

/* Display */
Expand Down
126 changes: 87 additions & 39 deletions avidemux_plugins/ADM_scriptEngines/tinyPy/src/GUI_gen.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Generated by admPyClass.pl do not edit !
// fileWriteSelect -> str pyFileSelWrite (IEditor str )
static tp_obj zzpy_fileWriteSelect(TP)
{
// fileReadSelectEx -> str pyFileSelReadEx(IEditor str str)
static tp_obj zzpy_fileReadSelectEx(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
Expand All @@ -10,16 +10,35 @@ static tp_obj zzpy_fileWriteSelect(TP)

IEditor *p0 = editor;
const char *p1 = pm.asString();
char *r = pyFileSelWrite(p0,p1);
const char *p2 = pm.asString();
char *r = pyFileSelReadEx(p0, p1, p2);
if(!r) return tp_None;

tp_obj o = tp_string_copy(tp, r, strlen(r));
ADM_dealloc(r);
return o;
}
// displayError -> void pyDisplayError (IEditor str str )
static tp_obj zzpy_displayError(TP)
{
// fileReadSelect -> str pyFileSelRead(IEditor str)
static tp_obj zzpy_fileReadSelect(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
TinyParams pm(tp);
void *me = (void *)pm.asThis(&self, ADM_PYID_GUI);

IEditor *p0 = editor;
const char *p1 = pm.asString();
char *r = pyFileSelRead(p0, p1);
if(!r) return tp_None;

tp_obj o = tp_string_copy(tp, r, strlen(r));
ADM_dealloc(r);
return o;
}
// displayInfo -> void pyDisplayInfo(IEditor str str)
static tp_obj zzpy_displayInfo(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
Expand All @@ -29,12 +48,12 @@ static tp_obj zzpy_displayError(TP)
IEditor *p0 = editor;
const char *p1 = pm.asString();
const char *p2 = pm.asString();
pyDisplayError(p0,p1,p2);
return tp_None;
pyDisplayInfo(p0, p1, p2);
return tp_None;
}
// dirSelect -> str pyDirSelect (IEditor str )
// dirSelect -> str pyDirSelect(IEditor str)
static tp_obj zzpy_dirSelect(TP)
{
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
Expand All @@ -43,16 +62,16 @@ static tp_obj zzpy_dirSelect(TP)

IEditor *p0 = editor;
const char *p1 = pm.asString();
char *r = pyDirSelect(p0,p1);
char *r = pyDirSelect(p0, p1);
if(!r) return tp_None;

tp_obj o = tp_string_copy(tp, r, strlen(r));
ADM_dealloc(r);
return o;
}
// displayInfo -> void pyDisplayInfo (IEditor str str )
static tp_obj zzpy_displayInfo(TP)
{
// displayError -> void pyDisplayError(IEditor str str)
static tp_obj zzpy_displayError(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
Expand All @@ -62,12 +81,12 @@ static tp_obj zzpy_displayInfo(TP)
IEditor *p0 = editor;
const char *p1 = pm.asString();
const char *p2 = pm.asString();
pyDisplayInfo(p0,p1,p2);
return tp_None;
pyDisplayError(p0, p1, p2);
return tp_None;
}
// fileReadSelect -> str pyFileSelRead (IEditor str )
static tp_obj zzpy_fileReadSelect(TP)
{
// fileWriteSelect -> str pyFileSelWrite(IEditor str)
static tp_obj zzpy_fileWriteSelect(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
Expand All @@ -76,7 +95,26 @@ static tp_obj zzpy_fileReadSelect(TP)

IEditor *p0 = editor;
const char *p1 = pm.asString();
char *r = pyFileSelRead(p0,p1);
char *r = pyFileSelWrite(p0, p1);
if(!r) return tp_None;

tp_obj o = tp_string_copy(tp, r, strlen(r));
ADM_dealloc(r);
return o;
}
// fileWriteSelectEx -> str pyFileSelWriteEx(IEditor str str)
static tp_obj zzpy_fileWriteSelectEx(TP)
{
tp_obj self = tp_getraw(tp);
IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
TinyParams pm(tp);
void *me = (void *)pm.asThis(&self, ADM_PYID_GUI);

IEditor *p0 = editor;
const char *p1 = pm.asString();
const char *p2 = pm.asString();
char *r = pyFileSelWriteEx(p0, p1, p2);
if(!r) return tp_None;

tp_obj o = tp_string_copy(tp, r, strlen(r));
Expand All @@ -89,27 +127,35 @@ tp_obj zzpy__pyGui_get(tp_vm *vm)
IScriptEngine *engine = (IScriptEngine*)tp_get(vm, vm->builtins, tp_string("userdata")).data.val;
IEditor *editor = engine->editor();
TinyParams pm(vm);
void *me=(void *)pm.asThis(&self, ADM_PYID_GUI);
void *me = (void *)pm.asThis(&self, ADM_PYID_GUI);
char const *key = pm.asString();
if (!strcmp(key, "fileWriteSelect"))
if (!strcmp(key, "fileReadSelectEx"))
{
return tp_method(vm, self, zzpy_fileWriteSelect);
return tp_method(vm, self, zzpy_fileReadSelectEx);
}
if (!strcmp(key, "displayError"))
if (!strcmp(key, "fileReadSelect"))
{
return tp_method(vm, self, zzpy_displayError);
return tp_method(vm, self, zzpy_fileReadSelect);
}
if (!strcmp(key, "displayInfo"))
{
return tp_method(vm, self, zzpy_displayInfo);
}
if (!strcmp(key, "dirSelect"))
{
return tp_method(vm, self, zzpy_dirSelect);
return tp_method(vm, self, zzpy_dirSelect);
}
if (!strcmp(key, "displayInfo"))
if (!strcmp(key, "displayError"))
{
return tp_method(vm, self, zzpy_displayInfo);
return tp_method(vm, self, zzpy_displayError);
}
if (!strcmp(key, "fileReadSelect"))
if (!strcmp(key, "fileWriteSelect"))
{
return tp_method(vm, self, zzpy_fileReadSelect);
return tp_method(vm, self, zzpy_fileWriteSelect);
}
if (!strcmp(key, "fileWriteSelectEx"))
{
return tp_method(vm, self, zzpy_fileWriteSelectEx);
}
return tp_get(vm, self, tp_string(key));
}
Expand Down Expand Up @@ -140,16 +186,18 @@ static tp_obj myCtorpyGui(tp_vm *vm)
}
static tp_obj zzpy__pyGui_help(TP)
{
PythonEngine *engine = (PythonEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
PythonEngine *engine = (PythonEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;

engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileWriteSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "displayError(IEditor,str,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "dirSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "displayInfo(IEditor,str,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileReadSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileReadSelectEx(IEditor,str,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileReadSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "displayInfo(IEditor,str,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "dirSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "displayError(IEditor,str,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileWriteSelect(IEditor,str)\n");
engine->callEventHandlers(IScriptEngine::Information, NULL, -1, "fileWriteSelectEx(IEditor,str,str)\n");

return tp_None;
};
return tp_None;
}
tp_obj initClasspyGui(tp_vm *vm)
{
tp_obj myClass = tp_class(vm);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
# cname:pyname
/* METHOD */ str pyDirSelect:dirSelect(str)
/* METHOD */ str pyFileSelRead:fileReadSelect(str)
/* METHOD */ str pyFileSelReadEx:fileReadSelectEx(str,str)
/* METHOD */ str pyFileSelWrite:fileWriteSelect(str)
/* METHOD */ str pyFileSelWriteEx:fileWriteSelectEx(str,str)
/* METHOD */ void pyDisplayError:displayError(str,str)
/* METHOD */ void pyDisplayInfo:displayInfo(str,str)

0 comments on commit e1756d3

Please sign in to comment.