├── .gitignore ├── Documentation ├── DocumentationCreator.Calculator │ ├── Calculator.png │ └── README.md ├── DocumentationCreator.SolutionExplorer │ ├── Explorer.png │ └── README.md ├── HyperlinkRun │ └── Normal.png ├── LineChart │ ├── Default.png │ └── README.md ├── Metrolib.Controls.AddButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.AlarmToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.CircularProgressBar │ ├── 100__progress.png │ ├── 50__progress.png │ ├── Disabled.png │ ├── Indeterminate.png │ ├── Indeterminate__Content.png │ ├── No_progress.png │ └── README.md ├── Metrolib.Controls.CloseButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.CollapseAllButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.DownloadButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.EditToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.EditorTextBox │ ├── Disabled.png │ ├── Focused.png │ ├── README.md │ ├── Text__Focused.png │ ├── Text__Unfocused.png │ └── Unfocused.png ├── Metrolib.Controls.EmailToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ExpandAllButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ExpanderToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ExportButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.FileAddButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.FilterTextBox │ ├── Disabled.png │ ├── FilterText__Focused.png │ ├── FilterText__Unfocused.png │ ├── Focused.png │ ├── Invalid_FilterText.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.FlatPasswordBox │ ├── Disabled.png │ ├── Focused.png │ ├── Password__Focused.png │ ├── Password__Unfocused.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.FlatProgressBar │ ├── 100__progress.png │ ├── 50__progress.png │ ├── Disabled.png │ ├── Indeterminate.png │ ├── No_progress.png │ └── README.md ├── Metrolib.Controls.FolderAddButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.FolderOpenButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ImportButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.MarkdownPresenter │ ├── Bold.png │ ├── Bold_and_Italic.png │ ├── Hyperlink.png │ ├── Italic.png │ ├── README.md │ └── Strikethrough.png ├── Metrolib.Controls.MaximizeButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.MinimizeButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.MoreButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.NextButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.PathChooserTextBox │ ├── Disabled.png │ ├── Focused.png │ ├── README.md │ ├── Text__Focused.png │ ├── Text__Unfocused.png │ └── Unfocused.png ├── Metrolib.Controls.PinToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ ├── RotateWhenUnchecked_Checked.png │ ├── RotateWhenUnchecked_Unchecked.png │ └── Unfocused.png ├── Metrolib.Controls.PluginToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.PreviousButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.RefreshButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.RemoveButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.SearchButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.SearchTextBox │ ├── FilterText__Focused.png │ ├── Focused.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.SwitchToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.TrashButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.UndoButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.UploadButton │ ├── Disabled.png │ ├── Hovered.png │ ├── Pressed.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ViewDashboardToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.ViewQuiltToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── Metrolib.Controls.VisibilityToggleButton │ ├── Checked.png │ ├── Disabled.png │ ├── Disabled_Checked.png │ ├── README.md │ └── Unfocused.png ├── NetworkView │ ├── Normal.png │ └── README.md ├── OpenInNewHyperlink │ └── Normal.png └── PieChart │ ├── FavouriteBars.png │ └── README.md ├── LICENSE ├── Metrolib.sln ├── README.md ├── publish.cmd ├── restore_key.cmd ├── sig ├── .gitignore ├── Crypt.exe └── sns └── src ├── DocumentationCreator ├── Bootstrapper.cs ├── Calculator.xaml ├── Calculator.xaml.cs ├── Documentation.cs ├── DocumentationCreator.csproj ├── Properties │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── SolutionExplorer.xaml └── SolutionExplorer.xaml.cs ├── Metrolib.Sample ├── Bootstrapper.cs ├── Buttons.xaml ├── Buttons.xaml.cs ├── CityViewModel.cs ├── ContentControls.xaml ├── ContentControls.xaml.cs ├── ContentPresenters.xaml ├── ContentPresenters.xaml.cs ├── Dialogs.xaml ├── Dialogs.xaml.cs ├── DialogsViewModel.cs ├── EdgeType.cs ├── EditBoxes.xaml ├── EditBoxes.xaml.cs ├── HistogramCharts.xaml ├── HistogramCharts.xaml.cs ├── Items.xaml ├── Items.xaml.cs ├── LineCharts.xaml ├── LineCharts.xaml.cs ├── Lists.xaml ├── Lists.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── MapCharts.xaml ├── MapCharts.xaml.cs ├── MarvelCharacterViewModel.cs ├── Metrolib.Sample.csproj ├── NetworkCharts.xaml ├── NetworkCharts.xaml.cs ├── NetworkChartsViewModel.cs ├── Panels.xaml ├── Panels.xaml.cs ├── PieCharts.xaml ├── PieCharts.xaml.cs ├── ProgressBars.xaml ├── ProgressBars.xaml.cs ├── Properties │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── BlackWidow.png │ ├── CaptainAmerica.png │ ├── Falcon.png │ ├── Hulk.png │ ├── IronMan.png │ ├── MariaHill.png │ ├── NickFury.png │ ├── ScarletWitch.png │ ├── SharonCarter.png │ ├── Thor.png │ ├── Vision.png │ └── WinterSoldier.png ├── Scrolling.xaml ├── Scrolling.xaml.cs ├── SuggestionsViewModel.cs ├── TextBlocks.xaml ├── TextBlocks.xaml.cs ├── TextBoxes.xaml ├── TextBoxes.xaml.cs ├── TextEditor.xaml ├── TextEditor.xaml.cs ├── ToggleButtons.xaml ├── ToggleButtons.xaml.cs ├── ToggleButtonsViewModel.cs ├── Tree.xaml └── Tree.xaml.cs ├── Metrolib.Test ├── AbstractControlTest.cs ├── App.cs ├── AssemblySetup.cs ├── Charts │ ├── Line │ │ ├── AbstractLineChartCanvasTest.cs │ │ ├── AxisTest.cs │ │ ├── LineChartCanvasTest.cs │ │ ├── LineChartTest.cs │ │ ├── LineSeriesTest.cs │ │ └── StackedLineChartCanvasTest.cs │ ├── Map │ │ ├── ItemsLayerTest.cs │ │ └── TileRectangleTest.cs │ ├── Network │ │ ├── Algorithms │ │ │ ├── ForceDirectedLayoutAlgorithmTest.cs │ │ │ ├── SolvingNodeLayoutAlgorithmTest.cs │ │ │ └── SpringTest.cs │ │ ├── ForceDirectedLayoutTest.cs │ │ ├── NetworkViewNodeItemTest.cs │ │ └── NetworkViewTest.cs │ └── Pie │ │ ├── PieChartLabelItemTest.cs │ │ ├── PieChartSliceItemTest.cs │ │ ├── PieChartTest.cs │ │ └── PieChartValueItemTest.cs ├── Converters │ ├── AbstractListToStringConverterTest.cs │ ├── AbstractNumberToStringConverterTest.cs │ ├── AbstractOneWayValueConverterTest.cs │ ├── BoolFalseToHiddenConverterTest.cs │ ├── ByteToStringConverterTest.cs │ ├── ColorToBrushConverterTest.cs │ ├── EmptyToCollapsedConverterTest.cs │ ├── Int32ListToStringConverterTest.cs │ ├── NonEmptyToCollapsedConverterTest.cs │ ├── NonEmptyToHiddenConverterTest.cs │ ├── NullToFalseConverterTest.cs │ ├── UInt16ToStringConverterTest.cs │ ├── UInt32ListToStringConverterTest.cs │ ├── UInt32ToStringConverterTest.cs │ └── UInt64ToStringConverterTest.cs ├── DelegateCommandTest.cs ├── DependencyObjectExtensionsTest.cs ├── DoubleToPercentageConverterTest.cs ├── FilterTextBoxTest.cs ├── Geometry │ ├── CircleSegmentTest.cs │ ├── CircleTest.cs │ └── TriangleTest.cs ├── Input │ └── SuggestionInputControlTest.cs ├── InvertBoolConverterTest.cs ├── ItemsToggleButton │ └── ItemsToggleButtonTest.cs ├── ListSliceTest.cs ├── LocalTestAttribute.cs ├── Metrolib.Test.csproj ├── Panel │ └── GridPanelTest.cs ├── ProgressBar │ ├── AbstractProgressBarTest.cs │ ├── CircularProgressBarTest.cs │ └── FlatProgressBarTest.cs ├── ScrollViewer │ ├── FlatScrollViewerStyleTest.cs │ └── FlatScrollViewerTest.cs ├── SearchTextBoxTest.cs ├── Settings │ ├── ApplicationSettingsTest.cs │ └── WindowSettingsTest.cs ├── SizeTest.cs ├── StyleHelper.cs ├── TextBlocks │ ├── EditableTextBlockTest.cs │ ├── MarkdownBlockTest.cs │ ├── MarkdownParserTest.cs │ └── MarkdownTokenizerTest.cs ├── TextBoxes │ └── EditorTextBoxTest.cs ├── TimeSpanConverterTest.cs └── Tree │ ├── FlatTreeViewItemTest.cs │ └── FlatTreeViewTest.cs ├── Metrolib ├── AbstractBootstrapper.cs ├── AssemblyInfo.cs ├── Constants.cs ├── Controls │ ├── AlertControl.cs │ ├── AlertControl.xaml │ ├── BulletinItemsControl.cs │ ├── BulletinItemsControl.xaml │ ├── Buttons │ │ ├── AddButton.cs │ │ ├── AddButton.xaml │ │ ├── CloseButton.cs │ │ ├── CloseButton.xaml │ │ ├── CollapseAllButton.cs │ │ ├── CollapseAllButton.xaml │ │ ├── DownloadButton.cs │ │ ├── DownloadButton.xaml │ │ ├── ExpandAllButton.cs │ │ ├── ExpandAllButton.xaml │ │ ├── ExportButton.cs │ │ ├── ExportButton.xaml │ │ ├── FileAddButton.cs │ │ ├── FileAddButton.xaml │ │ ├── FlatButton.cs │ │ ├── FlatButton.xaml │ │ ├── FlatIconButton.cs │ │ ├── FlatIconButton.xaml │ │ ├── FolderAddButton.cs │ │ ├── FolderAddButton.xaml │ │ ├── FolderOpenButton.cs │ │ ├── FolderOpenButton.xaml │ │ ├── ImportButton.cs │ │ ├── ImportButton.xaml │ │ ├── MaximizeButton.cs │ │ ├── MaximizeButton.xaml │ │ ├── MinimizeButton.cs │ │ ├── MinimizeButton.xaml │ │ ├── MoreButton.cs │ │ ├── MoreButton.xaml │ │ ├── NextButton.cs │ │ ├── NextButton.xaml │ │ ├── PreviousButton.cs │ │ ├── PreviousButton.xaml │ │ ├── RefreshButton.cs │ │ ├── RefreshButton.xaml │ │ ├── RemoveButton.cs │ │ ├── RemoveButton.xaml │ │ ├── SearchButton.cs │ │ ├── SearchButton.xaml │ │ ├── TrashButton.cs │ │ ├── TrashButton.xaml │ │ ├── UndoButton.cs │ │ ├── UndoButton.xaml │ │ ├── UploadButton.cs │ │ └── UploadButton.xaml │ ├── Charts │ │ ├── AxisControl.cs │ │ ├── AxisControl.xaml │ │ ├── Histogram │ │ │ ├── DateTimeHistogram.cs │ │ │ └── DateTimeHistogram.xaml │ │ ├── Line │ │ │ ├── AxisDefinition.cs │ │ │ ├── Canvas │ │ │ │ ├── AbstractLineChartCanvas.cs │ │ │ │ ├── AbstractLineSeriesCanvas.cs │ │ │ │ ├── Line │ │ │ │ │ ├── LineChartCanvas.cs │ │ │ │ │ └── LineSeriesCanvas.cs │ │ │ │ └── Stacked │ │ │ │ │ ├── StackedLineChartCanvas.cs │ │ │ │ │ └── StackedLineSeriesCanvas.cs │ │ │ ├── IAxisDefinition.cs │ │ │ ├── ILineSeries.cs │ │ │ ├── LineChart.cs │ │ │ ├── LineChart.xaml │ │ │ ├── LineChartType.cs │ │ │ └── LineSeries.cs │ │ ├── Map │ │ │ ├── Camera.cs │ │ │ ├── CameraChangedEventArgs.cs │ │ │ ├── ITileCache.cs │ │ │ ├── ItemsLayer.cs │ │ │ ├── Layer.cs │ │ │ ├── MapCanvas.cs │ │ │ ├── MapView.cs │ │ │ ├── MapView.xaml │ │ │ ├── MapViewItem.cs │ │ │ ├── MapViewPointItem.cs │ │ │ ├── PointItem.xaml │ │ │ ├── Tile.cs │ │ │ ├── TileControl.cs │ │ │ ├── TileDownloader.cs │ │ │ ├── TileLayer.cs │ │ │ ├── TileRectangle.cs │ │ │ └── WebTileLayer.cs │ │ ├── Network │ │ │ ├── Algorithms │ │ │ │ ├── AlgorithmResult.cs │ │ │ │ ├── ForceDirectedLayoutAlgorithm.cs │ │ │ │ ├── INodeLayoutAlgorithm.cs │ │ │ │ └── SolvingNodeLayoutAlgorithm.cs │ │ │ ├── Direction.cs │ │ │ ├── Edge.cs │ │ │ ├── ForceDirectedLayout.cs │ │ │ ├── IEdge.cs │ │ │ ├── INode.cs │ │ │ ├── Layout.cs │ │ │ ├── NetworkView.cs │ │ │ ├── NetworkView.xaml │ │ │ ├── NetworkViewNodeItem.cs │ │ │ ├── NetworkViewNodeItem.xaml │ │ │ ├── WidthHeightToRadiusConverter.cs │ │ │ └── WidthHeightToSizeConverter.cs │ │ ├── Pie │ │ │ ├── IPieSeries.cs │ │ │ ├── IPieSlice.cs │ │ │ ├── PieChart.cs │ │ │ ├── PieChartLabelItem.cs │ │ │ ├── PieChartSliceItem.cs │ │ │ ├── PieChartValueItem.cs │ │ │ ├── PieSeries.cs │ │ │ ├── PieSlice.cs │ │ │ └── SliceDirection.cs │ │ └── Range.cs │ ├── ContextMenu │ │ ├── FlatContextMenu.cs │ │ ├── FlatContextMenu.xaml │ │ ├── FlatMenuItem.cs │ │ ├── FlatMenuItem.xaml │ │ ├── MenuItemContentControl.cs │ │ └── MenuItemContentControl.xaml │ ├── Expander │ │ ├── FlatExpander.cs │ │ └── FlatExpander.xaml │ ├── FlatBanner.cs │ ├── FlatBanner.xaml │ ├── FlatSeparator.cs │ ├── FlatSeparator.xaml │ ├── GroupBox │ │ ├── FlatGroupBox.cs │ │ └── FlatGroupBox.xaml │ ├── Input │ │ ├── SuggestionInputControl.cs │ │ └── SuggestionInputControl.xaml │ ├── List │ │ ├── FlatListView.cs │ │ ├── FlatListView.xaml │ │ ├── FlatListViewItem.cs │ │ └── FlatListViewItem.xaml │ ├── MouseWheelGesture.cs │ ├── NotificationBadge.cs │ ├── NotificationBadge.xaml │ ├── OpenInNewHyperlink.cs │ ├── OpenInNewHyperlink.xaml │ ├── PageOverlay │ │ ├── PageOverlay.cs │ │ └── PageOverlay.xaml │ ├── Panel │ │ └── GridPanel.cs │ ├── ProgressBar │ │ ├── AbstractProgressBar.cs │ │ ├── CircularProgressBar.cs │ │ ├── CircularProgressBar.xaml │ │ ├── FlatProgressBar.cs │ │ └── FlatProgressBar.xaml │ ├── Properties.cs │ ├── Scroll │ │ ├── FlatScrollBar.cs │ │ ├── FlatScrollBar.xaml │ │ ├── FlatScrollViewer.cs │ │ └── FlatScrollViewer.xaml │ ├── Tab │ │ ├── FlatTabControl.cs │ │ ├── FlatTabControl.xaml │ │ ├── FlatTabItem.cs │ │ └── FlatTabItem.xaml │ ├── TextBlocks │ │ ├── EditableTextBlock.cs │ │ ├── EditableTextBlock.xaml │ │ ├── FlatTextBlock.cs │ │ ├── FlatTextBlock.xaml │ │ ├── FlavourTextBlock.cs │ │ ├── FlavourTextBlock.xaml │ │ ├── HyperlinkRun.cs │ │ ├── MarkdownParser.cs │ │ ├── MarkdownPresenter.cs │ │ ├── MarkdownPresenter.xaml │ │ ├── MarkdownToken.cs │ │ ├── MarkdownTokenType.cs │ │ └── MarkdownTokenizer.cs │ ├── TextBoxes │ │ ├── EditorTextBox.cs │ │ ├── EditorTextBox.xaml │ │ ├── FilterTextBox.cs │ │ ├── FilterTextBox.xaml │ │ ├── FlatPasswordBox.cs │ │ ├── FlatPasswordBox.xaml │ │ ├── PathChooserTextBox.cs │ │ ├── PathChooserTextBox.xaml │ │ ├── SearchTextBox.cs │ │ └── SearchTextBox.xaml │ ├── ToggleButtons │ │ ├── AlarmToggleButton.cs │ │ ├── AlarmToggleButton.xaml │ │ ├── EditToggleButton.cs │ │ ├── EditToggleButton.xaml │ │ ├── EmailToggleButton.cs │ │ ├── EmailToggleButton.xaml │ │ ├── ExpanderToggleButton.cs │ │ ├── ExpanderToggleButton.xaml │ │ ├── FlatToggleButton.cs │ │ ├── FlatToggleButton.xaml │ │ ├── ItemsToggleButton.cs │ │ ├── ItemsToggleButton.xaml │ │ ├── OneWayToggle.cs │ │ ├── OneWayToggle.xaml │ │ ├── PinToggleButton.cs │ │ ├── PinToggleButton.xaml │ │ ├── PluginToggleButton.cs │ │ ├── PluginToggleButton.xaml │ │ ├── SwitchToggleButton.cs │ │ ├── SwitchToggleButton.xaml │ │ ├── ToggleButtonBase.cs │ │ ├── ToggleButtonBase.xaml │ │ ├── ToggleButtonItemViewModel.cs │ │ ├── ViewDashboardToggleButton.cs │ │ ├── ViewDashboardToggleButton.xaml │ │ ├── ViewQuiltToggleButton.cs │ │ ├── ViewQuiltToggleButton.xaml │ │ ├── VisibilityToggleButton.cs │ │ └── VisibilityToggleButton.xaml │ ├── ToggleContentPresenter.cs │ ├── ToggleContentPresenter.xaml │ ├── Tree │ │ ├── FlatTreeView.cs │ │ ├── FlatTreeView.xaml │ │ ├── FlatTreeViewItem.cs │ │ ├── FlatTreeViewItem.xaml │ │ ├── ITreeViewItemViewModel.cs │ │ └── LeftMarginMultiplierConverter.cs │ └── Windows │ │ ├── ChromelessWindow.cs │ │ └── ChromelessWindow.xaml ├── Converters │ ├── AbstractNumericListToStringConverter.cs │ ├── BoolFalseToCollapsedConverter.cs │ ├── BoolFalseToHiddenConverter.cs │ ├── BoolTrueToCollapsedConverter.cs │ ├── BoolTrueToHiddenConverter.cs │ ├── ByteToStringConverter.cs │ ├── ColorToBrushConverter.cs │ ├── Converters.xaml │ ├── CountConverter.cs │ ├── DoubleToPercentageConverter.cs │ ├── DoubleToThicknessConverter.cs │ ├── EmptyToCollapsedConverter.cs │ ├── EmptyToHiddenConverter.cs │ ├── GeoLocationConverter.cs │ ├── HorizontalToCollapsedConverter.cs │ ├── IncrementByOneConverter.cs │ ├── Int32ListToStringConverter.cs │ ├── InvertBoolConverter.cs │ ├── MultiplierConverter.cs │ ├── NegateConverter.cs │ ├── NonEmptyStringToVisibleConverter.cs │ ├── NonEmptyToCollapsedConverter.cs │ ├── NonEmptyToHiddenConverter.cs │ ├── NullImageConverter.cs │ ├── NullOrEmptyStringToVisibleConverter.cs │ ├── NullToCollapsedConverter.cs │ ├── NullToFalseConverter.cs │ ├── NullToHiddenConverter.cs │ ├── NullToVisibleConverter.cs │ ├── TimeSpanConverter.cs │ ├── UIn32ToStringConverter.cs │ ├── UInt16ToStringConverter.cs │ ├── UInt32ListToStringConverter.cs │ ├── UInt64ToStringConverter.cs │ ├── Unit.cs │ └── VerticalToCollapsedConverter.cs ├── DelegateCommand.cs ├── DelegateCommand2.cs ├── Extensions │ ├── DependencyObjectExtensions.cs │ ├── FocusExtension.cs │ ├── RandomExtensions.cs │ ├── VectorExtensions.cs │ ├── VersionExtensions.cs │ └── XmlExtensions.cs ├── FrameworkElementExtensions.cs ├── Geography │ ├── GeoLocation.cs │ ├── MercatorLocation.cs │ └── MercatorRectangle.cs ├── Geometry │ ├── Angle.cs │ ├── Circle.cs │ ├── CircleSegment.cs │ └── Triangle.cs ├── IDispatcher.cs ├── Icons.cs ├── ListSlice.cs ├── ListSliceDebugView.cs ├── ManualDispatcher.cs ├── Metrolib.csproj ├── Physics │ ├── Attractor.cs │ ├── Body.cs │ ├── EulerIntegrator.cs │ └── Spring.cs ├── Properties │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── ReadOnlyListExtensions.cs ├── Settings │ ├── ApplicationSettings.cs │ └── WindowSettings.cs ├── Size.cs ├── Themes │ ├── Constants.xaml │ └── Generic.xaml └── UiDispatcher.cs ├── Netstat ├── App.cs ├── AssemblyInfo.cs ├── BusinessLogic │ ├── Engine.cs │ ├── INetstatListener.cs │ ├── Netstat.cs │ ├── ProcessDescriptor.cs │ ├── TcpConnectionDescriptor.cs │ └── TcpConnectionEqualityComparer.cs ├── EndPointViewModel.cs ├── LocalComputerViewModel.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── MainWindowViewModel.cs ├── Netstat.csproj └── TcpConnectionViewModel.cs └── TwitterLiveStream ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings └── TwitterLiveStream.csproj /.gitignore: -------------------------------------------------------------------------------- 1 | Thumbs.db 2 | *.obj 3 | *.exe 4 | *.pdb 5 | *.user 6 | *.aps 7 | *.pch 8 | *.vspscc 9 | *_i.c 10 | *_p.c 11 | *.ncb 12 | *.suo 13 | *.sln.docstates 14 | *.tlb 15 | *.tlh 16 | *.bak 17 | *.cache 18 | *.ilk 19 | *.log 20 | [Bb]in 21 | [Dd]ebug*/ 22 | *.lib 23 | *.sbr 24 | obj/ 25 | _ReSharper*/ 26 | [Tt]est[Rr]esult* 27 | *.vssscc 28 | $tf*/ 29 | *.nupkg 30 | 31 | /packages 32 | 33 | # Visual C++ cache files 34 | ipch/ 35 | *.aps 36 | *.ncb 37 | *.opensdf 38 | *.sdf 39 | *.cachefile 40 | .vs/ 41 | 42 | *.psess 43 | *.vspx -------------------------------------------------------------------------------- /Documentation/DocumentationCreator.Calculator/Calculator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/DocumentationCreator.Calculator/Calculator.png -------------------------------------------------------------------------------- /Documentation/DocumentationCreator.Calculator/README.md: -------------------------------------------------------------------------------- 1 | # Calculator 2 | 3 | **Namespace**: DocumentationCreator 4 | **Assembly**: DocumentationCreator (in DocumentationCreator.dll) 5 | 6 | ```C# 7 | public class Calculator : System.Windows.Controls.UserControl 8 | ``` 9 | 10 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> UserControl -> Calculator 11 | ### Calculator 12 | 13 | ```xaml 14 | 15 | 16 | ``` 17 | ![Image of Calculator, Calculator](Calculator.png) 18 | 19 | -------------------------------------------------------------------------------- /Documentation/DocumentationCreator.SolutionExplorer/Explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/DocumentationCreator.SolutionExplorer/Explorer.png -------------------------------------------------------------------------------- /Documentation/DocumentationCreator.SolutionExplorer/README.md: -------------------------------------------------------------------------------- 1 | # SolutionExplorer 2 | 3 | **Namespace**: DocumentationCreator 4 | **Assembly**: DocumentationCreator (in DocumentationCreator.dll) 5 | 6 | ```C# 7 | public class SolutionExplorer : System.Windows.Controls.UserControl 8 | ``` 9 | 10 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> UserControl -> SolutionExplorer 11 | ### Explorer 12 | 13 | ```xaml 14 | 15 | 16 | ``` 17 | ![Image of SolutionExplorer, Explorer](Explorer.png) 18 | 19 | -------------------------------------------------------------------------------- /Documentation/HyperlinkRun/Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/HyperlinkRun/Normal.png -------------------------------------------------------------------------------- /Documentation/LineChart/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/LineChart/Default.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AddButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AddButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AddButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AddButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AddButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AddButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AddButton/README.md: -------------------------------------------------------------------------------- 1 | # AddButton 2 | 3 | A button that can be used to add things (files, items to a list, etc...). 4 | 5 | Displays a plus sign. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class AddButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> AddButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of AddButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of AddButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of AddButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of AddButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AddButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AddButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AlarmToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AlarmToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AlarmToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AlarmToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AlarmToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AlarmToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.AlarmToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.AlarmToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/100__progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/100__progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/50__progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/50__progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/Indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/Indeterminate.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/Indeterminate__Content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/Indeterminate__Content.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CircularProgressBar/No_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CircularProgressBar/No_progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CloseButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CloseButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CloseButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CloseButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CloseButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CloseButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CloseButton/README.md: -------------------------------------------------------------------------------- 1 | # CloseButton 2 | 3 | A button which can be used to close something (for example a window). 4 | 5 | Displays a (rotated) cross. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class CloseButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> CloseButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of CloseButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of CloseButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of CloseButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of CloseButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CloseButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CloseButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CollapseAllButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CollapseAllButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CollapseAllButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CollapseAllButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CollapseAllButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CollapseAllButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.CollapseAllButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.CollapseAllButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.DownloadButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.DownloadButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.DownloadButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.DownloadButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.DownloadButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.DownloadButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.DownloadButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.DownloadButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditorTextBox/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditorTextBox/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditorTextBox/Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditorTextBox/Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditorTextBox/Text__Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditorTextBox/Text__Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditorTextBox/Text__Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditorTextBox/Text__Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EditorTextBox/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EditorTextBox/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EmailToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EmailToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EmailToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EmailToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EmailToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EmailToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.EmailToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.EmailToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpandAllButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpandAllButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpandAllButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpandAllButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpandAllButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpandAllButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpandAllButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpandAllButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpanderToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpanderToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpanderToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpanderToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpanderToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpanderToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExpanderToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExpanderToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExportButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExportButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExportButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExportButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExportButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExportButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExportButton/README.md: -------------------------------------------------------------------------------- 1 | # ExportButton 2 | 3 | A simple button that allows for the export of data. 4 | 5 | Displays a file with an arrow to top right. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class ExportButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> ExportButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of ExportButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of ExportButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of ExportButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of ExportButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ExportButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ExportButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FileAddButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FileAddButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FileAddButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FileAddButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FileAddButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FileAddButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FileAddButton/README.md: -------------------------------------------------------------------------------- 1 | # FileAddButton 2 | 3 | A simple button that allows for adding files. 4 | 5 | Displays a file with a plus. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class FileAddButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> FileAddButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of FileAddButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of FileAddButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of FileAddButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of FileAddButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FileAddButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FileAddButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/FilterText__Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/FilterText__Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/FilterText__Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/FilterText__Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/Invalid_FilterText.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/Invalid_FilterText.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FilterTextBox/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FilterTextBox/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatPasswordBox/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatPasswordBox/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatPasswordBox/Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatPasswordBox/Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatPasswordBox/Password__Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatPasswordBox/Password__Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatPasswordBox/Password__Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatPasswordBox/Password__Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatPasswordBox/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatPasswordBox/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatProgressBar/100__progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatProgressBar/100__progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatProgressBar/50__progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatProgressBar/50__progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatProgressBar/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatProgressBar/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatProgressBar/Indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatProgressBar/Indeterminate.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FlatProgressBar/No_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FlatProgressBar/No_progress.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderAddButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderAddButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderAddButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderAddButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderAddButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderAddButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderAddButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderAddButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderOpenButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderOpenButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderOpenButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderOpenButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderOpenButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderOpenButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.FolderOpenButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.FolderOpenButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ImportButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ImportButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ImportButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ImportButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ImportButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ImportButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ImportButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ImportButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MarkdownPresenter/Bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MarkdownPresenter/Bold.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MarkdownPresenter/Bold_and_Italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MarkdownPresenter/Bold_and_Italic.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MarkdownPresenter/Hyperlink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MarkdownPresenter/Hyperlink.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MarkdownPresenter/Italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MarkdownPresenter/Italic.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MarkdownPresenter/Strikethrough.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MarkdownPresenter/Strikethrough.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MaximizeButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MaximizeButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MaximizeButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MaximizeButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MaximizeButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MaximizeButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MaximizeButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MaximizeButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MinimizeButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MinimizeButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MinimizeButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MinimizeButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MinimizeButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MinimizeButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MinimizeButton/README.md: -------------------------------------------------------------------------------- 1 | # MinimizeButton 2 | 3 | A button to minimize something, for example a window. 4 | 5 | **Namespace**: Metrolib.Controls 6 | **Assembly**: Metrolib (in Metrolib.dll) 7 | 8 | ```C# 9 | public class MinimizeButton : Metrolib.Controls.FlatButton 10 | ``` 11 | 12 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> MinimizeButton 13 | ### Unfocused 14 | 15 | ```xaml 16 | 17 | 18 | ``` 19 | ![Image of MinimizeButton, Unfocused](Unfocused.png) 20 | 21 | ### Hovered 22 | 23 | ```xaml 24 | 25 | 26 | ``` 27 | ![Image of MinimizeButton, Hovered](Hovered.png) 28 | 29 | ### Pressed 30 | 31 | ```xaml 32 | 33 | 34 | ``` 35 | ![Image of MinimizeButton, Pressed](Pressed.png) 36 | 37 | ### Disabled 38 | 39 | ```xaml 40 | 41 | 42 | ``` 43 | ![Image of MinimizeButton, Disabled](Disabled.png) 44 | 45 | # Properties 46 | 47 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MinimizeButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MinimizeButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MoreButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MoreButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MoreButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MoreButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MoreButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MoreButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.MoreButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.MoreButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.NextButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.NextButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.NextButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.NextButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.NextButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.NextButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.NextButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.NextButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PathChooserTextBox/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PathChooserTextBox/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PathChooserTextBox/Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PathChooserTextBox/Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PathChooserTextBox/Text__Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PathChooserTextBox/Text__Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PathChooserTextBox/Text__Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PathChooserTextBox/Text__Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PathChooserTextBox/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PathChooserTextBox/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/RotateWhenUnchecked_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/RotateWhenUnchecked_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/RotateWhenUnchecked_Unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/RotateWhenUnchecked_Unchecked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PinToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PinToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PluginToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PluginToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PluginToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PluginToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PluginToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PluginToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PluginToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PluginToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PreviousButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PreviousButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PreviousButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PreviousButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PreviousButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PreviousButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.PreviousButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.PreviousButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RefreshButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RefreshButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RefreshButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RefreshButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RefreshButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RefreshButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RefreshButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RefreshButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RemoveButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RemoveButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RemoveButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RemoveButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RemoveButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RemoveButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RemoveButton/README.md: -------------------------------------------------------------------------------- 1 | # RemoveButton 2 | 3 | A button used to remove something, for example an item in a list. 4 | 5 | Displays a minus sign. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class RemoveButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> RemoveButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of RemoveButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of RemoveButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of RemoveButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of RemoveButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.RemoveButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.RemoveButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchButton/README.md: -------------------------------------------------------------------------------- 1 | # SearchButton 2 | 3 | A button to initiate a search. 4 | 5 | Displays a magnifying glass. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class SearchButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> SearchButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of SearchButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of SearchButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of SearchButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of SearchButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchTextBox/FilterText__Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchTextBox/FilterText__Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchTextBox/Focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchTextBox/Focused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SearchTextBox/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SearchTextBox/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SwitchToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SwitchToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SwitchToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SwitchToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SwitchToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SwitchToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.SwitchToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.SwitchToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.TrashButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.TrashButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.TrashButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.TrashButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.TrashButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.TrashButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.TrashButton/README.md: -------------------------------------------------------------------------------- 1 | # TrashButton 2 | 3 | A button that can be used to delete things (files, items to a list, etc...). 4 | 5 | Displays a trashcan. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class TrashButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> TrashButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of TrashButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of TrashButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of TrashButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of TrashButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.TrashButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.TrashButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UndoButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UndoButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UndoButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UndoButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UndoButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UndoButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UndoButton/README.md: -------------------------------------------------------------------------------- 1 | # UndoButton 2 | 3 | A button to undo something, for example a textbox change. 4 | 5 | Displays an curved arrow to the left. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class UndoButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> UndoButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of UndoButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of UndoButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of UndoButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of UndoButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UndoButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UndoButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UploadButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UploadButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UploadButton/Hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UploadButton/Hovered.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UploadButton/Pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UploadButton/Pressed.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UploadButton/README.md: -------------------------------------------------------------------------------- 1 | # UploadButton 2 | 3 | A button which can be used to upload something. 4 | 5 | Displays an upward arrow with a line beneath. 6 | 7 | **Namespace**: Metrolib.Controls 8 | **Assembly**: Metrolib (in Metrolib.dll) 9 | 10 | ```C# 11 | public class UploadButton : Metrolib.Controls.FlatIconButton 12 | ``` 13 | 14 | Inheritance Object -> DispatcherObject -> DependencyObject -> Visual -> UIElement -> FrameworkElement -> Control -> ContentControl -> ButtonBase -> Button -> FlatButton -> FlatIconButton -> UploadButton 15 | ### Unfocused 16 | 17 | ```xaml 18 | 19 | 20 | ``` 21 | ![Image of UploadButton, Unfocused](Unfocused.png) 22 | 23 | ### Hovered 24 | 25 | ```xaml 26 | 27 | 28 | ``` 29 | ![Image of UploadButton, Hovered](Hovered.png) 30 | 31 | ### Pressed 32 | 33 | ```xaml 34 | 35 | 36 | ``` 37 | ![Image of UploadButton, Pressed](Pressed.png) 38 | 39 | ### Disabled 40 | 41 | ```xaml 42 | 43 | 44 | ``` 45 | ![Image of UploadButton, Disabled](Disabled.png) 46 | 47 | # Properties 48 | 49 | -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.UploadButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.UploadButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewDashboardToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewDashboardToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewDashboardToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewDashboardToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewDashboardToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewDashboardToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewDashboardToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewDashboardToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewQuiltToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewQuiltToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewQuiltToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewQuiltToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewQuiltToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewQuiltToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.ViewQuiltToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.ViewQuiltToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.VisibilityToggleButton/Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.VisibilityToggleButton/Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.VisibilityToggleButton/Disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.VisibilityToggleButton/Disabled.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.VisibilityToggleButton/Disabled_Checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.VisibilityToggleButton/Disabled_Checked.png -------------------------------------------------------------------------------- /Documentation/Metrolib.Controls.VisibilityToggleButton/Unfocused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/Metrolib.Controls.VisibilityToggleButton/Unfocused.png -------------------------------------------------------------------------------- /Documentation/NetworkView/Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/NetworkView/Normal.png -------------------------------------------------------------------------------- /Documentation/OpenInNewHyperlink/Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/OpenInNewHyperlink/Normal.png -------------------------------------------------------------------------------- /Documentation/PieChart/FavouriteBars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/Documentation/PieChart/FavouriteBars.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Simon Mießler 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /publish.cmd: -------------------------------------------------------------------------------- 1 | @setlocal 2 | @echo off 3 | 4 | echo Files in directory: 5 | dir . /a-d 6 | 7 | echo Looking for nuget package... 8 | FOR %%F IN (Metrolib.*.nupkg) DO ( 9 | set NUGET_PACKAGE=%%F 10 | ) 11 | 12 | if not %NUGET_PACKAGE%=="" ( 13 | if "%APPVEYOR_REPO_BRANCH%"=="master" ( 14 | echo Publishing nuget package... 15 | @nuget push -Source https://api.nuget.org/v3/index.json -ApiKey %NUGET_API_KEY% %NUGET_PACKAGE% 16 | ) else ( 17 | echo Not publishing from this branch... 18 | ) 19 | ) else ( 20 | echo Did not find anything to publish! 21 | ) 22 | -------------------------------------------------------------------------------- /restore_key.cmd: -------------------------------------------------------------------------------- 1 | @setlocal 2 | @echo off 3 | 4 | sig\crypt.exe decrypt sig\sns key.snk 5 | sig\crypt.exe enablesigning src\Metrolib\Metrolib.csproj ..\..\key.snk 6 | sig\crypt.exe enablesigning src\Metrolib.Test\Metrolib.Test.csproj ..\..\key.snk 7 | -------------------------------------------------------------------------------- /sig/.gitignore: -------------------------------------------------------------------------------- 1 | *.snk 2 | !crypt.exe -------------------------------------------------------------------------------- /sig/Crypt.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/sig/Crypt.exe -------------------------------------------------------------------------------- /sig/sns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/sig/sns -------------------------------------------------------------------------------- /src/DocumentationCreator/Bootstrapper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using log4net; 4 | 5 | namespace DocumentationCreator 6 | { 7 | static class Bootstrapper 8 | { 9 | private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 10 | 11 | [STAThread] 12 | public static int Main(string[] arguments) 13 | { 14 | try 15 | { 16 | return Documentation.Run(); 17 | } 18 | catch (Exception e) 19 | { 20 | Log.ErrorFormat("Caught unexpected exception: {0}", e); 21 | return -1; 22 | } 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/DocumentationCreator/Calculator.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace DocumentationCreator 17 | { 18 | /// 19 | /// Interaction logic for Calculator.xaml 20 | /// 21 | public partial class Calculator : UserControl 22 | { 23 | public Calculator() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/DocumentationCreator/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/DocumentationCreator/SolutionExplorer.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace DocumentationCreator 2 | { 3 | public partial class SolutionExplorer 4 | { 5 | public SolutionExplorer() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Buttons.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class Buttons 4 | { 5 | public Buttons() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/CityViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public sealed class CityViewModel 4 | { 5 | public string Name { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/ContentControls.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class ContentControls 4 | { 5 | public ContentControls() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/ContentPresenters.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for ContentPresenters.xaml 20 | /// 21 | public partial class ContentPresenters : UserControl 22 | { 23 | public ContentPresenters() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Dialogs.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class Dialogs 4 | { 5 | public Dialogs() 6 | { 7 | InitializeComponent(); 8 | 9 | DataContext = new DialogsViewModel(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/EdgeType.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace Metrolib.Sample 5 | { 6 | public sealed class EdgeType 7 | { 8 | private readonly IEnumerable _edges; 9 | private readonly string _name; 10 | 11 | public EdgeType(string name, IEnumerable edges) 12 | { 13 | _name = name; 14 | _edges = edges; 15 | } 16 | 17 | public string Name 18 | { 19 | get { return _name; } 20 | } 21 | 22 | public IEnumerable Edges 23 | { 24 | get { return _edges; } 25 | } 26 | 27 | public override string ToString() 28 | { 29 | return string.Format("{0}: {1} edges", _name, _edges.Count()); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/EditBoxes.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/EditBoxes.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for EditBoxes.xaml 20 | /// 21 | public partial class EditBoxes : UserControl 22 | { 23 | public EditBoxes() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/HistogramCharts.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/HistogramCharts.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for HistogramCharts.xaml 20 | /// 21 | public partial class HistogramCharts : UserControl 22 | { 23 | public HistogramCharts() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Items.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | Foo 14 | Bar 15 | Clondyke Bar 16 | 17 | 18 | 19 | 20 | 22 | 23 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Items.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for Items.xaml 20 | /// 21 | public partial class Items : UserControl 22 | { 23 | public Items() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/LineCharts.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Threading; 4 | 5 | namespace Metrolib.Sample 6 | { 7 | public partial class LineCharts 8 | { 9 | private readonly DispatcherTimer _timer; 10 | 11 | public LineCharts() 12 | { 13 | InitializeComponent(); 14 | 15 | _timer = new DispatcherTimer 16 | { 17 | Interval = TimeSpan.FromMilliseconds(60) 18 | }; 19 | _timer.Tick += TimerOnTick; 20 | _timer.Start(); 21 | 22 | Stacked.IsChecked = true; 23 | } 24 | 25 | private void TimerOnTick(object sender, EventArgs eventArgs) 26 | { 27 | /*for (int i = 0; i < _curve.Count; ++i) 28 | { 29 | double y = Math.Cos(i/10.0) + _random.NextDouble() / 4; 30 | _curve[i] = new Point(1.0*i/10, y); 31 | }*/ 32 | } 33 | 34 | private void OnNormalChecked(object sender, RoutedEventArgs e) 35 | { 36 | PART_Chart.ChartType = LineChartType.Normal; 37 | } 38 | 39 | private void OnStackedChecked(object sender, RoutedEventArgs e) 40 | { 41 | PART_Chart.ChartType = LineChartType.Stacked; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/Lists.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Lists.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Metrolib.Sample 4 | { 5 | public partial class Lists 6 | { 7 | public Lists() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | public List Items 13 | { 14 | get 15 | { 16 | return new List 17 | { 18 | "Luke Cage", 19 | "Daredevil", 20 | "Jessica Jones", 21 | "Punisher", 22 | "Steve Rogers", 23 | "Bruce Banner", 24 | "Tony Stark", 25 | "Thor", 26 | "Natasha Romanoff", 27 | "Clint Barton", 28 | "Loki", 29 | "Phil Coulson", 30 | "Maria Hill", 31 | "Nick Fury" 32 | }; 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/MapCharts.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class MapCharts 4 | { 5 | public MapCharts() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/MarvelCharacterViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Metrolib.Sample 4 | { 5 | public sealed class MarvelCharacterViewModel 6 | : INode 7 | { 8 | public string Name { get; set; } 9 | public Uri Portrait { get; set; } 10 | 11 | public override string ToString() 12 | { 13 | return Name; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/NetworkCharts.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class NetworkCharts 4 | { 5 | public NetworkCharts() 6 | { 7 | DataContext = new NetworkChartsViewModel(); 8 | 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Panels.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Panels.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class Panels 4 | { 5 | public Panels() 6 | { 7 | InitializeComponent(); 8 | 9 | Items.ItemsSource = new[] 10 | { 11 | "Icon For Hire", 12 | "I Am Ghost", 13 | "Eyes Set To Kill" 14 | }; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/PieCharts.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for PieCharts.xaml 20 | /// 21 | public partial class PieCharts : UserControl 22 | { 23 | public PieCharts() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/ProgressBars.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for ProgressBars.xaml 20 | /// 21 | public partial class ProgressBars : UserControl 22 | { 23 | public ProgressBars() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Metrolib.Sample.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/BlackWidow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/BlackWidow.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/CaptainAmerica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/CaptainAmerica.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/Falcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/Falcon.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/Hulk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/Hulk.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/IronMan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/IronMan.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/MariaHill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/MariaHill.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/NickFury.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/NickFury.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/ScarletWitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/ScarletWitch.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/SharonCarter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/SharonCarter.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/Thor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/Thor.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/Vision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/Vision.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Resources/WinterSoldier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kittyfisto/Metrolib/356129430a833b6a28ea3c88f29574c48e6d04f1/src/Metrolib.Sample/Resources/WinterSoldier.png -------------------------------------------------------------------------------- /src/Metrolib.Sample/Scrolling.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for Scrolling.xaml 20 | /// 21 | public partial class Scrolling : UserControl 22 | { 23 | public Scrolling() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/TextBlocks.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class TextBlocks 4 | { 5 | public TextBlocks() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/TextBoxes.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Windows.Threading; 4 | 5 | namespace Metrolib.Sample 6 | { 7 | public partial class TextBoxes 8 | { 9 | public SuggestionsViewModel SuggestionsViewModel { get; set; } 10 | 11 | public TextBoxes() 12 | { 13 | SuggestionsViewModel = new SuggestionsViewModel(new SerialTaskScheduler(), 14 | new UiDispatcher(Dispatcher.CurrentDispatcher)); 15 | 16 | InitializeComponent(); 17 | 18 | Dispatcher.BeginInvoke(new Action(() => 19 | { 20 | Foobar.Focus(); 21 | })); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib.Sample/TextEditor.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace Metrolib.Sample 17 | { 18 | /// 19 | /// Interaction logic for TextEditor.xaml 20 | /// 21 | public partial class TextEditor : UserControl 22 | { 23 | public TextEditor() 24 | { 25 | InitializeComponent(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/ToggleButtons.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Sample 2 | { 3 | public partial class ToggleButtons 4 | { 5 | public ToggleButtons() 6 | { 7 | InitializeComponent(); 8 | DataContext = new ToggleButtonsViewModel(); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Metrolib.Sample/ToggleButtonsViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using System.Runtime.CompilerServices; 4 | 5 | namespace Metrolib.Sample 6 | { 7 | public sealed class ToggleButtonsViewModel 8 | : INotifyPropertyChanged 9 | { 10 | private string _selectedItem; 11 | 12 | public ToggleButtonsViewModel() 13 | { 14 | SelectedItem = "A"; 15 | } 16 | 17 | public IEnumerable Items => new[] {"A", "B", "C"}; 18 | 19 | public string SelectedItem 20 | { 21 | get => _selectedItem; 22 | set 23 | { 24 | if (value == _selectedItem) 25 | return; 26 | 27 | _selectedItem = value; 28 | EmitPropertyChanged(); 29 | } 30 | } 31 | 32 | public event PropertyChangedEventHandler PropertyChanged; 33 | 34 | private void EmitPropertyChanged([CallerMemberName] string propertyName = null) 35 | { 36 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/AbstractControlTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Windows; 3 | using FluentAssertions; 4 | using NUnit.Framework; 5 | 6 | namespace Metrolib.Test 7 | { 8 | [TestFixture] 9 | [RequiresThread(ApartmentState.STA)] 10 | public abstract class AbstractControlTest 11 | { 12 | [Test] 13 | public void TestNamespace() 14 | { 15 | var control = Create(); 16 | var type = control.GetType(); 17 | type.Namespace.Should().Be("Metrolib.Controls", "because every control offered by this library should be part of the Metrolib.Controls namespace"); 18 | } 19 | 20 | /// 21 | /// 22 | /// 23 | /// 24 | protected abstract FrameworkElement Create(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Metrolib.Test/App.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Metrolib.Test 4 | { 5 | internal sealed class App 6 | : Application 7 | { 8 | public static readonly App Instance; 9 | 10 | static App() 11 | { 12 | Instance = new App(); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Metrolib.Test/AssemblySetup.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace Metrolib.Test 4 | { 5 | [SetUpFixture] 6 | [Parallelizable(ParallelScope.Fixtures)] 7 | public sealed class AssemblySetup 8 | { 9 | } 10 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Line/LineChartCanvasTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using FluentAssertions; 4 | using Metrolib.Controls.Charts.Line.Canvas; 5 | using Metrolib.Controls.Charts.Line.Canvas.Line; 6 | using NUnit.Framework; 7 | 8 | namespace Metrolib.Test.Charts.Line 9 | { 10 | [TestFixture] 11 | public sealed class LineChartCanvasTest 12 | : AbstractLineChartCanvasTest 13 | { 14 | protected override AbstractLineChartCanvas Create() 15 | { 16 | return new LineChartCanvas(); 17 | } 18 | 19 | [Test] 20 | [STAThread] 21 | public void TestLineSeries1() 22 | { 23 | var canvas = Create(); 24 | 25 | canvas.Series = new[] {new LineSeries {Values = new[] {new Point(1, 3), new Point(2, 4)}}}; 26 | 27 | canvas.Update(); 28 | canvas.XRange.Should().Be(new Range(1, 2)); 29 | canvas.YRange.Should().Be(new Range(3, 4)); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Map/ItemsLayerTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Charts.Map 6 | { 7 | [TestFixture] 8 | [RequiresThread(ApartmentState.STA)] 9 | public sealed class ItemsLayerTest 10 | { 11 | [Test] 12 | public void TestCtor() 13 | { 14 | var layer = new ItemsLayer(); 15 | layer.ItemTemplate.Should().BeNull(); 16 | layer.ItemTemplateSelector.Should().BeNull(); 17 | layer.ItemsSource.Should().BeNull(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Network/Algorithms/SolvingNodeLayoutAlgorithmTest.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using Moq; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Charts.Network.Algorithms 6 | { 7 | [TestFixture] 8 | public sealed class SolvingNodeLayoutAlgorithmTest 9 | { 10 | private Mock _algorithm; 11 | 12 | [SetUp] 13 | public void Setup() 14 | { 15 | _algorithm = new Mock(); 16 | } 17 | 18 | [Test] 19 | public void TestCtor() 20 | { 21 | var algorithm = new SolvingNodeLayoutAlgorithm(_algorithm.Object); 22 | var result = algorithm.Result; 23 | result.Should().NotBeNull(); 24 | result.Should().BeEmpty(); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Network/NetworkViewNodeItemTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Charts.Network 6 | { 7 | [TestFixture] 8 | [RequiresThread(ApartmentState.STA)] 9 | public sealed class NetworkViewNodeItemTest 10 | { 11 | private NetworkViewNodeItem _item; 12 | 13 | [SetUp] 14 | public void SetUp() 15 | { 16 | _item = new NetworkViewNodeItem(); 17 | } 18 | 19 | [Test] 20 | public void TestCtor() 21 | { 22 | _item.Content.Should().BeNull(); 23 | _item.IsSelected.Should().BeFalse(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Pie/PieChartLabelItemTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Charts.Pie 6 | { 7 | [TestFixture] 8 | [RequiresThread(ApartmentState.STA)] 9 | public sealed class PieChartLabelItemTest 10 | { 11 | [Test] 12 | public void TestCtor() 13 | { 14 | var item = new PieChartLabelItem(); 15 | item.Content.Should().BeNull(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Charts/Pie/PieChartValueItemTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Charts.Pie 6 | { 7 | [TestFixture] 8 | [RequiresThread(ApartmentState.STA)] 9 | public sealed class PieChartValueItemTest 10 | { 11 | [Test] 12 | public void TestCtor() 13 | { 14 | var item = new PieChartValueItem(); 15 | item.Content.Should().BeNull(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/AbstractNumberToStringConverterTest.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Data; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Converters 6 | { 7 | public abstract class AbstractNumberToStringConverterTest 8 | { 9 | protected abstract IValueConverter Converter { get; } 10 | 11 | [Test] 12 | public void TestConvert1() 13 | { 14 | Converter.Convert(null, null, null, null).Should().Be(null); 15 | Converter.Convert(42.12, null, null, null).Should().Be(null); 16 | } 17 | 18 | [Test] 19 | public void TestConvertBack2() 20 | { 21 | Converter.ConvertBack(null, null, null, null).Should().Be(null); 22 | Converter.ConvertBack(42.12, null, null, null).Should().Be(null); 23 | } 24 | 25 | } 26 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/AbstractOneWayValueConverterTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Data; 3 | using FluentAssertions; 4 | using NUnit.Framework; 5 | 6 | namespace Metrolib.Test.Converters 7 | { 8 | public abstract class AbstractOneWayValueConverterTest 9 | { 10 | public abstract Type SourceType { get; } 11 | 12 | protected abstract IValueConverter Converter { get; } 13 | 14 | protected abstract object SourceValue { get; } 15 | protected abstract object TargetValue { get; } 16 | 17 | [Test] 18 | public void TestConvertBack() 19 | { 20 | Converter.ConvertBack(TargetValue, SourceType, null, null) 21 | .Should().Be(Binding.DoNothing); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/ColorToBrushConverterTest.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Media; 2 | using FluentAssertions; 3 | using Metrolib.Converters; 4 | using NUnit.Framework; 5 | 6 | namespace Metrolib.Test.Converters 7 | { 8 | [TestFixture] 9 | public sealed class ColorToBrushConverterTest 10 | { 11 | [Test] 12 | public void TestConvert1() 13 | { 14 | var converter = new ColorToBrushConverter(); 15 | var value = converter.Convert(Colors.Red, typeof(Brush), null, null); 16 | value.Should().NotBeNull(); 17 | value.Should().BeOfType(); 18 | var brush = (SolidColorBrush) value; 19 | brush.Color.Should().Be(Colors.Red); 20 | } 21 | 22 | [Test] 23 | public void TestConvert2() 24 | { 25 | var converter = new ColorToBrushConverter(); 26 | converter.Convert(null, typeof(Brush), null, null).Should().BeNull(); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/NonEmptyToCollapsedConverterTest.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using FluentAssertions; 4 | using Metrolib.Converters; 5 | using NUnit.Framework; 6 | 7 | namespace Metrolib.Test.Converters 8 | { 9 | [TestFixture] 10 | public sealed class NonEmptyToCollapsedConverterTest 11 | { 12 | private NonEmptyToCollapsedConverter _converter; 13 | 14 | [OneTimeSetUp] 15 | public void OneTimeSetup() 16 | { 17 | _converter = new NonEmptyToCollapsedConverter(); 18 | } 19 | 20 | [Test] 21 | public void TestConvert1() 22 | { 23 | _converter.Convert(null, null, null, null).Should().BeNull(); 24 | } 25 | 26 | [Test] 27 | public void TestConvert2() 28 | { 29 | _converter.Convert(new object[0], null, null, null).Should().Be(Visibility.Visible); 30 | } 31 | 32 | [Test] 33 | public void TestConvert3() 34 | { 35 | _converter.Convert(new[] { 1 }, null, null, null).Should().Be(Visibility.Collapsed); 36 | } 37 | 38 | [Test] 39 | public void TestConvertBack() 40 | { 41 | _converter.ConvertBack(null, null, null, null).Should().Be(Binding.DoNothing); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/NonEmptyToHiddenConverterTest.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Data; 3 | using FluentAssertions; 4 | using Metrolib.Converters; 5 | using NUnit.Framework; 6 | 7 | namespace Metrolib.Test.Converters 8 | { 9 | [TestFixture] 10 | public sealed class NonEmptyToHiddenConverterTest 11 | { 12 | private NonEmptyToHiddenConverter _converter; 13 | 14 | [OneTimeSetUp] 15 | public void OneTimeSetup() 16 | { 17 | _converter = new NonEmptyToHiddenConverter(); 18 | } 19 | 20 | [Test] 21 | public void TestConvert1() 22 | { 23 | _converter.Convert(null, null, null, null).Should().BeNull(); 24 | } 25 | 26 | [Test] 27 | public void TestConvert2() 28 | { 29 | _converter.Convert(new object[0], null, null, null).Should().Be(Visibility.Visible); 30 | } 31 | 32 | [Test] 33 | public void TestConvert3() 34 | { 35 | _converter.Convert(new [] {1}, null, null, null).Should().Be(Visibility.Hidden); 36 | } 37 | 38 | [Test] 39 | public void TestConvertBack() 40 | { 41 | _converter.ConvertBack(null, null, null, null).Should().Be(Binding.DoNothing); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Converters/NullToFalseConverterTest.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using Metrolib.Converters; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.Converters 6 | { 7 | [TestFixture] 8 | public sealed class NullToFalseConverterTest 9 | { 10 | [Test] 11 | public void TestConvert() 12 | { 13 | var converter = new NullToFalseConverter(); 14 | converter.Convert(null, null, null, null).Should().Be(false); 15 | converter.Convert(true, null, null, null).Should().Be(true); 16 | converter.Convert(42, null, null, null).Should().Be(true); 17 | converter.Convert(false, null, null, null).Should().Be(true); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Metrolib.Test/DelegateCommandTest.cs: -------------------------------------------------------------------------------- 1 | using FluentAssertions; 2 | using NUnit.Framework; 3 | 4 | namespace Metrolib.Test 5 | { 6 | [TestFixture] 7 | public sealed class DelegateCommandTest 8 | { 9 | [Test] 10 | public void TestCanExecute1() 11 | { 12 | var command = new DelegateCommand(value => { }, value => 13 | { 14 | value.Should().BeNull(); 15 | return true; 16 | }); 17 | 18 | command.CanExecute(42).Should().BeTrue("Because the delegate shall be invoked even when the types don't match"); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Geometry/CircleTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using FluentAssertions; 4 | using Metrolib.Geometry; 5 | using NUnit.Framework; 6 | 7 | namespace Metrolib.Test.Geometry 8 | { 9 | [TestFixture] 10 | public sealed class CircleTest 11 | { 12 | [Test] 13 | public void TestGetPoint1() 14 | { 15 | var circle = new Circle 16 | { 17 | Center = new Point(1, 2), 18 | Radius = 0 19 | }; 20 | circle.GetPoint(0).Should().Be(circle.Center); 21 | } 22 | 23 | [Test] 24 | public void TestGetCircumference() 25 | { 26 | new Circle {Radius = 0}.Circumference.Should().Be(0); 27 | new Circle{Radius = 1}.Circumference.Should().Be(2*Math.PI); 28 | new Circle {Radius = 0.5}.Circumference.Should().Be(Math.PI); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/Geometry/TriangleTest.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using FluentAssertions; 3 | using Metrolib.Geometry; 4 | using NUnit.Framework; 5 | 6 | namespace Metrolib.Test.Geometry 7 | { 8 | [TestFixture] 9 | public sealed class TriangleTest 10 | { 11 | [Test] 12 | public void TestContains1() 13 | { 14 | var triangle = new Triangle 15 | { 16 | P0 = new Point(0, 0), 17 | P1 = new Point(5, 0), 18 | P2 = new Point(0, 5) 19 | }; 20 | triangle.Contains(triangle.P0).Should().BeTrue("because a triangle should contain its corners"); 21 | triangle.Contains(triangle.P1).Should().BeTrue("because a triangle should contain its corners"); 22 | triangle.Contains(triangle.P2).Should().BeTrue("because a triangle should contain its corners"); 23 | 24 | triangle.Contains(new Point(1, 1)).Should().BeTrue(); 25 | 26 | triangle.Contains(new Point(-0.1, 0)).Should().BeFalse(); 27 | triangle.Contains(new Point(5.1, 0)).Should().BeFalse(); 28 | 29 | triangle.Contains(new Point(0, -0.1)).Should().BeFalse(); 30 | triangle.Contains(new Point(0, 5.1)).Should().BeFalse(); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/ItemsToggleButton/ItemsToggleButtonTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using NUnit.Framework; 4 | 5 | namespace Metrolib.Test.ItemsToggleButton 6 | { 7 | [TestFixture] 8 | [RequiresThread(ApartmentState.STA)] 9 | public sealed class ItemsToggleButtonTest 10 | { 11 | [Test] 12 | public void SetNullItemsSource() 13 | { 14 | var control = new Controls.ItemsToggleButton(); 15 | control.ItemsSource = new object[] {42}; 16 | control.ItemsSource.Should().BeEquivalentTo(new object[]{42}); 17 | 18 | control.ItemsSource = null; 19 | control.ItemsSource.Should().BeNull(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Metrolib.Test/LocalTestAttribute.cs: -------------------------------------------------------------------------------- 1 | using NUnit.Framework; 2 | 3 | namespace Metrolib.Test 4 | { 5 | public class LocalTest 6 | : CategoryAttribute 7 | { 8 | public LocalTest() 9 | : base("LocalTest") 10 | { 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/ProgressBar/CircularProgressBarTest.cs: -------------------------------------------------------------------------------- 1 | using Metrolib.Controls; 2 | using NUnit.Framework; 3 | 4 | namespace Metrolib.Test.ProgressBar 5 | { 6 | [TestFixture] 7 | public sealed class CircularProgressBarTest 8 | : AbstractProgressBarTest 9 | { 10 | protected override AbstractProgressBar CreateProgressBar() 11 | { 12 | return new CircularProgressBar(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/ProgressBar/FlatProgressBarTest.cs: -------------------------------------------------------------------------------- 1 | using Metrolib.Controls; 2 | using NUnit.Framework; 3 | 4 | namespace Metrolib.Test.ProgressBar 5 | { 6 | [TestFixture] 7 | public sealed class FlatProgressBarTest 8 | : AbstractProgressBarTest 9 | { 10 | protected override AbstractProgressBar CreateProgressBar() 11 | { 12 | return new FlatProgressBar(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/ScrollViewer/FlatScrollViewerTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Windows.Controls; 3 | using FluentAssertions; 4 | using Metrolib.Controls; 5 | using NUnit.Framework; 6 | 7 | namespace Metrolib.Test.ScrollViewer 8 | { 9 | [LocalTest] 10 | [TestFixture] 11 | [RequiresThread(ApartmentState.STA)] 12 | public sealed class FlatScrollViewerTest 13 | { 14 | private FlatScrollViewer _scrollViewer; 15 | 16 | [SetUp] 17 | public void SetUp() 18 | { 19 | _scrollViewer = new FlatScrollViewer(); 20 | } 21 | 22 | [Test] 23 | public void TestCtor() 24 | { 25 | _scrollViewer.MousePanningMode.Should().Be(PanningMode.None); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/SearchTextBoxTest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using FluentAssertions; 3 | using Metrolib.Controls; 4 | using NUnit.Framework; 5 | 6 | namespace Metrolib.Test 7 | { 8 | [TestFixture] 9 | [RequiresThread(ApartmentState.STA)] 10 | public sealed class SearchTextBoxTest 11 | { 12 | [Test] 13 | public void TestChangeText1() 14 | { 15 | var box = new SearchTextBox {RequiresExplicitSearchStart = false}; 16 | box.IsPerformingSearch.Should().BeFalse("because we haven't entered any text"); 17 | box.Text = "Foobar"; 18 | box.IsPerformingSearch.Should() 19 | .BeTrue("because searches should start automatically when 'RequiresExplicitSearchStart' is set to false"); 20 | 21 | box.Text = null; 22 | box.IsPerformingSearch.Should().BeFalse("because we've cleared the text again"); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/Metrolib.Test/StyleHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using FluentAssertions; 4 | 5 | namespace Metrolib.Test 6 | { 7 | public static class StyleHelper 8 | { 9 | public static Style Load() 10 | { 11 | var path = new Uri("/Metrolib;component/Themes/Generic.xaml", UriKind.RelativeOrAbsolute); 12 | var dictionary = new ResourceDictionary 13 | { 14 | Source = path 15 | }; 16 | var style = dictionary[typeof (T)]; 17 | style.Should().BeOfType 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/CloseButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// A button which can be used to close something (for example a window). 8 | /// 9 | /// 10 | /// Displays a (rotated) cross. 11 | /// 12 | public class CloseButton 13 | : FlatIconButton 14 | { 15 | static CloseButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof(CloseButton), 18 | new FrameworkPropertyMetadata(typeof(CloseButton))); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/CloseButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/CollapseAllButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button that can be used to collapse all items in a tree. 9 | /// 10 | /// 11 | /// Displays a minus sign in a box. 12 | /// 13 | public class CollapseAllButton : FlatIconButton 14 | { 15 | static CollapseAllButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof (CollapseAllButton), new FrameworkPropertyMetadata(typeof (CollapseAllButton))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/CollapseAllButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/DownloadButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// A button which can be used to download something. 8 | /// 9 | /// 10 | /// Displays a downward arrow with a line beneath. 11 | /// 12 | public class DownloadButton 13 | : FlatIconButton 14 | { 15 | static DownloadButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof(DownloadButton), 18 | new FrameworkPropertyMetadata(typeof(DownloadButton))); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/DownloadButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ExpandAllButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button that can be used to expand all items in a tree. 9 | /// 10 | /// 11 | /// Displays a plus sign in a box. 12 | /// 13 | public class ExpandAllButton : FlatIconButton 14 | { 15 | static ExpandAllButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof (ExpandAllButton), new FrameworkPropertyMetadata(typeof (ExpandAllButton))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ExpandAllButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ExportButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A simple button that allows for the export of data. 9 | /// 10 | /// 11 | /// Displays a file with an arrow to top right. 12 | /// 13 | public class ExportButton 14 | : FlatIconButton 15 | { 16 | static ExportButton() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof (ExportButton), 19 | new FrameworkPropertyMetadata(typeof (ExportButton))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ExportButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FileAddButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A simple button that allows for adding files. 9 | /// 10 | /// 11 | /// Displays a file with a plus. 12 | /// 13 | public class FileAddButton 14 | : FlatIconButton 15 | { 16 | static FileAddButton() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof (FileAddButton), 19 | new FrameworkPropertyMetadata(typeof (FileAddButton))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FileAddButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FolderAddButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A simple button that allows for adding folders. 9 | /// 10 | /// 11 | /// Displays a folder with a plus. 12 | /// 13 | public class FolderAddButton 14 | : FlatIconButton 15 | { 16 | static FolderAddButton() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof (FolderAddButton), 19 | new FrameworkPropertyMetadata(typeof (FolderAddButton))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FolderAddButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FolderOpenButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// A button that should spawn a folder open dialog or a new explorer folder. 8 | /// 9 | /// 10 | /// Displays an open folder. 11 | /// 12 | public class FolderOpenButton : FlatIconButton 13 | { 14 | static FolderOpenButton() 15 | { 16 | DefaultStyleKeyProperty.OverrideMetadata(typeof(FolderOpenButton), 17 | new FrameworkPropertyMetadata(typeof(FolderOpenButton))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/FolderOpenButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ImportButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A simple button that allows for the import of data. 9 | /// 10 | /// 11 | /// Displays a file with an arrow to bottom right. 12 | /// 13 | public class ImportButton 14 | : FlatIconButton 15 | { 16 | static ImportButton() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof (ImportButton), 19 | new FrameworkPropertyMetadata(typeof (ImportButton))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/ImportButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/MinimizeButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button to minimize something, for example a window. 9 | /// 10 | public class MinimizeButton 11 | : FlatButton 12 | { 13 | static MinimizeButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(MinimizeButton), new FrameworkPropertyMetadata(typeof(MinimizeButton))); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/NextButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A button used to jump to the next something, for example 10 | /// the next occurrence of a search term in a document. 11 | /// 12 | /// 13 | /// Displays a downwards arrow. 14 | /// 15 | public class NextButton 16 | : FlatIconButton 17 | { 18 | static NextButton() 19 | { 20 | DefaultStyleKeyProperty.OverrideMetadata(typeof (NextButton), new FrameworkPropertyMetadata(typeof (NextButton))); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/NextButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/PreviousButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A button used to jump to the previous something, for example 10 | /// the previous occurrence of a search term in a document. 11 | /// 12 | /// 13 | /// Displays an upwards arrow. 14 | /// 15 | public class PreviousButton 16 | : FlatIconButton 17 | { 18 | static PreviousButton() 19 | { 20 | DefaultStyleKeyProperty.OverrideMetadata(typeof (PreviousButton), 21 | new FrameworkPropertyMetadata(typeof (PreviousButton))); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/PreviousButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/RemoveButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A button used to remove something, for example an item in a list. 10 | /// 11 | /// 12 | /// Displays a minus sign. 13 | /// 14 | public class RemoveButton : FlatIconButton 15 | { 16 | static RemoveButton() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof (RemoveButton), new FrameworkPropertyMetadata(typeof (RemoveButton))); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/RemoveButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 17 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/SearchButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A button to initiate a search. 10 | /// 11 | /// 12 | /// Displays a magnifying glass. 13 | /// 14 | public class SearchButton 15 | : FlatIconButton 16 | { 17 | static SearchButton() 18 | { 19 | DefaultStyleKeyProperty.OverrideMetadata(typeof (SearchButton), new FrameworkPropertyMetadata(typeof (SearchButton))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/SearchButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/TrashButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button that can be used to delete things (files, items to a list, etc...). 9 | /// 10 | /// 11 | /// Displays a trashcan. 12 | /// 13 | public class TrashButton : FlatIconButton 14 | { 15 | static TrashButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof (TrashButton), new FrameworkPropertyMetadata(typeof (TrashButton))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/TrashButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/UndoButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// A button to undo something, for example a textbox change. 8 | /// 9 | /// 10 | /// Displays an curved arrow to the left. 11 | /// 12 | public class UndoButton 13 | : FlatIconButton 14 | { 15 | static UndoButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof(UndoButton), 18 | new FrameworkPropertyMetadata(typeof(UndoButton))); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/UndoButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/UploadButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// A button which can be used to upload something. 8 | /// 9 | /// 10 | /// Displays an upward arrow with a line beneath. 11 | /// 12 | public class UploadButton 13 | : FlatIconButton 14 | { 15 | static UploadButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof(UploadButton), 18 | new FrameworkPropertyMetadata(typeof(UploadButton))); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Buttons/UploadButton.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Histogram/DateTimeHistogram.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | namespace Metrolib 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A chart displaying the density of a certain value over time. 10 | /// 11 | public class DateTimeHistogram 12 | : Control 13 | { 14 | static DateTimeHistogram() 15 | { 16 | DefaultStyleKeyProperty.OverrideMetadata(typeof(DateTimeHistogram), new FrameworkPropertyMetadata(typeof(DateTimeHistogram))); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Histogram/DateTimeHistogram.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Line/Canvas/Line/LineChartCanvas.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace Metrolib.Controls.Charts.Line.Canvas.Line 4 | { 5 | /// 6 | /// Is responsible for actually drawing points as a line. 7 | /// 8 | public sealed class LineChartCanvas 9 | : AbstractLineChartCanvas 10 | { 11 | static LineChartCanvas() 12 | { 13 | DefaultStyleKeyProperty.OverrideMetadata(typeof (LineChartCanvas), 14 | new FrameworkPropertyMetadata(typeof (LineChartCanvas))); 15 | } 16 | 17 | /// 18 | /// Creates a canvas responsible for drawing the given series only. 19 | /// 20 | /// 21 | /// 22 | protected override AbstractLineSeriesCanvas CreateCanvas(ILineSeries series) 23 | { 24 | return new LineSeriesCanvas(series); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Line/Canvas/Stacked/StackedLineChartCanvas.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Controls.Charts.Line.Canvas.Stacked 2 | { 3 | /// 4 | /// 5 | /// 6 | public sealed class StackedLineChartCanvas 7 | : AbstractLineChartCanvas 8 | { 9 | /// 10 | /// Is called to prepare the canvas for rendering. 11 | /// 12 | public override void Update() 13 | { 14 | StackedLineSeriesCanvas previous = null; 15 | foreach (StackedLineSeriesCanvas canvas in SeriesCanvasses) 16 | { 17 | canvas.Previous = previous; 18 | canvas.StackWithPrevious(); 19 | previous = canvas; 20 | } 21 | 22 | base.Update(); 23 | } 24 | 25 | /// 26 | /// Creates a canvas responsible for drawing the given series only. 27 | /// 28 | /// 29 | /// 30 | protected override AbstractLineSeriesCanvas CreateCanvas(ILineSeries series) 31 | { 32 | return new StackedLineSeriesCanvas(series); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Line/LineChartType.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | 3 | namespace Metrolib 4 | // ReSharper restore CheckNamespace 5 | { 6 | /// 7 | /// Lists various "types" one or more can be displayed. 8 | /// 9 | public enum LineChartType 10 | { 11 | /// 12 | /// One line per . 13 | /// The area under the line may be filled out, but a translucient fill brush is 14 | /// recommended in case more than one series is displayed. 15 | /// 16 | Normal, 17 | 18 | /// 19 | /// One line per , however each series sits on top of 20 | /// the previous one. When this is used, should 21 | /// be set to the user understands this fact. 22 | /// 23 | Stacked, 24 | } 25 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/CameraChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib 5 | // ReSharper restore CheckNamespace 6 | { 7 | public sealed class CameraChangedEventArgs 8 | : EventArgs 9 | { 10 | 11 | } 12 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/ITileCache.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using System.Windows.Media; 3 | 4 | // ReSharper disable once CheckNamespace 5 | namespace Metrolib.Controls 6 | { 7 | /// 8 | /// Responsible for retrieving the actual images for a specific tile. 9 | /// 10 | public interface ITileCache 11 | { 12 | /// 13 | /// 14 | /// 15 | /// 16 | Task GetTileAsync(Tile tile); 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/MapCanvas.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | 6 | namespace Metrolib 7 | // ReSharper restore CheckNamespace 8 | { 9 | /// 10 | /// The canvas that actually presents all layers of a . 11 | /// 12 | public class MapCanvas 13 | : Grid 14 | { 15 | 16 | } 17 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/MapView.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 20 | 21 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/MapViewItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | 6 | namespace Metrolib 7 | // ReSharper restore CheckNamespace 8 | { 9 | /// 10 | /// Control representing an item in the map. 11 | /// 12 | public abstract class MapViewItem 13 | : ContentControl 14 | { 15 | /// 16 | /// Definition of the dependency property. 17 | /// 18 | public static readonly DependencyProperty IsSelectedProperty = 19 | DependencyProperty.Register("IsSelected", typeof (bool), typeof (MapViewItem), new PropertyMetadata(default(bool))); 20 | 21 | /// 22 | /// Whether or not this item is selected. 23 | /// 24 | public bool IsSelected 25 | { 26 | get { return (bool) GetValue(IsSelectedProperty); } 27 | set { SetValue(IsSelectedProperty, value); } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Map/MapViewPointItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// Control representing a point on the map as a push pin. 10 | /// 11 | public class MapViewPointItem 12 | : MapViewItem 13 | { 14 | static MapViewPointItem() 15 | { 16 | DefaultStyleKeyProperty.OverrideMetadata(typeof (MapViewPointItem), 17 | new FrameworkPropertyMetadata(typeof (MapViewPointItem))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/Direction.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | namespace Metrolib 3 | // ReSharper restore CheckNamespace 4 | { 5 | /// 6 | /// The direction of an edge. 7 | /// 8 | public enum EdgeDirection 9 | { 10 | /// 11 | /// The edge is not directed, i.e. is drawn without an arrow. 12 | /// 13 | Undirected, 14 | 15 | /// 16 | /// The edge is directed and points from TO . 17 | /// Visually, this is represented by an arrow. 18 | /// 19 | Node1ToNode2, 20 | 21 | /// 22 | /// The edge is directed and points from TO . 23 | /// Visually, this is represented by an arrow. 24 | /// 25 | Node2ToNode1, 26 | } 27 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/Edge.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | 3 | namespace Metrolib 4 | // ReSharper restore CheckNamespace 5 | { 6 | /// 7 | /// Untyped edge between two nodes of type in a graph. 8 | /// 9 | public sealed class Edge 10 | : IEdge 11 | { 12 | /// 13 | /// The direction the edge points in, if any. 14 | /// 15 | public EdgeDirection Direction { get; set; } 16 | 17 | /// 18 | /// The first node of this edge. 19 | /// 20 | public INode Node1 { get; set; } 21 | 22 | /// 23 | /// The second node of this edge. 24 | /// 25 | public INode Node2 { get; set; } 26 | 27 | /// 28 | /// Creates a new edge between the two given nodes. 29 | /// 30 | /// 31 | /// 32 | /// 33 | public static Edge Create(INode node1, INode node2) 34 | { 35 | return new Edge {Node1 = node1, Node2 = node2}; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/IEdge.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | namespace Metrolib 3 | // ReSharper restore CheckNamespace 4 | { 5 | /// 6 | /// Represents an edge in a 2-d graph. 7 | /// 8 | public interface IEdge 9 | { 10 | /// 11 | /// The direction the edge points in, if any. 12 | /// 13 | EdgeDirection Direction { get; } 14 | 15 | /// 16 | /// The first node of this edge. 17 | /// 18 | INode Node1 { get; } 19 | 20 | /// 21 | /// The second node of this edge. 22 | /// 23 | INode Node2 { get; } 24 | } 25 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/INode.cs: -------------------------------------------------------------------------------- 1 |  // ReSharper disable CheckNamespace 2 | 3 | namespace Metrolib 4 | // ReSharper restore CheckNamespace 5 | { 6 | /// 7 | /// Represents a node in a 2-d graph. 8 | /// 9 | public interface INode 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/NetworkView.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/WidthHeightToRadiusConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Controls.Charts.Network 7 | { 8 | internal sealed class WidthHeightToRadiusConverter 9 | : IMultiValueConverter 10 | { 11 | public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 12 | { 13 | var width = (double)values[0]; 14 | var height = (double) values[1]; 15 | var edge = Math.Max(width, height); 16 | var diameter = Math.Sqrt(edge * edge + edge * edge); 17 | var radius = diameter/2; 18 | return new CornerRadius(radius); 19 | } 20 | 21 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 22 | { 23 | throw new NotImplementedException(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Network/WidthHeightToSizeConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Controls.Charts.Network 6 | { 7 | internal sealed class WidthHeightToSizeConverter 8 | : IMultiValueConverter 9 | { 10 | public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 11 | { 12 | var width = (double)values[0]; 13 | var height = (double)values[1]; 14 | var edge = Math.Max(width, height); 15 | var diameter = Math.Sqrt(edge * edge + edge * edge); 16 | return diameter; 17 | } 18 | 19 | public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 20 | { 21 | throw new NotImplementedException(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Pie/IPieSeries.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | 3 | using System.Collections.Generic; 4 | 5 | namespace Metrolib 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// 10 | /// 11 | public interface IPieSeries 12 | { 13 | /// 14 | /// 15 | /// 16 | IEnumerable Slices { get; } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Pie/PieChartLabelItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// Responsible for presenting the property. 10 | /// 11 | public class PieChartLabelItem 12 | : ContentPresenter 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Pie/PieChartValueItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Controls; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// Responsible for presenting the inside 9 | /// the circle segment allocated to that slice. 10 | /// 11 | public sealed class PieChartValueItem 12 | : ContentPresenter 13 | { 14 | } 15 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Charts/Pie/SliceDirection.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | 3 | namespace Metrolib 4 | // ReSharper restore CheckNamespace 5 | { 6 | /// 7 | /// Describes the direction a is pointing at. 8 | /// 9 | public enum SliceDirection 10 | { 11 | /// 12 | /// The slice is facing in the top right corner of the chart. 13 | /// 14 | TopRight, 15 | 16 | /// 17 | /// The slice is facing in the bottom right corner of the chart. 18 | /// 19 | BottomRight, 20 | 21 | /// 22 | /// The slice is facing in the bottom left corner of the chart. 23 | /// 24 | BottomLeft, 25 | 26 | /// 27 | /// The slice is facing in the top left corner of the chart. 28 | /// 29 | TopLeft, 30 | } 31 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ContextMenu/MenuItemContentControl.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// 10 | /// 11 | public class MenuItemContentControl 12 | : ContentControl 13 | { 14 | static MenuItemContentControl() 15 | { 16 | DefaultStyleKeyProperty.OverrideMetadata(typeof (MenuItemContentControl), 17 | new FrameworkPropertyMetadata(typeof (MenuItemContentControl))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/FlatSeparator.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// 8 | public class FlatSeparator 9 | : Separator 10 | { 11 | /// 12 | /// Definition of the dependency property. 13 | /// 14 | public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register( 15 | "Orientation", typeof(Orientation), typeof(FlatSeparator), new PropertyMetadata(Orientation.Horizontal)); 16 | 17 | /// 18 | /// The visual orientation of this separator. 19 | /// 20 | public Orientation Orientation 21 | { 22 | get { return (Orientation) GetValue(OrientationProperty); } 23 | set { SetValue(OrientationProperty, value); } 24 | } 25 | 26 | static FlatSeparator() 27 | { 28 | DefaultStyleKeyProperty.OverrideMetadata(typeof(FlatSeparator), new FrameworkPropertyMetadata(typeof(FlatSeparator))); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/GroupBox/FlatGroupBox.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A group box in a flat style: 10 | /// - No border 11 | /// - Header has increased font size 12 | /// 13 | public class FlatGroupBox 14 | : GroupBox 15 | { 16 | static FlatGroupBox() 17 | { 18 | DefaultStyleKeyProperty.OverrideMetadata(typeof(FlatGroupBox), new FrameworkPropertyMetadata(typeof(FlatGroupBox))); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/List/FlatListViewItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace Metrolib.Controls.List 5 | { 6 | /// 7 | /// A "flat" list view item. 8 | /// 9 | public sealed class FlatListViewItem 10 | : ListViewItem 11 | { 12 | static FlatListViewItem() 13 | { 14 | DefaultStyleKeyProperty.OverrideMetadata(typeof (FlatListViewItem), 15 | new FrameworkPropertyMetadata(typeof (FlatListViewItem))); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/NotificationBadge.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace Metrolib.Controls 5 | { 6 | /// 7 | /// TBD 8 | /// 9 | public class NotificationBadge : ContentControl 10 | { 11 | static NotificationBadge() 12 | { 13 | DefaultStyleKeyProperty.OverrideMetadata(typeof (NotificationBadge), 14 | new FrameworkPropertyMetadata(typeof (NotificationBadge))); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Tab/FlatTabControl.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace Metrolib.Controls.Tab 5 | { 6 | /// 7 | /// A "flat" tab control. 8 | /// 9 | public class FlatTabControl 10 | : TabControl 11 | { 12 | static FlatTabControl() 13 | { 14 | DefaultStyleKeyProperty.OverrideMetadata(typeof (FlatTabControl), 15 | new FrameworkPropertyMetadata(typeof (FlatTabControl))); 16 | } 17 | 18 | /// 19 | /// Creates and returns a new Metrolib.Controls.FlatTabItem container. 20 | /// 21 | /// 22 | protected override DependencyObject GetContainerForItemOverride() 23 | { 24 | return new FlatTabItem(); 25 | } 26 | 27 | /// 28 | /// Determines whether an object is a Metrolib.Controls.FlatTabItem. 29 | /// 30 | /// 31 | /// 32 | protected override bool IsItemItsOwnContainerOverride(object item) 33 | { 34 | return item is FlatTabItem; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Tab/FlatTabItem.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | // ReSharper disable CheckNamespace 5 | 6 | namespace Metrolib.Controls 7 | // ReSharper restore CheckNamespace 8 | { 9 | /// 10 | /// A "flat" tab item. 11 | /// 12 | public class FlatTabItem 13 | : TabItem 14 | { 15 | static FlatTabItem() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof (FlatTabItem), new FrameworkPropertyMetadata(typeof (FlatTabItem))); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/TextBlocks/MarkdownPresenter.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 18 | 19 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/TextBlocks/MarkdownTokenType.cs: -------------------------------------------------------------------------------- 1 | namespace Metrolib.Controls.TextBlocks 2 | { 3 | /// 4 | /// 5 | /// 6 | public enum MarkdownTokenType : byte 7 | { 8 | None = 0, 9 | 10 | Star, 11 | Underscore, 12 | LineBreak, 13 | Whitespace, 14 | Tilde, 15 | 16 | SquareBracketOpen, 17 | SquareBracketClose, 18 | 19 | BracketOpen, 20 | BracketClose, 21 | 22 | Text = 255 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/AlarmToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespaces 6 | { 7 | /// 8 | /// A toggle button that allows an alarm to be on or off. 9 | /// 10 | public class AlarmToggleButton 11 | : ToggleButtonBase 12 | { 13 | static AlarmToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(AlarmToggleButton), 16 | new FrameworkPropertyMetadata(typeof(AlarmToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/EditToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A toggle button that allows to toggle between editing and not-. 9 | /// 10 | public class EditToggleButton : FlatToggleButton 11 | { 12 | static EditToggleButton() 13 | { 14 | DefaultStyleKeyProperty.OverrideMetadata(typeof (EditToggleButton), 15 | new FrameworkPropertyMetadata(typeof (EditToggleButton))); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/EmailToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// A toggle button with a letter icon. 10 | /// The icon displays an opened letter when toggled. 11 | /// 12 | public class EmailToggleButton 13 | : FlatToggleButton 14 | { 15 | static EmailToggleButton() 16 | { 17 | DefaultStyleKeyProperty.OverrideMetadata(typeof (EmailToggleButton), 18 | new FrameworkPropertyMetadata(typeof (EmailToggleButton))); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/FlatToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// An extended toggle button that offers an IsInverted property to control how the content shall be displayed. 9 | /// 10 | public class FlatToggleButton 11 | : ToggleButtonBase 12 | { 13 | static FlatToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(FlatToggleButton), 16 | new FrameworkPropertyMetadata(typeof(FlatToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/PluginToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A toggle button with a plugin icon. 9 | /// The icon displays four puzzle pieces. 10 | /// 11 | public class PluginToggleButton 12 | : FlatToggleButton 13 | { 14 | static PluginToggleButton() 15 | { 16 | DefaultStyleKeyProperty.OverrideMetadata(typeof (PluginToggleButton), 17 | new FrameworkPropertyMetadata(typeof (PluginToggleButton))); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/SwitchToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespaces 6 | { 7 | /// 8 | /// A toggle button in the / style. 9 | /// 10 | public class SwitchToggleButton 11 | : ToggleButtonBase 12 | { 13 | static SwitchToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(SwitchToggleButton), 16 | new FrameworkPropertyMetadata(typeof(SwitchToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/ViewDashboardToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button to represent an ordered layout. 9 | /// 10 | public class ViewDashboardToggleButton 11 | : FlatToggleButton 12 | { 13 | static ViewDashboardToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(ViewDashboardToggleButton), 16 | new FrameworkPropertyMetadata(typeof(ViewDashboardToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/ViewQuiltToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A button to represent an unorderly layout. 9 | /// 10 | public class ViewQuiltToggleButton 11 | : FlatToggleButton 12 | { 13 | static ViewQuiltToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof(ViewQuiltToggleButton), 16 | new FrameworkPropertyMetadata(typeof(ViewQuiltToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/ToggleButtons/VisibilityToggleButton.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable CheckNamespace 4 | namespace Metrolib.Controls 5 | // ReSharper restore CheckNamespace 6 | { 7 | /// 8 | /// A toggle button that allows the user to control whether a filter is being used to include or exclude items. 9 | /// 10 | public class VisibilityToggleButton 11 | : FlatToggleButton 12 | { 13 | static VisibilityToggleButton() 14 | { 15 | DefaultStyleKeyProperty.OverrideMetadata(typeof (VisibilityToggleButton), 16 | new FrameworkPropertyMetadata(typeof (VisibilityToggleButton))); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Tree/ITreeViewItemViewModel.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | 3 | using System.ComponentModel; 4 | 5 | namespace Metrolib.Controls 6 | // ReSharper restore CheckNamespace 7 | { 8 | /// 9 | /// An optional view model that may be implemented by a view model that is being displayed 10 | /// in a . The view model is notified about whether or not 11 | /// its hosting is selected and/or expanded. 12 | /// 13 | public interface ITreeViewItemViewModel 14 | : INotifyPropertyChanged 15 | { 16 | /// 17 | /// 18 | /// 19 | bool IsSelected { get; set; } 20 | 21 | /// 22 | /// 23 | /// 24 | bool IsExpanded { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Metrolib/Controls/Tree/LeftMarginMultiplierConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | // ReSharper disable CheckNamespace 7 | namespace Metrolib.Controls 8 | // ReSharper restore CheckNamespace 9 | { 10 | internal sealed class LeftMarginMultiplierConverter 11 | : IValueConverter 12 | { 13 | public double Multiplier { get; set; } 14 | 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | var item = value as FlatTreeViewItem; 18 | if (item == null) 19 | return null; 20 | 21 | int depth = item.Depth; 22 | double margin = depth*Multiplier; 23 | return new Thickness(margin, 0, 0, 0); 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 27 | { 28 | throw new NotImplementedException(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/BoolFalseToCollapsedConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | // ReSharper disable CheckNamespace 7 | 8 | namespace Metrolib.Converters 9 | // ReSharper restore CheckNamespace 10 | { 11 | /// 12 | /// Converts false to , true to 13 | /// and anything else to null. 14 | /// 15 | public sealed class BoolFalseToCollapsedConverter 16 | : IValueConverter 17 | { 18 | /// 19 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 20 | { 21 | if (targetType != typeof (Visibility)) 22 | return null; 23 | 24 | if (!(value is bool)) 25 | return null; 26 | 27 | var val = (bool) value; 28 | if (!val) 29 | { 30 | return Visibility.Collapsed; 31 | } 32 | 33 | return Visibility.Visible; 34 | } 35 | 36 | /// 37 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 38 | { 39 | return Binding.DoNothing; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/BoolFalseToHiddenConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | // ReSharper disable CheckNamespace 7 | 8 | namespace Metrolib.Converters 9 | // ReSharper restore CheckNamespace 10 | { 11 | /// 12 | /// Converts false to , true to and anything else 13 | /// to null. 14 | /// 15 | public sealed class BoolFalseToHiddenConverter 16 | : IValueConverter 17 | { 18 | /// 19 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 20 | { 21 | if (targetType != typeof (Visibility)) 22 | return null; 23 | 24 | if (!(value is bool)) 25 | return null; 26 | 27 | var val = (bool) value; 28 | if (!val) 29 | { 30 | return Visibility.Hidden; 31 | } 32 | 33 | return Visibility.Visible; 34 | } 35 | 36 | /// 37 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 38 | { 39 | return Binding.DoNothing; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/BoolTrueToCollapsedConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | // ReSharper disable CheckNamespace 7 | 8 | namespace Metrolib.Converters 9 | // ReSharper restore CheckNamespace 10 | { 11 | /// 12 | /// Converts true to , false to 13 | /// and anything else to null. 14 | /// 15 | public sealed class BoolTrueToCollapsedConverter 16 | : IValueConverter 17 | { 18 | /// 19 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 20 | { 21 | if (targetType != typeof (Visibility)) 22 | return null; 23 | 24 | if (!(value is bool)) 25 | return null; 26 | 27 | var val = (bool) value; 28 | if (val) 29 | { 30 | return Visibility.Collapsed; 31 | } 32 | 33 | return Visibility.Visible; 34 | } 35 | 36 | /// 37 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 38 | { 39 | return Binding.DoNothing; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/BoolTrueToHiddenConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts true to , false to and anything else 10 | /// to null. 11 | /// 12 | public sealed class BoolTrueToHiddenConverter 13 | : IValueConverter 14 | { 15 | /// 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | if (targetType != typeof(Visibility)) 19 | return null; 20 | 21 | if (!(value is bool)) 22 | return null; 23 | 24 | var val = (bool)value; 25 | if (val) 26 | { 27 | return Visibility.Hidden; 28 | } 29 | 30 | return Visibility.Visible; 31 | } 32 | 33 | /// 34 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 35 | { 36 | return Binding.DoNothing; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/ColorToBrushConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | using System.Windows.Media; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts values to . 10 | /// 11 | public sealed class ColorToBrushConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | if (!(value is Color)) 18 | return null; 19 | 20 | var color = (Color) value; 21 | var brush = new SolidColorBrush(color); 22 | brush.Freeze(); 23 | return brush; 24 | } 25 | 26 | /// 27 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 28 | { 29 | throw new NotImplementedException(); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/Converters.xaml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Metrolib/Converters/DoubleToPercentageConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Converters 6 | { 7 | /// 8 | /// Converts a relative double value to a string in the form of X%. 9 | /// 0 yields 0% 10 | /// 1 yields 100% 11 | /// 0.5 yields 50% 12 | /// 0.55 yields 55% 13 | /// 0.555 yields 56% 14 | /// 15 | /// 16 | /// Does not display any digits after the decimal point. 17 | /// 18 | public sealed class DoubleToPercentageConverter 19 | : IValueConverter 20 | { 21 | /// 22 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 23 | { 24 | if (!(value is double)) 25 | return null; 26 | 27 | var relativeValue = (double) value; 28 | var formatted = string.Format(culture, "{0:P0}", relativeValue); 29 | return formatted; 30 | } 31 | 32 | /// 33 | object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 34 | { 35 | return Binding.DoNothing; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/DoubleToThicknessConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts a value to a . 10 | /// 11 | public sealed class DoubleToThicknessConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | if (!(value is double)) 18 | return null; 19 | 20 | var v = (double) value; 21 | return new Thickness(v, v, v, v); 22 | } 23 | 24 | /// 25 | object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 26 | { 27 | return Binding.DoNothing; 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/EmptyToHiddenConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Globalization; 4 | using System.Windows; 5 | using System.Windows.Data; 6 | 7 | namespace Metrolib.Converters 8 | { 9 | /// 10 | /// Converts any that contains at least one value 11 | /// to . If it is empty, then 12 | /// is returned. Anything else yields null. 13 | /// 14 | public sealed class EmptyToHiddenConverter 15 | : IValueConverter 16 | { 17 | /// 18 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 19 | { 20 | var actualValue = value as IEnumerable; 21 | if (actualValue == null) 22 | return null; 23 | 24 | var it = actualValue.GetEnumerator(); 25 | return it.MoveNext() 26 | ? Visibility.Visible 27 | : Visibility.Collapsed; 28 | } 29 | 30 | /// 31 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 32 | { 33 | return Binding.DoNothing; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/IncrementByOneConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Converters 6 | { 7 | /// 8 | /// Increments the given value by 1. 9 | /// 10 | public sealed class IncrementByOneConverter 11 | : IValueConverter 12 | { 13 | /// 14 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 15 | { 16 | if (!(value is int)) 17 | return null; 18 | 19 | var actualValue = (int) value; 20 | return actualValue + 1; 21 | } 22 | 23 | /// 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | return null; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/InvertBoolConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Converters 6 | { 7 | /// 8 | /// Inverts the given boolean value. 9 | /// Returns null if no boolean value was given. 10 | /// 11 | public sealed class InvertBoolConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | if (!(value is bool)) 18 | return null; 19 | 20 | return !((bool) value); 21 | } 22 | 23 | /// 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | if (!(value is bool)) 27 | return null; 28 | 29 | return !((bool) value); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/MultiplierConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Converters 6 | { 7 | /// 8 | /// Multiplies the given numeric value with the given . 9 | /// 10 | public sealed class MultiplierConverter 11 | : IValueConverter 12 | { 13 | /// 14 | /// The value used to multiply any value given to . 15 | /// 16 | public double Multiplier { get; set; } 17 | 18 | /// 19 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 20 | { 21 | if (!(value is double)) 22 | return null; 23 | 24 | var actualValue = (double) value; 25 | return actualValue*Multiplier; 26 | } 27 | 28 | /// 29 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | return Binding.DoNothing; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NonEmptyStringToVisibleConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// A value converter that converts non-empty strings to and everything 10 | /// else to . 11 | /// 12 | public sealed class NonEmptyStringToVisibleConverter 13 | : IValueConverter 14 | { 15 | /// 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | var actualValue = value as string; 19 | if (actualValue == null) 20 | return Visibility.Collapsed; 21 | 22 | return actualValue.Length > 0 23 | ? Visibility.Visible 24 | : Visibility.Collapsed; 25 | } 26 | 27 | /// 28 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 29 | { 30 | return Binding.DoNothing; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NonEmptyToHiddenConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Globalization; 4 | using System.Windows; 5 | using System.Windows.Data; 6 | 7 | namespace Metrolib.Converters 8 | { 9 | /// 10 | /// Converts any that contains at least one value 11 | /// to . If it is empty, then 12 | /// is returned. Anything else yields null. 13 | /// 14 | public sealed class NonEmptyToHiddenConverter 15 | : IValueConverter 16 | { 17 | /// 18 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 19 | { 20 | var actualValue = value as IEnumerable; 21 | if (actualValue == null) 22 | return null; 23 | 24 | var it = actualValue.GetEnumerator(); 25 | return it.MoveNext() 26 | ? Visibility.Hidden 27 | : Visibility.Visible; 28 | } 29 | 30 | /// 31 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 32 | { 33 | return Binding.DoNothing; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullImageConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Controls; 5 | using System.Windows.Data; 6 | 7 | namespace Metrolib.Converters 8 | { 9 | /// 10 | /// To be used when one plans to bind a null value to a . 11 | /// Without this converter, an error is written to the output log that null is not a valid value for the binding. 12 | /// 13 | public class NullImageConverter : IValueConverter 14 | { 15 | /// 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | if (value == null) 19 | return DependencyProperty.UnsetValue; 20 | return value; 21 | } 22 | 23 | /// 24 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 25 | { 26 | return Binding.DoNothing; 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullOrEmptyStringToVisibleConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// This converter converts an empty or null string to Visible, anything else to Collapsed. 10 | /// 11 | public class NullOrEmptyStringToVisibleConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | var enumeration = value as string; 18 | if (enumeration == null) 19 | return Visibility.Visible; 20 | 21 | return enumeration.Length == 0 22 | ? Visibility.Visible 23 | : Visibility.Collapsed; 24 | } 25 | 26 | /// 27 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 28 | { 29 | return Binding.DoNothing; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullToCollapsedConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts null to , anything else to . 10 | /// 11 | public sealed class NullToCollapsedConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | return value == null 18 | ? Visibility.Collapsed 19 | : Visibility.Visible; 20 | } 21 | 22 | /// 23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 24 | { 25 | return Binding.DoNothing; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullToFalseConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows.Data; 4 | 5 | namespace Metrolib.Converters 6 | { 7 | /// 8 | /// Converts null to false and everything else to true. 9 | /// 10 | public sealed class NullToFalseConverter 11 | : IValueConverter 12 | { 13 | #region Implementation of IValueConverter 14 | 15 | /// 16 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 17 | { 18 | if (value == null) 19 | return false; 20 | 21 | return true; 22 | } 23 | 24 | /// 25 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 26 | { 27 | throw new NotImplementedException(); 28 | } 29 | 30 | #endregion 31 | } 32 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullToHiddenConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts null to , anything else to . 10 | /// 11 | public sealed class NullToHiddenConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | return value == null 18 | ? Visibility.Hidden 19 | : Visibility.Visible; 20 | } 21 | 22 | /// 23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 24 | { 25 | return Binding.DoNothing; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/NullToVisibleConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Windows; 4 | using System.Windows.Data; 5 | 6 | namespace Metrolib.Converters 7 | { 8 | /// 9 | /// Converts null to , anything else to . 10 | /// 11 | public sealed class NullToVisibleConverter 12 | : IValueConverter 13 | { 14 | /// 15 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 16 | { 17 | return value == null 18 | ? Visibility.Visible 19 | : Visibility.Collapsed; 20 | } 21 | 22 | /// 23 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 24 | { 25 | return Binding.DoNothing; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Metrolib/Converters/Unit.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable CheckNamespace 2 | namespace Metrolib.Converters 3 | // ReSharper restore CheckNamespace 4 | { 5 | /// 6 | /// 7 | /// 8 | public enum Unit 9 | { 10 | /// 11 | /// 12 | /// 13 | Millisecond, 14 | /// 15 | /// 16 | /// 17 | Second, 18 | /// 19 | /// 20 | /// 21 | Minute, 22 | /// 23 | /// 24 | /// 25 | Hour, 26 | /// 27 | /// 28 | /// 29 | Day, 30 | /// 31 | /// 32 | /// 33 | Week, 34 | /// 35 | /// 36 | /// 37 | Month, 38 | /// 39 | /// 40 | /// 41 | Year, 42 | /// 43 | /// 44 | /// 45 | Century, 46 | /// 47 | /// 48 | /// 49 | Decade, 50 | } 51 | } -------------------------------------------------------------------------------- /src/Metrolib/Extensions/RandomExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | 4 | // ReSharper disable once CheckNamespace 5 | namespace Metrolib 6 | { 7 | /// 8 | /// Collects extension methods to the class. 9 | /// 10 | public static class RandomExtensions 11 | { 12 | /// 13 | /// Returns a random direction as a unit vector. 14 | /// 15 | /// 16 | /// 17 | public static Vector NextDirection(this Random rng) 18 | { 19 | var dir = new Vector(2*rng.NextDouble() - 1, 2*rng.NextDouble() - 1); 20 | dir.Normalize(); 21 | return dir; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Metrolib/Extensions/VectorExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib 5 | { 6 | /// 7 | /// 8 | public static class VectorExtensions 9 | { 10 | /// 11 | /// Returns a vector that is clamped to the given length. 12 | /// 13 | /// 14 | /// 15 | /// 16 | public static Vector Clamped(this Vector that, double maxLength) 17 | { 18 | double length = that.Length; 19 | double div = length/maxLength; 20 | if (div > 1) 21 | { 22 | return that/div; 23 | } 24 | return that; 25 | } 26 | 27 | /// 28 | /// Returns a normalized vector of this. 29 | /// 30 | /// 31 | /// 32 | public static Vector Normalized(this Vector that) 33 | { 34 | that.Normalize(); 35 | return that; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /src/Metrolib/Extensions/VersionExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | // ReSharper disable once CheckNamespace 4 | namespace Metrolib 5 | { 6 | /// 7 | /// Provides extension methods for the class. 8 | /// 9 | public static class VersionExtensions 10 | { 11 | /// 12 | /// Produces a humna readable string of this version. 13 | /// 14 | /// 15 | /// 16 | public static string Format(this Version version) 17 | { 18 | var value = version.ToString(3); 19 | return value; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/Metrolib/Geometry/Angle.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.Contracts; 3 | 4 | namespace Metrolib.Geometry 5 | { 6 | /// 7 | /// Helper class to help deal with angle from/to radian conversions. 8 | /// 9 | public struct Angle 10 | { 11 | /// 12 | /// Converts an angle in degrees to radians. 13 | /// 14 | /// 15 | /// 16 | [Pure] 17 | public static double ToRadians(double degrees) 18 | { 19 | return degrees/180*Math.PI; 20 | } 21 | 22 | /// 23 | /// Converts an angle in radians to degrees. 24 | /// 25 | /// 26 | /// 27 | [Pure] 28 | public static double ToDegrees(double radians) 29 | { 30 | return radians/Math.PI*180; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/Metrolib/ListSliceDebugView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Linq; 4 | 5 | namespace Metrolib 6 | { 7 | /// 8 | /// 9 | /// 10 | /// 11 | public sealed class ListSliceDebugView 12 | { 13 | private readonly ListSlice _slice; 14 | 15 | public ListSliceDebugView(ListSlice slice) 16 | { 17 | if (slice == null) 18 | throw new ArgumentNullException(nameof(slice)); 19 | 20 | _slice = slice; 21 | } 22 | 23 | [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] 24 | public T[] Items => _slice.ToArray(); 25 | } 26 | } -------------------------------------------------------------------------------- /src/Metrolib/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Netstat/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | //In order to begin building localizable applications, set 4 | //CultureYouAreCodingWith in your .csproj file 5 | //inside a . For example, if you are using US english 6 | //in your source files, set the to en-US. Then uncomment 7 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 8 | //the line below to match the UICulture setting in the project file. 9 | 10 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 11 | 12 | 13 | [assembly: ThemeInfo( 14 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 15 | //(used if a resource is not found in the page, 16 | // or application resource dictionaries) 17 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 18 | //(used if a resource is not found in the page, 19 | // app, or any theme specific resource dictionaries) 20 | )] 21 | -------------------------------------------------------------------------------- /src/Netstat/BusinessLogic/INetstatListener.cs: -------------------------------------------------------------------------------- 1 | namespace Netstat.BusinessLogic 2 | { 3 | public interface INetstatListener 4 | { 5 | void OnChanged(TcpConnectionDescriptor descriptor); 6 | } 7 | } -------------------------------------------------------------------------------- /src/Netstat/BusinessLogic/ProcessDescriptor.cs: -------------------------------------------------------------------------------- 1 | namespace Netstat.BusinessLogic 2 | { 3 | public sealed class ProcessDescriptor 4 | { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /src/Netstat/BusinessLogic/TcpConnectionEqualityComparer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Netstat.BusinessLogic 4 | { 5 | /// 6 | /// Compares two tcp descriptors for equality based on their local / foreign endpoints. 7 | /// 8 | public sealed class TcpConnectionEqualityComparer 9 | : IEqualityComparer 10 | { 11 | public bool Equals(TcpConnectionDescriptor x, TcpConnectionDescriptor y) 12 | { 13 | return Equals(x.ForeignEndPoint, y.ForeignEndPoint) && 14 | Equals(x.LocalEndPoint, y.LocalEndPoint); 15 | } 16 | 17 | public int GetHashCode(TcpConnectionDescriptor value) 18 | { 19 | unchecked 20 | { 21 | int hashCode = (value.ForeignEndPoint != null ? value.ForeignEndPoint.GetHashCode() : 0); 22 | hashCode = (hashCode*397) ^ (value.LocalEndPoint != null ? value.LocalEndPoint.GetHashCode() : 0); 23 | return hashCode; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/Netstat/EndPointViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | using Metrolib; 4 | 5 | namespace Netstat 6 | { 7 | public sealed class EndPointViewModel 8 | : INode 9 | { 10 | private readonly EndPoint _endPoint; 11 | 12 | public EndPointViewModel(EndPoint endPoint) 13 | { 14 | if (endPoint == null) 15 | throw new ArgumentNullException("endPoint"); 16 | 17 | _endPoint = endPoint; 18 | } 19 | 20 | public override string ToString() 21 | { 22 | return _endPoint.ToString(); 23 | } 24 | 25 | public string Name 26 | { 27 | get { return ToString(); } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/Netstat/LocalComputerViewModel.cs: -------------------------------------------------------------------------------- 1 | using Metrolib; 2 | 3 | namespace Netstat 4 | { 5 | public class LocalComputerViewModel : INode 6 | { 7 | public override string ToString() 8 | { 9 | return "Local"; 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /src/Netstat/TcpConnectionViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Net.NetworkInformation; 2 | using Metrolib; 3 | 4 | namespace Netstat 5 | { 6 | public sealed class TcpConnectionViewModel 7 | : IEdge 8 | { 9 | private readonly EndPointViewModel _localEndPoint; 10 | private readonly EndPointViewModel _foreignEndPoint; 11 | private readonly TcpState _state; 12 | 13 | public TcpConnectionViewModel(EndPointViewModel localEndPoint, EndPointViewModel foreign, TcpState state) 14 | { 15 | _localEndPoint = localEndPoint; 16 | _foreignEndPoint = foreign; 17 | _state = state; 18 | } 19 | 20 | public override string ToString() 21 | { 22 | return string.Format("{0} {1} {2}", _localEndPoint, _foreignEndPoint, _state); 23 | } 24 | 25 | public EdgeDirection Direction 26 | { 27 | get { return EdgeDirection.Node1ToNode2; } 28 | } 29 | 30 | public INode Node1 31 | { 32 | get { return _localEndPoint; } 33 | } 34 | 35 | public INode Node2 36 | { 37 | get { return _foreignEndPoint; } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /src/TwitterLiveStream/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/TwitterLiveStream/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace TwitterLiveStream 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/TwitterLiveStream/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | //In order to begin building localizable applications, set 4 | //CultureYouAreCodingWith in your .csproj file 5 | //inside a . For example, if you are using US english 6 | //in your source files, set the to en-US. Then uncomment 7 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 8 | //the line below to match the UICulture setting in the project file. 9 | 10 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 11 | 12 | 13 | [assembly: ThemeInfo( 14 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 15 | //(used if a resource is not found in the page, 16 | // or application resource dictionaries) 17 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 18 | //(used if a resource is not found in the page, 19 | // app, or any theme specific resource dictionaries) 20 | )] 21 | -------------------------------------------------------------------------------- /src/TwitterLiveStream/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/TwitterLiveStream/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace TwitterLiveStream 2 | { 3 | public partial class MainWindow 4 | { 5 | public MainWindow() 6 | { 7 | InitializeComponent(); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/TwitterLiveStream/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | --------------------------------------------------------------------------------