Subversion Repositories spk

Rev

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

Rev 49 Rev 50
Line 216... Line 216...
216
 
216
 
217
		for ( CBaseFile *p = m_pPackages->FirstPackage(); p; p = m_pPackages->NextPackage() )
217
		for ( CBaseFile *p = m_pPackages->FirstPackage(); p; p = m_pPackages->NextPackage() )
218
		{
218
		{
219
			if ( p->IsMod() )
219
			if ( p->IsMod() )
220
				continue;
220
				continue;
221
			if ( p->GetAuthor().Compare("PluginManager") )
221
			if ( p->author().Compare("PluginManager") )
222
				continue;
222
				continue;
223
			// if thier parent is a library dont add unless top level
223
			// if thier parent is a library dont add unless top level
224
			if ( currentParent && p->GetParent() && p->GetParent()->GetType() == TYPE_SPK && ((CSpkFile *)p->GetParent())->IsLibrary() )
224
			if ( currentParent && p->GetParent() && p->GetParent()->GetType() == TYPE_SPK && ((CSpkFile *)p->GetParent())->IsLibrary() )
225
				continue;
225
				continue;
226
			else if ( p->GetParent() == currentParent )
226
			else if ( p->GetParent() == currentParent )
Line 239... Line 239...
239
		int i = 0;
239
		int i = 0;
240
		for ( CBaseFile *p = packageList.First(); p; p = packageList.Next(), i++ )
240
		for ( CBaseFile *p = packageList.First(); p; p = packageList.Next(), i++ )
241
		{
241
		{
242
			aPackages[i] = gcnew SortPackage(p);
242
			aPackages[i] = gcnew SortPackage(p);
243
			if ( m_iSortingColumn == SORT_AUTHOR ) // sort by author
243
			if ( m_iSortingColumn == SORT_AUTHOR ) // sort by author
244
				aNames[i] = SystemStringFromCyString(p->GetAuthor())->ToLower();
244
				aNames[i] = _US(p->author())->ToLower();
245
			else if ( m_iSortingColumn == SORT_VERSION ) // sort by author
245
			else if ( m_iSortingColumn == SORT_VERSION ) // sort by author
246
				aNames[i] = SystemStringFromCyString(p->GetVersion())->ToLower();
246
				aNames[i] = _US(p->version())->ToLower();
247
			else if ( m_iSortingColumn == SORT_CREATED ) // sort by author
247
			else if ( m_iSortingColumn == SORT_CREATED ) // sort by author
248
			{
-
 
249
				CyString date = p->GetCreationDate().GetToken("/", 3, 3) + p->GetCreationDate().GetToken("/", 2, 2) + p->GetCreationDate().GetToken(";/", 1, 1);
248
				aNames[i] = _US(p->creationDate().token("/", 3) + p->creationDate().token("/", 2) + p->creationDate().token(";/", 1));
250
				aNames[i] = SystemStringFromCyString(date);
-
 
251
			}
-
 
252
			else if ( m_iSortingColumn == SORT_ENABLE ) // sort by author
249
			else if ( m_iSortingColumn == SORT_ENABLE ) // sort by author
253
			{
250
			{
254
				if ( p->IsEnabled() )
251
				if ( p->IsEnabled() )
255
					aNames[i] = SystemStringFromCyString(CyString::Number(1));
252
					aNames[i] = SystemStringFromCyString(CyString::Number(1));
256
				else
253
				else
257
					aNames[i] = SystemStringFromCyString(CyString::Number(0));
254
					aNames[i] = SystemStringFromCyString(CyString::Number(0));
258
			}
255
			}
259
			else if ( m_iSortingColumn == SORT_SIGNED ) // sort by author
256
			else if ( m_iSortingColumn == SORT_SIGNED ) // sort by author
260
			{
257
			{
261
				if ( p->IsEnabled() )
258
				if ( p->IsEnabled() )
Line 275... Line 272...
275
					aNames[i] = "";
272
					aNames[i] = "";
276
			}
273
			}
277
			else
274
			else
278
				aNames[i] = SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage()))->ToLower();
275
				aNames[i] = SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage()))->ToLower();
279
		}
276
		}
280
 
277
 
281
		Array::Sort(aNames, aPackages);
278
		Array::Sort(aNames, aPackages);
282
 
279
 
283
		// now display
280
		// now display
284
		for ( i = 0; i < aPackages->Length; i++ )
281
		for ( i = 0; i < aPackages->Length; i++ )
285
		{
282
		{
286
			CBaseFile *p = (m_bSortingAsc) ? aPackages[i]->Package : aPackages[(aPackages->Length - 1 - i)]->Package;
283
			CBaseFile *p = (m_bSortingAsc) ? aPackages[i]->Package : aPackages[(aPackages->Length - 1 - i)]->Package;
287
			CyString name;
284
			CyString name;
288
			if ( p->GetType() == TYPE_ARCHIVE )
285
			if ( p->GetType() == TYPE_ARCHIVE )
289
				name = CFileIO(p->GetFilename()).GetFilename();
286
				name = CFileIO(p->filename()).GetFilename();
290
			else
287
			else
291
				name = p->GetLanguageName(m_pPackages->GetLanguage());
288
				name = p->GetLanguageName(m_pPackages->GetLanguage());
292
 
289
 
293
			int indent = 0;
290
			int indent = 0;
294
			CBaseFile *parent = p;
291
			CBaseFile *parent = p;
295
 
292
 
Line 307... Line 304...
307
					--indent;
304
					--indent;
308
			}
305
			}
