1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/os2/tabctrl.cpp
4 // Author: David Webster
8 // Copyright: (c) David Webster
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
27 //#include "wx/msw/dib.h"
28 #include "wx/os2/tabctrl.h"
29 #include "wx/os2/private.h"
30 #include "wx/imaglist.h"
32 IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl)
34 BEGIN_EVENT_TABLE(wxTabCtrl, wxControl)
37 wxTabCtrl::wxTabCtrl()
42 bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
43 long style, const wxString& name)
47 m_backgroundColour = *wxWHITE; // TODO: wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)),
48 // GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE)));
49 m_foregroundColour = *wxBLACK ;
58 m_windowStyle = style;
60 SetFont(* (wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL)));
73 m_windowId = (id < 0 ? NewControlId() : id);
75 // Create the toolbar control.
77 // TODO: create tab control
79 m_hWnd = (WXHWND) hWndTabCtrl;
80 if (parent) parent->AddChild(this);
82 SubclassWin((WXHWND) hWndTabCtrl);
87 wxTabCtrl::~wxTabCtrl()
92 bool wxTabCtrl::OS2OnNotify(int idCtrl,
93 WXLPARAM WXUNUSED(lParam),
94 WXLPARAM *WXUNUSED(result) )
96 wxTabEvent event(wxEVT_NULL, m_windowId);
97 wxEventType eventType = wxEVT_NULL;
100 NMHDR* hdr1 = (NMHDR*) lParam;
101 switch ( hdr1->code )
104 eventType = wxEVT_COMMAND_TAB_SEL_CHANGED;
107 case TCN_SELCHANGING:
108 eventType = wxEVT_COMMAND_TAB_SEL_CHANGING;
114 // if (tool->m_shortHelpString != "")
115 // ttText->lpszText = (char *) (const char *)tool->m_shortHelpString;
119 return wxControl::OS2OnNotify(idCtrl, lParam, result);
122 event.SetEventObject( this );
123 event.SetEventType(eventType);
124 event.SetInt(idCtrl) ;
126 return ProcessEvent(event);
129 // Responds to colour changes, and passes event on to children.
130 void wxTabCtrl::OnSysColourChanged(wxSysColourChangedEvent& event)
134 m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)),
135 GetGValue(GetSysColor(COLOR_BTNFACE)),
136 GetBValue(GetSysColor(COLOR_BTNFACE)));
140 // Propagate the event to the non-top-level children
141 wxWindow::OnSysColourChanged(event);
146 bool wxTabCtrl::DeleteAllItems()
153 bool wxTabCtrl::DeleteItem(int WXUNUSED(item))
160 int wxTabCtrl::GetSelection() const
166 // Get the tab with the current keyboard focus
167 int wxTabCtrl::GetCurFocus() const
173 // Get the associated image list
174 wxImageList* wxTabCtrl::GetImageList() const
179 // Get the number of items
180 int wxTabCtrl::GetItemCount() const
186 // Get the rect corresponding to the tab
187 bool wxTabCtrl::GetItemRect(int WXUNUSED(item),
188 wxRect& WXUNUSED(wxrect)) const
194 // Get the number of rows
195 int wxTabCtrl::GetRowCount() const
202 wxString wxTabCtrl::GetItemText(int WXUNUSED(item)) const
205 return wxEmptyString;
208 // Get the item image
209 int wxTabCtrl::GetItemImage(int WXUNUSED(item)) const
216 void* wxTabCtrl::GetItemData(int WXUNUSED(item)) const
223 int wxTabCtrl::HitTest(const wxPoint& WXUNUSED(pt), long& WXUNUSED(flags))
230 bool wxTabCtrl::InsertItem(int WXUNUSED(item),
231 const wxString& WXUNUSED(text),
232 int WXUNUSED(imageId),
233 void* WXUNUSED(data))
240 int wxTabCtrl::SetSelection(int WXUNUSED(item))
246 // Set the image list
247 void wxTabCtrl::SetImageList(wxImageList* WXUNUSED(imageList))
252 // Set the text for an item
253 bool wxTabCtrl::SetItemText(int WXUNUSED(item), const wxString& WXUNUSED(text))
259 // Set the image for an item
260 bool wxTabCtrl::SetItemImage(int WXUNUSED(item), int WXUNUSED(image))
266 // Set the data for an item
267 bool wxTabCtrl::SetItemData(int WXUNUSED(item), void* WXUNUSED(data))
273 // Set the size for a fixed-width tab control
274 void wxTabCtrl::SetItemSize(const wxSize& WXUNUSED(size))
279 // Set the padding between tabs
280 void wxTabCtrl::SetPadding(const wxSize& WXUNUSED(padding))
286 // These are the default colors used to map the bitmap colors
287 // to the current system colors
289 #define BGR_BUTTONTEXT (RGB(000,000,000)) // black
290 #define BGR_BUTTONSHADOW (RGB(128,128,128)) // dark grey
291 #define BGR_BUTTONFACE (RGB(192,192,192)) // bright grey
292 #define BGR_BUTTONHILIGHT (RGB(255,255,255)) // white
293 #define BGR_BACKGROUNDSEL (RGB(255,000,000)) // blue
294 #define BGR_BACKGROUND (RGB(255,000,255)) // magenta
296 void wxMapBitmap(HBITMAP hBitmap, int width, int height)
298 COLORMAP ColorMap[] = {
299 {BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black
300 {BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey
301 {BGR_BUTTONFACE, COLOR_BTNFACE}, // bright grey
302 {BGR_BUTTONHILIGHT, COLOR_BTNHIGHLIGHT},// white
303 {BGR_BACKGROUNDSEL, COLOR_HIGHLIGHT}, // blue
304 {BGR_BACKGROUND, COLOR_WINDOW} // magenta
307 int NUM_MAPS = (sizeof(ColorMap)/sizeof(COLORMAP));
309 for ( n = 0; n < NUM_MAPS; n++)
311 ColorMap[n].to = ::GetSysColor(ColorMap[n].to);
315 HDC hdcMem = CreateCompatibleDC(NULL);
319 hbmOld = SelectObject(hdcMem, hBitmap);
322 for ( i = 0; i < width; i++)
324 for ( j = 0; j < height; j++)
326 COLORREF pixel = ::GetPixel(hdcMem, i, j);
328 BYTE red = GetRValue(pixel);
329 BYTE green = GetGValue(pixel);
330 BYTE blue = GetBValue(pixel);
333 for ( k = 0; k < NUM_MAPS; k ++)
335 if ( ColorMap[k].from == pixel )
337 /* COLORREF actualPixel = */ ::SetPixel(hdcMem, i, j, ColorMap[k].to);
345 SelectObject(hdcMem, hbmOld);
346 DeleteObject(hdcMem);
353 IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent)
355 wxTabEvent::wxTabEvent(wxEventType commandType, int id)
356 :wxCommandEvent(commandType, id)
360 #endif // wxUSE_TAB_DIALOG