Committed William Osborne's wxPalmOS port
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
161
src/palmos/msgdlg.cpp
Normal file
161
src/palmos/msgdlg.cpp
Normal file
@@ -0,0 +1,161 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: msgdlg.cpp
|
||||
// Purpose: wxMessageDialog
|
||||
// Author: William Osborne
|
||||
// Modified by:
|
||||
// Created: 10/13/04
|
||||
// RCS-ID: $Id:
|
||||
// Copyright: (c) William Osborne
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
||||
#pragma implementation "msgdlg.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#include "wx/defs.h"
|
||||
#include "wx/utils.h"
|
||||
#include "wx/dialog.h"
|
||||
#include "wx/msgdlg.h"
|
||||
#endif
|
||||
|
||||
IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
|
||||
|
||||
wxMessageDialog::wxMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption,
|
||||
long style,
|
||||
const wxPoint& WXUNUSED(pos))
|
||||
{
|
||||
#ifdef __WXDEBUG__
|
||||
// check for common programming errors
|
||||
if ( (style & wxID_OK) == wxID_OK )
|
||||
{
|
||||
// programmer probably confused wxID_OK with wxOK. Correct one is wxOK.
|
||||
wxFAIL_MSG( _T("wxMessageBox: Did you mean wxOK (and not wxID_OK)?") );
|
||||
}
|
||||
#endif // __WXDEBUG__
|
||||
|
||||
m_caption = caption;
|
||||
m_message = message;
|
||||
m_dialogStyle = style;
|
||||
m_parent = parent;
|
||||
}
|
||||
|
||||
int wxMessageDialog::ShowModal()
|
||||
{
|
||||
int AlertID=1000;
|
||||
int Result=0;
|
||||
int wxResult=wxID_OK;
|
||||
|
||||
// Handle to the currently running application database
|
||||
DmOpenRef AppDB;
|
||||
SysGetModuleDatabase(SysGetRefNum(), NULL, &AppDB);
|
||||
|
||||
// Translate wx styles into Palm OS styles
|
||||
if (m_dialogStyle & wxYES_NO)
|
||||
{
|
||||
if (m_dialogStyle & wxCANCEL)
|
||||
AlertID=1300; // Yes No Cancel
|
||||
else
|
||||
AlertID=1200; // Yes No
|
||||
}
|
||||
if (m_dialogStyle & wxOK)
|
||||
{
|
||||
if (m_dialogStyle & wxCANCEL)
|
||||
AlertID=1100; // Ok Cancel
|
||||
else
|
||||
AlertID=1000; // Ok
|
||||
}
|
||||
|
||||
// Add the icon styles
|
||||
if (m_dialogStyle & wxICON_EXCLAMATION)
|
||||
AlertID=AlertID+0; // Warning
|
||||
else if (m_dialogStyle & wxICON_HAND)
|
||||
AlertID=AlertID+1; // Error
|
||||
else if (m_dialogStyle & wxICON_INFORMATION)
|
||||
AlertID=AlertID+2; // Information
|
||||
else if (m_dialogStyle & wxICON_QUESTION)
|
||||
AlertID=AlertID+3; // Confirmation
|
||||
|
||||
// The Palm OS Dialog API does not support custom titles in a dialog box.
|
||||
// So we have to set the title by manipulating the resource.
|
||||
|
||||
// Get the alert resource
|
||||
char *AlertPtr;
|
||||
MemHandle AlertHandle;
|
||||
AlertHandle=DmGetResource(AppDB,'Talt',AlertID);
|
||||
|
||||
AlertPtr=(char *)MemHandleLock(AlertHandle);
|
||||
AlertPtr+=8;
|
||||
|
||||
// Clear out any old title. This must be done with a static array of chars
|
||||
// because using MemSet is not supported on resources and could result in
|
||||
// crashes or unpredictable behaviour.
|
||||
char ClearTitle[25]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
|
||||
MemMove(AlertPtr,&ClearTitle,25);
|
||||
|
||||
// Get the title length and make sure it is not too long
|
||||
int TitleLength=m_caption.length();
|
||||
if(TitleLength>25)
|
||||
TitleLength=25;
|
||||
|
||||
// Center the title in the window
|
||||
int BufferLength=(25-TitleLength)/2;
|
||||
AlertPtr+=BufferLength;
|
||||
|
||||
// Copy the title
|
||||
MemMove(AlertPtr,m_caption.c_str(),TitleLength);
|
||||
|
||||
// Release the resource
|
||||
MemHandleUnlock(AlertHandle);
|
||||
DmReleaseResource(AlertHandle);
|
||||
|
||||
// Display the dialog
|
||||
Result=FrmCustomAlert(AppDB,AlertID,m_message.c_str(),"","");
|
||||
|
||||
// Convert the Palm OS result to wxResult
|
||||
if(AlertID<1100)
|
||||
{
|
||||
// Ok
|
||||
wxResult=wxID_OK;
|
||||
}
|
||||
else if(AlertID<1200)
|
||||
{
|
||||
// Ok Cancel
|
||||
if(Result==0)
|
||||
wxResult=wxID_OK;
|
||||
else
|
||||
wxResult=wxID_CANCEL;
|
||||
}
|
||||
else if(AlertID<1300)
|
||||
{
|
||||
// Yes No
|
||||
if(Result==0)
|
||||
wxResult=wxID_YES;
|
||||
else
|
||||
wxResult=wxID_NO;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Yes No Cancel
|
||||
if(Result==0)
|
||||
wxResult=wxID_YES;
|
||||
else if(Result==1)
|
||||
wxResult=wxID_NO;
|
||||
else
|
||||
wxResult=wxID_CANCEL;
|
||||
}
|
||||
|
||||
return wxResult;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user