Subversion Repositories spk

Rev

Rev 224 | Details | Compare with Previous | 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;
224 cycrow 12
		Utils::WString sFile = _WS(filename);
1 cycrow 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
 
177 cycrow 23
		if (!m_pPackage->filename().empty())
24
			m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
1 cycrow 25
		else
158 cycrow 26
			m_pTabPage->Text = _US(CFileIO(sFile).filename());
1 cycrow 27
 
177 cycrow 28
		m_pPackage->setChanged(false);
1 cycrow 29
 
238 cycrow 30
		this->checkBox1->Checked = m_pPackage->isSelection();
1 cycrow 31
		this->Text = filename;
32
 
33
		this->UpdateView();
34
 
177 cycrow 35
		m_pPackage->setChanged(false);
1 cycrow 36
 
37
		m_bLoading = false;
38
 
39
		return true;
40
	}
41
 
42
	void MultiForm::UpdateView()
43
	{
177 cycrow 44
		this->textBox1->Text = _US(m_pPackage->name());
1 cycrow 45
 
46
		this->UpdatePackages();
47
	}
48
 
49
	void MultiForm::UpdatePackages()
50
	{
51
		this->listView1->Items->Clear();
52
		for ( SMultiSpkFile *ms = m_pPackage->GetFileList()->First(); ms; ms = m_pPackage->GetFileList()->Next() )
53
		{
54
			if ( ms->bRemove ) continue;
55
			ListViewItem ^item = gcnew ListViewItem();
56
			switch (ms->iType)
57
			{
58
				case TYPE_SPK:
59
					item->ImageKey = "standard";
60
					item->Text = "Package";	
61
					break;
62
				case TYPE_XSP:
63
					item->ImageKey = "ship";
64
					item->Text = "Ship";	
65
					break;
66
				default:
67
					item->ImageKey = "normal";
68
					item->Text = "Base";	
69
					break;
70
			}
71
			this->listView1->Items->Add(item);
72
 
191 cycrow 73
			item->SubItems->Add(_US(ms->sScriptName));
74
			item->SubItems->Add(_US(ms->sScriptAuthor));
75
			item->SubItems->Add(_US(ms->sScriptVersion));
76
			item->SubItems->Add(_US(ms->sName));
77
			item->SubItems->Add(_US(SPK::GetSizeString(ms->lSize)));
1 cycrow 78
 
79
			item->Checked = ms->bOn;
80
		}
81
		this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
82
		((Form1 ^)this->MdiParent)->UpdateStatus();
83
	}
84
 
85
	void MultiForm::SaveAs()
86
	{
87
		if ( !this->CheckSave() )
88
			return;
89
 
90
		SaveFileDialog ^ofd = gcnew SaveFileDialog();
91
		ofd->Filter = "Multi Package Files (*.spk)|*.spk";
92
		ofd->AddExtension = true;
93
 
219 cycrow 94
		Utils::WString filename = m_pPackage->filename();
177 cycrow 95
		if (filename.empty())
96
			filename = m_pPackage->name();
219 cycrow 97
		filename = filename.findReplace(L"/", L"\\");
1 cycrow 98
 
177 cycrow 99
		ofd->FileName = _US(filename);
1 cycrow 100
		ofd->FilterIndex = 1;
101
		ofd->RestoreDirectory = true;
102
 
103
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
104
		{
219 cycrow 105
			m_pPackage->setFilename(_WS(ofd->FileName));
1 cycrow 106
			m_sFilename = ofd->FileName;
177 cycrow 107
			m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
1 cycrow 108
			m_pMenuItem->Text = m_pTabPage->Text;
109
			this->Save();
110
		}	
111
	}
112
 
113
	void MultiForm::Save()
114
	{
115
		if ( !this->CheckSave() )
116
			return;
117
 
177 cycrow 118
		if (m_pPackage->filename().empty())
1 cycrow 119
		{
120
			this->SaveAs();
121
			return;
122
		}
123
 
177 cycrow 124
		SaveDialog ^save = gcnew SaveDialog(m_pPackage, _US(m_pPackage->filename()));
1 cycrow 125
		if ( save->ShowDialog(this) == Windows::Forms::DialogResult::Cancel )
126
			return;
127
 
177 cycrow 128
		m_pPackage->setChanged(false);
1 cycrow 129
		this->UpdateChanged();
130
 
177 cycrow 131
		MessageBox::Show("Package: " + _US(m_pPackage->filename()) + "\nHas been saved!", "Saved", MessageBoxButtons::OK, MessageBoxIcon::Information);
1 cycrow 132
	}
133
 
134
	bool MultiForm::CheckSave()
135
	{
177 cycrow 136
		if (m_pPackage->name().empty())
1 cycrow 137
		{
138
			MessageBox::Show(this, "You must specify a package name", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
139
			return false;
140
		}
141
 
142
		return true;
143
	}
144
};