void MyFrame::OnServername( wxCommandEvent& WXUNUSED(event) ) { if (GetServername()->GetStringSelection() == wxT("...")) { wxString s = wxGetTextFromUser(wxT("Specify the name of the server"), wxT("Server Name"), wxEmptyString, this); if (!s.IsEmpty() && s != IPC_SERVICE) { GetServername()->Insert(s, 0); GetServername()->SetSelection(0); } } }
void MyFrame::UpdateUI() { GetStart()->Enable(m_server == NULL); GetServername()->Enable(m_server == NULL); GetAdvise()->Enable(m_server && m_server->CanAdvise()); GetDisconnect()->Enable(m_server && m_server->IsConnected()); }
void MyFrame::EnableControls() { GetStart()->Enable(m_client == NULL); GetServername()->Enable(m_client == NULL); GetHostname()->Enable(m_client == NULL); GetTopic()->Enable(m_client == NULL); const bool isConnected = (m_client != NULL && m_client->IsConnected()); GetDisconnect()->Enable(m_client != NULL && isConnected); GetStartAdvise()->Enable(m_client != NULL && isConnected); GetStopAdvise()->Enable(m_client != NULL && isConnected); GetExecute()->Enable(m_client != NULL && isConnected); GetPoke()->Enable(m_client != NULL && isConnected); GetRequest()->Enable(m_client != NULL && isConnected); }
void MyFrame::OnStart(wxCommandEvent& WXUNUSED(event)) { // Connect to the client wxString servername = GetServername()->GetStringSelection(); wxString hostname = GetHostname()->GetStringSelection(); wxString topic = GetTopic()->GetStringSelection(); m_client = new MyClient; bool retval = m_client->Connect(hostname, servername, topic); wxLogMessage(wxT("Client host=\"%s\" port=\"%s\" topic=\"%s\" %s"), hostname.c_str(), servername.c_str(), topic.c_str(), retval ? wxT("connected") : wxT("failed to connect")); if (!retval) { wxDELETE(m_client); } EnableControls(); }
void MyFrame::OnStart(wxCommandEvent& WXUNUSED(event)) { // Create a new server m_server = new MyServer; wxString servername = GetServername()->GetStringSelection(); if (m_server->Create(servername)) { wxLogMessage("Server %s started", servername); #if wxUSE_DDE_FOR_IPC wxLogMessage("Server uses DDE"); #else // !wxUSE_DDE_FOR_IPC wxLogMessage("Server uses TCP"); #endif // wxUSE_DDE_FOR_IPC/!wxUSE_DDE_FOR_IPC } else { wxLogMessage("Server %s failed to start", servername); wxDELETE(m_server); } UpdateUI(); }
void MyFrame::OnStart(wxCommandEvent& WXUNUSED(event)) { // Create a new server m_server = new MyServer; wxString servername = GetServername()->GetStringSelection(); if (m_server->Create(servername)) { wxLogMessage(_T("Server %s started"), servername.c_str()); #if wxUSE_DDE_FOR_IPC wxLogMessage(_T("Server uses DDE")); #else // !wxUSE_DDE_FOR_IPC wxLogMessage(_T("Server uses TCP")); #endif // wxUSE_DDE_FOR_IPC/!wxUSE_DDE_FOR_IPC } else { wxLogMessage(_T("Server %s failed to start"), servername.c_str()); delete m_server; m_server = NULL; } Enable(); }
// Define my frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title) : wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize(400, 300)) { // Give it an icon SetIcon(wxICON(sample)); // Make a menubar wxMenu *file_menu = new wxMenu; file_menu->Append(wxID_EXIT, wxT("&Quit\tCtrl-Q")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, wxT("&File")); // Associate the menu bar with the frame SetMenuBar(menu_bar); // set a dialog background SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); // add the controls to the frame wxString strs4[] = { IPC_SERVICE, wxT("...") }; wxString strs5[] = { IPC_HOST, wxT("...") }; wxString strs6[] = { IPC_TOPIC, wxT("...") }; wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL ); wxGridSizer *item2 = new wxGridSizer( 4, 0, 0 ); wxButton *item3 = new wxButton( this, ID_START, wxT("Connect to server"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item3, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxChoice *item5 = new wxChoice( this, ID_HOSTNAME, wxDefaultPosition, wxSize(100,-1), 2, strs5, 0 ); item2->Add( item5, 0, wxALIGN_CENTER|wxALL, 5 ); wxChoice *item4 = new wxChoice( this, ID_SERVERNAME, wxDefaultPosition, wxSize(100,-1), 2, strs4, 0 ); item2->Add( item4, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxChoice *item6 = new wxChoice( this, ID_TOPIC, wxDefaultPosition, wxSize(100,-1), 2, strs6, 0 ); item2->Add( item6, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item7 = new wxButton( this, ID_DISCONNECT, wxT("Disconnect "), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item8 = new wxButton( this, ID_STARTADVISE, wxT("StartAdvise"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item8, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxButton *item9 = new wxButton( this, ID_STOPADVISE, wxT("StopAdvise"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item9, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item10 = new wxButton( this, ID_EXECUTE, wxT("Execute"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item10, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item11 = new wxButton( this, ID_POKE, wxT("Poke"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item11, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item12 = new wxButton( this, ID_REQUEST, wxT("Request"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item12, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item1->Add( item2, 1, wxALIGN_CENTER|wxALL, 5 ); item0->Add( item1, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxStaticBox *item14 = new wxStaticBox( this, -1, wxT("Client log") ); wxStaticBoxSizer *item13 = new wxStaticBoxSizer( item14, wxVERTICAL ); wxTextCtrl *item15 = new wxTextCtrl( this, ID_LOG, wxEmptyString, wxDefaultPosition, wxSize(500,140), wxTE_MULTILINE ); item13->Add( item15, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item0->Add( item13, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); this->SetSizer( item0 ); item0->SetSizeHints( this ); // status m_client = NULL; GetServername()->SetSelection(0); GetHostname()->SetSelection(0); GetTopic()->SetSelection(0); wxLogTextCtrl *logWindow = new wxLogTextCtrl(GetLog()); delete wxLog::SetActiveTarget(logWindow); wxLogMessage(wxT("Click on Connect to connect to the server")); EnableControls(); }
// Define my frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title) : wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize(400, 300)) { #if wxUSE_STATUSBAR CreateStatusBar(); #endif // wxUSE_STATUSBAR SetIcon(wxICON(sample)); m_server = NULL; wxPanel * const panel = new wxPanel(this); wxBoxSizer * const sizerMain = new wxBoxSizer( wxVERTICAL ); wxFlexGridSizer * const sizerCmds = new wxFlexGridSizer( 2, 0, 0 ); sizerCmds->AddGrowableCol( 1 ); wxButton *btn; btn = new wxButton(panel, ID_START, "&Start Server"); sizerCmds->Add(btn, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); const wxString choices[] = { IPC_SERVICE, "..." }; wxChoice * const choice = new wxChoice ( panel, ID_SERVERNAME, wxDefaultPosition, wxSize(100, -1), WXSIZEOF(choices), choices ); sizerCmds->Add(choice, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); btn = new wxButton(panel, ID_DISCONNECT, "&Disconnect Client"); sizerCmds->Add(btn, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); sizerCmds->AddSpacer(20); btn = new wxButton( panel, ID_ADVISE, "&Advise"); sizerCmds->Add(btn, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); sizerCmds->AddSpacer(20); sizerMain->Add(sizerCmds, wxSizerFlags().Expand().Border(wxALL, 5)); wxStaticBoxSizer * const sizerLog = new wxStaticBoxSizer(wxVERTICAL, panel, "Server &log"); wxTextCtrl * const textLog = new wxTextCtrl ( panel, wxID_ANY, "", wxDefaultPosition, wxSize(500, 140), wxTE_MULTILINE ); sizerLog->Add(textLog, wxSizerFlags(1).Expand().Border(wxALL, 5)); sizerMain->Add(sizerLog, wxSizerFlags(1).Expand().Border(wxALL, 5)); panel->SetSizer(sizerMain); sizerMain->SetSizeHints(panel); SetClientSize(panel->GetSize()); GetServername()->SetSelection(0); wxLogTextCtrl *logWindow = new wxLogTextCtrl(textLog); delete wxLog::SetActiveTarget(logWindow); wxLogMessage("Click on Start to start the server"); UpdateUI(); }
// Define my frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title) : wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize(400, 300)) { #if wxUSE_STATUSBAR CreateStatusBar(); #endif // wxUSE_STATUSBAR // Give it an icon SetIcon(wxICON(mondrian)); // Make a menubar wxMenu *file_menu = new wxMenu; file_menu->Append(wxID_EXIT, _T("&Quit\tCtrl-Q")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, _T("&File")); // Associate the menu bar with the frame SetMenuBar(menu_bar); // set a dialog background SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); // add the controls to the frame wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL ); wxFlexGridSizer *item2 = new wxFlexGridSizer( 2, 0, 0 ); item2->AddGrowableCol( 1 ); wxButton *item3 = new wxButton( this, ID_START, wxT("Start Server"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item3, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxString strs4[] = { IPC_SERVICE, _T("...") }; wxChoice *item4 = new wxChoice( this, ID_SERVERNAME, wxDefaultPosition, wxSize(100,-1), 2, strs4, 0 ); item2->Add( item4, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxButton *item5 = new wxButton( this, ID_DISCONNECT, wxT("Disconnect Client"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item5, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item6 = new wxButton( this, ID_ADVISE, wxT("Advise"), wxDefaultPosition, wxDefaultSize, 0 ); item2->Add( item6, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item2->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 5 ); item1->Add( item2, 1, wxALIGN_CENTER|wxALL, 5 ); item0->Add( item1, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); wxStaticBox *item8 = new wxStaticBox( this, -1, wxT("Server log") ); wxStaticBoxSizer *item7 = new wxStaticBoxSizer( item8, wxVERTICAL ); wxTextCtrl *item9 = new wxTextCtrl( this, ID_LOG, wxT(""), wxDefaultPosition, wxSize(500,140), wxTE_MULTILINE ); item7->Add( item9, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item0->Add( item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); SetSizer( item0 ); item0->SetSizeHints( this ); // status m_server = NULL; GetServername()->SetSelection(0); wxLogTextCtrl *logWindow = new wxLogTextCtrl(GetLog()); delete wxLog::SetActiveTarget(logWindow); wxLogMessage(_T("Click on Start to start the server")); Enable(); }