Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MapEditor: Collapse/scroll unselected levels (like in TreeEditor) #61

Open
aloparev opened this issue Mar 7, 2023 · 7 comments
Open
Labels
suggested enhancement Enhancement, which is not planned yet for being worked on

Comments

@aloparev
Copy link

aloparev commented Mar 7, 2023

As a power user, I create big trees with many children. As a result, it gets difficult to see through and navigate. It looks like (un)folding could solve this problem.

Example tree:
parent
-- son
-- daughter

In the default view, all three elements should be visible. After folding, only the parent node should be visible. A graphical indicator that the parent holds folded children would be helpful.

Appreciate your time and efforts with VYM, Uwe!

@insilmaril
Copy link
Owner

insilmaril commented Mar 7, 2023

Cool, I am not the only power user :-)

Here's my approach to bigger maps (need to make a video one day to show this):

I have the TreeEditor open (usually left of the map). Select "Parent" and then press the "<" key - every subtree folds in the TreeEditor at least, which I mainly use for navigation. Similar if you would select "son" first: All siblings of parents would fold and also everything down to the son/daughter level.

Is that something you would need in the MapEditor, too?

Maybe could be scripted, or implemented in the code itself...

@aloparev
Copy link
Author

aloparev commented Mar 7, 2023

Yeah, the way it works in TreeEditor is exactly how I imagine it for MapEditor too.

Maybe could be scripted, or implemented in the code itself...

Is that sth I do on my end? If so, please tell me more.

@insilmaril
Copy link
Owner

You could open the script editor and script output (e.g. Alt+S and A+Shift+S) and start with this (copied mostly from demos/scripts/iterating-branches.vys):

vym.clearConsole();
m1 = vym.currentMap();

m1.initIterator("foobar");
print ("Starting with branch: " + m1.getHeadingPlainText() );

while (m1.nextIterator("foobar") )
{
	print ("Selected branch: " + m1.getHeadingPlainText() );
	if (m1.isScrolled()) {
		print ("  is scrolled");
	}	
}

At the moment there is no command available returning the current depth(), I try to add that to the next beta-5, could be useful in that context

@insilmaril
Copy link
Owner

insilmaril commented Mar 8, 2023

For reference: The current code for collapsing in TreeEditor is in

void VymView::collapseUnselected()

insilmaril added a commit that referenced this issue Mar 8, 2023
- Improved list of available commands, now also in GUI
  and not just commandline
- Show return type
- Added a few missing command descriptions
- Added depth() command to help with #61
insilmaril added a commit that referenced this issue Mar 15, 2023
* Use central container in horizonzal layouts

* More debug output

* Fixed layout. Finally. I hope

* Updated FIXMEs

* Minor improvements

- Adjusted scene size after VymModel::reposition by
  calling MapEditor::minimizeView

- Removed unused code

* Version 2.9.505

- Rotate also outerContainer

* Updated FIXMEs

* Removed unused refPos

* Updated FIXMEs

* Fixed rotation in horizontal layouts

The width and height of rotated child was considered for required space,
but not for the actual positioning

* Fixed horizontal positioning of heading with flags

* Minor optimization

* Set rect of pixmapItem

* Fixed flags layout

Horizontal containers were not positioned correctly, if local center was
not in local origin.

* Updated FIXMEs

* Removed box around inner container

* Updated FIXMEs

* Introducing FrameContainers

* Removed unused methos setPos

* Setting frame type works again

also with undo/redo

* First support to toggle including children into frame

Also improved getSelectedBranches to accept a default branch instead of
real selection

* Continued toggling of includeChildren

* Removed unneeded call to setItem in BPE

* Removed unused code

* Fixed navigating the tree

* Set frame brush color

* Version 2.9.506

* Re-enabled most of the frame features

(frame padding still missing)

* Fixed background color of tasks in TaskEditor

* Fixed context menu for tasks

