wxWidgets/samples/taskbar/tbtest.cpp

207 lines
5.1 KiB
C++
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Name: tbtest.cpp
// Purpose: wxTaskBarIcon demo
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c)
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
// the application icon (under Windows and OS/2 it is in resources)
#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
#include "../sample.xpm"
#endif
#include "smile.xpm"
Applied patch [ 603858 ] wxTextCtrl text alignment patch Benjamin I. Williams This patch implements three new flags for the wxTextCtrl control. The flags are wxTE_LEFT, wxTE_CENTRE, and wxTE_RIGHT. These flags can change the way text is aligned inside an edit control, which is useful when the user is editing numbers or dates. At Vadim's recommendation, the patch implements the alignment flags so they are equal to the corresponding wxALIGN_* value. wxTE_LEFT is actually 0x0000, and is just a place holder. wxTE_CENTRE is equal to wx_ALIGN_CENTER_HORIZONTAL (0x0100), and wxTE_RIGHT is equal to wxALIGN_RIGHT (0x0100). I couldn't agree more with this idea. As Vadim pointed out, choosing to set the text alignment flags to the corresponding wxALIGN_* flags has a slight negative side effect: the values 0x0100 and 0x0200 collide with the existing flags wxTE_NO_VSCROLL and wxTE_AUTO_SCROLL. A valid point was raised, however, which stated that the flags would never really be used at the same time, and also that wxTE_AUTO_SCROLL is (possibly) going to be deprecated anyway. While this collision is not really a problem, I didn't like the idea of someone specifying wxTE_NO_VSCROLL and ending up with with a centered text control ! Thus, I chose to move both wxTE_NO_VSCROLL and wxTE_AUTO_SCROLL down to the free bits 0x0002 and 0x0008, respectively. I'll leave the final say up to Vadim and the rest of you whether you want to move these flags down or keep them where they are (with collisions). What truly matters to me is that I can now create text controls with the proper alignment! This patch also updates the documentation. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-05 12:15:30 -04:00
#include "wx/taskbar.h"
#include "tbtest.h"
// Declare two frames
MyDialog *dialog = NULL;
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit(void)
{
// Create the main frame window
dialog = new MyDialog(NULL, wxID_ANY, wxT("wxTaskBarIcon Test Dialog"), wxDefaultPosition, wxSize(365, 290));
dialog->Show(true);
return true;
}
BEGIN_EVENT_TABLE(MyDialog, wxDialog)
EVT_BUTTON(wxID_OK, MyDialog::OnOK)
EVT_BUTTON(wxID_EXIT, MyDialog::OnExit)
EVT_CLOSE(MyDialog::OnCloseWindow)
END_EVENT_TABLE()
MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size, const long windowStyle):
wxDialog(parent, id, title, pos, size, windowStyle)
{
Init();
}
MyDialog::~MyDialog()
{
delete m_taskBarIcon;
#if defined(__WXCOCOA__)
delete m_dockIcon;
#endif
}
void MyDialog::OnOK(wxCommandEvent& WXUNUSED(event))
{
Show(false);
}
void MyDialog::OnExit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
}
void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
Destroy();
}
void MyDialog::Init(void)
{
(void)new wxStaticText(this, wxID_ANY, _T("Press 'Hide me' to hide me, Exit to quit."),
wxPoint(10, 20));
(void)new wxStaticText(this, wxID_ANY, _T("Double-click on the taskbar icon to show me again."),
wxPoint(10, 40));
(void)new wxButton(this, wxID_EXIT, _T("Exit"), wxPoint(185, 230), wxSize(80, 25));
(new wxButton(this, wxID_OK, _T("Hide me"), wxPoint(100, 230), wxSize(80, 25)))->SetDefault();
Centre(wxBOTH);
m_taskBarIcon = new MyTaskBarIcon();
#if defined(__WXCOCOA__)
m_dockIcon = new MyTaskBarIcon(wxTaskBarIcon::DOCK);
#endif
if (!m_taskBarIcon->SetIcon(wxICON(sample), wxT("wxTaskBarIcon Sample")))
wxMessageBox(wxT("Could not set icon."));
}
enum {
PU_RESTORE = 10001,
PU_NEW_ICON,
PU_OLD_ICON,
PU_EXIT,
PU_CHECKMARK,
PU_SUB1,
PU_SUB2,
PU_SUBMAIN
};
BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon)
EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore)
EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit)
EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon)
EVT_MENU(PU_OLD_ICON,MyTaskBarIcon::OnMenuSetOldIcon)
EVT_MENU(PU_CHECKMARK,MyTaskBarIcon::OnMenuCheckmark)
EVT_UPDATE_UI(PU_CHECKMARK,MyTaskBarIcon::OnMenuUICheckmark)
EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLeftButtonDClick)
EVT_MENU(PU_SUB1, MyTaskBarIcon::OnMenuSub)
EVT_MENU(PU_SUB2, MyTaskBarIcon::OnMenuSub)
END_EVENT_TABLE()
void MyTaskBarIcon::OnMenuRestore(wxCommandEvent& )
{
dialog->Show(true);
}
void MyTaskBarIcon::OnMenuExit(wxCommandEvent& )
{
dialog->Close(true);
}
static bool check = true;
void MyTaskBarIcon::OnMenuCheckmark(wxCommandEvent& )
{
check =!check;
}
void MyTaskBarIcon::OnMenuUICheckmark(wxUpdateUIEvent &event)
{
event.Check( check );
}
void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&)
{
wxIcon icon(smile_xpm);
if (!SetIcon(icon, wxT("wxTaskBarIcon Sample - a different icon")))
wxMessageBox(wxT("Could not set new icon."));
}
void MyTaskBarIcon::OnMenuSetOldIcon(wxCommandEvent&)
{
if (IsIconInstalled())
{
RemoveIcon();
}
else
{
wxMessageBox(wxT("wxTaskBarIcon Sample - icon already is the old version"));
}
}
void MyTaskBarIcon::OnMenuSub(wxCommandEvent&)
{
wxMessageBox(wxT("You clicked on a submenu!"));
}
// Overridables
wxMenu *MyTaskBarIcon::CreatePopupMenu()
{
// Try creating menus different ways
// TODO: Probably try calling SetBitmap with some XPMs here
wxMenu *menu = new wxMenu;
menu->Append(PU_RESTORE, _T("&Restore TBTest"));
menu->AppendSeparator();
menu->Append(PU_OLD_ICON, _T("&Restore Old Icon"));
menu->Append(PU_NEW_ICON, _T("&Set New Icon"));
menu->AppendSeparator();
menu->Append(PU_CHECKMARK, _T("Checkmark"),wxT(""), wxITEM_CHECK);
menu->AppendSeparator();
wxMenu *submenu = new wxMenu;
submenu->Append(PU_SUB1, _T("One submenu"));
submenu->AppendSeparator();
submenu->Append(PU_SUB2, _T("Another submenu"));
menu->Append(PU_SUBMAIN, _T("Submenu"), submenu);
#ifndef __WXMAC_OSX__ /*Mac has built-in quit menu*/
menu->AppendSeparator();
menu->Append(PU_EXIT, _T("E&xit"));
#endif
return menu;
}
void MyTaskBarIcon::OnLeftButtonDClick(wxTaskBarIconEvent&)
{
dialog->Show(true);
}