From 651b6c612db4e809c506973996f2580c4158ac3a Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sat, 27 Sep 2003 11:29:26 +0000 Subject: merge dasher which has been introduced in BRANCH first (wtf?) into HEAD --- (limited to 'inputmethods/dasher/DashEdit.h') diff --git a/inputmethods/dasher/DashEdit.h b/inputmethods/dasher/DashEdit.h new file mode 100644 index 0000000..dc14d15 --- a/dev/null +++ b/inputmethods/dasher/DashEdit.h @@ -0,0 +1,163 @@ +//! Class definition for an edit box +// DashEdit.h +// +///////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2002 Iain Murray +// +///////////////////////////////////////////////////////////////////////////// + +/* +An abstract DashEditbox class is described here. +An implementation will handle interaction between Dasher and an actual Edit control. +e.g. - output characters to the edit control + - tapping on the edit box updates the Dasher display +*/ + +#ifndef __DashEdit_h__ +#define __DashEdit_h__ + +#include "DasherWidgetInterface.h" + +namespace Dasher {class CDashEditbox;} +class Dasher::CDashEditbox +{ +public: + CDashEditbox() : m_iFlushed(0), m_DasherInterface(0), m_dirty(false) {} + + //! Provide the Editbox with a widget interface + virtual void SetInterface(CDasherWidgetInterface* DasherInterface) {m_DasherInterface = DasherInterface;} + + //! Write some buffered output to a file + virtual void write_to_file()=0; + + //! Set the number of flushed characters + // + //! Set the number of flushed characters to an arbitrary number. + //! Usually used to reset it to 0 after unflushing + void set_flushed(int i) {m_iFlushed=i;} + + //! Provide context from the editbox for the core + // + //! Provide the context at the current position within the editbox to + //! the core. Set str to up to max characters before + //! the cursor position within the editbox. + virtual void get_new_context(std::string& str, int max)=0; + + //! Delete flushed text from the editbox + virtual inline void unflush()=0; + + //! Enter a the character Symbol into the text box + virtual void output(symbol Symbol)=0; + + //! Delete the previous symbol from the text box + virtual void deletetext()=0; + + //! Enter a character into the text box and remember that it is flushed + // + //! Output the character and increment m_iFlushed. When unflush is + //! called, remove the previous m_iFlushed characters + virtual void flush(symbol Symbol)=0; + + // File I/O (optional) + + //! If Value is true, timestamp all new files (optional) + // + //! If switched on, all new files should be timestamped, either in the + //! filename or in file metadata + virtual void TimeStampNewFiles(bool Value) {} + + //! Return true if any text has been modified since the last save (optional) + bool IsDirty() {return m_dirty;} + + //! Generate a new file (optional) + // + //! New file - provide a file save dialogue and return the filename in + //! filename, or provide a blank filename and present a file + //! save dialogue when Save() is called + virtual void New(const std::string& filename) {}; // filename can be "", but you cannot call Save() without having set a filename. + + //! Open a file (optional) + // + //! Provide a file open dialogue and set filename to the + //! filename. Return true if a file is chosen and opened successfully, + //! false otherwise + virtual bool Open(const std::string& filename) {return false;}; + + //! Open a file and append to it (optional) + // + //! Provide a file open dialogue and set filename to the + //! filename. The file will then have any new text appended to it. + //! Return true if a file is chosen and opened successfully, false + //! otherwise + virtual bool OpenAppendMode(const std::string& filename) {return false;}; + //! Save a file as a provided filename (optional) + // + //! Provide a file save dialogue and set filename to the + //! filename. Return true if a file is chosen and saved successfully, + //! false otherwise + virtual bool SaveAs(const std::string& filename) {return false;}; + + //! Save the current file (optional) + // + //! Save file to the current filename. If there is no current filename, + //! or if saving fails, return false + virtual bool Save() {return false;}; // returns false if there is no filename set, or if saving fails + + // Clipboard (optional) + //! Cut selected text (optional) + // + //! Copy the selected text to the clipboard and remove it from the + //! editbox + virtual void Cut() {}; + + //! Copy selected text (optional) + // + //! Copy the selected text to the clipboard + virtual void Copy() {}; + + //! Copy all text (optional) + // + //! Copy all text in the editbox to the clipboard + virtual void CopyAll() {}; + + //! Paste text from clipboard (optional) + // + //! Paste text from the clipboard into the editbox at the current + //! position + virtual void Paste() {}; + + //! Select all text in the editbox (optional) + virtual void SelectAll() {}; + + //! Clear all text from the editbox (REQUIRED) + virtual void Clear()=0; // Must at least be able to clear edit box + + //! Set the file encoding + // + //! Set the file encoding to the provided encoding Encoding. + //! The editbox is responsible for saving the file in the encoding + //! desired by the user. As Dasher is internally UTF8, it may well be + //! necessary to save in an alternative format based on locale and OS. + virtual void SetEncoding(Opts::FileEncodingFormats Encoding)=0; + + //! Set the font used in the editbox + // + //! Set the font used in the editbox to Name and size + //! Size (in points) + virtual void SetFont(std::string Name, long Size)=0; + +// TODO sort relationship between CDashEditbox and derived classes +protected: + //! Have the contents of the editbox been altered since the last save? + bool m_dirty; + + //! Record the number of characters that have been flushed + int m_iFlushed; // how many characters have been flushed + + //! Pointer to a DasherWidgetInterface for communication with the core + CDasherWidgetInterface* m_DasherInterface; +}; + + +#endif /* #ifndef __DashEdit_h__ */ -- cgit v0.9.0.2