Subversion Repositories spk

Rev

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;
        }
};