/** *\fn HTREEITEM createItem(const char *path) *\brief 创建并得到树节点 *\param[in] const char * path 路径 *\return HTREEITEM 0成功,其它失败 */ HTREEITEM CBrowseWnd::createItem(const char *path) { VECTOR_STR vectorStr; CStrConver::TokenizeData(path, "/", vectorStr); HTREEITEM hItem = TreeView_GetRoot(tree_.m_hWnd); if (NULL == hItem) { hItem = addTreeItem(NULL, "/", false); // 根节点 } HTREEITEM hChild = NULL; for (UINT i = 0; i < vectorStr.size(); i++) { hChild = findTreeItem(hItem, vectorStr[i].c_str()); if (NULL == hChild) { hChild = addTreeItem(hItem, vectorStr[i].c_str(), false); } tree_.SendMessage(TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem); hItem = hChild; } return hItem; }
void DialogEditTimeRange::on_addButton_clicked() { TimeRange t; t.isNewRange = true; t.dayOfWeek.set(); addTreeItem(t); }
// add definition to be managed - returns true on success bool FSMElementManager::addDefinition( FSMDefinitionIfc* poInDefinition) { if ( !poInDefinition ) return false; if ( moDefinitions.contains( poInDefinition->getName() ) ) return false; // add definition to map moDefinitions[ poInDefinition->getName()] = poInDefinition; // add definition info addDomDefinitionInfo( poInDefinition ); // create tree item and add to navigation tree addTreeItem( poInDefinition ); return true; }
void DialogEditTimeRange::reloadTimeRanges() { ui->treeRanges->clear(); vector<TimeRange> trange_sorted; auto sortTimeRange = [&trange_sorted](vector<TimeRange> &range, int day) { for (TimeRange &t: range) { auto it = std::find(trange_sorted.begin(), trange_sorted.end(), t); if (it != trange_sorted.end()) { //timerange already in trange_sorted, add the day of week flag it->dayOfWeek.set(day); } else { TimeRange newtr = t; newtr.dayOfWeek.reset(); newtr.dayOfWeek.set(day); trange_sorted.push_back(newtr); } } }; sortTimeRange(input->range_monday, 0); sortTimeRange(input->range_tuesday, 1); sortTimeRange(input->range_wednesday, 2); sortTimeRange(input->range_thursday, 3); sortTimeRange(input->range_friday, 4); sortTimeRange(input->range_saturday, 5); sortTimeRange(input->range_sunday, 6); for (TimeRange &range: trange_sorted) addTreeItem(range); //reload months for (uint i = 0;i < items_months.size();i++) items_months[i]->setChecked(input->range_months.test(i)); ui->groupBoxRange->setEnabled(false); clearRangeEdit(); }
void DirectoryDialog::DMNewDirectory(int index) { QMutexLocker locker(&(m_directoryMgr->m_lock)); QTreeWidgetItem *twi; DM_CONNECTEDCOMPONENT *connectedComponent = m_directoryMgr->m_directory + index; if (!connectedComponent->valid) return; // not a valid entry TRACE1("Displaying new directory from %s", qPrintable(SyntroUtils::displayUID(&(connectedComponent->connectedComponentUID)))); DM_COMPONENT *component = connectedComponent->componentDE; while (component != NULL) { if ((twi = findTreeItem(component)) == NULL) addTreeItem(connectedComponent, component); else updateTreeItem(twi, component); component = component->next; } }
// add element to be managed - returns true on success bool FSMElementManager::addElement( FSMElementIfc* poInElement ) { if ( !poInElement ) return false; if ( moElements.contains( poInElement->getId() ) ) { return false; } moElements[ poInElement->getId() ] = poInElement; // add fsm info addDomFSMInfo( poInElement); // add scene related info addDomSceneInfo( poInElement ); // create tree item and add to navigation tree addTreeItem( poInElement ); return true; }
void TreeInspector::treeParseRecursive(ds::ui::Sprite* sp, const int indent){ addTreeItem(sp, indent); sp->forEachChild([this, indent](ds::ui::Sprite& chill){ treeParseRecursive(&chill, indent + 1); }, false); }
/** *\fn int updateFileList(HTREEITEM hItem) *\brief 更新该节点的文件列表 *\param[in] HTREEITEM hItem 树节点 *\return int 0成功,其它失败 */ int CBrowseWnd::updateFileList(HTREEITEM hItem) { if (NULL == hItem || 1 == (int)hItem) return -1; // 连接已断开,重连 if (ssh_param_.exit) { _beginthread(sftp_thread_func, 0, &ssh_param_); return 0; } // 得到当前路径 char path[1024] = ""; getPath(hItem, path); // 得到路径 // 目录连接 if (isLink(hItem)) { list_.SetFocus(); sftp_get_link_path(&ssh_param_, path, path, sizeof(path)-1); hItem = createItem(path); } // 得到子树 mapStrHtreeitem map; getSubtree(hItem, map); // 设置路径 path_.SetWindowText(path); // 得到文件列表 char *dir = new char[1024*1024]; int ret = sftp_get_dir(&ssh_param_, path, dir, 1024*1024); if (0 != ret) { ssh_param_.exit = TRUE; map.clear(); delete[] dir; return ret; } // 不刷新窗体 tree_.SetRedraw(FALSE); list_.SetRedraw(FALSE); list_.SendMessage(LVM_DELETEALLITEMS, 0, 0); char line[1024]; char filename[1024]; for (int i = 0; 0 != dir[i]; ) { strncpy_s(line, &dir[i+1], dir[i]); line[dir[i]] = '\0'; VECTOR_STR data; CStrConver::TokenizeData(line, " ", data); if (data.size() < 9) continue; // 文件名 strcpy_s(filename, sizeof(filename)-1, data[8].c_str()); for (UINT j = 9; j < data.size(); j++) // 可能文件名中包含空格,再重新组成完整文件名 { strcat_s(filename, " "); strcat_s(filename, data[j].c_str()); } // 目录或连接 bool isDir = ('d' == data[0].c_str()[0]); bool isLink = ('l' == data[0].c_str()[0]); bool isDirLnk = false; if (isLink) { char src[1024]; sprintf_s(src, "%s%s", path, filename); char des[1024]; isDirLnk = (1 == sftp_get_link_path(&ssh_param_, src, des, sizeof(des)-1)); } if (isDir || isDirLnk) { mapStrHtreeitem::iterator iter = map.find(filename); if (map.end() == iter) { addTreeItem(hItem, filename, isLink); } else { map.erase(filename); } } else // 文件 { addListItem(filename, data[4].c_str(), data[5].c_str(), data[6].c_str(), data[7].c_str(), &data[0][1], data[2].c_str(), data[3].c_str(), hItem, isLink); } i += dir[i] + 1; } delete[] dir; // 删除多余的子节点 for (mapStrHtreeitem::iterator iter = map.begin(); iter != map.end(); ++iter) { tree_.SendMessage(TVM_DELETEITEM, 0, (LPARAM)iter->second); } tree_.SendMessage(TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem); tree_.SendMessage(TVM_SELECTITEM, TVGN_CARET, (LPARAM)hItem); list_.SendMessage(LVM_SORTITEMSEX, 0, (LPARAM)CompareFunc); tree_.SetRedraw(TRUE); list_.SetRedraw(TRUE); return 0; }