309
 
306
 
310
			ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(name));
307
			ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(name));
311
			item->IndentCount = (indent * 2);
308
			item->IndentCount = (indent * 2);
312
			item->SubItems->Add(SystemStringFromCyString(p->GetAuthor()));
309
			item->SubItems->Add(_US(p->author()));
313
			item->SubItems->Add(SystemStringFromCyString(p->GetVersion()));
310
			item->SubItems->Add(_US(p->version()));
314
			item->SubItems->Add(SystemStringFromCyString(p->GetCreationDate()));
311
			item->SubItems->Add(_US(p->creationDate()));
315
			if ( p->GetType() == TYPE_XSP )
312
			if ( p->GetType() == TYPE_XSP )
316
				item->SubItems->Add("Ship");
313
				item->SubItems->Add("Ship");
317
			else if ( p->GetType() == TYPE_ARCHIVE )
314
			else if ( p->GetType() == TYPE_ARCHIVE )
318
				item->SubItems->Add("- Archive -");
315
				item->SubItems->Add("- Archive -");
319
			else if ( p->GetType() == TYPE_SPK )
316
			else if ( p->GetType() == TYPE_SPK )
Line 515... Line 512...
515
		if ( file->Length )
512
		if ( file->Length )
516
		{
513
		{
517
			int error;
514
			int error;
518
			CBaseFile *package = m_pPackages->OpenPackage(CyStringFromSystemString(file), &error, 0, SPKREAD_NODATA, READFLAG_NOUNCOMPRESS);
515
			CBaseFile *package = m_pPackages->OpenPackage(CyStringFromSystemString(file), &error, 0, SPKREAD_NODATA, READFLAG_NOUNCOMPRESS);
519
			if ( error == INSTALLERR_NOMULTI )
516
			if ( error == INSTALLERR_NOMULTI )
520
			{
517
			{
521
				CLinkList<CBaseFile> erroredList;
518
				CLinkList<CBaseFile> erroredList;
522
				m_pPackages->PrepareMultiPackage(CyStringFromSystemString(file), &erroredList, &error, 0);
519
				m_pPackages->PrepareMultiPackage(CyStringFromSystemString(file), &erroredList, &error, 0);
523
				if ( erroredList.size() )
520
				if ( erroredList.size() )
524
				{
521
				{
525
					System::String ^modified;
522
					System::String ^modified;
526
					for ( CBaseFile *p = erroredList.First(); p; p = erroredList.Next() )
523
					for ( CBaseFile *p = erroredList.First(); p; p = erroredList.Next() )
527
					{
524
					{
528
						p->SetOverrideFiles(builtin);
525
						p->SetOverrideFiles(builtin);
529
						if ( m_pPackages->PrepareInstallPackage(p, false, false, IC_MODIFIED) != INSTALLCHECK_OK )
526
						if ( m_pPackages->PrepareInstallPackage(p, false, false, IC_MODIFIED) != INSTALLCHECK_OK )
Line 552... Line 549...
552
					case INSTALLERR_INVALID:
549
					case INSTALLERR_INVALID:
553
						errorStr = "Invalid package file";
550
						errorStr = "Invalid package file";
554
						break;
551
						break;
555
					case INSTALLERR_NOSHIP:
552
					case INSTALLERR_NOSHIP:
556
						errorStr = "Ship Packages are currently not supported";
553
						errorStr = "Ship Packages are currently not supported";
557
						break;
554
						break;
558
					case INSTALLERR_VERSION:
555
					case INSTALLERR_VERSION:
559
						errorStr = "Package file was created in a newer version, unable to open";
556
						errorStr = "Package file was created in a newer version, unable to open";
560
						break;
557
						break;
561
 
558
 
562
					default:
559
					default:
Line 581... Line 578...
581
					if ( errorNum != INSTALLCHECK_OK )
578
					if ( errorNum != INSTALLCHECK_OK )
582
					{
579
					{
583
						if ( errorNum == INSTALLCHECK_NOSHIP )
580
						if ( errorNum == INSTALLCHECK_NOSHIP )
584
						{
581
						{
585
							this->DisplayMessageBox(false, "No Ships", "Ships are not supported for " + SystemStringFromCyString(m_pPackages->GetGameName()), MessageBoxButtons::OK, MessageBoxIcon::Stop);
582
							this->DisplayMessageBox(false, "No Ships", "Ships are not supported for " + SystemStringFromCyString(m_pPackages->GetGameName()), MessageBoxButtons::OK, MessageBoxIcon::Stop);
586
							errored = true;
583
							errored = true;
587
						}
584
						}
588
						else if ( m_pPackages->PrepareInstallPackage(package, false, false, IC_MODIFIED) != INSTALLCHECK_OK )
585
						else if ( m_pPackages->PrepareInstallPackage(package, false, false, IC_MODIFIED) != INSTALLCHECK_OK )
589
						{
586
						{
590
							this->DisplayMessageBox(false, "Installing", "Currently in Vanilla Mode, Package is not an Vanilla Package\n" + SystemStringFromCyString(package->GetLanguageName(m_pPackages->GetLanguage())) + "\n\nSwitch to modified mode if you wish to install this package", MessageBoxButtons::OK, MessageBoxIcon::Question);
587
							this->DisplayMessageBox(false, "Installing", "Currently in Vanilla Mode, Package is not an Vanilla Package\n" + SystemStringFromCyString(package->GetLanguageName(m_pPackages->GetLanguage())) + "\n\nSwitch to modified mode if you wish to install this package", MessageBoxButtons::OK, MessageBoxIcon::Question);
591
							errored = true;
588
							errored = true;
592
						}
589
						}
593
					}
590
					}
594
 
591
 
595
					// check for compatabilities
592
					// check for compatabilities
596
					CLinkList<CBaseFile> packages;
593
					CLinkList<CBaseFile> packages;
597
					int compat = m_pPackages->CheckCompatabilityAgainstPackages(package, NULL, &packages);
594
					int compat = m_pPackages->CheckCompatabilityAgainstPackages(package, NULL, &packages);
598
					if ( compat )
595
					if ( compat )
599
					{
596
					{
Line 644... Line 641...
644
			CyString sDisplay;
641
			CyString sDisplay;
645
			CyString sAfterText;
642
			CyString sAfterText;
646
			for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
643
			for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
647
			{
644
			{
648
				sAfterText = m_pPackages->GetUninstallAfterText(p);
645
				sAfterText = m_pPackages->GetUninstallAfterText(p);
649
				m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), (sAfterText.Empty() ? "Uninstalled" : SystemStringFromCyString(sAfterText)), "Uninstalled");
646
				m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), _US(p->author()), _US(p->version()), (sAfterText.Empty() ? "Uninstalled" : SystemStringFromCyString(sAfterText)), "Uninstalled");
650
				sDisplay = p->GetFullPackageName(m_pPackages->GetLanguage());
647
				sDisplay = p->GetFullPackageName(m_pPackages->GetLanguage());
651
				delete p;
648
				delete p;
652
			}
649
			}
653
			for ( CBaseFile *p = disableList.First(); p; p = disableList.Next() )
650
			for ( CBaseFile *p = disableList.First(); p; p = disableList.Next() )
654
				m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), "Disabled", "Dependants Disabled");
651
				m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), _US(p->author()), _US(p->version()), "Disabled", "Dependants Disabled");
655
			packageList.clear();			
652
			packageList.clear();			
656
 
653
 
657
			if ( m_pPi->PackageCount() == 1 )
654
			if ( m_pPi->PackageCount() == 1 )
658
			{
655
			{
659
				if ( sAfterText.Empty() )
656
				if ( sAfterText.Empty() )
Line 679... Line 676...
679
		{
676
		{
680
			if ( m_pPackages->DisablePreparedPackages(0, 0, &packageList) )
677
			if ( m_pPackages->DisablePreparedPackages(0, 0, &packageList) )
681
			{
678
			{
682
				for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
679
				for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
683
				{
680
				{
684
					m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), "Disabled", "Disabled Packages");
681
					m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), _US(p->author()), _US(p->version()), "Disabled", "Disabled Packages");
685
					display = "Package Disabled\n\n" + SystemStringFromCyString(p->GetFullPackageName(m_pPackages->GetLanguage()));
682
					display = "Package Disabled\n\n" + SystemStringFromCyString(p->GetFullPackageName(m_pPackages->GetLanguage()));
686
				}
683
				}
687
			}
684
			}
688
			else
685
			else
689
				this->DisplayMessageBox(true, "Disable Error", "Error Disabling packages", MessageBoxButtons::OK, MessageBoxIcon::Stop);
686
				this->DisplayMessageBox(true, "Disable Error", "Error Disabling packages", MessageBoxButtons::OK, MessageBoxIcon::Stop);
Line 694... Line 691...
694
		{
691
		{
695
			if ( m_pPackages->EnablePreparedPackages(0, 0, &packageList) )
692
			if ( m_pPackages->EnablePreparedPackages(0, 0, &packageList) )
696
			{
693
			{
697
				for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
694
				for ( CBaseFile *p = packageList.First(); p; p = packageList.Next() )
698
				{
695
				{
699
					m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), "Enabled", "Enable Packages");
696
					m_pPi->AddPackageWithGroup(SystemStringFromCyString(p->GetLanguageName(m_pPackages->GetLanguage())), _US(p->author()), _US(p->version()), "Enabled", "Enable Packages");
700
					display = "Package Enabled\n\n" + SystemStringFromCyString(p->GetFullPackageName(m_pPackages->GetLanguage()));
697
					display = "Package Enabled\n\n" + SystemStringFromCyString(p->GetFullPackageName(m_pPackages->GetLanguage()));
701
				}
698
				}
702
			}
699
			}
703
			else
700
			else
704
				this->DisplayMessageBox(true, "Enable Error", "Error Enabling packages", MessageBoxButtons::OK, MessageBoxIcon::Stop);
701
				this->DisplayMessageBox(true, "Enable Error", "Error Enabling packages", MessageBoxButtons::OK, MessageBoxIcon::Stop);
Line 744... Line 741...
744
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
741
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
745
						CyString afterText = m_pPackages->GetInstallAfterText(p);
742
						CyString afterText = m_pPackages->GetInstallAfterText(p);
746
 
743
 
747
						if ( afterText.Empty() )
744
						if ( afterText.Empty() )
748
							afterText = "Installed";
745
							afterText = "Installed";
749
						m_pPi->AddPackage(SystemStringFromCyString(packageName), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), SystemStringFromCyString(afterText));
746
						m_pPi->AddPackage(SystemStringFromCyString(packageName), _US(p->author()), _US(p->version()), SystemStringFromCyString(afterText));
750
					}
