void CDlgDiagnosticLogFlags::OnOK(wxCommandEvent& event) { SET_LOCALE sl; char buf[64000]; MIOFILE mf; bool val; unsigned int i; CMainDocument* pDoc = wxGetApp().GetDocument(); wxASSERT(pDoc); wxASSERT(wxDynamicCast(pDoc, CMainDocument)); mf.init_buf_write(buf, sizeof(buf)); for (i=0; i<m_checkbox_list.size(); ++i) { wxCheckBox* ckbox = m_checkbox_list[i]; val = ckbox->GetValue(); mf.printf(" <%s>%d</%s>\n", (const char*)ckbox->GetLabel().ToAscii(), (int)val, (const char*)ckbox->GetLabel().ToAscii()); } mf.printf(" </log_flags>\n"); XML_PARSER xp(&mf); mf.init_buf_read(buf); log_flags.parse(xp); int retval = pDoc->rpc.set_cc_config(m_cc_config, log_flags); if (!retval) { pDoc->rpc.read_cc_config(); } event.Skip(); }
void CDlgDiagnosticLogFlags::CreateCheckboxes() { SET_LOCALE sl; char buf[64000]; MIOFILE mf; bool val; m_checkbox_list.clear(); mf.init_buf_write(buf, sizeof(buf)); m_cc_config.write(mf, log_flags); mf.init_buf_read(buf); XML_PARSER xp(&mf); while (!xp.get_tag()) { if (!xp.is_tag) { continue; } if (xp.match_tag("log_flags")) break; } while (!xp.get_tag()) { if (!xp.is_tag) { continue; } if (xp.match_tag("/log_flags")) break; wxString label = wxString(xp.parsed_tag); xp.parse_bool(xp.parsed_tag, val); wxCheckBox* ckbox = new wxCheckBox(m_scrolledWindow, wxID_ANY, label); m_checkboxSizer->Add(ckbox, 0, wxLEFT, 25); m_checkbox_list.push_back(ckbox); ckbox->SetValue(val); } m_scrolledWindow->SetSizer( m_checkboxSizer ); m_scrolledWindow->Layout(); m_checkboxSizer->Fit( m_scrolledWindow ); }