* Updated FIXMEs

* Updated FIXMEs

* Branch property editor updates frame colors and pen width

* Fixed multiple lines in heading

* Fixed updateVisibilty when moving to scrolled branch

* Added layouts for images in demo

* Fixed image and HTML export

* Updated FIXMEs

* Updated FIXMEs

* Removed unused code

* Initial support of XLinks with Containers

* Updated FIXMEs

* Less decimals as default i qpointFToString

* Reactivated (most of) XLinks

- Handling of control points and selecting path or points
- Removed unused code, e.g. in MapObj
- Not available yet: saving and correct arrowheads

* Removed unused code

* Fixed XLink arrows

* Cleanup code

* Removed context menu when clicking into heading near xlink

Didn't work properly anyway.

* Double click to edit heading working again

* Removed call to XLO::initC1

* Updated FIXMEs

* Fixed reading xlink ctrl points

* xlink end arrow has default color again

* - Link colors and removal of unused code (LinkableMapObj)

* Updated FIXMEs

* Preparations for using styles for BranchContainers

* FrameContainer fixes
 - correct position
 - include children

* s/NULL/nullptr/g

* Some more explanation

* Fixed z values of selection boxes and optimized moving

* Update links to tmp parent while moving

* Updated FIXMEs

* Updated FIXMEs

* Re-enabled bottomline of links

* Feature: Alpha channel for frame backround color

* Improving links and bottomline

* BranchContainer inherits FrameContainer

Simplifies access of frame properties e.g. during loading of map.

* Fixed z-values of frames

* Fixed background colors of frames for taskEditor

* Updated FIXMEs

* Minor move of one line

* Replaced childItems -> childContainers

* Updated FIXMEs

* Fixed wrong positioning caused by empty heading

A whitespace now guarantees a minimum size.

* Updated FIXMEs

* Fixed nested frames

* Fixed wrong default layout for new mapcenter

* Bugfix Switch to just loaded demo map

* Calculate angle of rotated headings (mapped to scene)

* Load/save rotation of heading and content for branches

* Fixed selecting item after load

* Fixed frames and including children

* Introduced MapDesign, fixed horizontal layout with frames

MapDesign will provide the default visual appearnce of a map.

* Default design for imagesContainer

* Removed unused method

* Increased size of buttons to select frame colors

* Improved selectableContainer

* Introducing mapDesign in VymModel

* Fixed crash when creating branchesContainer in tmpParentContainer

* Images can be selected

* Fixed link colors

* Improved setLinkColorHint

* Removed unused code

* Renamed alignment

* Fixed designs for sub-branches and images

* More cleanup of style related code, moving to updateStyles

* Remove unused image- and branchContainers

* Fixed linkstyle Line

* Improving parabel links

* Fixed LinkStyle::Parabel

* Fixed switching style

* Deactivated unnecessary code

* LinkContainer::Parabel drawn with right color

* Fixed linkColorHint

* Updated FIXMEs

* Fixed scroll flags

* FrameContainer is own container, not parent class of BranchContainer

* Ornaments container can have frame

Instead of dedicated FrameContainer within BranchContainer now the
ornamentsContainer (and later inner/outerContainer) can have frames.

This makes z-ordering of links easier, so that links can go below
frames.

* Reworking frames (WIP)