747
					}
751
					for ( CListNode<CBaseFile> *node = erroredPackages.Front(); node; node = node->next() )
748
					for ( CListNode<CBaseFile> *node = erroredPackages.Front(); node; node = node->next() )
752
					{
749
					{
753
						CBaseFile *p = node->Data();
750
						CBaseFile *p = node->Data();
754
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
751
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
755
						m_pPi->AddPackage(SystemStringFromCyString(packageName), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), SystemStringFromCyString("Failed to Install"));
752
						m_pPi->AddPackage(SystemStringFromCyString(packageName), _US(p->author()), _US(p->version()), SystemStringFromCyString("Failed to Install"));
756
					}
753
					}
757
 
754
 
758
					m_bDisplayDialog = true;
755
					m_bDisplayDialog = true;
759
				}
756
				}
760
			}
757
			}
761
		}
758
		}
762
		// no packages were installed
759
		// no packages were installed
763
		else 
760
		else 
764
		{
761
		{
Line 767... Line 764...
767
				if ( erroredPackages.size() == 1 )
764
				if ( erroredPackages.size() == 1 )
768
				{
765
				{
769
					CBaseFile *p = erroredPackages.Front()->Data();
766
					CBaseFile *p = erroredPackages.Front()->Data();
770
					CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
767
					CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
771
					this->DisplayMessageBox(frombackground, "Error Installing", "Package: " + SystemStringFromCyString(packageName) + " failed to install!\nError: " + SystemStringFromCyString(CBaseFile::ErrorString(p->GetLastError(), p->GetLastErrorString())) + "\n", MessageBoxButtons::OK, MessageBoxIcon::Error);
768
					this->DisplayMessageBox(frombackground, "Error Installing", "Package: " + SystemStringFromCyString(packageName) + " failed to install!\nError: " + SystemStringFromCyString(CBaseFile::ErrorString(p->GetLastError(), p->GetLastErrorString())) + "\n", MessageBoxButtons::OK, MessageBoxIcon::Error);
772
				}
769
				}
773
				else
770
				else
774
				{
771
				{
775
					m_pPi = gcnew PackageInstalled("Packages Failed To Install");
772
					m_pPi = gcnew PackageInstalled("Packages Failed To Install");
776
 
773
 
777
					CyStringList packages;
774
					CyStringList packages;
778
					for ( CListNode<CBaseFile> *node = erroredPackages.Front(); node; node = node->next() )
775
					for ( CListNode<CBaseFile> *node = erroredPackages.Front(); node; node = node->next() )
779
					{
776
					{
780
						CBaseFile *p = node->Data();
777
						CBaseFile *p = node->Data();
781
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
778
						CyString packageName = p->GetFullPackageName(m_pPackages->GetLanguage());
782
						m_pPi->AddPackage(SystemStringFromCyString(packageName), SystemStringFromCyString(p->GetAuthor()), SystemStringFromCyString(p->GetVersion()), "Failed: " + SystemStringFromCyString(CBaseFile::ErrorString(p->GetLastError(), p->GetLastErrorString())));
779
						m_pPi->AddPackage(SystemStringFromCyString(packageName), _US(p->author()), _US(p->version()), "Failed: " + SystemStringFromCyString(CBaseFile::ErrorString(p->GetLastError(), p->GetLastErrorString())));
783
					}
780
					}
784
 
781
 
785
					m_bDisplayDialog = true;
782
					m_bDisplayDialog = true;
786
				}
783
				}
787
			}
784
			}
