]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/textcompleter.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / textcompleter.h
index 76aae00a0d0566ac25dab737c615eed4101b7d43..bc4135f8bf2aed22a6708f2f6f8d94956655bc25 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     Declaration of wxTextCompleter class.
 // Author:      Vadim Zeitlin
 // Created:     2011-04-13
-// RCS-ID:      $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
 // Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -20,7 +19,12 @@ class WXDLLIMPEXP_CORE wxTextCompleter
 public:
     wxTextCompleter() { }
 
-    virtual void GetCompletions(const wxString& prefix, wxArrayString& res) = 0;
+    // The virtual functions to be implemented by the derived classes: the
+    // first one is called to start preparing for completions for the given
+    // prefix and, if it returns true, GetNext() is called until it returns an
+    // empty string indicating that there are no more completions.
+    virtual bool Start(const wxString& prefix) = 0;
+    virtual wxString GetNext() = 0;
 
     virtual ~wxTextCompleter();
 
@@ -28,4 +32,55 @@ private:
     wxDECLARE_NO_COPY_CLASS(wxTextCompleter);
 };
 
+// ----------------------------------------------------------------------------
+// wxTextCompleterSimple: returns the entire set of completions at once
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxTextCompleterSimple : public wxTextCompleter
+{
+public:
+    wxTextCompleterSimple() { }
+
+    // Must be implemented to return all the completions for the given prefix.
+    virtual void GetCompletions(const wxString& prefix, wxArrayString& res) = 0;
+
+    virtual bool Start(const wxString& prefix);
+    virtual wxString GetNext();
+
+private:
+    wxArrayString m_completions;
+    unsigned m_index;
+
+    wxDECLARE_NO_COPY_CLASS(wxTextCompleterSimple);
+};
+
+// ----------------------------------------------------------------------------
+// wxTextCompleterFixed: Trivial wxTextCompleter implementation which always
+// returns the same fixed array of completions.
+// ----------------------------------------------------------------------------
+
+// NB: This class is private and intentionally not documented as it is
+//     currently used only for implementation of completion with the fixed list
+//     of strings only by wxWidgets itself, do not use it outside of wxWidgets.
+
+class wxTextCompleterFixed : public wxTextCompleterSimple
+{
+public:
+    void SetCompletions(const wxArrayString& strings)
+    {
+        m_strings = strings;
+    }
+
+    virtual void GetCompletions(const wxString& WXUNUSED(prefix),
+                                wxArrayString& res)
+    {
+        res = m_strings;
+    }
+
+private:
+    wxArrayString m_strings;
+};
+
+
 #endif // _WX_TEXTCOMPLETER_H_
+