1 /*
2 Copyright (C) 2012 wxLauncher Team
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19 #include "controls/TruncatableChoice.h"
20
TruncatableChoice(wxWindow * parent,wxWindowID id)21 TruncatableChoice::TruncatableChoice(wxWindow *parent, wxWindowID id)
22 : wxChoice(parent, id), maxLength(0) {
23 }
24
SetMaxLength(const int maxLength)25 void TruncatableChoice::SetMaxLength(const int maxLength) {
26 wxCHECK_RET(maxLength >= 0,
27 wxString::Format(_T("Invalid value %d for maxLength."), maxLength));
28
29 this->maxLength = maxLength;
30
31 if ((maxLength == 0) || (this->maxLength > GetEffectiveMinSize().GetWidth())) {
32 this->SetMinSize(this->GetEffectiveMinSize());
33 } else {
34 this->SetMinSize(wxSize(maxLength, -1));
35 }
36 }
37
DoGetBestSize() const38 wxSize TruncatableChoice::DoGetBestSize() const {
39 wxASSERT(this->maxLength >= 0);
40
41 wxSize bestChoiceSize(wxChoice::DoGetBestSize());
42
43 if ((this->maxLength == 0) || (this->maxLength > bestChoiceSize.GetWidth())) {
44 return bestChoiceSize;
45 } else {
46 return wxSize(wxSize(maxLength, bestChoiceSize.GetHeight()));
47 }
48 }
49