Full support to the native progress dialog.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -37,16 +37,15 @@ public:
|
|||||||
void Resume();
|
void Resume();
|
||||||
virtual bool Show( bool show = true );
|
virtual bool Show( bool show = true );
|
||||||
|
|
||||||
wxString GetMessage(){return m_msg;}
|
Boolean Callback(PrgCallbackData *data);
|
||||||
void SetMessage(wxString const &message){m_msg = message;}
|
|
||||||
|
|
||||||
int GetMaxValue(){return m_max;}
|
|
||||||
int GetCurValue(){return m_cur;}
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
ProgressType *m_prgFrame;
|
ProgressType *m_prgFrame;
|
||||||
wxString m_msg;
|
wxString m_msg;
|
||||||
int m_max,m_cur;
|
int m_max,m_cur;
|
||||||
|
bool m_canSkip;
|
||||||
|
bool m_activeSkip;
|
||||||
|
|
||||||
// Virtual function hiding supression
|
// Virtual function hiding supression
|
||||||
virtual void Update() { wxDialog::Update(); }
|
virtual void Update() { wxDialog::Update(); }
|
||||||
|
@@ -746,7 +746,7 @@
|
|||||||
#define wxUSE_MSGDLG 1
|
#define wxUSE_MSGDLG 1
|
||||||
|
|
||||||
// progress dialog class for lengthy operations
|
// progress dialog class for lengthy operations
|
||||||
#define wxUSE_PROGRESSDLG 0
|
#define wxUSE_PROGRESSDLG 1
|
||||||
|
|
||||||
// support for startup tips (wxShowTip &c)
|
// support for startup tips (wxShowTip &c)
|
||||||
#define wxUSE_STARTUP_TIPS 0
|
#define wxUSE_STARTUP_TIPS 0
|
||||||
|
@@ -26,10 +26,6 @@
|
|||||||
|
|
||||||
#if wxUSE_PROGRESSDLG
|
#if wxUSE_PROGRESSDLG
|
||||||
|
|
||||||
//****************
|
|
||||||
//* NEEDS DEBUGING
|
|
||||||
//****************
|
|
||||||
|
|
||||||
#include "wx/progdlg.h"
|
#include "wx/progdlg.h"
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
|
|
||||||
@@ -45,29 +41,7 @@ static Boolean wxProgressCallback(PrgCallbackData *data)
|
|||||||
if(!dialog)
|
if(!dialog)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// /* uint16_t */ data->bitmapId = 0;
|
return dialog->Callback(data);
|
||||||
// /* DmOpenRef */ data->bitmapDatabase = 0;
|
|
||||||
/* char * */ data->textP = "test";
|
|
||||||
// /* status_t */ data->error;
|
|
||||||
// /* uint16_t */ data->canceled;
|
|
||||||
/* uint16_t */ data->textChanged = false;
|
|
||||||
/* uint16_t */ data->displaySkipBtn = true;
|
|
||||||
// /* uint16_t */ data->skipped:1;
|
|
||||||
// /* uint32_t */ data->timeout;
|
|
||||||
/* uint32_t */ data->barMaxValue = (uint32_t)dialog->GetMaxValue();
|
|
||||||
/* uint32_t */ data->barCurValue = (uint32_t)dialog->GetCurValue();
|
|
||||||
/* uint16_t */ data->delay = false ;
|
|
||||||
|
|
||||||
/* NOT USED
|
|
||||||
data->spareBits1:10;
|
|
||||||
data->padding1;
|
|
||||||
data->padding2;
|
|
||||||
data->barMessage;
|
|
||||||
data->barFlags;
|
|
||||||
data->spareBits2:15;
|
|
||||||
*/
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxProgressDialog::wxProgressDialog(const wxString &title,
|
wxProgressDialog::wxProgressDialog(const wxString &title,
|
||||||
@@ -79,10 +53,11 @@ wxProgressDialog::wxProgressDialog(const wxString &title,
|
|||||||
m_prgFrame(NULL),
|
m_prgFrame(NULL),
|
||||||
m_msg(message),
|
m_msg(message),
|
||||||
m_cur(0),
|
m_cur(0),
|
||||||
m_max(maximum)
|
m_max(maximum),
|
||||||
|
m_canSkip((style & wxPD_CAN_SKIP )==wxPD_CAN_SKIP)
|
||||||
{
|
{
|
||||||
wxString prgTitle = title.Mid(0, progressMaxTitle);
|
wxString prgTitle = title.Mid(0, progressMaxTitle);
|
||||||
|
|
||||||
m_prgFrame = PrgStartDialog(prgTitle.ToAscii(), wxProgressCallback, this);
|
m_prgFrame = PrgStartDialog(prgTitle.ToAscii(), wxProgressCallback, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,10 +75,25 @@ bool wxProgressDialog::Update(int value, const wxString& newmsg, bool *skip)
|
|||||||
if(!m_prgFrame)
|
if(!m_prgFrame)
|
||||||
return false;
|
return false;
|
||||||
if(!newmsg.empty())
|
if(!newmsg.empty())
|
||||||
SetMessage(newmsg);
|
m_msg = newmsg;
|
||||||
m_cur = value;
|
m_cur = value;
|
||||||
// PrgUpdateDialog crashes, needs debugging
|
|
||||||
// PrgUpdateDialog(m_prgFrame, 0, 1, newmsg.ToAscii(), true);
|
EventType event;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
EvtGetEvent(&event, 0);
|
||||||
|
Boolean handled = PrgHandleEvent(m_prgFrame, &event);
|
||||||
|
if (!PrgHandleEvent(m_prgFrame, &event))
|
||||||
|
if( PrgUserCancel(m_prgFrame) )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
while(event.eType != sysEventNilEvent);
|
||||||
|
|
||||||
|
PrgUpdateDialog(m_prgFrame, 0, 0, "", true);
|
||||||
|
|
||||||
|
m_activeSkip = m_canSkip && true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,4 +106,16 @@ bool wxProgressDialog::Show(bool show)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Boolean wxProgressDialog::Callback(PrgCallbackData *data)
|
||||||
|
{
|
||||||
|
strncpy( data->textP, m_msg.ToAscii() , data->textLen - 1 );
|
||||||
|
data->textChanged = true;
|
||||||
|
data->displaySkipBtn = m_canSkip;
|
||||||
|
data->barMaxValue = (uint32_t)m_max;
|
||||||
|
data->barCurValue = (uint32_t)m_cur;
|
||||||
|
data->delay = (m_max == m_cur);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_PROGRESSDLG
|
#endif // wxUSE_PROGRESSDLG
|
||||||
|
Reference in New Issue
Block a user