From e4d159581a9f3a143c7c3c347d761db57b466b81 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 2 Oct 2008 06:42:57 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B9=E3=82=BF=E3=82=A8=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=82=BF:=E3=83=9F=E3=83=89=E3=83=AB=E3=82=A6?= =?UTF-8?q?=E3=82=A7=E3=82=A2=E3=81=AE=E3=83=AA=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2569 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11267072 -> 11267072 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 56320 -> 56832 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 17482 -> 17502 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 115 ++++++++++++++- .../MasterEditorTWL/Form_file.cpp | 135 +++++++++++++++++- .../MasterEditorTWL/Form_lang.cpp | 4 + .../MasterEditorTWL/Release/BuildLog.htm | Bin 17702 -> 17702 bytes .../MasterEditorTWLSetup.vdproj | 54 ++++++- .../MasterEditorTWL/resource/middleware.xsl | 92 ++++++++++++ .../MasterEditorTWL/resource/middleware_e.xsl | 92 ++++++++++++ 10 files changed, 483 insertions(+), 9 deletions(-) create mode 100644 build/tools/MasterEditorTWL/resource/middleware.xsl create mode 100644 build/tools/MasterEditorTWL/resource/middleware_e.xsl diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index 3995af18d3f886ce1c1b3ac2882680f7a06050dd..2f9685c0a395fccf85013eece4439d456605f864 100644 GIT binary patch delta 48418 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∾FjLa9au*wyQE8zls0O;?FncgHNu_5TCGa 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 E07&bq>;M1& diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm b/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm index 21b97282d099d643636caebe9bd2e11a04b3f97a..6e38b05ec03eae5db737ba7445c175d15fdcc191 100644 GIT binary patch delta 260 zcmX@r!FaEOaf2C~pgDspgE4~vgDHa%gCUS*xj9jIGt=fD95*;H1%Alrskr&0PUYK4*&oF delta 241 zcmccD!FZ~Jaf2BfzX5|Gg9U>rgBgPnkT##3Z)m!?hAoU6L*k>c>?WZwMxZ!IA*zNs z!h9SU53ji=dF696K diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h index 3568dee3..3dc60fa3 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form1.h @@ -579,6 +579,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorEnd; private: System::Windows::Forms::DataGridViewTextBoxColumn^ colErrorCause; private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibPublisher; private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemMiddlewareXml; +private: System::Windows::Forms::ToolStripMenuItem^ stripItemMiddlewareHtml; @@ -930,6 +932,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; this->stripMaster = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->stripItemSheet = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->stripItemMasterRom = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemMiddlewareXml = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->stripItemMiddlewareHtml = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->stripLang = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->stripItemEnglish = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->stripItemJapanese = (gcnew System::Windows::Forms::ToolStripMenuItem()); @@ -2791,8 +2795,8 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; // // stripMaster // - this->stripMaster->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->stripItemSheet, - this->stripItemMasterRom}); + this->stripMaster->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(4) {this->stripItemSheet, + this->stripItemMasterRom, this->stripItemMiddlewareXml, this->stripItemMiddlewareHtml}); this->stripMaster->Name = L"stripMaster"; this->stripMaster->Size = System::Drawing::Size(53, 20); this->stripMaster->Text = L"マスター"; @@ -2800,17 +2804,31 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; // stripItemSheet // this->stripItemSheet->Name = L"stripItemSheet"; - this->stripItemSheet->Size = System::Drawing::Size(232, 22); - this->stripItemSheet->Text = L"提出確認書とマスターROMを作成"; + this->stripItemSheet->Size = System::Drawing::Size(259, 22); + this->stripItemSheet->Text = L"提出確認書とマスターROMを作成する"; this->stripItemSheet->Click += gcnew System::EventHandler(this, &Form1::stripItemSheet_Click); // // stripItemMasterRom // this->stripItemMasterRom->Name = L"stripItemMasterRom"; - this->stripItemMasterRom->Size = System::Drawing::Size(232, 22); - this->stripItemMasterRom->Text = L"マスターROMのみを作成"; + this->stripItemMasterRom->Size = System::Drawing::Size(259, 22); + this->stripItemMasterRom->Text = L"マスターROMのみを作成する"; this->stripItemMasterRom->Click += gcnew System::EventHandler(this, &Form1::stripItemMasterRom_Click); // + // stripItemMiddlewareXml + // + this->stripItemMiddlewareXml->Name = L"stripItemMiddlewareXml"; + this->stripItemMiddlewareXml->Size = System::Drawing::Size(259, 22); + this->stripItemMiddlewareXml->Text = L"ミドルウェアリストを作成する(XML形式)"; + this->stripItemMiddlewareXml->Click += gcnew System::EventHandler(this, &Form1::stripItemMiddlewareXml_Click); + // + // stripItemMiddlewareHtml + // + this->stripItemMiddlewareHtml->Name = L"stripItemMiddlewareHtml"; + this->stripItemMiddlewareHtml->Size = System::Drawing::Size(259, 22); + this->stripItemMiddlewareHtml->Text = L"ミドルウェアリストを作成する(HTML形式)"; + this->stripItemMiddlewareHtml->Click += gcnew System::EventHandler(this, &Form1::stripItemMiddlewareHtml_Click); + // // stripLang // this->stripLang->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->stripItemEnglish, @@ -3482,6 +3500,18 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; // SRLの保存のみ @ret 成否 System::Boolean saveSrlCore( System::String ^filename ); + // ミドルウェアリストの作成(XML形式) + System::Void makeMiddlewareListXml(System::Xml::XmlDocument^ doc); + + // ミドルウェアリストの保存 + System::Boolean saveMiddlewareListXml( System::String ^filename ); + + // ミドルウェアリストの保存(XML->HTML変換) + System::Boolean saveMiddlewareListHtml( System::String ^filename ); + + // ミドルウェアリストの保存(XSL埋め込み) + System::Boolean saveMiddlewareListXmlEmbeddedXsl( System::String ^filename ); + private: // ---------------------------------------------- // 一時ファイルの取り扱い @@ -4019,6 +4049,79 @@ private: System::Windows::Forms::DataGridViewTextBoxColumn^ colLibName; this->loadTmp( filename ); } //stripItemLoadTemp_Click() + private: + System::Void stripItemMiddlewareXml_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + this->errMsg( "ROMデータファイルがオープンされていません。", "ROM file has not opened yet." ); + return; + } + + // ダイアログでファイルパスを決定 + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = "c:\\"; + dlg->Filter = "xml形式 (*.xml)|*.xml"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".xml" )) ) + { + filename += ".xml"; + } + } + if( !this->saveMiddlewareListXmlEmbeddedXsl(filename) ) + { + this->errMsg( "ミドルウェアリストの作成に失敗しました。","Making a middleware list failed." ); + } + } //stripItemMiddlewareXml_Click() + + private: + System::Void stripItemMiddlewareHtml_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + if( System::String::IsNullOrEmpty(this->tboxFile->Text) ) + { + this->errMsg( "ROMデータファイルがオープンされていません。", "ROM file has not opened yet." ); + return; + } + + // ダイアログでファイルパスを決定 + { + System::Windows::Forms::SaveFileDialog ^dlg = gcnew (SaveFileDialog); + + dlg->InitialDirectory = "c:\\"; + dlg->Filter = "html形式 (*.html)|*.html"; + dlg->FilterIndex = 1; + dlg->RestoreDirectory = true; + + if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) + { + return; + } + filename = dlg->FileName; + if( !(dlg->FileName->EndsWith( ".html" )) ) + { + filename += ".html"; + } + } + if( !this->saveMiddlewareListHtml(filename) ) + { + this->errMsg( "ミドルウェアリストの作成に失敗しました。","Making a middleware list failed." ); + } + } //stripItemMiddlewareHtml_Click + + ///////////////////////////////////////////// // フォーム操作メソッド ///////////////////////////////////////////// diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form_file.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/Form_file.cpp index b520a7e2..5c83264c 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form_file.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form_file.cpp @@ -34,7 +34,13 @@ void Form1::loadInit(void) catch( System::IO::FileNotFoundException ^s ) { (void)s; - this->sucMsg( "設定ファイルを開くことができませんでした。", "Setting file can't be opened." ); + this->errMsg( "設定ファイルが見つかりません。", "Setting file is not found." ); + return; + } + catch( System::Exception ^s ) + { + (void)s; + this->errMsg( "設定ファイルを開くことができませんでした。", "Setting file can't be opened." ); return; } @@ -221,4 +227,129 @@ System::Boolean Form1::saveSrlCore( System::String ^filename ) return false; } return true; -} \ No newline at end of file +} + +// ミドルウェアリストの作成 +System::Void Form1::makeMiddlewareListXml(System::Xml::XmlDocument^ doc) +{ + System::Xml::XmlElement ^root = doc->CreateElement( "twl-master-editor" ); + System::Reflection::Assembly ^ass = System::Reflection::Assembly::GetEntryAssembly(); + root->SetAttribute( "version", ass->GetName()->Version->ToString() ); + doc->AppendChild( root ); + + // ゲーム情報 + System::Xml::XmlElement ^game = doc->CreateElement( "game" ); + root->AppendChild( game ); + if( System::String::IsNullOrEmpty( this->tboxProductName->Text ) ) + { + MasterEditorTWL::appendXmlTag( doc, game, "product-name", this->tboxTitleName->Text ); // 製品名が未入力のときはソフトタイトルで代用 + } + else + { + MasterEditorTWL::appendXmlTag( doc, game, "product-name", this->tboxProductName->Text ); + } + MasterEditorTWL::appendXmlTag( doc, game, "title-name", this->tboxTitleName->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "game-code", this->tboxGameCode->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "rom-version", this->tboxRemasterVer->Text ); + MasterEditorTWL::appendXmlTag( doc, game, "submit-version", this->numSubmitVersion->Value.ToString() ); + + // ミドルウェアリスト + System::Xml::XmlElement ^midlist = doc->CreateElement( "middleware-list" ); + root->AppendChild( midlist ); + if( this->hSrl->hLicenseList != nullptr ) + { + for each( RCLicense ^lic in this->hSrl->hLicenseList ) + { + System::Xml::XmlElement ^mid = doc->CreateElement( "middleware" ); + MasterEditorTWL::appendXmlTag( doc, mid, "publisher", lic->Publisher ); + MasterEditorTWL::appendXmlTag( doc, mid, "name", lic->Name ); + midlist->AppendChild( mid ); + } + } +} + +// ミドルウェアリストの保存 +System::Boolean Form1::saveMiddlewareListXml( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + + this->makeMiddlewareListXml( doc ); + + try + { + doc->Save( filename ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + return true; +} + +// ミドルウェアリストの保存 +System::Boolean Form1::saveMiddlewareListXmlEmbeddedXsl( System::String ^filename ) +{ + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + + // XSLを埋め込むための宣言たち + System::Xml::XmlProcessingInstruction ^proc = doc->CreateProcessingInstruction( "xml-stylesheet", "type='text/xml' href='#stylesheet'" ); + doc->AppendChild( proc ); + System::Xml::XmlDocumentType ^doctype = doc->CreateDocumentType( "twl-master-editor", nullptr, nullptr, "" ); + doc->AppendChild( doctype ); + + this->makeMiddlewareListXml( doc ); + + // 埋め込みスタイルシート + System::Xml::XmlDocument ^xsl = gcnew System::Xml::XmlDocument(); + System::Xml::XmlElement ^root = doc->DocumentElement; + try + { + xsl->Load("../resource/middleware_e.xsl"); + root->AppendChild( doc->ImportNode(xsl->DocumentElement, true) ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + + try + { + doc->Save( filename ); + } + catch ( System::Exception ^ex ) + { + (void)ex; + return false; + } + return true; +} + +// ミドルウェアリストの保存(XML->HTML変換) +System::Boolean Form1::saveMiddlewareListHtml( System::String ^filename ) +{ + System::Xml::Xsl::XslCompiledTransform ^xslt = gcnew System::Xml::Xsl::XslCompiledTransform; + System::String ^tmpxml = gcnew System::String( "middleware-tmp.xml" ); + + if( !saveMiddlewareListXml(tmpxml) ) + { + return false; + } + + try + { + xslt->Load("../resource/middleware.xsl"); + xslt->Transform( tmpxml, filename ); + } + catch (System::Exception ^s) + { + (void)s; + System::IO::File::Delete( tmpxml ); + return false; + } + System::IO::File::Delete( tmpxml ); + return true; +} diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp index f3efd973..7d25ce0c 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/Form_lang.cpp @@ -48,6 +48,8 @@ void Form1::changeJapanese(void) this->stripMaster->Text = gcnew System::String( "マスター" ); this->stripItemSheet->Text = gcnew System::String( "提出確認書とマスターROMを作成する" ); this->stripItemMasterRom->Text = gcnew System::String( "マスターROMのみを作成する" ); + this->stripItemMiddlewareXml->Text = gcnew System::String( "ミドルウェアリストを作成する(XML形式)" ); + this->stripItemMiddlewareHtml->Text = gcnew System::String( "ミドルウェアリストを作成する(HTML形式)" ); // 入力ファイル this->labFile->Text = gcnew System::String( "ROMデータファイル" ); @@ -271,6 +273,8 @@ void Form1::changeEnglish(void) this->stripMaster->Text = gcnew System::String( "Master" ); this->stripItemSheet->Text = gcnew System::String( "Make a submission sheet and a master ROM data file" ); this->stripItemMasterRom->Text = gcnew System::String( "Make a master ROM data file only" ); + this->stripItemMiddlewareXml->Text = gcnew System::String( "Make a middleware list(XML format)" ); + this->stripItemMiddlewareHtml->Text = gcnew System::String( "Make a middleware list(HTML format)" ); // 入力ファイル this->labFile->Text = gcnew System::String( "ROM Data File" ); diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm b/build/tools/MasterEditorTWL/MasterEditorTWL/Release/BuildLog.htm index 6bf07e65d5fde38eedc66aaa3d245736440d21e4..22bb3b7a65085ae81e06a4af00ae12811cd7d342 100644 GIT binary patch delta 280 zcmZ41#kj1Caf2P3umyt)gE4~vgDHa%g9(r}VX)X7$TpoDtHf`?QbwSJD;6E=nKm1V zEnvkaJNdU@?Bo)8vCR=OPgsBo+|ad84rDXl+@$z`51ZuXQUjo+mO!VWITNhQz{rCM ao8;zh6JL-nLv&r6Uz>i!F7e*noEHGY2Qz&D delta 280 zcmZ41#kj1Caf2P3urY%Xg9(EHg9Q*8f@zb@fo#*cu}b_FEM){r7-P|~o@uj@*aB8; zvXg%c#!fDg7uy^m^MnPczyw|Ue=57;T UkW + + + + + TWL Middleware List + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ () +
+
+ version: - +
+
+ + + + + + + + + + +
PublisherMiddleware Name
+
+ + + + + + + + +
diff --git a/build/tools/MasterEditorTWL/resource/middleware_e.xsl b/build/tools/MasterEditorTWL/resource/middleware_e.xsl new file mode 100644 index 00000000..958d9f90 --- /dev/null +++ b/build/tools/MasterEditorTWL/resource/middleware_e.xsl @@ -0,0 +1,92 @@ + + + + + + TWL Middleware List + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ () +
+
+ version: - +
+
+ + + + + + + + + + +
PublisherMiddleware Name
+
+ + + + + + + + +