Subversion Repositories spk

Rev

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

Rev 165 Rev 170
Line 116... Line 116...
116
						delete data;
116
						delete data;
117
				}
117
				}
118
			}
118
			}
119
		}
119
		}
120
 
120
 
121
		if ( m_pPackage->GetIcon() )
121
		if ( m_pPackage->icon() )
122
		{
122
		{
123
			C_File *f = m_pPackage->GetIcon();
123
			C_File *f = m_pPackage->icon();
124
			f->setFilename(_S(System::IO::Path::GetTempPath()) + "/package_icon." + m_pPackage->iconExt());
124
			f->setFilename(_S(System::IO::Path::GetTempPath()) + "/package_icon." + m_pPackage->iconExt());
125
			f->setFullDir(_S(System::IO::Path::GetTempPath()));
125
			f->setFullDir(_S(System::IO::Path::GetTempPath()));
126
			long size;
126
			long size;
127
			unsigned char *data = f->UncompressData(&size, 0);
127
			unsigned char *data = f->UncompressData(&size, 0);
128
			if ( data && size )
128
			if ( data && size )
Line 586... Line 586...
586
				break;
586
				break;
587
			case 4: // Bodies
587
			case 4: // Bodies
588
				numColums = 2;
588
				numColums = 2;
589
				this->ColumnPart1->Text = "Section";
589
				this->ColumnPart1->Text = "Section";
590
				this->ColumnPart2->Text = "Bodies";
590
				this->ColumnPart2->Text = "Bodies";
591
				for ( SStringList *b = xsp->GetBodies()->Head(); b; b = b->next )
591
				for(auto itr = xsp->getBodies().begin(); itr != xsp->getBodies().end(); itr++)
592
				{
592
				{
593
					ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(b->str.GetToken(";", 1, 1)));
593
					ListViewItem ^item = gcnew ListViewItem(_US((*itr)->str.token(";", 1)));
594
					item->SubItems->Add(SystemStringFromCyString(b->str.GetToken(";", 2)));
594
					item->SubItems->Add(_US((*itr)->str.tokens(";", 2)));
595
					item->ImageKey = "bodies";
595
					item->ImageKey = "bodies";
596
					this->ListShipPart->Items->Add(item);
596
					this->ListShipPart->Items->Add(item);
597
				}
597
				}
598
				break;
598
				break;
599
			case 5: // Animations
599
			case 5: // Animations
600
				numColums = 1;
600
				numColums = 1;
601
				this->ColumnPart1->Text = "Animations";
601
				this->ColumnPart1->Text = "Animations";
602
				for ( SStringList *a = xsp->GetAnimations()->Head(); a; a = a->next )
602
				for(auto itr = xsp->getAnimations().begin(); itr != xsp->getAnimations().end(); itr++)
603
				{
603
				{
604
					ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(a->str));
604
					ListViewItem ^item = gcnew ListViewItem(_US((*itr)->str));
605
					item->ImageKey = "animations";
605
					item->ImageKey = "animations";
606
					this->ListShipPart->Items->Add(item);
606
					this->ListShipPart->Items->Add(item);
607
				}
607
				}
608
				break;
608
				break;
609
 
609
 
610
			// dont know what we are supposed to be displaying
610
			// dont know what we are supposed to be displaying
611
			default:
611
			default:
612
				this->ListShipPart->Visible = false;
612
				this->ListShipPart->Visible = false;
613
		}
613
		}
614
 
614
 
615
		this->ListShipPart->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
615
		this->ListShipPart->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
616
		// adjust size of columns
616
		// adjust size of columns
617
		if ( numColums < 3 )
617
		if ( numColums < 3 )
618
			this->ColumnPart3->Width = 0;
618
			this->ColumnPart3->Width = 0;
619
		if ( numColums < 2 )
619
		if ( numColums < 2 )
620
			this->ColumnPart2->Width = 0;
620
			this->ColumnPart2->Width = 0;
621
	}
621
	}
622
 
622
 
623
	void PackageForm::UpdateShipText()
623
	void PackageForm::UpdateShipText()
624
	{
624
	{
625
		CXspFile *xsp = (CXspFile *)m_pPackage;
625
		CXspFile *xsp = (CXspFile *)m_pPackage;
626
 
626
 
627
		this->ListShipText->Items->Clear();
627
		this->ListShipText->Items->Clear();
628
 
628
 
629
		for ( SText *t = xsp->GetTexts()->First(); t; t = xsp->GetTexts()->Next() )
629
		for ( SText *t = xsp->GetTexts()->First(); t; t = xsp->GetTexts()->Next() )
630
		{
630
		{
631
			ListViewItem ^item = gcnew ListViewItem(System::Convert::ToString(t->iId));
631
			ListViewItem ^item = gcnew ListViewItem(System::Convert::ToString(t->iId));
632
			item->ImageIndex = 0;
632
			item->ImageIndex = 0;
633
			item->SubItems->Add(SystemStringFromCyString(t->sName));
633
			item->SubItems->Add(SystemStringFromCyString(t->sName));
634
			item->SubItems->Add(SystemStringFromCyString(t->sDesc));
634
			item->SubItems->Add(SystemStringFromCyString(t->sDesc));
635
			this->ListShipText->Items->Add(item);
635
			this->ListShipText->Items->Add(item);
636
		}
636
		}
637
 
637
 
638
		this->ListShipText->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
638
		this->ListShipText->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
639
	}
639
	}
640
 
640
 
641
	void PackageForm::UpdateDisplayPic()
641
	void PackageForm::UpdateDisplayPic()
642
	{
642
	{
643
		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(PackageForm::typeid));
643
		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(PackageForm::typeid));
644
		this->ButPicBack->Enabled = false;
644
		this->ButPicBack->Enabled = false;
645
		this->ButPicNext->Enabled = false;
645
		this->ButPicNext->Enabled = false;
646
		if ( m_pDisplayFile )
646
		if ( m_pDisplayFile )
647
		{
647
		{
648
			CyString filePointer = m_pDisplayFile->GetFilePointer();
648
			CyString filePointer = m_pDisplayFile->GetFilePointer();
Line 658... Line 658...
658
 
658
 
659
			if ( m_pPackage->GetFirstFile(FILETYPE_ADVERT) != m_pDisplayFile )
659
			if ( m_pPackage->GetFirstFile(FILETYPE_ADVERT) != m_pDisplayFile )
660
				this->ButPicBack->Enabled = true;
660
				this->ButPicBack->Enabled = true;
661
			if ( m_pPackage->GetNextFile(m_pDisplayFile)  )
661
			if ( m_pPackage->GetNextFile(m_pDisplayFile)  )
662
				this->ButPicNext->Enabled = true;
662
				this->ButPicNext->Enabled = true;
663
		}
663
		}
664
		else
664
		else
665
		{
665
		{
666
			this->ButPicDel->Enabled = false;
666
			this->ButPicDel->Enabled = false;
667
			this->DisplayPicture->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"DisplayPicture.Image")));
667
			this->DisplayPicture->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"DisplayPicture.Image")));
668
		}
668
		}
Line 697... Line 697...
697
 
697
 
698
			if ( num == -1 && m_pPackage->IsFakePatch() )
698
			if ( num == -1 && m_pPackage->IsFakePatch() )
699
				num = 2;
699
				num = 2;
700
 
700
 
701
			if ( num != -1 )
701
			if ( num != -1 )
702
			{
702
			{
703
				this->DisplayIcon->Image = this->imageList1->Images[num];
703
				this->DisplayIcon->Image = this->imageList1->Images[num];
704
				m_pTabPage->ImageIndex = num;
704
				m_pTabPage->ImageIndex = num;
705
			}
705
			}
706
		}
706
		}
707
 
707
 
708
		this->ButIconDel->Enabled = false;
708
		this->ButIconDel->Enabled = false;
709
 
709
 
710
		if ( m_pPackage->GetIcon() )
710
		if ( m_pPackage->icon() )
711
		{
711
		{
712
			this->ButIconDel->Enabled = true;
712
			this->ButIconDel->Enabled = true;
713
			CyString filePointer = m_pPackage->GetIcon()->GetFilePointer();
713
			CyString filePointer = m_pPackage->icon()->GetFilePointer();
714
			filePointer = filePointer.FindReplace("/", "\\");
714
			filePointer = filePointer.FindReplace("/", "\\");
715
			filePointer = filePointer.FindReplace("\\\\", "\\");
715
			filePointer = filePointer.FindReplace("\\\\", "\\");
716
			String ^file = SystemStringFromCyString(filePointer);
716
			String ^file = SystemStringFromCyString(filePointer);
717
			if ( System::IO::File::Exists(file) )
717
			if ( System::IO::File::Exists(file) )
718
			{
718
			{
Line 758... Line 758...
758
				SGameExeVersion *v = exe->lVersions[i];
758
				SGameExeVersion *v = exe->lVersions[i];
759
				ComboVersion->Items->Add(SystemStringFromCyString(v->sName));
759
				ComboVersion->Items->Add(SystemStringFromCyString(v->sName));
760
			}
760
			}
761
			ComboVersion->Items->Add("Exact (Custom)");
761
			ComboVersion->Items->Add("Exact (Custom)");
762
			ComboVersion->Enabled = true;
762
			ComboVersion->Enabled = true;
763
		}
763
		}
764
		else
764
		else
765
		{
765
		{
766
			ComboVersion->Enabled = false;
766
			ComboVersion->Enabled = false;
767
		}
767
		}
768
		
768
		
769
 
769
 
Line 839... Line 839...
839
		if ( m_pPackage->recommended() < 0 )
839
		if ( m_pPackage->recommended() < 0 )
840
			this->GroupRec->Text = "Recommended";
840
			this->GroupRec->Text = "Recommended";
841
		else
841
		else
842
			this->GroupRec->Text = "Recommended (" + System::Convert::ToString(m_pPackage->recommended()) + ")";
842
			this->GroupRec->Text = "Recommended (" + System::Convert::ToString(m_pPackage->recommended()) + ")";
