mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-16 06:05:49 -06:00
init
This commit is contained in:
commit
9c6f9f3405
1784 changed files with 440662 additions and 0 deletions
90
ctl/ctlCheckTreeView.cpp
Normal file
90
ctl/ctlCheckTreeView.cpp
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// pgAdmin III - PostgreSQL Tools
|
||||
//
|
||||
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
||||
// This software is released under the PostgreSQL Licence
|
||||
//
|
||||
// ctlCheckTreeView.cpp - TreeView with Checkboxes
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "pgAdmin3.h"
|
||||
|
||||
// wxWindows headers
|
||||
#include <wx/wx.h>
|
||||
#include <wx/busyinfo.h>
|
||||
#include <wx/imaglist.h>
|
||||
#include <wx/wizard.h>
|
||||
#include <wx/treectrl.h>
|
||||
|
||||
// App headers
|
||||
#include "ctl/ctlCheckTreeView.h"
|
||||
#include "images/checked.pngc"
|
||||
#include "images/disabled.pngc"
|
||||
#include "images/unchecked.pngc"
|
||||
|
||||
BEGIN_EVENT_TABLE(ctlCheckTreeView, wxTreeCtrl)
|
||||
EVT_LEFT_DOWN( ctlCheckTreeView::OnLeftClick)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
ctlCheckTreeView::ctlCheckTreeView(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style)
|
||||
: wxTreeCtrl(parent, id, pos, size, style)
|
||||
{
|
||||
wxImageList *treeimages = new wxImageList(16, 16, true, 3);
|
||||
treeimages->Add(*unchecked_png_img);
|
||||
treeimages->Add(*checked_png_img);
|
||||
treeimages->Add(*disabled_png_img);
|
||||
SetImageList(treeimages);
|
||||
}
|
||||
|
||||
|
||||
void ctlCheckTreeView::OnLeftClick(wxMouseEvent &evt)
|
||||
{
|
||||
int flags;
|
||||
wxTreeItemId node = HitTest(evt.GetPosition(), flags);
|
||||
int newimage = 0;
|
||||
|
||||
if ((flags & wxTREE_HITTEST_ONITEMLABEL) || (flags & wxTREE_HITTEST_ONITEMICON))
|
||||
{
|
||||
if (GetItemImage(node) == 0)
|
||||
newimage = 1;
|
||||
else if (GetItemImage(node) == 1)
|
||||
newimage = 0;
|
||||
|
||||
if (newimage == 0 || newimage == 1)
|
||||
SetParentAndChildImage(node, newimage);
|
||||
if (newimage == 1)
|
||||
SetParentImage(node, newimage);
|
||||
}
|
||||
|
||||
evt.Skip();
|
||||
}
|
||||
|
||||
void ctlCheckTreeView::SetParentAndChildImage(wxTreeItemId node, int newimage)
|
||||
{
|
||||
SetItemImage(node, newimage);
|
||||
wxTreeItemIdValue childData;
|
||||
wxTreeItemId child = GetFirstChild(node, childData);
|
||||
while (child.IsOk())
|
||||
{
|
||||
SetParentAndChildImage(child, newimage);
|
||||
child = GetNextChild(node, childData);
|
||||
}
|
||||
}
|
||||
|
||||
void ctlCheckTreeView::SetParentImage(wxTreeItemId node, int newimage)
|
||||
{
|
||||
if (node.IsOk())
|
||||
{
|
||||
SetItemImage(node, newimage);
|
||||
SetParentImage(GetItemParent(node), newimage);
|
||||
}
|
||||
}
|
||||
|
||||
bool ctlCheckTreeView::IsChecked(const wxTreeItemId &node)
|
||||
{
|
||||
return (GetItemImage(node) == 1);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue