• R/O
  • SSH
  • HTTPS

vima19: Commit


Commit MetaInfo

Revision765 (tree)
Time2022-08-14 23:22:23
Authorhgtterry

Log Message

Equity_SB 140822 New FileIO (WIP)

Change Summary

Incremental Difference

--- Anim19_OSDN/VM_FileIO.cpp (revision 764)
+++ Anim19_OSDN/VM_FileIO.cpp (nonexistent)
@@ -1,524 +0,0 @@
1-#include "stdafx.h"
2-#include "GD19_App.h"
3-#include "resource.h"
4-#include <tchar.h>
5-#include <shellapi.h>
6-#include "Shlobj.h"
7-#include "io.h"
8-#include "VM_FileIO.h"
9-
10-
11-VM_FileIO::VM_FileIO()
12-{
13-
14- Scene_FileName[0] = 0;
15- Scene_Path_FileName[0] = 0;
16-
17- JustFileName[0] = 0;
18-
19- Cannceled = 0;
20-}
21-
22-
23-VM_FileIO::~VM_FileIO()
24-{
25-}
26-
27-
28-// *************************************************************************
29-// * OpenFile Terry Bernie *
30-// *************************************************************************
31-bool VM_FileIO::OpenFile(char* Extension, char* Title, char* StartDirectory)
32-{
33- strcpy(Scene_FileName, "");
34- strcpy(Scene_Path_FileName, "");
35-
36- ZeroMemory(&ofn, sizeof(ofn));
37- ofn.lStructSize = sizeof(ofn);
38- ofn.hwndOwner = App->MainHwnd;
39- ofn.hInstance = App->hInst;
40- ofn.lpstrFile = Scene_Path_FileName; // full path and file name
41- ofn.nMaxFile = sizeof(Scene_Path_FileName);
42- ofn.lpstrFilter = Extension;
43-
44- ofn.nFilterIndex = 1;
45- ofn.lpstrFileTitle = Scene_FileName; // Just File Name
46- ofn.nMaxFileTitle = sizeof(Scene_FileName);;
47- ofn.lpstrInitialDir = StartDirectory;
48- ofn.lpstrTitle = Title;
49- ofn.Flags = OFN_PATHMUSTEXIST |
50- OFN_FILEMUSTEXIST |
51- OFN_EXPLORER |
52- OFN_HIDEREADONLY |
53- OFN_FILEMUSTEXIST;
54-
55- if (GetOpenFileName(&ofn) == TRUE)
56- {
57- return 1;
58- }
59- return 0;
60-}
61-
62-// *************************************************************************
63-// * OpenTextureFile Terry Bernie *
64-// *************************************************************************
65-bool VM_FileIO::OpenTextureFile(char* Title, char* StartDirectory, bool SaveLocation)
66-{
67- strcpy(Texture_FileName, "");
68- strcpy(Texture_Path_FileName, "");
69-
70- ZeroMemory(&ofn, sizeof(ofn));
71- ofn.lStructSize = sizeof(ofn);
72- ofn.hwndOwner = App->Fdlg;
73- ofn.hInstance = App->hInst;
74- ofn.lpstrFile = Texture_Path_FileName; // full path and file name
75- ofn.nMaxFile = sizeof(Texture_Path_FileName);
76- ofn.lpstrFilter = "Available Formats\0*.bmp;*.tga;*.jpg;*.png;*.dds;*.pcx;*.tif;*.tiff;\0Windows Bitmap (*.bmp)\0*.bmp\0Truevision Targa (*.tga) \0*.tga\0JPEG (*.jpg) \0*.jpg\0Portable Network Graphics (*.png) \0*.png\0Direct Draw (*.dds) \0*.dds\0ZSoft PCX (*.pcx) \0*.pcx\0Tagged Image File Format (*.tif) \0*.tif\0Tagged Image File Format (*.tiff) \0*.tiff\0";
77-
78- ofn.nFilterIndex = 1;
79- ofn.lpstrFileTitle = Texture_FileName; // Just File Name
80- ofn.nMaxFileTitle = sizeof(Texture_FileName);
81- ofn.lpstrInitialDir = StartDirectory;
82- ofn.lpstrTitle = Title;
83- ofn.Flags = OFN_PATHMUSTEXIST |
84- OFN_FILEMUSTEXIST |
85- OFN_EXPLORER |
86- OFN_HIDEREADONLY |
87- OFN_FILEMUSTEXIST;
88- if (GetOpenFileName(&ofn) == TRUE)
89- {
90- if (SaveLocation == 1)
91- {
92- //_getcwd(S_Folders[0]->TempLoadLocation,1024);
93- }
94-
95- return 1;
96- }
97-
98- return 0;
99-}
100-
101-// ************************************************************************
102-// * SaveFileCom Terry Bernie *
103-// *************************************************************************
104-bool VM_FileIO::SaveFileCom(char* Extension, char* Title, char* StartDirectory)
105-{
106- ZeroMemory(&ofn, sizeof(ofn));
107- ofn.lStructSize = sizeof(ofn);
108- ofn.hwndOwner = App->MainHwnd;
109- ofn.hInstance = App->hInst;
110- ofn.lpstrFile = mSavePathFileCom;
111- ofn.nMaxFile = sizeof(mSavePathFileCom);
112- ofn.lpstrFilter = Extension;
113- ofn.nFilterIndex = 1;
114- ofn.lpstrFileTitle = mSaveFileCom;
115- ofn.nMaxFileTitle = sizeof(mSaveFileCom);
116- ofn.lpstrInitialDir = StartDirectory;
117- ofn.lpstrTitle = Title;
118- ofn.Flags = //OFN_PATHMUSTEXIST |
119- OFN_NOCHANGEDIR |
120- //OFN_FILEMUSTEXIST |
121- OFN_EXPLORER |
122- OFN_HIDEREADONLY |
123- OFN_OVERWRITEPROMPT;
124-
125- if (GetSaveFileName(&ofn) == TRUE)
126- {
127- return 1;
128- }
129-
130- return 0;
131-}
132-
133-// *************************************************************************
134-// * SaveFile *
135-// *************************************************************************
136-bool VM_FileIO::SaveFile(char* Extension, char* Title, char* FileName)
137-{
138-
139- Full_Path_And_File[0] = 0;
140- Just_FileName[0] = 0;
141-
142- strcpy(Full_Path_And_File, FileName);
143- strcpy(Just_FileName, FileName);
144-
145- ZeroMemory(&ofn, sizeof(ofn));
146- ofn.lStructSize = sizeof(ofn);
147- ofn.hwndOwner = App->MainHwnd;
148- ofn.hInstance = App->hInst;
149- ofn.lpstrFile = Full_Path_And_File; // Full Path
150- ofn.nMaxFile = sizeof(Full_Path_And_File);
151- ofn.lpstrFilter = Extension;
152- ;
153- ofn.nFilterIndex = 1;
154- ofn.lpstrFileTitle = Just_FileName;
155- ofn.nMaxFileTitle = sizeof(Just_FileName); // Just File name
156- ofn.lpstrInitialDir = "";
157- ofn.lpstrTitle = Title;
158- ofn.Flags = OFN_PATHMUSTEXIST |
159- OFN_FILEMUSTEXIST |
160- OFN_EXPLORER |
161- OFN_HIDEREADONLY |
162- OFN_OVERWRITEPROMPT;
163-
164- if (GetSaveFileName(&ofn) == TRUE)
165- {
166-
167- return 1;
168- }
169-
170- return 0;
171-}
172-
173-// *************************************************************************
174-// * GetColor Terry Bernie *
175-// *************************************************************************
176-bool VM_FileIO::GetColor()
177-{
178- Cannceled = 0;
179- COLORREF ccref[8];//custom colors
180- COLORREF selcolor = 0x000000;//the default selected color
181-
182- memset(&color, 0, sizeof(color));
183- color.lStructSize = sizeof(CHOOSECOLOR);
184- color.hwndOwner = App->MainHwnd;
185- color.lpCustColors = ccref;
186- color.rgbResult = selcolor;
187- color.Flags = CC_RGBINIT;
188-
189- if (ChooseColor(&color))
190- {
191- Cannceled = 0;
192- selcolor = color.rgbResult;
193- return 1;
194- }
195-
196- Cannceled = 1;
197- return 1;
198-}
199-
200-// *************************************************************************
201-// * Update_File_Info Terry *
202-// *************************************************************************
203-bool VM_FileIO::Update_File_Info(char* Full_Path, char* File_Name)
204-{
205- strcpy(App->Cl_Scene_Data->S_Scene[0]->TerrainFileName, File_Name);
206- strcpy(App->Cl_Scene_Data->S_Scene[0]->GDSceneName, File_Name);
207- strcpy(App->Cl_Scene_Data->S_Scene[0]->Full_Path_AndFile, Full_Path);
208-
209- char mPath[256];
210- strcpy(mPath, Full_Path);
211- int FLen = strlen(File_Name);
212- int PLen = strlen(Full_Path);
213- mPath[PLen - FLen] = 0;
214- strcpy(App->LevelDirectory, mPath);
215- strcpy(App->Cl_Scene_Data->S_Scene[0]->Level_Directory, mPath);
216-
217- char Temp[256];
218- strcpy(Temp, File_Name);
219- int Len = strlen(Temp);
220- Temp[Len - 8] = 0;
221- strcpy(App->Cl_Scene_Data->S_Scene[0]->LevelName, Temp);
222-
223- return 0;
224-}
225-
226-// *************************************************************************
227-// * SearchFolders Terry Bernie *
228-// *************************************************************************
229-bool VM_FileIO::SearchFolders(char* Path, char* File)
230-{
231- char pSearchPath[1024];
232-
233- WIN32_FIND_DATA FindFileData;
234- HANDLE hFind;
235-
236- strcpy(pSearchPath, Path);
237- strcat(pSearchPath, File);
238-
239- hFind = FindFirstFile(pSearchPath, &FindFileData);
240- if (hFind == INVALID_HANDLE_VALUE)
241- {
242- return 0;
243- }
244- else
245- {
246- FindClose(hFind);
247- return 1;
248- }
249-
250- return 0;
251-}
252-
253-// *************************************************************************
254-// * Create_OutPut_Folder Terry Bernie *
255-// *************************************************************************
256-bool VM_FileIO::Create_Output_Folder(char* Extension)
257-{
258- /*strcpy(OutputFolder, "");
259-
260- strcpy(OutputFolder, App->Com_CDialogs->szSelectedDir);
261- strcat(OutputFolder, App->CL_Vm_Model->JustName);
262- strcat(OutputFolder, Extension);
263- strcat(OutputFolder, "\\");
264-
265- CreateDirectory(OutputFolder, NULL);*/
266- return 0;
267-}
268-
269-// *************************************************************************
270-// * Init_History() Terry Bernie *
271-// *************************************************************************
272-void VM_FileIO::Init_History()
273-{
274- char DirCheck[1024];
275- strcpy(DirCheck, UserData_Folder);
276- strcat(DirCheck, "\\");
277- strcat(DirCheck, "Equity");
278-
279- bool check = 0;
280- check = Search_For_Folder(DirCheck);
281- if (check == 0)
282- {
283- mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
284-
285- CreateDirectory(DirCheck, NULL);
286- ResentHistory_Clear(); // Set all slots to Empty
287- Save_FileHistory();
288- LoadHistory();
289- }
290- else
291- {
292- LoadHistory();
293- }
294-}
295-// *************************************************************************
296-// * LoadHistory() Terry Bernie *
297-// *************************************************************************
298-void VM_FileIO::LoadHistory()
299-{
300- mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
301-
302- char buffer[1024];
303- char buf[1024];
304-
305- strcpy(buf, UserData_Folder);
306- strcat(buf, "\\Equity\\Equity_SB.ini");
307-
308- ReadRecentFiles = fopen(buf, "rt");
309-
310- if (!ReadRecentFiles)
311- {
312- App->Say("Cant Find Recent Files");
313- return;
314- }
315-
316- // Read in File Names from RecentFiles.ini
317- for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
318- {
319- memset(buffer, 0, 1024);
320- fgets(buffer, 1024, ReadRecentFiles);
321-
322- char Path[1024];
323- strcpy(Path, buffer);
324- int Len = strlen(Path);
325- Path[Len - 1] = 0;
326-
327- mPreviousFiles[i] = std::string(Path);
328- }
329-
330- fclose(ReadRecentFiles);
331-
332- mHistoryMenu = CreateMenu();
333-
334- // Check for empty slots and gray out
335- for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
336- {
337- char szText[1024];
338- strcpy(szText, mPreviousFiles[i].c_str());
339-
340- UINT iFlags = 0;
341- int Result = 0;
342- Result = strcmp("<empty>", szText);
343- if (Result == 0)
344- {
345- iFlags = MF_GRAYED | MF_DISABLED;
346- }
347-
348- AppendMenu(mHistoryMenu, MF_STRING | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
349- }
350-
351- ModifyMenu(GetMenu(App->MainHwnd), ID_FILE_RECENTFILES, MF_BYCOMMAND | MF_POPUP,
352- (UINT_PTR)mHistoryMenu, "Recent files");
353- return;
354-}
355-
356-// *************************************************************************
357-// * Save_FileHistory Terry Bernie *
358-// *************************************************************************
359-void VM_FileIO::Save_FileHistory()
360-{
361-
362- // WriteRecentFiles = 0;
363-
364- char buf[1024];
365- strcpy(buf, UserData_Folder);
366- strcat(buf, "\\Equity\\Equity_SB.ini");
367-
368-
369- WriteRecentFiles = fopen(buf, "wt");
370-
371- if (!WriteRecentFiles)
372- {
373- App->Say("Why Cant Find Recent Files");
374- return;
375- }
376-
377- // Save out to RecentFile.ini
378- for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
379- {
380- char szName[1024];
381- strcpy(szName, mPreviousFiles[i].c_str());
382-
383- fprintf(WriteRecentFiles, "%s\n", szName);
384- }
385-
386- fclose(WriteRecentFiles);
387- return;
388-}
389-// *************************************************************************
390-// * RecentFileHistory_Update Terry Bernie *
391-// *************************************************************************
392-void VM_FileIO::RecentFileHistory_Update()
393-{
394- if (!mHistoryMenu)return;
395-
396- std::string sz = std::string(App->SBC_FileIO->Project_Path_File_Name);
397- if (mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] == sz)return;
398-
399- // add the new file to the list of recent files
400- for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES - 1; ++i)
401- {
402- mPreviousFiles[i] = mPreviousFiles[i + 1];
403- }
404-
405- mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] = sz;
406-
407- // Check for empty slots and gray out
408- for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
409- {
410- char szText[1024];
411- strcpy(szText, mPreviousFiles[i].c_str());
412-
413- UINT iFlags = 0;
414- int Result = 0;
415- Result = strcmp("<empty>", szText);
416- if (Result == 0)
417- {
418- iFlags = MF_GRAYED | MF_DISABLED;
419- }
420-
421- ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
422- MF_STRING | MF_BYCOMMAND | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
423- }
424-
425- // Save Changes
426- Save_FileHistory();
427-
428- return;
429-}
430-// *************************************************************************
431-// * ResentHistory_Clear Terry Bernie Hazel Nathan *
432-// *************************************************************************
433-void VM_FileIO::ResentHistory_Clear()
434-{
435- App->Cl_Dialogs->YesNo("Delete file history.", "Are you sure all File history will be Deleted Procede.");
436- if (App->Cl_Dialogs->Canceled == 1)
437- {
438- return;
439- }
440-
441- // Set all slots to <empty>
442- for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
443- {
444- mPreviousFiles[i] = std::string("<empty>");
445- }
446-
447- // Repopulate Menu system
448- for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
449- {
450- ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
451- MF_STRING | MF_BYCOMMAND | MF_GRAYED | MF_DISABLED, EQUITY_RECENT_FILE_ID(i), "<empty>");
452- }
453-
454- // Save Changes
455- Save_FileHistory();
456-}
457-
458-// *************************************************************************
459-// * Search_For_Folder Terry Bernie *
460-// *************************************************************************
461-bool VM_FileIO::Search_For_Folder(char* FolderPath)
462-{
463- char pSearchPath[1024];
464-
465- WIN32_FIND_DATA FindFileData;
466- HANDLE hFind;
467-
468- strcpy(pSearchPath, FolderPath);
469-
470- hFind = FindFirstFile(pSearchPath, &FindFileData);
471- if (hFind == INVALID_HANDLE_VALUE)
472- {
473- return 0;
474- }
475- else
476- {
477- FindClose(hFind);
478- return 1;
479- }
480-
481- return 0;
482-}
483-
484-// *************************************************************************
485-// * CheckPath Terry Bernie *
486-// *************************************************************************
487-void VM_FileIO::CheckPath(char *pString, char *FileName)
488-{
489- JustFileName[0] = 0;
490-
491- int Count = 0;
492- int Mark = 0;
493- bool Test = 0;
494-
495- while (*pString != 0)
496- {
497- if (*pString == '\\' || *pString == '/')
498- {
499- Test = 1;
500- Mark = Count;
501- }
502-
503- Count++;
504- pString++;
505- }
506-
507- if (Mark == 0 && Test == 0)
508- {
509- strcpy(JustFileName, FileName);
510- }
511- else
512- {
513- if (Mark == 0 && Test == 1)
514- {
515- Mark = 1;
516- strcpy(JustFileName, (FileName + Mark));
517- }
518- else
519- {
520- strcpy(JustFileName, (FileName + Mark) + 1);
521- }
522- }
523-}
524-
--- Anim19_OSDN/VM_FileIO.h (revision 764)
+++ Anim19_OSDN/VM_FileIO.h (nonexistent)
@@ -1,71 +0,0 @@
1-#pragma once
2-class VM_FileIO
3-{
4-public:
5- VM_FileIO();
6- ~VM_FileIO();
7-
8- bool OpenTextureFile(char* Title, char* StartDirectory, bool SaveLocation);
9-
10- bool OpenFile(char* Extension, char* Title, char* StartDirectory);
11- bool SaveFileCom(char* Extension, char* Title, char* StartDirectory);
12- bool SaveFile(char* Extension, char* Title, char* FileName); // ?
13-
14- bool GetColor();
15-
16- bool Update_File_Info(char* Full_Path, char* File_Name);
17-
18- bool SearchFolders(char* Path, char* File);
19-
20- bool Create_Output_Folder(char* Extension);
21-
22- void Init_History();
23-
24- void LoadHistory();
25-
26- void Save_FileHistory();
27- void RecentFileHistory_Update();
28- void ResentHistory_Clear();
29-
30- bool Search_For_Folder(char* FolderPath);
31- void VM_FileIO::CheckPath(char *pString, char *FileName);
32-
33- // ----------------------------------
34- bool Cannceled;
35-
36- char Texture_FileName[255];
37- char Texture_Path_FileName[1024];
38-
39- char Scene_FileName[255];
40- char Scene_Path_FileName[1024];
41-
42- char mSaveFileCom[255];
43- char mSavePathFileCom[255];
44-
45- char Full_Path_And_File[1024];
46- char Just_FileName[1024];
47-
48- char OutputFolder[1024];
49-
50- char UserData_Folder[MAX_PATH];
51- char DeskTop_Folder[MAX_PATH];
52-
53- char JustFileName[256];
54-
55- std::vector<std::string> mPreviousFiles;
56-
57- CHOOSECOLOR color;
58- OPENFILENAME ofn;
59-
60-protected:
61-
62-
63- FILE *WriteRecentFiles;
64- FILE *ReadRecentFiles;
65-
66- HMENU mHistoryMenu;
67-
68-#define EQUITY_NUM_RECENT_FILES 0x8
69-#define EQUITY_RECENT_FILE_ID(_n_) (5000 + _n_)
70-};
71-
--- Anim19_OSDN/GD19_App.cpp (revision 764)
+++ Anim19_OSDN/GD19_App.cpp (revision 765)
@@ -56,7 +56,6 @@
5656 Cl_Keyboard = nullptr;
5757
5858 // Vima19 19/03/20
59- CL_Vm_FileIO = nullptr;
6059 CL_Vm_ImGui = nullptr;
6160 Cl_Vm_Dimensions = nullptr;
6261 Cl_Vm_Preferences = nullptr;
@@ -211,7 +210,6 @@
211210 Cl_Keyboard = new GD_Keyboard();
212211
213212 // Vima19 19/03/20
214- CL_Vm_FileIO = new VM_FileIO();
215213 CL_Vm_ImGui = new VM_ImGui();
216214 Cl_Vm_Dimensions = new VM_Dimensions();
217215 Cl_Vm_Preferences = new VM_Preferences();
@@ -252,7 +250,7 @@
252250 {
253251 wsprintf(Udir, "%ls", path);
254252 CoTaskMemFree(path);
255- strcpy(App->CL_Vm_FileIO->UserData_Folder, Udir);
253+ strcpy(App->SBC_FileIO->UserData_Folder, Udir);
256254 }
257255 else
258256 {
@@ -265,7 +263,7 @@
265263 {
266264 wsprintf(Deskdir, "%ls", d_path);
267265 CoTaskMemFree(d_path);
268- strcpy(App->CL_Vm_FileIO->DeskTop_Folder, Deskdir);
266+ strcpy(App->SBC_FileIO->DeskTop_Folder, Deskdir);
269267 }
270268 else
271269 {
--- Anim19_OSDN/GD19_App.h (revision 764)
+++ Anim19_OSDN/GD19_App.h (revision 765)
@@ -48,7 +48,6 @@
4848 #include "GD_Keyboard.h"
4949
5050 // Vima19 19/03/20
51-#include "VM_FileIO.h"
5251 #include "VM_ImGui.h"
5352 #include "VM_Dimensions.h"
5453 #include "VM_Preferences.h"
@@ -109,7 +108,6 @@
109108 GD_Keyboard* Cl_Keyboard;
110109
111110 // Vima19 19/03/20
112- VM_FileIO* CL_Vm_FileIO;
113111 VM_ImGui* CL_Vm_ImGui;
114112 VM_Dimensions* Cl_Vm_Dimensions;
115113 VM_Preferences* Cl_Vm_Preferences;
--- Anim19_OSDN/GD19_Environment.cpp (revision 764)
+++ Anim19_OSDN/GD19_Environment.cpp (revision 765)
@@ -847,13 +847,13 @@
847847 result = strcmp(btext, "Colour");
848848 if (result == 0)
849849 {
850- App->CL_Vm_FileIO->GetColor();
850+ App->SBC_FileIO->GetColor();
851851
852- if (App->CL_Vm_FileIO->Cannceled == 0)
852+ if (App->SBC_FileIO->Cannceled == 0)
853853 {
854- int Red = GetRValue(App->CL_Vm_FileIO->color.rgbResult);
855- int Green = GetGValue(App->CL_Vm_FileIO->color.rgbResult);
856- int Blue = GetBValue(App->CL_Vm_FileIO->color.rgbResult);
854+ int Red = GetRValue(App->SBC_FileIO->color.rgbResult);
855+ int Green = GetGValue(App->SBC_FileIO->color.rgbResult);
856+ int Blue = GetBValue(App->SBC_FileIO->color.rgbResult);
857857
858858 App->Cl_Scene_Data->S_Scene[0]->Fog[0].Colour.x = (float)Red / 256;
859859 App->Cl_Scene_Data->S_Scene[0]->Fog[0].Colour.y = (float)Green / 256;;
@@ -887,13 +887,13 @@
887887 {
888888
889889 //strcpy_s(TextInt,App->GDCL_Scene_Data->S_Scene[0]->Fog[0].Mode);
890- App->CL_Vm_FileIO->GetColor();
890+ App->SBC_FileIO->GetColor();
891891
892- if (App->CL_Vm_FileIO->Cannceled == 0)
892+ if (App->SBC_FileIO->Cannceled == 0)
893893 {
894- int Red = GetRValue(App->CL_Vm_FileIO->color.rgbResult);
895- int Green = GetGValue(App->CL_Vm_FileIO->color.rgbResult);
896- int Blue = GetBValue(App->CL_Vm_FileIO->color.rgbResult);
894+ int Red = GetRValue(App->SBC_FileIO->color.rgbResult);
895+ int Green = GetGValue(App->SBC_FileIO->color.rgbResult);
896+ int Blue = GetBValue(App->SBC_FileIO->color.rgbResult);
897897
898898 App->Cl_Scene_Data->S_Scene[0]->AmbientColour = Ogre::Vector3((float)Red/256,(float)Green/256,(float)Blue/256);
899899
@@ -910,13 +910,13 @@
910910 {
911911
912912 // strcpy_s(TextInt,App->GDCL_Scene_Data->S_Scene[0]->Fog[0].Mode);
913- App->CL_Vm_FileIO->GetColor();
913+ App->SBC_FileIO->GetColor();
914914
915- if (App->CL_Vm_FileIO->Cannceled==0)
915+ if (App->SBC_FileIO->Cannceled==0)
916916 {
917- int Red=GetRValue(App->CL_Vm_FileIO->color.rgbResult);
918- int Green=GetGValue(App->CL_Vm_FileIO->color.rgbResult);
919- int Blue=GetBValue(App->CL_Vm_FileIO->color.rgbResult);
917+ int Red=GetRValue(App->SBC_FileIO->color.rgbResult);
918+ int Green=GetGValue(App->SBC_FileIO->color.rgbResult);
919+ int Blue=GetBValue(App->SBC_FileIO->color.rgbResult);
920920
921921 App->Cl_Scene_Data->S_Scene[0]->DiffuseColour = Ogre::Vector3((float)Red/256,(float)Green/256,(float)Blue/256);
922922
@@ -933,13 +933,13 @@
933933 {
934934
935935 // strcpy_s(TextInt,App->GDCL_Scene_Data->S_Scene[0]->Fog[0].Mode);
936- App->CL_Vm_FileIO->GetColor();
936+ App->SBC_FileIO->GetColor();
937937
938- if (App->CL_Vm_FileIO->Cannceled==0)
938+ if (App->SBC_FileIO->Cannceled==0)
939939 {
940- int Red=GetRValue(App->CL_Vm_FileIO->color.rgbResult);
941- int Green=GetGValue(App->CL_Vm_FileIO->color.rgbResult);
942- int Blue=GetBValue(App->CL_Vm_FileIO->color.rgbResult);
940+ int Red=GetRValue(App->SBC_FileIO->color.rgbResult);
941+ int Green=GetGValue(App->SBC_FileIO->color.rgbResult);
942+ int Blue=GetBValue(App->SBC_FileIO->color.rgbResult);
943943
944944 App->Cl_Scene_Data->S_Scene[0]->SpecularColour = Ogre::Vector3((float)Red/256,(float)Green/256,(float)Blue/256);
945945
--- Anim19_OSDN/GD19_OSDN.cpp (revision 764)
+++ Anim19_OSDN/GD19_OSDN.cpp (revision 765)
@@ -123,7 +123,7 @@
123123 App->Cl_Bullet->Init_Bullet();
124124 App->Cl_Scene_Data->Init_Scene();
125125
126- App->CL_Vm_FileIO->Init_History();
126+ App->SBC_FileIO->Init_History();
127127
128128 App->Cl_Vm_Preferences->Read_Preferences(); // Read Preferences
129129
@@ -403,7 +403,7 @@
403403
404404 case ID_FILE_CLEARRESENTPROJECTS:
405405 {
406- App->CL_Vm_FileIO->ResentHistory_Clear();
406+ App->SBC_FileIO->ResentHistory_Clear();
407407 return 1;
408408 }
409409
@@ -410,7 +410,7 @@
410410 case 5000 + 7: // Top Recent Files 1
411411 {
412412 char mFileName[1024];
413- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[7].c_str());
413+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[7].c_str());
414414 App->SBC_Import->Reload_FromResentFiles(mFileName);
415415 return 1;
416416 }
@@ -417,7 +417,7 @@
417417 case 5000 + 6: // 2
418418 {
419419 char mFileName[1024];
420- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[6].c_str());
420+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[6].c_str());
421421 App->SBC_Import->Reload_FromResentFiles(mFileName);
422422 return 1;
423423 }
@@ -424,7 +424,7 @@
424424 case 5000 + 5: // 3
425425 {
426426 char mFileName[1024];
427- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[5].c_str());
427+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[5].c_str());
428428 App->SBC_Import->Reload_FromResentFiles(mFileName);
429429 return 1;
430430 }
@@ -431,7 +431,7 @@
431431 case 5000 + 4: // 4
432432 {
433433 char mFileName[1024];
434- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[4].c_str());
434+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[4].c_str());
435435 App->SBC_Import->Reload_FromResentFiles(mFileName);
436436 return 1;
437437 }
@@ -438,7 +438,7 @@
438438 case 5000 + 3: // 5
439439 {
440440 char mFileName[1024];
441- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[3].c_str());
441+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[3].c_str());
442442 App->SBC_Import->Reload_FromResentFiles(mFileName);
443443 return 1;
444444 }
@@ -445,7 +445,7 @@
445445 case 5000 + 2: // 6
446446 {
447447 char mFileName[1024];
448- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[2].c_str());
448+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[2].c_str());
449449 App->SBC_Import->Reload_FromResentFiles(mFileName);
450450 return 1;
451451 }
@@ -452,7 +452,7 @@
452452 case 5000 + 1: // 7
453453 {
454454 char mFileName[1024];
455- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[1].c_str());
455+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[1].c_str());
456456 App->SBC_Import->Reload_FromResentFiles(mFileName);
457457 return 1;
458458 }
@@ -459,7 +459,7 @@
459459 case 5000 + 0: // 8
460460 {
461461 char mFileName[1024];
462- strcpy(mFileName, App->CL_Vm_FileIO->mPreviousFiles[0].c_str());
462+ strcpy(mFileName, App->SBC_FileIO->mPreviousFiles[0].c_str());
463463 App->SBC_Import->Reload_FromResentFiles(mFileName);
464464 return 1;
465465 }
--- Anim19_OSDN/GD19_Scene_Data.cpp (revision 764)
+++ Anim19_OSDN/GD19_Scene_Data.cpp (revision 765)
@@ -622,7 +622,7 @@
622622 // *************************************************************************
623623 bool GD19_Scene_Data::Start_UpScene()
624624 {
625- char StartFile[1024];
625+ /*char StartFile[1024];
626626 strcpy(StartFile, App->EquityDirecory_FullPath);
627627 strcat(StartFile, "\\");
628628 strcat(StartFile, "Data\\StartUp.gcf");
@@ -653,7 +653,7 @@
653653 App->Cl_Ini->GetString("Startup", "Scene_FileName", App->CL_Vm_FileIO->Scene_FileName,1024);
654654 App->Cl_Ini->GetString("Startup", "Scene_Path_FileName", App->CL_Vm_FileIO->Scene_Path_FileName,1024);
655655 return 1;
656- }
656+ }*/
657657
658658
659659 return 0;
--- Anim19_OSDN/GD19_Stock.cpp (revision 764)
+++ Anim19_OSDN/GD19_Stock.cpp (revision 765)
@@ -225,14 +225,14 @@
225225 result = strcmp(btext, "Text Colour");
226226 if (result == 0)
227227 {
228- App->CL_Vm_FileIO->GetColor();
228+ App->SBC_FileIO->GetColor();
229229
230- if (App->CL_Vm_FileIO->Cannceled == 0)
230+ if (App->SBC_FileIO->Cannceled == 0)
231231 {
232232
233- float Red = (float)GetRValue(App->CL_Vm_FileIO->color.rgbResult)/ 256;
234- float Green = (float)GetGValue(App->CL_Vm_FileIO->color.rgbResult)/ 256;
235- float Blue = (float)GetBValue(App->CL_Vm_FileIO->color.rgbResult)/ 256;
233+ float Red = (float)GetRValue(App->SBC_FileIO->color.rgbResult)/ 256;
234+ float Green = (float)GetGValue(App->SBC_FileIO->color.rgbResult)/ 256;
235+ float Blue = (float)GetBValue(App->SBC_FileIO->color.rgbResult)/ 256;
236236
237237 App->Cl_Scene_Data->S_Messages[Selected_Stock_Index]->Colour.x = Red;
238238 App->Cl_Scene_Data->S_Messages[Selected_Stock_Index]->Colour.y = Green;
@@ -562,14 +562,14 @@
562562 result = strcmp(btext, "Text_Colour");
563563 if (result == 0)
564564 {
565- App->CL_Vm_FileIO->GetColor();
565+ App->SBC_FileIO->GetColor();
566566
567- if (App->CL_Vm_FileIO->Cannceled == 0)
567+ if (App->SBC_FileIO->Cannceled == 0)
568568 {
569569
570- float Red = (float)GetRValue(App->CL_Vm_FileIO->color.rgbResult) / 256;
571- float Green = (float)GetGValue(App->CL_Vm_FileIO->color.rgbResult) / 256;
572- float Blue = (float)GetBValue(App->CL_Vm_FileIO->color.rgbResult) / 256;
570+ float Red = (float)GetRValue(App->SBC_FileIO->color.rgbResult) / 256;
571+ float Green = (float)GetGValue(App->SBC_FileIO->color.rgbResult) / 256;
572+ float Blue = (float)GetBValue(App->SBC_FileIO->color.rgbResult) / 256;
573573
574574 App->Cl_Panels_Com->Set_Text_Colour(Red, Green, Blue, Index);
575575
--- Anim19_OSDN/SB_FileIO.cpp (revision 764)
+++ Anim19_OSDN/SB_FileIO.cpp (revision 765)
@@ -23,6 +23,7 @@
2323
2424 #include "stdafx.h"
2525 #include "GD19_App.h"
26+#include "resource.h"
2627 #include "SB_FileIO.h"
2728
2829
@@ -30,6 +31,10 @@
3031 {
3132 Project_File_Name[0] = 0;
3233 Project_Path_File_Name[0] = 0;
34+
35+ JustFileName[0] = 0;
36+
37+ Cannceled = 0;
3338 }
3439
3540
@@ -70,4 +75,314 @@
7075 }
7176
7277 return 0;
73-}
\ No newline at end of file
78+}
79+
80+// *************************************************************************
81+// * Init_History() Terry Bernie *
82+// *************************************************************************
83+void SB_FileIO::Init_History()
84+{
85+ char DirCheck[1024];
86+ strcpy(DirCheck, UserData_Folder);
87+ strcat(DirCheck, "\\");
88+ strcat(DirCheck, "Equity");
89+
90+ bool check = 0;
91+ check = Search_For_Folder(DirCheck);
92+ if (check == 0)
93+ {
94+ mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
95+
96+ CreateDirectory(DirCheck, NULL);
97+ ResentHistory_Clear(); // Set all slots to Empty
98+ Save_FileHistory();
99+ LoadHistory();
100+ }
101+ else
102+ {
103+ LoadHistory();
104+ }
105+}
106+// *************************************************************************
107+// * LoadHistory() Terry Bernie *
108+// *************************************************************************
109+void SB_FileIO::LoadHistory()
110+{
111+ mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
112+
113+ char buffer[1024];
114+ char buf[1024];
115+
116+ strcpy(buf, UserData_Folder);
117+ strcat(buf, "\\Equity\\Equity_SB.ini");
118+
119+ ReadRecentFiles = fopen(buf, "rt");
120+
121+ if (!ReadRecentFiles)
122+ {
123+ App->Say("Cant Find Recent Files");
124+ return;
125+ }
126+
127+ // Read in File Names from RecentFiles.ini
128+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
129+ {
130+ memset(buffer, 0, 1024);
131+ fgets(buffer, 1024, ReadRecentFiles);
132+
133+ char Path[1024];
134+ strcpy(Path, buffer);
135+ int Len = strlen(Path);
136+ Path[Len - 1] = 0;
137+
138+ mPreviousFiles[i] = std::string(Path);
139+ }
140+
141+ fclose(ReadRecentFiles);
142+
143+ mHistoryMenu = CreateMenu();
144+
145+ // Check for empty slots and gray out
146+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
147+ {
148+ char szText[1024];
149+ strcpy(szText, mPreviousFiles[i].c_str());
150+
151+ UINT iFlags = 0;
152+ int Result = 0;
153+ Result = strcmp("<empty>", szText);
154+ if (Result == 0)
155+ {
156+ iFlags = MF_GRAYED | MF_DISABLED;
157+ }
158+
159+ AppendMenu(mHistoryMenu, MF_STRING | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
160+ }
161+
162+ ModifyMenu(GetMenu(App->MainHwnd), ID_FILE_RECENTFILES, MF_BYCOMMAND | MF_POPUP,
163+ (UINT_PTR)mHistoryMenu, "Recent files");
164+ return;
165+}
166+
167+// *************************************************************************
168+// * Save_FileHistory Terry Bernie *
169+// *************************************************************************
170+void SB_FileIO::Save_FileHistory()
171+{
172+
173+ // WriteRecentFiles = 0;
174+
175+ char buf[1024];
176+ strcpy(buf, UserData_Folder);
177+ strcat(buf, "\\Equity\\Equity_SB.ini");
178+
179+
180+ WriteRecentFiles = fopen(buf, "wt");
181+
182+ if (!WriteRecentFiles)
183+ {
184+ App->Say("Why Cant Find Recent Files");
185+ return;
186+ }
187+
188+ // Save out to RecentFile.ini
189+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
190+ {
191+ char szName[1024];
192+ strcpy(szName, mPreviousFiles[i].c_str());
193+
194+ fprintf(WriteRecentFiles, "%s\n", szName);
195+ }
196+
197+ fclose(WriteRecentFiles);
198+ return;
199+}
200+// *************************************************************************
201+// * RecentFileHistory_Update Terry Bernie *
202+// *************************************************************************
203+void SB_FileIO::RecentFileHistory_Update()
204+{
205+ if (!mHistoryMenu)return;
206+
207+ std::string sz = std::string(App->SBC_FileIO->Project_Path_File_Name);
208+ if (mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] == sz)return;
209+
210+ // add the new file to the list of recent files
211+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES - 1; ++i)
212+ {
213+ mPreviousFiles[i] = mPreviousFiles[i + 1];
214+ }
215+
216+ mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] = sz;
217+
218+ // Check for empty slots and gray out
219+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
220+ {
221+ char szText[1024];
222+ strcpy(szText, mPreviousFiles[i].c_str());
223+
224+ UINT iFlags = 0;
225+ int Result = 0;
226+ Result = strcmp("<empty>", szText);
227+ if (Result == 0)
228+ {
229+ iFlags = MF_GRAYED | MF_DISABLED;
230+ }
231+
232+ ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
233+ MF_STRING | MF_BYCOMMAND | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
234+ }
235+
236+ // Save Changes
237+ Save_FileHistory();
238+
239+ return;
240+}
241+// *************************************************************************
242+// * ResentHistory_Clear Terry Bernie Hazel Nathan *
243+// *************************************************************************
244+void SB_FileIO::ResentHistory_Clear()
245+{
246+ App->Cl_Dialogs->YesNo("Delete file history.", "Are you sure all File history will be Deleted Procede.");
247+ if (App->Cl_Dialogs->Canceled == 1)
248+ {
249+ return;
250+ }
251+
252+ // Set all slots to <empty>
253+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
254+ {
255+ mPreviousFiles[i] = std::string("<empty>");
256+ }
257+
258+ // Repopulate Menu system
259+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
260+ {
261+ ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
262+ MF_STRING | MF_BYCOMMAND | MF_GRAYED | MF_DISABLED, EQUITY_RECENT_FILE_ID(i), "<empty>");
263+ }
264+
265+ // Save Changes
266+ Save_FileHistory();
267+}
268+
269+// *************************************************************************
270+// * SearchFolders Terry Bernie *
271+// *************************************************************************
272+bool SB_FileIO::SearchFolders(char* Path, char* File)
273+{
274+ char pSearchPath[1024];
275+
276+ WIN32_FIND_DATA FindFileData;
277+ HANDLE hFind;
278+
279+ strcpy(pSearchPath, Path);
280+ strcat(pSearchPath, File);
281+
282+ hFind = FindFirstFile(pSearchPath, &FindFileData);
283+ if (hFind == INVALID_HANDLE_VALUE)
284+ {
285+ return 0;
286+ }
287+ else
288+ {
289+ FindClose(hFind);
290+ return 1;
291+ }
292+
293+ return 0;
294+}
295+
296+// *************************************************************************
297+// * Search_For_Folder Terry Bernie *
298+// *************************************************************************
299+bool SB_FileIO::Search_For_Folder(char* FolderPath)
300+{
301+ char pSearchPath[1024];
302+
303+ WIN32_FIND_DATA FindFileData;
304+ HANDLE hFind;
305+
306+ strcpy(pSearchPath, FolderPath);
307+
308+ hFind = FindFirstFile(pSearchPath, &FindFileData);
309+ if (hFind == INVALID_HANDLE_VALUE)
310+ {
311+ return 0;
312+ }
313+ else
314+ {
315+ FindClose(hFind);
316+ return 1;
317+ }
318+
319+ return 0;
320+}
321+
322+// *************************************************************************
323+// * CheckPath Terry Bernie *
324+// *************************************************************************
325+void SB_FileIO::CheckPath(char *pString, char *FileName)
326+{
327+ JustFileName[0] = 0;
328+
329+ int Count = 0;
330+ int Mark = 0;
331+ bool Test = 0;
332+
333+ while (*pString != 0)
334+ {
335+ if (*pString == '\\' || *pString == '/')
336+ {
337+ Test = 1;
338+ Mark = Count;
339+ }
340+
341+ Count++;
342+ pString++;
343+ }
344+
345+ if (Mark == 0 && Test == 0)
346+ {
347+ strcpy(JustFileName, FileName);
348+ }
349+ else
350+ {
351+ if (Mark == 0 && Test == 1)
352+ {
353+ Mark = 1;
354+ strcpy(JustFileName, (FileName + Mark));
355+ }
356+ else
357+ {
358+ strcpy(JustFileName, (FileName + Mark) + 1);
359+ }
360+ }
361+}
362+
363+// *************************************************************************
364+// * GetColor Terry Bernie *
365+// *************************************************************************
366+bool SB_FileIO::GetColor()
367+{
368+ Cannceled = 0;
369+ COLORREF ccref[8];//custom colors
370+ COLORREF selcolor = 0x000000;//the default selected color
371+
372+ memset(&color, 0, sizeof(color));
373+ color.lStructSize = sizeof(CHOOSECOLOR);
374+ color.hwndOwner = App->MainHwnd;
375+ color.lpCustColors = ccref;
376+ color.rgbResult = selcolor;
377+ color.Flags = CC_RGBINIT;
378+
379+ if (ChooseColor(&color))
380+ {
381+ Cannceled = 0;
382+ selcolor = color.rgbResult;
383+ return 1;
384+ }
385+
386+ Cannceled = 1;
387+ return 1;
388+}
--- Anim19_OSDN/SB_FileIO.h (revision 764)
+++ Anim19_OSDN/SB_FileIO.h (revision 765)
@@ -29,11 +29,38 @@
2929 ~SB_FileIO();
3030
3131 bool Open_Project_File(char* Extension, char* Title, char* StartDirectory);
32+ bool SearchFolders(char* Path, char* File);
33+ bool Search_For_Folder(char* FolderPath);
34+ void CheckPath(char *pString, char *FileName);
35+ bool GetColor();
3236
37+ void Init_History(); // p
38+ void LoadHistory();
39+ void Save_FileHistory();
40+ void RecentFileHistory_Update(); //p
41+ void ResentHistory_Clear(); // p
42+
3343 char Project_File_Name[MAX_PATH];
3444 char Project_Path_File_Name[MAX_PATH];
45+ char JustFileName[MAX_PATH];
3546
47+ char UserData_Folder[MAX_PATH];
48+ char DeskTop_Folder[MAX_PATH];
3649
50+ bool Cannceled;
51+
52+ std::vector<std::string> mPreviousFiles;
53+
54+ CHOOSECOLOR color;
3755 OPENFILENAME ofn;
56+
57+ FILE *WriteRecentFiles;
58+ FILE *ReadRecentFiles;
59+
60+ HMENU mHistoryMenu;
61+
62+#define EQUITY_NUM_RECENT_FILES 0x8
63+#define EQUITY_RECENT_FILE_ID(_n_) (5000 + _n_)
64+
3865 };
3966
--- Anim19_OSDN/SB_Import.cpp (revision 764)
+++ Anim19_OSDN/SB_Import.cpp (revision 765)
@@ -74,7 +74,7 @@
7474 {
7575
7676 // Check Recent File Exsists
77- bool Result = App->CL_Vm_FileIO->Search_For_Folder(ResentPathAndFile);
77+ bool Result = App->SBC_FileIO->Search_For_Folder(ResentPathAndFile);
7878 if (Result == 0)
7979 {
8080 App->Say(" Can Not Find File:- This may be due to it has been deleted or renamed");
@@ -89,8 +89,8 @@
8989
9090 strcpy(mPathAndFile, ResentPathAndFile); // Full Path and File
9191
92- App->CL_Vm_FileIO->CheckPath(mPathAndFile, mPathAndFile);
93- strcpy(mJustFileName, App->CL_Vm_FileIO->JustFileName); // Just File Name
92+ App->SBC_FileIO->CheckPath(mPathAndFile, mPathAndFile);
93+ strcpy(mJustFileName, App->SBC_FileIO->JustFileName); // Just File Name
9494
9595 strcpy(App->SBC_FileIO->Project_File_Name, mJustFileName);
9696
--- Anim19_OSDN/SB_Project.cpp (revision 764)
+++ Anim19_OSDN/SB_Project.cpp (revision 765)
@@ -270,7 +270,7 @@
270270 if (LOWORD(wParam) == IDC_BTDESKTOP)
271271 {
272272
273- strcpy(App->SBC_Project->m_Project_Sub_Folder, App->CL_Vm_FileIO->DeskTop_Folder);
273+ strcpy(App->SBC_Project->m_Project_Sub_Folder, App->SBC_FileIO->DeskTop_Folder);
274274 strcat(App->SBC_Project->m_Project_Sub_Folder, "\\");
275275 strcat(App->SBC_Project->m_Project_Sub_Folder, App->SBC_Project->m_Project_Name);
276276 strcat(App->SBC_Project->m_Project_Sub_Folder, "_Prj");
@@ -710,7 +710,7 @@
710710 delete Options;
711711
712712 App->Set_Main_TitleBar(App->SBC_FileIO->Project_Path_File_Name);
713- App->CL_Vm_FileIO->RecentFileHistory_Update();
713+ App->SBC_FileIO->RecentFileHistory_Update();
714714 return 1;
715715 }
716716
Show on old repository browser