843
	}
843
	}
844
 
844
 
845
	void PackageForm::Setup()
845
	void PackageForm::Setup()
846
	{
846
	{
847
		m_bLoading = true;
847
		m_bLoading = true;
848
 
848
 
849
		this->ComboFileType->Items->Add("All Files");
849
		this->ComboFileType->Items->Add("All Files");
Line 918... Line 918...
918
				newItem2->Tag = Convert::ToString(i + 1);
918
				newItem2->Tag = Convert::ToString(i + 1);
919
				if (i < this->imageListGames->Images->Count)
919
				if (i < this->imageListGames->Images->Count)
920
					newItem2->Image = this->imageListGames->Images[i];
920
					newItem2->Image = this->imageListGames->Images[i];
921
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::AddGame_Selected);
921
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::AddGame_Selected);
922
				_addGameItem->DropDownItems->Add(newItem2);
922
				_addGameItem->DropDownItems->Add(newItem2);
923
 
923
 
924
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
924
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
925
				newItem2->Text = _US(gameExe->sName);
925
				newItem2->Text = _US(gameExe->sName);
926
				newItem2->Tag = Convert::ToString(i + 1);
926
				newItem2->Tag = Convert::ToString(i + 1);
927
				if (i < this->imageListGames->Images->Count)
927
				if (i < this->imageListGames->Images->Count)
928
					newItem2->Image = this->imageListGames->Images[i];
928
					newItem2->Image = this->imageListGames->Images[i];
Line 957... Line 957...
957
			if ( !game->sVersion.empty() ) {
957
			if ( !game->sVersion.empty() ) {
958
				item->SubItems->Add("Exact: " + SystemStringFromCyString(game->sVersion));
958
				item->SubItems->Add("Exact: " + SystemStringFromCyString(game->sVersion));
959
			}
959
			}
960
			else {
960
			else {
961
				item->SubItems->Add(SystemStringFromCyString(m_pP->GetGameVersionFromType(game->iGame, game->iVersion, game->sVersion)));
961
				item->SubItems->Add(SystemStringFromCyString(m_pP->GetGameVersionFromType(game->iGame, game->iVersion, game->sVersion)));
962
			}
962
			}
963
			item->Tag = game->iGame;
963
			item->Tag = game->iGame;
964
			this->ListGames->Items->Add(item);
964
			this->ListGames->Items->Add(item);
965
		}
965
		}
966
 
966
 
967
		this->ListGames->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
967
		this->ListGames->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
Line 997... Line 997...
997
	}
997
	}
998
 
998
 
999
	void PackageForm::AddFile(C_File *file)
999
	void PackageForm::AddFile(C_File *file)
1000
	{
1000
	{
1001
		ListViewItem ^item = gcnew ListViewItem("");
1001
		ListViewItem ^item = gcnew ListViewItem("");
1002
 
1002
 
1003
		if ( file->GetData() )
1003
		if ( file->GetData() )
1004
		{
1004
		{
1005
			item->SubItems->Add(SystemStringFromCyString(CyString("<PACKAGE>/") + file->GetNameDirectory(NULL)));
1005
			item->SubItems->Add(SystemStringFromCyString(CyString("<PACKAGE>/") + file->GetNameDirectory(NULL)));
1006
			item->SubItems->Add(SystemStringFromCyString(file->GetUncompressedSizeString()));
1006
			item->SubItems->Add(SystemStringFromCyString(file->GetUncompressedSizeString()));
1007
		}
1007
		}
Line 1077... Line 1077...
1077
	}
1077
	}
1078
 
1078
 
1079
	void PackageForm::AddNewFile()
1079
	void PackageForm::AddNewFile()
