/trunk/CHANGELOG.md |
---|
2,7 → 2,10 |
## 1.7.0.17 [Work-In-Progress] |
- Fixed theoretical bug that can crash a Photoshop application if PLUGIN.DLL exists but is not loaded. |
- Added translation for German systems (*) |
(*) This bug/solution was tested on Windows but needs to be verified and/or implemented on Mac. |
## 1.7.0.16 [22-Mar-2022] |
- Fixed bug that caused PLUGIN.DLL sliders not working if the filter was called multiple times. You can hotfix existing standalone plugins by replacing "UnregisterSlider" with "UnRegisterSlider" using a hex-editor. Affected are plugins built using 1.7.0.13/14/15. |
/trunk/language.c |
---|
26,7 → 26,7 |
TCHAR* szMsg; |
int len; |
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 0); |
LoadString(hDllInstance, MsgId, ret, len); |
LoadString(hDllInstance, MsgId, ret, len+1); |
#else |
Str255 msg; |
GetIndString(msg, 1000, MsgId); |
35,6 → 35,7 |
} |
TCHAR* FF_GetMsg_Cpy(int MsgId) { |
#ifdef WIN_ENV |
TCHAR* szMsg; |
int len; |
TCHAR* ret; |
41,6 → 42,13 |
len = LoadString(hDllInstance, MsgId, (LPTSTR)&szMsg, 0); |
ret = (TCHAR*)malloc((len+1) * sizeof(TCHAR)); // TODO: This leaks memory! Like _strdup() does... Not a good design! |
if (ret == NULL) return NULL; |
LoadString(hDllInstance, MsgId, ret, len); |
LoadString(hDllInstance, MsgId, ret, len+1); |
return ret; |
#else |
Str255 msg; |
TCHAR* ret; |
GetIndString(msg, 1000, MsgId); |
myp2cstrcpy(ret, msg); |
return ret; |
#endif |
} |
/trunk/language.h |
---|
18,10 → 18,6 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*/ |
// TODO: Search for more things to translate, e.g. in *_mac.* |
// TODO: Translate "TODO: Translate" in *.c |
// TODO: Translate dialogs |
// TODO: Deutsche Umlaute sind kaputt (UTF8 Zeichen werden gezeigt) |
// Hiermit geht es aber... |
// Meldung "Unbekanntes Pragma" (trotzdem bringt es was?!) |
175,5 → 171,86 |
#define MSG_FULLY_ZOOM_INOUT_ENUS "Fully zoom in/out" |
#define MSG_FULLY_ZOOM_INOUT_DEDE "Vollständig rein/raus-zoomen" |
#define MSG_LOAD_FILTER_SETTINGS_TITLE_ID 38 |
#define MSG_LOAD_FILTER_SETTINGS_TITLE_ENUS "Load filter settings" |
#define MSG_LOAD_FILTER_SETTINGS_TITLE_DEDE "Filter-Einstellungen laden" |
#define MSG_SAVE_FILTER_SETTINGS_TITLE_ID 39 |
#define MSG_SAVE_FILTER_SETTINGS_TITLE_ENUS "Save filter settings" |
#define MSG_SAVE_FILTER_SETTINGS_TITLE_DEDE "Filter-Einstellungen speichern" |
#define MSG_MAKE_FILTER_SETTINGS_TITLE_ID 40 |
#define MSG_MAKE_FILTER_SETTINGS_TITLE_ENUS "Create standalone filter" |
#define MSG_MAKE_FILTER_SETTINGS_TITLE_DEDE "Eigenständigen Filter erzeugen" |
#define MSG_ALL_SUPPORTED_FILES_ID 41 |
#define MSG_ALL_SUPPORTED_FILES_ENUS "All supported files" |
#define MSG_ALL_SUPPORTED_FILES_DEDE "Alle unterstützten Dateien" |
#define MSG_ALL_FILES_ID 42 |
#define MSG_ALL_FILES_ENUS "All files" |
#define MSG_ALL_FILES_DEDE "Alle Dateien" |
#define MSG_OPEN_AFS_ID 43 |
#define MSG_OPEN_AFS_ENUS "Filter Factory Settings" |
#define MSG_OPEN_AFS_DEDE "Filter Factory Einstellungen" |
#define MSG_OPEN_TXT_ID 44 |
#define MSG_OPEN_TXT_ENUS "PluginCommander or FFDecomp TXT file" |
#define MSG_OPEN_TXT_DEDE "PluginCommander oder FFDecomp Text-Datei" |
#define MSG_OPEN_8BF_ID 45 |
#define MSG_OPEN_8BF_ENUS "Filter Factory for Windows, Standalone Filter" |
#define MSG_OPEN_8BF_DEDE "Filter Factory für Windows, Eigenständiger Filter" |
#define MSG_OPEN_PFF_ID 46 |
#define MSG_OPEN_PFF_ENUS "Premiere TF / FF Settings" |
#define MSG_OPEN_PFF_DEDE "Premiere TF / FF Einstellungen" |
#define MSG_OPEN_PRM_ID 47 |
#define MSG_OPEN_PRM_ENUS "Premiere TF/FF for Windows, Standalone Filter" |
#define MSG_OPEN_PRM_DEDE "Premiere TF/FF für Windows, Eigenständiger Filter" |
#define MSG_OPEN_RSRC_ID 48 |
#define MSG_OPEN_RSRC_ENUS "FilterFactory for MacOS, Standalone Filter" |
#define MSG_OPEN_RSRC_DEDE "FilterFactory für MacOS, Eigenständiger Filter" |
#define MSG_OPEN_FFX_ID 49 |
#define MSG_OPEN_FFX_ENUS """Filters Unlimited"" filter" |
#define MSG_OPEN_FFX_DEDE """Filters Unlimited"" Filter" |
#define MSG_SAVE_AFS_ID 50 |
#define MSG_SAVE_AFS_ENUS "Filter Factory Settings" |
#define MSG_SAVE_AFS_DEDE "Filter Factory Einstellungen" |
#define MSG_SAVE_PFF_ID 51 |
#define MSG_SAVE_PFF_ENUS "Premiere TF / FF Settings" |
#define MSG_SAVE_PFF_DEDE "Premiere TF / FF Einstellungen" |
#define MSG_SAVE_TXT_ID 52 |
#define MSG_SAVE_TXT_ENUS "PluginCommander TXT file" |
#define MSG_SAVE_TXT_DEDE "PluginCommander Text-Datei" |
#define MSG_MAKE_8BF_ID 53 |
#define MSG_MAKE_8BF_ENUS "Filter plugin file" |
#define MSG_MAKE_8BF_DEDE "Eigenständiger Filter" |
#define MSG_ABOUT_BY_ID 54 |
#define MSG_ABOUT_BY_ENUS " by " |
#define MSG_ABOUT_BY_DEDE " von " |
#define MSG_ABOUT_BUILT_USING_ID 55 |
#define MSG_ABOUT_BUILT_USING_ENUS "This plugin was built using Filter Foundry " |
#define MSG_ABOUT_BUILT_USING_DEDE "Dieses Plugin wurde erstellt mit Filter Foundry " |
#define MSG_ABOUT_LATEST_VERSION_FROM_ID 56 |
#define MSG_ABOUT_LATEST_VERSION_FROM_ENUS "Latest version available from:" |
#define MSG_ABOUT_LATEST_VERSION_FROM_DEDE "Aktuelle Version herunterladen:" |
#define MSG_ABOUT_CONTACT_AUTHOR_ID 57 |
#define MSG_ABOUT_CONTACT_AUTHOR_ENUS "Please contact the author with any bug reports,\nsuggestions or comments.\nIf you use this program and like it, please consider\nmaking a donation." |
#define MSG_ABOUT_CONTACT_AUTHOR_DEDE "Bitte kontaktieren Sie den Autor für Fehlerberichte,\nAnregungen und Kommentare.\nWenn Sie dieses Programm mögen,\nerwägen Sie bitte eine Spende." |
void FF_GetMsg(TCHAR* ret, int MsgId); |
TCHAR* FF_GetMsg_Cpy(int MsgId); |
/trunk/language_mac.r |
---|
59,6 → 59,42 |
MSG_ERROR_IN_EXPRESSION_CLICK_DETAILS_ENUS, |
MSG_ZOOM_IN_ENUS, |
MSG_ZOOM_OUT_ENUS, |
MSG_FULLY_ZOOM_INOUT_ENUS |
MSG_FULLY_ZOOM_INOUT_ENUS, |
MSG_LOAD_FILTER_SETTINGS_TITLE_ENUS, |
MSG_SAVE_FILTER_SETTINGS_TITLE_ENUS, |
MSG_MAKE_FILTER_SETTINGS_TITLE_ENUS, |
MSG_ALL_SUPPORTED_FILES_ENUS, |
MSG_ALL_FILES_ENUS, |
MSG_OPEN_AFS_ENUS, |
MSG_OPEN_TXT_ENUS, |
MSG_OPEN_8BF_ENUS, |
MSG_OPEN_PFF_ENUS, |
MSG_OPEN_PRM_ENUS, |
MSG_OPEN_RSRC_ENUS, |
MSG_OPEN_FFX_ENUS, |
MSG_SAVE_AFS_ENUS, |
MSG_SAVE_PFF_ENUS, |
MSG_SAVE_TXT_ENUS, |
MSG_MAKE_8BF_ENUS, |
MSG_LOAD_FILTER_SETTINGS_TITLE_ENUS, |
MSG_SAVE_FILTER_SETTINGS_TITLE_ENUS, |
MSG_MAKE_FILTER_SETTINGS_TITLE_ENUS, |
MSG_ALL_SUPPORTED_FILES_ENUS, |
MSG_ALL_FILES_ENUS, |
MSG_OPEN_AFS_ENUS, |
MSG_OPEN_TXT_ENUS, |
MSG_OPEN_8BF_ENUS, |
MSG_OPEN_PFF_ENUS, |
MSG_OPEN_PRM_ENUS, |
MSG_OPEN_RSRC_ENUS, |
MSG_OPEN_FFX_ENUS, |
MSG_SAVE_AFS_ENUS, |
MSG_SAVE_PFF_ENUS, |
MSG_SAVE_TXT_ENUS, |
MSG_MAKE_8BF_ENUS, |
MSG_ABOUT_BY_ENUS, |
MSG_ABOUT_BUILT_USING_ENUS, |
MSG_ABOUT_LATEST_VERSION_FROM_ENUS, |
MSG_ABOUT_CONTACT_AUTHOR_ENUS |
} |
} |
/trunk/language_win.rc |
---|
61,6 → 61,26 |
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_ENUS |
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_ENUS |
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_ENUS |
MSG_LOAD_FILTER_SETTINGS_TITLE_ID, MSG_LOAD_FILTER_SETTINGS_TITLE_ENUS |
MSG_SAVE_FILTER_SETTINGS_TITLE_ID, MSG_SAVE_FILTER_SETTINGS_TITLE_ENUS |
MSG_MAKE_FILTER_SETTINGS_TITLE_ID, MSG_MAKE_FILTER_SETTINGS_TITLE_ENUS |
MSG_ALL_SUPPORTED_FILES_ID, MSG_ALL_SUPPORTED_FILES_ENUS |
MSG_ALL_FILES_ID, MSG_ALL_FILES_ENUS |
MSG_OPEN_AFS_ID, MSG_OPEN_AFS_ENUS |
MSG_OPEN_TXT_ID, MSG_OPEN_TXT_ENUS |
MSG_OPEN_8BF_ID, MSG_OPEN_8BF_ENUS |
MSG_OPEN_PFF_ID, MSG_OPEN_PFF_ENUS |
MSG_OPEN_PRM_ID, MSG_OPEN_PRM_ENUS |
MSG_OPEN_RSRC_ID, MSG_OPEN_RSRC_ENUS |
MSG_OPEN_FFX_ID, MSG_OPEN_FFX_ENUS |
MSG_SAVE_AFS_ID, MSG_SAVE_AFS_ENUS |
MSG_SAVE_PFF_ID, MSG_SAVE_PFF_ENUS |
MSG_SAVE_TXT_ID, MSG_SAVE_TXT_ENUS |
MSG_MAKE_8BF_ID, MSG_MAKE_8BF_ENUS |
MSG_ABOUT_BY_ID, MSG_ABOUT_BY_ENUS |
MSG_ABOUT_BUILT_USING_ID, MSG_ABOUT_BUILT_USING_ENUS |
MSG_ABOUT_LATEST_VERSION_FROM_ID, MSG_ABOUT_LATEST_VERSION_FROM_ENUS |
MSG_ABOUT_CONTACT_AUTHOR_ID, MSG_ABOUT_CONTACT_AUTHOR_ENUS |
} |
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN |
104,4 → 124,25 |
MSG_ZOOM_IN_ID, MSG_ZOOM_IN_DEDE |
MSG_ZOOM_OUT_ID, MSG_ZOOM_OUT_DEDE |
MSG_FULLY_ZOOM_INOUT_ID, MSG_FULLY_ZOOM_INOUT_DEDE |
MSG_LOAD_FILTER_SETTINGS_TITLE_ID, MSG_LOAD_FILTER_SETTINGS_TITLE_DEDE |
MSG_SAVE_FILTER_SETTINGS_TITLE_ID, MSG_SAVE_FILTER_SETTINGS_TITLE_DEDE |
MSG_MAKE_FILTER_SETTINGS_TITLE_ID, MSG_MAKE_FILTER_SETTINGS_TITLE_DEDE |
MSG_ALL_SUPPORTED_FILES_ID, MSG_ALL_SUPPORTED_FILES_DEDE |
MSG_ALL_FILES_ID, MSG_ALL_FILES_DEDE |
MSG_OPEN_AFS_ID, MSG_OPEN_AFS_DEDE |
MSG_OPEN_TXT_ID, MSG_OPEN_TXT_DEDE |
MSG_OPEN_8BF_ID, MSG_OPEN_8BF_DEDE |
MSG_OPEN_PFF_ID, MSG_OPEN_PFF_DEDE |
MSG_OPEN_PRM_ID, MSG_OPEN_PRM_DEDE |
MSG_OPEN_RSRC_ID, MSG_OPEN_RSRC_DEDE |
MSG_OPEN_FFX_ID, MSG_OPEN_FFX_DEDE |
MSG_SAVE_AFS_ID, MSG_SAVE_AFS_DEDE |
MSG_SAVE_PFF_ID, MSG_SAVE_PFF_DEDE |
MSG_SAVE_TXT_ID, MSG_SAVE_TXT_DEDE |
MSG_MAKE_8BF_ID, MSG_MAKE_8BF_DEDE |
MSG_ABOUT_BY_ID, MSG_ABOUT_BY_DEDE |
MSG_ABOUT_BUILT_USING_ID, MSG_ABOUT_BUILT_USING_DEDE |
MSG_ABOUT_LATEST_VERSION_FROM_ID, MSG_ABOUT_LATEST_VERSION_FROM_DEDE |
MSG_ABOUT_CONTACT_AUTHOR_ID, MSG_ABOUT_CONTACT_AUTHOR_DEDE |
} |
/trunk/ui.c |
---|
358,16 → 358,104 |
dispose_preview(); |
return false; // end dialog |
case OPENITEM: |
{ |
TCHAR filters[3000]; |
TCHAR *tmp1, *tmp2; |
size_t len; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
FF_GetMsg(tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_AFS_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.afs)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.afs")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_TXT_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.txt)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.txt")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_8BF_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.8bf)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.8bf")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_PFF_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.pff)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.pff")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_PRM_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.prm)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.prm")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_RSRC_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.bin, *.rsrc)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.bin;*.rsrc")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_OPEN_FFX_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.ffx)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.ffx")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.*)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.*")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
if(!gdata->standalone && choosefiletypes( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pChoose filter settings"), // "\p" means "Pascal string" // TODO: TRANSLATE |
(StringPtr)_strdup("\pChoose filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
& sfr, & reply, types, 2, |
"All supported files (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)\0*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx\0Filter Factory Settings (*.afs, *.txt)\0*.afs;*.txt\0PluginCommander or FFDecomp TXT file (*.txt)\0*.txt\0Filter Factory for Windows, Standalone Filter (*.8bf)\0*.8bf\0Premiere TF/FF Settings (*.pff)\0*.pff\0Premiere TT/FF for Windows, Standalone Filter (*.prm)\0*.prm\0FilterFactory for MacOS, Standalone Filter (*.bin, *.rsrc)\0*.bin\0\"Filters Unlimited\" filter (*.ffx)\0*.ffx\0All files (*.*)\0*.*\0\0" // TODO: TRANSLATE |
&filters[0] |
#else |
TEXT("Choose filter settings"), // TODO: TRANSLATE |
FF_GetMsg_Cpy(MSG_LOAD_FILTER_SETTINGS_TITLE_ID), |
& sfr, & reply, types, 2, |
TEXT("All supported files (*.afs, *.8bf, *.pff, *.prm, *.bin, *.rsrc, *.txt, *.ffx)\0*.afs;*.8bf;*.pff;*.prm;*.bin;*.rsrc;*.txt;*.ffx\0Filter Factory Settings (*.afs, *.txt)\0*.afs;*.txt\0PluginCommander or FFDecomp TXT file (*.txt)\0*.txt\0Filter Factory for Windows, Standalone Filter (*.8bf)\0*.8bf\0Premiere TF/FF Settings (*.pff)\0*.pff\0Premiere TT/FF for Windows, Standalone Filter (*.prm)\0*.prm\0FilterFactory for MacOS, Standalone Filter (*.bin, *.rsrc)\0*.bin\0\"Filters Unlimited\" filter (*.ffx)\0*.ffx\0All files (*.*)\0*.*\0\0") // TODO: TRANSLATE |
,gdata->hWndMainDlg |
&filters[0], gdata->hWndMainDlg |
#endif |
)){ |
// Backup everything, otherwise we might lose parameter data if the loading fails |
385,21 → 473,74 |
} |
} |
break; |
} |
case SAVEITEM: |
{ |
TCHAR filters[3000]; |
TCHAR* tmp1, * tmp2; |
size_t len; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
FF_GetMsg(tmp1, MSG_ALL_SUPPORTED_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.afs, *.pff, *.txt)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.afs;*.pff;*.txt")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_SAVE_AFS_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.afs)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.afs")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_SAVE_PFF_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.pff)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.pff")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_SAVE_TXT_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.txt)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.txt")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.*)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.*")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
if(!gdata->standalone && putfile( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pSave filter settings"), // "\p" means "Pascal string" // TODO: TRANSLATE |
(StringPtr)_strdup("\pSave filter settings"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
(StringPtr)_strdup("\0"), |
TEXT_FILETYPE, SIG_SIMPLETEXT, & reply, & sfr, |
"afs", |
"All supported files (.afs, *.pff, .txt)\0*.afs;*.pff;*.txt\0Filter Factory Settings (*.afs)\0*.afs\0Premiere TF/FF Settings (*.pff)\0*.pff\0PluginCommander TXT file (*.txt)\0*.txt\0All files (*.*)\0*.*\0\0", 1 // TODO: TRANSLATE |
& filters[0], 1 |
#else |
TEXT("Save filter settings"), // TODO: TRANSLATE |
FF_GetMsg_Cpy(MSG_SAVE_FILTER_SETTINGS_TITLE_ID), |
TEXT("\0"), |
TEXT_FILETYPE, SIG_SIMPLETEXT, & reply, & sfr, |
TEXT("afs"), |
TEXT("All supported files (.afs, *.pff, .txt)\0*.afs;*.pff;*.txt\0Filter Factory Settings (*.afs)\0*.afs\0Premiere TF/FF Settings (*.pff)\0*.pff\0PluginCommander TXT file (*.txt)\0*.txt\0All files (*.*)\0*.*\0\0"), 1 // TODO: TRANSLATE |
,gdata->hWndMainDlg |
& filters[0], 1, gdata->hWndMainDlg |
#endif |
)){ |
if(savefile_afs_pff_picotxt(&sfr)) { |
436,6 → 577,7 |
} |
} |
break; |
} |
case MAKEITEM: |
if (gdata->standalone) return true; // should not happen since the button should be grayed out |
/trunk/ui_build.c |
---|
252,21 → 252,47 |
*/ |
GetDlgItemText(dp, TITLEITEM, fname, MAXFIELD); |
{ |
TCHAR filters[3000]; |
TCHAR* tmp1, * tmp2; |
size_t len; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
FF_GetMsg(tmp1, MSG_MAKE_8BF_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.8bf)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.8bf")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
FF_GetMsg(tmp1, MSG_ALL_FILES_ID); |
tmp1 += xstrlen(tmp1); |
len = xstrlen(tmp2 = TEXT(" (*.*)")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
len = xstrlen(tmp2 = TEXT("*.*")); |
memcpy(tmp1, tmp2, len * sizeof(TCHAR)); |
tmp1 += (len + 1); |
#ifdef MACMACHO |
strcat(fname, ".plugin"); |
#endif |
if (putfile( |
#ifdef MAC_ENV |
(StringPtr)_strdup("\pMake standalone filter"), // "\p" means "Pascal string" // TODO: TRANSLATE |
(StringPtr)_strdup("\pMake standalone filter"), // "\p" means "Pascal string" // TODO (Not important yet): TRANSLATE |
(StringPtr)myc2pstr(_strdup(fname)), |
PS_FILTER_FILETYPE, kPhotoshopSignature, & reply, & sfr, |
"8bf", "Filter plugin file (.8bf)\0*.8bf\0\0", 1 // TODO: TRANSLATE |
"8bf", &filters[0], 1 |
#else |
TEXT("Make standalone filter"), // TODO: TRANSLATE |
FF_GetMsg_Cpy(MSG_MAKE_FILTER_SETTINGS_TITLE_ID), |
fname, |
PS_FILTER_FILETYPE, kPhotoshopSignature, & reply, & sfr, |
TEXT("8bf"), |
TEXT("Filter plugin file (.8bf)\0*.8bf\0\0"), 1 // TODO: TRANSLATE |
&filters[0], 1 |
, (HWND)dp |
#endif |
)) { |
275,6 → 301,7 |
else { |
return true; // keep going. Let the user correct their input |
} |
} |
return false; // end dialog |
#ifdef MAC_ENV |
/trunk/ui_win.c |
---|
41,46 → 41,69 |
extern HINSTANCE hDllInstance; |
void DoAbout(AboutRecordPtr pb){ |
char text[1000]; |
char title[200]; |
PlatformData *p = (PlatformData*)pb->platformData; |
if (gdata && gdata->standalone) { |
sprintf(title, "About %s", gdata->parm.szTitle); |
sprintf(text, "%s by %s\n" /* {Title} by {Author} */ |
"%s\n" /* {Copyright} */ |
"\n" |
"This plugin was built using Filter Foundry " VERSION_STR |
TCHAR filters[3000]; |
TCHAR* tmp1, * tmp2; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
//strcpy(gdata->parm.szTitle, "TestTitle"); |
//strcpy(gdata->parm.szAuthor, "TestAuthor"); |
//strcpy(gdata->parm.szCopyright, "TestCopyright"); |
tmp1 += mbstowcs(tmp1, gdata->parm.szTitle, 100); |
FF_GetMsg(tmp1, MSG_ABOUT_BY_ID); tmp1 += xstrlen(tmp1); |
tmp1 += mbstowcs(tmp1, gdata->parm.szAuthor, 100); |
tmp1 += mbstowcs(tmp1, "\n", 100); |
tmp1 += mbstowcs(tmp1, gdata->parm.szCopyright, 100); |
tmp1 += mbstowcs(tmp1, "\n\n", 100); |
FF_GetMsg(tmp1, MSG_ABOUT_BUILT_USING_ID); tmp1 += xstrlen(tmp1); |
tmp1 += mbstowcs(tmp1, VERSION_STR, 100); |
#ifdef _WIN64 |
" (64 bit)\n" |
tmp1 += mbstowcs(tmp1, " (64 bit)\n", 100); |
#else |
" (32 bit)\n" |
tmp1 += mbstowcs(tmp1, " (32 bit)\n", 100); |
#endif |
"(C) 2003-2009 Toby Thain, 2018-" RELEASE_YEAR " Daniel Marschall\n" |
"available from " PROJECT_URL, |
gdata->parm.szTitle, |
gdata->parm.szAuthor, |
gdata->parm.szCopyright); |
tmp1 += mbstowcs(tmp1, "(C) 2003-2009 Toby Thain, 2018-" RELEASE_YEAR " Daniel Marschall\n", 100); |
FF_GetMsg(tmp1, MSG_ABOUT_LATEST_VERSION_FROM_ID); tmp1 += xstrlen(tmp1); |
tmp1 += mbstowcs(tmp1, "\n", 100); |
tmp1 += mbstowcs(tmp1, PROJECT_URL, 100); |
showmessage(&filters[0]); |
} else { |
sprintf(title, "About Filter Foundry"); |
sprintf(text, "Filter Foundry " VERSION_STR |
TCHAR filters[3000]; |
TCHAR* tmp1, * tmp2; |
memset(&filters[0], 0, sizeof(filters)); |
tmp1 = &filters[0]; |
tmp1 += mbstowcs(tmp1, "Filter Foundry " VERSION_STR, 100); |
#ifdef _WIN64 |
" (64 bit)\n" |
tmp1 += mbstowcs(tmp1, " (64 bit)\n", 100); |
#else |
" (32 bit)\n" |
tmp1 += mbstowcs(tmp1, " (32 bit)\n", 100); |
#endif |
"(C) 2003-2009 Toby Thain, 2018-" RELEASE_YEAR " Daniel Marschall\n" |
"\n" |
"Latest version available from\n" |
PROJECT_URL "\n" |
"\nPlease contact the author with any bug reports,\n" |
"suggestions or comments.\n" |
"If you use this program and like it, please consider\n" |
"making a donation."); |
} |
MessageBoxA((HWND)p->hwnd, text, title, MB_TASKMODAL|MB_ICONINFORMATION|MB_OK); |
tmp1 += mbstowcs(tmp1, "(C) 2003-2009 Toby Thain, 2018-" RELEASE_YEAR " Daniel Marschall\n\n", 100); |
FF_GetMsg(tmp1, MSG_ABOUT_LATEST_VERSION_FROM_ID); tmp1 += xstrlen(tmp1); |
tmp1 += mbstowcs(tmp1, "\n", 100); |
tmp1 += mbstowcs(tmp1, PROJECT_URL, 100); |
tmp1 += mbstowcs(tmp1, "\n\n", 100); |
FF_GetMsg(tmp1, MSG_ABOUT_CONTACT_AUTHOR_ID); tmp1 += xstrlen(tmp1); |
showmessage(&filters[0]); |
} |
} |
Boolean simplealert(TCHAR* s){ |
HWND hwnd; |
/trunk/ui_win.rc |
---|
24,6 → 24,11 |
#include "commctrl.h" |
#include "ui.h" |
// TODO: Deutsche Umlaute sind kaputt (UTF8 Zeichen werden gezeigt) |
// Hiermit geht es aber... |
// Meldung "Unbekanntes Pragma" (trotzdem bringt es was?!) |
#pragma code_page(65001) |
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL |
CAUTION_ICO ICON "caution.ico" |
102,6 → 107,71 |
PUSHBUTTON "Cancel", IDCANCEL, 210, 253, 42, 14 |
END |
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN |
ID_MAINDLG DIALOG DISCARDABLE 150,50, 312,277 |
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
CAPTION "Filter Foundry" |
FONT 8, "MS Sans Serif" |
BEGIN |
DEFPUSHBUTTON "OK", IDOK, 260, 253, 42, 14 |
/* "Preview" is a subclass of "Static", defined in ui_win.c */ |
CONTROL "", PREVIEWITEM, "Preview", SS_OWNERDRAW|SS_NOTIFY|SS_SUNKEN, 15,10, 100,100 |
CONTROL "+", ZOOMINITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 102,115, 14,12 |
CONTROL "-", ZOOMOUTITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 15,115, 14,12 |
CONTROL "", ZOOMLEVELITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 38,115, 55,12 |
LTEXT "ctl(0)",FIRSTCTLLABELITEM, 129, 10, 25,12 |
LTEXT "ctl(1)",FIRSTCTLLABELITEM+1, 129, 25, 25,12 |
LTEXT "ctl(2)",FIRSTCTLLABELITEM+2, 129, 40, 25,12 |
LTEXT "ctl(3)",FIRSTCTLLABELITEM+3, 129, 55, 25,12 |
LTEXT "ctl(4)",FIRSTCTLLABELITEM+4, 129, 70, 25,12 |
LTEXT "ctl(5)",FIRSTCTLLABELITEM+5, 129, 85, 25,12 |
LTEXT "ctl(6)",FIRSTCTLLABELITEM+6, 129,100, 25,12 |
LTEXT "ctl(7)",FIRSTCTLLABELITEM+7, 129,115, 25,12 |
CONTROL "",FIRSTCTLITEM, "FoundrySlider", 0, 154,10, 105,10 |
CONTROL "",FIRSTCTLITEM+1, "FoundrySlider", 0, 154,25, 105,10 |
CONTROL "",FIRSTCTLITEM+2, "FoundrySlider", 0, 154,40, 105,10 |
CONTROL "",FIRSTCTLITEM+3, "FoundrySlider", 0, 154,55, 105,10 |
CONTROL "",FIRSTCTLITEM+4, "FoundrySlider", 0, 154,70, 105,10 |
CONTROL "",FIRSTCTLITEM+5, "FoundrySlider", 0, 154,85, 105,10 |
CONTROL "",FIRSTCTLITEM+6, "FoundrySlider", 0, 154,100, 105,10 |
CONTROL "",FIRSTCTLITEM+7, "FoundrySlider", 0, 154,115, 105,10 |
EDITTEXT FIRSTCTLTEXTITEM, 273, 10, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+1, 273, 25, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+2, 273, 40, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+3, 273, 55, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+4, 273, 70, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+5, 273, 85, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+6, 273,100, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+7, 273,115, 24,12, ES_NUMBER|ES_RIGHT |
LTEXT "R =",FIRSTLABELITEM, 15,135, 13,12 |
LTEXT "G =",FIRSTLABELITEM+1, 15,163, 13,12 |
LTEXT "B =",FIRSTLABELITEM+2, 15,191, 13,12 |
LTEXT "A =",FIRSTLABELITEM+3, 15,219, 13,12 |
/* "Caution" is a subclass of "Button", defined in ui_win.c */ |
CONTROL "!",FIRSTICONITEM, "Caution",BS_PUSHBUTTON | BS_CENTER | BS_FLAT | BS_OWNERDRAW | WS_CHILD | WS_CLIPSIBLINGS, 15,147, 16,16 |
CONTROL "!",FIRSTICONITEM+1, "Caution",BS_PUSHBUTTON | BS_CENTER | BS_FLAT | BS_OWNERDRAW | WS_CHILD | WS_CLIPSIBLINGS, 15,175, 16,16 |
CONTROL "!",FIRSTICONITEM+2, "Caution",BS_PUSHBUTTON | BS_CENTER | BS_FLAT | BS_OWNERDRAW | WS_CHILD | WS_CLIPSIBLINGS, 15,203, 16,16 |
CONTROL "!",FIRSTICONITEM+3, "Caution",BS_PUSHBUTTON | BS_CENTER | BS_FLAT | BS_OWNERDRAW | WS_CHILD | WS_CLIPSIBLINGS, 15,231, 16,16 |
EDITTEXT FIRSTEXPRITEM, 35,135, 262, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL |
EDITTEXT FIRSTEXPRITEM+1, 35,163, 262, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL |
EDITTEXT FIRSTEXPRITEM+2, 35,191, 262, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL |
EDITTEXT FIRSTEXPRITEM+3, 35,219, 262, 24, ES_AUTOVSCROLL|ES_MULTILINE|ES_WANTRETURN|WS_VSCROLL |
PUSHBUTTON "Laden...", OPENITEM, 10, 253, 42, 14 |
PUSHBUTTON "Speichern...", SAVEITEM, 60, 253, 42, 14 |
PUSHBUTTON "Erzeugen...", MAKEITEM, 110, 253, 42, 14 |
PUSHBUTTON "Hilfe", HELPITEM, 160, 253, 42, 14 |
PUSHBUTTON "Abbrechen", IDCANCEL, 210, 253, 42, 14 |
END |
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US |
ID_PARAMDLG DIALOG DISCARDABLE 150,50, 308,161 |
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
154,6 → 224,58 |
LTEXT "", PARAMCOPYITEM, 60,137, 140,20 |
END |
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN |
ID_PARAMDLG DIALOG DISCARDABLE 150,50, 308,161 |
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
CAPTION "Filter Foundry" |
FONT 8, "MS Sans Serif" |
BEGIN |
DEFPUSHBUTTON "OK", IDOK, 256,137, 42,14 |
/* "Preview" is a subclass of "Static", defined in ui_win.c */ |
CONTROL "", PREVIEWITEM, "Preview",SS_OWNERDRAW|SS_NOTIFY|SS_SUNKEN, 15,10, 100,100 |
CONTROL "+", ZOOMINITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 103,115, 12,12 |
CONTROL "-", ZOOMOUTITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 15,115, 12,12 |
CONTROL "", ZOOMLEVELITEM, "Button", BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_VISIBLE, 37,115, 56,12 |
LTEXT "ctl(0)",FIRSTCTLLABELITEM, 129, 10, 25,12 |
LTEXT "ctl(1)",FIRSTCTLLABELITEM+1, 129, 25, 25,12 |
LTEXT "ctl(2)",FIRSTCTLLABELITEM+2, 129, 40, 25,12 |
LTEXT "ctl(3)",FIRSTCTLLABELITEM+3, 129, 55, 25,12 |
LTEXT "ctl(4)",FIRSTCTLLABELITEM+4, 129, 70, 25,12 |
LTEXT "ctl(5)",FIRSTCTLLABELITEM+5, 129, 85, 25,12 |
LTEXT "ctl(6)",FIRSTCTLLABELITEM+6, 129,100, 25,12 |
LTEXT "ctl(7)",FIRSTCTLLABELITEM+7, 129,115, 25,12 |
LTEXT "map(0)",FIRSTMAPLABELITEM, 129, 18, 25,12 |
LTEXT "map(1)",FIRSTMAPLABELITEM+1, 129, 48, 25,12 |
LTEXT "map(2)",FIRSTMAPLABELITEM+2, 129, 78, 25,12 |
LTEXT "map(3)",FIRSTMAPLABELITEM+3, 129,108, 25,12 |
CONTROL "",FIRSTCTLITEM, "FoundrySlider", 0, 154, 10, 100,10 |
CONTROL "",FIRSTCTLITEM+1, "FoundrySlider", 0, 154, 25, 100,10 |
CONTROL "",FIRSTCTLITEM+2, "FoundrySlider", 0, 154, 40, 100,10 |
CONTROL "",FIRSTCTLITEM+3, "FoundrySlider", 0, 154, 55, 100,10 |
CONTROL "",FIRSTCTLITEM+4, "FoundrySlider", 0, 154, 70, 100,10 |
CONTROL "",FIRSTCTLITEM+5, "FoundrySlider", 0, 154, 85, 100,10 |
CONTROL "",FIRSTCTLITEM+6, "FoundrySlider", 0, 154,100, 100,10 |
CONTROL "",FIRSTCTLITEM+7, "FoundrySlider", 0, 154,115, 100,10 |
EDITTEXT FIRSTCTLTEXTITEM, 269, 10, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+1, 269, 25, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+2, 269, 40, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+3, 269, 55, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+4, 269, 70, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+5, 269, 85, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+6, 269,100, 24,12, ES_NUMBER|ES_RIGHT |
EDITTEXT FIRSTCTLTEXTITEM+7, 269,115, 24,12, ES_NUMBER|ES_RIGHT |
PUSHBUTTON "Abbrechen", IDCANCEL, 206,137, 42,14 |
LTEXT "", PARAMAUTHORITEM, 10,137, 42,20 |
LTEXT "", PARAMCOPYITEM, 60,137, 140,20 |
END |
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US |
ID_BUILDDLG DIALOG DISCARDABLE 150,50, 208,243 |
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
205,3 → 327,55 |
PUSHBUTTON "Cancel", IDCANCEL, 106,219, 42,14 |
END |
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN |
ID_BUILDDLG DIALOG DISCARDABLE 150,50, 208,243 |
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |
CAPTION "Eigenständigen Filter erzeugen" |
FONT 8, "MS Sans Serif" |
BEGIN |
DEFPUSHBUTTON "OK...", IDOK, 156,219, 42,14 |
/* for initial values of the following EDITTEXT fields, see ui_build.c */ |
EDITTEXT CATEGORYITEM, 50, 10, 148,12 |
EDITTEXT TITLEITEM, 50, 25, 148,12 |
EDITTEXT COPYRIGHTITEM, 50, 40, 148,24, ES_MULTILINE|ES_WANTRETURN |
EDITTEXT AUTHORITEM, 50, 67, 148,12 |
EDITTEXT FIRSTMAPNAMEITEM, 50, 92, 50,12 |
EDITTEXT FIRSTMAPNAMEITEM+1, 50,122, 50,12 |
EDITTEXT FIRSTMAPNAMEITEM+2, 50,152, 50,12 |
EDITTEXT FIRSTMAPNAMEITEM+3, 50,182, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM, 154, 92, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+1, 154,107, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+2, 154,122, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+3, 154,137, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+4, 154,152, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+5, 154,167, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+6, 154,182, 50,12 |
EDITTEXT FIRSTCTLNAMEITEM+7, 154,197, 50,12 |
CHECKBOX "Map 0",FIRSTMAPCHECKITEM, 10, 92, 35,12 |
CHECKBOX "Map 1",FIRSTMAPCHECKITEM+1, 10,122, 35,12 |
CHECKBOX "Map 2",FIRSTMAPCHECKITEM+2, 10,152, 35,12 |
CHECKBOX "Map 3",FIRSTMAPCHECKITEM+3, 10,182, 35,12 |
CHECKBOX "ctl(0)",FIRSTCTLCHECKITEM, 114, 92, 35,12 |
CHECKBOX "ctl(1)",FIRSTCTLCHECKITEM+1, 114,107, 35,12 |
CHECKBOX "ctl(2)",FIRSTCTLCHECKITEM+2, 114,122, 35,12 |
CHECKBOX "ctl(3)",FIRSTCTLCHECKITEM+3, 114,137, 35,12 |
CHECKBOX "ctl(4)",FIRSTCTLCHECKITEM+4, 114,152, 35,12 |
CHECKBOX "ctl(5)",FIRSTCTLCHECKITEM+5, 114,167, 35,12 |
CHECKBOX "ctl(6)",FIRSTCTLCHECKITEM+6, 114,182, 35,12 |
CHECKBOX "ctl(7)",FIRSTCTLCHECKITEM+7, 114,197, 35,12 |
CHECKBOX "Filter schützen",PROTECTITEM, 10,219, 90,12 |
LTEXT "Kategorie:", 100, 10,10, 35,12 |
LTEXT "Titel:", 101, 10,25, 35,12 |
LTEXT "Copyright:", 102, 10,40, 35,12 |
LTEXT "Autor:", 103, 10,67, 35,12 |
PUSHBUTTON "Abbrechen", IDCANCEL, 106,219, 42,14 |
END |