1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Windows/Control/DialogImpl.h
#ifndef __WINDOWS_CONTROL_DIALOGIMPL_H
#define __WINDOWS_CONTROL_DIALOGIMPL_H
#include "Windows/Window.h"
#include "Windows/Control/Dialog.h"
void myCreateHandle(int n); // FIXME - duplicate
enum {
WORKER_EVENT=100 // this one gets sent from the worker thread
};
namespace NWindows {
namespace NControl {
#define TIMER_ID_IMPL (1234)
class CModalDialogImpl : public wxDialog
{
wxTimer _timer;
CDialog *_dialog;
public:
CModalDialogImpl(CDialog *dialog, wxWindow* parent, wxWindowID id, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE );
CDialog * Detach()
{
CDialog * oldDialog = _dialog;
_dialog = NULL;
return oldDialog;
}
void OnInit()
{
if (_dialog) _dialog->OnInit(this);
}
void OnAnyButton(wxCommandEvent& event);
void OnAnyChoice(wxCommandEvent &event);
void OnAnyTimer(wxTimerEvent &event);
/* FIXME virtual void SetLabel(const wxString &title)
{
// Why we must do this "alias" ?
this->SetTitle(title);
}
*/
//////////////////
UINT_PTR SetTimer(UINT_PTR /* FIXME idEvent */, unsigned milliseconds)
{
_timer.Start(milliseconds);
return TIMER_ID_IMPL;
}
void KillTimer(UINT_PTR idEvent)
{
if (idEvent == TIMER_ID_IMPL) _timer.Stop();
}
void OnWorkerEvent(wxCommandEvent& event)
{
int n = event.GetInt();
// printf("CModalDialogImpl::OnWorkerEvent(n=%d)\n",n);
myCreateHandle(n);
}
};
}
}
#endif
|