788
		}
785
		}
789
 
786
 
790
		if ( !frombackground )
787
		if ( !frombackground )
791
			this->Background_Finished();
788
			this->Background_Finished();
792
	}
789
	}
793
 
790
 
794
	void MainGui::ClearSelectedItems()
791
	void MainGui::ClearSelectedItems()
Line 860... Line 857...
860
		}
857
		}
861
		else
858
		else
862
		{
859
		{
863
			InstallPackageDialog ^installDialog = gcnew InstallPackageDialog(m_pPackages);
860
			InstallPackageDialog ^installDialog = gcnew InstallPackageDialog(m_pPackages);
864
			if ( installDialog->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
861
			if ( installDialog->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
865
			{
862
			{
866
				// no packages to install
863
				// no packages to install
867
				if ( !m_pPackages->GetNumPackagesInQueue() )
864
				if ( !m_pPackages->GetNumPackagesInQueue() )
868
				{
865
				{
869
					this->Enabled = true;
866
					this->Enabled = true;
870
					this->ProgressBar->Hide();
867
					this->ProgressBar->Hide();
Line 1008... Line 1005...
1008
	}
1005
	}
1009
 
1006
 
1010
	void MainGui::PackageListSort(System::Object ^Sender, ColumnClickEventArgs ^E)
1007
	void MainGui::PackageListSort(System::Object ^Sender, ColumnClickEventArgs ^E)
1011
	{
1008
	{
1012
		if ( E->Column != m_iSortingColumn )
1009
		if ( E->Column != m_iSortingColumn )
1013
		{
1010
		{
1014
			m_iSortingColumn = E->Column;
1011
			m_iSortingColumn = E->Column;
1015
			m_bSortingAsc = true;
1012
			m_bSortingAsc = true;
1016
		}
1013
		}
1017
		else
1014
		else
1018
			m_bSortingAsc = !m_bSortingAsc;
1015
			m_bSortingAsc = !m_bSortingAsc;
Line 1027... Line 1024...
1027
		TextDesc->Text = "";
1024
		TextDesc->Text = "";
1028
		bool buttonEnabled = false;
1025
		bool buttonEnabled = false;
1029
		if ( ListPackages->SelectedItems->Count )
1026
		if ( ListPackages->SelectedItems->Count )
1030
		{
1027
		{
1031
			buttonEnabled = true;
1028
			buttonEnabled = true;
1032
 
1029
 
1033
			ListView::SelectedListViewItemCollection^ selected = this->ListPackages->SelectedItems;
1030
			ListView::SelectedListViewItemCollection^ selected = this->ListPackages->SelectedItems;
1034
			System::Collections::IEnumerator^ myEnum = selected->GetEnumerator();
1031
			System::Collections::IEnumerator^ myEnum = selected->GetEnumerator();
1035
			while ( myEnum->MoveNext() )
1032
			while ( myEnum->MoveNext() )
1036
			{
1033
			{
1037
				CBaseFile *p = this->FindPackageFromList(safe_cast<ListViewItem ^>(myEnum->Current));
1034
				CBaseFile *p = this->FindPackageFromList(safe_cast<ListViewItem ^>(myEnum->Current));
Line 1045... Line 1042...
1045
 
1042
 
1046
					this->PictureDisplay->Show();
1043
					this->PictureDisplay->Show();
1047
					bool addedIcon = false;
1044
					bool addedIcon = false;
1048
					C_File *picFile = p->GetFirstFile(FILETYPE_ADVERT);
1045
					C_File *picFile = p->GetFirstFile(FILETYPE_ADVERT);
1049
					if ( picFile )
1046
					if ( picFile )
1050
					{
1047
					{
1051
						System::String ^pic = SystemStringFromCyString(picFile->GetFilePointer());
1048
						System::String ^pic = SystemStringFromCyString(picFile->GetFilePointer());
1052
						if ( System::IO::File::Exists(pic) )
1049
						if ( System::IO::File::Exists(pic) )
1053
						{
1050
						{
1054
							Bitmap ^myBitmap = gcnew Bitmap(pic);
1051
							Bitmap ^myBitmap = gcnew Bitmap(pic);
1055
							if ( myBitmap )
1052
							if ( myBitmap )
Line 1064... Line 1061...
1064
					{
1061
					{
1065
	
1062
	
1066
						System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(MainGui::typeid));
1063
						System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(MainGui::typeid));
1067
						this->PictureDisplay->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"PictureDisplay.Image")));
1064
						this->PictureDisplay->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"PictureDisplay.Image")));
1068
					}
1065
					}
1069
 
1066
 
1070
					if ( p->GetType() != TYPE_ARCHIVE )
1067
					if ( p->GetType() != TYPE_ARCHIVE )
1071
						this->PanelDisplay->Show();
1068
						this->PanelDisplay->Show();
1072
				}	
1069
				}	
1073
			}				
1070
			}				
1074
		}
1071
		}
Line 1082... Line 1079...
1082
	{
1079
	{
1083
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1080
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1084
		ofd->Filter = "X-Universe Executable|";
1081
		ofd->Filter = "X-Universe Executable|";
1085
		String ^games = "";
1082
		String ^games = "";
1086
		for ( int i = 0; i < m_pPackages->GetGameExe()->GetNumGames(); i++ )
1083
		for ( int i = 0; i < m_pPackages->GetGameExe()->GetNumGames(); i++ )
1087
		{
1084
		{
1088
			SGameExe *exe = m_pPackages->GetGameExe()->GetGame(i);
1085
			SGameExe *exe = m_pPackages->GetGameExe()->GetGame(i);
1089
			if ( i ) ofd->Filter += ";";
1086
			if ( i ) ofd->Filter += ";";
1090
			ofd->Filter += SystemStringFromCyString(exe->sExe);
1087
			ofd->Filter += SystemStringFromCyString(exe->sExe);
1091
			games += "|" + SystemStringFromCyString(exe->sName) + "|" + SystemStringFromCyString(exe->sExe);
1088
			games += "|" + SystemStringFromCyString(exe->sName) + "|" + SystemStringFromCyString(exe->sExe);
1092
		}
1089
		}
Line 1119... Line 1116...
1119
					m_pRemovedDirList->Remove(properDir, true);
1116
					m_pRemovedDirList->Remove(properDir, true);
1120
					GetGameDirs(dir, false, true);
1117
					GetGameDirs(dir, false, true);
1121
					/*int lang = m_pPackages->GetGameLanguage(dir);
1118
					/*int lang = m_pPackages->GetGameLanguage(dir);
1122
					if ( lang )
1119
					if ( lang )
1123
						m_pDirList->PushFront(properDir, CyString::Number(lang) + "|" + gameName);
1120
						m_pDirList->PushFront(properDir, CyString::Number(lang) + "|" + gameName);
1124
					else
1121
					else
1125
						m_pDirList->PushFront(properDir, gameName);*/
1122
						m_pDirList->PushFront(properDir, gameName);*/
1126
					this->StartBackground(MGUI_BACKGROUND_ADDDIR, SystemStringFromCyString(properDir));
1123
					this->StartBackground(MGUI_BACKGROUND_ADDDIR, SystemStringFromCyString(properDir));
1127
				}
1124
				}
1128
			}
1125
			}
