Added further 'missing' wxTextCtrl-like functions to wxComboBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -123,6 +123,41 @@ Creates the combobox for two-step construction. Derived classes
|
|||||||
should call or replace this function. See \helpref{wxComboBox::wxComboBox}{wxcomboboxctor}\rtfsp
|
should call or replace this function. See \helpref{wxComboBox::wxComboBox}{wxcomboboxctor}\rtfsp
|
||||||
for further details.
|
for further details.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::CanCopy}\label{wxcomboboxcancopy}
|
||||||
|
|
||||||
|
\constfunc{bool}{CanCopy}{\void}
|
||||||
|
|
||||||
|
Returns true if the combobox is editable and there is a text selection to copy to the clipboard.
|
||||||
|
Only available on Windows.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::CanCut}\label{wxcomboboxcancut}
|
||||||
|
|
||||||
|
\constfunc{bool}{CanCut}{\void}
|
||||||
|
|
||||||
|
Returns true if the combobox is editable and there is a text selection to copy to the clipboard.
|
||||||
|
Only available on Windows.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::CanPaste}\label{wxcomboboxcanpaste}
|
||||||
|
|
||||||
|
\constfunc{bool}{CanPaste}{\void}
|
||||||
|
|
||||||
|
Returns true if the combobox is editable and there is text on the clipboard that can be pasted into the
|
||||||
|
text field. Only available on Windows.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::CanRedo}\label{wxcomboboxcanredo}
|
||||||
|
|
||||||
|
\constfunc{bool}{CanRedo}{\void}
|
||||||
|
|
||||||
|
Returns true if the combobox is editable and the last undo can be redone.
|
||||||
|
Only available on Windows.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::CanUndo}\label{wxcomboboxcanundo}
|
||||||
|
|
||||||
|
\constfunc{bool}{CanUndo}{\void}
|
||||||
|
|
||||||
|
Returns true if the combobox is editable and the last edit can be undone.
|
||||||
|
Only available on Windows.
|
||||||
|
|
||||||
\membersection{wxComboBox::Copy}\label{wxcomboboxcopy}
|
\membersection{wxComboBox::Copy}\label{wxcomboboxcopy}
|
||||||
|
|
||||||
\func{void}{Copy}{\void}
|
\func{void}{Copy}{\void}
|
||||||
@@ -159,6 +194,12 @@ Returns the current value in the combobox text field.
|
|||||||
|
|
||||||
Pastes text from the clipboard to the text field.
|
Pastes text from the clipboard to the text field.
|
||||||
|
|
||||||
|
\membersection{wxComboBox::Redo}\label{wxcomboboxredo}
|
||||||
|
|
||||||
|
\func{void}{Redo}{\void}
|
||||||
|
|
||||||
|
Redoes the last undo in the text field. Windows only.
|
||||||
|
|
||||||
\membersection{wxComboBox::Replace}\label{wxcomboboxreplace}
|
\membersection{wxComboBox::Replace}\label{wxcomboboxreplace}
|
||||||
|
|
||||||
\func{void}{Replace}{\param{long}{ from}, \param{long}{ to}, \param{const wxString\& }{text}}
|
\func{void}{Replace}{\param{long}{ from}, \param{long}{ to}, \param{const wxString\& }{text}}
|
||||||
@@ -230,4 +271,9 @@ the combobox choices list, otherwise the call to SetValue() is ignored.
|
|||||||
|
|
||||||
\docparam{text}{The text to set.}
|
\docparam{text}{The text to set.}
|
||||||
|
|
||||||
|
\membersection{wxComboBox::Undo}\label{wxcomboboxundo}
|
||||||
|
|
||||||
|
\func{void}{Undo}{\void}
|
||||||
|
|
||||||
|
Undoes the last edit in the text field. Windows only.
|
||||||
|
|
||||||
|
@@ -122,6 +122,24 @@ public:
|
|||||||
{ wxTextCtrl::SetSelection(from,to); }
|
{ wxTextCtrl::SetSelection(from,to); }
|
||||||
virtual void SetEditable(bool editable)
|
virtual void SetEditable(bool editable)
|
||||||
{ wxTextCtrl::SetEditable(editable); }
|
{ wxTextCtrl::SetEditable(editable); }
|
||||||
|
virtual bool IsEditable() const
|
||||||
|
{ return !HasFlag(wxCB_READONLY); }
|
||||||
|
virtual void Undo()
|
||||||
|
{ wxTextCtrl::Undo(); }
|
||||||
|
virtual void Redo()
|
||||||
|
{ wxTextCtrl::Redo(); }
|
||||||
|
virtual void SelectAll()
|
||||||
|
{ wxTextCtrl::SelectAll(); }
|
||||||
|
virtual bool CanCopy() const
|
||||||
|
{ return wxTextCtrl::CanCopy(); }
|
||||||
|
virtual bool CanCut() const = 0
|
||||||
|
{ return wxTextCtrl::CanCut(); }
|
||||||
|
virtual bool CanPaste() const
|
||||||
|
{ return wxTextCtrl::CanPaste(); }
|
||||||
|
virtual bool CanUndo() const
|
||||||
|
{ return wxTextCtrl::CanUndo(); }
|
||||||
|
virtual bool CanRedo() const
|
||||||
|
{ return wxTextCtrl::CanRedo(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __WX_COCOA_COMBOBOX_H__
|
#endif // __WX_COCOA_COMBOBOX_H__
|
||||||
|
@@ -45,6 +45,19 @@ public:
|
|||||||
{ SetInsertionPoint(GetLastPosition()); }
|
{ SetInsertionPoint(GetLastPosition()); }
|
||||||
virtual void Remove(long from, long to)
|
virtual void Remove(long from, long to)
|
||||||
{ Replace(from, to, wxEmptyString); }
|
{ Replace(from, to, wxEmptyString); }
|
||||||
|
|
||||||
|
virtual bool IsEditable() const = 0;
|
||||||
|
|
||||||
|
virtual void Undo() = 0;
|
||||||
|
virtual void Redo() = 0;
|
||||||
|
virtual void SelectAll() = 0;
|
||||||
|
|
||||||
|
virtual bool CanCopy() const = 0;
|
||||||
|
virtual bool CanCut() const = 0;
|
||||||
|
virtual bool CanPaste() const = 0;
|
||||||
|
virtual bool CanUndo() const = 0;
|
||||||
|
virtual bool CanRedo() const = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -105,6 +105,9 @@ public:
|
|||||||
void Copy();
|
void Copy();
|
||||||
void Cut();
|
void Cut();
|
||||||
void Paste();
|
void Paste();
|
||||||
|
bool CanCopy() const;
|
||||||
|
bool CanCut() const;
|
||||||
|
bool CanPaste() const;
|
||||||
void SetInsertionPoint( long pos );
|
void SetInsertionPoint( long pos );
|
||||||
void SetInsertionPointEnd() { SetInsertionPoint( -1 ); }
|
void SetInsertionPointEnd() { SetInsertionPoint( -1 ); }
|
||||||
long GetInsertionPoint() const;
|
long GetInsertionPoint() const;
|
||||||
@@ -112,7 +115,15 @@ public:
|
|||||||
void Remove(long from, long to) { Replace(from, to, wxEmptyString); }
|
void Remove(long from, long to) { Replace(from, to, wxEmptyString); }
|
||||||
void Replace( long from, long to, const wxString& value );
|
void Replace( long from, long to, const wxString& value );
|
||||||
void SetSelection( long from, long to );
|
void SetSelection( long from, long to );
|
||||||
|
void GetSelection( long* from, long* to ) const;
|
||||||
void SetEditable( bool editable );
|
void SetEditable( bool editable );
|
||||||
|
void Undo() ;
|
||||||
|
void Redo() ;
|
||||||
|
bool CanUndo() const;
|
||||||
|
bool CanRedo() const;
|
||||||
|
void SelectAll();
|
||||||
|
bool IsEditable() const { return !HasFlag(wxCB_READONLY); }
|
||||||
|
bool HasSelection() const ;
|
||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
|
|
||||||
@@ -121,6 +132,23 @@ public:
|
|||||||
void OnSize( wxSizeEvent &event );
|
void OnSize( wxSizeEvent &event );
|
||||||
void OnChar( wxKeyEvent &event );
|
void OnChar( wxKeyEvent &event );
|
||||||
|
|
||||||
|
// Standard event handling
|
||||||
|
void OnCut(wxCommandEvent& event);
|
||||||
|
void OnCopy(wxCommandEvent& event);
|
||||||
|
void OnPaste(wxCommandEvent& event);
|
||||||
|
void OnUndo(wxCommandEvent& event);
|
||||||
|
void OnRedo(wxCommandEvent& event);
|
||||||
|
void OnDelete(wxCommandEvent& event);
|
||||||
|
void OnSelectAll(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void OnUpdateCut(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateCopy(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdatePaste(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUndo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateRedo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateDelete(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateSelectAll(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
bool m_ignoreNextUpdate:1;
|
bool m_ignoreNextUpdate:1;
|
||||||
wxList m_clientDataList;
|
wxList m_clientDataList;
|
||||||
wxList m_clientObjectList;
|
wxList m_clientObjectList;
|
||||||
@@ -136,7 +164,7 @@ public:
|
|||||||
|
|
||||||
static wxVisualAttributes
|
static wxVisualAttributes
|
||||||
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int DoAppend(const wxString& item);
|
virtual int DoAppend(const wxString& item);
|
||||||
virtual int DoInsert(const wxString& item, int pos);
|
virtual int DoInsert(const wxString& item, int pos);
|
||||||
|
@@ -105,6 +105,9 @@ public:
|
|||||||
void Copy();
|
void Copy();
|
||||||
void Cut();
|
void Cut();
|
||||||
void Paste();
|
void Paste();
|
||||||
|
bool CanCopy() const;
|
||||||
|
bool CanCut() const;
|
||||||
|
bool CanPaste() const;
|
||||||
void SetInsertionPoint( long pos );
|
void SetInsertionPoint( long pos );
|
||||||
void SetInsertionPointEnd() { SetInsertionPoint( -1 ); }
|
void SetInsertionPointEnd() { SetInsertionPoint( -1 ); }
|
||||||
long GetInsertionPoint() const;
|
long GetInsertionPoint() const;
|
||||||
@@ -112,7 +115,15 @@ public:
|
|||||||
void Remove(long from, long to) { Replace(from, to, wxEmptyString); }
|
void Remove(long from, long to) { Replace(from, to, wxEmptyString); }
|
||||||
void Replace( long from, long to, const wxString& value );
|
void Replace( long from, long to, const wxString& value );
|
||||||
void SetSelection( long from, long to );
|
void SetSelection( long from, long to );
|
||||||
|
void GetSelection( long* from, long* to ) const;
|
||||||
void SetEditable( bool editable );
|
void SetEditable( bool editable );
|
||||||
|
void Undo() ;
|
||||||
|
void Redo() ;
|
||||||
|
bool CanUndo() const;
|
||||||
|
bool CanRedo() const;
|
||||||
|
void SelectAll();
|
||||||
|
bool IsEditable() const { return !HasFlag(wxCB_READONLY); }
|
||||||
|
bool HasSelection() const ;
|
||||||
|
|
||||||
// implementation
|
// implementation
|
||||||
|
|
||||||
@@ -121,6 +132,23 @@ public:
|
|||||||
void OnSize( wxSizeEvent &event );
|
void OnSize( wxSizeEvent &event );
|
||||||
void OnChar( wxKeyEvent &event );
|
void OnChar( wxKeyEvent &event );
|
||||||
|
|
||||||
|
// Standard event handling
|
||||||
|
void OnCut(wxCommandEvent& event);
|
||||||
|
void OnCopy(wxCommandEvent& event);
|
||||||
|
void OnPaste(wxCommandEvent& event);
|
||||||
|
void OnUndo(wxCommandEvent& event);
|
||||||
|
void OnRedo(wxCommandEvent& event);
|
||||||
|
void OnDelete(wxCommandEvent& event);
|
||||||
|
void OnSelectAll(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void OnUpdateCut(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateCopy(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdatePaste(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUndo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateRedo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateDelete(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateSelectAll(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
bool m_ignoreNextUpdate:1;
|
bool m_ignoreNextUpdate:1;
|
||||||
wxList m_clientDataList;
|
wxList m_clientDataList;
|
||||||
wxList m_clientObjectList;
|
wxList m_clientObjectList;
|
||||||
@@ -136,7 +164,7 @@ public:
|
|||||||
|
|
||||||
static wxVisualAttributes
|
static wxVisualAttributes
|
||||||
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int DoAppend(const wxString& item);
|
virtual int DoAppend(const wxString& item);
|
||||||
virtual int DoInsert(const wxString& item, int pos);
|
virtual int DoInsert(const wxString& item, int pos);
|
||||||
|
@@ -117,6 +117,19 @@ class WXDLLEXPORT wxComboBox : public wxControl, public wxComboBoxBase
|
|||||||
virtual void SetSelection(long from, long to);
|
virtual void SetSelection(long from, long to);
|
||||||
virtual void SetEditable(bool editable);
|
virtual void SetEditable(bool editable);
|
||||||
virtual int GetCount() const ;
|
virtual int GetCount() const ;
|
||||||
|
|
||||||
|
virtual bool IsEditable() const ;
|
||||||
|
|
||||||
|
virtual void Undo() ;
|
||||||
|
virtual void Redo() ;
|
||||||
|
virtual void SelectAll() ;
|
||||||
|
|
||||||
|
virtual bool CanCopy() const ;
|
||||||
|
virtual bool CanCut() const ;
|
||||||
|
virtual bool CanPaste() const ;
|
||||||
|
virtual bool CanUndo() const ;
|
||||||
|
virtual bool CanRedo() const ;
|
||||||
|
|
||||||
wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
|
wxInt32 MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
|
||||||
|
|
||||||
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
|
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
|
||||||
|
@@ -112,6 +112,19 @@ class WXDLLEXPORT wxComboBox : public wxControl, public wxComboBoxBase
|
|||||||
virtual void SetSelection(long from, long to);
|
virtual void SetSelection(long from, long to);
|
||||||
virtual void SetEditable(bool editable);
|
virtual void SetEditable(bool editable);
|
||||||
virtual int GetCount() const { return m_choice->GetCount() ; }
|
virtual int GetCount() const { return m_choice->GetCount() ; }
|
||||||
|
|
||||||
|
virtual bool IsEditable() const ;
|
||||||
|
|
||||||
|
virtual void Undo() ;
|
||||||
|
virtual void Redo() ;
|
||||||
|
virtual void SelectAll() ;
|
||||||
|
|
||||||
|
virtual bool CanCopy() const ;
|
||||||
|
virtual bool CanCut() const ;
|
||||||
|
virtual bool CanPaste() const ;
|
||||||
|
virtual bool CanUndo() const ;
|
||||||
|
virtual bool CanRedo() const ;
|
||||||
|
|
||||||
void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
|
void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ;
|
||||||
|
|
||||||
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
|
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
|
||||||
|
@@ -86,6 +86,9 @@ public:
|
|||||||
virtual void Copy();
|
virtual void Copy();
|
||||||
virtual void Cut();
|
virtual void Cut();
|
||||||
virtual void Paste();
|
virtual void Paste();
|
||||||
|
virtual bool CanCopy() const;
|
||||||
|
virtual bool CanCut() const;
|
||||||
|
virtual bool CanPaste() const;
|
||||||
virtual void SetInsertionPoint(long pos);
|
virtual void SetInsertionPoint(long pos);
|
||||||
virtual void SetInsertionPointEnd();
|
virtual void SetInsertionPointEnd();
|
||||||
virtual long GetInsertionPoint() const;
|
virtual long GetInsertionPoint() const;
|
||||||
@@ -99,6 +102,14 @@ public:
|
|||||||
virtual void SetEditable(bool editable);
|
virtual void SetEditable(bool editable);
|
||||||
virtual void Clear() { wxChoice::Clear(); m_selectionOld = -1; }
|
virtual void Clear() { wxChoice::Clear(); m_selectionOld = -1; }
|
||||||
|
|
||||||
|
virtual void Undo() ;
|
||||||
|
virtual void Redo() ;
|
||||||
|
virtual bool CanUndo() const;
|
||||||
|
virtual bool CanRedo() const;
|
||||||
|
virtual void SelectAll();
|
||||||
|
virtual bool IsEditable() const ;
|
||||||
|
virtual bool HasSelection() const;
|
||||||
|
|
||||||
// implementation only from now on
|
// implementation only from now on
|
||||||
virtual bool MSWCommand(WXUINT param, WXWORD id);
|
virtual bool MSWCommand(WXUINT param, WXWORD id);
|
||||||
bool MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam);
|
bool MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam);
|
||||||
@@ -106,6 +117,23 @@ public:
|
|||||||
|
|
||||||
WXHWND GetEditHWND() const;
|
WXHWND GetEditHWND() const;
|
||||||
|
|
||||||
|
// Standard event handling
|
||||||
|
void OnCut(wxCommandEvent& event);
|
||||||
|
void OnCopy(wxCommandEvent& event);
|
||||||
|
void OnPaste(wxCommandEvent& event);
|
||||||
|
void OnUndo(wxCommandEvent& event);
|
||||||
|
void OnRedo(wxCommandEvent& event);
|
||||||
|
void OnDelete(wxCommandEvent& event);
|
||||||
|
void OnSelectAll(wxCommandEvent& event);
|
||||||
|
|
||||||
|
void OnUpdateCut(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateCopy(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdatePaste(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateUndo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateRedo(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateDelete(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateSelectAll(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
|
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
|
||||||
|
|
||||||
@@ -121,6 +149,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxComboBox)
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // wxUSE_COMBOBOX
|
#endif // wxUSE_COMBOBOX
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
// Author: William Osborne
|
// Author: William Osborne
|
||||||
// Modified by:
|
// Modified by:
|
||||||
// Created: 10/13/04
|
// Created: 10/13/04
|
||||||
// RCS-ID: $Id:
|
// RCS-ID: $Id:
|
||||||
// Copyright: (c) William Osborne
|
// Copyright: (c) William Osborne
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -91,6 +91,17 @@ public:
|
|||||||
virtual void SetSelection(int n) { wxChoice::SetSelection(n); }
|
virtual void SetSelection(int n) { wxChoice::SetSelection(n); }
|
||||||
virtual void SetSelection(long from, long to);
|
virtual void SetSelection(long from, long to);
|
||||||
virtual void SetEditable(bool editable);
|
virtual void SetEditable(bool editable);
|
||||||
|
virtual bool IsEditable() const;
|
||||||
|
|
||||||
|
virtual void Undo();
|
||||||
|
virtual void Redo();
|
||||||
|
virtual void SelectAll();
|
||||||
|
|
||||||
|
virtual bool CanCopy() const;
|
||||||
|
virtual bool CanCut() const;
|
||||||
|
virtual bool CanPaste() const;
|
||||||
|
virtual bool CanUndo() const;
|
||||||
|
virtual bool CanRedo() const;
|
||||||
|
|
||||||
// implementation only from now on
|
// implementation only from now on
|
||||||
virtual bool MSWCommand(WXUINT param, WXWORD id);
|
virtual bool MSWCommand(WXUINT param, WXWORD id);
|
||||||
|
@@ -282,6 +282,17 @@ public:
|
|||||||
virtual void Remove(long from, long to);
|
virtual void Remove(long from, long to);
|
||||||
virtual void SetSelection(long from, long to);
|
virtual void SetSelection(long from, long to);
|
||||||
virtual void SetEditable(bool editable);
|
virtual void SetEditable(bool editable);
|
||||||
|
virtual bool IsEditable() const;
|
||||||
|
|
||||||
|
virtual void Undo();
|
||||||
|
virtual void Redo();
|
||||||
|
virtual void SelectAll();
|
||||||
|
|
||||||
|
virtual bool CanCopy() const;
|
||||||
|
virtual bool CanCut() const;
|
||||||
|
virtual bool CanPaste() const;
|
||||||
|
virtual bool CanUndo() const;
|
||||||
|
virtual bool CanRedo() const;
|
||||||
|
|
||||||
// wxControlWithItems methods
|
// wxControlWithItems methods
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
|
@@ -50,7 +50,7 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
|
|||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
if (combo->m_ignoreNextUpdate)
|
if (combo->m_ignoreNextUpdate)
|
||||||
{
|
{
|
||||||
combo->m_ignoreNextUpdate = FALSE;
|
combo->m_ignoreNextUpdate = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(wi
|
|||||||
|
|
||||||
GtkWidget *list = GTK_COMBO(combo->m_widget)->list;
|
GtkWidget *list = GTK_COMBO(combo->m_widget)->list;
|
||||||
gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection );
|
gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection );
|
||||||
|
|
||||||
combo->m_prevSelection = curSelection;
|
combo->m_prevSelection = curSelection;
|
||||||
|
|
||||||
// Quickly set the value of the combo box
|
// Quickly set the value of the combo box
|
||||||
@@ -103,10 +103,10 @@ gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(wi
|
|||||||
event.SetInt( curSelection );
|
event.SetInt( curSelection );
|
||||||
event.SetString( combo->GetStringSelection() );
|
event.SetString( combo->GetStringSelection() );
|
||||||
event.SetEventObject( combo );
|
event.SetEventObject( combo );
|
||||||
|
|
||||||
combo->GetEventHandler()->ProcessEvent( event );
|
combo->GetEventHandler()->ProcessEvent( event );
|
||||||
|
|
||||||
// Now send the event ourselves
|
// Now send the event ourselves
|
||||||
wxCommandEvent event2( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
|
wxCommandEvent event2( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
|
||||||
event2.SetString( combo->GetValue() );
|
event2.SetString( combo->GetValue() );
|
||||||
event2.SetEventObject( combo );
|
event2.SetEventObject( combo );
|
||||||
@@ -122,6 +122,22 @@ IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl)
|
|||||||
BEGIN_EVENT_TABLE(wxComboBox, wxControl)
|
BEGIN_EVENT_TABLE(wxComboBox, wxControl)
|
||||||
EVT_SIZE(wxComboBox::OnSize)
|
EVT_SIZE(wxComboBox::OnSize)
|
||||||
EVT_CHAR(wxComboBox::OnChar)
|
EVT_CHAR(wxComboBox::OnChar)
|
||||||
|
|
||||||
|
EVT_MENU(wxID_CUT, wxComboBox::OnCut)
|
||||||
|
EVT_MENU(wxID_COPY, wxComboBox::OnCopy)
|
||||||
|
EVT_MENU(wxID_PASTE, wxComboBox::OnPaste)
|
||||||
|
EVT_MENU(wxID_UNDO, wxComboBox::OnUndo)
|
||||||
|
EVT_MENU(wxID_REDO, wxComboBox::OnRedo)
|
||||||
|
EVT_MENU(wxID_CLEAR, wxComboBox::OnDelete)
|
||||||
|
EVT_MENU(wxID_SELECTALL, wxComboBox::OnSelectAll)
|
||||||
|
|
||||||
|
EVT_UPDATE_UI(wxID_CUT, wxComboBox::OnUpdateCut)
|
||||||
|
EVT_UPDATE_UI(wxID_COPY, wxComboBox::OnUpdateCopy)
|
||||||
|
EVT_UPDATE_UI(wxID_PASTE, wxComboBox::OnUpdatePaste)
|
||||||
|
EVT_UPDATE_UI(wxID_UNDO, wxComboBox::OnUpdateUndo)
|
||||||
|
EVT_UPDATE_UI(wxID_REDO, wxComboBox::OnUpdateRedo)
|
||||||
|
EVT_UPDATE_UI(wxID_CLEAR, wxComboBox::OnUpdateDelete)
|
||||||
|
EVT_UPDATE_UI(wxID_SELECTALL, wxComboBox::OnUpdateSelectAll)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
bool wxComboBox::Create( wxWindow *parent, wxWindowID id,
|
bool wxComboBox::Create( wxWindow *parent, wxWindowID id,
|
||||||
@@ -214,7 +230,7 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
|
|||||||
// This is required for tool bar support
|
// This is required for tool bar support
|
||||||
wxSize setsize = GetSize();
|
wxSize setsize = GetSize();
|
||||||
gtk_widget_set_usize( m_widget, setsize.x, setsize.y );
|
gtk_widget_set_usize( m_widget, setsize.x, setsize.y );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,7 +345,7 @@ int wxComboBox::DoInsert( const wxString &item, int pos )
|
|||||||
m_clientObjectList.Insert( pos, (wxObject*) NULL );
|
m_clientObjectList.Insert( pos, (wxObject*) NULL );
|
||||||
|
|
||||||
EnableEvents();
|
EnableEvents();
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
@@ -431,9 +447,9 @@ void wxComboBox::Delete( int n )
|
|||||||
node = m_clientDataList.Item( n );
|
node = m_clientDataList.Item( n );
|
||||||
if (node)
|
if (node)
|
||||||
m_clientDataList.Erase( node );
|
m_clientDataList.Erase( node );
|
||||||
|
|
||||||
EnableEvents();
|
EnableEvents();
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,7 +470,7 @@ void wxComboBox::SetString(int n, const wxString &text)
|
|||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxComboBox: wrong index") );
|
wxFAIL_MSG( wxT("wxComboBox: wrong index") );
|
||||||
}
|
}
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -618,7 +634,7 @@ void wxComboBox::SetValue( const wxString& value )
|
|||||||
wxString tmp = wxT("");
|
wxString tmp = wxT("");
|
||||||
if (!value.IsNull()) tmp = value;
|
if (!value.IsNull()) tmp = value;
|
||||||
gtk_entry_set_text( GTK_ENTRY(entry), wxGTK_CONV( tmp ) );
|
gtk_entry_set_text( GTK_ENTRY(entry), wxGTK_CONV( tmp ) );
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,6 +662,63 @@ void wxComboBox::Paste()
|
|||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(entry) DUMMY_CLIPBOARD_ARG);
|
gtk_editable_paste_clipboard( GTK_EDITABLE(entry) DUMMY_CLIPBOARD_ARG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
Select(0, GetLastPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::HasSelection() const
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(&from, &to);
|
||||||
|
return from != to;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
// Can copy if there's a selection
|
||||||
|
return HasSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
return CanCopy() && IsEditable();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
// TODO: check for text on the clipboard
|
||||||
|
return IsEditable() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return !HasFlag(wxCB_READONLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxComboBox::SetInsertionPoint( long pos )
|
void wxComboBox::SetInsertionPoint( long pos )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") );
|
wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") );
|
||||||
@@ -692,6 +765,16 @@ void wxComboBox::SetSelection( long from, long to )
|
|||||||
gtk_editable_select_region( GTK_EDITABLE(entry), (gint)from, (gint)to );
|
gtk_editable_select_region( GTK_EDITABLE(entry), (gint)from, (gint)to );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxComboBox::GetSelection( long* from, long* to ) const
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
{
|
||||||
|
GtkEditable *editable = GTK_EDITABLE(GTK_COMBO(m_widget)->entry);
|
||||||
|
*from = (long) editable->selection_start_pos;
|
||||||
|
*to = (long) editable->selection_end_pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void wxComboBox::SetEditable( bool editable )
|
void wxComboBox::SetEditable( bool editable )
|
||||||
{
|
{
|
||||||
GtkWidget *entry = GTK_COMBO(m_widget)->entry;
|
GtkWidget *entry = GTK_COMBO(m_widget)->entry;
|
||||||
@@ -722,7 +805,7 @@ void wxComboBox::OnChar( wxKeyEvent &event )
|
|||||||
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
|
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
|
||||||
|
|
||||||
if (window->default_widget)
|
if (window->default_widget)
|
||||||
gtk_widget_activate (window->default_widget);
|
gtk_widget_activate (window->default_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -828,4 +911,82 @@ wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
|
|||||||
return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
|
return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// standard event handling
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxComboBox::OnCut(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Cut();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnCopy(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnPaste(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Paste();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUndo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnRedo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnDelete(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(& from, & to);
|
||||||
|
if (from != -1 && to != -1)
|
||||||
|
Remove(from, to);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnSelectAll(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
SetSelection(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCut(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCut() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCopy(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCopy() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdatePaste(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanPaste() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateUndo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanUndo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateRedo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanRedo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateDelete(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(HasSelection() && IsEditable()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateSelectAll(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(GetLastPosition() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -50,7 +50,7 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo )
|
|||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
if (combo->m_ignoreNextUpdate)
|
if (combo->m_ignoreNextUpdate)
|
||||||
{
|
{
|
||||||
combo->m_ignoreNextUpdate = FALSE;
|
combo->m_ignoreNextUpdate = FALSE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(wi
|
|||||||
|
|
||||||
GtkWidget *list = GTK_COMBO(combo->m_widget)->list;
|
GtkWidget *list = GTK_COMBO(combo->m_widget)->list;
|
||||||
gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection );
|
gtk_list_unselect_item( GTK_LIST(list), combo->m_prevSelection );
|
||||||
|
|
||||||
combo->m_prevSelection = curSelection;
|
combo->m_prevSelection = curSelection;
|
||||||
|
|
||||||
// Quickly set the value of the combo box
|
// Quickly set the value of the combo box
|
||||||
@@ -103,10 +103,10 @@ gtk_combo_select_child_callback( GtkList *WXUNUSED(list), GtkWidget *WXUNUSED(wi
|
|||||||
event.SetInt( curSelection );
|
event.SetInt( curSelection );
|
||||||
event.SetString( combo->GetStringSelection() );
|
event.SetString( combo->GetStringSelection() );
|
||||||
event.SetEventObject( combo );
|
event.SetEventObject( combo );
|
||||||
|
|
||||||
combo->GetEventHandler()->ProcessEvent( event );
|
combo->GetEventHandler()->ProcessEvent( event );
|
||||||
|
|
||||||
// Now send the event ourselves
|
// Now send the event ourselves
|
||||||
wxCommandEvent event2( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
|
wxCommandEvent event2( wxEVT_COMMAND_TEXT_UPDATED, combo->GetId() );
|
||||||
event2.SetString( combo->GetValue() );
|
event2.SetString( combo->GetValue() );
|
||||||
event2.SetEventObject( combo );
|
event2.SetEventObject( combo );
|
||||||
@@ -122,6 +122,22 @@ IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl)
|
|||||||
BEGIN_EVENT_TABLE(wxComboBox, wxControl)
|
BEGIN_EVENT_TABLE(wxComboBox, wxControl)
|
||||||
EVT_SIZE(wxComboBox::OnSize)
|
EVT_SIZE(wxComboBox::OnSize)
|
||||||
EVT_CHAR(wxComboBox::OnChar)
|
EVT_CHAR(wxComboBox::OnChar)
|
||||||
|
|
||||||
|
EVT_MENU(wxID_CUT, wxComboBox::OnCut)
|
||||||
|
EVT_MENU(wxID_COPY, wxComboBox::OnCopy)
|
||||||
|
EVT_MENU(wxID_PASTE, wxComboBox::OnPaste)
|
||||||
|
EVT_MENU(wxID_UNDO, wxComboBox::OnUndo)
|
||||||
|
EVT_MENU(wxID_REDO, wxComboBox::OnRedo)
|
||||||
|
EVT_MENU(wxID_CLEAR, wxComboBox::OnDelete)
|
||||||
|
EVT_MENU(wxID_SELECTALL, wxComboBox::OnSelectAll)
|
||||||
|
|
||||||
|
EVT_UPDATE_UI(wxID_CUT, wxComboBox::OnUpdateCut)
|
||||||
|
EVT_UPDATE_UI(wxID_COPY, wxComboBox::OnUpdateCopy)
|
||||||
|
EVT_UPDATE_UI(wxID_PASTE, wxComboBox::OnUpdatePaste)
|
||||||
|
EVT_UPDATE_UI(wxID_UNDO, wxComboBox::OnUpdateUndo)
|
||||||
|
EVT_UPDATE_UI(wxID_REDO, wxComboBox::OnUpdateRedo)
|
||||||
|
EVT_UPDATE_UI(wxID_CLEAR, wxComboBox::OnUpdateDelete)
|
||||||
|
EVT_UPDATE_UI(wxID_SELECTALL, wxComboBox::OnUpdateSelectAll)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
bool wxComboBox::Create( wxWindow *parent, wxWindowID id,
|
bool wxComboBox::Create( wxWindow *parent, wxWindowID id,
|
||||||
@@ -214,7 +230,7 @@ bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value,
|
|||||||
// This is required for tool bar support
|
// This is required for tool bar support
|
||||||
wxSize setsize = GetSize();
|
wxSize setsize = GetSize();
|
||||||
gtk_widget_set_usize( m_widget, setsize.x, setsize.y );
|
gtk_widget_set_usize( m_widget, setsize.x, setsize.y );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,7 +345,7 @@ int wxComboBox::DoInsert( const wxString &item, int pos )
|
|||||||
m_clientObjectList.Insert( pos, (wxObject*) NULL );
|
m_clientObjectList.Insert( pos, (wxObject*) NULL );
|
||||||
|
|
||||||
EnableEvents();
|
EnableEvents();
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
@@ -431,9 +447,9 @@ void wxComboBox::Delete( int n )
|
|||||||
node = m_clientDataList.Item( n );
|
node = m_clientDataList.Item( n );
|
||||||
if (node)
|
if (node)
|
||||||
m_clientDataList.Erase( node );
|
m_clientDataList.Erase( node );
|
||||||
|
|
||||||
EnableEvents();
|
EnableEvents();
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,7 +470,7 @@ void wxComboBox::SetString(int n, const wxString &text)
|
|||||||
{
|
{
|
||||||
wxFAIL_MSG( wxT("wxComboBox: wrong index") );
|
wxFAIL_MSG( wxT("wxComboBox: wrong index") );
|
||||||
}
|
}
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -618,7 +634,7 @@ void wxComboBox::SetValue( const wxString& value )
|
|||||||
wxString tmp = wxT("");
|
wxString tmp = wxT("");
|
||||||
if (!value.IsNull()) tmp = value;
|
if (!value.IsNull()) tmp = value;
|
||||||
gtk_entry_set_text( GTK_ENTRY(entry), wxGTK_CONV( tmp ) );
|
gtk_entry_set_text( GTK_ENTRY(entry), wxGTK_CONV( tmp ) );
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,6 +662,63 @@ void wxComboBox::Paste()
|
|||||||
gtk_editable_paste_clipboard( GTK_EDITABLE(entry) DUMMY_CLIPBOARD_ARG);
|
gtk_editable_paste_clipboard( GTK_EDITABLE(entry) DUMMY_CLIPBOARD_ARG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
Select(0, GetLastPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::HasSelection() const
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(&from, &to);
|
||||||
|
return from != to;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
// Can copy if there's a selection
|
||||||
|
return HasSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
return CanCopy() && IsEditable();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
// TODO: check for text on the clipboard
|
||||||
|
return IsEditable() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return !HasFlag(wxCB_READONLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void wxComboBox::SetInsertionPoint( long pos )
|
void wxComboBox::SetInsertionPoint( long pos )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") );
|
wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") );
|
||||||
@@ -692,6 +765,16 @@ void wxComboBox::SetSelection( long from, long to )
|
|||||||
gtk_editable_select_region( GTK_EDITABLE(entry), (gint)from, (gint)to );
|
gtk_editable_select_region( GTK_EDITABLE(entry), (gint)from, (gint)to );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxComboBox::GetSelection( long* from, long* to ) const
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
{
|
||||||
|
GtkEditable *editable = GTK_EDITABLE(GTK_COMBO(m_widget)->entry);
|
||||||
|
*from = (long) editable->selection_start_pos;
|
||||||
|
*to = (long) editable->selection_end_pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void wxComboBox::SetEditable( bool editable )
|
void wxComboBox::SetEditable( bool editable )
|
||||||
{
|
{
|
||||||
GtkWidget *entry = GTK_COMBO(m_widget)->entry;
|
GtkWidget *entry = GTK_COMBO(m_widget)->entry;
|
||||||
@@ -722,7 +805,7 @@ void wxComboBox::OnChar( wxKeyEvent &event )
|
|||||||
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
|
GtkWindow *window = GTK_WINDOW(top_frame->m_widget);
|
||||||
|
|
||||||
if (window->default_widget)
|
if (window->default_widget)
|
||||||
gtk_widget_activate (window->default_widget);
|
gtk_widget_activate (window->default_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -828,4 +911,82 @@ wxComboBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
|
|||||||
return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
|
return GetDefaultAttributesFromGTKWidget(gtk_combo_new, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// standard event handling
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxComboBox::OnCut(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Cut();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnCopy(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnPaste(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Paste();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUndo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnRedo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnDelete(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(& from, & to);
|
||||||
|
if (from != -1 && to != -1)
|
||||||
|
Remove(from, to);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnSelectAll(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
SetSelection(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCut(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCut() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCopy(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCopy() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdatePaste(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanPaste() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateUndo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanUndo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateRedo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanRedo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateDelete(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(HasSelection() && IsEditable()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateSelectAll(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(GetLastPosition() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
|
|||||||
|
|
||||||
|
|
||||||
static int nextPopUpMenuId = 1000 ;
|
static int nextPopUpMenuId = 1000 ;
|
||||||
MenuHandle NewUniqueMenu()
|
MenuHandle NewUniqueMenu()
|
||||||
{
|
{
|
||||||
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
||||||
nextPopUpMenuId++ ;
|
nextPopUpMenuId++ ;
|
||||||
@@ -75,7 +75,7 @@ protected:
|
|||||||
NavEvent.SetEventObject(this);
|
NavEvent.SetEventObject(this);
|
||||||
NavEvent.SetDirection(true);
|
NavEvent.SetDirection(true);
|
||||||
NavEvent.SetWindowChange(false);
|
NavEvent.SetWindowChange(false);
|
||||||
|
|
||||||
// Get the parent of the combo and have it process the navigation?
|
// Get the parent of the combo and have it process the navigation?
|
||||||
if (m_cb->GetParent()->GetEventHandler()->ProcessEvent(NavEvent))
|
if (m_cb->GetParent()->GetEventHandler()->ProcessEvent(NavEvent))
|
||||||
return;
|
return;
|
||||||
@@ -111,7 +111,7 @@ protected:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ protected:
|
|||||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_cb->GetId());
|
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_cb->GetId());
|
||||||
event.SetString( GetValue() );
|
event.SetString( GetValue() );
|
||||||
event.SetEventObject( m_cb );
|
event.SetEventObject( m_cb );
|
||||||
m_cb->GetEventHandler()->ProcessEvent(event);
|
m_cb->GetEventHandler()->ProcessEvent(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
@@ -183,7 +183,7 @@ protected:
|
|||||||
if (! m_cb->HasFlag(wxCB_READONLY) )
|
if (! m_cb->HasFlag(wxCB_READONLY) )
|
||||||
sz.x = GetPopupWidth() ;
|
sz.x = GetPopupWidth() ;
|
||||||
return sz ;
|
return sz ;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxComboBox *m_cb;
|
wxComboBox *m_cb;
|
||||||
@@ -223,7 +223,7 @@ wxSize wxComboBox::DoGetBestSize() const
|
|||||||
if (!m_choice && !m_text)
|
if (!m_choice && !m_text)
|
||||||
return GetSize();
|
return GetSize();
|
||||||
wxSize size = m_choice->GetBestSize();
|
wxSize size = m_choice->GetBestSize();
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
wxSize sizeText = m_text->GetBestSize();
|
wxSize sizeText = m_text->GetBestSize();
|
||||||
@@ -241,10 +241,10 @@ wxSize wxComboBox::DoGetBestSize() const
|
|||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
|
void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
wxControl::DoMoveWindow(x, y, width , height );
|
wxControl::DoMoveWindow(x, y, width , height );
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
{
|
{
|
||||||
// we might not be fully constructed yet, therefore watch out...
|
// we might not be fully constructed yet, therefore watch out...
|
||||||
@@ -257,7 +257,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
|
|||||||
m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1 );
|
m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1 );
|
||||||
// put it at an inset of 1 to have outer area shadows drawn as well
|
// put it at an inset of 1 to have outer area shadows drawn as well
|
||||||
m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , TEXTFOCUSBORDER, m_choice->GetPopupWidth() , -1);
|
m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , TEXTFOCUSBORDER, m_choice->GetPopupWidth() , -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -342,15 +342,15 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_text = new wxComboBoxText(this);
|
m_text = new wxComboBoxText(this);
|
||||||
if ( size.y == -1 )
|
if ( size.y == -1 )
|
||||||
{
|
{
|
||||||
csize.y = m_text->GetSize().y ;
|
csize.y = m_text->GetSize().y ;
|
||||||
csize.y += 2 * TEXTFOCUSBORDER ;
|
csize.y += 2 * TEXTFOCUSBORDER ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
||||||
|
|
||||||
for ( int i = 0 ; i < n ; i++ )
|
for ( int i = 0 ; i < n ; i++ )
|
||||||
{
|
{
|
||||||
m_choice->DoAppend( choices[ i ] );
|
m_choice->DoAppend( choices[ i ] );
|
||||||
@@ -364,7 +364,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
wxString wxComboBox::GetValue() const
|
wxString wxComboBox::GetValue() const
|
||||||
{
|
{
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
{
|
{
|
||||||
result = m_choice->GetString( m_choice->GetSelection() );
|
result = m_choice->GetString( m_choice->GetSelection() );
|
||||||
@@ -378,8 +378,8 @@ wxString wxComboBox::GetValue() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::GetCount() const
|
int wxComboBox::GetCount() const
|
||||||
{
|
{
|
||||||
return m_choice->GetCount() ;
|
return m_choice->GetCount() ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::SetValue(const wxString& value)
|
void wxComboBox::SetValue(const wxString& value)
|
||||||
@@ -429,7 +429,7 @@ void wxComboBox::SetEditable(bool editable)
|
|||||||
|
|
||||||
int currentX, currentY;
|
int currentX, currentY;
|
||||||
GetPosition( ¤tX, ¤tY );
|
GetPosition( ¤tX, ¤tY );
|
||||||
|
|
||||||
int currentW, currentH;
|
int currentW, currentH;
|
||||||
GetSize( ¤tW, ¤tH );
|
GetSize( ¤tW, ¤tH );
|
||||||
|
|
||||||
@@ -473,17 +473,17 @@ void wxComboBox::SetSelection(long from, long to)
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoAppend(const wxString& item)
|
int wxComboBox::DoAppend(const wxString& item)
|
||||||
{
|
{
|
||||||
return m_choice->DoAppend( item ) ;
|
return m_choice->DoAppend( item ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoInsert(const wxString& item, int pos)
|
int wxComboBox::DoInsert(const wxString& item, int pos)
|
||||||
{
|
{
|
||||||
return m_choice->DoInsert( item , pos ) ;
|
return m_choice->DoInsert( item , pos ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
||||||
{
|
{
|
||||||
return m_choice->DoSetItemClientData( n , clientData ) ;
|
return m_choice->DoSetItemClientData( n , clientData ) ;
|
||||||
}
|
}
|
||||||
@@ -498,7 +498,7 @@ void wxComboBox::DoSetItemClientObject(int n, wxClientData* clientData)
|
|||||||
return m_choice->DoSetItemClientObject( n , clientData ) ;
|
return m_choice->DoSetItemClientObject( n , clientData ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
||||||
{
|
{
|
||||||
return m_choice->DoGetItemClientObject( n ) ;
|
return m_choice->DoGetItemClientObject( n ) ;
|
||||||
}
|
}
|
||||||
@@ -537,7 +537,7 @@ int wxComboBox::GetSelection() const
|
|||||||
void wxComboBox::SetSelection(int n)
|
void wxComboBox::SetSelection(int n)
|
||||||
{
|
{
|
||||||
m_choice->SetSelection( n );
|
m_choice->SetSelection( n );
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
m_text->SetValue( GetString( n ) );
|
m_text->SetValue( GetString( n ) );
|
||||||
@@ -575,13 +575,75 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::SetString(int n, const wxString& s)
|
void wxComboBox::SetString(int n, const wxString& s)
|
||||||
{
|
{
|
||||||
m_choice->SetString( n , s ) ;
|
m_choice->SetString( n , s ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return m_text != NULL && !HasFlag(wxCB_READONLY);
|
||||||
|
}
|
||||||
|
|
||||||
wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->SelectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCopy();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCut();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanPaste();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanUndo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanRedo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
/* For consistency with other platforms, clicking in the text area does not constitute a selection
|
/* For consistency with other platforms, clicking in the text area does not constitute a selection
|
||||||
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
||||||
|
@@ -36,7 +36,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int nextPopUpMenuId = 1000 ;
|
static int nextPopUpMenuId = 1000 ;
|
||||||
MenuHandle NewUniqueMenu()
|
MenuHandle NewUniqueMenu()
|
||||||
{
|
{
|
||||||
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
||||||
nextPopUpMenuId++ ;
|
nextPopUpMenuId++ ;
|
||||||
@@ -53,7 +53,7 @@ static pascal OSStatus wxMacComboBoxEventHandler( EventHandlerCallRef handler ,
|
|||||||
{
|
{
|
||||||
OSStatus result = eventNotHandledErr ;
|
OSStatus result = eventNotHandledErr ;
|
||||||
wxComboBox* cb = (wxComboBox*) data ;
|
wxComboBox* cb = (wxComboBox*) data ;
|
||||||
|
|
||||||
wxMacCarbonEvent cEvent( event ) ;
|
wxMacCarbonEvent cEvent( event ) ;
|
||||||
|
|
||||||
switch( cEvent.GetClass() )
|
switch( cEvent.GetClass() )
|
||||||
@@ -77,7 +77,7 @@ static pascal OSStatus wxMacComboBoxEventHandler( EventHandlerCallRef handler ,
|
|||||||
default :
|
default :
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return result ;
|
return result ;
|
||||||
}
|
}
|
||||||
@@ -169,7 +169,7 @@ protected:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
@@ -208,7 +208,7 @@ protected:
|
|||||||
wxSize sz = wxChoice::DoGetBestSize() ;
|
wxSize sz = wxChoice::DoGetBestSize() ;
|
||||||
sz.x = POPUPWIDTH ;
|
sz.x = POPUPWIDTH ;
|
||||||
return sz ;
|
return sz ;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxComboBox *m_cb;
|
wxComboBox *m_cb;
|
||||||
@@ -249,11 +249,11 @@ wxSize wxComboBox::DoGetBestSize() const
|
|||||||
return wxControl::DoGetBestSize();
|
return wxControl::DoGetBestSize();
|
||||||
#else
|
#else
|
||||||
wxSize size = m_choice->GetBestSize();
|
wxSize size = m_choice->GetBestSize();
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
wxSize sizeText = m_text->GetBestSize();
|
wxSize sizeText = m_text->GetBestSize();
|
||||||
|
|
||||||
size.x = POPUPWIDTH + sizeText.x + MARGIN;
|
size.x = POPUPWIDTH + sizeText.x + MARGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) {
|
|||||||
wxControl::DoMoveWindow(x, y, width, height);
|
wxControl::DoMoveWindow(x, y, width, height);
|
||||||
#else
|
#else
|
||||||
height = POPUPHEIGHT;
|
height = POPUPHEIGHT;
|
||||||
|
|
||||||
wxControl::DoMoveWindow(x, y, width, height);
|
wxControl::DoMoveWindow(x, y, width, height);
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
@@ -281,7 +281,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) {
|
|||||||
m_text->SetSize(0, 0, wText, height);
|
m_text->SetSize(0, 0, wText, height);
|
||||||
m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1);
|
m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -368,12 +368,12 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
|
Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ;
|
||||||
HIRect hiRect;
|
HIRect hiRect;
|
||||||
|
|
||||||
hiRect.origin.x = 20; //bounds.left;
|
hiRect.origin.x = 20; //bounds.left;
|
||||||
hiRect.origin.y = 25; //bounds.top;
|
hiRect.origin.y = 25; //bounds.top;
|
||||||
hiRect.size.width = 120;// bounds.right - bounds.left;
|
hiRect.size.width = 120;// bounds.right - bounds.left;
|
||||||
hiRect.size.height = 24;
|
hiRect.size.height = 24;
|
||||||
|
|
||||||
//For some reason, this code causes the combo box not to be displayed at all.
|
//For some reason, this code causes the combo box not to be displayed at all.
|
||||||
//hiRect.origin.x = bounds.left;
|
//hiRect.origin.x = bounds.left;
|
||||||
//hiRect.origin.y = bounds.top;
|
//hiRect.origin.y = bounds.top;
|
||||||
@@ -383,32 +383,32 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
//printf("x = %d, y = %d, width = %d, height = %d\n", hibounds.origin.x, hibounds.origin.y, hibounds.size.width, hibounds.size.height);
|
//printf("x = %d, y = %d, width = %d, height = %d\n", hibounds.origin.x, hibounds.origin.y, hibounds.size.width, hibounds.size.height);
|
||||||
m_peer = new wxMacControl() ;
|
m_peer = new wxMacControl() ;
|
||||||
verify_noerr( HIComboBoxCreate( &hiRect, CFSTR(""), NULL, NULL, kHIComboBoxStandardAttributes, *m_peer ) );
|
verify_noerr( HIComboBoxCreate( &hiRect, CFSTR(""), NULL, NULL, kHIComboBoxStandardAttributes, *m_peer ) );
|
||||||
|
|
||||||
|
|
||||||
SetControl32BitMinimum( *m_peer , 0 ) ;
|
SetControl32BitMinimum( *m_peer , 0 ) ;
|
||||||
SetControl32BitMaximum( *m_peer , 100) ;
|
SetControl32BitMaximum( *m_peer , 100) ;
|
||||||
if ( n > 0 )
|
if ( n > 0 )
|
||||||
SetControl32BitValue( *m_peer , 1 ) ;
|
SetControl32BitValue( *m_peer , 1 ) ;
|
||||||
|
|
||||||
MacPostControlCreate(pos,size) ;
|
MacPostControlCreate(pos,size) ;
|
||||||
|
|
||||||
for ( int i = 0 ; i < n ; i++ )
|
for ( int i = 0 ; i < n ; i++ )
|
||||||
{
|
{
|
||||||
DoAppend( choices[ i ] );
|
DoAppend( choices[ i ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
HIViewSetVisible( *m_peer, true );
|
HIViewSetVisible( *m_peer, true );
|
||||||
SetSelection(0);
|
SetSelection(0);
|
||||||
EventHandlerRef comboEventHandler ;
|
EventHandlerRef comboEventHandler ;
|
||||||
InstallControlEventHandler( *m_peer, GetwxMacComboBoxEventHandlerUPP(),
|
InstallControlEventHandler( *m_peer, GetwxMacComboBoxEventHandlerUPP(),
|
||||||
GetEventTypeCount(eventList), eventList, this,
|
GetEventTypeCount(eventList), eventList, this,
|
||||||
(EventHandlerRef *)&comboEventHandler);
|
(EventHandlerRef *)&comboEventHandler);
|
||||||
#else
|
#else
|
||||||
m_choice = new wxComboBoxChoice(this, style );
|
m_choice = new wxComboBoxChoice(this, style );
|
||||||
|
|
||||||
m_choice = new wxComboBoxChoice(this, style );
|
m_choice = new wxComboBoxChoice(this, style );
|
||||||
m_choice->SetSizeHints( wxSize( POPUPWIDTH , POPUPHEIGHT ) ) ;
|
m_choice->SetSizeHints( wxSize( POPUPWIDTH , POPUPHEIGHT ) ) ;
|
||||||
|
|
||||||
wxSize csize = size;
|
wxSize csize = size;
|
||||||
if ( style & wxCB_READONLY )
|
if ( style & wxCB_READONLY )
|
||||||
{
|
{
|
||||||
@@ -421,9 +421,9 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
csize.y = m_text->GetSize().y ;
|
csize.y = m_text->GetSize().y ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
||||||
|
|
||||||
for ( int i = 0 ; i < n ; i++ )
|
for ( int i = 0 ; i < n ; i++ )
|
||||||
{
|
{
|
||||||
m_choice->DoAppend( choices[ i ] );
|
m_choice->DoAppend( choices[ i ] );
|
||||||
@@ -442,7 +442,7 @@ wxString wxComboBox::GetValue() const
|
|||||||
return wxMacCFStringHolder( myString, m_font.GetEncoding() ).AsString();
|
return wxMacCFStringHolder( myString, m_font.GetEncoding() ).AsString();
|
||||||
#else
|
#else
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
{
|
{
|
||||||
result = m_choice->GetString( m_choice->GetSelection() );
|
result = m_choice->GetString( m_choice->GetSelection() );
|
||||||
@@ -451,7 +451,7 @@ wxString wxComboBox::GetValue() const
|
|||||||
{
|
{
|
||||||
result = m_text->GetValue();
|
result = m_text->GetValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -459,7 +459,7 @@ wxString wxComboBox::GetValue() const
|
|||||||
void wxComboBox::SetValue(const wxString& value)
|
void wxComboBox::SetValue(const wxString& value)
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
|
|
||||||
#else
|
#else
|
||||||
int s = FindString (value);
|
int s = FindString (value);
|
||||||
if (s == wxNOT_FOUND && !HasFlag(wxCB_READONLY) )
|
if (s == wxNOT_FOUND && !HasFlag(wxCB_READONLY) )
|
||||||
@@ -509,7 +509,7 @@ void wxComboBox::SetEditable(bool editable)
|
|||||||
|
|
||||||
int currentX, currentY;
|
int currentX, currentY;
|
||||||
GetPosition( ¤tX, ¤tY );
|
GetPosition( ¤tX, ¤tY );
|
||||||
|
|
||||||
int currentW, currentH;
|
int currentW, currentH;
|
||||||
GetSize( ¤tW, ¤tH );
|
GetSize( ¤tW, ¤tH );
|
||||||
|
|
||||||
@@ -553,7 +553,7 @@ void wxComboBox::SetSelection(long from, long to)
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoAppend(const wxString& item)
|
int wxComboBox::DoAppend(const wxString& item)
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
CFIndex outIndex;
|
CFIndex outIndex;
|
||||||
@@ -565,20 +565,20 @@ int wxComboBox::DoAppend(const wxString& item)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoInsert(const wxString& item, int pos)
|
int wxComboBox::DoInsert(const wxString& item, int pos)
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
HIComboBoxInsertTextItemAtIndex( *m_peer, (CFIndex)pos, wxMacCFStringHolder(item, m_font.GetEncoding()) );
|
HIComboBoxInsertTextItemAtIndex( *m_peer, (CFIndex)pos, wxMacCFStringHolder(item, m_font.GetEncoding()) );
|
||||||
|
|
||||||
//SetControl32BitMaximum( *m_peer, GetCount() );
|
//SetControl32BitMaximum( *m_peer, GetCount() );
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
#else
|
#else
|
||||||
return m_choice->DoInsert( item , pos ) ;
|
return m_choice->DoInsert( item , pos ) ;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
return; //TODO
|
return; //TODO
|
||||||
@@ -605,7 +605,7 @@ void wxComboBox::DoSetItemClientObject(int n, wxClientData* clientData)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -630,7 +630,7 @@ int wxComboBox::GetCount() const {
|
|||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
return (int) HIComboBoxGetItemCount( *m_peer );
|
return (int) HIComboBoxGetItemCount( *m_peer );
|
||||||
#else
|
#else
|
||||||
return m_choice->GetCount() ;
|
return m_choice->GetCount() ;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -673,7 +673,7 @@ void wxComboBox::SetSelection(int n)
|
|||||||
SetControl32BitValue( *m_peer , n + 1 ) ;
|
SetControl32BitValue( *m_peer , n + 1 ) ;
|
||||||
#else
|
#else
|
||||||
m_choice->SetSelection( n );
|
m_choice->SetSelection( n );
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
m_text->SetValue( GetString( n ) );
|
m_text->SetValue( GetString( n ) );
|
||||||
@@ -731,10 +731,10 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::SetString(int n, const wxString& s)
|
void wxComboBox::SetString(int n, const wxString& s)
|
||||||
{
|
{
|
||||||
#if USE_HICOMBOBOX
|
#if USE_HICOMBOBOX
|
||||||
verify_noerr ( HIComboBoxInsertTextItemAtIndex( *m_peer, (CFIndex) n,
|
verify_noerr ( HIComboBoxInsertTextItemAtIndex( *m_peer, (CFIndex) n,
|
||||||
wxMacCFStringHolder(s, m_font.GetEncoding()) ) );
|
wxMacCFStringHolder(s, m_font.GetEncoding()) ) );
|
||||||
verify_noerr ( HIComboBoxRemoveItemAtIndex( *m_peer, (CFIndex) n + 1 ) );
|
verify_noerr ( HIComboBoxRemoveItemAtIndex( *m_peer, (CFIndex) n + 1 ) );
|
||||||
#else
|
#else
|
||||||
@@ -742,8 +742,112 @@ void wxComboBox::SetString(int n, const wxString& s)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return !HasFlag(wxCB_READONLY);
|
||||||
|
#else
|
||||||
|
return m_text != NULL && !HasFlag(wxCB_READONLY);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Undo();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Redo();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->SelectAll();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCopy();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCut();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanPaste();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanUndo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
#if USE_HICOMBOBOX
|
||||||
|
// TODO
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanRedo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
wxInt32 wxComboBox::MacControlHit(WXEVENTHANDLERREF WXUNUSED(handler) , WXEVENTREF WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
||||||
event.SetInt(GetSelection());
|
event.SetInt(GetSelection());
|
||||||
|
@@ -26,7 +26,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
|
|||||||
|
|
||||||
|
|
||||||
static int nextPopUpMenuId = 1000 ;
|
static int nextPopUpMenuId = 1000 ;
|
||||||
MenuHandle NewUniqueMenu()
|
MenuHandle NewUniqueMenu()
|
||||||
{
|
{
|
||||||
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ) ;
|
||||||
nextPopUpMenuId++ ;
|
nextPopUpMenuId++ ;
|
||||||
@@ -114,7 +114,7 @@ protected:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,11 +186,11 @@ wxComboBox::~wxComboBox()
|
|||||||
wxSize wxComboBox::DoGetBestSize() const
|
wxSize wxComboBox::DoGetBestSize() const
|
||||||
{
|
{
|
||||||
wxSize size = m_choice->GetBestSize();
|
wxSize size = m_choice->GetBestSize();
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
wxSize sizeText = m_text->GetBestSize();
|
wxSize sizeText = m_text->GetBestSize();
|
||||||
|
|
||||||
size.x = POPUPWIDTH + sizeText.x + MARGIN;
|
size.x = POPUPWIDTH + sizeText.x + MARGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ wxSize wxComboBox::DoGetBestSize() const
|
|||||||
|
|
||||||
void wxComboBox::DoMoveWindow(int x, int y, int width, int height) {
|
void wxComboBox::DoMoveWindow(int x, int y, int width, int height) {
|
||||||
height = POPUPHEIGHT;
|
height = POPUPHEIGHT;
|
||||||
|
|
||||||
wxControl::DoMoveWindow(x, y, width, height);
|
wxControl::DoMoveWindow(x, y, width, height);
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
@@ -211,7 +211,7 @@ void wxComboBox::DoMoveWindow(int x, int y, int width, int height) {
|
|||||||
wxCoord wText = width - POPUPWIDTH - MARGIN;
|
wxCoord wText = width - POPUPWIDTH - MARGIN;
|
||||||
m_text->SetSize(0, 0, wText, height);
|
m_text->SetSize(0, 0, wText, height);
|
||||||
m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1);
|
m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -301,9 +301,9 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
csize.y = m_text->GetSize().y ;
|
csize.y = m_text->GetSize().y ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
DoSetSize(pos.x, pos.y, csize.x, csize.y);
|
||||||
|
|
||||||
for ( int i = 0 ; i < n ; i++ )
|
for ( int i = 0 ; i < n ; i++ )
|
||||||
{
|
{
|
||||||
m_choice->DoAppend( choices[ i ] );
|
m_choice->DoAppend( choices[ i ] );
|
||||||
@@ -315,7 +315,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
|
|||||||
wxString wxComboBox::GetValue() const
|
wxString wxComboBox::GetValue() const
|
||||||
{
|
{
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
if ( m_text == NULL )
|
if ( m_text == NULL )
|
||||||
{
|
{
|
||||||
result = m_choice->GetString( m_choice->GetSelection() );
|
result = m_choice->GetString( m_choice->GetSelection() );
|
||||||
@@ -377,7 +377,7 @@ void wxComboBox::SetEditable(bool editable)
|
|||||||
|
|
||||||
int currentX, currentY;
|
int currentX, currentY;
|
||||||
GetPosition( ¤tX, ¤tY );
|
GetPosition( ¤tX, ¤tY );
|
||||||
|
|
||||||
int currentW, currentH;
|
int currentW, currentH;
|
||||||
GetSize( ¤tW, ¤tH );
|
GetSize( ¤tW, ¤tH );
|
||||||
|
|
||||||
@@ -421,17 +421,17 @@ void wxComboBox::SetSelection(long from, long to)
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoAppend(const wxString& item)
|
int wxComboBox::DoAppend(const wxString& item)
|
||||||
{
|
{
|
||||||
return m_choice->DoAppend( item ) ;
|
return m_choice->DoAppend( item ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxComboBox::DoInsert(const wxString& item, int pos)
|
int wxComboBox::DoInsert(const wxString& item, int pos)
|
||||||
{
|
{
|
||||||
return m_choice->DoInsert( item , pos ) ;
|
return m_choice->DoInsert( item , pos ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
void wxComboBox::DoSetItemClientData(int n, void* clientData)
|
||||||
{
|
{
|
||||||
return m_choice->DoSetItemClientData( n , clientData ) ;
|
return m_choice->DoSetItemClientData( n , clientData ) ;
|
||||||
}
|
}
|
||||||
@@ -446,7 +446,7 @@ void wxComboBox::DoSetItemClientObject(int n, wxClientData* clientData)
|
|||||||
return m_choice->DoSetItemClientObject( n , clientData ) ;
|
return m_choice->DoSetItemClientObject( n , clientData ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
||||||
{
|
{
|
||||||
return m_choice->DoGetItemClientObject( n ) ;
|
return m_choice->DoGetItemClientObject( n ) ;
|
||||||
}
|
}
|
||||||
@@ -485,7 +485,7 @@ int wxComboBox::GetSelection() const
|
|||||||
void wxComboBox::SetSelection(int n)
|
void wxComboBox::SetSelection(int n)
|
||||||
{
|
{
|
||||||
m_choice->SetSelection( n );
|
m_choice->SetSelection( n );
|
||||||
|
|
||||||
if ( m_text != NULL )
|
if ( m_text != NULL )
|
||||||
{
|
{
|
||||||
m_text->SetValue( GetString( n ) );
|
m_text->SetValue( GetString( n ) );
|
||||||
@@ -523,13 +523,76 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::SetString(int n, const wxString& s)
|
void wxComboBox::SetString(int n, const wxString& s)
|
||||||
{
|
{
|
||||||
m_choice->SetString( n , s ) ;
|
m_choice->SetString( n , s ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
|
||||||
void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown))
|
return m_text != NULL && !HasFlag(wxCB_READONLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
m_text->SelectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCopy();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanCut();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanPaste();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanUndo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
if (m_text != NULL)
|
||||||
|
return m_text->CanRedo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown))
|
||||||
{
|
{
|
||||||
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
|
||||||
event.SetInt(GetSelection());
|
event.SetInt(GetSelection());
|
||||||
|
@@ -111,6 +111,25 @@ wxEND_HANDLERS_TABLE()
|
|||||||
wxCONSTRUCTOR_5( wxComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size )
|
wxCONSTRUCTOR_5( wxComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size )
|
||||||
#else
|
#else
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
|
IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl)
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(wxComboBox, wxControl)
|
||||||
|
EVT_MENU(wxID_CUT, wxComboBox::OnCut)
|
||||||
|
EVT_MENU(wxID_COPY, wxComboBox::OnCopy)
|
||||||
|
EVT_MENU(wxID_PASTE, wxComboBox::OnPaste)
|
||||||
|
EVT_MENU(wxID_UNDO, wxComboBox::OnUndo)
|
||||||
|
EVT_MENU(wxID_REDO, wxComboBox::OnRedo)
|
||||||
|
EVT_MENU(wxID_CLEAR, wxComboBox::OnDelete)
|
||||||
|
EVT_MENU(wxID_SELECTALL, wxComboBox::OnSelectAll)
|
||||||
|
|
||||||
|
EVT_UPDATE_UI(wxID_CUT, wxComboBox::OnUpdateCut)
|
||||||
|
EVT_UPDATE_UI(wxID_COPY, wxComboBox::OnUpdateCopy)
|
||||||
|
EVT_UPDATE_UI(wxID_PASTE, wxComboBox::OnUpdatePaste)
|
||||||
|
EVT_UPDATE_UI(wxID_UNDO, wxComboBox::OnUpdateUndo)
|
||||||
|
EVT_UPDATE_UI(wxID_REDO, wxComboBox::OnUpdateRedo)
|
||||||
|
EVT_UPDATE_UI(wxID_CLEAR, wxComboBox::OnUpdateDelete)
|
||||||
|
EVT_UPDATE_UI(wxID_SELECTALL, wxComboBox::OnUpdateSelectAll)
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -464,17 +483,99 @@ void wxComboBox::SetValue(const wxString& value)
|
|||||||
// Clipboard operations
|
// Clipboard operations
|
||||||
void wxComboBox::Copy()
|
void wxComboBox::Copy()
|
||||||
{
|
{
|
||||||
SendMessage(GetHwnd(), WM_COPY, 0, 0L);
|
SendMessage(GetHwnd(), WM_COPY, 0, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::Cut()
|
void wxComboBox::Cut()
|
||||||
{
|
{
|
||||||
SendMessage(GetHwnd(), WM_CUT, 0, 0L);
|
SendMessage(GetHwnd(), WM_CUT, 0, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::Paste()
|
void wxComboBox::Paste()
|
||||||
{
|
{
|
||||||
SendMessage(GetHwnd(), WM_PASTE, 0, 0L);
|
SendMessage(GetHwnd(), WM_PASTE, 0, 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
if (CanUndo())
|
||||||
|
{
|
||||||
|
HWND hEditWnd = (HWND) GetEditHWND() ;
|
||||||
|
if ( hEditWnd )
|
||||||
|
::SendMessage(hEditWnd, EM_UNDO, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
if (CanUndo())
|
||||||
|
{
|
||||||
|
// Same as Undo, since Undo undoes the undo, i.e. a redo.
|
||||||
|
HWND hEditWnd = (HWND) GetEditHWND() ;
|
||||||
|
if ( hEditWnd )
|
||||||
|
::SendMessage(hEditWnd, EM_UNDO, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
SetSelection(0, GetLastPosition());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
HWND hEditWnd = (HWND) GetEditHWND() ;
|
||||||
|
if ( hEditWnd )
|
||||||
|
return ::SendMessage(hEditWnd, EM_CANUNDO, 0, 0) != 0;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
HWND hEditWnd = (HWND) GetEditHWND() ;
|
||||||
|
if ( hEditWnd )
|
||||||
|
return ::SendMessage(hEditWnd, EM_CANUNDO, 0, 0) != 0;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::HasSelection() const
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(&from, &to);
|
||||||
|
return from != to;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
// Can copy if there's a selection
|
||||||
|
return HasSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
return CanCopy() && IsEditable();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
if ( !IsEditable() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Standard edit control: check for straight text on clipboard
|
||||||
|
if ( !::OpenClipboard(GetHwndOf(wxTheApp->GetTopWindow())) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
bool isTextAvailable = ::IsClipboardFormatAvailable(CF_TEXT) != 0;
|
||||||
|
::CloseClipboard();
|
||||||
|
|
||||||
|
return isTextAvailable;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return !HasFlag(wxCB_READONLY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxComboBox::SetEditable(bool WXUNUSED(editable))
|
void wxComboBox::SetEditable(bool WXUNUSED(editable))
|
||||||
@@ -588,5 +689,82 @@ int wxComboBox::GetSelection() const
|
|||||||
return wxChoice::GetSelection();
|
return wxChoice::GetSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// standard event handling
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void wxComboBox::OnCut(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Cut();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnCopy(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnPaste(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Paste();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUndo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnRedo(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnDelete(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
long from, to;
|
||||||
|
GetSelection(& from, & to);
|
||||||
|
if (from != -1 && to != -1)
|
||||||
|
Remove(from, to);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnSelectAll(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
SetSelection(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCut(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCut() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateCopy(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanCopy() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdatePaste(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanPaste() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateUndo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanUndo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateRedo(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable( CanRedo() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateDelete(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(HasSelection() && IsEditable()) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::OnUpdateSelectAll(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
event.Enable(GetLastPosition() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // wxUSE_COMBOBOX
|
#endif // wxUSE_COMBOBOX
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
// Author: William Osborne
|
// Author: William Osborne
|
||||||
// Modified by:
|
// Modified by:
|
||||||
// Created: 10/13/04
|
// Created: 10/13/04
|
||||||
// RCS-ID: $Id:
|
// RCS-ID: $Id:
|
||||||
// Copyright: (c) William Osborne
|
// Copyright: (c) William Osborne
|
||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -65,7 +65,7 @@ wxBEGIN_FLAGS( wxComboBoxStyle )
|
|||||||
wxFLAGS_MEMBER(wxBORDER_RAISED)
|
wxFLAGS_MEMBER(wxBORDER_RAISED)
|
||||||
wxFLAGS_MEMBER(wxBORDER_STATIC)
|
wxFLAGS_MEMBER(wxBORDER_STATIC)
|
||||||
wxFLAGS_MEMBER(wxBORDER_NONE)
|
wxFLAGS_MEMBER(wxBORDER_NONE)
|
||||||
|
|
||||||
// old style border flags
|
// old style border flags
|
||||||
wxFLAGS_MEMBER(wxSIMPLE_BORDER)
|
wxFLAGS_MEMBER(wxSIMPLE_BORDER)
|
||||||
wxFLAGS_MEMBER(wxSUNKEN_BORDER)
|
wxFLAGS_MEMBER(wxSUNKEN_BORDER)
|
||||||
@@ -261,5 +261,48 @@ void wxComboBox::SetSelection(long from, long to)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif // wxUSE_COMBOBOX
|
#endif // wxUSE_COMBOBOX
|
||||||
|
|
||||||
|
@@ -310,7 +310,7 @@ wxSize wxComboControl::DoGetBestClientSize() const
|
|||||||
widthPopup = m_popup->GetBestWidth();
|
widthPopup = m_popup->GetBestWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup),
|
return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup),
|
||||||
wxMax(sizeBtn.y, sizeText.y));
|
wxMax(sizeBtn.y, sizeText.y));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,7 +365,7 @@ bool wxComboControl::Show(bool show)
|
|||||||
#if wxUSE_TOOLTIPS
|
#if wxUSE_TOOLTIPS
|
||||||
void wxComboControl::DoSetToolTip(wxToolTip *tooltip)
|
void wxComboControl::DoSetToolTip(wxToolTip *tooltip)
|
||||||
{
|
{
|
||||||
wxControl::DoSetToolTip(tooltip);
|
wxControl::DoSetToolTip(tooltip);
|
||||||
|
|
||||||
// Set tool tip for button and text box
|
// Set tool tip for button and text box
|
||||||
if (m_text && m_btn)
|
if (m_text && m_btn)
|
||||||
@@ -845,9 +845,9 @@ int wxComboBox::GetSelection() const
|
|||||||
#if 1 // FIXME:: What is the correct behavior?
|
#if 1 // FIXME:: What is the correct behavior?
|
||||||
// if the current value isn't one of the listbox strings, return -1
|
// if the current value isn't one of the listbox strings, return -1
|
||||||
return GetLBox()->GetSelection();
|
return GetLBox()->GetSelection();
|
||||||
#else
|
#else
|
||||||
// Why oh why is this done this way?
|
// Why oh why is this done this way?
|
||||||
// It is not because the value displayed in the text can be found
|
// It is not because the value displayed in the text can be found
|
||||||
// in the list that it is the item that is selected!
|
// in the list that it is the item that is selected!
|
||||||
return FindString(GetText()->GetValue());
|
return FindString(GetText()->GetValue());
|
||||||
#endif
|
#endif
|
||||||
@@ -890,6 +890,69 @@ wxClientData* wxComboBox::DoGetItemClientObject(int n) const
|
|||||||
return GetLBox()->GetClientObject(n);
|
return GetLBox()->GetClientObject(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::IsEditable() const
|
||||||
|
{
|
||||||
|
return GetText() != NULL && (!HasFlag(wxCB_READONLY) || GetText()->IsEditable());
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Undo()
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
GetText()->Undo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::Redo()
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
GetText()->Redo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxComboBox::SelectAll()
|
||||||
|
{
|
||||||
|
GetText()->SelectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCopy() const
|
||||||
|
{
|
||||||
|
if (GetText() != NULL)
|
||||||
|
return GetText()->CanCopy();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanCut() const
|
||||||
|
{
|
||||||
|
if (GetText() != NULL)
|
||||||
|
return GetText()->CanCut();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanPaste() const
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
return GetText()->CanPaste();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanUndo() const
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
return GetText()->CanUndo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxComboBox::CanRedo() const
|
||||||
|
{
|
||||||
|
if (IsEditable())
|
||||||
|
return GetText()->CanRedo();
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// input handling
|
// input handling
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user