1. wxTextControl::SetFont() does something (good or bad - for you to judge)

2. tip dialog modified slightly to look a bit prettier under GTK
3. notebook test demonstrates the wxGTK radiobox-in-notebook-pages-constraints
bug


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-07-12 14:02:01 +00:00
parent a8b96c3dd8
commit bb69661b05
4 changed files with 177 additions and 104 deletions

View File

@@ -96,22 +96,26 @@ void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window)
panel2->SetBackgroundColour(wxColour("BLUE"));
wxString animals[] = { "Fox", "Hare", "Rabbit", "Sabre-toothed tiger", "T Rex" };
wxListBox *listbox = new wxListBox(panel2, -1, wxPoint(5, 5), wxSize(170, 80), 5, animals);
wxRadioBox *radiobox = new wxRadioBox(panel2, -1, "Choose one",
wxDefaultPosition, wxDefaultSize, 5, animals);
c = new wxLayoutConstraints;
c->left.SameAs(panel2, wxLeft, 4);
c->top.SameAs(panel2, wxTop, 4);
c->height.PercentOf(panel2, wxHeight, 50);
c->right.SameAs(panel2, wxRight, 4);
listbox->SetConstraints(c);
radiobox->SetConstraints(c);
wxTextCtrl *text = new wxTextCtrl(panel2, -1, "Some notes about the animals in this house", wxPoint(5, 100), wxSize(170, 100), wxTE_MULTILINE);
wxRadioBox *radiobox2 = new wxRadioBox(panel2, -1, "Choose one",
wxDefaultPosition, wxDefaultSize,
5, animals,
2, wxRA_SPECIFY_ROWS);
c = new wxLayoutConstraints;
c->left.SameAs(panel2, wxLeft, 4);
c->bottom.SameAs(panel2, wxBottom, 4);
c->top.Below(listbox, 4);
c->right.SameAs(panel2, wxRight, 4);
text->SetConstraints(c);
c->left.SameAs(radiobox, wxLeft);
c->height.AsIs();
c->top.Below(radiobox, 4);
c->right.SameAs(radiobox, wxRight);
radiobox2->SetConstraints(c);
notebook->AddPage(panel2, "Dog");
@@ -170,7 +174,7 @@ void MyDialog::Init(void)
SetAutoLayout(TRUE);
Layout();
this->Centre(wxBOTH);
Centre(wxBOTH);
}
BEGIN_EVENT_TABLE(MyFrame, wxFrame)

View File

@@ -403,6 +403,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
m_horizontal = new MyTextCtrl( this, -1, "Multiline text control with a horizontal scrollbar.",
wxPoint(10,170), wxSize(140,70), wxTE_MULTILINE | wxHSCROLL );
m_horizontal->SetFont(wxFont(18, wxSWISS, wxNORMAL, wxBOLD));
m_multitext = new MyTextCtrl( this, ID_TEXT, "Multi line.",
wxPoint(180,10), wxSize(240,70), wxTE_MULTILINE );
@@ -582,10 +583,10 @@ void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) )
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 );
"key and char events.\n"
"\n"
"Copyright (c) 1999, Robert Roebling, Julian Smart, Vadim Zeitlin",
"About Text Controls", wxOK );
dialog.ShowModal();
wxEndBusyCursor();
@@ -600,9 +601,9 @@ void MyFrame::OnSetTooltipDelay(wxCommandEvent& event)
delay.Printf( _T("%ld"), s_delay);
delay = wxGetTextFromUser("Enter delay (in milliseconds)",
"Set tooltip delay",
delay,
this);
"Set tooltip delay",
delay,
this);
if ( !delay )
return; // cancelled

View File

@@ -398,14 +398,29 @@ void wxTextCtrl::AppendText( const wxString &text )
if (m_windowStyle & wxTE_MULTILINE)
{
/* we'll insert at the last position */
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
bool hasSpecialAttributes = m_font.Ok() ||
m_foregroundColour.Ok() ||
m_backgroundColour.Ok();
if ( hasSpecialAttributes )
{
gtk_text_insert( GTK_TEXT(m_text),
m_font.GetInternalFont(),
m_foregroundColour.GetColor(),
m_backgroundColour.GetColor(),
text, text.length());
}
else
{
/* we'll insert at the last position */
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
#if wxUSE_UNICODE
wxWX2MBbuf buf = text.mbc_str();
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
wxWX2MBbuf buf = text.mbc_str();
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
#else
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
#endif
}
/* bring editable's cursor uptodate. bug in GTK. */
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
@@ -879,8 +894,8 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
if (!(GTK_EDITABLE(m_text)->has_selection))
{
if (from) *from = 0;
if (to) *to = 0;
return;
if (to) *to = 0;
return;
}
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
@@ -1005,12 +1020,31 @@ bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
return (window == GTK_ENTRY(m_text)->text_area);
}
bool wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
// the font will change for subsequent text insertiongs
bool wxTextCtrl::SetFont( const wxFont &font )
{
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
// doesn't work
return FALSE;
if ( !wxWindowBase::SetFont(font) )
{
// font didn't change, nothing to do
return FALSE;
}
if ( m_windowStyle & wxTE_MULTILINE )
{
// for compatibility with other ports: the font is a global controls
// characteristic, so change the font globally
wxString value = GetValue();
if ( !value.IsEmpty() )
{
Clear();
AppendText(value);
}
}
return TRUE;
}
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )

View File

@@ -398,14 +398,29 @@ void wxTextCtrl::AppendText( const wxString &text )
if (m_windowStyle & wxTE_MULTILINE)
{
/* we'll insert at the last position */
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
bool hasSpecialAttributes = m_font.Ok() ||
m_foregroundColour.Ok() ||
m_backgroundColour.Ok();
if ( hasSpecialAttributes )
{
gtk_text_insert( GTK_TEXT(m_text),
m_font.GetInternalFont(),
m_foregroundColour.GetColor(),
m_backgroundColour.GetColor(),
text, text.length());
}
else
{
/* we'll insert at the last position */
gint len = gtk_text_get_length( GTK_TEXT(m_text) );
#if wxUSE_UNICODE
wxWX2MBbuf buf = text.mbc_str();
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
wxWX2MBbuf buf = text.mbc_str();
gtk_editable_insert_text( GTK_EDITABLE(m_text), buf, strlen(buf), &len );
#else
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len );
#endif
}
/* bring editable's cursor uptodate. bug in GTK. */
GTK_EDITABLE(m_text)->current_pos = gtk_text_get_point( GTK_TEXT(m_text) );
@@ -879,8 +894,8 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
if (!(GTK_EDITABLE(m_text)->has_selection))
{
if (from) *from = 0;
if (to) *to = 0;
return;
if (to) *to = 0;
return;
}
if (from) *from = (long) GTK_EDITABLE(m_text)->selection_start_pos;
@@ -1005,12 +1020,31 @@ bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window )
return (window == GTK_ENTRY(m_text)->text_area);
}
bool wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) )
// the font will change for subsequent text insertiongs
bool wxTextCtrl::SetFont( const wxFont &font )
{
wxCHECK_MSG( m_text != NULL, FALSE, _T("invalid text ctrl") );
// doesn't work
return FALSE;
if ( !wxWindowBase::SetFont(font) )
{
// font didn't change, nothing to do
return FALSE;
}
if ( m_windowStyle & wxTE_MULTILINE )
{
// for compatibility with other ports: the font is a global controls
// characteristic, so change the font globally
wxString value = GetValue();
if ( !value.IsEmpty() )
{
Clear();
AppendText(value);
}
}
return TRUE;
}
bool wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) )