1129
		}
1126
		}
1130
	}
1127
	}
1131
 
1128
 
1132
	bool MainGui::EnablePackage(CBaseFile *p)
1129
	bool MainGui::EnablePackage(CBaseFile *p)
1133
	{
1130
	{
1134
		if ( !m_pPackages->PrepareEnablePackage(p) )
1131
		if ( !m_pPackages->PrepareEnablePackage(p) )
Line 1157... Line 1154...
1157
		}
1154
		}
1158
		return true;
1155
		return true;
1159
	}
1156
	}
1160
 
1157
 
1161
	void MainGui::DisableList(ArrayList ^List)
1158
	void MainGui::DisableList(ArrayList ^List)
1162
	{
1159
	{
1163
		bool skipShips = false;
1160
		bool skipShips = false;
1164
		int count = 0;
1161
		int count = 0;
1165
 
1162
 
1166
		for ( int i = 0; i < List->Count; i++ )
1163
		for ( int i = 0; i < List->Count; i++ )
1167
		{
1164
		{
1168
			CBaseFile *p = this->FindPackageFromList(cli::safe_cast<ListViewItem ^>(List[i]));
1165
			CBaseFile *p = this->FindPackageFromList(cli::safe_cast<ListViewItem ^>(List[i]));
1169
			if ( p )
1166
			if ( p )
1170
			{
1167
			{
1171
				if ( p->IsEnabled() )
1168
				if ( p->IsEnabled() )
Line 1183... Line 1180...
1183
						if ( skipShips )
1180
						if ( skipShips )
1184
							continue;
1181
							continue;
1185
					}
1182
					}
1186
 
1183
 
1187
					m_pPackages->PrepareDisablePackage(p);
1184
					m_pPackages->PrepareDisablePackage(p);
1188
					++count;
1185
					++count;
1189
				}
1186
				}
1190
				else
1187
				else
1191
				{
1188
				{
1192
					this->EnablePackage(p);
1189
					this->EnablePackage(p);
1193
					++count;
1190
					++count;
1194
				}
1191
				}
1195
			}
1192
			}
1196
		}
1193
		}
1197
 
1194
 
1198
		if ( count )
1195
		if ( count )
1199
		{
1196
		{
1200
			this->Enabled = false;
1197
			this->Enabled = false;
1201
			this->StartBackground(MGUI_BACKGROUND_DISABLE);
1198
			this->StartBackground(MGUI_BACKGROUND_DISABLE);
1202
		}
1199
		}
1203
	}
1200
	}
1204
 
1201
 
1205
	void MainGui::DisableEvent(System::Object ^Sender, System::EventArgs ^E)
1202
	void MainGui::DisableEvent(System::Object ^Sender, System::EventArgs ^E)
1206
	{
1203
	{
1207
		if ( !ListPackages->SelectedItems->Count )
1204
		if ( !ListPackages->SelectedItems->Count )
1208
			return;
1205
			return;
1209
 
1206
 
1210
		bool skipShips = false;
1207
		bool skipShips = false;
1211
 
1208
 
1212
		ListView::SelectedListViewItemCollection^ selected = this->ListPackages->SelectedItems;
1209
		ListView::SelectedListViewItemCollection^ selected = this->ListPackages->SelectedItems;
1213
		System::Collections::IEnumerator^ myEnum = selected->GetEnumerator();
1210
		System::Collections::IEnumerator^ myEnum = selected->GetEnumerator();
1214
		int count = 0;
1211
		int count = 0;
1215
		ArrayList ^List = gcnew ArrayList();
1212
		ArrayList ^List = gcnew ArrayList();
1216
 
1213
 
1217
		while ( myEnum->MoveNext() )
1214
		while ( myEnum->MoveNext() )
1218
			List->Add(safe_cast<ListViewItem ^>(myEnum->Current));
1215
			List->Add(safe_cast<ListViewItem ^>(myEnum->Current));
1219
 
1216
 
1220
		if ( List->Count )
1217
		if ( List->Count )
1221
			this->DisableList(List);
1218
			this->DisableList(List);
1222
	}
1219
	}
1223
 
1220
 
1224
	void MainGui::PackageBrowserEvent(System::Object ^Sender, System::EventArgs ^E)
1221
	void MainGui::PackageBrowserEvent(System::Object ^Sender, System::EventArgs ^E)
Line 1234... Line 1231...
1234
				if ( sGame.IsIn("|") )
1231
				if ( sGame.IsIn("|") )
1235
					sGame = sGame.GetToken("|", 2);
1232
					sGame = sGame.GetToken("|", 2);
1236
				game = SystemStringFromCyString(sGame);
1233
				game = SystemStringFromCyString(sGame);
1237
			}
1234
			}
1238
			this->DisplayMessageBox(false, "No Available Packages", "No available packages found for " + game, MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
1235
			this->DisplayMessageBox(false, "No Available Packages", "No available packages found for " + game, MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
1239
 
1236
 
1240
			this->Enabled = true;
1237
			this->Enabled = true;
1241
			return;
1238
			return;
1242
		}
1239
		}
