77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        wx/qt/private/treeitemdelegate.h
 | 
						|
// Purpose:     Delegate to create text edit controls for the tree items
 | 
						|
// Author:      Matthew Griffin
 | 
						|
// Created:     2019-05-29
 | 
						|
// Copyright:   Matthew Griffin
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_QT_PRIVATE_TREEITEM_DELEGATE_H
 | 
						|
#define _WX_QT_PRIVATE_TREEITEM_DELEGATE_H
 | 
						|
 | 
						|
#include <QtWidgets/QStyledItemDelegate>
 | 
						|
 | 
						|
#include "wx/app.h"
 | 
						|
#include "wx/textctrl.h"
 | 
						|
 | 
						|
#include "treeitemfactory.h"
 | 
						|
 | 
						|
class wxQTTreeItemDelegate : public QStyledItemDelegate
 | 
						|
{
 | 
						|
public:
 | 
						|
    explicit wxQTTreeItemDelegate(wxWindow* parent)
 | 
						|
        : m_parent(parent),
 | 
						|
        m_textCtrl(NULL)
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &WXUNUSED(option), const QModelIndex &index) const wxOVERRIDE
 | 
						|
    {
 | 
						|
        if ( m_textCtrl != NULL )
 | 
						|
            destroyEditor(m_textCtrl->GetHandle(), m_currentModelIndex);
 | 
						|
 | 
						|
        m_currentModelIndex = index;
 | 
						|
        m_textCtrl = new wxQtListTextCtrl(m_parent, parent);
 | 
						|
        m_textCtrl->SetFocus();
 | 
						|
        return m_textCtrl->GetHandle();
 | 
						|
    }
 | 
						|
 | 
						|
    void destroyEditor(QWidget *WXUNUSED(editor), const QModelIndex &WXUNUSED(index)) const wxOVERRIDE
 | 
						|
    {
 | 
						|
        if ( m_textCtrl != NULL )
 | 
						|
        {
 | 
						|
            m_currentModelIndex = QModelIndex(); // invalidate the index
 | 
						|
            wxTheApp->ScheduleForDestruction(m_textCtrl);
 | 
						|
            m_textCtrl = NULL;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    void setModelData(QWidget *WXUNUSED(editor), QAbstractItemModel *WXUNUSED(model), const QModelIndex &WXUNUSED(index)) const wxOVERRIDE
 | 
						|
    {
 | 
						|
        // Don't set model data until wx has had a chance to send out events
 | 
						|
    }
 | 
						|
 | 
						|
    wxTextCtrl* GetEditControl() const
 | 
						|
    {
 | 
						|
        return m_textCtrl;
 | 
						|
    }
 | 
						|
 | 
						|
    QModelIndex GetCurrentModelIndex() const
 | 
						|
    {
 | 
						|
        return m_currentModelIndex;
 | 
						|
    }
 | 
						|
 | 
						|
    void AcceptModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
 | 
						|
    {
 | 
						|
        QStyledItemDelegate::setModelData(editor, model, index);
 | 
						|
    }
 | 
						|
 | 
						|
private:
 | 
						|
    wxWindow* m_parent;
 | 
						|
    mutable wxTextCtrl* m_textCtrl;
 | 
						|
    mutable QModelIndex m_currentModelIndex;
 | 
						|
};
 | 
						|
 | 
						|
#endif // _WX_QT_PRIVATE_TREEITEM_DELEGATE_H
 |