Subversion Repositories spk

Rev

Rev 102 | Rev 129 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 102 Rev 128
Line 12... Line 12...
12
 
12
 
13
using namespace System::Windows;
13
using namespace System::Windows;
14
using namespace System::Windows::Forms;
14
using namespace System::Windows::Forms;
15
 
15
 
16
namespace SpkExplorer {
16
namespace SpkExplorer {
-
 
17
	SpkForm::SpkForm(System::Windows::Forms::Form ^parent, System::Windows::Forms::TabControl ^ctrl, System::Windows::Forms::TabPage ^page)
-
 
18
	{
-
 
19
		InitializeComponent();
-
 
20
		this->AllowDrop = true;
-
 
21
 
-
 
22
		ImageList ^list1 = gcnew ImageList();
-
 
23
		ImageList ^list2 = gcnew ImageList();
-
 
24
		list1->ImageSize.Height = 32;
-
 
25
		list1->ImageSize.Width = 32;
-
 
26
		list2->ImageSize.Height = 16;
-
 
27
		list2->ImageSize.Width = 16;
-
 
28
 
-
 
29
		this->AddImage("$IMAGELIST:script.png", list1, _US(Utils::String::Number(FILETYPE_SCRIPT)));
-
 
30
		this->AddImage("$IMAGELIST:textfile.png", list1, _US(Utils::String::Number(FILETYPE_TEXT)));
-
 
31
		this->AddImage("$IMAGELIST:readme.png", list1, _US(Utils::String::Number(FILETYPE_README)));
-
 
32
		this->AddImage("$IMAGELIST:map.png", list1, _US(Utils::String::Number(FILETYPE_MAP)));
-
 
33
		this->AddImage("$IMAGELIST:mods.png", list1, _US(Utils::String::Number(FILETYPE_MOD)));
-
 
34
		this->AddImage("$IMAGELIST:uninstall.png", list1, _US(Utils::String::Number(FILETYPE_UNINSTALL)));
-
 
35
		this->AddImage("$IMAGELIST:sound.png", list1, _US(Utils::String::Number(FILETYPE_SOUND)));
-
 
36
		this->AddImage("$IMAGELIST:extras.png", list1, _US(Utils::String::Number(FILETYPE_EXTRA)));
-
 
37
		this->AddImage("$IMAGELIST:screenshot.png", list1, _US(Utils::String::Number(FILETYPE_SCREEN)));
-
 
38
		this->AddImage("$IMAGELIST:backup.png", list1, _US(Utils::String::Number(FILETYPE_BACKUP)));
-
 
39
		this->AddImage("$IMAGELIST:mission.png", list1, _US(Utils::String::Number(FILETYPE_MISSION)));
-
 
40
		this->AddImage("$IMAGELIST:advert.png", list1, _US(Utils::String::Number(FILETYPE_ADVERT)));
-
 
41
		this->AddImage("$IMAGELIST:shipother.png", list1, _US(Utils::String::Number(FILETYPE_SHIPOTHER)));
-
 
42
		this->AddImage("$IMAGELIST:shipmodel.png", list1, _US(Utils::String::Number(FILETYPE_SHIPMODEL)));
-
 
43
		this->AddImage("$IMAGELIST:shipscene.png", list1, _US(Utils::String::Number(FILETYPE_SHIPSCENE)));
-
 
44
		this->AddImage("$IMAGELIST:cockpitscene.png", list1, _US(Utils::String::Number(FILETYPE_COCKPITSCENE)));
-
 
45
 
-
 
46
		this->AddImage("$IMAGELIST:script.png", list2, _US(Utils::String::Number(FILETYPE_SCRIPT)));
-
 
47
		this->AddImage("$IMAGELIST:textfile.png", list2, _US(Utils::String::Number(FILETYPE_TEXT)));
-
 
48
		this->AddImage("$IMAGELIST:readme.png", list2, _US(Utils::String::Number(FILETYPE_README)));
-
 
49
		this->AddImage("$IMAGELIST:map.png", list2, _US(Utils::String::Number(FILETYPE_MAP)));
-
 
50
		this->AddImage("$IMAGELIST:mods.png", list2, _US(Utils::String::Number(FILETYPE_MOD)));
-
 
51
		this->AddImage("$IMAGELIST:uninstall.png", list2, _US(Utils::String::Number(FILETYPE_UNINSTALL)));
-
 
52
		this->AddImage("$IMAGELIST:sound.png", list2, _US(Utils::String::Number(FILETYPE_SOUND)));
-
 
53
		this->AddImage("$IMAGELIST:extras.png", list2, _US(Utils::String::Number(FILETYPE_EXTRA)));
-
 
54
		this->AddImage("$IMAGELIST:screenshot.png", list2, _US(Utils::String::Number(FILETYPE_SCREEN)));
-
 
55
		this->AddImage("$IMAGELIST:backup.png", list2, _US(Utils::String::Number(FILETYPE_BACKUP)));
-
 
56
		this->AddImage("$IMAGELIST:mission.png", list2, _US(Utils::String::Number(FILETYPE_MISSION)));
-
 
57
		this->AddImage("$IMAGELIST:advert.png", list2, _US(Utils::String::Number(FILETYPE_ADVERT)));
-
 
58
		this->AddImage("$IMAGELIST:shipother.png", list2, _US(Utils::String::Number(FILETYPE_SHIPOTHER)));
-
 
59
		this->AddImage("$IMAGELIST:shipmodel.png", list2, _US(Utils::String::Number(FILETYPE_SHIPMODEL)));
-
 
60
		this->AddImage("$IMAGELIST:shipscene.png", list2, _US(Utils::String::Number(FILETYPE_SHIPSCENE)));
-
 
61
		this->AddImage("$IMAGELIST:cockpitscene.png", list2, _US(Utils::String::Number(FILETYPE_COCKPITSCENE)));
-
 
62
 
-
 
63
		listView1->LargeImageList = list1;
-
 
64
		listView1->SmallImageList = list2;
-
 
65
 
-
 
66
		m_bLoading = false;
-
 
67
		this->MdiParent = parent;
-
 
68
		m_pTabCtrl = ctrl;
-
 
69
		m_pTabPage = page;
-
 
70
 
-
 
71
		m_bSortingAsc = true;
-
 
72
		m_iSortingCol = 1;
-
 
73
		m_bSortingAsc2 = true;
-
 
74
		m_iSortingCol2 = 1;
-
 
75
		m_pListItem = nullptr;
-
 
76
 
-
 
77
		_pPackages = new CPackages();
-
 
78
		_pPackages->startup(".", ".", ".");
-
 
79
 
-
 
80
		this->Closing += gcnew CancelEventHandler(this, &SpkForm::Event_Closing);
-
 
81
		this->Activated += gcnew System::EventHandler(this, &SpkForm::Event_Activated);
-
 
82
		this->listView1->ColumnClick += gcnew ColumnClickEventHandler(this, &SpkForm::SortList);
-
 
83
		this->contextMenuStrip1->Opening += gcnew CancelEventHandler(this, &SpkExplorer::SpkForm::OpenContextMenu);
-
 
84
		this->listView1->DragOver += gcnew DragEventHandler(this, &SpkExplorer::SpkForm::DragEnterEvent);
-
 
85
		this->listView1->ItemDrag += gcnew ItemDragEventHandler(this, &SpkExplorer::SpkForm::ItemDragEvent);
-
 
86
 
-
 
87
		m_pSelectedPackage = NULL;
-
 
88
		m_pPackage = NULL;
-
 
89
		m_pMultiPackage = NULL;
-
 
90
	}
-
 
91
 
-
 
92
	SpkForm::~SpkForm()
-
 
93
	{
-
 
94
		delete m_pMenuItem;
-
 
95
		if (components)
-
 
96
		{
-
 
97
			delete components;
-
 
98
		}
-
 
99
 
-
 
100
		delete _pPackages;
-
 
101
	}
-
 
102
 
-
 
103
	bool SpkForm::IsMultiPackage()
-
 
104
	{ 
-
 
105
		return (m_pMultiPackage) ? true : false; 
-
 
106
	}
-
 
107
 
-
 
108
	void SpkForm::SetToolButton(ToolStripMenuItem ^menu)
-
 
109
	{
-
 
110
		m_pMenuItem = menu;
-
 
111
	}
-
 
112
 
17
	void SpkForm::SetPackage(CBaseFile *p, System::String ^filename)
113
	void SpkForm::SetPackage(CBaseFile *p, System::String ^filename)
18
	{
114
	{
19
		this->splitContainer1->Panel1Collapsed = true;
115
		this->splitContainer1->Panel1Collapsed = true;
20
		m_pPackage = p;
116
		m_pPackage = p;
21
 
117
 
Line 198... Line 294...
198
		item->SubItems->Add(SystemStringFromCyString(file->GetUncompressedSizeString()));
294
		item->SubItems->Add(SystemStringFromCyString(file->GetUncompressedSizeString()));
199
		item->SubItems->Add(SystemStringFromCyString(file->GetFileTypeString()));
295
		item->SubItems->Add(SystemStringFromCyString(file->GetFileTypeString()));
200
 
296
 
201
		item->SubItems->Add(SystemStringFromCyString(file->GetCreationTimeString()));
297
		item->SubItems->Add(SystemStringFromCyString(file->GetCreationTimeString()));
202
 
298
 
203
		item->Tag = SystemStringFromCyString(CyString::Number(file->GetPos()));
299
		item->Tag = _US(Utils::String::Number(file->GetPos()));
204
 
300
 
205
		item->ImageKey = SystemStringFromCyString(CyString::Number(file->GetFileType()));
301
		item->ImageKey = _US(Utils::String::Number(file->GetFileType()));
206
 
302
 
207
		if ( !file->GetGame() ) {
303
		if ( !file->game() || file->game() == GAME_ALLNEW) {
208
			item->SubItems->Add("All Games");
304
			item->SubItems->Add("All Games");
209
		}
305
		}
210
		else {
306
		else {
-
 
307
			if (file->game() & GAME_ALLNEW)
-
 
308
			{
211
			CPackages p;
309
				Utils::String sGames = "";
-
 
310
				for (int i = 0; i < 31; ++i)
-
 
311
				{
-
 
312
					if (file->game() & (1 << i))
-
 
313
					{
212
			p.Startup(".", ".", ".");
314
						Utils::String sGame;
213
			SGameExe *exe = p.GetGameExe()->GetGame(file->GetGame() - 1);
315
						SGameExe *exe = _pPackages->GetGameExe()->GetGame(i - 1);
-
 
316
						sGame = (exe) ? exe->sName : ("Game: " + Utils::String::Number(i));
-
 
317
 
214
			if ( exe ) {
318
						if (sGames.empty())
-
 
319
							sGames = sGame;
-
 
320
						else
-
 
321
							sGames = sGames + "\n" + sGame;
-
 
322
					}
-
 
323
				}
-
 
324
				if(sGames.empty())
215
				item->SubItems->Add(SystemStringFromCyString(exe->sName));
325
					item->SubItems->Add(_US("All Games"));
-
 
326
				else
-
 
327
					item->SubItems->Add(_US(sGames));
216
			}
328
			}
-
 
329
			else
-
 
330
			{
-
 
331
				SGameExe *exe = _pPackages->GetGameExe()->GetGame(file->game() - 1);
-
 
332
				if (exe) {
-
 
333
					item->SubItems->Add(_US(exe->sName));
-
 
334
				}
217
			else {
335
				else {
218
				item->SubItems->Add("Game: " + file->GetGame());
336
					item->SubItems->Add("Game: " + file->game());
-
 
337
				}
219
			}
338
			}
220
		}
339
		}
221
 
340
 
222
		this->listView1->Items->Add(item);
341
		this->listView1->Items->Add(item);
223
	}
342
	}
Line 230... Line 349...
230
		else
349
		else
231
			item->SubItems->Add("Package");
350
			item->SubItems->Add("Package");
232
		item->SubItems->Add(SystemStringFromCyString(SPK::GetSizeString(file->lSize)));
351
		item->SubItems->Add(SystemStringFromCyString(SPK::GetSizeString(file->lSize)));
233
 
352
 
234
 
353
 
235
		item->Tag = SystemStringFromCyString(CyString::Number(file->iPos));
354
		item->Tag = _US(Utils::String::Number(file->iPos));
236
 
355
 
237
		if ( this->imageList1->Images->IndexOfKey(SystemStringFromCyString(file->sName)) == -1 )
356
		if ( this->imageList1->Images->IndexOfKey(SystemStringFromCyString(file->sName)) == -1 )
238
			item->ImageKey = "package";
357
			item->ImageKey = "package";
239
		else
358
		else
240
			item->ImageKey = SystemStringFromCyString(file->sName);
359
			item->ImageKey = SystemStringFromCyString(file->sName);
Line 318... Line 437...
318
 
437
 
319
		// read the spk file to memory before trying to extract its files
438
		// read the spk file to memory before trying to extract its files
320
		if ( !this->ReadMultiPackage() )
439
		if ( !this->ReadMultiPackage() )
321
			return;
440
			return;
322
 
441
 
323
		ExtractDialog ^ed = gcnew ExtractDialog(list, toDir, m_pPackage, game);
442
		ExtractDialog ^ed = gcnew ExtractDialog(list, toDir, m_pPackage, game, _pPackages);
324
		ed->ShowDialog((Form1 ^)this->MdiParent);
443
		ed->ShowDialog((Form1 ^)this->MdiParent);
325
 
444
 
326
		if ( ed->OK() && !ed->Canceled() && ed->ExtractedCount() )
445
		if ( ed->OK() && !ed->Canceled() && ed->ExtractedCount() )
327
			MessageBox::Show(this, "Files have been extracting successfully to:\n" + toDir, "Extacted", MessageBoxButtons::OK, MessageBoxIcon::Information);
446
			MessageBox::Show(this, "Files have been extracting successfully to:\n" + toDir, "Extacted", MessageBoxButtons::OK, MessageBoxIcon::Information);
328
	}
447
	}