1243
 
1240
 
1244
		if ( m_bDirLocked ) {
1241
		if ( m_bDirLocked ) {
1245
			this->DisplayLocked(false);
1242
			this->DisplayLocked(false);
1246
			this->Enabled = true;
1243
			this->Enabled = true;
1247
			return;
1244
			return;
Line 1268... Line 1265...
1268
		CBaseFile *p = mod->SelectedMod();
1265
		CBaseFile *p = mod->SelectedMod();
1269
		if ( result == System::Windows::Forms::DialogResult::OK )
1266
		if ( result == System::Windows::Forms::DialogResult::OK )
1270
		{
1267
		{
1271
			if ( p )
1268
			if ( p )
1272
			{
1269
			{
1273
				if ( this->InstallPackage(SystemStringFromCyString(p->GetFilename()), true, false, true) )
1270
				if ( this->InstallPackage(_US(p->filename()), true, false, true) )
1274
					doenable = false;
1271
					doenable = false;
1275
			}
1272
			}
1276
		}
1273
		}
1277
		else if ( result == System::Windows::Forms::DialogResult::Yes )
1274
		else if ( result == System::Windows::Forms::DialogResult::Yes )
1278
			this->StartInstalling(false, true);
1275
			this->StartInstalling(false, true);
Line 1313... Line 1310...
1313
			this->Enabled = true;
1310
			this->Enabled = true;
1314
			return;
1311
			return;
1315
		}
1312
		}
1316
 
1313
 
1317
		if ( !m_bModSelectorDetails )
1314
		if ( !m_bModSelectorDetails )
1318
		{
1315
		{
1319
			mod->HideDetails();
1316
			mod->HideDetails();
1320
			mod->Update();
1317
			mod->Update();
1321
		}
1318
		}
1322
		
1319
		
1323
		System::Windows::Forms::DialogResult result = mod->ShowDialog(this);
1320
		System::Windows::Forms::DialogResult result = mod->ShowDialog(this);
