📄 ctreeview.cpp
字号:
END_METHODBEGIN_PROPERTY(CTREEVIEW_client_width) //long w = WIDGET->width() - WIDGET->frameWidth() * 2; //long sw = WIDGET->verticalScrollBar()->width(); //long width = w; //if (WIDGET->verticalScrollBar()->isHidden()) // width -= sw; //qDebug("client_width = %ld (%ld) -> %ld", w, sw, width); GB.ReturnInteger(WIDGET->width() - WIDGET->frameWidth() * 2); //GB.ReturnInteger(width);END_PROPERTYBEGIN_PROPERTY(CTREEVIEW_client_height) GB.ReturnInteger(WIDGET->height() - WIDGET->frameWidth() * 2);END_PROPERTYBEGIN_PROPERTY(CTREEVIEW_header) if (READ_PROPERTY) GB.ReturnBoolean(!WIDGET->header()->isHidden()); else { if (VPROP(GB_BOOLEAN)) WIDGET->header()->show(); else WIDGET->header()->hide(); WIDGET->triggerUpdate(); }END_PROPERTY#if 0BEGIN_PROPERTY(CTREEVIEW_scrollbar) long scroll; if (READ_PROPERTY) { scroll = 0; if (WIDGET->hScrollBarMode() == QScrollView::Auto) scroll += 1; if (WIDGET->vScrollBarMode() == QScrollView::Auto) scroll += 2; GB.ReturnInteger(scroll); } else { scroll = VPROP(GB_INTEGER) & 3; WIDGET->setHScrollBarMode( (scroll & 1) ? QScrollView::Auto : QScrollView::AlwaysOff); WIDGET->setVScrollBarMode( (scroll & 2) ? QScrollView::Auto : QScrollView::AlwaysOff); }END_PROPERTY#endif/*************************************************************************** ListViewItem***************************************************************************/GB_DESC CListViewItemDesc[] ={ GB_DECLARE(".ListViewItem", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY_READ("Key", "s", CTREEVIEWITEM_key), GB_PROPERTY("Picture", "Picture", CTREEVIEWITEM_picture), GB_PROPERTY("Selected", "b", CTREEVIEWITEM_selected), GB_PROPERTY("Text", "s", CTREEVIEWITEM_text), GB_METHOD("EnsureVisible", NULL, CTREEVIEWITEM_ensure_visible, NULL), GB_METHOD("Delete", NULL, CTREEVIEWITEM_delete, NULL), //GB_METHOD("Next", ".ListViewItem", CTREEVIEWITEM_next, NULL), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), GB_PROPERTY("Editable", "b", CTREEVIEWITEM_editable), GB_METHOD("Rename", NULL, CTREEVIEWITEM_rename, NULL), GB_END_DECLARE};/*************************************************************************** TreeViewItem***************************************************************************/GB_DESC CTreeViewItemDesc[] ={ GB_DECLARE(".TreeViewItem", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY_READ("Key", "s", CTREEVIEWITEM_key), GB_PROPERTY("Picture", "Picture", CTREEVIEWITEM_picture), GB_PROPERTY("Selected", "b", CTREEVIEWITEM_selected), GB_PROPERTY("Text", "s", CTREEVIEWITEM_text), GB_METHOD("EnsureVisible", NULL, CTREEVIEWITEM_ensure_visible, NULL), GB_METHOD("Delete", NULL, CTREEVIEWITEM_delete, NULL), GB_METHOD("Clear", NULL, CTREEVIEWITEM_clear, NULL), GB_PROPERTY("Expanded", "b", CTREEVIEWITEM_expanded), GB_PROPERTY_READ("Children", "i", CTREEVIEWITEM_count), GB_PROPERTY_READ("Count", "i", CTREEVIEWITEM_count), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveChild", "b", CTREEVIEW_child, NULL), GB_METHOD("MoveParent", "b", CTREEVIEW_parent, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), GB_PROPERTY("Editable", "b", CTREEVIEWITEM_editable), GB_METHOD("Rename", NULL, CTREEVIEWITEM_rename, NULL), GB_END_DECLARE};/*************************************************************************** ColumnViewItem***************************************************************************/GB_DESC CColumnViewItemDesc[] ={ GB_DECLARE(".ColumnViewItem", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY_READ("Key", "s", CTREEVIEWITEM_key), GB_PROPERTY("Picture", "Picture", CTREEVIEWITEM_picture), GB_PROPERTY("Selected", "b", CTREEVIEWITEM_selected), GB_PROPERTY("Text", "s", CTREEVIEWITEM_text), GB_METHOD("EnsureVisible", NULL, CTREEVIEWITEM_ensure_visible, NULL), GB_METHOD("Delete", NULL, CTREEVIEWITEM_delete, NULL), GB_METHOD("Clear", NULL, CTREEVIEWITEM_clear, NULL), GB_PROPERTY("Expanded", "b", CTREEVIEWITEM_expanded), GB_PROPERTY_READ("Children", "i", CTREEVIEWITEM_count), GB_PROPERTY_READ("Count", "i", CTREEVIEWITEM_count), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveChild", "b", CTREEVIEW_child, NULL), GB_METHOD("MoveParent", "b", CTREEVIEW_parent, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), GB_METHOD("_get", "s", CTREEVIEWITEM_get, "(Column)i"), GB_METHOD("_put", NULL, CTREEVIEWITEM_put, "(Text)s(Column)i"), GB_PROPERTY("Editable", "b", CTREEVIEWITEM_editable), GB_METHOD("Rename", NULL, CTREEVIEWITEM_rename, NULL), //GB_PROPERTY("SortKey", "f", CTREEVIEWITEM_sort_key), GB_END_DECLARE};/*************************************************************************** ListView***************************************************************************/GB_DESC CListViewDesc[] ={ GB_DECLARE("ListView", sizeof(CTREEVIEW)), GB_INHERITS("Control"), GB_CONSTANT("None", "i", QListView::NoSelection), GB_CONSTANT("Single", "i", QListView::Single), GB_CONSTANT("Multi", "i", QListView::Multi), GB_CONSTANT("Extended", "i", QListView::Extended), GB_METHOD("_new", NULL, CLISTVIEW_new, "(Parent)Container;"), GB_METHOD("_free", NULL, CTREEVIEW_free, NULL), GB_PROPERTY("Mode", "i<ListView,None,Single,Multi,Extended>", CTREEVIEW_mode), //GB_PROPERTY("Drop", "b", CTREEVIEW_drop), GB_PROPERTY("Sorted", "b", CTREEVIEW_sorted), GB_PROPERTY("Editable", "b", CTREEVIEW_editable), GB_PROPERTY("ScrollBar", "i<Scroll>", CWIDGET_scrollbar), GB_PROPERTY("Border", "b", CWIDGET_border_simple), GB_PROPERTY_READ("Count", "i", CTREEVIEW_count), GB_PROPERTY_READ("Available", "b", CTREEVIEW_available), GB_METHOD("MoveTo", "b", CTREEVIEW_move_to, "(Key)s"), GB_METHOD("MoveCurrent", "b", CTREEVIEW_move_current, NULL), GB_METHOD("MoveFirst", "b", CTREEVIEW_first, NULL), GB_METHOD("MoveLast", "b", CTREEVIEW_last, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), //GB_METHOD("MoveBack", "b", CTREEVIEW_back, NULL), GB_METHOD("_get", ".ListViewItem", CTREEVIEW_get, "(Key)s"), GB_METHOD("Clear", NULL, CTREEVIEW_clear, NULL), GB_METHOD("Add", ".ListViewItem", CLISTVIEW_add, "(Key)s(Text)s[(Picture)Picture;(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_PROPERTY_READ("Current", ".ListViewItem", CTREEVIEW_current), GB_PROPERTY_READ("Key", "s", CTREEVIEW_key), GB_PROPERTY_READ("Item", ".ListViewItem", CTREEVIEW_item), GB_CONSTANT("_Properties", "s", CLISTVIEW_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "Click"), GB_PROPERTY_READ("ClientWidth", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientW", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientHeight", "i", CTREEVIEW_client_height), GB_PROPERTY_READ("ClientH", "i", CTREEVIEW_client_height), GB_EVENT("Select", NULL, NULL, &EVENT_Select), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_EVENT("Click", NULL, NULL, &EVENT_Click), GB_EVENT("Rename", NULL, NULL, &EVENT_Rename), GB_END_DECLARE};/*************************************************************************** TreeView***************************************************************************/GB_DESC CTreeViewDesc[] ={ GB_DECLARE("TreeView", sizeof(CTREEVIEW)), GB_INHERITS("Control"), GB_CONSTANT("None", "i", QListView::NoSelection), GB_CONSTANT("Single", "i", QListView::Single), GB_CONSTANT("Multi", "i", QListView::Multi), GB_CONSTANT("Extended", "i", QListView::Extended), GB_METHOD("_new", NULL, CTREEVIEW_new, "(Parent)Container;"), GB_METHOD("_free", NULL, CTREEVIEW_free, NULL), GB_PROPERTY("Mode", "i<TreeView,None,Single,Multi,Extended>", CTREEVIEW_mode), //GB_PROPERTY("Drop", "b", CTREEVIEW_drop), GB_PROPERTY("Root", "b", CTREEVIEW_show_root), GB_PROPERTY("Sorted", "b", CTREEVIEW_sorted), GB_PROPERTY("Editable", "b", CTREEVIEW_editable), GB_PROPERTY("ScrollBar", "i<Scroll>", CWIDGET_scrollbar), GB_PROPERTY("Border", "b", CWIDGET_border_simple), //GB_PROPERTY("Rename", "b", CTREEVIEW_rename), GB_PROPERTY_READ("Count", "i", CTREEVIEW_count), GB_PROPERTY_READ("Available", "b", CTREEVIEW_available), GB_METHOD("MoveCurrent", "b", CTREEVIEW_move_current, NULL), GB_METHOD("MoveTo", "b", CTREEVIEW_move_to, "(Key)s"), GB_METHOD("MoveFirst", "b", CTREEVIEW_first, NULL), GB_METHOD("MoveLast", "b", CTREEVIEW_last, NULL), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveChild", "b", CTREEVIEW_child, NULL), GB_METHOD("MoveParent", "b", CTREEVIEW_parent, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), GB_METHOD("MoveBack", "b", CTREEVIEW_back, NULL), GB_METHOD("_get", ".TreeViewItem", CTREEVIEW_get, "(Key)s"), GB_METHOD("Clear", NULL, CTREEVIEW_clear, NULL), GB_METHOD("Add", ".TreeViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_PROPERTY_READ("Current", ".TreeViewItem", CTREEVIEW_current), GB_PROPERTY_READ("Key", "s", CTREEVIEW_key), GB_PROPERTY_READ("Item", ".TreeViewItem", CTREEVIEW_item), GB_CONSTANT("_Properties", "s", CTREEVIEW_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "Click"), GB_PROPERTY_READ("ClientWidth", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientW", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientHeight", "i", CTREEVIEW_client_height), GB_PROPERTY_READ("ClientH", "i", CTREEVIEW_client_height), GB_EVENT("Select", NULL, NULL, &EVENT_Select), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_EVENT("Click", NULL, NULL, &EVENT_Click), GB_EVENT("Rename", NULL, NULL, &EVENT_Rename), GB_EVENT("Expand", NULL, NULL, &EVENT_Expand), GB_EVENT("Collapse", NULL, NULL, &EVENT_Collapse), GB_END_DECLARE};/*************************************************************************** ColumnView***************************************************************************/GB_DESC CColumnViewColumnDesc[] ={ GB_DECLARE(".ColumnViewColumn", 0), GB_VIRTUAL_CLASS(), GB_PROPERTY("Text", "s", CLISTVIEW_column_text), GB_PROPERTY("Alignment", "i<Align,Left,Center,Right>", CLISTVIEW_column_alignment), GB_PROPERTY("Width", "i", CLISTVIEW_column_width), GB_PROPERTY("AutoResize", "b", CLISTVIEW_column_auto_resize), //GB_PROPERTY("Numeric", "b", CLISTVIEW_column_numeric), GB_END_DECLARE};GB_DESC CColumnViewColumnsDesc[] ={ GB_DECLARE(".ColumnViewColumns", 0), GB_VIRTUAL_CLASS(), GB_METHOD("_get", ".ColumnViewColumn", CLISTVIEW_columns_get, "(Column)i"), GB_PROPERTY("Count", "i", CLISTVIEW_columns_count), GB_PROPERTY("Sort", "i", CLISTVIEW_columns_sort), GB_PROPERTY("Ascending", "b", CLISTVIEW_columns_ascending), //GB_METHOD("Adjust", NULL, CLISTVIEW_columns_adjust, NULL), GB_END_DECLARE};GB_DESC CColumnViewDesc[] ={ GB_DECLARE("ColumnView", sizeof(CTREEVIEW)), GB_INHERITS("Control"), GB_CONSTANT("None", "i", QListView::NoSelection), GB_CONSTANT("Single", "i", QListView::Single), GB_CONSTANT("Multi", "i", QListView::Multi), GB_CONSTANT("Extended", "i", QListView::Extended), GB_METHOD("_new", NULL, CCOLUMNVIEW_new, "(Parent)Container;"), GB_METHOD("_free", NULL, CTREEVIEW_free, NULL), GB_PROPERTY("Mode", "i<TreeView,None,Single,Multi,Extended>", CTREEVIEW_mode), //GB_PROPERTY("Drop", "b", CTREEVIEW_drop), GB_PROPERTY("Root", "b", CTREEVIEW_show_root), GB_PROPERTY("Sorted", "b", CTREEVIEW_sorted), GB_PROPERTY("Editable", "b", CTREEVIEW_editable), GB_PROPERTY("ScrollBar", "i<Scroll>", CWIDGET_scrollbar), GB_PROPERTY("Border", "b", CWIDGET_border_simple), GB_PROPERTY_READ("Count", "i", CTREEVIEW_count), GB_PROPERTY_READ("Available", "b", CTREEVIEW_available), GB_METHOD("MoveCurrent", "b", CTREEVIEW_move_current, NULL), GB_METHOD("MoveTo", "b", CTREEVIEW_move_to, "(Key)s"), GB_METHOD("MoveFirst", "b", CTREEVIEW_first, NULL), GB_METHOD("MoveLast", "b", CTREEVIEW_last, NULL), GB_METHOD("MoveNext", "b", CTREEVIEW_next, NULL), GB_METHOD("MovePrevious", "b", CTREEVIEW_previous, NULL), GB_METHOD("MoveChild", "b", CTREEVIEW_child, NULL), GB_METHOD("MoveParent", "b", CTREEVIEW_parent, NULL), GB_METHOD("MoveAbove", "b", CTREEVIEW_above, NULL), GB_METHOD("MoveBelow", "b", CTREEVIEW_below, NULL), GB_METHOD("MoveBack", "b", CTREEVIEW_back, NULL), GB_METHOD("_get", ".ColumnViewItem", CTREEVIEW_get, "(Key)s"), GB_METHOD("Clear", NULL, CTREEVIEW_clear, NULL), GB_METHOD("Add", ".ColumnViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_PROPERTY_READ("Current", ".ColumnViewItem", CTREEVIEW_current), GB_PROPERTY_READ("Key", "s", CTREEVIEW_key), GB_PROPERTY_READ("Item", ".ColumnViewItem", CTREEVIEW_item), GB_EVENT("Select", NULL, NULL, &EVENT_Select), GB_EVENT("Activate", NULL, NULL, &EVENT_Activate), GB_EVENT("Click", NULL, NULL, &EVENT_Click), GB_EVENT("Rename", NULL, NULL, &EVENT_Rename), GB_EVENT("Expand", NULL, NULL, &EVENT_Expand), GB_EVENT("Collapse", NULL, NULL, &EVENT_Collapse), GB_EVENT("ColumnClick", NULL, "(Column)i", &EVENT_ColumnClick), GB_PROPERTY_READ("Columns", ".ColumnViewColumns", CLISTVIEW_columns), GB_PROPERTY("Resizable", "b", CLISTVIEW_resizable), GB_PROPERTY("AutoResize", "b", CLISTVIEW_auto_resize), GB_PROPERTY("Header", "b", CTREEVIEW_header), GB_PROPERTY_READ("ClientWidth", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientW", "i", CTREEVIEW_client_width), GB_PROPERTY_READ("ClientHeight", "i", CTREEVIEW_client_height), GB_PROPERTY_READ("ClientH", "i", CTREEVIEW_client_height), GB_CONSTANT("_Properties", "s", CCOLUMNVIEW_PROPERTIES), GB_CONSTANT("_DefaultEvent", "s", "Click"), GB_END_DECLARE};/*************************************************************************** class CTreeView***************************************************************************/CTreeView CTreeView::manager;MyListViewItem *CTreeView::getItem(CTREEVIEW *treeview, char *key){ MyListViewItem *item = (*treeview->dict)[key]; if (item == 0) { GB.Error("Unknown item: '&1'", key); return NULL; } return item;}void CTreeView::raiseEvent(int ev, QListViewItem *it){ GET_SENDER(_object); MyListViewItem *old = THIS->item; if (!it) it = WIDGET->currentItem(); THIS->item = (MyListViewItem *)it; RAISE_EVENT(ev); THIS->item = old;}void CTreeView::selected(void){ raiseEvent(EVENT_Select, 0);}void CTreeView::activated(QListViewItem *it){ if (!it) return; raiseEvent(EVENT_Activate, it);}void CTreeView::clicked(QListViewItem *it){ if (!it) return; raiseEvent(EVENT_Click, it);}static void post_rename_event(void *object){ GB.Raise(object, EVENT_Rename, 0); GB.Unref(&object);}void CTreeView::renamed(QListViewItem *it, int col){ GET_SENDER(_object); if (it == 0) return; THIS->item = (MyListViewItem *)it; GB.Ref(THIS); GB.Post((void (*)())post_rename_event, (long)THIS);}void CTreeView::columnClicked(QListViewItem *it, const QPoint &p, int c){ GET_SENDER(_object); if (it == 0) return; THIS->item = (MyListViewItem *)it; GB.Raise(_object, EVENT_ColumnClick, 1, GB_T_INTEGER, c);}void CTreeView::expanded(QListViewItem *it){ raiseEvent(EVENT_Expand, it);}void CTreeView::collapsed(QListViewItem *it){ raiseEvent(EVENT_Collapse, it);}void CTreeView::headerClicked(int c){ CTREEVIEW *_object = (CTREEVIEW *)CWidget::get((QObject *)sender()); if (_object->sorted == c) _object->asc = !_object->asc; else _object->asc = true; _object->sorted = c; //WIDGET->setSorted(_object->sorted, _object->asc);}void CTreeView::headerSizeChange(int c, int os, int ns){// CTREEVIEW *_object = (CTREEVIEW *)CWidget::get((QObject *)sender());// updateLastColumn(WIDGET);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -