-bool wxTextCtrl::CanCut() const
-{
- // Can cut if there's a selection
- long from, to;
- GetSelection(& from, & to);
- return (from != to) && (IsEditable());
-}
-
-bool wxTextCtrl::CanPaste() const
-{
- return IsEditable() ;
-}
-
-// Undo/redo
-void wxTextCtrl::Undo()
-{
- // Not possible in Motif
-}
-
-void wxTextCtrl::Redo()
-{
- // Not possible in Motif
-}
-
-bool wxTextCtrl::CanUndo() const
-{
- // No Undo in Motif
- return FALSE;
-}
-
-bool wxTextCtrl::CanRedo() const
-{
- // No Redo in Motif
- return FALSE;
-}
-
-// If the return values from and to are the same, there is no
-// selection.
-void wxTextCtrl::GetSelection(long* from, long* to) const
-{
- XmTextPosition left, right;
-
- XmTextGetSelectionPosition((Widget) m_mainWidget, & left, & right);
-
- *from = (long) left;
- *to = (long) right;
-}
-
-bool wxTextCtrl::IsEditable() const
-{
- return (XmTextGetEditable((Widget) m_mainWidget) != 0);
-}
-
-void wxTextCtrl::SetEditable(bool editable)
-{
- XmTextSetEditable((Widget) m_mainWidget, (Boolean) editable);
-}
-
-void wxTextCtrl::SetInsertionPoint(long pos)
-{
- XmTextSetInsertionPosition ((Widget) m_mainWidget, (XmTextPosition) pos);
-}
-
-void wxTextCtrl::SetInsertionPointEnd()
-{
- long pos = GetLastPosition();
- SetInsertionPoint(pos);
-}
-
-long wxTextCtrl::GetInsertionPoint() const
-{
- return (long) XmTextGetInsertionPosition ((Widget) m_mainWidget);
-}
-
-long wxTextCtrl::GetLastPosition() const
-{
- return (long) XmTextGetLastPosition ((Widget) m_mainWidget);
-}
-
-void wxTextCtrl::Replace(long from, long to, const wxString& value)
-{
- XmTextReplace ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to,
- wxConstCast(value.c_str(), char));
-}
-
-void wxTextCtrl::Remove(long from, long to)
-{
- XmTextSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to,
- (Time) 0);
- XmTextRemove ((Widget) m_mainWidget);
-}
-
-void wxTextCtrl::SetSelection(long from, long to)
-{
- if( to == -1 )
- to = GetLastPosition();
-
- XmTextSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to,
- (Time) 0);
-}
-
-bool wxTextCtrl::LoadFile(const wxString& file)
-{
- if (!wxFileExists(file))
- return FALSE;
-
- m_fileName = file;
-
- Clear();
-
- Widget textWidget = (Widget) m_mainWidget;
- FILE *fp = 0;
-
- struct stat statb;
- if ((stat (wxConstCast(file.c_str(), char), &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG ||
- !(fp = fopen (wxConstCast(file.c_str(), char), "r")))
- {
- return FALSE;
- }
- else
- {
- long len = statb.st_size;
- char *text;
- if (!(text = XtMalloc ((unsigned) (len + 1))))
- {
- fclose (fp);
- return FALSE;
- }
- if (fread (text, sizeof (char), len, fp) != (size_t) len)
- {
- }
- fclose (fp);
-
- text[len] = 0;
- XmTextSetString (textWidget, text);
- // m_textPosition = len;
- XtFree (text);
- m_modified = FALSE;
- return TRUE;
- }
-}
-
-// If file is null, try saved file name first
-// Returns TRUE if succeeds.
-bool wxTextCtrl::SaveFile(const wxString& file)
-{
- wxString theFile(file);
- if (theFile == "")
- theFile = m_fileName;
- if (theFile == "")
- return FALSE;
- m_fileName = theFile;
-
- Widget textWidget = (Widget) m_mainWidget;
- FILE *fp;
-
- if (!(fp = fopen (wxConstCast(theFile.c_str(), char), "w")))
- {
- return FALSE;
- }
- else
- {
- char *text = XmTextGetString (textWidget);
- long len = XmTextGetLastPosition (textWidget);
-
- if (fwrite (text, sizeof (char), len, fp) != (size_t) len)
- {
- // Did not write whole file
- }
- // Make sure newline terminates the file
- if (text[len - 1] != '\n')
- fputc ('\n', fp);
-
- fclose (fp);
- XtFree (text);
- m_modified = FALSE;
- return TRUE;
- }
-}
-
-void wxTextCtrl::WriteText(const wxString& text)
-{
- long textPosition = GetInsertionPoint() + strlen (text);
- XmTextInsert ((Widget) m_mainWidget, GetInsertionPoint(),
- wxConstCast(text.c_str(), char));
- XtVaSetValues ((Widget) m_mainWidget, XmNcursorPosition, textPosition, NULL);
- SetInsertionPoint(textPosition);
- XmTextShowPosition ((Widget) m_mainWidget, textPosition);
- m_modified = TRUE;
-}
-
-void wxTextCtrl::AppendText(const wxString& text)