Line 1331... Line 1328...
1331
		{
1328
		{
1332
			if ( p )
1329
			if ( p )
1333
			{
1330
			{
1334
				// from file
1331
				// from file
1335
				if ( p->GetNum() < 0 )
1332
				if ( p->GetNum() < 0 )
1336
				{
1333
				{
1337
					if ( m_pPackages->GetEnabledMod() )
1334
					if ( m_pPackages->GetEnabledMod() )
1338
						m_pPackages->DisablePackage(m_pPackages->GetEnabledMod(), 0, 0);
1335
						m_pPackages->DisablePackage(m_pPackages->GetEnabledMod(), 0, 0);
1339
					if ( this->InstallPackage(SystemStringFromCyString(p->GetFilename()), true, false, true) )
1336
					if ( this->InstallPackage(_US(p->filename()), true, false, true) )
1340
						reEnable = false;
1337
						reEnable = false;
1341
				}
1338
				}
1342
				// otherwise just enable it
1339
				// otherwise just enable it
1343
				else
1340
				else
1344
				{
1341
				{
Line 1351... Line 1348...
1351
			}
1348
			}
1352
		}
1349
		}
1353
 
1350
 
1354
		// install downloaded mods
1351
		// install downloaded mods
1355
		else if ( result == Windows::Forms::DialogResult::Yes )
1352
		else if ( result == Windows::Forms::DialogResult::Yes )
1356
			this->StartInstalling(false, true);
1353
			this->StartInstalling(false, true);
1357
 
1354
 
1358
		// remove the current mod
1355
		// remove the current mod
1359
		else if ( result == System::Windows::Forms::DialogResult::Abort )
1356
		else if ( result == System::Windows::Forms::DialogResult::Abort )
1360
		{
1357
		{
1361
			if ( m_pPackages->GetEnabledMod() )
1358
			if ( m_pPackages->GetEnabledMod() )
1362
			{
1359
			{
Line 1464... Line 1461...
1464
				this->Enabled = true;
1461
				this->Enabled = true;
1465
		}
1462
		}
1466
	}
1463
	}
1467
 
1464
 
1468
	void MainGui::VanillaEvent(System::Object ^Sender, System::EventArgs ^E)
1465
	void MainGui::VanillaEvent(System::Object ^Sender, System::EventArgs ^E)
1469
	{
1466
	{
1470
		if ( m_bDirLocked ) {
1467
		if ( m_bDirLocked ) {
1471
			this->DisplayLocked(false);
1468
			this->DisplayLocked(false);
1472
			return;
1469
			return;
1473
		}
1470
		}
1474
		if ( !m_pPackages->IsVanilla() )
1471
		if ( !m_pPackages->IsVanilla() )
Line 1724... Line 1721...
1724
 
1721
 
1725
				if ( !p->CheckGameCompatability(m_pPackages->GetGame()) )
1722
				if ( !p->CheckGameCompatability(m_pPackages->GetGame()) )
1726
					continue;
1723
					continue;
1727
 
1724
 
1728
				// if its installed, check if we have a newer version
1725
				// if its installed, check if we have a newer version
1729
				CBaseFile *check = m_pPackages->FindSpkPackage(p->GetName(), p->GetAuthor());
1726
				CBaseFile *check = m_pPackages->FindSpkPackage(p->name(), p->author());
1730
				if ( check )
1727
				if ( check )
1731
				{
1728
				{
1732
					if ( check->GetVersion().CompareVersion(p->GetVersion()) != COMPARE_OLDER )
1729
					if ( check->version().compareVersion(p->version()) != COMPARE_OLDER )
1733
					{
1730
					{
1734
						this->InstallPackage(Files[i], false, true, true);
1731
						this->InstallPackage(Files[i], false, true, true);
1735
						installing = true;
1732
						installing = true;
1736
					}
1733
					}
1737
				}
1734
				}
Line 2068... Line 2065...
2068
	}
2065
	}
2069
 
2066
 
2070
	void MainGui::SetTipStrings(int section)
2067
	void MainGui::SetTipStrings(int section)
2071
	{
2068
	{
2072
		STips ^t = (STips ^)m_lTips[section];
2069
		STips ^t = (STips ^)m_lTips[section];
2073
		t->sTips = gcnew ArrayList();
2070
		t->sTips = gcnew ArrayList();
2074
 
2071
 
2075
		switch ( section )
2072
		switch ( section )
2076
		{
2073
		{
2077
			case TIPSECTION_YESNO:
2074
			case TIPSECTION_YESNO:
2078
				t->sTips->Add("You are about to uninstall a ship, you need to make sure that there are no ships in the sector you was in when you saved, otherwise it could prevent the save from loading\n\nContinue Uninstalling Ship?");
2075
				t->sTips->Add("You are about to uninstall a ship, you need to make sure that there are no ships in the sector you was in when you saved, otherwise it could prevent the save from loading\n\nContinue Uninstalling Ship?");
Line 2251... Line 2248...
2251
					showSep2 = true;
2248
					showSep2 = true;
2252
				}
2249
				}
2253
				if ( !p->email().empty() )
2250
				if ( !p->email().empty() )
2254
				{
2251
				{
2255
					this->emailAuthorToolStripMenuItem->Visible = true;
2252
					this->emailAuthorToolStripMenuItem->Visible = true;
2256
					this->emailAuthorToolStripMenuItem->Tag = "mailto://" + _US(p->email()) + "?subject=Re: " + SystemStringFromCyString(p->GetName().FindReplace(" ", "%20"));
2253
					this->emailAuthorToolStripMenuItem->Tag = "mailto://" + _US(p->email()) + "?subject=Re: " + _US(p->name().findReplace(" ", "%20"));
2257
					showSep2 = true;
2254
					showSep2 = true;
2258
				}
2255
				}
2259
				if ( !p->webSite().empty() ) {
2256
				if ( !p->webSite().empty() ) {
2260
					this->visitWebSiteToolStripMenuItem->Visible = true;
2257
					this->visitWebSiteToolStripMenuItem->Visible = true;
2261
					if ( !p->webSite().isin("http://") ) 
2258
					if ( !p->webSite().isin("http://") ) 
Line 2667... Line 2664...
2667
			try 
2664
			try 
2668
			{
2665
			{
2669
				for ( CBaseFile *package = m_pPackages->FirstPackage(); package; package = m_pPackages->NextPackage() )
2666
				for ( CBaseFile *package = m_pPackages->FirstPackage(); package; package = m_pPackages->NextPackage() )
2670
				{
2667
				{
2671
					if ( enabled && !package->IsEnabled() ) continue;
2668
					if ( enabled && !package->IsEnabled() ) continue;
2672
					CyString line = package->GetName() + " :: " + package->GetAuthor() + " :: " + package->GetVersion() + " :: " + package->GetCreationDate() + " :: ";
2669
					Utils::String line = package->name() + " :: " + package->author() + " :: " + package->version() + " :: " + package->creationDate() + " :: ";
2673
						
2670
						
2674
					if ( package->GetType() == TYPE_XSP )
2671
					if ( package->GetType() == TYPE_XSP )
2675
						line += "Ship :: ";
2672
						line += "Ship :: ";
2676
					else if ( package->GetType() == TYPE_ARCHIVE )
2673
					else if ( package->GetType() == TYPE_ARCHIVE )
2677
						line += "- Archive - :: ";
2674
						line += "- Archive - :: ";
2678
					else if ( package->GetType() == TYPE_SPK )
2675
					else if ( package->GetType() == TYPE_SPK ) {
2679
					{
-
 
2680
						CyString type = ((CSpkFile *)package)->GetScriptTypeString(m_pPackages->GetLanguage());
2676
						Utils::String type = ((CSpkFile *)package)->GetScriptTypeString(m_pPackages->GetLanguage());
2681
						if ( !type.Empty() )
-
 
2682
							line += type + " :: ";
2677
						if ( !type.empty() ) line += type + " :: ";
2683
					}
2678
					}
2684
 
2679
 
2685
					line += ((package->IsEnabled()) ? CyString("Yes") : CyString("No")) + " :: " + ((package->IsSigned()) ? "Yes" : "No");
2680
					line = line + ((package->IsEnabled()) ? "Yes" : "No") + " :: " + ((package->IsSigned()) ? "Yes" : "No");
2686
					sw->WriteLine(SystemStringFromCyString(line));
2681
					sw->WriteLine(_US(line));
2687
				}
2682
				}
2688
			}
2683
			}
2689
			finally
2684
			finally
2690
			{
2685
			{
2691
				if ( sw )
2686
				if ( sw )