#include "wx/statbmp.h"
#include "wx/bitmap.h"
#include "wx/utils.h" // for wxStripMenuCodes()
+ #include "wx/settings.h"
#endif
const char wxControlNameStr[] = "control";
// the character following MNEMONIC_PREFIX is the accelerator for this
// control unless it is MNEMONIC_PREFIX too - this allows to insert
// literal MNEMONIC_PREFIX chars into the label
- static const wxChar MNEMONIC_PREFIX = _T('&');
+ static const wxChar MNEMONIC_PREFIX = wxT('&');
if ( labelOnly )
{
}
else
{
- wxFAIL_MSG(_T("duplicate accel char in control label"));
+ wxFAIL_MSG(wxT("duplicate accel char in control label"));
}
}
}
return wxBORDER_THEME;
}
+/* static */ wxVisualAttributes
+wxControlBase::GetCompositeControlsDefaultAttributes(wxWindowVariant WXUNUSED(variant))
+{
+ wxVisualAttributes attrs;
+ attrs.font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+ attrs.colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
+ attrs.colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
+
+ return attrs;
+}
+
// ----------------------------------------------------------------------------
// wxControlBase - ellipsization code
// ----------------------------------------------------------------------------
wxASSERT_MSG(!curLine.Contains('\n'),
"Use Ellipsize() instead!");
+ wxASSERT_MSG( mode != wxELLIPSIZE_NONE, "shouldn't be called at all then" );
+
// NOTE: this function assumes that any mnemonic/tab character has already
// been handled if it was necessary to handle them (see Ellipsize())
int excessPixels = totalWidth - maxFinalWidth +
replacementWidth +
marginWidth; // security margin (NEEDED!)
+ wxASSERT(excessPixels>0);
// remove characters in excess
size_t initialChar, // index of first char to erase
switch (mode)
{
- case wxELLIPSIZE_START:
- initialChar = 0;
- for (nChars=0;
- nChars < len && charOffsets[nChars] < excessPixels;
- nChars++)
- ;
- break;
-
- case wxELLIPSIZE_MIDDLE:
- {
- // the start & end of the removed span of chars
- initialChar = len/2;
- size_t endChar = len/2;
+ case wxELLIPSIZE_START:
+ initialChar = 0;
+ for ( nChars=0;
+ nChars < len && charOffsets[nChars] < excessPixels;
+ nChars++ )
+ ;
+ break;
- int removed = 0;
- for ( ; removed < excessPixels; )
+ case wxELLIPSIZE_MIDDLE:
{
- if (initialChar > 0)
- {
- // width of the initialChar-th character
- int width = charOffsets[initialChar] -
- charOffsets[initialChar-1];
-
- // remove the initialChar-th character
- removed += width;
- initialChar--;
- }
+ // the start & end of the removed span of chars
+ initialChar = len/2;
+ size_t endChar = len/2;
- if (endChar < len - 1 &&
- removed < excessPixels)
+ int removed = 0;
+ for ( ; removed < excessPixels; )
{
- // width of the (endChar+1)-th character
- int width = charOffsets[endChar+1] -
- charOffsets[endChar];
-
- // remove the endChar-th character
- removed += width;
- endChar++;
+ if (initialChar > 0)
+ {
+ // width of the initialChar-th character
+ int width = charOffsets[initialChar] -
+ charOffsets[initialChar-1];
+
+ // remove the initialChar-th character
+ removed += width;
+ initialChar--;
+ }
+
+ if (endChar < len - 1 &&
+ removed < excessPixels)
+ {
+ // width of the (endChar+1)-th character
+ int width = charOffsets[endChar+1] -
+ charOffsets[endChar];
+
+ // remove the endChar-th character
+ removed += width;
+ endChar++;
+ }
+
+ if (initialChar == 0 && endChar == len-1)
+ {
+ nChars = len+1;
+ break;
+ }
}
- if (initialChar == 0 && endChar == len-1)
- {
- nChars = len+1;
- break;
- }
+ initialChar++;
+ nChars = endChar - initialChar + 1;
}
+ break;
- initialChar++;
- nChars = endChar - initialChar + 1;
- }
- break;
-
- case wxELLIPSIZE_END:
- {
- wxASSERT(len > 0);
+ case wxELLIPSIZE_END:
+ {
+ wxASSERT(len > 0);
- int maxWidth = totalWidth - excessPixels;
- for (initialChar=0;
- initialChar < len &&
- charOffsets[initialChar] < maxWidth;
- initialChar++)
- ;
+ int maxWidth = totalWidth - excessPixels;
+ for ( initialChar = 0;
+ initialChar < len && charOffsets[initialChar] < maxWidth;
+ initialChar++ )
+ ;
- if (initialChar == 0)
- {
- nChars = len;
- }
- else
- {
- //initialChar--; // go back one character
- nChars = len - initialChar;
+ if (initialChar == 0)
+ {
+ nChars = len;
+ }
+ else
+ {
+ //initialChar--; // go back one character
+ nChars = len - initialChar;
+ }
}
- }
- break;
+ break;
- default:
- wxFAIL_MSG("invalid ellipsize mode");
+ case wxELLIPSIZE_NONE:
+ default:
+ wxFAIL_MSG("invalid ellipsize mode");
+ return curLine;
}
wxString ret(curLine);
// if there is space for the replacement dots, add them
if (maxFinalWidth > replacementWidth)
- ret.append(wxELLIPSE_REPLACEMENT);//.insert(initialChar, wxELLIPSE_REPLACEMENT);
+ ret.insert(initialChar, wxELLIPSE_REPLACEMENT);
}
// if everything was ok, we should have shortened this line
}
}
// we need to remove mnemonics from the label for correct calculations
- else if ( *pc == wxS('&') && (flags & wxELLIPSIZE_PROCESS_MNEMONICS) != 0 )
+ else if ( *pc == wxS('&') && (flags & wxELLIPSIZE_FLAGS_PROCESS_MNEMONICS) )
{
// pc+1 is safe: at worst we'll be at end()
wxString::const_iterator next = pc + 1;
//else: remove this ampersand
}
// we need also to expand tabs to properly calc their size
- else if ( *pc == wxS('\t') && (flags & wxELLIPSIZE_EXPAND_TAB) != 0 )
+ else if ( *pc == wxS('\t') && (flags & wxELLIPSIZE_FLAGS_EXPAND_TABS) )
{
// Windows natively expands the TABs to 6 spaces. Do the same:
curLine += wxS(" ");