Line 350... Line 469...
350
	void SpkForm::DoPackageExtract(CLinkList<SMultiSpkFile> *list, System::String ^toDir)
469
	void SpkForm::DoPackageExtract(CLinkList<SMultiSpkFile> *list, System::String ^toDir)
351
	{
470
	{
352
		if ( !toDir )
471
		if ( !toDir )
353
			return;
472
			return;
354
 
473
 
355
		ExtractDialog ^ed = gcnew ExtractDialog(list, toDir, m_pMultiPackage);
474
		ExtractDialog ^ed = gcnew ExtractDialog(list, toDir, m_pMultiPackage, _pPackages);
356
		ed->ShowDialog((Form1 ^)this->MdiParent);
475
		ed->ShowDialog((Form1 ^)this->MdiParent);
357
 
476
 
358
		if ( ed->OK() && !ed->Canceled() )
477
		if ( ed->OK() && !ed->Canceled() )
359
			MessageBox::Show(this, "Files have been extracting successfully to:\n" + toDir, "Extacted", MessageBoxButtons::OK, MessageBoxIcon::Information);
478
			MessageBox::Show(this, "Files have been extracting successfully to:\n" + toDir, "Extacted", MessageBoxButtons::OK, MessageBoxIcon::Information);
360
	}
479
	}