コード例 #1
0
ファイル: BrowseWnd.cpp プロジェクト: xt9852/TestSet
/**
 *\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;
}
コード例 #2
0
void DialogEditTimeRange::on_addButton_clicked()
{
    TimeRange t;
    t.isNewRange = true;
    t.dayOfWeek.set();

    addTreeItem(t);
}
コード例 #3
0
// 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;
}
コード例 #4
0
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();
}
コード例 #5
0
ファイル: DirectoryDialog.cpp プロジェクト: Syntro/SyntroCore
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;
	}
}
コード例 #6
0
// 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;
}
コード例 #7
0
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);
}
コード例 #8
0
ファイル: BrowseWnd.cpp プロジェクト: xt9852/TestSet
/**
 *\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;
}