aboutsummaryrefslogtreecommitdiffstatsci
path: root/Samples/DebugLogViewer/ui
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-07-16 20:08:03 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2025-07-16 20:08:03 +0200
commit149205e8ebe5c4ab1ca52ca700ff754aabdf14aa (patch)
treee0d567ae9a304ec915e49a25e42af1803e3d83ed /Samples/DebugLogViewer/ui
parente96fecb4bb512ee47e9df0224e779b24d686bc30 (diff)
DebugLogViewer, DockTests
Diffstat (limited to 'Samples/DebugLogViewer/ui')
-rw-r--r--Samples/DebugLogViewer/ui/CrowEdit.style141
-rw-r--r--Samples/DebugLogViewer/ui/DbgEventTreeItems.itemp70
-rw-r--r--Samples/DebugLogViewer/ui/DbgEventView.template44
-rw-r--r--Samples/DebugLogViewer/ui/DbgEvtTooltip.crow42
-rw-r--r--Samples/DebugLogViewer/ui/DbgWidgetEventListItems.itemp11
-rw-r--r--Samples/DebugLogViewer/ui/EnumSelector.template21
-rw-r--r--Samples/DebugLogViewer/ui/IconCommand.itmp10
-rw-r--r--Samples/DebugLogViewer/ui/MenuButton.template11
-rw-r--r--Samples/DebugLogViewer/ui/MenuItem.itmp16
-rw-r--r--Samples/DebugLogViewer/ui/WidgetRecord.itemp12
-rw-r--r--Samples/DebugLogViewer/ui/main.crow122
-rw-r--r--Samples/DebugLogViewer/ui/winDebugLog.crow103
-rw-r--r--Samples/DebugLogViewer/ui/winLogGraph.crow30
-rw-r--r--Samples/DebugLogViewer/ui/winLogNavigation.crow45
14 files changed, 678 insertions, 0 deletions
diff --git a/Samples/DebugLogViewer/ui/CrowEdit.style b/Samples/DebugLogViewer/ui/CrowEdit.style
new file mode 100644
index 00000000..eccf2c6d
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/CrowEdit.style
@@ -0,0 +1,141 @@
+SmallUIFont = "sans, 12";
+SmallFont = "consolas, 12";
+InactiveTabBackground = "DarkGrey";
+SelectedTabBackground = "Onyx";
+InactiveTabForeground = "Grey";
+SelectedTabForeground = "White";
+MenuIconSize = "22";
+
+ControlForeground = "LightGrey";
+ControlCaptionHoverColor = "White";
+
+ControlHighlight = "RoyalBlue";
+ControlIdle = "Jet";
+
+DockWindowBackground = "DarkGrey";
+
+TreeItemBorderCornerRadius = "0";
+TreeItemBorderFG = "Transparent";
+TreeItemBorderHighlightFG = "DimGrey";
+TreeItemBackground = "Transparent";
+//TreeItemHighlight = "
+
+TxtInFileDialog {
+ Margin = "2";
+ Font = "mono, 14";
+}
+
+Editor {
+ Focusable="true";
+ Height="Stretched";
+ Width="Stretched";
+ Background="White";
+ Foreground="Black";
+ MouseWheelSpeed = "20";
+ BubbleEvents ="None";
+ ClipToClientRect = "true";
+ MouseCursor = "ibeam";
+ CacheEnabled = "true";
+}
+
+icon {
+ Width="14";
+ Height="14";
+}
+MemberViewLabel {
+ Margin="1";
+ Height="Fit";
+ Width="50%";
+ Background="White";
+}
+MemberViewHStack {
+ Focusable="true";
+ Height="Fit";
+ Spacing="1";
+ MouseEnter="{Background=SteelBlue}";
+ MouseLeave="{Background=Transparent}";
+}
+
+IcoBut {
+ Template = "#ui.IcoBut.template";
+ MinimumSize = "10,10";
+ Width = "32";
+ Height = "32";
+}
+Spinner {
+ Template = "#ui.spinner.template";
+}
+TreeIcon {
+ Width="16";
+ Height="16";
+}
+TreeIconSmall {
+ Width="12";
+ Height="12";
+}
+TreeLabel {
+ Foreground="White";
+ Margin = "1";
+}
+TreeLabel2 {
+ Foreground="Black";
+ Background="LightGrey";
+ Margin = "1";
+ Font = "sans, 9";
+}
+
+Splitter {
+ Thickness="1";
+ Background="Transparent";
+ Hover="{Background=White}";
+ Unhover="{Background=Transparent}";
+}
+
+MenuItem {
+ Template = "#ui.MenuItem.template";
+}
+
+MenuIcon {
+ Margin = "1";
+ Width = "${MenuIconSize}";
+ Height = "${MenuIconSize}";
+}
+
+EnumSelector {
+ Template = "#ui.EnumSelector.template";
+ ItemStyle = "CheckBoxEvtType";
+}
+CheckBox {
+ Template= "#Crow.CheckBox2.template";
+ Width = "Stretched";
+ Height = "Fit";
+ CornerRadius = "2";
+ Background = "${ControlIdle}";
+ Foreground = "${ControlForeground}";
+ Checked = "{Background=${ControlHighlight}}";
+ Unchecked = "{Background=${ControlIdle}}";
+ MouseEnter = "{Foreground=${ControlCaptionHoverColor}}";
+ MouseLeave = "{Foreground=${ControlForeground}}";
+}
+StateBox {
+ Template= "#Crow.CheckBox2.template";
+ Width = "Stretched";
+ Height = "Fit";
+ CornerRadius = "2";
+ Background = "${ControlIdle}";
+ Foreground = "${ControlForeground}";
+ Checked = "{Background=Green}";
+ Unchecked = "{Background=DarkRed}";
+ Focusable = "false";
+}
+StateBoxSmall {
+ Template= "#ui.SimpleStatus.template";
+ Checked = "{Background=Green}";
+ Unchecked = "{Background=DarkRed}";
+ Focusable = "false";
+ Background = "DarkRed";
+ Foreground = "${ControlForeground}";
+ Width = "Fit";
+ Height = "Fit";
+}
+
diff --git a/Samples/DebugLogViewer/ui/DbgEventTreeItems.itemp b/Samples/DebugLogViewer/ui/DbgEventTreeItems.itemp
new file mode 100644
index 00000000..1267fa54
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/DbgEventTreeItems.itemp
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ItemTemplate Data="Events">
+ <ListItem Height="Fit"
+ Selected="{/exp.Background=${ControlHighlight}}"
+ Unselected="{/exp.Background=Transparent}">
+ <Expandable Name="exp" Caption="{type}" MouseDoubleClick="/onClickForExpand" CacheEnabled="true" BubbleEvents="All">
+ <Template>
+ <VerticalStack>
+ <Border CornerRadius="2" Margin="0" Height="Fit" MouseDoubleClick="./onClickForExpand"
+ Foreground="Transparent"
+ Background="{./Background}"
+ MouseEnter="{Foreground=DimGrey}"
+ MouseLeave="{Foreground=Transparent}">
+ <HorizontalStack Spacing="2" >
+ <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+ Path="{./Image}"
+ Visible="{HasChildEvents}"
+ SvgSub="{./IsExpanded}"
+ MouseEnter="{Background=LightGrey}"
+ MouseLeave="{Background=Transparent}"/>
+ <Label Text="{./Caption}" Width="80" Font="mono, 8" />
+ <Label Text="{DurationMS}" Width="40" Font="mono, 8" TextAlignment="Center" Background="DimGrey"/>
+ <DbgEventWidget Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" Width="Stretched" Height="5"/>
+ </HorizontalStack>
+ </Border>
+ <Container Name="Content" Visible="false"/>
+ </VerticalStack>
+ </Template>
+ <HorizontalStack Height="Fit">
+ <Widget Width="12" Height="10"/>
+ <VerticalStack Height="Fit" Name="ItemsContainer"/>
+ </HorizontalStack>
+ </Expandable>
+ </ListItem>
+</ItemTemplate>
+<ItemTemplate Data="Events" DataType="DbgWidgetEvent">
+ <ListItem Height="Fit"
+ Selected="{/exp.Background=${ControlHighlight}}"
+ Unselected="{/exp.Background=Transparent}">
+ <Expandable Name="exp" Caption="{type}" MouseDoubleClick="/onClickForExpand" CacheEnabled="true" BubbleEvents="All">
+ <Template>
+ <VerticalStack>
+ <Border CornerRadius="2" Margin="0" Height="Fit" MouseDoubleClick="./onClickForExpand"
+ Foreground="Transparent"
+ Background="{./Background}"
+ MouseEnter="{Foreground=DimGrey}"
+ MouseLeave="{Foreground=Transparent}">
+ <HorizontalStack Spacing="2" >
+ <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand"
+ Path="{./Image}"
+ Visible="{HasChildEvents}"
+ SvgSub="{./IsExpanded}"
+ MouseEnter="{Background=LightGrey}"
+ MouseLeave="{Background=Transparent}"/>
+ <Label Text="{./Caption}" Width="80" Font="mono, 8" />
+ <Label Text="{DurationMS}" Width="40" Font="mono, 8" TextAlignment="Center" Background="DimGrey"/>
+ <Label Text="{InstanceIndex}" Width="40" Font="mono, 8" TextAlignment="Center" Background="DimGrey"/>
+ <DbgEventWidget Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" Width="Stretched" Height="5"/>
+ </HorizontalStack>
+ </Border>
+ <Container Name="Content" Visible="false"/>
+ </VerticalStack>
+ </Template>
+ <HorizontalStack Height="Fit">
+ <Widget Width="12" Height="10"/>
+ <VerticalStack Height="Fit" Name="ItemsContainer"/>
+ </HorizontalStack>
+ </Expandable>
+ </ListItem>
+</ItemTemplate> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/DbgEventView.template b/Samples/DebugLogViewer/ui/DbgEventView.template
new file mode 100644
index 00000000..8b6f5482
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/DbgEventView.template
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<VerticalStack Margin="${TooltipMargin}" DataSource="{./Event}">
+ <Label Text="{type}" Background="{Color}" Foreground="Black" Width="200" TextAlignment="Center" Margin="6"/>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Visible="{IsWidgetEvent}" Background="DimGrey" Margin="2">
+ <Label Text="Instance:" Foreground="White" Width="50%" />
+ <Label Text="{InstanceIndex}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <Label Text="{Message}" Foreground="White" Background="Onyx" Width="Stretched" Visible="{HasMessage}" Margin="2" Tooltip="{}"/>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Duration(ms):" Foreground="White" Width="50%" />
+ <Label Text="{DurationMS}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2">
+ <Label Text="Begin(s):" Foreground="${TooltipForeground}" Width="50%"/>
+ <Label Text="{BeginMS}" Foreground="${TooltipForeground}" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2">
+ <Label Text="End(s):" Foreground="${TooltipForeground}" Width="50%"/>
+ <Label Text="{EndMS}" Foreground="${TooltipForeground}" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <VerticalStack Height="Fit" Width="Stretched" IsVisible="{IsLayoutEvent}" >
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Layout:" Foreground="White" Width="50%" />
+ <Label Text="{layouting}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Result:" Foreground="White" Width="50%" />
+ <Label Text="{result}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Old Slot:" Foreground="White" Width="50%" />
+ <Label Text="{OldSlot}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="New Slot:" Foreground="White" Width="50%" />
+ <Label Text="{NewSlot}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <DbgEventWidget Height="10" Width="Stretched" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" />
+ <GroupBox Caption="Parent Event" Height="Fit" >
+ <DbgEventWidget Height="10" Width="Stretched" Event="{parentEvent}" Tooltip="#ui.DbgEvtTooltip.crow" />
+ </GroupBox>
+ <!--<Label Text="{}" Foreground="${TooltipForeground}"/>-->
+</VerticalStack> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/DbgEvtTooltip.crow b/Samples/DebugLogViewer/ui/DbgEvtTooltip.crow
new file mode 100644
index 00000000..a3369249
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/DbgEvtTooltip.crow
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Border Fit="true" Foreground="${TooltipForeground}" Background="${TooltipBackground}">
+ <VerticalStack Fit="true" Margin="${TooltipMargin}" DataSource="{HoverEvent}">
+ <Label Text="{type}" Background="{Color}" Foreground="Black" Width="200" TextAlignment="Center" Margin="6"/>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Visible="{IsWidgetEvent}" Background="DimGrey" Margin="2">
+ <Label Text="Instance:" Foreground="White" Width="50%" />
+ <Label Text="{InstanceIndex}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <Label Text="{Message}" Foreground="White" Background="Onyx" Width="Stretched" Visible="{HasMessage}" Margin="2" Tooltip="{}"/>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Duration:" Foreground="White" Width="50%" />
+ <Label Text="{DurationMS}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2">
+ <Label Text="Begin:" Foreground="${TooltipForeground}" Width="50%"/>
+ <Label Text="{BeginMS}" Foreground="${TooltipForeground}" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2">
+ <Label Text="End:" Foreground="${TooltipForeground}" Width="50%"/>
+ <Label Text="{EndMS}" Foreground="${TooltipForeground}" Width="Stretched" TextAlignment="Right"/>
+ </HorizontalStack>
+ <VerticalStack Height="Fit" Width="Stretched" IsVisible="{IsLayoutEvent}" >
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Layout:" Foreground="White" Width="50%" />
+ <Label Text="{layouting}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Result:" Foreground="White" Width="50%" />
+ <Label Text="{result}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="Old Slot:" Foreground="White" Width="50%" />
+ <Label Text="{OldSlot}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Width="Stretched" Spacing="2" Background="DimGrey" Margin="2">
+ <Label Text="New Slot:" Foreground="White" Width="50%" />
+ <Label Text="{NewSlot}" Foreground="White" Background="Onyx" Width="Stretched" TextAlignment="Center"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <!--<Label Text="{}" Foreground="${TooltipForeground}"/>-->
+ </VerticalStack>
+</Border> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/DbgWidgetEventListItems.itemp b/Samples/DebugLogViewer/ui/DbgWidgetEventListItems.itemp
new file mode 100644
index 00000000..d7a397ae
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/DbgWidgetEventListItems.itemp
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ListItem Height="Fit"
+ Selected="{Background=${ControlHighlight}}"
+ Unselected="{Background=Transparent}">
+ <HorizontalStack Spacing="2" >
+ <Label Text="{BeginMS}" Width="70" TextAlignment="Right" Background="DimGrey"/>
+ <Label Text="{type}" Width="160" Background="{Color}" Foreground="Black"/>
+ <Label Text="{Message}" Width="Stretched" />
+ <Label Text="{DurationMS}" Width="70" TextAlignment="Right" Background="DimGrey"/>
+ </HorizontalStack>
+</ListItem>
diff --git a/Samples/DebugLogViewer/ui/EnumSelector.template b/Samples/DebugLogViewer/ui/EnumSelector.template
new file mode 100644
index 00000000..3472ec0d
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/EnumSelector.template
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--<Popper >
+ <Template>
+ <HorizontalStack Background="{../../Background}" Margin="5" Spacing="10">
+ <Label Text="{../../../Caption}" Width="Stretched"/>
+ <Label Background="SeaGreen" Text="{../../../EnumValue}" Margin="3" Width="Stretched"/>
+ </HorizontalStack>
+ </Template>
+ <Wrapper Name="Content" Height="300" Width="Fit" Background="Jet" Orientation="Horizontal" />
+</Popper>-->
+<Border Style="ControlBorder" Background="{./Background}" CornerRadius="{./CornerRadius}">
+ <HorizontalStack>
+ <Label Text="{./Caption}"/>
+ <Popper Caption="{./EnumValue}" >
+ <Template>
+ <Label Style="ControlCaption" Text="{./Caption}" Foreground="{./Foreground}" MinimumSize="80,1" TextAlignment="Center"/>
+ </Template>
+ <Wrapper Name="Content" Background="Onyx" Width="60%" Height="Fit" Margin="5" Orientation="Vertical"/>
+ </Popper>
+ </HorizontalStack>
+</Border> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/IconCommand.itmp b/Samples/DebugLogViewer/ui/IconCommand.itmp
new file mode 100644
index 00000000..8f648dd5
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/IconCommand.itmp
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Button Command="{}" MinimumSize="0,0" >
+ <Template>
+ <Border Style="WindowIconBorder" Width="16" Height="16" IsVisible="{./IsEnabled}">
+ <Image Path="{./Icon}" Tooltip="{./Caption}"/>
+ </Border>
+ </Template>
+</Button>
+
+
diff --git a/Samples/DebugLogViewer/ui/MenuButton.template b/Samples/DebugLogViewer/ui/MenuButton.template
new file mode 100644
index 00000000..3a3e2c61
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/MenuButton.template
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<Button Command="{}" Width="Stretched" BubbleEvents="All">
+ <Template>
+ <HorizontalStack Background="{./Background}" Width="Stretched" Height="Stretched" Margin="3" Spacing="6"
+ MouseEnter="{Background=${ControlHighlight}}"
+ MouseLeave="{Background=Transparent}">
+ <Image Style="MenuIcon" Picture="{./Icon}" />
+ <Label Text="{./Caption}" Width="Stretched" Height="Fit" Margin="1"/>
+ </HorizontalStack>
+ </Template>
+</Button>
diff --git a/Samples/DebugLogViewer/ui/MenuItem.itmp b/Samples/DebugLogViewer/ui/MenuItem.itmp
new file mode 100644
index 00000000..8dfb3301
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/MenuItem.itmp
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<ItemTemplate DataType="Crow.Command" Path="#ui.MenuButton.template"/>
+<ItemTemplate DataType="Crow.CommandGroup" Data="Commands">
+ <Popper PopDirection="Right" Caption="{Caption}" Width="Stretched" IsPopped="{²./IsOpened}"
+ MouseEnter="{Background=${ControlHighlight}}"
+ MouseLeave="{Background=Transparent}">
+ <Template>
+ <HorizontalStack Background="{./Background}" Width="Stretched" Height="Fit" Margin="3" Spacing="6">
+ <Image Style="MenuIcon" Picture="{Icon}"/>
+ <Label Text="{./Caption}" Height="Fit"/>
+ <Label Text="..." Width="Fit"/>
+ </HorizontalStack>
+ </Template>
+ <VerticalStack Margin="0" Name="ItemsContainer" Fit="true" Background="${MenuBackground}"/>
+ </Popper>
+</ItemTemplate>
diff --git a/Samples/DebugLogViewer/ui/WidgetRecord.itemp b/Samples/DebugLogViewer/ui/WidgetRecord.itemp
new file mode 100644
index 00000000..e9d15d1e
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/WidgetRecord.itemp
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<ListItem Height="Fit" Margin="1" Focusable="true" HorizontalAlignment="Left"
+ Selected = "{Background=${ControlHighlight}}"
+ Unselected = "{Background=Transparent}">
+ <HorizontalStack>
+ <Label Text="{nameAndIndex}" Width="Stretched"/>
+ <!--<Label Style="labWidgetRecordList" Text="{listIndex}" Tooltip="List index"/>-->
+ <Label Style="labWidgetRecordList" Text="{InstanceIndex}" Tooltip="tree index"/>
+ <Label Style="labWidgetRecordList" Text="{yIndex}" Tooltip="yIndex"/>
+ <Label Style="labWidgetRecordList" Text="{xLevel}" Tooltip="xLevel"/>
+ </HorizontalStack>
+</ListItem> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/main.crow b/Samples/DebugLogViewer/ui/main.crow
new file mode 100644
index 00000000..a1f99e19
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/main.crow
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<VerticalStack RootDataLevel="true">
+ <Menu Data="{CommandsRoot}" >
+ <ItemTemplate DataType="Crow.Command" Path="#ui.MenuButton.template"/>
+ <ItemTemplate DataType="Crow.CommandGroup" >
+ <MenuItem Data="{Commands}" Width="Fit" IsEnabled="{CanExecute}"
+ ItemTemplate="#ui.MenuItem.itmp">
+ <Template>
+ <Popper PopDirection="Bottom" Caption="{Caption}" Width="Fit"
+ MouseEnter="{Background=${ControlHighlight}}"
+ MouseLeave="{Background=Transparent}">
+ <Template>
+ <Label Text="{./Caption}" Width="Stretched" Height="Fit" Margin="5"
+ Background="{./Background}"/>
+ </Template>
+ <VerticalStack Name="ItemsContainer" Height="Fit" Width="Fit" Background="Jet"/>
+ </Popper>
+ </Template>
+ </MenuItem>
+ </ItemTemplate>
+ </Menu>
+ <TabView>
+ <VerticalStack Name="LogGraph" Background="DarkGrey">
+ <EnumSelector RadioButtonStyle="CheckBoxEvtType" Template="#ui.EnumSelector.template"
+ Caption="Discarded Events" EnumValue="{²../dbv.Filter}" BitFieldExcludeMask="255" />
+ <HorizontalStack>
+ <DbgLogViewer Visible="true" Name="dbv" Events="{Events}" Widgets="{Widgets}"
+ CurrentEvent="{²CurrentEvent}" CurrentWidget="{²CurrentWidget}" />
+ <ScrollBar Maximum="{../dbv.MaxScrollY}" Value="{²../dbv.ScrollY}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildHeightRatio}"/>
+ </HorizontalStack>
+ <ScrollBar Style="HScrollBar" Maximum="{../dbv.MaxScrollX}" Value="{²../dbv.ScrollX}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildWidthRatio}"/>
+ <HorizontalStack Height="Fit" DataSource="{CurrentWidget}" Spacing="3">
+ <Label Style="smallLabValue" Text="{name}"/>
+ <Label Style="smallLabValue" Text="{listIndex}" Tooltip="List index"/>
+ <Label Style="smallLabValue" Text="{treeIndex}" Tooltip="tree index"/>
+ <Label Style="smallLabValue" Text="{yIndex}" Tooltip="yIndex"/>
+ <Label Style="smallLabValue" Text="{xLevel}" Tooltip="xLevel"/>
+ <Label Style="smallLabCaption" Text="Width:"/>
+ <Label Style="smallLabValue" Text="{Width}"/>
+ <Label Style="smallLabCaption" Text="Height:" />
+ <Label Style="smallLabValue" Text="{Height}"/>
+ <Label Style="smallLabCaption" Text="ScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.ScrollX}"/>
+ <Label Style="smallLabCaption" Text="MaxScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.MaxScrollX}"/>
+ <Label Style="smallLabValue" Tooltip="XScale" Text="{../../dbv.XScale}"/>
+ <Label Style="smallLabValue" Tooltip="VisibleTicks" Text="{../../dbv.VisibleTicks}"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <VerticalStack Name="AllEvents" Width="Stretched" IsVisible="false" RootDataLevel="true" Background="DarkGrey">
+ <TreeView Height="Stretched" Name="dbgTV" Data="{Events}" SelectedItem="{²CurrentEvent}" Background="DarkGrey"
+ ItemTemplate="#ui.DbgEventTreeItems.itemp"/>
+ </VerticalStack>
+ <VerticalStack Name="CurWidgetEvents" Width="Stretched" IsVisible="false" RootDataLevel="true" Background="DarkGrey">
+ <ListBox Data="{CurrentWidgetEvents}" Background="Black" SelectedItem="{²CurrentEvent}">
+ <ItemTemplate>
+ <ListItem Margin="0" Height="16" IsSelected="{²IsSelected}" Width="Fit"
+ Selected="{Background=${ControlHighlight}}" Template="Crow.ScrollingListBox.template"
+ Unselected="{Background=Transparent}">
+ <DbgEventWidget Height="10" Width="Fit" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" TicksPerPixel="1000" VerticalAlignment="Center"/>
+ </ListItem>
+ </ItemTemplate>
+ <Template>
+ <Wrapper Name="ItemsContainer" Spacing="1" Background="{./Background}"/>
+ </Template>
+ </ListBox>
+ </VerticalStack>
+ </TabView>
+
+ <Splitter/>
+ <HorizontalStack Height="30%">
+ <ListBox Data="{Widgets}" Width="200" SelectedItem="{²CurrentWidget}"
+ ItemTemplate="#ui.WidgetRecord.itemp">
+ </ListBox>
+ <ListBox Data="{CurWidgetProperties}" Width="25%" >
+ <ItemTemplate>
+ <ListItem Height="Fit" Margin="1" Focusable="true" HorizontalAlignment="Left"
+ Selected = "{Background=${ControlHighlight}}"
+ Unselected = "{Background=Transparent}">
+ <HorizontalStack>
+ <Label Text="{Key}" Width="140"/>
+ <Label Text="{Value}" Width="Stretched" Background="White" Foreground="Black" TextAlignment="Left"/>
+ </HorizontalStack>
+ </ListItem>
+ </ItemTemplate>
+ </ListBox>
+ <Splitter/>
+ <VerticalStack>
+ <HorizontalStack Height="Fit" Background="Onyx" Spacing="5">
+ <Label Text="{CurrentWidget}"/>
+ <Label Text="events"/>
+ </HorizontalStack>
+ <ListBox Height="Stretched" Data="{CurrentWidgetEvents}" SelectedItem="{²CurrentEvent}" Background="DarkGrey"
+ ItemTemplate="#ui.DbgWidgetEventListItems.itemp"/>
+ </VerticalStack>
+ <!--<Splitter/>
+ <DbgEventView Template="#ui.DbgEventView.template" Event="{../../dbv.HoverEvent}"/>-->
+ <Splitter/>
+ <DbgEventView Template="#ui.DbgEventView.template" Event="{CurrentEvent}"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Background="Onyx" Margin="1">
+ <HorizontalStack Height="Fit" DataSource="{CurrentEvent}">
+ <Label Foreground="Black" Text="Current Event:" Background="{Color}" Margin="2" />
+ <DbgEventWidget Height="14" Width="Stretched" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" />
+ </HorizontalStack>
+ <ListBox Data="{EventCommands}" Fit="true">
+ <Template>
+ <HorizontalStack Name="ItemsContainer" />
+ </Template>
+ <ItemTemplate Path="#ui.IconCommand.itmp"/>
+ </ListBox>
+ <Popper Caption="Search...">
+ <VerticalStack Fit="true" Background="Onyx" Margin="10">
+ <ComboBox Caption="Event Type" Data="{AllEventTypes}" SelectedItem="{²SearchEventType}"/>
+ <ComboBox Caption="Widget" Data="{Widgets}" SelectedItem="{²SearchWidget}"/>
+ </VerticalStack>
+ </Popper>
+ </HorizontalStack>
+
+</VerticalStack> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/winDebugLog.crow b/Samples/DebugLogViewer/ui/winDebugLog.crow
new file mode 100644
index 00000000..90557a09
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/winDebugLog.crow
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<Window Caption="Debug Log" Background="0.05,0.05,0.1,0.9" Width="95%" Height="95%">
+ <VerticalStack RootDataLevel="true">
+ <TabView>
+ <VerticalStack Name="LogGraph" Background="DarkGrey">
+ <EnumSelector RadioButtonStyle="CheckBox2" Template="#ui.EnumSelector.template"
+ Caption="Discarded Events" EnumValue="{²../dbv.Filter}" BitFieldExcludeMask="255" />
+ <HorizontalStack>
+ <DbgLogViewer Visible="true" Name="dbv" Events="{Events}" Widgets="{Widgets}"
+ CurrentEvent="{²CurrentEvent}" CurrentWidget="{²CurrentWidget}" />
+ <ScrollBar Maximum="{../dbv.MaxScrollY}" Value="{²../dbv.ScrollY}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildHeightRatio}"/>
+ </HorizontalStack>
+ <ScrollBar Style="HScrollBar" Maximum="{../dbv.MaxScrollX}" Value="{²../dbv.ScrollX}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildWidthRatio}"/>
+ <HorizontalStack Height="Fit" DataSource="{CurrentWidget}" Spacing="3">
+ <Label Style="smallLabValue" Text="{name}"/>
+ <Label Style="smallLabValue" Text="{listIndex}" Tooltip="List index"/>
+ <Label Style="smallLabValue" Text="{treeIndex}" Tooltip="tree index"/>
+ <Label Style="smallLabValue" Text="{yIndex}" Tooltip="yIndex"/>
+ <Label Style="smallLabValue" Text="{xLevel}" Tooltip="xLevel"/>
+ <Label Style="smallLabCaption" Text="Width:"/>
+ <Label Style="smallLabValue" Text="{Width}"/>
+ <Label Style="smallLabCaption" Text="Height:" />
+ <Label Style="smallLabValue" Text="{Height}"/>
+ <Label Style="smallLabCaption" Text="ScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.ScrollX}"/>
+ <Label Style="smallLabCaption" Text="MaxScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.MaxScrollX}"/>
+ <Label Style="smallLabValue" Tooltip="XScale" Text="{../../dbv.XScale}"/>
+ <Label Style="smallLabValue" Tooltip="VisibleTicks" Text="{../../dbv.VisibleTicks}"/>
+ </HorizontalStack>
+ </VerticalStack>
+ <VerticalStack Name="AllEvents" Width="Stretched" IsVisible="false" RootDataLevel="true">
+ <TreeView Height="Stretched" Name="dbgTV" Data="{Events}" SelectedItem="{²CurrentEvent}" Background="DarkGrey"
+ ItemTemplate="#ui.DbgEventTreeItems.itemp"/>
+ </VerticalStack>
+ <VerticalStack Name="CurWidgetEvents" Width="Stretched" IsVisible="false" RootDataLevel="true">
+ <ListBox Data="{CurrentWidgetEvents}" Background="Black" SelectedItem="{²CurrentEvent}">
+ <ItemTemplate>
+ <ListItem Margin="0" Height="16" IsSelected="{²IsSelected}" Width="Fit"
+ Selected="{Background=${ControlHighlight}}" Template="Crow.ScrollingListBox.template"
+ Unselected="{Background=Transparent}">
+ <DbgEventWidget Height="10" Width="Fit" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" TicksPerPixel="1000" VerticalAlignment="Center"/>
+ </ListItem>
+ </ItemTemplate>
+ <Template>
+ <Wrapper Name="ItemsContainer" Spacing="1" Background="{./Background}"/>
+ </Template>
+ </ListBox>
+ </VerticalStack>
+ </TabView>
+ <Splitter/>
+ <HorizontalStack Height="30%">
+ <ListBox Data="{Widgets}" Width="200" SelectedItem="{²CurrentWidget}"
+ ItemTemplate="#ui.WidgetRecord.itemp">
+ </ListBox>
+ <ListBox Data="{CurWidgetProperties}" Width="25%" >
+ <ItemTemplate>
+ <ListItem Height="Fit" Margin="1" Focusable="true" HorizontalAlignment="Left"
+ Selected = "{Background=${ControlHighlight}}"
+ Unselected = "{Background=Transparent}">
+ <HorizontalStack>
+ <Label Text="{Key}" Width="140"/>
+ <Label Text="{Value}" Width="Stretched" Background="White" Foreground="Black" TextAlignment="Left"/>
+ </HorizontalStack>
+ </ListItem>
+ </ItemTemplate>
+ </ListBox>
+ <Splitter/>
+ <VerticalStack>
+ <HorizontalStack Height="Fit" Background="Onyx" Spacing="5">
+ <Label Text="{CurrentWidget}"/>
+ <Label Text="events"/>
+ </HorizontalStack>
+ <ListBox Height="Stretched" Data="{CurrentWidgetEvents}" SelectedItem="{²CurrentEvent}" Background="DarkGrey"
+ ItemTemplate="#ui.DbgWidgetEventListItems.itemp"/>
+ </VerticalStack>
+ <Splitter/>
+ <DbgEventView Template="#ui.DbgEventView.template" Event="{../../dbv.HoverEvent}"/>
+ <Splitter/>
+ <DbgEventView Template="#ui.DbgEventView.template" Event="{CurrentEvent}"/>
+ </HorizontalStack>
+ <HorizontalStack Height="Fit" Background="Onyx" Margin="1">
+ <HorizontalStack Height="Fit" DataSource="{CurrentEvent}">
+ <Label Foreground="Black" Text="Current Event:" Background="{Color}" Margin="2" />
+ <DbgEventWidget Height="14" Width="Stretched" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" />
+ </HorizontalStack>
+ <ListBox Data="{EventCommands}" Fit="true">
+ <Template>
+ <HorizontalStack Name="ItemsContainer" />
+ </Template>
+ <ItemTemplate Path="#ui.IconCommand.itmp"/>
+ </ListBox>
+ <Popper Caption="Search...">
+ <VerticalStack Fit="true" Background="Onyx" Margin="10">
+ <ComboBox Caption="Event Type" Data="{AllEventTypes}" SelectedItem="{²SearchEventType}"/>
+ <ComboBox Caption="Widget" Data="{Widgets}" SelectedItem="{²SearchWidget}"/>
+ </VerticalStack>
+ </Popper>
+ </HorizontalStack>
+ </VerticalStack>
+</Window> \ No newline at end of file
diff --git a/Samples/DebugLogViewer/ui/winLogGraph.crow b/Samples/DebugLogViewer/ui/winLogGraph.crow
new file mode 100644
index 00000000..085596a0
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/winLogGraph.crow
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<DockWindow Caption="Debug Log Graph" Width="90%" Height="90%">
+ <VerticalStack Name="LogGraph" >
+ <EnumSelector RadioButtonStyle="CheckBox2" Template="#ui.EnumSelector.template"
+ Caption="Discarded Events" EnumValue="{²../dbv.Filter}" BitFieldExcludeMask="255" />
+ <HorizontalStack>
+ <DbgLogViewer Visible="true" Name="dbv" Events="{Events}" Widgets="{Widgets}"
+ CurrentEvent="{²CurrentEvent}" CurrentWidget="{²CurrentWidget}" />
+ <ScrollBar Maximum="{../dbv.MaxScrollY}" Value="{²../dbv.ScrollY}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildHeightRatio}"/>
+ </HorizontalStack>
+ <ScrollBar Style="HScrollBar" Maximum="{../dbv.MaxScrollX}" Value="{²../dbv.ScrollX}" SmallIncrement="1" LargeIncrement="10"
+ CursorRatio="{../dbv.ChildWidthRatio}"/>
+ <HorizontalStack Height="Fit" DataSource="{CurrentWidget}" Spacing="3">
+ <Label Style="smallLabValue" Text="{name}"/>
+ <Label Style="smallLabValue" Text="{listIndex}" Tooltip="List index"/>
+ <Label Style="smallLabValue" Text="{treeIndex}" Tooltip="tree index"/>
+ <Label Style="smallLabValue" Text="{yIndex}" Tooltip="yIndex"/>
+ <Label Style="smallLabValue" Text="{xLevel}" Tooltip="xLevel"/>
+ <Label Style="smallLabCaption" Text="ScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.ScrollX}"/>
+ <Label Style="smallLabCaption" Text="MaxScrollX:" />
+ <Label Style="smallLabValue" Text="{../../dbv.MaxScrollX}"/>
+ <Label Style="smallLabValue" Tooltip="XScale" Text="{../../dbv.XScale}"/>
+ <Label Style="smallLabValue" Tooltip="VisibleTicks" Text="{../../dbv.VisibleTicks}"/>
+ </HorizontalStack>
+ </VerticalStack>
+</DockWindow>
+
+
diff --git a/Samples/DebugLogViewer/ui/winLogNavigation.crow b/Samples/DebugLogViewer/ui/winLogNavigation.crow
new file mode 100644
index 00000000..62d71a53
--- /dev/null
+++ b/Samples/DebugLogViewer/ui/winLogNavigation.crow
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<DockWindow Caption="Debug Log Navigation" Width="90%" Height="Fit">
+ <VerticalStack Name="LogGraph" >
+ <ListBox Name="lbAllEvents" Data="{Events}" Height="Fit" >
+ <ItemTemplate>
+ <ListItem Margin="0" Height="16" Width="Fit"
+ Selected="{Background=Yellow}"
+ Unselected="{Background=Transparent}">
+ <DbgEventWidget CacheEnabled="true" Height="10" Width="Fit" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" TicksPerPixel="3000" VerticalAlignment="Center"/>
+ </ListItem>
+ </ItemTemplate>
+ <Template>
+ <VerticalStack Width="Stretched" >
+ <Scroller Name="scroller" >
+ <HorizontalStack Name="ItemsContainer" Width="Fit" HorizontalAlignment="Left"/>
+ </Scroller>
+ <ScrollBar Style="HScrollBar" Name="scrollbar1" Value="{²../scroller.ScrollX}"
+ LargeIncrement="{../scroller.PageWidth}" SmallIncrement="30" CursorRatio="{../scroller.ChildWidthRatio}"
+ Maximum="{../scroller.MaxScrollX}" Height="12" />
+ </VerticalStack>
+ </Template>
+ </ListBox>
+ <ListBox DataSource="{../lbAllEvents.SelectedItem}" Data="{Events}" Height="Fit" >
+ <ItemTemplate>
+ <ListItem Margin="0" Height="16" Width="Fit"
+ Selected="{Background=Yellow}"
+ Unselected="{Background=Transparent}">
+ <DbgEventWidget CacheEnabled="true" Height="10" Width="Fit" Event="{}" Tooltip="#ui.DbgEvtTooltip.crow" TicksPerPixel="3000" VerticalAlignment="Center"/>
+ </ListItem>
+ </ItemTemplate>
+ <Template>
+ <VerticalStack Width="Stretched" >
+ <Scroller Name="scroller" >
+ <HorizontalStack Name="ItemsContainer" Width="Fit" HorizontalAlignment="Left"/>
+ </Scroller>
+ <ScrollBar Style="HScrollBar" Name="scrollbar1" Value="{²../scroller.ScrollX}"
+ LargeIncrement="{../scroller.PageWidth}" SmallIncrement="30" CursorRatio="{../scroller.ChildWidthRatio}"
+ Maximum="{../scroller.MaxScrollX}" Height="12" />
+ </VerticalStack>
+ </Template>
+ </ListBox>
+ </VerticalStack>
+</DockWindow>
+
+