From 02e8b87f6fd740501b2f39504342e77ade92a177 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 31 May 1999 14:54:04 +0000 Subject: [PATCH] Added own sample for text ctrl, char/key events, clipboard. This can be removed from the controls sample. Made control tooltips yellow again. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/text/.cvsignore | 3 + samples/text/Makefile | 1 + samples/text/Makefile.in | 26 ++ samples/text/controls.cpp | 648 ++++++++++++++++++++++++++++++++++++++ samples/text/controls.def | 8 + samples/text/controls.rc | 10 + samples/text/makefile.b32 | 16 + samples/text/makefile.bcc | 19 ++ samples/text/makefile.dos | 17 + samples/text/makefile.g95 | 16 + samples/text/makefile.unx | 17 + samples/text/makefile.vc | 18 ++ samples/text/makefile.wat | 15 + samples/text/mondrian.ico | Bin 0 -> 766 bytes samples/text/mondrian.xpm | 44 +++ src/gtk/tooltip.cpp | 13 + src/gtk1/tooltip.cpp | 13 + 17 files changed, 884 insertions(+) create mode 100644 samples/text/.cvsignore create mode 100644 samples/text/Makefile create mode 100644 samples/text/Makefile.in create mode 100644 samples/text/controls.cpp create mode 100644 samples/text/controls.def create mode 100644 samples/text/controls.rc create mode 100644 samples/text/makefile.b32 create mode 100644 samples/text/makefile.bcc create mode 100644 samples/text/makefile.dos create mode 100644 samples/text/makefile.g95 create mode 100644 samples/text/makefile.unx create mode 100644 samples/text/makefile.vc create mode 100644 samples/text/makefile.wat create mode 100644 samples/text/mondrian.ico create mode 100644 samples/text/mondrian.xpm diff --git a/samples/text/.cvsignore b/samples/text/.cvsignore new file mode 100644 index 0000000000..7957c41216 --- /dev/null +++ b/samples/text/.cvsignore @@ -0,0 +1,3 @@ +Linux +linux-gnu +linux \ No newline at end of file diff --git a/samples/text/Makefile b/samples/text/Makefile new file mode 100644 index 0000000000..bccce53f76 --- /dev/null +++ b/samples/text/Makefile @@ -0,0 +1 @@ +include ../../setup/general/makeapp diff --git a/samples/text/Makefile.in b/samples/text/Makefile.in new file mode 100644 index 0000000000..f011b493a7 --- /dev/null +++ b/samples/text/Makefile.in @@ -0,0 +1,26 @@ +# WXXT base directory +WXBASEDIR=@WXBASEDIR@ + +# set the OS type for compilation +OS=@OS@ +# compile a library only +RULE=bin + +# define library name +BIN_TARGET=controls +# define library sources +BIN_SRC=\ +controls.cpp + +#define library objects +BIN_OBJ=\ +controls.o + +# additional things needed to link +BIN_LINK= + +# additional things needed to compile +ADD_COMPILE= + +# include the definitions now +include ../../../template.mak diff --git a/samples/text/controls.cpp b/samples/text/controls.cpp new file mode 100644 index 0000000000..cff2e79bea --- /dev/null +++ b/samples/text/controls.cpp @@ -0,0 +1,648 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: controls.cpp +// Purpose: TextCtrl wxWindows sample +// Author: Robert Roebling +// Modified by: +// RCS-ID: $Id$ +// Copyright: (c) Robert Roebling, Julian Smart +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +#ifdef __GNUG__ + #pragma implementation "controls.h" +#endif + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif + +#if wxUSE_CLIPBOARD + #include "wx/dataobj.h" + #include "wx/clipbrd.h" +#endif + +#if wxUSE_TOOLTIPS + #include "wx/tooltip.h" +#endif + +#if defined(__WXGTK__) || defined(__WXMOTIF__) + #include "mondrian.xpm" +#endif + +//---------------------------------------------------------------------- +// class definitions +//---------------------------------------------------------------------- + +class MyApp: public wxApp +{ +public: + bool OnInit(); +}; + +// a text ctrl which allows to call different wxTextCtrl functions +// interactively by pressing function keys in it +class MyTextCtrl : public wxTextCtrl +{ +public: + MyTextCtrl(wxWindow *parent, wxWindowID id, const wxString &value, + const wxPoint &pos, const wxSize &size, int style = 0) + : wxTextCtrl(parent, id, value, pos, size, style) { } + + void OnKeyDown(wxKeyEvent& event); + void OnKeyUp(wxKeyEvent& event); + void OnChar(wxKeyEvent& event); + +private: + static inline wxChar GetChar(bool on, wxChar c) { return on ? c : _T('-'); } + void LogEvent(const wxChar *name, wxKeyEvent& event) const; + + DECLARE_EVENT_TABLE() +}; + +class MyPanel: public wxPanel +{ +public: + MyPanel(wxFrame *frame, int x, int y, int w, int h); + + void OnPasteFromClipboard( wxCommandEvent &event ); + void OnCopyToClipboard( wxCommandEvent &event ); + void OnMoveToEndOfText( wxCommandEvent &event ); + void OnMoveToEndOfEntry( wxCommandEvent &event ); + + MyTextCtrl *m_text; + MyTextCtrl *m_password; + MyTextCtrl *m_enter; + MyTextCtrl *m_tab; + MyTextCtrl *m_entertab; + MyTextCtrl *m_readonly; + + MyTextCtrl *m_multitext; + MyTextCtrl *m_horizontal; + MyTextCtrl *m_multitab; + + wxTextCtrl *m_log; + +private: + DECLARE_EVENT_TABLE() +}; + +class MyFrame: public wxFrame +{ +public: + MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); + + void OnQuit(wxCommandEvent& event); + void OnAbout(wxCommandEvent& event); +#if wxUSE_TOOLTIPS + void OnSetTooltipDelay(wxCommandEvent& event); + void OnToggleTooltips(wxCommandEvent& event); +#endif // wxUSE_TOOLTIPS + void OnIdle( wxIdleEvent& event ); + +private: + DECLARE_EVENT_TABLE() +}; + +//---------------------------------------------------------------------- +// main() +//---------------------------------------------------------------------- + +IMPLEMENT_APP(MyApp) + +//---------------------------------------------------------------------- +// MyApp +//---------------------------------------------------------------------- + +enum +{ + MINIMAL_QUIT = 100, + MINIMAL_TEXT, + MINIMAL_ABOUT, + + // tooltip menu + MINIMAL_SET_TOOLTIP_DELAY = 200, + MINIMAL_ENABLE_TOOLTIPS +}; + +bool MyApp::OnInit() +{ + // Create the main frame window + MyFrame *frame = new MyFrame((wxFrame *) NULL, + "Text wxWindows App", + 50, 50, 640, 420); + + // Give it an icon + // The wxICON() macros loads an icon from a resource under Windows + // and uses an #included XPM image under GTK+ and Motif + + frame->SetIcon( wxICON(mondrian) ); + + wxMenu *file_menu = new wxMenu; + file_menu->Append(MINIMAL_ABOUT, "&About\tAlt-A"); + file_menu->Append(MINIMAL_QUIT, "E&xit\tAlt-X", "Quit controls sample"); + + wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE ); + menu_bar->Append(file_menu, "&File"); + +#if wxUSE_TOOLTIPS + wxMenu *tooltip_menu = new wxMenu; + tooltip_menu->Append(MINIMAL_SET_TOOLTIP_DELAY, "Set &delay\tCtrl-D"); + tooltip_menu->AppendSeparator(); + tooltip_menu->Append(MINIMAL_ENABLE_TOOLTIPS, "&Toggle tooltips\tCrtl-T", + "enable/disable tooltips", TRUE); + tooltip_menu->Check(MINIMAL_ENABLE_TOOLTIPS, TRUE); + menu_bar->Append(tooltip_menu, "&Tooltips"); +#endif // wxUSE_TOOLTIPS + + frame->SetMenuBar(menu_bar); + + frame->Show(TRUE); + + SetTopWindow(frame); + + // report success + return TRUE; +} + +//---------------------------------------------------------------------- +// MyTextCtrl +//---------------------------------------------------------------------- + +BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl) + EVT_KEY_DOWN(MyTextCtrl::OnKeyDown) + EVT_KEY_UP(MyTextCtrl::OnKeyUp) + EVT_CHAR(MyTextCtrl::OnChar) +END_EVENT_TABLE() + +void MyTextCtrl::LogEvent(const wxChar *name, wxKeyEvent& event) const +{ + wxString key; + long keycode = event.KeyCode(); + if ( wxIsprint((int)keycode) ) + key.Printf( _T("'%c'") , (char)keycode); + else + { + switch ( keycode ) + { + case WXK_BACK: key = "BACK"; break; + case WXK_TAB: key = "TAB"; break; + case WXK_RETURN: key = "RETURN"; break; + case WXK_ESCAPE: key = "ESCAPE"; break; + case WXK_SPACE: key = "SPACE"; break; + case WXK_DELETE: key = "DELETE"; break; + case WXK_START: key = "START"; break; + case WXK_LBUTTON: key = "LBUTTON"; break; + case WXK_RBUTTON: key = "RBUTTON"; break; + case WXK_CANCEL: key = "CANCEL"; break; + case WXK_MBUTTON: key = "MBUTTON"; break; + case WXK_CLEAR: key = "CLEAR"; break; + case WXK_SHIFT: key = "SHIFT"; break; + case WXK_ALT: key = "ALT"; break; + case WXK_CONTROL: key = "CONTROL"; break; + case WXK_MENU: key = "MENU"; break; + case WXK_PAUSE: key = "PAUSE"; break; + case WXK_CAPITAL: key = "CAPITAL"; break; + case WXK_PRIOR: key = "PRIOR"; break; + case WXK_NEXT: key = "NEXT"; break; + case WXK_END: key = "END"; break; + case WXK_HOME: key = "HOME"; break; + case WXK_LEFT: key = "LEFT"; break; + case WXK_UP: key = "UP"; break; + case WXK_RIGHT: key = "RIGHT"; break; + case WXK_DOWN: key = "DOWN"; break; + case WXK_SELECT: key = "SELECT"; break; + case WXK_PRINT: key = "PRINT"; break; + case WXK_EXECUTE: key = "EXECUTE"; break; + case WXK_SNAPSHOT: key = "SNAPSHOT"; break; + case WXK_INSERT: key = "INSERT"; break; + case WXK_HELP: key = "HELP"; break; + case WXK_NUMPAD0: key = "NUMPAD0"; break; + case WXK_NUMPAD1: key = "NUMPAD1"; break; + case WXK_NUMPAD2: key = "NUMPAD2"; break; + case WXK_NUMPAD3: key = "NUMPAD3"; break; + case WXK_NUMPAD4: key = "NUMPAD4"; break; + case WXK_NUMPAD5: key = "NUMPAD5"; break; + case WXK_NUMPAD6: key = "NUMPAD6"; break; + case WXK_NUMPAD7: key = "NUMPAD7"; break; + case WXK_NUMPAD8: key = "NUMPAD8"; break; + case WXK_NUMPAD9: key = "NUMPAD9"; break; + case WXK_MULTIPLY: key = "MULTIPLY"; break; + case WXK_ADD: key = "ADD"; break; + case WXK_SEPARATOR: key = "SEPARATOR"; break; + case WXK_SUBTRACT: key = "SUBTRACT"; break; + case WXK_DECIMAL: key = "DECIMAL"; break; + case WXK_DIVIDE: key = "DIVIDE"; break; + case WXK_F1: key = "F1"; break; + case WXK_F2: key = "F2"; break; + case WXK_F3: key = "F3"; break; + case WXK_F4: key = "F4"; break; + case WXK_F5: key = "F5"; break; + case WXK_F6: key = "F6"; break; + case WXK_F7: key = "F7"; break; + case WXK_F8: key = "F8"; break; + case WXK_F9: key = "F9"; break; + case WXK_F10: key = "F10"; break; + case WXK_F11: key = "F11"; break; + case WXK_F12: key = "F12"; break; + case WXK_F13: key = "F13"; break; + case WXK_F14: key = "F14"; break; + case WXK_F15: key = "F15"; break; + case WXK_F16: key = "F16"; break; + case WXK_F17: key = "F17"; break; + case WXK_F18: key = "F18"; break; + case WXK_F19: key = "F19"; break; + case WXK_F20: key = "F20"; break; + case WXK_F21: key = "F21"; break; + case WXK_F22: key = "F22"; break; + case WXK_F23: key = "F23"; break; + case WXK_F24: key = "F24"; break; + case WXK_NUMLOCK: key = "NUMLOCK"; break; + case WXK_SCROLL: key = "SCROLL"; break; + case WXK_PAGEUP: key = "PAGEUP"; break; + case WXK_PAGEDOWN: key = "PAGEDOWN"; break; + case WXK_NUMPAD_SPACE: key = "NUMPAD_SPACE"; break; + case WXK_NUMPAD_TAB: key = "NUMPAD_TAB"; break; + case WXK_NUMPAD_ENTER: key = "NUMPAD_ENTER"; break; + case WXK_NUMPAD_F1: key = "NUMPAD_F1"; break; + case WXK_NUMPAD_F2: key = "NUMPAD_F2"; break; + case WXK_NUMPAD_F3: key = "NUMPAD_F3"; break; + case WXK_NUMPAD_F4: key = "NUMPAD_F4"; break; + case WXK_NUMPAD_HOME: key = "NUMPAD_HOME"; break; + case WXK_NUMPAD_LEFT: key = "NUMPAD_LEFT"; break; + case WXK_NUMPAD_UP: key = "NUMPAD_UP"; break; + case WXK_NUMPAD_RIGHT: key = "NUMPAD_RIGHT"; break; + case WXK_NUMPAD_DOWN: key = "NUMPAD_DOWN"; break; + case WXK_NUMPAD_PRIOR: key = "NUMPAD_PRIOR"; break; + case WXK_NUMPAD_PAGEUP: key = "NUMPAD_PAGEUP"; break; + case WXK_NUMPAD_PAGEDOWN: key = "NUMPAD_PAGEDOWN"; break; + case WXK_NUMPAD_END: key = "NUMPAD_END"; break; + case WXK_NUMPAD_BEGIN: key = "NUMPAD_BEGIN"; break; + case WXK_NUMPAD_INSERT: key = "NUMPAD_INSERT"; break; + case WXK_NUMPAD_DELETE: key = "NUMPAD_DELETE"; break; + case WXK_NUMPAD_EQUAL: key = "NUMPAD_EQUAL"; break; + case WXK_NUMPAD_MULTIPLY: key = "NUMPAD_MULTIPLY"; break; + case WXK_NUMPAD_ADD: key = "NUMPAD_ADD"; break; + case WXK_NUMPAD_SEPARATOR: key = "NUMPAD_SEPARATOR"; break; + case WXK_NUMPAD_SUBTRACT: key = "NUMPAD_SUBTRACT"; break; + case WXK_NUMPAD_DECIMAL: key = "NUMPAD_DECIMAL"; break; + + default: + key.Printf( _T("unknown (%ld)"), keycode); + } + } + + wxLogMessage( _T("%s event: %s (flags = %c%c%c%c)"), + name, + key.c_str(), + GetChar( event.ControlDown(), _T('C') ), + GetChar( event.AltDown(), _T('A') ), + GetChar( event.ShiftDown(), _T('S') ), + GetChar( event.MetaDown(), _T('M') ) ); + +} + +void MyTextCtrl::OnChar(wxKeyEvent& event) +{ + LogEvent( _T("Char"), event); + + event.Skip(); +} + +void MyTextCtrl::OnKeyUp(wxKeyEvent& event) +{ + LogEvent( _("Key up"), event); + + event.Skip(); +} + +void MyTextCtrl::OnKeyDown(wxKeyEvent& event) +{ + switch ( event.KeyCode() ) + { + case WXK_F1: + // show current position and text length + { + long line, column, pos = GetInsertionPoint(); + PositionToXY(pos, &column, &line); + + wxLogMessage( _T("Current position: %ld\n" + "Current line, column: (%ld, %ld)\n" + "Number of lines: %ld\n" + "Current line length: %ld\n" + "Total text length: %ld"), + pos, + line, column, + GetNumberOfLines(), + GetLineLength(line), + GetLastPosition()); + } + break; + + case WXK_F2: + // go to the end + SetInsertionPointEnd(); + break; + + case WXK_F3: + // go to position 10 + SetInsertionPoint(10); + break; + } + + LogEvent( _("Key down"), event); + + event.Skip(); +} + +//---------------------------------------------------------------------- +// MyPanel +//---------------------------------------------------------------------- + +const int ID_TEXT = 150; +const int ID_PASTE_TEXT = 151; +const int ID_COPY_TEXT = 152; +const int ID_MOVE_END_ENTRY = 153; +const int ID_MOVE_END_ZONE = 154; + +BEGIN_EVENT_TABLE(MyPanel, wxPanel) +EVT_BUTTON (ID_PASTE_TEXT, MyPanel::OnPasteFromClipboard) +EVT_BUTTON (ID_COPY_TEXT, MyPanel::OnCopyToClipboard) +EVT_BUTTON (ID_MOVE_END_ZONE, MyPanel::OnMoveToEndOfText) +EVT_BUTTON (ID_MOVE_END_ENTRY, MyPanel::OnMoveToEndOfEntry) +END_EVENT_TABLE() + +MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) + : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) +{ + m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(5,260), wxSize(630,100), wxTE_MULTILINE ); + + delete wxLog::SetActiveTarget(new wxLogStderr); + + // single line text controls + + m_text = new MyTextCtrl( this, -1, "Single line.", + wxPoint(10,10), wxSize(140,-1), 0); + (*m_text) << " Appended."; + m_text->SetInsertionPoint(0); + m_text->WriteText( "Prepended. " ); + + m_password = new MyTextCtrl( this, -1, "", + wxPoint(10,50), wxSize(140,-1), wxTE_PASSWORD ); + + m_readonly = new MyTextCtrl( this, -1, "Read only", + wxPoint(10,90), wxSize(140,-1), wxTE_READONLY ); + + // multi line text controls + + m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.", + wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL ); + + m_multitext = new MyTextCtrl( this, ID_TEXT, "Multi line.", + wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE ); + (*m_multitext) << " Appended."; + m_multitext->SetInsertionPoint(0); + m_multitext->WriteText( "Prepended. " ); + +#if wxUSE_TOOLTIPS + m_multitext->SetToolTip("Press F1 here."); +#endif + + m_tab = new MyTextCtrl( this, -1, "Multiline, allow processing.", + wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_TAB ); + + m_enter = new MyTextCtrl( this, -1, "Multiline, allow processing.", + wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE | wxTE_PROCESS_ENTER ); + + wxButton *button; + + (void)new wxStaticBox( this, -1, "&Move cursor to the end of:", wxPoint(445, 10), wxSize(160, 100) ); + button = new wxButton( this, ID_MOVE_END_ENTRY, "&Single-line", wxPoint(470, 30), wxSize(110, 30) ); +#if wxUSE_TOOLTIPS + button->SetToolTip("Move cursor in single-line text control to end of line."); +#endif + button = new wxButton( this, ID_MOVE_END_ZONE, "&Multi-line", wxPoint(470, 70), wxSize(110, 30) ); +#if wxUSE_TOOLTIPS + button->SetToolTip("Move cursor in multi-line text control to end of first line."); +#endif + + (void)new wxStaticBox( this, -1, "wx&Clipboard", wxPoint(445,130), wxSize(160,100) ); + button = new wxButton( this, ID_COPY_TEXT, "C&opy line 1", wxPoint(470,150), wxSize(110,30) ); +#if wxUSE_TOOLTIPS + button->SetToolTip("Copy first line of the multi-line text control to the clipboard"); +#endif + button = new wxButton( this, ID_PASTE_TEXT, "&Paste text", wxPoint(470,190), wxSize(110,30) ); +#if wxUSE_TOOLTIPS + button->SetToolTip("Paste text from clipboard to the end of the multi-line text control."); +#endif +} + +void MyPanel::OnPasteFromClipboard( wxCommandEvent &WXUNUSED(event) ) +{ + // We test for wxUSE_DRAG_AND_DROP also, because data objects + // may not be implemented for compilers that can't cope with the OLE + // parts in wxUSE_DRAG_AND_DROP. + +#if wxUSE_CLIPBOARD && wxUSE_DRAG_AND_DROP + if (!wxTheClipboard->Open()) + { + *m_log << "Error opening the clipboard.\n"; + + return; + } + else + { + *m_log << "Successfully opened the clipboard.\n"; + } + + wxTextDataObject data; + + if (wxTheClipboard->IsSupported( data.GetFormat() )) + { + *m_log << "Clipboard supports requested format.\n"; + + if (wxTheClipboard->GetData( &data )) + { + *m_log << "Successfully retrieved data from the clipboard.\n"; + *m_multitext << data.GetText() << "\n"; + } + else + { + *m_log << "Error getting data from the clipboard.\n"; + } + } + else + { + *m_log << "Clipboard doesn't support requested format.\n"; + } + + wxTheClipboard->Close(); + + *m_log << "Closed the clipboard.\n"; +#else + wxLogError("Your version of wxWindows is compiled without clipboard support."); +#endif +} + +void MyPanel::OnCopyToClipboard( wxCommandEvent &WXUNUSED(event) ) +{ +#if wxUSE_CLIPBOARD && wxUSE_DRAG_AND_DROP + wxString text( m_multitext->GetLineText(0) ); + + if (text.IsEmpty()) + { + *m_log << "No text to copy.\n"; + + return; + } + + if (!wxTheClipboard->Open()) + { + *m_log << "Error opening the clipboard.\n"; + + return; + } + else + { + *m_log << "Successfully opened the clipboard.\n"; + } + + wxTextDataObject *data = new wxTextDataObject( text ); + + if (!wxTheClipboard->SetData( data )) + { + *m_log << "Error while copying to the clipboard.\n"; + } + else + { + *m_log << "Successfully copied data to the clipboard.\n"; + } + + wxTheClipboard->Close(); + + *m_log << "Closed the clipboard.\n"; +#else + wxLogError("Your version of wxWindows is compiled without clipboard support."); +#endif +} + +void MyPanel::OnMoveToEndOfText( wxCommandEvent &event ) +{ + m_multitext->SetInsertionPointEnd(); + m_multitext->SetFocus(); +} + +void MyPanel::OnMoveToEndOfEntry( wxCommandEvent &event ) +{ + m_text->SetInsertionPointEnd(); + m_text->SetFocus(); +} + +//---------------------------------------------------------------------- +// MyFrame +//---------------------------------------------------------------------- + +BEGIN_EVENT_TABLE(MyFrame, wxFrame) +EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit) +EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout) +#if wxUSE_TOOLTIPS +EVT_MENU(MINIMAL_SET_TOOLTIP_DELAY, MyFrame::OnSetTooltipDelay) +EVT_MENU(MINIMAL_ENABLE_TOOLTIPS, MyFrame::OnToggleTooltips) +#endif // wxUSE_TOOLTIPS +EVT_IDLE(MyFrame::OnIdle) +END_EVENT_TABLE() + +MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h) +: wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h), wxCAPTION ) +{ + CreateStatusBar(2); + + (void)new MyPanel( this, 10, 10, 300, 100 ); +} + +void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) ) +{ + Close(TRUE); +} + +void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) +{ + wxBeginBusyCursor(); + + wxMessageDialog dialog(this, "This is a text control sample. It demonstrates the many different text control\n" + "styles, the use of the clipboard, setting and handling tooltips and intercepting\n" + "key and char events.\n" + "\n" + "Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin", + "About Text Controls", wxOK ); + dialog.ShowModal(); + + wxEndBusyCursor(); +} + +#if wxUSE_TOOLTIPS +void MyFrame::OnSetTooltipDelay(wxCommandEvent& event) +{ + static long s_delay = 5000; + + wxString delay; + delay.Printf( _T("%ld"), s_delay); + + delay = wxGetTextFromUser("Enter delay (in milliseconds)", + "Set tooltip delay", + delay, + this); + if ( !delay ) + return; // cancelled + + wxSscanf(delay, _T("%ld"), &s_delay); + + wxToolTip::SetDelay(s_delay); + + wxLogStatus(this, _T("Tooltip delay set to %ld milliseconds"), s_delay); +} + +void MyFrame::OnToggleTooltips(wxCommandEvent& event) +{ + static bool s_enabled = TRUE; + + s_enabled = !s_enabled; + + wxToolTip::Enable(s_enabled); + + wxLogStatus(this, _T("Tooltips %sabled"), s_enabled ? _T("en") : _T("dis") ); +} +#endif // tooltips + +void MyFrame::OnIdle( wxIdleEvent& event ) +{ + // track the window which has the focus in the status bar + static wxWindow *s_windowFocus = (wxWindow *)NULL; + wxWindow *focus = wxWindow::FindFocus(); + if ( focus && (focus != s_windowFocus) ) + { + s_windowFocus = focus; + + wxString msg; + msg.Printf( +#ifdef __WXMSW__ + _T("Focus: wxWindow = %p, HWND = %08x"), +#else + _T("Focus: wxWindow = %p"), +#endif + s_windowFocus +#ifdef __WXMSW__ + , s_windowFocus->GetHWND() +#endif + ); + + SetStatusText(msg); + } + event.Skip(); +} diff --git a/samples/text/controls.def b/samples/text/controls.def new file mode 100644 index 0000000000..a6c3f21cf7 --- /dev/null +++ b/samples/text/controls.def @@ -0,0 +1,8 @@ +NAME Controls +DESCRIPTION 'wxWindows controls sample' +EXETYPE WINDOWS +STUB 'WINSTUB.EXE' +CODE PRELOAD MOVEABLE DISCARDABLE +DATA PRELOAD MOVEABLE MULTIPLE +HEAPSIZE 4048 +STACKSIZE 16000 diff --git a/samples/text/controls.rc b/samples/text/controls.rc new file mode 100644 index 0000000000..746abb4618 --- /dev/null +++ b/samples/text/controls.rc @@ -0,0 +1,10 @@ +mondrian ICON "mondrian.ico" + +choice BITMAP "icons/choice.bmp" +combo BITMAP "icons/combo.bmp" +gauge BITMAP "icons/gauge.bmp" +list BITMAP "icons/list.bmp" +radio BITMAP "icons/radio.bmp" +text BITMAP "icons/text.bmp" + +#include "wx/msw/wx.rc" diff --git a/samples/text/makefile.b32 b/samples/text/makefile.b32 new file mode 100644 index 0000000000..8accc1bcfd --- /dev/null +++ b/samples/text/makefile.b32 @@ -0,0 +1,16 @@ +# +# File: makefile.b32 +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: +# +# Makefile : Builds sample for 32-bit BC++ + +WXDIR = $(WXWIN) + +TARGET=controls +OBJECTS = $(TARGET).obj + +!include $(WXDIR)\src\makeprog.b32 + diff --git a/samples/text/makefile.bcc b/samples/text/makefile.bcc new file mode 100644 index 0000000000..400c6539d2 --- /dev/null +++ b/samples/text/makefile.bcc @@ -0,0 +1,19 @@ +# +# File: makefile.bcc +# Author: Julian Smart +# Created: 1998 +# Updated: +# +# Builds a BC++ 16-bit sample + +!if "$(WXWIN)" == "" +!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx +!endif + +WXDIR = $(WXWIN) + +TARGET=controls +OBJECTS=$(TARGET).obj + +!include $(WXDIR)\src\makeprog.bcc + diff --git a/samples/text/makefile.dos b/samples/text/makefile.dos new file mode 100644 index 0000000000..f1170311a5 --- /dev/null +++ b/samples/text/makefile.dos @@ -0,0 +1,17 @@ +# +# File: makefile.dos +# Author: Julian Smart +# Created: 1998 +# Updated: +# +# Makefile : Builds 16-bit sample, VC++ 1.5 +# Use FINAL=1 argument to nmake to build final version with no debugging +# info + +WXDIR = $(WXWIN) + +TARGET=controls +OBJECTS=$(TARGET).obj + +!include $(WXDIR)\src\makeprog.msc + diff --git a/samples/text/makefile.g95 b/samples/text/makefile.g95 new file mode 100644 index 0000000000..28a81c25cf --- /dev/null +++ b/samples/text/makefile.g95 @@ -0,0 +1,16 @@ +# +# File: makefile.g95 +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: (c) Julian Smart, 1999 +# +# Makefile for wxWindows sample (Cygwin/Mingw32). + +WXDIR = ../.. + +TARGET=controls +OBJECTS = $(TARGET).o + +include $(WXDIR)/src/makeprog.g95 + diff --git a/samples/text/makefile.unx b/samples/text/makefile.unx new file mode 100644 index 0000000000..8e5eeb17a1 --- /dev/null +++ b/samples/text/makefile.unx @@ -0,0 +1,17 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1998 +# Updated: +# Copyright: (c) 1998 Julian Smart +# +# "%W% %G%" +# +# Makefile for controls example (UNIX). + +PROGRAM=controls + +OBJECTS=$(PROGRAM).o + +include ../../src/makeprog.env + diff --git a/samples/text/makefile.vc b/samples/text/makefile.vc new file mode 100644 index 0000000000..c64996a7a4 --- /dev/null +++ b/samples/text/makefile.vc @@ -0,0 +1,18 @@ +# +# File: makefile.vc +# Author: Julian Smart +# Created: 1999 +# Updated: +# Copyright: (c) Julian Smart +# +# Makefile : Builds sample (VC++, WIN32) +# Use FINAL=1 argument to nmake to build final version with no debug info. + +# Set WXDIR for your system +WXDIR = $(WXWIN) + +PROGRAM=controls +OBJECTS = $(PROGRAM).obj + +!include $(WXDIR)\src\makeprog.vc + diff --git a/samples/text/makefile.wat b/samples/text/makefile.wat new file mode 100644 index 0000000000..db1d6cc5b6 --- /dev/null +++ b/samples/text/makefile.wat @@ -0,0 +1,15 @@ +# +# Makefile for WATCOM +# +# Created by Julian Smart, January 1999 +# +# + +WXDIR = $(%WXWIN) + +PROGRAM = controls +OBJECTS = $(PROGRAM).obj + +!include $(WXDIR)\src\makeprog.wat + + diff --git a/samples/text/mondrian.ico b/samples/text/mondrian.ico new file mode 100644 index 0000000000000000000000000000000000000000..2310c5d275a87af295d5ea8dc79ea417a5e74c53 GIT binary patch literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z 0) + gtk_tooltips_force_window( ss_tooltips ); + + GtkStyle *g_style = + gtk_style_copy( + gtk_widget_get_style( ss_tooltips->tip_window ) ); + + g_style->fg[GTK_STATE_NORMAL] = ss_fg; + g_style->bg[GTK_STATE_NORMAL] = ss_bg; + + gtk_widget_set_style( ss_tooltips->tip_window, g_style ); +#else gtk_tooltips_set_colors( ss_tooltips, &ss_bg, &ss_fg ); +#endif } m_window = win; diff --git a/src/gtk1/tooltip.cpp b/src/gtk1/tooltip.cpp index 789278b792..2e400fe04d 100644 --- a/src/gtk1/tooltip.cpp +++ b/src/gtk1/tooltip.cpp @@ -63,7 +63,20 @@ void wxToolTip::Apply( wxWindow *win ) ss_bg.blue = 50000; gdk_color_alloc( gtk_widget_get_default_colormap(), &ss_bg ); +#if (GTK_MINOR_VERSION > 0) + gtk_tooltips_force_window( ss_tooltips ); + + GtkStyle *g_style = + gtk_style_copy( + gtk_widget_get_style( ss_tooltips->tip_window ) ); + + g_style->fg[GTK_STATE_NORMAL] = ss_fg; + g_style->bg[GTK_STATE_NORMAL] = ss_bg; + + gtk_widget_set_style( ss_tooltips->tip_window, g_style ); +#else gtk_tooltips_set_colors( ss_tooltips, &ss_bg, &ss_fg ); +#endif } m_window = win; -- 2.45.2