1080
	{
1080
	{
1081
		// add filters
1081
		// add filters
1082
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1082
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1083
 
1083
 
1084
		System::String ^filter;
1084
		System::String ^filter;
1085
		for ( int i = 0; i < FILETYPE_MAX; i++ )
1085
		for ( int i = 0; i < FILETYPE_MAX; i++ )
1086
		{
1086
		{
1087
			if ( filter )
1087
			if ( filter )
Line 1095... Line 1095...
1095
				case FILETYPE_UNINSTALL:
1095
				case FILETYPE_UNINSTALL:
1096
				case FILETYPE_MAP:
1096
				case FILETYPE_MAP:
1097
				case FILETYPE_TEXT:
1097
				case FILETYPE_TEXT:
1098
				case FILETYPE_MISSION:
1098
				case FILETYPE_MISSION:
1099
					filter += "*.pck;*.xml";
1099
					filter += "*.pck;*.xml";
1100
					break;
1100
					break;
1101
 
1101
 
1102
				case FILETYPE_README:
1102
				case FILETYPE_README:
1103
					filter += "*.txt;*.doc;*.docx;*.pdf";
1103
					filter += "*.txt;*.doc;*.docx;*.pdf";
1104
					break;
1104
					break;
1105
 
1105
 
1106
				case FILETYPE_MOD:
1106
				case FILETYPE_MOD:
Line 1134... Line 1134...
1134
		ofd->RestoreDirectory = true;
1134
		ofd->RestoreDirectory = true;
1135
		ofd->Multiselect = true;
1135
		ofd->Multiselect = true;
1136
		ofd->Title = "Select File(s) to add to package";
1136
		ofd->Title = "Select File(s) to add to package";
1137
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1137
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1138
		{
1138
		{
1139
			CyString dir;
1139
			Utils::String dir;
1140
			if ( C_File::DoesTypeHaveExtraDir(ofd->FilterIndex - 1) )
1140
			if ( C_File::DoesTypeHaveExtraDir(ofd->FilterIndex - 1) )
1141
			{
1141
			{
1142
				InputBox ^input = gcnew InputBox("Enter the directory to add files to", ((ofd->FilterIndex - 1) == FILETYPE_EXTRA) ? "PluginManager/Extras/$scriptname" : "");
1142
				InputBox ^input = gcnew InputBox("Enter the directory to add files to", ((ofd->FilterIndex - 1) == FILETYPE_EXTRA) ? "PluginManager/Extras/$scriptname" : "");
1143
				if ( input->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1143
				if ( input->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1144
					dir = CyStringFromSystemString(input->GetInput());
1144
					dir = _S(input->GetInput());
1145
			}
1145
			}
1146
			array<System::String ^> ^fileArray = ofd->FileNames;
1146
			array<System::String ^> ^fileArray = ofd->FileNames;
1147
			for ( int i = 0; i < fileArray->Length; i++ )
1147
			for ( int i = 0; i < fileArray->Length; i++ )
1148
			{
1148
			{
1149
				System::String ^file = fileArray[i];
1149
				System::String ^file = fileArray[i];
1150
				int filetype = m_pP->AdjustFileType(CyStringFromSystemString(file), ofd->FilterIndex - 1);				
1150
				FileType filetype = m_pP->adjustFileType(_S(file), static_cast<FileType>(ofd->FilterIndex - 1));
1151
				C_File *f = m_pPackage->AddFile(CyStringFromSystemString(file), dir, filetype, this->ComboGameFilter->SelectedIndex > 1 ? (1 << (this->ComboGameFilter->SelectedIndex - 1) | 1 << 31) : 0);
1151
				C_File *f = m_pPackage->addFile(_S(file), dir, filetype, this->ComboGameFilter->SelectedIndex > 1 ? (1 << (this->ComboGameFilter->SelectedIndex - 1) | 1 << 31) : 0);
1152
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1152
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1153
					m_pPackage->AddFile(CFileIO(CyStringFromSystemString(file)).changeFileExtension("dat"), dir, filetype);
1153
					m_pPackage->addFile(CFileIO(_S(file)).changeFileExtension("dat"), dir, filetype);
1154
			}
1154
			}
1155
			m_pPackage->UpdateSigned(false);
1155
			m_pPackage->UpdateSigned(false);
1156
			this->UpdateFileList();
1156
			this->UpdateFileList();
1157
			this->UpdateDisplayPic();
1157
			this->UpdateDisplayPic();
1158
			this->UpdateChanged();
1158
			this->UpdateChanged();
Line 1220... Line 1220...
1220
	}
1220
	}
1221
 
1221
 
1222
	void PackageForm::Save()
1222
	void PackageForm::Save()
1223
	{
1223
	{
1224
		if ( !this->CheckSave() )
1224
		if ( !this->CheckSave() )
1225
			return;
1225
			return;
1226
 
1226
 
1227
		if ( m_pPackage->filename().empty() )
1227
		if ( m_pPackage->filename().empty() )
1228
		{
1228
		{
1229
			this->SaveAs();
1229
			this->SaveAs();
1230
			return;
1230
			return;
1231
		}
1231
		}
Line 1238... Line 1238...
1238
			return;
1238
			return;
1239
 
1239
 
1240
		this->UpdateFileList();
1240
		this->UpdateFileList();
1241
		m_pPackage->adjustChanged(false);
1241
		m_pPackage->adjustChanged(false);
1242
		this->UpdateChanged();
1242
		this->UpdateChanged();
1243
 
1243
 
1244
		if ( m_pSettings->bGenerateUpdate )
1244
		if ( m_pSettings->bGenerateUpdate )
1245
			m_pPackage->createUpdateFile(CFileIO(m_pPackage->filename()).dir());
1245
			m_pPackage->createUpdateFile(CFileIO(m_pPackage->filename()).dir());
1246
 
1246
 
1247
		MessageBox::Show("Package: " + _US(m_pPackage->filename()) + "\nHas been saved!", "Saved", MessageBoxButtons::OK, MessageBoxIcon::Information);
1247
		MessageBox::Show("Package: " + _US(m_pPackage->filename()) + "\nHas been saved!", "Saved", MessageBoxButtons::OK, MessageBoxIcon::Information);
1248
	}
1248
	}
1249
 
1249
 
1250
	void PackageForm::SaveAs()
1250
	void PackageForm::SaveAs()
1251
	{
1251
	{
Line 1256... Line 1256...
1256
		if ( m_pPackage->GetType() == TYPE_XSP )
1256
		if ( m_pPackage->GetType() == TYPE_XSP )
1257
			ofd->Filter = "Ship Files (*.xsp)|*.xsp";
1257
			ofd->Filter = "Ship Files (*.xsp)|*.xsp";
1258
		else
1258
		else
1259
			ofd->Filter = "Package Files (*.spk)|*.spk";
1259
			ofd->Filter = "Package Files (*.spk)|*.spk";
1260
		ofd->AddExtension = true;
1260
		ofd->AddExtension = true;
1261
		CyString filename = m_pPackage->filename();
1261
		Utils::String filename = m_pPackage->filename();
1262
		if ( filename.Empty() )
1262
		if (filename.empty())
1263
			filename = m_pPackage->GetAutosaveName();
1263
			filename = m_pPackage->getAutosaveName();
1264
		filename = filename.FindReplace("/", "\\");
1264
		filename = filename.findReplace("/", "\\");
1265
		ofd->FileName = SystemStringFromCyString(filename);
1265
		ofd->FileName = _US(filename);
1266
		ofd->FilterIndex = 1;
1266
		ofd->FilterIndex = 1;
1267
		ofd->RestoreDirectory = true;
1267
		ofd->RestoreDirectory = true;
1268
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1268
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1269
		{
1269
		{
1270
			m_pPackage->setFilename(_S(ofd->FileName));
1270
			m_pPackage->setFilename(_S(ofd->FileName));
Line 1285... Line 1285...
1285
 
1285
 
1286
			if ( result == System::Windows::Forms::DialogResult::Cancel )
1286
			if ( result == System::Windows::Forms::DialogResult::Cancel )
1287
			{
1287
			{
1288
				e->Cancel = true;
1288
				e->Cancel = true;
1289
				return;
1289
				return;
1290
			}
1290
			}
1291
			else if ( result == System::Windows::Forms::DialogResult::Yes )
1291
			else if ( result == System::Windows::Forms::DialogResult::Yes )
1292
			{
1292
			{
1293
				if ( !this->CheckSave() )
1293
				if ( !this->CheckSave() )
1294
				{
1294
				{
1295
					e->Cancel = true;
1295
					e->Cancel = true;
Line 1343... Line 1343...
1343
	}
1343
	}
1344
 
1344
 
1345
	void PackageForm::UpdatePackageNames()
1345
	void PackageForm::UpdatePackageNames()
1346
	{
1346
	{
1347
		this->ListNames->Items->Clear();
1347
		this->ListNames->Items->Clear();
1348
		for ( SNames *n = m_pPackage->GetNamesList()->First(); n; n = m_pPackage-&gt;GetNamesList()->Next() )
1348
		for(auto itr = m_pPackage->namesList()-&gt;begin(); itr != m_pPackage->namesList()->end(); itr++)
1349
		{
1349
		{
1350
			ListViewItem ^item = gcnew ListViewItem(Convert::ToString(n->iLanguage));
1350
			ListViewItem ^item = gcnew ListViewItem(Convert::ToString((*itr)->iLanguage));
1351
			item->SubItems->Add(SystemStringFromCyString(n->sName));
1351
			item->SubItems->Add(_US((*itr)->sName));
1352
			item->ImageIndex = 0;
1352
			item->ImageIndex = 0;
1353
			this->ListNames->Items->Add(item);
1353
			this->ListNames->Items->Add(item);
1354
		}
1354
		}
1355
		this->ListNames->AutoResizeColumns(ColumnHeaderAutoResizeStyle::ColumnContent);
1355
		this->ListNames->AutoResizeColumns(ColumnHeaderAutoResizeStyle::ColumnContent);
1356
		if ( this->ListNames->Columns[0]->Width < 100 )
1356
		if ( this->ListNames->Columns[0]->Width < 100 )
Line 1370... Line 1370...
1370
 
1370
 
1371
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1371
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1372
		{
1372
		{
1373
			array<System::String ^> ^fileArray = ofd->FileNames;
1373
			array<System::String ^> ^fileArray = ofd->FileNames;
1374
			for ( int i = 0; i < fileArray->Length; i++ )
1374
			for ( int i = 0; i < fileArray->Length; i++ )
1375
			{
-
 
1376
				CyString file = CyStringFromSystemString(fileArray[i]);
-
 
1377
				m_pDisplayFile = m_pPackage->AddFile(file, "", FILETYPE_ADVERT);
1375
				m_pDisplayFile = m_pPackage->addFile(_S(fileArray[i]), "", FILETYPE_ADVERT);
1378
			}
-
 
1379
 
1376
 
1380
			this->UpdateDisplayPic();
1377
			this->UpdateDisplayPic();
1381
			this->UpdateFileList();
1378
			this->UpdateFileList();
1382
		}
1379
		}
1383
	}
1380
	}
1384
 
1381
 
1385
	void PackageForm::AddDisplayIcon()
1382
	void PackageForm::AddDisplayIcon()
1386
	{
1383
	{
1387
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1384
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1388
		ofd->Filter = "Icon Files|*.ico;*.png;*.bmp";
1385
		ofd->Filter = "Icon Files|*.ico;*.png;*.bmp";
1389
		ofd->FilterIndex = 1;
1386
		ofd->FilterIndex = 1;
1390
		ofd->RestoreDirectory = true;
1387
		ofd->RestoreDirectory = true;
1391
		ofd->Multiselect = false;
1388
		ofd->Multiselect = false;
1392
		ofd->Title = "Select the Icon file to add";
1389
		ofd->Title = "Select the Icon file to add";
1393
 
1390
 
1394
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1391
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1395
		{
1392
		{
1396
			Utils::String file = _S(ofd->FileName);
1393
			Utils::String file = _S(ofd->FileName);
1397
			C_File *icon = new C_File(file);
1394
			C_File *icon = new C_File(file);
1398
			if ( icon->ReadFromFile() )
1395
			if ( icon->ReadFromFile() )
1399
				m_pPackage->SetIcon(icon, CFileIO(file).extension());
1396
				m_pPackage->setIcon(icon, CFileIO(file).extension());
1400
 
1397
 
1401
			this->UpdateDisplayIcon();
1398
			this->UpdateDisplayIcon();
1402
			this->UpdateChanged();
1399
			this->UpdateChanged();
1403
		}
1400
		}
1404
	}
1401
	}
Line 1407... Line 1404...
1407
	{
1404
	{
1408
		if ( this->TextText->Text->Length )
1405
		if ( this->TextText->Text->Length )
1409
		{
1406
		{
1410
			if ( this->ListLang->SelectedIndex >= 0 )
1407
			if ( this->ListLang->SelectedIndex >= 0 )
1411
			{
1408
			{
1412
				int lang = CyStringFromSystemString(this->ListLang->Text).ToInt();
1409
				int lang = _S(this->ListLang->Text).toInt();
1413
				if ( this->RadioInstallAfter->Checked )			m_pPackage->addInstallText(lang, false, _S(this->TextText->Text));
1410
				if ( this->RadioInstallAfter->Checked )			m_pPackage->addInstallText(lang, false, _S(this->TextText->Text));
1414
				else if ( this->RadioInstallBefore->Checked )	m_pPackage->addInstallText(lang, true, _S(this->TextText->Text));
1411
				else if ( this->RadioInstallBefore->Checked )	m_pPackage->addInstallText(lang, true, _S(this->TextText->Text));
1415
				else if ( this->RadioUninstallBefore->Checked )	m_pPackage->addUninstallText(lang, true, _S(this->TextText->Text));
1412
				else if ( this->RadioUninstallBefore->Checked )	m_pPackage->addUninstallText(lang, true, _S(this->TextText->Text));
1416
				else if ( this->RadioUninstallAfter->Checked )	m_pPackage->addUninstallText(lang, false, _S(this->TextText->Text));
1413
				else if ( this->RadioUninstallAfter->Checked )	m_pPackage->addUninstallText(lang, false, _S(this->TextText->Text));
1417
				this->UpdateChanged();
1414
				this->UpdateChanged();
1418
			}
1415
			}
1419
		}
1416
		}
1420
	}
1417
	}
1421
 
1418
 
1422
	void PackageForm::LoadShipData()
1419
	void PackageForm::LoadShipData()
1423
	{
1420
	{
1424
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1421
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
Line 1508... Line 1505...
1508
					if ( edit )
1505
					if ( edit )
1509
					{
1506
					{
1510
						component->SetSection(m_pSelectedItem->Text);
1507
						component->SetSection(m_pSelectedItem->Text);
1511
						component->SetSection2(m_pSelectedItem->SubItems[1]->Text);
1508
						component->SetSection2(m_pSelectedItem->SubItems[1]->Text);
1512
						component->SetData(m_pSelectedItem->SubItems[2]->Text);
1509
						component->SetData(m_pSelectedItem->SubItems[2]->Text);
1513
					}
1510
					}
1514
 
1511
 
1515
					if ( component->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1512
					if ( component->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1516
					{
1513
					{
1517
						if ( edit )
1514
						if ( edit )
1518
							xsp->RemoveComponent(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text), _S(m_pSelectedItem->SubItems[2]->Text));
1515
							xsp->removeComponent(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text), _S(m_pSelectedItem->SubItems[2]->Text));
1519
						xsp->AddComponent(_S(component->GetSection()), _S(component->GetSection2()), _S(component->GetData()));
1516
						xsp->AddComponent(_S(component->GetSection()), _S(component->GetSection2()), _S(component->GetData()));
1520
						if ( !edit )
1517
						if ( !edit )
1521
							this->UpdateShipPartList();
1518
							this->UpdateShipPartList();
1522
						else
1519
						else
1523
						{
1520
						{
Line 1540... Line 1537...
1540
					}
1537
					}
1541
 
1538
 
1542
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1539
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1543
					{
1540
					{
1544
						if ( edit )
1541
						if ( edit )
1545
							xsp->RemoveDummy(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text));
1542
							xsp->removeDummy(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text));
1546
						xsp->AddDummy(_S(dummy->GetSection()), _S(dummy->GetData()));
1543
						xsp->AddDummy(_S(dummy->GetSection()), _S(dummy->GetData()));
1547
						if ( !edit )
1544
						if ( !edit )
1548
							this->UpdateShipPartList();
1545
							this->UpdateShipPartList();
1549
						else
1546
						else
1550
						{
1547
						{
1551
							m_pSelectedItem->Text = dummy->GetSection();
1548
							m_pSelectedItem->Text = dummy->GetSection();
1552
							m_pSelectedItem->SubItems[1]->Text = dummy->GetData();
1549
							m_pSelectedItem->SubItems[1]->Text = dummy->GetData();
1553
						}
1550
						}
1554
					}
1551
					}
1555
				}
1552
				}
1556
				break;
1553
				break;
1557
 
1554
 
1558
			case 2:
1555
			case 2:
1559
				{
1556
				{
1560
					AddCockpit ^cockpit = gcnew AddCockpit();
1557
					AddCockpit ^cockpit = gcnew AddCockpit();
1561
					if ( edit )
1558
					if ( edit )
Line 1568... Line 1565...
1568
							this->UpdateShipPartList();
1565
							this->UpdateShipPartList();
1569
						}
1566
						}
1570
						else
1567
						else
1571
						{
1568
						{
1572
							xsp->EditCockpit(_S(cockpit->GetID()), _S(cockpit->GetScene()), cockpit->GetMask());
1569
							xsp->EditCockpit(_S(cockpit->GetID()), _S(cockpit->GetScene()), cockpit->GetMask());
1573
							m_pSelectedItem->SubItems[2]->Text = SystemStringFromCyString(xsp->GetCockpitData(_S(cockpit->GetID())));
1570
							m_pSelectedItem->SubItems[2]->Text = SystemStringFromCyString(xsp->GetCockpitData(_S(cockpit->GetID())));
1574
						}
1571
						}
1575
					}
1572
					}
1576
				}
1573
				}
1577
				break;
1574
				break;
1578
 
1575
 
1579
			case 3:
1576
			case 3:
1580
				{
1577
				{
1581
					if ( edit )
1578
					if ( edit )
1582
					{
1579
					{
1583
						InputBox ^input2 = gcnew InputBox("Enter the filename for cut id: " + SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->Text).GetToken(";", 1, 1)), SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->Text).GetToken(";", 2, 2)));
1580
						InputBox ^input2 = gcnew InputBox("Enter the filename for cut id: " + SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->Text).GetToken(";", 1, 1)), SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->Text).GetToken(";", 2, 2)));
1584
						if ( input2->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1581
						if ( input2->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1585
						{
1582
						{
Line 1616... Line 1613...
1616
					}
1613
					}
1617
 
1614
 
1618
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1615
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1619
					{
1616
					{
1620
						if ( edit )
1617
						if ( edit )
1621
							xsp->RemoveBodies(_S(m_pSelectedItem->Text + ";" + m_pSelectedItem->SubItems[1]->Text));
1618
							xsp->removeBodies(_S(m_pSelectedItem->Text + ";" + m_pSelectedItem->SubItems[1]->Text));
1622
						xsp->AddBodies(_S(dummy->GetSection() + ";" + dummy->GetData()));
1619
						xsp->addBodies(_S(dummy->GetSection() + ";" + dummy->GetData()));
1623
						if ( !edit )
1620
						if ( !edit )
1624
							this->UpdateShipPartList();
1621
							this->UpdateShipPartList();
1625
						else
1622
						else
1626
						{
1623
						{
1627
							m_pSelectedItem->Text = dummy->GetSection();
1624
							m_pSelectedItem->Text = dummy->GetSection();
Line 1636... Line 1633...
1636
					InputBox ^input = gcnew InputBox("Enter the animation data to add", (!edit) ? "" : m_pSelectedItem->Text);
1633
					InputBox ^input = gcnew InputBox("Enter the animation data to add", (!edit) ? "" : m_pSelectedItem->Text);
1637
					input->Large();
1634
					input->Large();
1638
					if ( input->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1635
					if ( input->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1639
					{
1636
					{
1640
						if ( edit )
1637
						if ( edit )
1641
							xsp->RemoveAnimation(_S(m_pSelectedItem->Text));
1638
							xsp->removeAnimation(_S(m_pSelectedItem->Text));
1642
						xsp->AddAnimation(_S(input->GetInput()));
1639
						xsp->addAnimation(_S(input->GetInput()));
1643
						this->UpdateShipPartList();
1640
						this->UpdateShipPartList();
1644
					}
1641
					}
1645
				}
1642
				}
1646
				break;
1643
				break;
1647
		 }
1644
		 }
Line 1657... Line 1654...
1657
			else
1654
			else
1658
			{
1655
			{
1659
				if ( packages )
1656
				if ( packages )
1660
					list->PushBack(CyStringFromSystemString(dirList[j]), "-1");
1657
					list->PushBack(CyStringFromSystemString(dirList[j]), "-1");
1661
				else
1658
				else
1662
					list->PushBack(CyStringFromSystemString(dirList[j]), CyString::Number(SPK::GetAutomaticFiletype(CyStringFromSystemString(dirList[j]), NULL,false)));
1659
					list->PushBack(CyStringFromSystemString(dirList[j]), CyString::Number(SPK::GetAutomaticFiletype(_S(dirList[j]), NULL,false)));
1663
			}
1660
			}
1664
		}
1661
		}
1665
	}
1662
	}
1666
 
1663
 
1667
	void PackageForm::RemoveSelectedFiles()
1664
	void PackageForm::RemoveSelectedFiles()
Line 1851... Line 1848...
1851
			}
1848
			}
1852
		}
1849
		}
