From 5e2c831038b1b6f0b8fb08650e98693853eee3b5 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Mon, 8 Sep 2008 08:14:51 +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:=E4=B8=80=E6=99=82=E4=BF=9D=E5=AD=98&?= =?UTF-8?q?=E3=83=AD=E3=83=BC=E3=83=89=E6=A9=9F=E8=83=BD=E4=BD=9C=E6=88=90?= =?UTF-8?q?=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@2437 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../tools/MasterEditorTWL/MasterEditorTWL.ncb | Bin 11185152 -> 11185152 bytes .../tools/MasterEditorTWL/MasterEditorTWL.suo | Bin 40448 -> 41472 bytes .../MasterEditorTWL/Debug/BuildLog.htm | Bin 15634 -> 10660 bytes .../MasterEditorTWL/MasterEditorTWL/Form1.h | 469 +++++++++++++++++- .../MasterEditorTWL/utility.cpp | 21 +- .../MasterEditorTWL/MasterEditorTWL/utility.h | 13 +- 6 files changed, 482 insertions(+), 21 deletions(-) diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.ncb b/build/tools/MasterEditorTWL/MasterEditorTWL.ncb index eed91764a92d79fa34fd02ddb1a677dfc255b0d8..f154f8fcc9f0e0291aad0e23d434bcdc0877899b 100644 GIT binary patch delta 49031 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 L>CDV+OFI4^%`f(v delta 12443 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

B(^A~^q_z%S+>Ipht(qH2W9-#aUux_qoxGVe zLN0NiACm5L=L2$IYU;|Gx+k}=uNr%+SOJ?VTauO52E9_{6RIHn*`tAR-hA?axKdYM`*U($y!Dt~$0t|E)rRx;hNny} zu~x(@_o+{&C~d3al}etP9UrRVF=tYged%hpeOLSqx{8(Ujt}7jRHlz9(^})5_#aLt z3#As;#Tp;N-cy@y(!a2EE~a+6f~|8k-DdR~lbToTkB_7DO?E_Mx2;?0lrH2o0j6eeAoB!=P4_?44V%1GyO_gOB0FnnOS;{SzeQ;dk4+bLYctWx$&scJ5}W)giawd9G>J~)Q(iTVky!Rvs2X24RV&!T z@hIkwHLaDHHa0=c+s5NNbUg18n{cBOE1Cl~Cf}4S(XqUEj>(zQEWWtVG!HQ;hG!oa znXa<4b5Z)P*z_B#pO5Mn=bA23R=>ccX2<56+F15NQCeWyOGmK@3r+9SOzyJCR0#La zOwjNZC8o2KzQTfMCLCrDXC|PfnF)Suav54`o0$*?=jKB>z05R+H7-R**8GH9TPrZ& zQ%g<#5TL>YHB(oZ^4VEYN-IoQMPKIU3KNhv$;;96Qwz&@3{Q=2PO#EREcTIU1D(i@3o(IbJ~r)C&>rm3 z6BB1=Z^N~Rel`6@$Fu!U5!G=lpv`m}u|9V@!7R}%HuQG{Yz#YoH=(yxAE9Iq?f0(*a`YH?lIbjSUeXt$PWqufJ?n`L~8%xc9XZ6Zd zH4Bo=Z8VtqD$Ea9!;L6UXK(ms{#{?*Ziv`0b>;f!dgV&2T^-OOs9_V0u^%Ca?P z%qchXUUv2wk~CLiMm}bDhVtUGgbY^dj+(ih%{~+N1N6NG9TDUyM17@u6V%|+@ z3XkI9-uTaW1LPXbg{aO~o9}@Ibv$ZmE5+zy_pZY4n&qx(h4np6bMI z1*E=3qj+)m)N)T6${zJe{hjv2Q8#ssDhyNg8Osby_2!%7QsJ*~b}&A*882?vC8YlD z9059Zor1Y{iS}YegJwUYk$jgi^%aUAai-$jmY5n!X&>&}KXsCD@!|og^UB2zR&1}u z&Q)xy#g0{Mr^QB9Y@@{nRcxQd##HQ@#fDT|Vk0Vc$zlU4cE@5XFLuRZ3omxVV(Tt; z!D7oUcE4h)E;hYli!L_1Vrz~~ZZGU;#Gc+8XB2Oo)Vy)_@Ww{b8~aypY!JQio>%PQ zz2$vRF`JTtv6rUKR{ze5dJk6ekBx)#mRs-SD_J95>b^@xy0e_+b9U?tZ5pDp)XuTg7TRiy zJnwL0+mL%9_FCa(m6SEUQS8L)4i=A=R)*?c2GV$_ZfH{>pZxngoo1yjHy4-&Ob2Fg zU2fh@XI|l6^3e|dQRkV%e&lP};vwaH*gp$wK^%tUbac#Cy}aa)m4DRE;eXT?I!)zk z-+yD)c0T9bqN^1w`+1a_zZO>9IE7dLmkkpouHLq~O(7>eU)#GZD0u59gOw}w$5#Vy zasBZ%D+1WHl*$M;$7FEje_L8Um|9!b6p0^0AIa#ZV6=H?5D#i8Zwax^U;Cb=p~BLz z%+m0trD3_HVTGmPFO~+2rD3J5VHIs$Nw=*A-U8MDYk_sZdQP`(Xy3_Ff>-!6_up5k zc+mXSEeh*^N~N`AwU0HcQq7KsEYq>14I9<0XyfYPtg*5pwBt`@@73O{apP)N7FfKx zt6;O(uNzh`X4>M_?))ED-cHzIYpSfe%d6h5E{I^!zis@Ie|fq({$(C*+7zhbfxb1@ z`tax_n?7}BspmF%Zp_f}pf@*NaN?im)FcM;=(-zglC^$$o<+CW zqT6E8ZMEo_MYqkO+iualZPC4B(N$Y?HCEk@v==`Y=Pr%=pE~dMQCnN~D{c2epR4%u zWg8WeDiaUUEUsz|HB*-Me18f1%CAnxo1TPLEMVE^tM{_BC!r<0|+K80F$4&vYL*dOV^B5&`1WIerK%O4)y{|@E0ANMynE5|&;uc7n* zw*S1c<#&{VEpK~#FwpN)YQ4E%`=Y2eq99ssI20 diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL.suo b/build/tools/MasterEditorTWL/MasterEditorTWL.suo index ac5ac39252f6e74f216c5baf25e5130e69e18987..da1c1b01225fcf76bdd5b0f1fee80c7a76764934 100644 GIT binary patch delta 4644 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 diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm b/build/tools/MasterEditorTWL/MasterEditorTWL/Debug/BuildLog.htm index bb0bd582c668b14b650c7f5e15bd2d3e33fd00c7..5ea6df14851a0703067f25e563296bdc61dc475e 100644 GIT binary patch delta 277 zcmbPKwIq1MA*Rhom`a$1Eg75`3>hqe*o?uL!3fAQo180ay19;R2kYcpJSLm}@ftB= zQ?=QVzYrwhjIMoiuIzS}$#R@*lP#ocE!xS$&YbcOL| zJ#8B%pe{^FM}Fze({%M1B`q0T(RDKDF(ff0PHyCvoZKTTw3$tR2gscm$~K=jFlU9oP@TG^a_#QGS0^fS*L9o~8*{BF31bgWB-F4@kTaPjBwtLR+ob&sB=X_^5zO?va z&FS1^V$GSWX<*bxophYK=p;Tp)Fq;xuWtT0(CALmJk9flrXvUQl%r{y!IPugq*KYG zWXXWtX5l?`U0iKytiMKSV6$bupZ=!ZtbrtAlQd4ZXo}{LC0&NS>Teb!bpwtn3|EvJ z(tM_Z_)CW)DRyd4x%OqjG({6MNed!g7p(&4E6Nz(sPS=Mvny<%c$PBwo&||CE#Oh9 zgYvMZDGqvhlWdyKBWVtVr8f!tb%-RTNfX!I-=uE5#qX(IAdQZZ#)l4d^Zou7r)IhX z1BfsX(}^m@niosJL5IeFC_#%;L5gGNl0r=la$TSpMX8_8QJ5mING3&JHP0j}YCxtb zfiq-)osexU)tB)a-mci}Nmw+orL;@g`pZ@3QBSv+s=w>vi}k<6=f;?)5+nM8W`n{N zp(n)l;nPk;>~*auL6K=uz_ZF!+GKC>?=>)dHPoUow6J92?e6c^6i&-2 zRB4diXU`uL*qcWMc86VJP9~3LMX2*o&}1t3=5mcVsRBY9$vl|8-;C@ zjsK0Ws9LZ@E+6jyRo~*j#01-7>uj073k7(}>no^ql!mDdtVhw5SzL}e?3gUxE&DJU zm4(&1)GDUjew7ViN6cnskzo!wRIEmw7@ltGHP@wllRC=Cd2BiZ$P5-k&TAIxmjw8P r_dukW+yF@4eYrh~DRtmfY~LAt)ZK8CXmK~lX_7OQB3tboxGuideTWLInfo = (gcnew System::Windows::Forms::TextBox()); this->gboxExFlags = (gcnew System::Windows::Forms::GroupBox()); this->tabRomEditInfo = (gcnew System::Windows::Forms::TabPage()); + this->butSetBack = (gcnew System::Windows::Forms::Button()); this->tboxGuideRomEditInfo = (gcnew System::Windows::Forms::TextBox()); this->gboxParental = (gcnew System::Windows::Forms::GroupBox()); this->gboxIcon = (gcnew System::Windows::Forms::GroupBox()); @@ -1554,7 +1557,7 @@ private: System::Windows::Forms::Label^ labArbit1; this->combRegion->Items->AddRange(gcnew cli::array< System::Object^ >(5) {L"日本のみ", L"米国のみ", L"欧州のみ", L"豪州のみ", L"欧州および豪州"}); this->combRegion->Location = System::Drawing::Point(95, 21); this->combRegion->Name = L"combRegion"; - this->combRegion->Size = System::Drawing::Size(216, 20); + this->combRegion->Size = System::Drawing::Size(164, 20); this->combRegion->TabIndex = 36; this->combRegion->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::combRegion_SelectedIndexChanged); // @@ -2886,12 +2889,14 @@ private: System::Windows::Forms::Label^ labArbit1; this->stripItemSaveTemp->Name = L"stripItemSaveTemp"; this->stripItemSaveTemp->Size = System::Drawing::Size(211, 22); this->stripItemSaveTemp->Text = L"提出情報を一時保存する"; + this->stripItemSaveTemp->Click += gcnew System::EventHandler(this, &Form1::stripItemSaveTemp_Click); // // stripItemLoadTemp // this->stripItemLoadTemp->Name = L"stripItemLoadTemp"; this->stripItemLoadTemp->Size = System::Drawing::Size(211, 22); this->stripItemLoadTemp->Text = L"一時保存した提出情報を開く"; + this->stripItemLoadTemp->Click += gcnew System::EventHandler(this, &Form1::stripItemLoadTemp_Click); // // stripMaster // @@ -3049,6 +3054,7 @@ private: System::Windows::Forms::Label^ labArbit1; // // tabRomEditInfo // + this->tabRomEditInfo->Controls->Add(this->butSetBack); this->tabRomEditInfo->Controls->Add(this->tboxGuideRomEditInfo); this->tabRomEditInfo->Controls->Add(this->gboxParental); this->tabRomEditInfo->Controls->Add(this->gboxIcon); @@ -3060,6 +3066,16 @@ private: System::Windows::Forms::Label^ labArbit1; this->tabRomEditInfo->Text = L"ROM登録情報(編集可)"; this->tabRomEditInfo->UseVisualStyleBackColor = true; // + // butSetBack + // + this->butSetBack->Location = System::Drawing::Point(43, 289); + this->butSetBack->Name = L"butSetBack"; + this->butSetBack->Size = System::Drawing::Size(151, 23); + this->butSetBack->TabIndex = 38; + this->butSetBack->Text = L"読み込み時の設定に戻す"; + this->butSetBack->UseVisualStyleBackColor = true; + this->butSetBack->Click += gcnew System::EventHandler(this, &Form1::butSetBack_Click); + // // tboxGuideRomEditInfo // this->tboxGuideRomEditInfo->BackColor = System::Drawing::SystemColors::Info; @@ -3539,9 +3555,9 @@ private: System::Windows::Forms::Label^ labArbit1; // SDK try { - u32 major = System::UInt32::Parse( MasterEditorTWL::getXpathText( root, "/init/sdk/major" ) ); - u32 minor = System::UInt32::Parse( MasterEditorTWL::getXpathText( root, "/init/sdk/minor" ) ); - u32 relstep = System::UInt32::Parse( MasterEditorTWL::getXpathText( root, "/init/sdk/relstep" ) ); + u32 major = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/major" ) ); + u32 minor = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/minor" ) ); + u32 relstep = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/sdk/relstep" ) ); u32 sdkver = (major << 24) | (minor << 16) | (relstep & 0xFFFF); this->hSrl->hMrcSpecialList->hSDKVer = gcnew System::UInt32( sdkver ); } @@ -3556,7 +3572,7 @@ private: System::Windows::Forms::Label^ labArbit1; // EULA try { - u8 eula = System::Byte::Parse( MasterEditorTWL::getXpathText( root, "/init/eula" ) ); + u8 eula = System::Byte::Parse( MasterEditorTWL::getXPathText( root, "/init/eula" ) ); this->hSrl->hMrcSpecialList->hEULAVer = gcnew System::Byte( eula ); } catch ( System::Exception ^ex ) @@ -3573,7 +3589,7 @@ private: System::Windows::Forms::Label^ labArbit1; System::Int32 i; for( i=0; i < METWL_NUMOF_SHARED2FILES; i++ ) { - u8 size = System::UInt32::Parse( MasterEditorTWL::getXpathText( root, "/init/shared2/size" + i.ToString() ) ); + u8 size = System::UInt32::Parse( MasterEditorTWL::getXPathText( root, "/init/shared2/size" + i.ToString() ) ); this->hSrl->hMrcSpecialList->hShared2SizeArray[i] = gcnew System::UInt32( size ); } } @@ -3615,7 +3631,7 @@ private: System::Windows::Forms::Label^ labArbit1; private: // SRLのオープン - System::Void loadSrl( System::String ^filename ) + System::Boolean loadSrl( System::String ^filename ) { ECSrlResult result = this->hSrl->readFromFile( filename ); if( result != ECSrlResult::NOERROR ) @@ -3633,10 +3649,11 @@ private: System::Windows::Forms::Label^ labArbit1; "This tool can only read TWL ROM. This can't read an illegal data." ); default: - this->errMsg( "ROMデータファイルの読み込みに失敗しました。", "Reading the ROM data file failed." ); + this->errMsg( "ROMデータファイルの読み込みに失敗しました。\n再度「ROMデータを開く」を選択してROMデータを読み出してください。", + "Reading the ROM data file failed. \nPlease read a ROM data file again, with \"Open a ROM data file\"" ); break; } - return; // 前のファイルが正常である保証なしなので前のファイルも上書き保存できないようにする + return false; } this->tboxFile->Text = filename; @@ -3649,7 +3666,7 @@ private: System::Windows::Forms::Label^ labArbit1; { this->errMsg( "ROMデータのCRC計算に失敗しました。ROMデータの読み込みはキャンセルされました。", "Calculating CRC of the ROM data failed. Therefore reading ROM data is canceled." ); - return; + return false; } System::UInt16 ^hcrc = gcnew System::UInt16( crc ); this->tboxWholeCRC->Clear(); @@ -3664,8 +3681,9 @@ private: System::Windows::Forms::Label^ labArbit1; { this->errMsg( "ROMデータにエラーがあります。「エラー情報」タブをご確認ください。", "ROM data include error. Please look the tab \"Setting Error\"." ); - return; + return false; } + return true; } // openSrl private: @@ -3696,6 +3714,351 @@ private: System::Windows::Forms::Label^ labArbit1; this->loadSrl( filename ); } + private: + // 一時保存 + System::Void saveTmp( System::String ^filename ) + { + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument(); + + doc->AppendChild( doc->CreateXmlDeclaration("1.0","UTF-8",nullptr) ); + System::Xml::XmlElement ^root = doc->CreateElement( "MasterEditorTWL" ); + doc->AppendChild( root ); + + // SRLのパス + MasterEditorTWL::appendXmlTag( doc, root, "Srl", this->tboxFile->Text ); + + // 言語 + MasterEditorTWL::appendXmlTag( doc, root, "Lang", (this->stripItemJapanese->Checked)?"J":"E" ); + + // フォーム + System::Xml::XmlElement ^form = doc->CreateElement( "Form" ); + root->AppendChild( form ); + + MasterEditorTWL::appendXmlTag( doc, form, "ProductName", this->tboxProductName->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode1", this->tboxProductCode1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2", this->tboxProductCode2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductNameForeign", this->tboxProductNameForeign->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode1Foreign", this->tboxProductCode1Foreign->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign1", this->tboxProductCode2Foreign1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign2", this->tboxProductCode2Foreign2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ProductCode2Foreign3", this->tboxProductCode2Foreign3->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "SubmitVersion", this->numSubmitVersion->Value.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "Backup", this->combBackup->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "BackupOther", this->tboxBackupOther->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "ReleaseForeign", (this->cboxReleaseForeign->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Remarks", this->tboxCaption->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "SubmitWay", (this->rSubmitHand->Checked)?"Hand":"Mail" ); + if( this->rUsageSale->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Sale" ); + else if( this->rUsageSample->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Sample" ); + else if( this->rUsageDst->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Dst" ); + else if( this->rUsageOther->Checked ) + MasterEditorTWL::appendXmlTag( doc, form, "Purpose", "Other" ); + MasterEditorTWL::appendXmlTag( doc, form, "PurposeOther", this->tboxUsageOther->Text ); + + MasterEditorTWL::appendXmlTag( doc, form, "Company1", this->tboxCompany1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Depart1", this->tboxDepart1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Name1", this->tboxPerson1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Furigana1", this->tboxFurigana1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Tel1", this->tboxTel1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Fax1", this->tboxFax1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Mail1", this->tboxMail1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "NTSC1", this->tboxNTSC1->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "InputPerson2", (this->cboxIsInputPerson2->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Company2", this->tboxCompany2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Depart2", this->tboxDepart2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Name2", this->tboxPerson2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Furigana2", this->tboxFurigana2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Tel2", this->tboxTel2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Fax2", this->tboxFax2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "Mail2", this->tboxMail2->Text ); + MasterEditorTWL::appendXmlTag( doc, form, "NTSC2", this->tboxNTSC2->Text ); + + MasterEditorTWL::appendXmlTag( doc, form, "IsEULA", (this->cboxIsEULA->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EULAVersion", this->numEULA->Value.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "IsWirelessIcon", (this->cboxIsWirelessIcon->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "IsWiFiIcon", (this->cboxIsWiFiIcon->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "Region", this->combRegion->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingCERO", this->combCERO->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpCERO", (this->cboxAlwaysCERO->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnableCERO", (this->cboxCERO->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingESRB", this->combESRB->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpESRB", (this->cboxAlwaysESRB->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnableESRB", (this->cboxESRB->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingUSK", this->combUSK->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpUSK", (this->cboxAlwaysUSK->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnableUSK", (this->cboxUSK->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGI", this->combPEGI->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpPEGI", (this->cboxAlwaysPEGI->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnablePEGI", (this->cboxPEGI->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGIPRT", this->combPEGIPRT->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpPEGIPRT", (this->cboxAlwaysPEGIPRT->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnablePEGIPRT", (this->cboxPEGIPRT->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingPEGIBBFC", this->combPEGIBBFC->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpPEGIBBFC", (this->cboxAlwaysPEGIBBFC->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnablePEGIBBFC", (this->cboxPEGIBBFC->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "RatingOFLC", this->combOFLC->SelectedIndex.ToString() ); + MasterEditorTWL::appendXmlTag( doc, form, "RpOFLC", (this->cboxAlwaysOFLC->Checked)?"Y":"N" ); + MasterEditorTWL::appendXmlTag( doc, form, "EnableOFLC", (this->cboxOFLC->Checked)?"Y":"N" ); + + doc->Save( filename ); + } //saveTmp() + + private: + void loadTmp( System::String ^filename ) + { + System::Xml::XmlDocument ^doc = gcnew System::Xml::XmlDocument; + doc->Load( filename ); + System::Xml::XmlElement ^root = doc->DocumentElement; + System::String ^text; + + // SRL + text = MasterEditorTWL::getXPathText( root, "/MasterEditorTWL/Srl" ); + if( !System::String::IsNullOrEmpty(text) ) // SRLファイル名がないときはスルー + { + this->loadSrl(text); + } + + // 言語 + text = MasterEditorTWL::getXPathText( root, "/MasterEditorTWL/Lang" ); + if( !System::String::IsNullOrEmpty(text) && text->Equals("E") ) + { + this->stripItemEnglish->Checked = true; + this->stripItemJapanese->Checked = false; + this->changeEnglish(); + } + else + { + this->stripItemEnglish->Checked = false; + this->stripItemJapanese->Checked = true; + this->changeJapanese(); + } + + // フォーム + this->parseTmp( root, "/MasterEditorTWL/Form/ProductName", this->tboxProductName ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode1", this->tboxProductCode1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2", this->tboxProductCode2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/SubmitVersion", this->numSubmitVersion ); + this->parseTmp( root, "/MasterEditorTWL/Form/Backup", this->combBackup ); + + this->tboxBackupOther->Enabled = false; + this->tboxBackupOther->Clear(); + if( this->combBackup->SelectedIndex == (this->combBackup->Items->Count - 1) ) + { + this->parseTmp( root, "/MasterEditorTWL/Form/BackupOther", this->tboxBackupOther ); + this->tboxBackupOther->Enabled = true; + } + + cli::array ^rbuts; + cli::array ^strs; + + rbuts = gcnew cli::array{this->rSubmitHand, this->rSubmitPost}; + strs = gcnew cli::array{"Hand","Mail"}; + this->parseTmp( root, "/MasterEditorTWL/Form/SubmitWay", rbuts, strs ); + + rbuts = gcnew cli::array{this->rUsageSale, this->rUsageSample, this->rUsageDst, this->rUsageOther}; + strs = gcnew cli::array{"Sale","Sample","Dst","Other"}; + this->parseTmp( root, "/MasterEditorTWL/Form/Purpose", rbuts, strs ); + this->tboxUsageOther->Enabled = false; + this->tboxUsageOther->Clear(); + if( this->rUsageOther->Checked ) + { + this->tboxUsageOther->Enabled = true; + this->parseTmp( root, "/MasterEditorTWL/Form/PurposeOther", this->tboxUsageOther ); + } + + this->parseTmp( root, "/MasterEditorTWL/Form/ReleaseForeign", this->cboxReleaseForeign ); + this->tboxProductNameForeign->Enabled = false; + this->tboxProductCode1Foreign->Enabled = false; + this->tboxProductCode2Foreign1->Enabled = false; + this->tboxProductCode2Foreign2->Enabled = false; + this->tboxProductCode2Foreign3->Enabled = false; + this->tboxProductNameForeign->Clear(); + this->tboxProductCode1Foreign->Clear(); + this->tboxProductCode2Foreign1->Clear(); + this->tboxProductCode2Foreign2->Clear(); + this->tboxProductCode2Foreign3->Clear(); + if( this->cboxReleaseForeign->Checked ) + { + this->tboxProductNameForeign->Enabled = true; + this->tboxProductCode1Foreign->Enabled = true; + this->tboxProductCode2Foreign1->Enabled = true; + this->tboxProductCode2Foreign2->Enabled = true; + this->tboxProductCode2Foreign3->Enabled = true; + this->parseTmp( root, "/MasterEditorTWL/Form/ProductNameForeign", this->tboxProductNameForeign ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode1Foreign", this->tboxProductCode1Foreign ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign1", this->tboxProductCode2Foreign1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign2", this->tboxProductCode2Foreign2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/ProductCode2Foreign3", this->tboxProductCode2Foreign3 ); + } + this->parseTmp( root, "/MasterEditorTWL/Form/Remarks", this->tboxCaption ); + + this->parseTmp( root, "/MasterEditorTWL/Form/Company1", this->tboxCompany1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Depart1", this->tboxDepart1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Name1", this->tboxPerson1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Furigana1", this->tboxFurigana1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Tel1", this->tboxTel1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Fax1", this->tboxFax1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Mail1", this->tboxMail1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/NTSC1", this->tboxNTSC1 ); + this->parseTmp( root, "/MasterEditorTWL/Form/InputPerson2", this->cboxIsInputPerson2 ); + + this->parseTmp( root, "/MasterEditorTWL/Form/Company2", this->tboxCompany2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Depart2", this->tboxDepart2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Name2", this->tboxPerson2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Furigana2", this->tboxFurigana2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Tel2", this->tboxTel2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Fax2", this->tboxFax2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/Mail2", this->tboxMail2 ); + this->parseTmp( root, "/MasterEditorTWL/Form/NTSC2", this->tboxNTSC2 ); + + this->parseTmp( root, "/MasterEditorTWL/Form/IsEULA", this->cboxIsEULA ); + this->parseTmp( root, "/MasterEditorTWL/Form/EULAVersion", this->numEULA ); + this->parseTmp( root, "/MasterEditorTWL/Form/IsWirelessIcon", this->cboxIsWirelessIcon ); + this->parseTmp( root, "/MasterEditorTWL/Form/IsWiFiIcon", this->cboxIsWiFiIcon ); + this->parseTmp( root, "/MasterEditorTWL/Form/Region", this->combRegion ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingCERO", this->combCERO ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpCERO", this->cboxAlwaysCERO ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnableCERO", this->cboxCERO ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingESRB", this->combESRB ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpESRB", this->cboxAlwaysESRB ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnableESRB", this->cboxESRB ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingUSK", this->combUSK ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpUSK", this->cboxAlwaysUSK ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnableUSK", this->cboxUSK ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGI", this->combPEGI ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpPEGI", this->cboxAlwaysPEGI ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnablePEGI", this->cboxPEGI ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGIPRT", this->combPEGIPRT ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpPEGIPRT", this->cboxAlwaysPEGIPRT ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnablePEGIPRT", this->cboxPEGIPRT ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingPEGIBBFC", this->combPEGIBBFC ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpPEGIBBFC", this->cboxAlwaysPEGIBBFC ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnablePEGIBBFC", this->cboxPEGIBBFC ); + this->parseTmp( root, "/MasterEditorTWL/Form/RatingOFLC", this->combOFLC ); + this->parseTmp( root, "/MasterEditorTWL/Form/RpOFLC", this->cboxAlwaysOFLC ); + this->parseTmp( root, "/MasterEditorTWL/Form/EnableOFLC", this->cboxOFLC ); + + this->maskParentalForms(); // ペアレンタルコントロール情報をリージョンに合わせる + + } //loadTmp() + + private: + // 一時保存情報をフォーム情報に変換 + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::ComboBox ^comb ) + { + // コンボボックスの保存情報 - インデックスの範囲に含まれるか調べる(含まれない場合は-1) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + try + { + System::Int32 index = System::Int32::Parse( text ); // テキストにはインデックスが保存されている + if( (0 <= index) && (index < comb->Items->Count) ) + { + comb->SelectedIndex = index; + return true; + } + else + { + comb->SelectedIndex = -1; + return false; + } + } + catch ( System::Exception ^ex ) // 改ざんされていたとき + { + (void)ex; + comb->SelectedIndex = -1; + return false; + } + return false; + } + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::NumericUpDown ^num ) + { + // テキストボックスの保存情報 - そのまま代入(ただし最大を超える場合は0にする) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + try + { + System::Int32 val = System::Int32::Parse( text ); // テキストには値が保存されている + if( (0 <= val) && (val <= num->Maximum) ) + { + num->Value = val; + return true; + } + else + { + num->Value = 0; + return false; + } + } + catch ( System::Exception ^ex ) // 改ざんされていたとき + { + (void)ex; + num->Value = 0; + return false; + } + return false; + } + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, + cli::array^rbuts, cli::array^textCands ) + { + // ラジオボタンの保存情報 - テキスト候補に合致するか調べる(合致しない場合は先頭のラジオボタンをチェック) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + System::Int32 i; + System::Boolean bSearch = false; + for( i=0; i < rbuts->Length; i++ ) // XML中のテキストがどのラジオボタンのテキストに合致するかチェック + { + rbuts[i]->Checked = false; + if( textCands[i]->Equals( text ) ) + { + rbuts[i]->Checked = true; + bSearch = true; + } + } + if( !bSearch ) // 合致しない場合は最初のラジオボタンをチェック + { + rbuts[0]->Checked = true; + } + return bSearch; + } + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::CheckBox ^cbox ) + { + // チェックボタンの保存情報 - Y/Nを調べる(それ以外の場合にはチェックしない) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + if( text->Equals("Y") ) + cbox->Checked = true; + else + cbox->Checked = false; // 不正な値も含む + return cbox->Checked; + } + System::Boolean parseTmp( System::Xml::XmlElement ^root, System::String ^xpath, System::Windows::Forms::TextBox ^tbox ) + { + // テキストボックスの保存情報 - そのまま代入(ただし長さが合わない場合は空白にする) + System::String ^text = MasterEditorTWL::getXPathText( root, xpath ); + if( System::String::IsNullOrEmpty( text ) ) + return false; + + if( text->Length > tbox->MaxLength ) + { + tbox->Text = gcnew System::String(""); + return false; + } + tbox->Text = text; + return true; + } + private: // ---------------------------------------------- // フォームの初期設定 @@ -3795,10 +4158,6 @@ private: System::Windows::Forms::Label^ labArbit1; this->cboxIsTmpJump->Checked = *(this->hSrl->hIsTmpJump); this->cboxIsSubBanner->Checked = *(this->hSrl->hIsSubBanner); this->cboxIsWL->Checked = *(this->hSrl->hIsWL); - this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); - this->numEULA->Value = *(this->hSrl->hEULAVersion); - this->cboxIsWiFiIcon->Checked = *(this->hSrl->hIsWiFiIcon); - this->cboxIsWirelessIcon->Checked = *(this->hSrl->hIsWirelessIcon); if( *(this->hSrl->hIsCodecTWL) == true ) { this->tboxIsCodec->Text = gcnew System::String( "TWL" ); @@ -3901,9 +4260,9 @@ private: System::Windows::Forms::Label^ labArbit1; this->setSrlFormsCaptionEx(); // SDKバージョンとライブラリ + this->tboxSDK->Clear(); if( this->hSrl->hSDKList != nullptr ) { - this->tboxSDK->Clear(); for each( RCSDKVersion ^ver in this->hSrl->hSDKList ) { if( ver->IsStatic ) @@ -3921,8 +4280,12 @@ private: System::Windows::Forms::Label^ labArbit1; } } - // ペアレンタルコントロール関連 - this->setParentalForms(); + // 編集可能情報 + this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); + this->numEULA->Value = *(this->hSrl->hEULAVersion); + this->cboxIsWiFiIcon->Checked = *(this->hSrl->hIsWiFiIcon); + this->cboxIsWirelessIcon->Checked = *(this->hSrl->hIsWirelessIcon); + this->setParentalForms(); // ペアレンタルコントロール関連 } //setSrlForms() // SRLの特殊な設定をフォームにセットする(言語切り替えで表示を変えたいので独立させる) @@ -5546,7 +5909,7 @@ private: System::Windows::Forms::Label^ labArbit1; if( dlg->ShowDialog() != System::Windows::Forms::DialogResult::OK ) { - this->errMsg( "ROMデータファイルのオープンがキャンセルされました。", "Opening the ROM data file is canceled by user." ); + //this->errMsg( "ROMデータファイルのオープンがキャンセルされました。", "Opening the ROM data file is canceled by user." ); return; } filename = dlg->FileName; @@ -5737,6 +6100,60 @@ private: System::Windows::Forms::Label^ labArbit1; this->sucMsg( "提出確認書の作成に成功しました。", "The submission sheet is made successfully." ); } //stripItemSheet_Click() + private: + System::Void stripItemSaveTemp_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + // ダイアログでファイルパスを決定 + { + 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"; + } + } + this->saveTmp( filename ); + } //stripItemSaveTemp_Click() + + private: + System::Void stripItemLoadTemp_Click(System::Object^ sender, System::EventArgs^ e) + { + System::String ^filename = gcnew System::String(""); + + // ダイアログでファイルパスを決定 + { + System::Windows::Forms::OpenFileDialog ^dlg = gcnew (OpenFileDialog); + + 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"; + } + } + this->loadTmp( filename ); + } //stripItemLoadTemp_Click() + private: System::Void rErrorReading_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { @@ -5759,6 +6176,20 @@ private: System::Windows::Forms::Label^ labArbit1; } } + private: + System::Void butSetBack_Click(System::Object^ sender, System::EventArgs^ e) + { + if( System::String::IsNullOrEmpty( this->tboxFile->Text ) ) + return; + + // 編集可能情報を読み込み時の設定に戻す + this->cboxIsEULA->Checked = *(this->hSrl->hIsEULA); + this->numEULA->Value = *(this->hSrl->hEULAVersion); + this->cboxIsWiFiIcon->Checked = *(this->hSrl->hIsWiFiIcon); + this->cboxIsWirelessIcon->Checked = *(this->hSrl->hIsWirelessIcon); + this->setParentalForms(); // ペアレンタルコントロール関連 + } + }; // enf of ref class Form1 } // end of namespace MasterEditorTWL diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp index 4daa2676..13d0afaa 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.cpp @@ -484,7 +484,7 @@ System::Boolean MasterEditorTWL::isXmlEqual( System::Xml::XmlElement ^root, Syst // // @ret テキストが存在するときそのテキストを返す。存在しないときnullptr。 // -System::String^ MasterEditorTWL::getXpathText( System::Xml::XmlElement ^root, System::String ^xpath ) +System::String^ MasterEditorTWL::getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ) { System::Xml::XmlNode ^tmp = root->SelectSingleNode( xpath ); if( tmp && tmp->FirstChild && tmp->FirstChild->Value ) @@ -493,3 +493,22 @@ System::String^ MasterEditorTWL::getXpathText( System::Xml::XmlElement ^root, Sy } return nullptr; } + +// +// XMLにタグを追加する +// +// @arg [in] XMLドキュメント +// @arg [in] 親ノード +// @arg [in] タグ名 +// @arg [in] テキスト +// +void MasterEditorTWL::appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml::XmlElement ^parent, + System::String ^tag, System::String ^text ) +{ + if( System::String::IsNullOrEmpty( text ) ) + return; + + System::Xml::XmlElement ^node = doc->CreateElement( tag ); + node->AppendChild( doc->CreateTextNode( text ) ); + parent->AppendChild( node ); +} diff --git a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.h b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.h index 2db96800..6ac9b0f0 100644 --- a/build/tools/MasterEditorTWL/MasterEditorTWL/utility.h +++ b/build/tools/MasterEditorTWL/MasterEditorTWL/utility.h @@ -109,6 +109,17 @@ namespace MasterEditorTWL // // @ret テキストが存在するときそのテキストを返す。存在しないときnullptr。 // - System::String^ getXpathText( System::Xml::XmlElement ^root, System::String ^xpath ); + System::String^ getXPathText( System::Xml::XmlElement ^root, System::String ^xpath ); + + // + // XMLにタグを追加する + // + // @arg [in] XMLドキュメント + // @arg [in] 親ノード + // @arg [in] タグ名 + // @arg [in] テキスト + // + void appendXmlTag( System::Xml::XmlDocument ^doc, System::Xml::XmlElement ^parent, + System::String ^tag, System::String ^text ); } // end of namespace MasterEditorTWL