FrameContainers are now dedicated objects again and no longer identical
to OrnamentsContainer. By doing so, links will later be enabled to go
below both parent and child frame. The links will be maintained in the
LinkContainer, which will be a collection of *downlinks*. (Currently
it's one uplink per child).

* First drawing of LinkObj

* Correct stacking of PolyLine LinkObj using *parents* LinkContainer

* Moved functionality from LinkContainer to LinkObj

LinkContainer now only is parent QGraphicsItem to all of the upLinks of
the children. Thus these links will have correct stacking order and are
drawn *below* FrameContainers.

* Updated FIXMEs

* frame rotation no longer required

* Updated FIXMEs

* Unlink children LinkObjs first in destructor

* Updated FIXMEs

* Fixed deleting links when subtree is deleted

* Fixed (zero) size of selection container

Overlay containers now automatically get a size set in parent, once all
children have been repositioned.

* Removed unused z-values

* Updated FIXMEs

* Updated FIXMEs

* Revert "Updated FIXMEs"

This reverts commit 6576e72.

* Updated FIXMEs

* Fixed positioning of mapcenters

* Set selection color, support alpha

* Fixed z-ordering of selection

Basically removed all setZValue calls, the ordering in childItems list
is important for z-ordering. stackBefore also only works for items with
*same* z-value.

* Updated FIXMEs

* Fixed broken horizontal layout

* Cleanup

* Removed unused code

* Fixed upLink positions

* Bugfix: Read map attributes for default map

* Fixed various issues with bottomlines and link positions

* Fixed z-ordering of links for corner cases

* Remove unneeded z-values

* Only create FlagRowContainers on demand

Containers now can get a zPos, when being added to their parent, thus
they will be ordered by their zPos. FRCs are inserted using this zPos.

* Only create FrameContainer on demand

* OrnamentsContainer is now child of FrameContainer

Container structure is adapted dynamically. LinkContainer is child of
innerContainer to keep links below innerFrame.

* Fixed snapback animation

Before animation actually started, containers were at wrong position,
causing a visible "jumping" for the fraction of a second.

* Bugfix: Remember index of last tabWidget in BranchPropertyEditor

* Feature: Inner and outer frames for one branch

Initial setup support two frames for each branch. One around the heading
and flags, another one including the whole subtree.

(The latter one still has some drawing errors at this point)

* Fixed setting/getting rotation of outerFrame

* Removed unused transformation centers for rotations

* Removed unused code

* Undo/redo for rotations

* Moved file related constants to namespace "File"

* Initial commit to replace current XML parsing with QXmlStreamReader

* VymReader supports frames now

* Support for <select> and checks for allowed xml elements

* Updated FIXMEs

* Updated FIXMEs

* Updated FIXMEs

* Added support for setting element

Map-local key/value pairs. Supports both pre- and post 2.5.0 syntax

* Simple renaming of xml parser

* Removed whitespace and moveRel reference

* Fixed renamed xml parser

* Bugfix: Unset vymLink in undo/redo

* Fixed some broken tests

* Feature: Don't repeat commands in undo history

Some commands are not repeated, but only the difference between
original state and last change will be saved. Currently this works for

- Changing headings
- Changing notes
- Rotating headings or subtrees

Also fixed updating the BranchPropertyEditor after undo/redo.

* Updated FIXMEs

* Fixed background color of tasks in TaskEditor

* Fixed images initial floating layout

* Added support for standard- and userflags

* Removed debug output (again)

* Fixed flags

* Fixed userflag - detect missing resource

* Fixed saving default link color

* Fixed undo of setting frame type to NoFrame

Save all parameters of frame in undoBlock

* Started to extend testing to support checks of legacy versions

* Added test map for legacy heading and vymnote

* Improved tests

- Colored output
- Loading of testmaps (*.vym and *.xml)
- Starting to test legacy data (positions and text)

* Updated FIXMEs for parsing xml

* parseVymText uses new XML reader now

* Switch to new code to parse vym maps

Current limitations:
- Not all xml elements found in vym maps supported yet
  (images, attributes, userflags, ...)
- FreeMind not supported yet

* Added tests and support for legacy positions

- relPos
- absPos

* Updated FIXMEs

* - Renamed "createMapCenter" command to "createMapCenterAtPos"
- Updated FIXMEs

* Fixed ImportAdd

* Fixed ImportReplace

* Added map imports to file menu

Removed comments

* Fixed builds before merging develop

* Added and improved tests

* More tests and scripting commands - saveSelection

* Updated FIXMEs

* Fixed vym wrapper to execute tests properly

* Fixed reading userflags

* Added test and testmap to check for active userflag

New command: hasFlag() will check for named flag both in standard- and
userflags row

* Updated FIXMEs

* Added testmap to test userflag

* Fixed loading tasks, extended tests

* Added floatimages

* Updated FIXMEs

* Added attributes to xmlstreamreader

* Updated FIXMEs

* More commands and tests related to attributes

* Reordered tests

* Fixes when parsing xml (found by tests)

- wrong position when pasting subtrees
- undo of deleting mapcenter had no lastBranch and failed. Use rootItem
  now.

* Changed detection of repeated commands

Only "<vymnote" should be detected now

* Minor cleanup

* Fixed colors for dark theme in findWidget

* Version 2.9.0 Beta 4

Minor fix to transmit localeName

* Bugfix: Fixed outer frame widget visible on all BranchPropEditor tabs

* Disabled translations for time being

* Removed unneeded reposition() when pasting

* Change: maps with xlinks saved in maps before 1.13.2 can no longer be read

This only affects maps, which have not been saved for more than 10
years. Workaround would be to load with version newer than 1.13.2 and
before 3.0.0.

Reason is the xlink information is no longer part of the branch within
the xml file, but rather at the end of the map data.

* Remove debug output

* Set branch heading colors via MapDesign

* Alternative mapDesign for testing

* Moved BranchContainer::StyleUpdateMode -> MapDesign::UpdateMode

* Adjusted frame style for new mapCenters in dark theme

* Improved scripting capabilities

- Improved list of available commands, now also in GUI
  and not just commandline
- Show return type
- Added a few missing command descriptions
- Added depth() command to help with #61

* Minor style fix

* Improved output for scripting commands on commandline

* Minor translation update

Text for Help->Show script commands

* Updated build date

* Updated documentation vym.pdf

* Updated greek translations provided by Yannis Kaskamani

* Version 2.9.0 Beta 5

* Adapt link colors in about vym dialog to dark theme

* Fixed typo in German translation

* Added missing file to generate vym.pdf

* Refactored debugInfo (removed duplicate code)

* Added quick colors

- now also with dark blue (again)
- shortcuts for gray and white in macros fixed

* Bugfix: Finding translations on Windows

Currently created in CMAKE_BINARY_DIR and need to be copied to
CMAKE_SOURCE_DIR for testing.

* Version 2.9.0 Beta 6

* Fixed German translation

* Improved debug output

* Changed manual selection of translations

- environment variable LANG is ignored now
- Option "locale" is used to load from translationsDir

* Version 2.9.0 - Beta 7
@insilmaril insilmaril added suggested enhancement Enhancement, which is not planned yet for being worked on and removed enhancement labels Mar 17, 2023
@GReagle
Copy link

GReagle commented Oct 27, 2023

This feature is already provided, it is called scroll.

@insilmaril
Copy link
Owner

insilmaril commented Nov 7, 2023

This feature is already provided, it is called scroll.

Not exactly: As I understood it the new feature would be to scroll everything which is not the already selected branch. This is implemented in TreeEditor with the "<"-key, but not yet in MapEditor.

@GReagle
Copy link

GReagle commented Nov 7, 2023

This feature is already provided, it is called scroll.

Not exactly: As I understood it the new feature would be to scroll everything which is not the already selected branch. This is implemented in TreeEditor with the "<"-key, but not yet in MapEditor.

Thank you for explaining your understanding of the issue. In any case, hitting the "s" key in the map editor is a great feature.

@insilmaril insilmaril changed the title Add fold and unfold functionality MapEditor: Collapse/scroll unselected levels (like in TreeEditor) Nov 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
suggested enhancement Enhancement, which is not planned yet for being worked on
Projects
None yet
Development

No branches or pull requests

3 participants