1853
 
1850
 
1854
		if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1851
		if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1855
		{
1852
		{
1856
			for ( SStringList *str = load->GetDataList()->Head(); str; str = str->next )
1853
			for(auto itr = load->GetDataList()->begin(); itr != load->GetDataList()->end(); itr++)
1857
			{
1854
			{
1858
				SStringList *s = list.FindString(str->str);
1855
				SStringList *s = list.FindString((*itr)->str);
1859
				if ( s )
1856
				if ( s )
1860
				{
1857
				{
1861
					switch ( type )
1858
					switch ( type )
1862
					{
1859
					{
1863
						case 0:
1860
						case 0:
Line 1868... Line 1865...
1868
							break;
1865
							break;
1869
						case 3:
1866
						case 3:
1870
							((CXspFile *)m_pPackage)->addCutData(s->data.GetToken(" ", 2).ToString());
1867
							((CXspFile *)m_pPackage)->addCutData(s->data.GetToken(" ", 2).ToString());
1871
							break;
1868
							break;
1872
						case 4:
1869
						case 4:
1873
							((CXspFile *)m_pPackage)->AddBodies(s->data.GetToken(" ", 2).ToString());
1870
							((CXspFile *)m_pPackage)->addBodies(s->data.GetToken(" ", 2).ToString());
1874
							break;
1871
							break;
1875
						case 1:
1872
						case 1:
1876
							((CXspFile *)m_pPackage)->AddDummy(s->data.GetToken(" ", 2).GetToken(";", 1, 1).ToString(), s->data.GetToken(" ", 2).GetToken(";", 2).ToString());
1873
							((CXspFile *)m_pPackage)->AddDummy(s->data.GetToken(" ", 2).GetToken(";", 1, 1).ToString(), s->data.GetToken(" ", 2).GetToken(";", 2).ToString());
1877
							break;
1874
							break;
1878
					}
1875
					}
Line 1886... Line 1883...
1886
		delete lines;
1883
		delete lines;
1887
	}
1884
	}
1888
 
1885
 
1889
	void PackageForm::ImportAnimations(String ^file)
1886
	void PackageForm::ImportAnimations(String ^file)
1890
	{
1887
	{
1891
		CFileIO F(CyStringFromSystemString(file));
1888
		CFileIO F(_S(file));
1892
		if ( !F.exists() )
1889
		if ( !F.exists() )
1893
			return;
1890
			return;
1894
 
1891
 
1895
		CyStringList *lines = F.ReadLinesStr();
1892
		Utils::CStringList lines;
1896
		if ( !lines )
1893
		if(!F.readLines(lines))
1897
			return;
1894
			return;
1898
 
-
 
1899
 
1895
 
1900
		CyStringList lOut;
1896
		Utils::CStringList lOut;
1901
		if ( CXspFile::ReadAnimations(lines, &lOut, 0) )
1897
		if ( CXspFile::ReadAnimations(lines, lOut, 0) )
1902
		{
1898
		{
1903
			LoadShip ^load = gcnew LoadShip();
1899
			LoadShip ^load = gcnew LoadShip();
1904
			load->Animations();
1900
			load->Animations();
1905
			for ( SStringList *str = lOut.Head(); str; str = str->;next )
1901
			for(auto itr = lOut.begin(); itr != lOut.end(); itr++)
1906
			{
-
 
1907
				load->AddShip(SystemStringFromCyString(str->str), "");
1902
				load->AddShip(_US((*itr)->str), "");
1908
			}
-
 
1909
 
1903
 
1910
			if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1904
			if ( load->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1911
			{
1905
			{
1912
				((CXspFile *)m_pPackage)->AddAnimation(load->GetDataList());
1906
				((CXspFile *)m_pPackage)->addAnimation(*load->GetDataList());
1913
				this->UpdateShipPartList();
1907
				this->UpdateShipPartList();
1914
				this->UpdateChanged();
1908
				this->UpdateChanged();
1915
			}
1909
			}
1916
		}
1910
		}
1917
 
-
 
1918
		delete lines;
-
 
1919
	}
1911
	}
1920
 
1912
 
1921
	void PackageForm::EditDepend()
1913
	void PackageForm::EditDepend()
1922
	{
1914
	{
1923
		 AddDepend ^depend = gcnew AddDepend();
1915
		 AddDepend ^depend = gcnew AddDepend();