qamp/Qrakhen.TilingFrames
Qrakhen e41b1df0ba state 2025-12-03 08:36:36 +01:00
..
Controls state 2025-12-03 08:36:36 +01:00
Converters state 2025-12-03 08:36:36 +01:00
Models state 2025-12-03 08:36:36 +01:00
Themes state 2025-12-03 08:36:36 +01:00
AssemblyInfo.cs add tiling frames 2025-11-27 23:35:22 +01:00
Qrakhen.TilingFrames.csproj add tiling frames 2025-11-28 07:22:17 +01:00
README.md state 2025-12-03 08:36:36 +01:00

README.md

TilingPanels

Tiling window manager control library for WPF

CopaData.Ui.Wpf.TilingPanels

Cool Library to have tiling panels. Is that not cool? I think it very much is cool. Very nice, yes. Alpha & Beta. No Gamma or Delta. Just Alpha-Beta.

Data structure resembles a binary tree with uniform branch- and end-nodes (TilingPanels & TilingHosts).

Node

Panel

Host

Frame

Window

Node Structure

			   RootPanel
				 /  \
			    A    B 
			   /      \
		    Panel     Host
			 /  \      |-Frame (Single Frame)
			/    \
   		 Panel   Host
		  /	\	  |-Frame (Tab)
		 /	 .	  |-Frame (Tab)
	   Host
	    |-Frame (Tab)
	    |-Frame (Tab)
	    |-Frame (Tab)

Key Behaviours: - All Panels have information about how and where their content is split in two. - Every panel may have up to two children (Alpha/Beta), where Alpha is never null. - Beta may not be set (In a case of a single frame with no splits, for example). - If a child located at Alpha is detached, Beta will move to alpha, to ensure the 'Alpha is always set' paradigm. - If a child is detached and both alpha and beta result in being null, the entire Panel is detached from its parent. - Hosts are always at the end of the branches, everything above a Node is a Panel. - The things you're dragging around to re-order, separate and split panels are Frames. - Hosts contain Frames, which will be displayed as tabs if stacked atop each other, or as a single frame if only one is present. - All mutations of the tree structure expect the root node as their first argument. That is done so there's no two-way referencing and to keep stuff simple.