]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
bug in wxNotebook::OnSize() corrected
[wxWidgets.git] / src / gtk / textctrl.cpp
index 890393380a23f194868b134fee872e5b80737b38..f1c4883d4494c2717ec539bf883dfa20b729f552 100644 (file)
 
 IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl,wxControl)
 
+void gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
+{ 
+  win->m_modified = TRUE;
+};
+
 
 BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
 //  EVT_CHAR(wxTextCtrl::OnChar)
@@ -28,12 +33,14 @@ END_EVENT_TABLE()
 
 wxTextCtrl::wxTextCtrl(void) : streambuf()
 {
+  m_modified = FALSE;
 };
 
 wxTextCtrl::wxTextCtrl( wxWindow *parent, const wxWindowID id, const wxString &value, 
       const wxPoint &pos, const wxSize &size, 
       const int style, const wxString &name ) : streambuf()
 {
+  m_modified = FALSE;
   Create( parent, id, value, pos, size, style, name );
 };
 
@@ -50,12 +57,6 @@ bool wxTextCtrl::Create( wxWindow *parent, const wxWindowID id, const wxString &
   else
     m_widget = gtk_entry_new();
     
-  if (!value.IsNull())
-  {
-    gint tmp = 0;
-    gtk_editable_insert_text( GTK_EDITABLE(m_widget), value, value.Length(), &tmp );
-  };
-  
   wxSize newSize = size;
   if (newSize.x == -1) newSize.x = 80;
   if (newSize.y == -1) newSize.y = 26;
@@ -63,6 +64,25 @@ bool wxTextCtrl::Create( wxWindow *parent, const wxWindowID id, const wxString &
   
   PostCreation();
   
+  if (!value.IsNull())
+  {
+    gint tmp = 0;
+    
+    // Don't know why this is so
+    if (style & wxTE_MULTILINE)
+      gtk_editable_insert_text( GTK_EDITABLE(m_widget), value, value.Length()+1, &tmp );
+    else
+      gtk_editable_insert_text( GTK_EDITABLE(m_widget), value, value.Length(), &tmp );
+  };
+  
+  if (style & wxREADONLY)
+  {
+  }
+  else
+  {
+    if (style & wxTE_MULTILINE) gtk_text_set_editable( GTK_TEXT(m_widget), 1 );
+  };
+  
   Show( TRUE );
     
   return TRUE;
@@ -103,6 +123,7 @@ void wxTextCtrl::SetValue( const wxString &value )
 void wxTextCtrl::WriteText( const wxString &text )
 {
   if (text.IsNull()) return;
+  
   if (m_windowStyle & wxTE_MULTILINE)
   {
     gint len = gtk_text_get_length( GTK_TEXT(m_widget) );
@@ -114,27 +135,35 @@ void wxTextCtrl::WriteText( const wxString &text )
   };
 };
 
-/*
-wxString wxTextCtrl::GetLineText( const long lineNo ) const
+bool wxTextCtrl::LoadFile( const wxString &WXUNUSED(file) )
 {
+  wxFAIL_MSG("wxTextCtrl::LoadFile not implemented");
+
+  return FALSE;
 };
 
-bool wxTextCtrl::LoadFile( const wxString &file )
+bool wxTextCtrl::SaveFile( const wxString &WXUNUSED(file) )
 {
+  wxFAIL_MSG("wxTextCtrl::SaveFile not implemented");
+
+  return FALSE;
 };
 
-bool wxTextCtrl::SaveFile( const wxString &file )
+bool wxTextCtrl::IsModified(void)
 {
+  return m_modified;
 };
 
 void wxTextCtrl::DiscardEdits(void)
 {
 };
 
-bool wxTextCtrl::IsModified(void)
+/*
+wxString wxTextCtrl::GetLineText( const long lineNo ) const
 {
 };
 
+
 void wxTextCtrl::OnDropFiles( wxDropFilesEvent &event )
 {
 };
@@ -186,6 +215,7 @@ void wxTextCtrl::SetSelection( const long from, const long to )
 
 void wxTextCtrl::ShowPosition( const long WXUNUSED(pos) )
 {
+  wxFAIL_MSG("wxTextCtrl::ShowPosition not implemented");
 };
 
 long wxTextCtrl::GetInsertionPoint(void) const