Rev 224 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "../StdAfx.h"
#include "MultiForm.h"
#include "Form1.h"
#include "SaveDialog.h"
namespace Creator {
bool MultiForm::LoadPackage(CMultiSpkFile *base, System::String ^filename)
{
m_bLoading = true;
m_sFilename = filename;
Utils::WString sFile = _WS(filename);
if ( !base )
{
m_pPackage = NULL;//m_pP->OpenPackage(sFile, &error);
if ( !m_pPackage )
return false;
}
else
m_pPackage = base;
if (!m_pPackage->filename().empty())
m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
else
m_pTabPage->Text = _US(CFileIO(sFile).filename());
m_pPackage->setChanged(false);
this->checkBox1->Checked = m_pPackage->isSelection();
this->Text = filename;
this->UpdateView();
m_pPackage->setChanged(false);
m_bLoading = false;
return true;
}
void MultiForm::UpdateView()
{
this->textBox1->Text = _US(m_pPackage->name());
this->UpdatePackages();
}
void MultiForm::UpdatePackages()
{
this->listView1->Items->Clear();
for ( SMultiSpkFile *ms = m_pPackage->GetFileList()->First(); ms; ms = m_pPackage->GetFileList()->Next() )
{
if ( ms->bRemove ) continue;
ListViewItem ^item = gcnew ListViewItem();
switch (ms->iType)
{
case TYPE_SPK:
item->ImageKey = "standard";
item->Text = "Package";
break;
case TYPE_XSP:
item->ImageKey = "ship";
item->Text = "Ship";
break;
default:
item->ImageKey = "normal";
item->Text = "Base";
break;
}
this->listView1->Items->Add(item);
item->SubItems->Add(_US(ms->sScriptName));
item->SubItems->Add(_US(ms->sScriptAuthor));
item->SubItems->Add(_US(ms->sScriptVersion));
item->SubItems->Add(_US(ms->sName));
item->SubItems->Add(_US(SPK::GetSizeString(ms->lSize)));
item->Checked = ms->bOn;
}
this->listView1->AutoResizeColumns(ColumnHeaderAutoResizeStyle::HeaderSize);
((Form1 ^)this->MdiParent)->UpdateStatus();
}
void MultiForm::SaveAs()
{
if ( !this->CheckSave() )
return;
SaveFileDialog ^ofd = gcnew SaveFileDialog();
ofd->Filter = "Multi Package Files (*.spk)|*.spk";
ofd->AddExtension = true;
Utils::WString filename = m_pPackage->filename();
if (filename.empty())
filename = m_pPackage->name();
filename = filename.findReplace(L"/", L"\\");
ofd->FileName = _US(filename);
ofd->FilterIndex = 1;
ofd->RestoreDirectory = true;
if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
{
m_pPackage->setFilename(_WS(ofd->FileName));
m_sFilename = ofd->FileName;
m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
m_pMenuItem->Text = m_pTabPage->Text;
this->Save();
}
}
void MultiForm::Save()
{
if ( !this->CheckSave() )
return;
if (m_pPackage->filename().empty())
{
this->SaveAs();
return;
}
SaveDialog ^save = gcnew SaveDialog(m_pPackage, _US(m_pPackage->filename()));
if ( save->ShowDialog(this) == Windows::Forms::DialogResult::Cancel )
return;
m_pPackage->setChanged(false);
this->UpdateChanged();
MessageBox::Show("Package: " + _US(m_pPackage->filename()) + "\nHas been saved!", "Saved", MessageBoxButtons::OK, MessageBoxIcon::Information);
}
bool MultiForm::CheckSave()
{
if (m_pPackage->name().empty())
{
MessageBox::Show(this, "You must specify a package name", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
return false;
}
return true;
}
};