Add signal handlers to generate wx events for wxTreeCtrl under wxQT
This commit is contained in:
@@ -15,15 +15,6 @@
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
class wxQTreeWidget : public wxQtEventSignalHandler<QTreeWidget, wxTreeCtrl>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxQTreeWidget(wxWindow *parent, wxTreeCtrl *handler) :
|
|
||||||
wxQtEventSignalHandler(parent, handler)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
QTreeWidgetItem *wxQtConvertTreeItem(const wxTreeItemId &item)
|
QTreeWidgetItem *wxQtConvertTreeItem(const wxTreeItemId &item)
|
||||||
{
|
{
|
||||||
return static_cast<QTreeWidgetItem*>(item.GetID());
|
return static_cast<QTreeWidgetItem*>(item.GetID());
|
||||||
@@ -34,6 +25,96 @@ namespace
|
|||||||
return wxTreeItemId(item);
|
return wxTreeItemId(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class wxQTreeWidget : public wxQtEventSignalHandler<QTreeWidget, wxTreeCtrl>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxQTreeWidget(wxWindow *parent, wxTreeCtrl *handler) :
|
||||||
|
wxQtEventSignalHandler(parent, handler)
|
||||||
|
{
|
||||||
|
connect(this, &QTreeWidget::currentItemChanged, this, &wxQTreeWidget::OnCurrentItemChanged);
|
||||||
|
connect(this, &QTreeWidget::itemActivated, this, &wxQTreeWidget::OnItemActivated);
|
||||||
|
connect(this, &QTreeWidget::itemClicked, this, &wxQTreeWidget::OnItemClicked);
|
||||||
|
connect(this, &QTreeWidget::itemCollapsed, this, &wxQTreeWidget::OnItemCollapsed);
|
||||||
|
connect(this, &QTreeWidget::itemExpanded, this, &wxQTreeWidget::OnItemExpanded);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void OnCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
|
||||||
|
{
|
||||||
|
wxTreeEvent changingEvent(wxEVT_TREE_SEL_CHANGING, GetHandler(), wxQtConvertTreeItem(current));
|
||||||
|
EmitEvent(changingEvent);
|
||||||
|
|
||||||
|
if ( !changingEvent.IsAllowed() )
|
||||||
|
{
|
||||||
|
blockSignals(true);
|
||||||
|
setCurrentItem(previous);
|
||||||
|
blockSignals(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTreeEvent changedEvent(wxEVT_TREE_SEL_CHANGED, GetHandler(), wxQtConvertTreeItem(current));
|
||||||
|
EmitEvent(changedEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemActivated(QTreeWidgetItem *item, int WXUNUSED(column))
|
||||||
|
{
|
||||||
|
wxTreeEvent event(wxEVT_TREE_ITEM_ACTIVATED, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemClicked(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
wxMouseState mouseState = wxGetMouseState();
|
||||||
|
|
||||||
|
wxEventType eventType;
|
||||||
|
if (mouseState.RightIsDown())
|
||||||
|
eventType = wxEVT_TREE_ITEM_RIGHT_CLICK;
|
||||||
|
else if (mouseState.MiddleIsDown())
|
||||||
|
eventType = wxEVT_TREE_ITEM_MIDDLE_CLICK;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxTreeEvent event(eventType, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemCollapsed(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
wxTreeEvent collapsingEvent(wxEVT_TREE_ITEM_COLLAPSING, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(collapsingEvent);
|
||||||
|
|
||||||
|
if (!collapsingEvent.IsAllowed())
|
||||||
|
{
|
||||||
|
blockSignals(true);
|
||||||
|
item->setExpanded(true);
|
||||||
|
blockSignals(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTreeEvent collapsedEvent(wxEVT_TREE_ITEM_COLLAPSED, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(collapsedEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnItemExpanded(QTreeWidgetItem *item)
|
||||||
|
{
|
||||||
|
wxTreeEvent expandingEvent(wxEVT_TREE_ITEM_EXPANDING, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(expandingEvent);
|
||||||
|
|
||||||
|
if (!expandingEvent.IsAllowed())
|
||||||
|
{
|
||||||
|
blockSignals(true);
|
||||||
|
item->setExpanded(false);
|
||||||
|
blockSignals(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxTreeEvent expandedEvent(wxEVT_TREE_ITEM_EXPANDED, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
|
EmitEvent(expandedEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
size_t CountChildren(QTreeWidgetItem *item)
|
size_t CountChildren(QTreeWidgetItem *item)
|
||||||
{
|
{
|
||||||
const int currentCount = item->childCount();
|
const int currentCount = item->childCount();
|
||||||
|
Reference in New Issue
Block a user