24
24
25
25
BOOL g_bNoGuiMode = FALSE ; // No-GUI mode
26
26
LPWSTR g_pszLogFile = NULL ;
27
- MStringW g_load_options;
28
- MStringW g_save_options;
29
27
30
28
INT LogMessageBoxW (HWND hwnd, LPCWSTR text, LPCWSTR title, UINT uType)
31
29
{
@@ -2172,6 +2170,8 @@ class MMainWnd : public MWindowBase
2172
2170
public:
2173
2171
MDropdownArrow m_arrow; // the language drop-down arrow
2174
2172
MStringW m_commands;
2173
+ MStringW m_load_options;
2174
+ MStringW m_save_options;
2175
2175
2176
2176
BOOL ParseCommandLine (HWND hwnd, INT argc, WCHAR **targv);
2177
2177
@@ -2351,6 +2351,11 @@ class MMainWnd : public MWindowBase
2351
2351
BOOL DoItemSearch (ITEM_SEARCH& search);
2352
2352
BOOL DoItemSearchBang (HWND hwnd, MItemSearchDlg *pDialog);
2353
2353
2354
+ bool DoResLoad (const MStringW& filename, const MStringW& options = L" " );
2355
+ bool DoResSave (const MStringW& filename, const MStringW& options = L" " );
2356
+
2357
+ EGA::arg_t DoEgaResLoad (const EGA::args_t & args);
2358
+ EGA::arg_t DoEgaResSave (const EGA::args_t & args);
2354
2359
EGA::arg_t DoEgaResSearch (const EGA::args_t & args);
2355
2360
EGA::arg_t DoEgaResDelete (const EGA::args_t & args);
2356
2361
EGA::arg_t DoEgaResCloneByName (const EGA::args_t & args);
@@ -11474,55 +11479,14 @@ void MMainWnd::OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
11474
11479
if (command.find (L" load:" ) == 0 )
11475
11480
{
11476
11481
command = command.substr (5 );
11477
-
11478
- BOOL bAutoLoadNearbyResH = g_settings.bAutoLoadNearbyResH ;
11479
- g_settings.bAutoLoadNearbyResH = g_load_options.find (L" (no-load-res-h)" ) != g_load_options.npos ;
11480
- {
11481
- DoLoadFile (hwnd, command.c_str (), 0 , TRUE );
11482
- }
11483
- g_settings.bAutoLoadNearbyResH = bAutoLoadNearbyResH;
11482
+ DoResLoad (command, m_load_options);
11484
11483
continue ;
11485
11484
}
11486
11485
11487
11486
if (command.find (L" save:" ) == 0 )
11488
11487
{
11489
11488
command = command.substr (5 );
11490
- BOOL bUseIDC_STATIC = g_settings.bUseIDC_STATIC ;
11491
- BOOL bAskUpdateResH = g_settings.bAskUpdateResH ;
11492
- BOOL bCompressByUPX = g_settings.bCompressByUPX ;
11493
- BOOL bSepFilesByLang = g_settings.bSepFilesByLang ;
11494
- BOOL bStoreToResFolder = g_settings.bStoreToResFolder ;
11495
- BOOL bSelectableByMacro = g_settings.bSelectableByMacro ;
11496
- BOOL bRedundantComments = g_settings.bRedundantComments ;
11497
- BOOL bWrapManifest = g_settings.bWrapManifest ;
11498
- BOOL bUseBeginEnd = g_settings.bUseBeginEnd ;
11499
- BOOL bRCFileUTF16 = g_settings.bRCFileUTF16 ;
11500
- BOOL bBackup = g_settings.bBackup ;
11501
- g_settings.bUseIDC_STATIC = g_save_options.find (L" (idc-static)" ) != g_save_options.npos ;
11502
- g_settings.bAskUpdateResH = FALSE ;
11503
- g_settings.bCompressByUPX = g_save_options.find (L" (compress)" ) != g_save_options.npos ;
11504
- g_settings.bSepFilesByLang = g_save_options.find (L" (sep-lang)" ) != g_save_options.npos ;
11505
- g_settings.bStoreToResFolder = g_save_options.find (L" (no-res-folder)" ) == g_save_options.npos ;
11506
- g_settings.bSelectableByMacro = g_save_options.find (L" (lang-macro)" ) != g_save_options.npos ;
11507
- g_settings.bRedundantComments = g_save_options.find (L" (less-comments)" ) == g_save_options.npos ;
11508
- g_settings.bWrapManifest = g_save_options.find (L" (wrap-manifest)" ) != g_save_options.npos ;
11509
- g_settings.bUseBeginEnd = g_save_options.find (L" (begin-end)" ) != g_save_options.npos ;
11510
- g_settings.bRCFileUTF16 = g_save_options.find (L" (utf-16)" ) != g_save_options.npos ;
11511
- g_settings.bBackup = g_save_options.find (L" (backup)" ) != g_save_options.npos ;
11512
- {
11513
- DoSaveFile (hwnd, command.c_str ());
11514
- }
11515
- g_settings.bUseIDC_STATIC = bUseIDC_STATIC;
11516
- g_settings.bAskUpdateResH = bAskUpdateResH;
11517
- g_settings.bCompressByUPX = bCompressByUPX;
11518
- g_settings.bSepFilesByLang = bSepFilesByLang;
11519
- g_settings.bStoreToResFolder = bStoreToResFolder;
11520
- g_settings.bSelectableByMacro = bSelectableByMacro;
11521
- g_settings.bRedundantComments = bRedundantComments;
11522
- g_settings.bWrapManifest = bWrapManifest;
11523
- g_settings.bUseBeginEnd = bUseBeginEnd;
11524
- g_settings.bRCFileUTF16 = bRCFileUTF16;
11525
- g_settings.bBackup = bBackup;
11489
+ DoResSave (command, m_save_options);
11526
11490
continue ;
11527
11491
}
11528
11492
}
@@ -15927,6 +15891,76 @@ MStringW GetRisohTemplate(const MIdOrString& type, WORD wLang)
15927
15891
15928
15892
static MMainWnd *s_pMainWnd = NULL ;
15929
15893
15894
+ bool MMainWnd::DoResLoad (const MStringW& filename, const MStringW& options)
15895
+ {
15896
+ bool bOK;
15897
+ BOOL bNoGuiMode = g_bNoGuiMode;
15898
+ g_bNoGuiMode = TRUE ;
15899
+ BOOL bAutoLoadNearbyResH = g_settings.bAutoLoadNearbyResH ;
15900
+ g_settings.bAutoLoadNearbyResH = options.find (L" (no-load-res-h)" ) != options.npos ;
15901
+ {
15902
+ bOK = !!DoLoadFile (m_hwnd, filename.c_str (), 0 , TRUE );
15903
+ }
15904
+ g_settings.bAutoLoadNearbyResH = bAutoLoadNearbyResH;
15905
+ g_bNoGuiMode = bNoGuiMode;
15906
+ return bOK;
15907
+ }
15908
+
15909
+ bool MMainWnd::DoResSave (const MStringW& filename, const MStringW& options)
15910
+ {
15911
+ bool bOK;
15912
+ BOOL bNoGuiMode = g_bNoGuiMode;
15913
+ g_bNoGuiMode = TRUE ;
15914
+ BOOL bUseIDC_STATIC = g_settings.bUseIDC_STATIC ;
15915
+ BOOL bAskUpdateResH = g_settings.bAskUpdateResH ;
15916
+ BOOL bCompressByUPX = g_settings.bCompressByUPX ;
15917
+ BOOL bSepFilesByLang = g_settings.bSepFilesByLang ;
15918
+ BOOL bStoreToResFolder = g_settings.bStoreToResFolder ;
15919
+ BOOL bSelectableByMacro = g_settings.bSelectableByMacro ;
15920
+ BOOL bRedundantComments = g_settings.bRedundantComments ;
15921
+ BOOL bWrapManifest = g_settings.bWrapManifest ;
15922
+ BOOL bUseBeginEnd = g_settings.bUseBeginEnd ;
15923
+ BOOL bRCFileUTF16 = g_settings.bRCFileUTF16 ;
15924
+ BOOL bBackup = g_settings.bBackup ;
15925
+ g_settings.bUseIDC_STATIC = options.find (L" (idc-static)" ) != options.npos ;
15926
+ g_settings.bAskUpdateResH = FALSE ;
15927
+ g_settings.bCompressByUPX = options.find (L" (compress)" ) != options.npos ;
15928
+ g_settings.bSepFilesByLang = options.find (L" (sep-lang)" ) != options.npos ;
15929
+ g_settings.bStoreToResFolder = options.find (L" (no-res-folder)" ) == options.npos ;
15930
+ g_settings.bSelectableByMacro = options.find (L" (lang-macro)" ) != options.npos ;
15931
+ g_settings.bRedundantComments = options.find (L" (less-comments)" ) == options.npos ;
15932
+ g_settings.bWrapManifest = options.find (L" (wrap-manifest)" ) != options.npos ;
15933
+ g_settings.bUseBeginEnd = options.find (L" (begin-end)" ) != options.npos ;
15934
+ g_settings.bRCFileUTF16 = options.find (L" (utf-16)" ) != options.npos ;
15935
+ g_settings.bBackup = options.find (L" (backup)" ) != options.npos ;
15936
+ {
15937
+ bOK = !!DoSaveFile (m_hwnd, filename.c_str ());
15938
+ }
15939
+ g_settings.bUseIDC_STATIC = bUseIDC_STATIC;
15940
+ g_settings.bAskUpdateResH = bAskUpdateResH;
15941
+ g_settings.bCompressByUPX = bCompressByUPX;
15942
+ g_settings.bSepFilesByLang = bSepFilesByLang;
15943
+ g_settings.bStoreToResFolder = bStoreToResFolder;
15944
+ g_settings.bSelectableByMacro = bSelectableByMacro;
15945
+ g_settings.bRedundantComments = bRedundantComments;
15946
+ g_settings.bWrapManifest = bWrapManifest;
15947
+ g_settings.bUseBeginEnd = bUseBeginEnd;
15948
+ g_settings.bRCFileUTF16 = bRCFileUTF16;
15949
+ g_settings.bBackup = bBackup;
15950
+ g_bNoGuiMode = bNoGuiMode;
15951
+ return bOK;
15952
+ }
15953
+
15954
+ EGA::arg_t EGA_FN EGA_RES_load (const EGA::args_t & args)
15955
+ {
15956
+ return s_pMainWnd->DoEgaResLoad (args);
15957
+ }
15958
+
15959
+ EGA::arg_t EGA_FN EGA_RES_save (const EGA::args_t & args)
15960
+ {
15961
+ return s_pMainWnd->DoEgaResSave (args);
15962
+ }
15963
+
15930
15964
EGA::arg_t EGA_FN EGA_RES_search (const EGA::args_t & args)
15931
15965
{
15932
15966
return s_pMainWnd->DoEgaResSearch (args);
@@ -16003,6 +16037,56 @@ EGA::arg_t EGA_set_id_or_str(const MIdOrString& id)
16003
16037
}
16004
16038
}
16005
16039
16040
+ EGA::arg_t MMainWnd::DoEgaResLoad (const EGA::args_t & args)
16041
+ {
16042
+ using namespace EGA ;
16043
+ arg_t arg0, arg1;
16044
+
16045
+ if (args.size () >= 1 )
16046
+ arg0 = EGA_eval_arg (args[0 ], true );
16047
+ if (args.size () >= 2 )
16048
+ arg1 = EGA_eval_arg (args[1 ], false );
16049
+
16050
+ bool ret;
16051
+ MAnsiToWide str0 (CP_UTF8, EGA_get_str (arg0));
16052
+ if (args.size () >= 2 )
16053
+ {
16054
+ MAnsiToWide str1 (CP_UTF8, EGA_get_str (arg1));
16055
+ ret = DoResLoad (str0.c_str (), str1.c_str ());
16056
+ }
16057
+ else
16058
+ {
16059
+ ret = DoResLoad (str0.c_str (), L" " );
16060
+ }
16061
+
16062
+ return make_arg<AstInt>(ret);
16063
+ }
16064
+
16065
+ EGA::arg_t MMainWnd::DoEgaResSave (const EGA::args_t & args)
16066
+ {
16067
+ using namespace EGA ;
16068
+ arg_t arg0, arg1;
16069
+
16070
+ if (args.size () >= 1 )
16071
+ arg0 = EGA_eval_arg (args[0 ], true );
16072
+ if (args.size () >= 2 )
16073
+ arg1 = EGA_eval_arg (args[1 ], false );
16074
+
16075
+ bool ret;
16076
+ MAnsiToWide str0 (CP_UTF8, EGA_get_str (arg0));
16077
+ if (args.size () >= 2 )
16078
+ {
16079
+ MAnsiToWide str1 (CP_UTF8, EGA_get_str (arg1));
16080
+ ret = DoResSave (str0.c_str (), str1.c_str ());
16081
+ }
16082
+ else
16083
+ {
16084
+ ret = DoResSave (str0.c_str (), L" " );
16085
+ }
16086
+
16087
+ return make_arg<AstInt>(ret);
16088
+ }
16089
+
16006
16090
EGA::arg_t MMainWnd::DoEgaResSearch (const EGA::args_t & args)
16007
16091
{
16008
16092
using namespace EGA ;
@@ -16391,6 +16475,8 @@ void EGA_extension(void)
16391
16475
EGA_add_fn (" RES_get_binary" , 0 , 3 , EGA_RES_get_binary, " RES_get_binary([type[, name[, lang]]])" );
16392
16476
EGA_add_fn (" RES_set_binary" , 4 , 4 , EGA_RES_set_binary, " RES_set_binary(type, name, lang, bin)" );
16393
16477
EGA_add_fn (" RES_const" , 1 , 1 , EGA_RES_const, " RES_const(name)" );
16478
+ EGA_add_fn (" RES_load" , 1 , 2 , EGA_RES_load, " RES_load(filename[, options])" );
16479
+ EGA_add_fn (" RES_save" , 1 , 2 , EGA_RES_save, " RES_save(filename[, options])" );
16394
16480
EGA_add_fn (" RES_search" , 0 , 3 , EGA_RES_search, " RES_search([type[, name[, lang]]])" );
16395
16481
EGA_add_fn (" RES_select" , 0 , 3 , EGA_RES_select, " RES_select([type[, name[, lang]]])" );
16396
16482
EGA_add_fn (" RES_unload_resh" , 0 , 0 , EGA_RES_unload_resh, " EGA_RES_unload_resh()" );
@@ -16444,7 +16530,7 @@ BOOL MMainWnd::ParseCommandLine(HWND hwnd, INT argc, WCHAR **targv)
16444
16530
lstrcmpiW (arg, L" --load-options" ) == 0 )
16445
16531
{
16446
16532
arg = targv[++iarg];
16447
- g_load_options = arg;
16533
+ m_load_options = arg;
16448
16534
continue ;
16449
16535
}
16450
16536
@@ -16461,7 +16547,7 @@ BOOL MMainWnd::ParseCommandLine(HWND hwnd, INT argc, WCHAR **targv)
16461
16547
lstrcmpiW (arg, L" --save-options" ) == 0 )
16462
16548
{
16463
16549
arg = targv[++iarg];
16464
- g_save_options = arg;
16550
+ m_save_options = arg;
16465
16551
continue ;
16466
16552
}
16467
16553
0 commit comments