]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/ipc/client.cpp
added complex popup
[wxWidgets.git] / samples / ipc / client.cpp
index f4d1711fe519180db35495ed0048943e74a37ccd..5bc4aeb62f5e4d5888a6e0c64302156fca21ab53 100644 (file)
@@ -30,7 +30,6 @@
 
 // Settings common to both executables: determines whether
 // we're using TCP/IP or real DDE.
-
 #include "ddesetup.h"
 
 #if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
@@ -56,7 +55,6 @@ END_EVENT_TABLE()
 // globals
 // ----------------------------------------------------------------------------
 
-char ipc_buffer[4000];
 wxListBox *the_list = NULL;
 
 MyConnection *the_connection = NULL;
@@ -78,7 +76,7 @@ bool MyApp::OnInit()
     wxString service = IPC_SERVICE;
 
     // ignored under DDE, host name in TCP/IP based classes
-    wxString hostName = "localhost";
+    wxString hostName = _T("localhost");
 
     if (argc > 1)
         service = argv[1];
@@ -96,39 +94,34 @@ bool MyApp::OnInit()
 
         while ( !the_connection )
         {
-            if ( wxMessageBox("Failed to make connection to server.\nRetry?",
-                              "Client Demo Error",
+            if ( wxMessageBox(_T("Failed to make connection to server.\nRetry?"),
+                              _T("Client Demo Error"),
                               wxICON_ERROR | wxYES_NO | wxCANCEL ) != wxYES )
             {
                 // no server
-                return FALSE;
+                return false;
             }
 
-            the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, "IPC TEST");
+            the_connection = (MyConnection *)my_client->MakeConnection(hostName, service, _T("IPC TEST"));
         }
     }
 
     if (!the_connection->StartAdvise(IPC_ADVISE_NAME))
-        wxMessageBox("StartAdvise failed", "Client Demo Error");
+        wxMessageBox(_T("StartAdvise failed"), _T("Client Demo Error"));
 
     // Create the main frame window
-    (new MyFrame(NULL, "Client"))->Show(TRUE);
+    (new MyFrame(NULL, _T("Client")))->Show(true);
 
-    return TRUE;
+    return true;
 }
 
 int MyApp::OnExit()
 {
-    if (the_connection)
-    {
-        the_connection->Disconnect();
-        delete the_connection;
-        the_connection = NULL;
-    }
-
     // will delete the connection too
     // Update: Seems it didn't delete the_connection, because there's a leak.
     // Deletion is now explicitly done a few lines up.
+    // another Update: in fact it's because OnDisconnect should delete it, but
+    // it wasn't
     delete my_client;
 
 
@@ -138,7 +131,7 @@ int MyApp::OnExit()
 
 // Define my frame constructor
 MyFrame::MyFrame(wxFrame *frame, const wxString& title)
-        : wxFrame(frame, -1, title, wxDefaultPosition, wxSize(300, 200))
+        : wxFrame(frame, wxID_ANY, title, wxDefaultPosition, wxSize(300, 200))
 {
     // Give it an icon
     SetIcon(wxICON(mondrian));
@@ -146,54 +139,54 @@ MyFrame::MyFrame(wxFrame *frame, const wxString& title)
     // Make a menubar
     wxMenu *file_menu = new wxMenu;
 
-    file_menu->Append(CLIENT_EXECUTE, "&Execute\tCtrl-E");
-    file_menu->Append(CLIENT_REQUEST, "&Request\tCtrl-R");
-    file_menu->Append(CLIENT_POKE, "&Poke\tCtrl-P");
-    file_menu->Append(CLIENT_QUIT, "&Quit\tCtrl-Q");
+    file_menu->Append(CLIENT_EXECUTE, _T("&Execute\tCtrl-E"));
+    file_menu->Append(CLIENT_REQUEST, _T("&Request\tCtrl-R"));
+    file_menu->Append(CLIENT_POKE, _T("&Poke\tCtrl-P"));
+    file_menu->Append(CLIENT_QUIT, _T("&Quit\tCtrl-Q"));
 
     wxMenuBar *menu_bar = new wxMenuBar;
 
-    menu_bar->Append(file_menu, "&File");
+    menu_bar->Append(file_menu, _T("&File"));
 
     // Associate the menu bar with the frame
     SetMenuBar(menu_bar);
 
     // Make a listbox which shows the choices made in the server
     the_list = new wxListBox(this, CLIENT_LISTBOX, wxPoint(5, 5));
-    the_list->Append("Apple");
-    the_list->Append("Pear");
-    the_list->Append("Orange");
-    the_list->Append("Banana");
-    the_list->Append("Fruit");
+    the_list->Append(_T("Apple"));
+    the_list->Append(_T("Pear"));
+    the_list->Append(_T("Orange"));
+    the_list->Append(_T("Banana"));
+    the_list->Append(_T("Fruit"));
 }
 
-void MyFrame::OnExecute(wxCommandEvent& event)
+void MyFrame::OnExecute(wxCommandEvent& WXUNUSED(event))
 {
     if (the_connection)
-        if (!the_connection->Execute("Hello from the client!"))
-            wxMessageBox("Execute failed", "Client Demo Error");
+        if (!the_connection->Execute(_T("Hello from the client!")))
+            wxMessageBox(_T("Execute failed"), _T("Client Demo Error"));
 }
 
-void MyFrame::OnPoke(wxCommandEvent& event)
+void MyFrame::OnPoke(wxCommandEvent& WXUNUSED(event))
 {
     if (the_connection)
-        if (!the_connection->Poke("An item", "Some data to poke at the server!"))
-            wxMessageBox("Poke failed", "Client Demo Error");
+        if (!the_connection->Poke(_T("An item"), _T("Some data to poke at the server!")))
+            wxMessageBox(_T("Poke failed"), _T("Client Demo Error"));
 }
 
-void MyFrame::OnRequest(wxCommandEvent& event)
+void MyFrame::OnRequest(wxCommandEvent& WXUNUSED(event))
 {
     if (the_connection)
     {
-        char *data = the_connection->Request("An item");
+        wxChar *data = the_connection->Request(_T("An item"));
         if (data)
-            wxMessageBox(data, "Client: Request", wxOK);
+            wxMessageBox(data, _T("Client: Request"), wxOK);
         else
-            wxMessageBox("Request failed", "Client Demo Error");
+            wxMessageBox(_T("Request failed"), _T("Client Demo Error"));
     }
 }
 
-void MyFrame::OnExit(wxCommandEvent& event)
+void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event))
 {
     Close();
 }
@@ -203,28 +196,26 @@ wxConnectionBase *MyClient::OnMakeConnection()
     return new MyConnection;
 }
 
-MyConnection::MyConnection()
-            : wxConnection(ipc_buffer, WXSIZEOF(ipc_buffer))
-{
-}
-
-bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format)
+bool MyConnection::OnAdvise(const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), wxChar *data, int WXUNUSED(size), wxIPCFormat WXUNUSED(format))
 {
     if (the_list)
     {
         int n = the_list->FindString(data);
-        if (n > -1)
+        if (n > wxNOT_FOUND)
             the_list->SetSelection(n);
     }
-    return TRUE;
+    return true;
 }
 
 bool MyConnection::OnDisconnect()
 {
+    // when connection is terminated, quit whole program
     wxWindow *win = wxTheApp->GetTopWindow();
     if ( win )
         win->Destroy();
 
-    return TRUE;
+    // delete self
+    the_connection = NULL;
+    return wxConnection::OnDisconnect();
 }