• R/O
  • SSH
  • HTTPS

vima19: コミット


コミットメタ情報

リビジョン76 (tree)
日時2020-04-04 23:22:00
作者hgtterry

ログメッセージ

Vima19 Recent Files 04/04/20

変更サマリ

差分

--- Anim19_OSDN/GD19_App.cpp (revision 75)
+++ Anim19_OSDN/GD19_App.cpp (revision 76)
@@ -24,7 +24,9 @@
2424 #include "StdAfx.h"
2525 #include "resource.h"
2626 #include "GD19_App.h"
27+#include "Shlobj.h"
2728
29+
2830 GD19_App::GD19_App(void)
2931 {
3032 Cl19_Ogre = nullptr;
@@ -205,14 +207,18 @@
205207
206208 LoadString(hInst, IDS_APP_TITLE, Version, 255);
207209
208- //char Udir[1024];
209- //wchar_t* path = new wchar_t[128];
210- //if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &path)))//KF_FLAG_CREATE
211- //{
212- // wsprintf(Udir, "%ls", path);
213- // CoTaskMemFree(path);
214- // strcpy(UserData_Folder, Udir);
215- //}
210+ char Udir[1024];
211+ wchar_t* path = new wchar_t[128];
212+ if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &path)))//KF_FLAG_CREATE
213+ {
214+ wsprintf(Udir, "%ls", path);
215+ CoTaskMemFree(path);
216+ strcpy(App->CL_Vm_FileIO->UserData_Folder, Udir);
217+ }
218+ else
219+ {
220+ App->Say("Can not acceses user folder");
221+ }
216222
217223 //char Udir2[1024];
218224 //wchar_t* path2 = new wchar_t[128];
--- Anim19_OSDN/GD19_OSDN.cpp (revision 75)
+++ Anim19_OSDN/GD19_OSDN.cpp (revision 76)
@@ -116,6 +116,8 @@
116116 App->Cl_Bullet->Init_Bullet();
117117 App->Cl_Scene_Data->Init_Scene();
118118
119+ App->CL_Vm_FileIO->Init_History();
120+
119121 SetTimer(App->MainHwnd, 1, 1, NULL);
120122
121123 HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GD19_OSDN));
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
--- Anim19_OSDN/VM_FileIO.cpp (revision 75)
+++ Anim19_OSDN/VM_FileIO.cpp (revision 76)
@@ -1,5 +1,6 @@
11 #include "stdafx.h"
22 #include "GD19_App.h"
3+#include "resource.h"
34 #include <tchar.h>
45 #include <shellapi.h>
56 #include "Shlobj.h"
@@ -343,3 +344,218 @@
343344 return 0;
344345 }
345346
347+// *************************************************************************
348+// * Init_History() Terry Bernie *
349+// *************************************************************************
350+void VM_FileIO::Init_History()
351+{
352+ char DirCheck[1024];
353+ strcpy(DirCheck, UserData_Folder);
354+ strcat(DirCheck, "\\");
355+ strcat(DirCheck, "Vima19");
356+
357+ bool check = 0;
358+ check = Search_For_Folder(DirCheck);
359+ if (check == 0)
360+ {
361+ mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
362+
363+ CreateDirectory(DirCheck, NULL);
364+ ResentHistory_Clear(); // Set all slots to Empty
365+ Save_FileHistory();
366+ LoadHistory();
367+ }
368+ else
369+ {
370+ LoadHistory();
371+ }
372+}
373+// *************************************************************************
374+// * LoadHistory() Terry Bernie *
375+// *************************************************************************
376+void VM_FileIO::LoadHistory()
377+{
378+ mPreviousFiles.resize(EQUITY_NUM_RECENT_FILES);
379+
380+ char buffer[1024];
381+ char buf[1024];
382+
383+ strcpy(buf, UserData_Folder);
384+ strcat(buf, "\\Vima19\\Vima19.ini");
385+
386+ ReadRecentFiles = fopen(buf, "rt");
387+
388+ if (!ReadRecentFiles)
389+ {
390+ App->Say("Cant Find Recent Files");
391+ return;
392+ }
393+
394+ // Read in File Names from RecentFiles.ini
395+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
396+ {
397+ memset(buffer, 0, 1024);
398+ fgets(buffer, 1024, ReadRecentFiles);
399+
400+ char Path[1024];
401+ strcpy(Path, buffer);
402+ int Len = strlen(Path);
403+ Path[Len - 1] = 0;
404+
405+ mPreviousFiles[i] = std::string(Path);
406+ }
407+
408+ fclose(ReadRecentFiles);
409+
410+ mHistoryMenu = CreateMenu();
411+
412+ // Check for empty slots and gray out
413+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
414+ {
415+ char szText[1024];
416+ strcpy(szText, mPreviousFiles[i].c_str());
417+
418+ UINT iFlags = 0;
419+ int Result = 0;
420+ Result = strcmp("<empty>", szText);
421+ if (Result == 0)
422+ {
423+ iFlags = MF_GRAYED | MF_DISABLED;
424+ }
425+
426+ AppendMenu(mHistoryMenu, MF_STRING | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
427+ }
428+
429+ ModifyMenu(GetMenu(App->MainHwnd), ID_FILE_RECENTFILES, MF_BYCOMMAND | MF_POPUP,
430+ (UINT_PTR)mHistoryMenu, "Recent files");
431+ return;
432+}
433+
434+// *************************************************************************
435+// * Save_FileHistory Terry Bernie *
436+// *************************************************************************
437+void VM_FileIO::Save_FileHistory()
438+{
439+
440+ // WriteRecentFiles = 0;
441+
442+ char buf[1024];
443+ strcpy(buf, UserData_Folder);
444+ strcat(buf, "\\Vima19\\Vima19.ini");
445+
446+
447+ WriteRecentFiles = fopen(buf, "wt");
448+
449+ if (!WriteRecentFiles)
450+ {
451+ App->Say("Why Cant Find Recent Files");
452+ return;
453+ }
454+
455+ // Save out to RecentFile.ini
456+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
457+ {
458+ char szName[1024];
459+ strcpy(szName, mPreviousFiles[i].c_str());
460+
461+ fprintf(WriteRecentFiles, "%s\n", szName);
462+ }
463+
464+ fclose(WriteRecentFiles);
465+ return;
466+}
467+// *************************************************************************
468+// * RecentFileHistory_Update Terry Bernie *
469+// *************************************************************************
470+void VM_FileIO::RecentFileHistory_Update()
471+{
472+ if (!mHistoryMenu)return;
473+
474+ std::string sz = std::string(App->CL_Vm_Model->Path_FileName);
475+ if (mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] == sz)return;
476+
477+ // add the new file to the list of recent files
478+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES - 1; ++i)
479+ {
480+ mPreviousFiles[i] = mPreviousFiles[i + 1];
481+ }
482+
483+ mPreviousFiles[EQUITY_NUM_RECENT_FILES - 1] = sz;
484+
485+ // Check for empty slots and gray out
486+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
487+ {
488+ char szText[1024];
489+ strcpy(szText, mPreviousFiles[i].c_str());
490+
491+ UINT iFlags = 0;
492+ int Result = 0;
493+ Result = strcmp("<empty>", szText);
494+ if (Result == 0)
495+ {
496+ iFlags = MF_GRAYED | MF_DISABLED;
497+ }
498+
499+ ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
500+ MF_STRING | MF_BYCOMMAND | iFlags, EQUITY_RECENT_FILE_ID(i), szText);
501+ }
502+
503+ // Save Changes
504+ Save_FileHistory();
505+
506+ return;
507+}
508+// *************************************************************************
509+// * ResentHistory_Clear Terry Bernie Hazel Nathan *
510+// *************************************************************************
511+void VM_FileIO::ResentHistory_Clear()
512+{
513+ App->Cl_Dialogs->YesNo("Delete file history.", "Are you sure all File history will be Deleted Procede.");
514+ if (App->Cl_Dialogs->Canceled == 1)
515+ {
516+ return;
517+ }
518+
519+ // Set all slots to <empty>
520+ for (unsigned int i = 0; i < EQUITY_NUM_RECENT_FILES; ++i)
521+ {
522+ mPreviousFiles[i] = std::string("<empty>");
523+ }
524+
525+ // Repopulate Menu system
526+ for (int i = EQUITY_NUM_RECENT_FILES - 1; i >= 0; --i)
527+ {
528+ ModifyMenu(mHistoryMenu, EQUITY_RECENT_FILE_ID(i),
529+ MF_STRING | MF_BYCOMMAND | MF_GRAYED | MF_DISABLED, EQUITY_RECENT_FILE_ID(i), "<empty>");
530+ }
531+
532+ // Save Changes
533+ Save_FileHistory();
534+}
535+
536+// *************************************************************************
537+// * Search_For_Folder Terry Bernie *
538+// *************************************************************************
539+bool VM_FileIO::Search_For_Folder(char* FolderPath)
540+{
541+ char pSearchPath[1024];
542+
543+ WIN32_FIND_DATA FindFileData;
544+ HANDLE hFind;
545+
546+ strcpy(pSearchPath, FolderPath);
547+
548+ hFind = FindFirstFile(pSearchPath, &FindFileData);
549+ if (hFind == INVALID_HANDLE_VALUE)
550+ {
551+ return 0;
552+ }
553+ else
554+ {
555+ FindClose(hFind);
556+ return 1;
557+ }
558+
559+ return 0;
560+}
561+
--- Anim19_OSDN/VM_FileIO.h (revision 75)
+++ Anim19_OSDN/VM_FileIO.h (revision 76)
@@ -19,6 +19,14 @@
1919 bool StartBrowser(char* szInitDir);
2020 bool Create_Output_Folder(char* Extension);
2121
22+ void Init_History();
23+ void LoadHistory();
24+ void Save_FileHistory();
25+ void RecentFileHistory_Update();
26+ void ResentHistory_Clear();
27+
28+ bool Search_For_Folder(char* FolderPath);
29+
2230 bool Cannceled;
2331
2432 char Scene_FileName[255];
@@ -37,10 +45,22 @@
3745 TCHAR szSelectedDir[500];
3846 char OutputFolder[1024];
3947
48+ char UserData_Folder[1024];
49+
50+ std::vector<std::string> mPreviousFiles;
51+
4052 CHOOSECOLOR color;
4153 OPENFILENAME ofn;
4254
4355 protected:
4456 static int __stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
57+
58+ FILE *WriteRecentFiles;
59+ FILE *ReadRecentFiles;
60+
61+ HMENU mHistoryMenu;
62+
63+#define EQUITY_NUM_RECENT_FILES 0x8
64+#define EQUITY_RECENT_FILE_ID(_n_) (5000 + _n_)
4565 };
4666
--- Anim19_OSDN/VM_Model.cpp (revision 75)
+++ Anim19_OSDN/VM_Model.cpp (revision 76)
@@ -190,7 +190,7 @@
190190 int Len = strlen(JustName);
191191 JustName[Len - 4] = 0;
192192
193-// App->Cl_Importer->RecentFileHistory_Update();
193+ App->CL_Vm_FileIO->RecentFileHistory_Update();
194194 }
195195
196196 // *************************************************************************
旧リポジトリブラウザで表示