]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/textcompleter.h
Support using GetTextExtent() with empty string to get descent in wxOSX.
[wxWidgets.git] / include / wx / textcompleter.h
index 76aae00a0d0566ac25dab737c615eed4101b7d43..7e9dd83b6f1d7c1de72d1568bc8f0faccc9a26e3 100644 (file)
@@ -20,7 +20,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 +33,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_
+