combobox.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/cocoa/combobox.h
  3. // Purpose: wxComboBox class
  4. // Author: Ryan Norton
  5. // Modified by:
  6. // Created: 2005/02/16
  7. // Copyright: (c) 2003 David Elliott
  8. // Licence: wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10. #ifndef __WX_COCOA_COMBOBOX_H__
  11. #define __WX_COCOA_COMBOBOX_H__
  12. //Begin NSComboBox.h
  13. #include "wx/hashmap.h"
  14. #include "wx/cocoa/ObjcAssociate.h"
  15. #include "wx/textctrl.h"
  16. DECLARE_WXCOCOA_OBJC_CLASS(NSComboBox);
  17. WX_DECLARE_OBJC_HASHMAP(NSComboBox);
  18. class wxCocoaNSComboBox
  19. {
  20. WX_DECLARE_OBJC_INTERFACE_HASHMAP(NSComboBox)
  21. public:
  22. void AssociateNSComboBox(WX_NSComboBox cocoaNSComboBox);
  23. void DisassociateNSComboBox(WX_NSComboBox cocoaNSComboBox);
  24. virtual void doWxEvent(int nEvent) = 0;
  25. virtual ~wxCocoaNSComboBox() { }
  26. };
  27. //begin combobox.h
  28. #include "wx/dynarray.h"
  29. // ========================================================================
  30. // wxComboBox
  31. // ========================================================================
  32. class WXDLLIMPEXP_CORE wxComboBox : public wxControl, public wxComboBoxBase, protected wxCocoaNSComboBox, protected wxCocoaNSTextField
  33. {
  34. DECLARE_DYNAMIC_CLASS(wxComboBox)
  35. DECLARE_EVENT_TABLE()
  36. WX_DECLARE_COCOA_OWNER(NSComboBox,NSTextField,NSView)
  37. WX_DECLARE_COCOA_OWNER(NSTextField,NSControl,NSView)
  38. // ------------------------------------------------------------------------
  39. // initialization
  40. // ------------------------------------------------------------------------
  41. public:
  42. wxComboBox() { }
  43. wxComboBox(wxWindow *parent, wxWindowID winid,
  44. const wxString& value = wxEmptyString,
  45. const wxPoint& pos = wxDefaultPosition,
  46. const wxSize& size = wxDefaultSize,
  47. int n = 0, const wxString choices[] = NULL,
  48. long style = 0,
  49. const wxValidator& validator = wxDefaultValidator,
  50. const wxString& name = wxComboBoxNameStr)
  51. {
  52. Create(parent, winid, value, pos, size, n, choices, style, validator, name);
  53. }
  54. wxComboBox(wxWindow *parent, wxWindowID winid,
  55. const wxString& value,
  56. const wxPoint& pos,
  57. const wxSize& size,
  58. const wxArrayString& choices,
  59. long style = 0,
  60. const wxValidator& validator = wxDefaultValidator,
  61. const wxString& name = wxComboBoxNameStr)
  62. {
  63. Create(parent, winid, value, pos, size, choices, style,
  64. validator, name);
  65. }
  66. bool Create(wxWindow *parent, wxWindowID winid,
  67. const wxString& value = wxEmptyString,
  68. const wxPoint& pos = wxDefaultPosition,
  69. const wxSize& size = wxDefaultSize,
  70. int n = 0, const wxString choices[] = NULL,
  71. long style = 0,
  72. const wxValidator& validator = wxDefaultValidator,
  73. const wxString& name = wxComboBoxNameStr);
  74. bool Create(wxWindow *parent, wxWindowID winid,
  75. const wxString& value,
  76. const wxPoint& pos,
  77. const wxSize& size,
  78. const wxArrayString& choices,
  79. long style = 0,
  80. const wxValidator& validator = wxDefaultValidator,
  81. const wxString& name = wxComboBoxNameStr);
  82. virtual ~wxComboBox();
  83. // ------------------------------------------------------------------------
  84. // Cocoa callbacks
  85. // ------------------------------------------------------------------------
  86. protected:
  87. wxArrayPtrVoid m_Datas;
  88. virtual void doWxEvent(int nEvent);
  89. virtual void Cocoa_didChangeText()
  90. {}
  91. // ------------------------------------------------------------------------
  92. // Implementation
  93. // ------------------------------------------------------------------------
  94. public:
  95. void Clear() // HACK
  96. { wxComboBoxBase::Clear(); }
  97. // wxCombobox methods
  98. virtual void SetSelection(int pos);
  99. // Overlapping methods
  100. virtual wxString GetStringSelection();
  101. // wxItemContainer
  102. virtual void DoClear();
  103. virtual void DoDeleteOneItem(unsigned int n);
  104. virtual unsigned int GetCount() const;
  105. virtual wxString GetString(unsigned int) const;
  106. virtual void SetString(unsigned int pos, const wxString&);
  107. virtual int FindString(const wxString& s, bool bCase = false) const;
  108. virtual int GetSelection() const;
  109. virtual int DoInsertItems(const wxArrayStringsAdapter& items,
  110. unsigned int pos,
  111. void **clientData, wxClientDataType type);
  112. virtual void DoSetItemClientData(unsigned int, void*);
  113. virtual void* DoGetItemClientData(unsigned int) const;
  114. virtual bool IsSorted() const { return HasFlag(wxCB_SORT); }
  115. // ------------------------------------------------------------------------
  116. // wxTextEntryBase virtual implementations:
  117. // ------------------------------------------------------------------------
  118. // FIXME: This needs to be moved to some sort of common code.
  119. virtual void WriteText(const wxString&);
  120. virtual wxString GetValue() const;
  121. virtual void Remove(long, long);
  122. virtual void Cut();
  123. virtual void Copy();
  124. virtual void Paste();
  125. virtual void Undo();
  126. virtual void Redo();
  127. virtual bool CanUndo() const;
  128. virtual bool CanRedo() const;
  129. virtual void SetInsertionPoint(long pos);
  130. virtual long GetInsertionPoint() const;
  131. virtual wxTextPos GetLastPosition() const;
  132. virtual void SetSelection(long from, long to);
  133. virtual void GetSelection(long *from, long *to) const;
  134. virtual bool IsEditable() const;
  135. virtual void SetEditable(bool editable);
  136. private:
  137. // implement wxTextEntry pure virtual method
  138. virtual wxWindow *GetEditableWindow() { return this; }
  139. };
  140. #endif // __WX_COCOA_COMBOBOX_H__