CodeBlocksーDSTool-ScriptEditor-Format-02
先回の続きです。
danpapa-hry.hateblo.jp
小さいアプリを作ってみよう
まず画面はこんな感じ。(適当に)
赤色:wxListBox 青色:wxTextCtrl 緑色:wxFileDialog
「Format読込み」ボタンのコード
void ScriptEditor_FormatDialog::OnButton1Click(wxCommandEvent& event) { wxString str; wxTextFile FormatFile; if (FileDialog1->ShowModal() == wxID_CANCEL){ return; } FormatFile.Open(FileDialog1->GetPath()); str = FormatFile.GetFirstLine(); ListBox1->Append(str); while(!FormatFile.Eof()) { str = FormatFile.GetNextLine(); ListBox1->Append(str); } FormatFile.Close(); }
これでLINEのFormatファイルを開くとこんな感じになります。
(Formatファイルといっても、ただのテキストファイルです)
「Script実行」ボタンのコード
ここからが、本番ですね。
スクリプトは「rows: 6,mem[2999];」と仮定します。
これは mem[2999] = フォーマット6行目の文字
ということで、画層になります。(行数はゼロから始まる)
まずはmem[0]~mem[2999]をヘッダーに宣言しておきます。
class ScriptEditor_FormatDialog: public wxDialog { public: ScriptEditor_FormatDialog(wxWindow* parent,wxWindowID id = -1); virtual ~ScriptEditor_FormatDialog(); private: wxString mem[3000]; //(*Handlers(ScriptEditor_FormatDialog) void OnButton1Click(wxCommandEvent& event); void OnInit(wxInitDialogEvent& event); //*) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
privateのすぐ下に追加しました。
次に関数です。SplitScript(wxString script)というものを作ります。
まずはヘッダーにこれ
private: wxString mem[3000]; void SplitScript(wxString script);
さっきの下に追加です。
次にソースです。
void ScriptEditor_FormatDialog::SplitScript(wxString script)
{
}
ここでは、「rows: 6,mem[2999]; rows: 8,mem[2998];」と1行にまとめて書いたスクリプトを「;」で分ける処理を書きます。
あ、、、面倒になってきたw まとめて書きます。
ヘッダー(.h)
private: wxString mem[3000]; void SplitScript(wxString script); void RunScript(wxString script); int GetIvalue(wxString param); int GetMemIndex(wxString param); bool CheckMem(wxString param);
ソース(.cpp)
void ScriptEditor_FormatDialog::SplitScript(wxString script) { } void ScriptEditor_FormatDialog::RunScript(wxString script) { } int ScriptEditor_FormatDialog::GetIvalue(wxString param) { return 0; } int ScriptEditor_FormatDialog::GetMemIndex(wxString param) { return 0; } bool ScriptEditor_FormatDialog::CheckMem(wxString param) { return true; }
「RunScript」:コマンド別に処理
「GetIvalue」:mem[2999]等からintを取得
「GetMemIndex」:mem[2999]等からintで2999を取得
「CheckMem」:メモリかどうかをチェック
こんな感じでしょうか?もしかしたら追加があるかもしれませんが、とりあえずこれらにコードを書いていきましょう。次回からw