void SetExpansionState(ND* node, bool expanded) { if(node == NULL){ return; } if (expanded) node->flags |= 1 << NODE_EXPANDED; else node->flags &= ~(1 << NODE_EXPANDED); if (node->next != NULL) SetExpansionState(node->next, expanded); if (node->children != NULL) SetExpansionState(node->children, expanded); }
void FDetailItemNode::Initialize() { if( ( Customization.HasCustomWidget() && Customization.WidgetDecl->VisibilityAttr.IsBound() ) || ( Customization.HasCustomBuilder() && Customization.CustomBuilderRow->RequiresTick() ) || ( Customization.HasPropertyNode() && Customization.PropertyRow->RequiresTick() ) || ( Customization.HasGroup() && Customization.DetailGroup->RequiresTick() ) ) { // The node needs to be ticked because it has widgets that can dynamically come and go bTickable = true; ParentCategory.Pin()->AddTickableNode( *this ); } if( Customization.HasPropertyNode() ) { InitPropertyEditor(); } else if( Customization.HasCustomBuilder() ) { InitCustomBuilder(); } else if( Customization.HasGroup() ) { InitGroup(); } if (Customization.PropertyRow.IsValid() && Customization.PropertyRow->GetForceAutoExpansion()) { SetExpansionState(true); } // Cache the visibility of customizations that can set it if( Customization.HasCustomWidget() ) { CachedItemVisibility = Customization.WidgetDecl->VisibilityAttr.Get(); } else if( Customization.HasPropertyNode() ) { CachedItemVisibility = Customization.PropertyRow->GetPropertyVisibility(); } else if( Customization.HasGroup() ) { CachedItemVisibility = Customization.DetailGroup->GetGroupVisibility(); } const bool bUpdateFilteredNodes = false; GenerateChildren( bUpdateFilteredNodes ); }
int main(void) { int l_init = 0; l_init = zlog_init("/etc/zlog.conf"); if (l_init) { printf("logging init failed"); return -1; } c = zlog_get_category("hngui"); if (!c) { printf("Logging init (category) fail\n"); return -1; } zlog_info(c, "Program starting... "); DIR *d; struct dirent *dir; d = opendir("/var/tmp"); if (d) { while ((dir = readdir(d)) != NULL) { zlog_info(c, "%s", dir->d_name); } closedir(d); } zlog_info(c, "Created Tree From Sample Text.."); SetExpansionState(tree, TRUE); LogPrintTree(c, tree, PRINT_ONLY_EXPANDED_NODES); zlog_info(c, "Tree Size: %d\n", TotalSize(tree)); initscr(); mousemask(ALL_MOUSE_EVENTS, NULL); cbreak(); noecho(); nonl(); curs_set(0); keypad(stdscr, TRUE); start_color(); curs_set(0); init_pair(1, COLOR_YELLOW, COLOR_BLACK); init_pair(2, COLOR_RED, COLOR_BLACK); init_pair(3, COLOR_YELLOW, COLOR_BLUE); init_pair(4, COLOR_RED, COLOR_BLUE); int startx, starty, width, height; height = LINES - 2; width = COLS - 2; starty = (LINES - height) / 4; /* Calculating for a center placement */ startx = (COLS - width) / 2; /* of */ refresh(); win = create_newwin(height, width, starty, startx); if (win == NULL) { zlog_info(c, "Window Was null...\n"); endwin(); printf("Window was null??\n"); return -1; } zlog_info(c, "Rendering Tree into window %p \n", win); RenderTreeIntoWindow(tree); refresh(); wrefresh(win); int ch; while ((ch = getch()) != KEY_F(4)) { zlog_info(c, "Trapped Keypress %d", ch ); MEVENT event; switch (ch) { case KEY_RESIZE: zlog_info(c, "Resize()"); RenderTreeIntoWindow(tree); refresh(); wrefresh(win); break; case KEY_F(3): zlog_info(c, "F3=> Refresh"); RefreshData(); break; case KEY_LEFT: zlog_info(c, "Left key"); toggleExpand(win, false); break; case KEY_RIGHT: zlog_info(c, "Right key"); toggleExpand(win, true); break; case KEY_UP: zlog_info(c, "Up Key"); moveUp(win); break; case KEY_DOWN: zlog_info(c, "Down Key"); moveDown(win); break; } if (getmouse(&event) == OK) { zlog_info(c, "Mouse => %d, %d", event.x, event.y); } //LogPrintTree(c, tree, PRINT_ALL_TREE); } endwin(); return 0; }
void FDetailItemNode::ToggleExpansion() { SetExpansionState( !bIsExpanded ); }
void FSequencerFolderNode::Drop( const TArray<TSharedRef<FSequencerDisplayNode>>& DraggedNodes, EItemDropZone ItemDropZone ) { const FScopedTransaction Transaction( NSLOCTEXT( "SequencerFolderNode", "MoveIntoFolder", "Move items into folder." ) ); GetFolder().SetFlags(RF_Transactional); GetFolder().Modify(); for ( TSharedRef<FSequencerDisplayNode> DraggedNode : DraggedNodes ) { TSharedPtr<FSequencerDisplayNode> ParentSeqNode = DraggedNode->GetParent(); switch ( DraggedNode->GetType() ) { case ESequencerNode::Folder: { TSharedRef<FSequencerFolderNode> DraggedFolderNode = StaticCastSharedRef<FSequencerFolderNode>( DraggedNode ); UMovieScene* FocusedMovieScene = GetParentTree().GetSequencer().GetFocusedMovieSceneSequence()->GetMovieScene(); if ( ItemDropZone == EItemDropZone::OntoItem ) { GetFolder().AddChildFolder( &DraggedFolderNode->GetFolder() ); } else { FocusedMovieScene->Modify(); FocusedMovieScene->GetRootFolders().Add( &DraggedFolderNode->GetFolder() ); } if ( ParentSeqNode.IsValid() ) { checkf( ParentSeqNode->GetType() == ESequencerNode::Folder, TEXT( "Can not remove from unsupported parent node." ) ); TSharedPtr<FSequencerFolderNode> ParentFolder = StaticCastSharedPtr<FSequencerFolderNode>( ParentSeqNode ); ParentFolder->GetFolder().Modify(); ParentFolder->GetFolder().RemoveChildFolder( &DraggedFolderNode->GetFolder() ); } else { FocusedMovieScene->Modify(); FocusedMovieScene->GetRootFolders().Remove( &DraggedFolderNode->GetFolder() ); } break; } case ESequencerNode::Track: { TSharedRef<FSequencerTrackNode> DraggedTrackNode = StaticCastSharedRef<FSequencerTrackNode>( DraggedNode ); if( ItemDropZone == EItemDropZone::OntoItem ) { GetFolder().AddChildMasterTrack( DraggedTrackNode->GetTrack() ); } if ( ParentSeqNode.IsValid() ) { checkf( ParentSeqNode->GetType() == ESequencerNode::Folder, TEXT( "Can not remove from unsupported parent node." ) ); TSharedPtr<FSequencerFolderNode> ParentFolder = StaticCastSharedPtr<FSequencerFolderNode>( ParentSeqNode ); ParentFolder->GetFolder().Modify(); ParentFolder->GetFolder().RemoveChildMasterTrack( DraggedTrackNode->GetTrack() ); } break; } case ESequencerNode::Object: { TSharedRef<FSequencerObjectBindingNode> DraggedObjectBindingNode = StaticCastSharedRef<FSequencerObjectBindingNode>( DraggedNode ); if ( ItemDropZone == EItemDropZone::OntoItem ) { GetFolder().AddChildObjectBinding( DraggedObjectBindingNode->GetObjectBinding() ); } if ( ParentSeqNode.IsValid() ) { checkf( ParentSeqNode->GetType() == ESequencerNode::Folder, TEXT( "Can not remove from unsupported parent node." ) ); TSharedPtr<FSequencerFolderNode> ParentFolder = StaticCastSharedPtr<FSequencerFolderNode>( ParentSeqNode ); ParentFolder->GetFolder().Modify(); ParentFolder->GetFolder().RemoveChildObjectBinding( DraggedObjectBindingNode->GetObjectBinding() ); } break; } } } SetExpansionState( true ); ParentTree.GetSequencer().NotifyMovieSceneDataChanged( EMovieSceneDataChangeType::MovieSceneStructureItemsChanged ); }