Subversion Repositories spk

Rev

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

Rev 126 Rev 127
Line 7... Line 7...
7
#include "SaveDialog.h"
7
#include "SaveDialog.h"
8
 
8
 
9
#include <Package/InstallText.h>
9
#include <Package/InstallText.h>
10
 
10
 
11
namespace Creator {
11
namespace Creator {
-
 
12
	PackageForm::PackageForm(System::Windows::Forms::Form ^parent, System::Windows::Forms::TabControl ^ctrl, System::Windows::Forms::TabPage ^page, System::Windows::Forms::ToolStripMenuItem ^tool, CPackages *p, Windows::Forms::ImageList ^imagelist, SSettings *set) 
-
 
13
		: BaseForm(parent, ctrl, page, tool, p, imagelist, set),
-
 
14
		_addGameItem(nullptr),
-
 
15
		_removeGameItem(nullptr)
-
 
16
	{
-
 
17
		InitializeComponent();
-
 
18
		this->LabelShipWarning->Visible = false;
-
 
19
		this->TextExactVersion->Visible = false;
-
 
20
		this->DoToolTips();
-
 
21
 
-
 
22
		this->ListDep->LargeImageList = this->imageList1;
-
 
23
		this->ListDep->SmallImageList = this->imageList1;
-
 
24
 
-
 
25
		m_pSettings = set;
-
 
26
		m_iFormType = FORMTYPE_SINGLE;
-
 
27
		m_pDisplayFile = NULL;
-
 
28
 
-
 
29
		this->NumTextID->Visible = false;
-
 
30
 
-
 
31
		m_iSelectedGame = -1;
-
 
32
 
-
 
33
		this->Closing += gcnew CancelEventHandler(this, &PackageForm::PackageForm_Closing);
-
 
34
 
-
 
35
		_pPackages = new CPackages();
-
 
36
		_pPackages->startup(".", ".", ".");
-
 
37
		m_pPackage = NULL;
-
 
38
		m_pTypeList = new CyStringList;
-
 
39
 
-
 
40
		this->ComboShipPart->SelectedIndex = 0;
-
 
41
 
-
 
42
		m_bLoading = false;
-
 
43
	}
-
 
44
 
-
 
45
	PackageForm::~PackageForm()
-
 
46
	{
-
 
47
		if (components)
-
 
48
			delete components;
-
 
49
 
-
 
50
		delete m_pTypeList;
-
 
51
		if (m_pPackage)
-
 
52
			delete m_pPackage;
-
 
53
		if (_pPackages)
-
 
54
			delete _pPackages;
-
 
55
	}
-
 
56
 
-
 
57
 
12
	bool PackageForm::LoadPackage(CBaseFile *base, System::String ^filename)
58
	bool PackageForm::LoadPackage(CBaseFile *base, System::String ^filename)
13
	{
59
	{
14
		m_sFilename = filename;
60
		m_sFilename = filename;
15
 
61
 
16
		if ( !base )
62
		if ( !base )
Line 775... Line 821...
775
	{
821
	{
776
		m_bLoading = true;
822
		m_bLoading = true;
777
 
823
 
778
		this->ComboFileType->Items->Add("All Files");
824
		this->ComboFileType->Items->Add("All Files");
779
		for ( int i = 0; i < FILETYPE_MAX; i++ )
825
		for ( int i = 0; i < FILETYPE_MAX; i++ )
780
			this->ComboFileType->Items->Add(SystemStringFromCyString(GetFileTypeString(i)));
826
			this->ComboFileType->Items->Add(_US(GetFileTypeString(i)));
781
		this->ComboFileType->SelectedIndex = 0;
827
		this->ComboFileType->SelectedIndex = 0;
782
 
828
 
783
		this->PanelShip->Hide();
829
		this->PanelShip->Hide();
784
 
830
 
785
		m_bSortingAsc = true;
831
		m_bSortingAsc = true;
Line 794... Line 840...
794
		this->ToolGame->DropDownItems->Clear();
840
		this->ToolGame->DropDownItems->Clear();
795
 
841
 
796
		this->ComboGameFilter->Items->Add("- None -");
842
		this->ComboGameFilter->Items->Add("- None -");
797
		this->ComboGameFilter->Items->Add("- All Games -");
843
		this->ComboGameFilter->Items->Add("- All Games -");
798
 
844
 
-
 
845
		ToolStripItem ^newItem = this->ToolGame->DropDownItems->Add("- All Games -");
-
 
846
		newItem->Tag = Convert::ToString(0);
-
 
847
		newItem->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
-
 
848
 
-
 
849
		newItem = this->ToolGame->DropDownItems->Add("------");
-
 
850
		newItem->Enabled = false;
-
 
851
 
-
 
852
		if (!_addGameItem)
-
 
853
		{
-
 
854
			_addGameItem = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
855
			_addGameItem->Text = "Add Game";
-
 
856
		}
-
 
857
		this->ToolGame->DropDownItems->Add(_addGameItem);
-
 
858
 
-
 
859
		if (!_removeGameItem)
-
 
860
		{
-
 
861
			_removeGameItem = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
862
			_removeGameItem->Text = "Remove Game";
-
 
863
		}
-
 
864
		this->ToolGame->DropDownItems->Add(_removeGameItem);
-
 
865
 
-
 
866
		newItem = this->ToolGame->DropDownItems->Add("------");
-
 
867
		newItem->Enabled = false;
-
 
868
 
799
		for ( int i = 0; i < m_pP->GetGameExe()->GetNumGames(); i++ )
869
		for ( int i = 0; i < m_pP->GetGameExe()->GetNumGames(); i++ )
800
		{
870
		{
801
			SGameExe *gameExe = m_pP->GetGameExe()->GetGame(i);
871
			SGameExe *gameExe = m_pP->GetGameExe()->GetGame(i);
802
			if ( gameExe )
872
			if ( gameExe )
803
			{
873
			{
804
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
874
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
805
				newItem->Text = SystemStringFromCyString(gameExe->sName);
875
				newItem->Text = _US(gameExe->sName);
806
				newItem->Tag = Convert::ToString(i + 1);
876
				newItem->Tag = Convert::ToString(i + 1);
807
				if (i < this->imageListGames->Images->Count)
877
				if (i < this->imageListGames->Images->Count)
808
					newItem->Image = this->imageListGames->Images[i];
878
					newItem->Image = this->imageListGames->Images[i];
809
				newItem->Click += gcnew System::EventHandler(this, &PackageForm::ContextGame_Selected);
879
				newItem->Click += gcnew System::EventHandler(this, &PackageForm::ContextGame_Selected);
810
				this->ContextGames->Items->Add(newItem);
880
				this->ContextGames->Items->Add(newItem);
811
 
881
 
812
				System::Windows::Forms::ToolStripMenuItem ^newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
882
				System::Windows::Forms::ToolStripMenuItem ^newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
813
				newItem2->Text = SystemStringFromCyString(gameExe->sName);
883
				newItem2->Text = _US(gameExe->sName);
814
				newItem2->Tag = Convert::ToString(i + 1);
884
				newItem2->Tag = Convert::ToString(i + 1);
815
				if (i < this->imageListGames->Images->Count)
885
				if (i < this->imageListGames->Images->Count)
816
					newItem2->Image = this->imageListGames->Images[i];
886
					newItem2->Image = this->imageListGames->Images[i];
817
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
887
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
818
				this->ToolGame->DropDownItems->Add(newItem2);
888
				this->ToolGame->DropDownItems->Add(newItem2);
-
 
889
				this->ComboGameFilter->Items->Add(_US(gameExe->sName));
-
 
890
 
-
 
891
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
892
				newItem2->Text = _US(gameExe->sName);
-
 
893
				newItem2->Tag = Convert::ToString(i + 1);
-
 
894
				if (i < this->imageListGames->Images->Count)
-
 
895
					newItem2->Image = this->imageListGames->Images[i];
-
 
896
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::AddGame_Selected);
-
 
897
				_addGameItem->DropDownItems->Add(newItem2);
819
 
898
 
-
 
899
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
820
				this->ComboGameFilter->Items->Add(SystemStringFromCyString(gameExe->sName));
900
				newItem2->Text = _US(gameExe->sName);
-
 
901
				newItem2->Tag = Convert::ToString(i + 1);
-
 
902
				if (i < this->imageListGames->Images->Count)
-
 
903
					newItem2->Image = this->imageListGames->Images[i];
-
 
904
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::RemoveGame_Selected);
-
 
905
				_removeGameItem->DropDownItems->Add(newItem2);
821
			}
906
			}
822
		}
907
		}
823
 
908
 
824
		this->ComboGameFilter->SelectedIndex = 0;
909
		this->ComboGameFilter->SelectedIndex = 0;
825
 
910
 
Line 828... Line 913...
828
 
913
 
829
		m_pTypeList->Clear();
914
		m_pTypeList->Clear();
830
		for ( int i = 0; i < CSpkFile::SCRIPTTYPE_MAX; i++ )
915
		for ( int i = 0; i < CSpkFile::SCRIPTTYPE_MAX; i++ )
831
		{
916
		{
832
			m_pTypeList->PushBack(CSpkFile::GetScriptTypeStringStatic(i).c_str());
917
			m_pTypeList->PushBack(CSpkFile::GetScriptTypeStringStatic(i).c_str());
833
			ComboType->Items->Add(SystemStringFromCyString(CSpkFile::GetScriptTypeStringStatic(i)));
918
			ComboType->Items->Add(_US(CSpkFile::GetScriptTypeStringStatic(i)));
834
		}
919
		}
835
 
920
 
836
		this->CreationDate->Value = DateTime::Today;
921
		this->CreationDate->Value = DateTime::Today;
837
 
922
 
838
		m_bLoading = false;
923
		m_bLoading = false;
Line 865... Line 950...
865
		this->ListFiles->Items->Clear();
950
		this->ListFiles->Items->Clear();
866
		if ( m_pPackage ) {
951
		if ( m_pPackage ) {
867
			for ( C_File *file = m_pPackage->GetFileList()->First(); file; file = m_pPackage->GetFileList()->Next() )
952
			for ( C_File *file = m_pPackage->GetFileList()->First(); file; file = m_pPackage->GetFileList()->Next() )
868
			{
953
			{
869
				file->SetPos(pos++);
954
				file->SetPos(pos++);
870
				if ( this->ComboGameFilter->SelectedIndex > 0 ) {
955
				if (this->ComboGameFilter->SelectedIndex == 1)
-
 
956
				{
-
 
957
					if (file->game() > 0 && file->game() != 1 << 31)
-
 
958
						continue;
-
 
959
				}
-
 
960
				else if (this->ComboGameFilter->SelectedIndex > 0)
-
 
961
				{
871
					if ( this->ComboGameFilter->SelectedIndex - 1 != file->GetGame() )
962
					if (!(1 << (this->ComboGameFilter->SelectedIndex - 1) & file->game()))
872
						continue;
963
						continue;
873
				}
964
				}
874
				if ( this->ComboFileType->SelectedIndex == 0 || (this->ComboFileType->SelectedIndex - 1) == file->GetFileType() )
965
				if ( this->ComboFileType->SelectedIndex == 0 || (this->ComboFileType->SelectedIndex - 1) == file->GetFileType() )
875
					this->AddFile(file);
966
					this->AddFile(file);
876
			}
967
			}
Line 908... Line 999...
908
		if ( file->IsSigned() )
999
		if ( file->IsSigned() )
909
			item->SubItems->Add("Yes");
1000
			item->SubItems->Add("Yes");
910
		else
1001
		else
911
			item->SubItems->Add("No");
1002
			item->SubItems->Add("No");
912
 
1003
 
913
		if ( !file->GetGame() )
1004
		if ( !file->game() || file->game() == (1 << 31))
914
			item->SubItems->Add("All Games");
1005
			item->SubItems->Add("All Games");
915
		else {
1006
		else
-
 
1007
		{
-
 
1008
			if (file->game() & (1 << 31))
-
 
1009
			{			
-
 
1010
				Utils::String sGames = "";
-
 
1011
				for (int i = 0; i < 31; ++i)
-
 
1012
				{
916
			CPackages p;
1013
					int gameMask = 1 << i;
-
 
1014
					if (file->game() & gameMask)
-
 
1015
					{
917
			p.Startup(".", ".", ".");
1016
						Utils::String sGame;
918
			SGameExe *exe = p.GetGameExe()->GetGame(file->GetGame() - 1);
1017
						SGameExe *exe = _pPackages->GetGameExe()->GetGame(i - 1);
919
			if ( exe ) {
1018
						if (exe)
-
 
1019
							sGame = exe->sName;
-
 
1020
						else
-
 
1021
							sGame = "Game: " + Utils::String::Number(i);
-
 
1022
 
-
 
1023
						if (sGames.empty())
-
 
1024
							sGames = sGame;
-
 
1025
						else
-
 
1026
							sGames = sGames + "\n" + sGame;
-
 
1027
					}
-
 
1028
				}
920
				item->SubItems->Add(SystemStringFromCyString(exe->sName));
1029
				item->SubItems->Add(_US(sGames));
921
			}
1030
			}
-
 
1031
			else
-
 
1032
			{
-
 
1033
				SGameExe *exe = _pPackages->GetGameExe()->GetGame(file->game() - 1);
-
 
1034
				if (exe) {
-
 
1035
					item->SubItems->Add(_US(exe->sName));
-
 
1036
				}
922
			else {
1037
				else {
923
				item->SubItems->Add("Game: " + file->GetGame());
1038
					item->SubItems->Add("Game: " + file->game());
-
 
1039
				}
924
			}
1040
			}
925
		}
1041
		}
926
 
1042
 
927
		item->Tag = SystemStringFromCyString(CyString::Number(file->GetPos()));
1043
		item->Tag = SystemStringFromCyString(CyString::Number(file->GetPos()));
928
		if ( file->IsFakePatch() )
1044
		if ( file->IsFakePatch() )
Line 1004... Line 1120...
1004
			}
1120
			}
1005
			array<System::String ^> ^fileArray = ofd->FileNames;
1121
			array<System::String ^> ^fileArray = ofd->FileNames;
1006
			for ( int i = 0; i < fileArray->Length; i++ )
1122
			for ( int i = 0; i < fileArray->Length; i++ )
1007
			{
1123
			{
1008
				System::String ^file = fileArray[i];
1124
				System::String ^file = fileArray[i];
1009
				int filetype = m_pP->AdjustFileType(CyStringFromSystemString(file), ofd->FilterIndex - 1);
1125
				int filetype = m_pP->AdjustFileType(CyStringFromSystemString(file), ofd->FilterIndex - 1);				
1010
				C_File *f = m_pPackage->AddFile(CyStringFromSystemString(file), dir, filetype);
1126
				C_File *f = m_pPackage->AddFile(CyStringFromSystemString(file), dir, filetype, this->ComboGameFilter->SelectedIndex > 1 ? (1 << (this->ComboGameFilter->SelectedIndex - 1) | 1 << 31) : 0);
1011
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1127
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1012
					m_pPackage->AddFile(CFileIO(CyStringFromSystemString(file)).ChangeFileExtension("dat"), dir, filetype);
1128
					m_pPackage->AddFile(CFileIO(CyStringFromSystemString(file)).ChangeFileExtension("dat"), dir, filetype);
1013
			}
1129
			}
1014
			m_pPackage->UpdateSigned(false);
1130
			m_pPackage->UpdateSigned(false);
1015
			this->UpdateFileList();
1131
			this->UpdateFileList();
Line 1250... Line 1366...
1250
		ofd->Multiselect = false;
1366
		ofd->Multiselect = false;
1251
		ofd->Title = "Select the Icon file to add";
1367
		ofd->Title = "Select the Icon file to add";
1252
 
1368
 
1253
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1369
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1254
		{
1370
		{
1255
			CyString file = CyStringFromSystemString(ofd->FileName);
1371
			Utils::String file = _S(ofd->FileName);
1256
			C_File *icon = new C_File(file);
1372
			C_File *icon = new C_File(file);
1257
			if ( icon->ReadFromFile() )
1373
			if ( icon->ReadFromFile() )
1258
				m_pPackage->SetIcon(icon, CFileIO(file).GetFileExtension());
1374
				m_pPackage->SetIcon(icon, CFileIO(file).GetFileExtension());
1259
 
1375
 
1260
			this->UpdateDisplayIcon();
1376
			this->UpdateDisplayIcon();
Line 1554... Line 1670...
1554
		if ( String::Compare(IO::FileInfo(file).Extension, ".xml") == 0 )
1670
		if ( String::Compare(IO::FileInfo(file).Extension, ".xml") == 0 )
1555
			return file;
1671
			return file;
1556
		
1672
		
1557
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1673
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1558
		{
1674
		{
1559
			C_File F(CyStringFromSystemString(file));
1675
			C_File F(_S(file));
1560
			F.UnPCKFile();
1676
			F.UnPCKFile();
1561
			if ( F.WriteToFile(CPackages::tempDirectory() + "tmp.dat") )
1677
			if ( F.WriteToFile(CPackages::tempDirectory() + "tmp.dat") )
1562
				return _US(CPackages::tempDirectory() + "tmp.dat");
1678
				return _US(CPackages::tempDirectory() + "tmp.dat");
1563
		}
1679
		}
1564
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
1680
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
Line 1804... Line 1920...
1804
			 }
1920
			 }
1805
			 this->UpdateDependacies();
1921
			 this->UpdateDependacies();
1806
			 this->UpdateChanged();
1922
			 this->UpdateChanged();
1807
		 }
1923
		 }
1808
	}
1924
	}
1809
}
-
 
1810
1925
 
-
 
1926
	System::Void PackageForm::SetGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1927
	{
-
 
1928
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1929
 
-
 
1930
		int done = 0;
-
 
1931
		if (ListFiles->SelectedItems->Count)
-
 
1932
		{
-
 
1933
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1934
			{
-
 
1935
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1936
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1937
				if (file) {
-
 
1938
					int iGame = Convert::ToInt32(item->Tag);
-
 
1939
					if(!iGame)
-
 
1940
						file->setGame(0);
-
 
1941
					else
-
 
1942
						file->setGame(1 << 31 | 1 << iGame);
-
 
1943
					++done;
-
 
1944
				}
-
 
1945
			}
-
 
1946
		}
-
 
1947
 
-
 
1948
		if (done) {
-
 
1949
			this->UpdateFileList();
-
 
1950
			this->UpdateChanged();
-
 
1951
		}
-
 
1952
	}
-
 
1953
	System::Void PackageForm::AddGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1954
	{
-
 
1955
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1956
 
-
 
1957
		int done = 0;
-
 
1958
		if (ListFiles->SelectedItems->Count)
-
 
1959
		{
-
 
1960
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1961
			{
-
 
1962
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1963
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1964
				if (file) {
-
 
1965
					int iGame = Convert::ToInt32(item->Tag);
-
 
1966
					if (iGame)
-
 
1967
						file->setGame(file->game() | 1 << iGame | 1 << 31);
-
 
1968
					++done;
-
 
1969
				}
-
 
1970
			}
-
 
1971
		}
-
 
1972
 
-
 
1973
		if (done) {
-
 
1974
			this->UpdateFileList();
-
 
1975
			this->UpdateChanged();
-
 
1976
		}
-
 
1977
	}
-
 
1978
	System::Void PackageForm::RemoveGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1979
	{
-
 
1980
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1981
 
-
 
1982
		int done = 0;
-
 
1983
		if (ListFiles->SelectedItems->Count)
-
 
1984
		{
-
 
1985
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1986
			{
-
 
1987
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1988
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1989
				if (file) {
-
 
1990
					int iGame = Convert::ToInt32(item->Tag);
-
 
1991
					if (iGame)
-
 
1992
						file->setGame(file->game() & ~(1 << iGame));
-
 
1993
					++done;
-
 
1994
				}
-
 
1995
			}
-
 
1996
		}
-
 
1997
 
-
 
1998
		if (done) {
-
 
1999
			this->UpdateFileList();
-
 
2000
			this->UpdateChanged();
-
 
2001
		}
-
 
2002
	}
-
 
2003
}
-
 
2004