| 1 | cycrow | 1 | #include "../StdAfx.h"
 | 
        
           |  |  | 2 | #include "MultiForm.h"
 | 
        
           |  |  | 3 | #include "Form1.h"
 | 
        
           |  |  | 4 |   | 
        
           |  |  | 5 | #include "SaveDialog.h"
 | 
        
           |  |  | 6 |   | 
        
           |  |  | 7 | namespace Creator {
 | 
        
           |  |  | 8 | 	bool MultiForm::LoadPackage(CMultiSpkFile *base, System::String ^filename)
 | 
        
           |  |  | 9 | 	{
 | 
        
           |  |  | 10 | 		m_bLoading = true;
 | 
        
           |  |  | 11 | 		m_sFilename = filename;
 | 
        
           |  |  | 12 | 		CyString sFile = CyStringFromSystemString(filename);
 | 
        
           |  |  | 13 |   | 
        
           |  |  | 14 | 		if ( !base )
 | 
        
           |  |  | 15 | 		{
 | 
        
           |  |  | 16 | 			m_pPackage = NULL;//m_pP->OpenPackage(sFile, &error);
 | 
        
           |  |  | 17 | 			if ( !m_pPackage )
 | 
        
           |  |  | 18 | 				return false;
 | 
        
           |  |  | 19 | 		}
 | 
        
           |  |  | 20 | 		else
 | 
        
           |  |  | 21 | 			m_pPackage = base;
 | 
        
           |  |  | 22 |   | 
        
           |  |  | 23 | 		if ( !m_pPackage->GetFilename().Empty() )
 | 
        
           | 158 | cycrow | 24 | 			m_pTabPage->Text = _US(CFileIO(m_pPackage->GetFilename()).filename());
 | 
        
           | 1 | cycrow | 25 | 		else
 | 
        
           | 158 | cycrow | 26 | 			m_pTabPage->Text = _US(CFileIO(sFile).filename());
 | 
        
           | 1 | cycrow | 27 |   | 
        
           |  |  | 28 | 		m_pPackage->SetChanged(false);
 | 
        
           |  |  | 29 |   | 
        
           |  |  | 30 | 		this->Text = filename;
 | 
        
           |  |  | 31 |   | 
        
           |  |  | 32 | 		this->UpdateView();
 | 
        
           |  |  | 33 |   | 
        
           |  |  | 34 | 		m_pPackage->SetChanged(false);
 | 
        
           |  |  | 35 |   | 
        
           |  |  | 36 | 		m_bLoading = false;
 | 
        
           |  |  | 37 |   | 
        
           |  |  | 38 | 		return true;
 | 
        
           |  |  | 39 | 	}
 | 
        
           |  |  | 40 |   | 
        
           |  |  | 41 | 	void MultiForm::UpdateView()
 | 
        
           |  |  | 42 | 	{
 | 
        
           |  |  | 43 | 		this->textBox1->Text = SystemStringFromCyString(m_pPackage->GetName());
 | 
        
           |  |  | 44 |   | 
        
           |  |  | 45 | 		this->UpdatePackages();
 | 
        
           |  |  | 46 | 	}
 | 
        
           |  |  | 47 |   | 
        
           |  |  | 48 | 	void MultiForm::UpdatePackages()
 | 
        
           |  |  | 49 | 	{
 | 
        
           |  |  | 50 | 		this->listView1->Items->Clear();
 | 
        
           |  |  | 51 | 		for ( SMultiSpkFile *ms = m_pPackage->GetFileList()->First(); ms; ms = m_pPackage->GetFileList()->Next() )
 | 
        
           |  |  | 52 | 		{
 | 
        
           |  |  | 53 | 			if ( ms->bRemove ) continue;
 | 
        
           |  |  | 54 | 			ListViewItem ^item = gcnew ListViewItem();
 | 
        
           |  |  | 55 | 			switch (ms->iType)
 | 
        
           |  |  | 56 | 			{
 | 
        
           |  |  | 57 | 				case TYPE_SPK:
 | 
        
           |  |  | 58 | 					item->ImageKey = "standard";
 | 
        
           |  |  | 59 | 					item->Text = "Package";	
 | 
        
           |  |  | 60 | 					break;
 | 
        
           |  |  | 61 | 				case TYPE_XSP:
 | 
        
           |  |  | 62 | 					item->ImageKey = "ship";
 | 
        
           |  |  | 63 | 					item->Text = "Ship";	
 | 
        
           |  |  | 64 | 					break;
 | 
        
           |  |  | 65 | 				default:
 | 
        
           |  |  | 66 | 					item->ImageKey = "normal";
 | 
        
           |  |  | 67 | 					item->Text = "Base";	
 | 
        
           |  |  | 68 | 					break;
 | 
        
           |  |  | 69 | 			}
 | 
        
           |  |  | 70 | 			this->listView1->Items->Add(item);
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 | 			item->SubItems->Add(SystemStringFromCyString(ms->sScriptName));
 | 
        
           |  |  | 73 | 			item->SubItems->Add(SystemStringFromCyString(ms->sScriptAuthor));
 | 
        
           |  |  | 74 | 			item->SubItems->Add(SystemStringFromCyString(ms->sScriptVersion));
 | 
        
           |  |  | 75 | 			item->SubItems->Add(SystemStringFromCyString(ms->sName));
 | 
        
           |  |  | 76 | 			item->SubItems->Add(SystemStringFromCyString(SPK::GetSizeString(ms->lSize)));
 | 
        
           |  |  | 77 |   | 
        
           |  |  | 78 | 			item->Checked = ms->bOn;
 | 
        
           |  |  | 79 | 		}
 | 
        
           |  |  | 80 | 		this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
 | 
        
           |  |  | 81 | 		((Form1 ^)this->MdiParent)->UpdateStatus();
 | 
        
           |  |  | 82 | 	}
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 | 	void MultiForm::SaveAs()
 | 
        
           |  |  | 85 | 	{
 | 
        
           |  |  | 86 | 		if ( !this->CheckSave() )
 | 
        
           |  |  | 87 | 			return;
 | 
        
           |  |  | 88 |   | 
        
           |  |  | 89 | 		SaveFileDialog ^ofd = gcnew SaveFileDialog();
 | 
        
           |  |  | 90 | 		ofd->Filter = "Multi Package Files (*.spk)|*.spk";
 | 
        
           |  |  | 91 | 		ofd->AddExtension = true;
 | 
        
           |  |  | 92 |   | 
        
           |  |  | 93 | 		CyString filename = m_pPackage->GetFilename();
 | 
        
           |  |  | 94 | 		if ( filename.Empty() )
 | 
        
           |  |  | 95 | 			filename = m_pPackage->GetName();
 | 
        
           |  |  | 96 | 		filename = filename.FindReplace("/", "\\");
 | 
        
           |  |  | 97 |   | 
        
           |  |  | 98 | 		ofd->FileName = SystemStringFromCyString(filename);
 | 
        
           |  |  | 99 | 		ofd->FilterIndex = 1;
 | 
        
           |  |  | 100 | 		ofd->RestoreDirectory = true;
 | 
        
           |  |  | 101 |   | 
        
           |  |  | 102 | 		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
 | 
        
           |  |  | 103 | 		{
 | 
        
           |  |  | 104 | 			m_pPackage->SetFilename(CyStringFromSystemString(ofd->FileName));
 | 
        
           |  |  | 105 | 			m_sFilename = ofd->FileName;
 | 
        
           | 158 | cycrow | 106 | 			m_pTabPage->Text = _US(CFileIO(m_pPackage->GetFilename()).filename());
 | 
        
           | 1 | cycrow | 107 | 			m_pMenuItem->Text = m_pTabPage->Text;
 | 
        
           |  |  | 108 | 			this->Save();
 | 
        
           |  |  | 109 | 		}	
 | 
        
           |  |  | 110 | 	}
 | 
        
           |  |  | 111 |   | 
        
           |  |  | 112 | 	void MultiForm::Save()
 | 
        
           |  |  | 113 | 	{
 | 
        
           |  |  | 114 | 		if ( !this->CheckSave() )
 | 
        
           |  |  | 115 | 			return;
 | 
        
           |  |  | 116 |   | 
        
           |  |  | 117 | 		if ( m_pPackage->GetFilename().Empty() )
 | 
        
           |  |  | 118 | 		{
 | 
        
           |  |  | 119 | 			this->SaveAs();
 | 
        
           |  |  | 120 | 			return;
 | 
        
           |  |  | 121 | 		}
 | 
        
           |  |  | 122 |   | 
        
           |  |  | 123 | 		SaveDialog ^save = gcnew SaveDialog(m_pPackage, SystemStringFromCyString(m_pPackage->GetFilename()));
 | 
        
           |  |  | 124 | 		if ( save->ShowDialog(this) == Windows::Forms::DialogResult::Cancel )
 | 
        
           |  |  | 125 | 			return;
 | 
        
           |  |  | 126 |   | 
        
           |  |  | 127 | 		m_pPackage->SetChanged(false);
 | 
        
           |  |  | 128 | 		this->UpdateChanged();
 | 
        
           |  |  | 129 |   | 
        
           |  |  | 130 | 		MessageBox::Show("Package: " + SystemStringFromCyString(m_pPackage->GetFilename()) + "\nHas been saved!", "Saved", MessageBoxButtons::OK, MessageBoxIcon::Information);
 | 
        
           |  |  | 131 | 	}
 | 
        
           |  |  | 132 |   | 
        
           |  |  | 133 | 	bool MultiForm::CheckSave()
 | 
        
           |  |  | 134 | 	{
 | 
        
           |  |  | 135 | 		if ( m_pPackage->GetName().Empty() )
 | 
        
           |  |  | 136 | 		{
 | 
        
           |  |  | 137 | 			MessageBox::Show(this, "You must specify a package name", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
 | 
        
           |  |  | 138 | 			return false;
 | 
        
           |  |  | 139 | 		}
 | 
        
           |  |  | 140 |   | 
        
           |  |  | 141 | 		return true;
 | 
        
           |  |  | 142 | 	}
 | 
        
           |  |  | 143 | };
 |