A few $Id$ references remained after commit
3f66f6a5b3 or appeared in newly added files.
Remove the lines containing svn keywords except when it concerns
third-party files. In that case keep the line as-is or collapse it to the
keyword if it had been expanded to contain wx commit information (only
occurs with src/zlib/ChangeLog).
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/osx/private/addremovectrl.h
 | |
| // Purpose:     OS X specific wxAddRemoveImpl implementation
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2015-02-05
 | |
| // Copyright:   (c) 2015 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
 | |
| #define _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
 | |
| 
 | |
| #include "wx/artprov.h"
 | |
| #include "wx/bmpbuttn.h"
 | |
| #include "wx/panel.h"
 | |
| 
 | |
| #include "wx/osx/private.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxAddRemoveImpl itself
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class wxAddRemoveImpl : public wxAddRemoveImplWithButtons
 | |
| {
 | |
| public:
 | |
|     wxAddRemoveImpl(wxAddRemoveAdaptor* adaptor,
 | |
|                     wxAddRemoveCtrl* parent,
 | |
|                     wxWindow* ctrlItems)
 | |
|         : wxAddRemoveImplWithButtons(adaptor, parent, ctrlItems),
 | |
|           m_ctrlItems(ctrlItems)
 | |
|     {
 | |
|         // This size is hard coded for now as this is what the system dialogs
 | |
|         // themselves (e.g. the buttons under the lists in the "Users" or
 | |
|         // "Network" panes of the "System Preferences") use under OS X 10.8.
 | |
|         const wxSize sizeBtn(25, 23);
 | |
| 
 | |
|         m_btnAdd = new wxBitmapButton(parent, wxID_ADD,
 | |
|                                       wxArtProvider::GetBitmap("NSAddTemplate"),
 | |
|                                       wxDefaultPosition,
 | |
|                                       sizeBtn,
 | |
|                                       wxBORDER_SIMPLE);
 | |
| 
 | |
|         m_btnRemove = new wxBitmapButton(parent, wxID_REMOVE,
 | |
|                                       wxArtProvider::GetBitmap("NSRemoveTemplate"),
 | |
|                                       wxDefaultPosition,
 | |
|                                       sizeBtn,
 | |
|                                       wxBORDER_SIMPLE);
 | |
| 
 | |
|         // Under OS X the space to the right of the buttons is actually
 | |
|         // occupied by an inactive gradient button, so create one.
 | |
|         m_btnPlaceholder = new wxButton(parent, wxID_ANY, "",
 | |
|                                         wxDefaultPosition,
 | |
|                                         sizeBtn,
 | |
|                                         wxBORDER_SIMPLE);
 | |
|         m_btnPlaceholder->Disable();
 | |
| 
 | |
| 
 | |
|         // We need to lay out our windows manually under OS X as it is the only
 | |
|         // way to achieve the required, for the correct look, overlap between
 | |
|         // their borders -- sizers would never allow this.
 | |
|         parent->Bind(wxEVT_SIZE, &wxAddRemoveImpl::OnSize, this);
 | |
| 
 | |
|         // We also have to ensure that the window with the items doesn't have
 | |
|         // any border as it wouldn't look correctly if it did.
 | |
|         long style = ctrlItems->GetWindowStyle();
 | |
|         style &= ~wxBORDER_MASK;
 | |
|         style |= wxBORDER_SIMPLE;
 | |
|         ctrlItems->SetWindowStyle(style);
 | |
| 
 | |
| 
 | |
|         SetUpEvents();
 | |
|     }
 | |
| 
 | |
|     // As we don't use sizers, we also need to compute our best size ourselves.
 | |
|     virtual wxSize GetBestClientSize() const wxOVERRIDE
 | |
|     {
 | |
|         wxSize size = m_ctrlItems->GetBestSize();
 | |
| 
 | |
|         const wxSize sizeBtn = m_btnAdd->GetSize();
 | |
| 
 | |
|         size.y += sizeBtn.y;
 | |
|         size.IncTo(wxSize(3*sizeBtn.x, -1));
 | |
| 
 | |
|         return size;
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     void OnSize(wxSizeEvent& event)
 | |
|     {
 | |
|         const wxSize size = event.GetSize();
 | |
| 
 | |
|         const wxSize sizeBtn = m_btnAdd->GetSize();
 | |
| 
 | |
|         const int yBtn = size.y - sizeBtn.y;
 | |
| 
 | |
|         // There is a vertical overlap which hides the items control bottom
 | |
|         // border.
 | |
|         m_ctrlItems->SetSize(0, 0, size.x, yBtn + 2);
 | |
| 
 | |
|         // And there is also a horizontal 1px overlap between the buttons
 | |
|         // themselves, so subtract 1 from the next button position.
 | |
|         int x = 0;
 | |
|         m_btnAdd->Move(x, yBtn);
 | |
|         x += sizeBtn.x - 1;
 | |
| 
 | |
|         m_btnRemove->Move(x, yBtn);
 | |
|         x += sizeBtn.x - 1;
 | |
| 
 | |
|         // The last one needs to be resized to take up all the remaining space.
 | |
|         m_btnPlaceholder->SetSize(x, yBtn, size.x - x, sizeBtn.y);
 | |
|     }
 | |
| 
 | |
|     wxWindow* m_ctrlItems;
 | |
|     wxButton* /* const */ m_btnPlaceholder;
 | |
| };
 | |
| 
 | |
| #endif // _WX_OSX_PRIVATE_ADDREMOVECTRL_H_
 |