+
+
+
+
+
+
+
+
+void PropEditCtrlFlags::OnDetails()
+{
+ wxString t,txt = m_TextCtrl->GetValue();
+ wxArrayString arr;
+ size_t i;
+ int j;
+
+ wxStringTokenizer tkn(m_PropInfo->MoreInfo, _T(","));
+ while (tkn.HasMoreTokens())
+ arr.Add(tkn.GetNextToken());
+
+ wxConfigBase *cfg = wxConfigBase::Get();
+
+ wxDialog dlg(m_PropFrame, -1, _("Flags"),
+ wxPoint(cfg->Read(_T("flagsdlg_x"), -1), cfg->Read(_T("flagsdlg_y"), -1)),
+ wxSize(cfg->Read(_T("flagsdlg_w"), 300), cfg->Read(_T("flagsdlg_h"), 300)),
+ wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);
+ wxSizer *sz = new wxBoxSizer(wxVERTICAL);
+ wxCheckListBox *lbox = new wxCheckListBox(&dlg, -1);
+ sz->Add(lbox, 1, wxEXPAND | wxALL, 10);
+ wxSizer *sz2 = new wxBoxSizer(wxHORIZONTAL);
+ wxButton *btnok = new wxButton(&dlg, wxID_OK, _("OK"));
+ btnok->SetDefault();
+ sz2->Add(btnok);
+ sz2->Add(new wxButton(&dlg, wxID_CANCEL, _("Cancel")), 0, wxLEFT, 10);
+ sz->Add(sz2, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 10);
+
+ dlg.SetSizer(sz);
+ dlg.SetAutoLayout(TRUE);
+
+ for (i = 0; i < arr.GetCount(); i++)
+ lbox->Append(arr[i]);
+
+ tkn.SetString(txt, _T("| "));
+ while (tkn.HasMoreTokens())
+ {
+ t = tkn.GetNextToken();
+ j = arr.Index(t);
+ if (j != wxNOT_FOUND) lbox->Check(j);
+ }
+
+
+ if (dlg.ShowModal() != wxID_OK) return;
+
+ txt.Empty();
+
+ for (i = 0; i < arr.GetCount(); i++)
+ if (lbox->IsChecked(i))
+ txt << arr[i] << _T('|');
+ if (!txt.IsEmpty()) txt.RemoveLast();
+
+ m_TextCtrl->SetValue(txt);
+ WriteValue();
+
+ cfg->Write(_T("flagsdlg_x"), (long)dlg.GetPosition().x);
+ cfg->Write(_T("flagsdlg_y"), (long)dlg.GetPosition().y);
+ cfg->Write(_T("flagsdlg_w"), (long)dlg.GetSize().x);
+ cfg->Write(_T("flagsdlg_h"), (long)dlg.GetSize().y);
+}
+
+