Subversion Repositories spk

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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() )
24
			m_pTabPage->Text = SystemStringFromCyString(CFileIO(m_pPackage->GetFilename()).GetFilename());
25
		else
26
			m_pTabPage->Text = SystemStringFromCyString(CFileIO(sFile).GetFilename());
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;
106
			m_pTabPage->Text = SystemStringFromCyString(CFileIO(m_pPackage->GetFilename()).GetFilename());
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
};