private async void ItemMinimizeButton_Click(object sender, RoutedEventArgs e) { Button SenderButton = sender as Button; Grid SenderGrid = SenderButton.Parent as Grid; ItemDesign SenderDesign = SenderGrid.Parent as ItemDesign; StackPanel SenderPanel = SenderDesign.Parent as StackPanel; if (SenderDesign.Height != 34) { SenderButton.Content = "^"; for (int i = 190; i >= 34; i -= 10) { SenderDesign.Height = i; SetWindowHeight(SenderPanel); await Task.Delay(1); } SenderDesign.Height = 34; } else { SenderButton.Content = "V"; for (int i = 34; i < 190; i += 10) { SenderDesign.Height = i; SetWindowHeight(SenderPanel); await Task.Delay(1); } SenderDesign.Height = 190; } SetWindowHeight(SenderPanel); }
void SetWindowHeight(StackPanel SenderStack) { ScrollViewer SenderScrollViewer = SenderStack.Parent as ScrollViewer; double AddHeight = 300; for (int i = 0; i < SenderStack.Children.Count; i++) { ItemDesign SenderDesign = SenderStack.Children[i] as ItemDesign; AddHeight += SenderDesign.Height; } if (AddHeight > 1000) { SenderWindow.Clip = new RectangleGeometry { Rect = new Rect(0, 0, SenderWindow.Clip.Bounds.Width, 1000) }; SenderScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; } else { SenderWindow.Clip = new RectangleGeometry { Rect = new Rect(0, 0, SenderWindow.Clip.Bounds.Width, AddHeight) }; SenderScrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; } }
private async void ItemRemoveButton_Click(object sender, RoutedEventArgs e) { WarningPopup inputDialog = new WarningPopup(SenderWindow, "Are you sure you want to remove this item?", "Warning"); SenderWindow.MainGrid.Children.Add(inputDialog); while (true) { if (inputDialog.SelectionMade) { if (inputDialog.YesBool) { Button SenderButton = sender as Button; Grid SenderGrid = SenderButton.Parent as Grid; ItemDesign SenderDesign = SenderGrid.Parent as ItemDesign; StackPanel SenderPanel = SenderDesign.Parent as StackPanel; SenderPanel.Children.Remove(SenderDesign); SetWindowHeight(SenderPanel); SenderWindow.MainGrid.Children.Remove(inputDialog); break; } else { if (!inputDialog.YesBool) { SenderWindow.MainGrid.Children.Remove(inputDialog); break; } } } await Task.Delay(100); } }
public static void SaveSettings(List <GI.GraphColunm> GraphData, MainWindow SenderWindow, int DataCacheSize, int CurrentModeIndex, int CurrentThemeIndex) { try { FI SaveConfigs = new FI(); SaveConfigs.ItemStack.Add( new FI.ValueCategory("MainWindow Data", new List <FI.FIItems>() { new FI.IntValue("Location X", (int)Application.Current.MainWindow.Left), new FI.IntValue("Location Y", (int)Application.Current.MainWindow.Top), new FI.IntValue("TimeFrame Index", SenderWindow.TimeFrameCombobox.SelectedIndex), new FI.IntValue("Time Elements Index", SenderWindow.TimeElementsCombobox.SelectedIndex), new FI.IntValue("Current Mode", CurrentModeIndex), new FI.IntValue("Theme Index", CurrentThemeIndex) })); for (int i = 0; i < SenderWindow.ItemStack.Children.Count; i++) { ItemDesign SenderDesign = SenderWindow.ItemStack.Children[i] as ItemDesign; SaveConfigs.ItemStack.Add( new FI.ValueCategory("Item", new List <FI.FIItems>() { new FI.StringValue("Name", SenderDesign.ItemNameTextBox.Text), new FI.StringValue("URL", SenderDesign.ItemURLTextBox.Text), new FI.StringValue("XPath", SenderDesign.ItemXPathTextBox.Text), new FI.BrushValue("BorderColor", (SolidColorBrush)SenderDesign.ItemBorderColorButton.Background), new FI.BrushValue("FillColor", (SolidColorBrush)SenderDesign.ItemFillColorButton.Background) })); } for (int i = 0; i < DataCacheSize; i++) { FI.ValueCategory MomentCat = new FI.ValueCategory("HistoricData", new List <FI.FIItems>()); MomentCat.ValueStack.Add(new FI.DateTimeValue("Timestamp", GraphData[i].TimeTable)); for (int j = 0; j < GraphData[i].GraphElements.Count; j++) { MomentCat.ValueStack.Add(new FI.ListValue("", "")); MomentCat.ValueStack.Add(new FI.StringValue("Name", GraphData[i].GraphElements[j].Name)); MomentCat.ValueStack.Add(new FI.IntValue("Value1", (int)GraphData[i].GraphElements[j].Value[0])); MomentCat.ValueStack.Add(new FI.IntValue("Value2", (int)GraphData[i].GraphElements[j].Value[1])); MomentCat.ValueStack.Add(new FI.BrushValue("BorderColor", GraphData[i].GraphElements[j].BorderColor)); MomentCat.ValueStack.Add(new FI.BrushValue("FillColor", GraphData[i].GraphElements[j].FillColor)); MomentCat.ValueStack.Add(new FI.EndListValue("", "")); } SaveConfigs.ItemStack.Add(MomentCat); } SaveConfigs.SaveToFile("cfg.txt"); } catch { MessageBox.Show("Could not save cfg!"); } }
private void ItemMoveUpButton_Click(object sender, RoutedEventArgs e) { Button SenderButton = sender as Button; Grid SenderGrid = SenderButton.Parent as Grid; ItemDesign SenderDesign = SenderGrid.Parent as ItemDesign; if (SenderWindow.ItemStack.Children.IndexOf(SenderDesign) >= 1) { int Index = SenderWindow.ItemStack.Children.IndexOf(SenderDesign) - 1; SenderWindow.ItemStack.Children.Remove(SenderDesign); SenderWindow.ItemStack.Children.Insert(Index, SenderDesign); SetWindowHeight(SenderWindow.ItemStack); } }
void UpdateItemsStatisticalData(List <GI.GraphColunm> GraphData, double TotalValue) { if (GraphData.Count > 0) { for (int i = 0; i < ItemStack.Children.Count; i++) { try { ItemDesign SenderDesign = ItemStack.Children[i] as ItemDesign; SenderDesign.UpdateStatisticals(GraphData, TotalValue, GMCValues.Statistical_UseIndexIs, GMCValues.IsPieChartEnabled, (int)TimeElementsCombobox.SelectedValue); } catch { } } } }
public static void MakeNewItemPanel(MainWindow SenderWindow, string _Name, string _URL, string _XPath, SolidColorBrush _BorderColor, SolidColorBrush _FillColor, bool _Minimized) { ItemDesign NewDesign = new ItemDesign(SenderWindow); if (_Minimized) { NewDesign.Height = 34; if (SenderWindow.Clip.Bounds.Height + 34 < 1000) { SenderWindow.Clip = new RectangleGeometry { Rect = new Rect(0, 0, SenderWindow.Clip.Bounds.Width, SenderWindow.Clip.Bounds.Height + 34) } } ; } else { NewDesign.Height = 190; if (SenderWindow.Clip.Bounds.Height + 184 < 1000) { SenderWindow.Clip = new RectangleGeometry { Rect = new Rect(0, 0, SenderWindow.Clip.Bounds.Width, SenderWindow.Clip.Bounds.Height + 184) } } ; } NewDesign.ItemNameTextBox.Text = _Name; NewDesign.ItemURLTextBox.Text = _URL; NewDesign.ItemXPathTextBox.Text = _XPath; NewDesign.ItemBorderColorButton.Background = _BorderColor; NewDesign.ItemFillColorButton.Background = _FillColor; if (_Minimized) { NewDesign.ItemMinimizeButton.Content = "^"; } else { NewDesign.ItemMinimizeButton.Content = "V"; } SenderWindow.ItemStack.Children.Add(NewDesign); } } }
private async void MinimizeItemStackButton_Click(object sender, RoutedEventArgs e) { if (ItemStack.Children.Count > 0) { if (this.Clip.Bounds.Height == 295) { double TargetHeight = 0; for (int i = 0; i < ItemStack.Children.Count; i++) { ItemDesign SenderDesign = ItemStack.Children[i] as ItemDesign; TargetHeight += SenderDesign.Height; } if (TargetHeight > 1000) { TargetHeight = 1000; } for (int i = (int)this.Clip.Bounds.Height; i < 295 + TargetHeight; i += 10) { this.Clip = new RectangleGeometry { Rect = new Rect(0, 0, this.Clip.Bounds.Width, i) }; await Task.Delay(1); } this.Clip = new RectangleGeometry { Rect = new Rect(0, 0, this.Clip.Bounds.Width, 295 + TargetHeight) }; } else { for (int i = (int)this.Clip.Bounds.Height; i > 295; i -= 10) { this.Clip = new RectangleGeometry { Rect = new Rect(0, 0, this.Clip.Bounds.Width, i) }; await Task.Delay(1); } this.Clip = new RectangleGeometry { Rect = new Rect(0, 0, this.Clip.Bounds.Width, 295) }; } } }
async Task RunMainLoop(List <GI.GraphColunm> GraphData) { while (true) { if (ExitSave) { if (!SaveComplete) { SaveAndLoadClass.SaveSettings(GraphData, this, DataCacheSize, CurrentGraphMode, CurrentThemeIndex); } SaveComplete = true; while (true) { await Task.Delay(100); } } if (ClearGraphData) { GraphData.Clear(); ClearGraphData = false; for (int i = 0; i < DataCacheSize; i++) { GraphData.Add(new GI.GraphColunm(DateTime.Now, new List <GI.GraphElement>())); } } if (FlatlineGraphData) { FlatlineGraphData = false; for (int i = 1; i < DataCacheSize; i++) { GraphData[i] = new GI.GraphColunm(GraphData[0].TimeTable, GraphData[0].GraphElements); } } GraphLoadingControl NewLoading = new GraphLoadingControl(GraphCanvas, GraphCanvas.ActualWidth, GraphCanvas.ActualHeight); GraphCanvas.Children.Add(NewLoading); GraphLoadingControl NewLoading2 = null; if (GMCValues.IsPieChartEnabled) { NewLoading2 = new GraphLoadingControl(PieGraphCanvas, PieGraphCanvas.ActualWidth, PieGraphCanvas.ActualHeight); PieGraphCanvas.Children.Add(NewLoading2); } if (ItemStack.Children.Count > 0) { for (int i = 0; i < ItemStack.Children.Count; i++) { ItemDesign SenderDesign = ItemStack.Children[i] as ItemDesign; SenderDesign.ResetWarningLabels(); } GI.GraphColunm NewDataSet = new GI.GraphColunm(DateTime.Now, new List <GI.GraphElement>()); try { if (IsTimeOver(DateTime.Now, GraphData[0].TimeTable, TimeFrameCombobox.SelectedIndex) || ManualRefresh) { for (int i = 0; i < ItemStack.Children.Count; i++) { if (ExitSave) { break; } ItemDesign SenderDesign = ItemStack.Children[i] as ItemDesign; SenderDesign.URLErrorLabel.Foreground = (Brush)Application.Current.FindResource("StandartItemDesignBadColor"); SenderDesign.XPathErrorLabel.Foreground = (Brush)Application.Current.FindResource("StandartItemDesignBadColor"); if (SenderDesign.ItemURLTextBox.Text != "" && SenderDesign.ItemXPathTextBox.Text != "") { HtmlWeb web = new HtmlWeb(); HtmlDocument doc = await web.LoadFromWebAsync(SenderDesign.ItemURLTextBox.Text); SenderDesign.URLErrorLabel.Visibility = Visibility.Hidden; HtmlNode node = doc.DocumentNode.SelectSingleNode(SenderDesign.ItemXPathTextBox.Text.Replace("/tbody", "")); if (node == null) { break; } SenderDesign.XPathErrorLabel.Visibility = Visibility.Hidden; double[] NewData = new double[GraphModes.Count]; for (int j = 0; j < GraphModes.Count; j++) { NewData[j] = RunCommandList(j, GraphModes[j].ValueProcessingList, node, GraphData, i); } NewDataSet.GraphElements.Add(new GI.GraphElement(NewData, SenderDesign.ItemNameTextBox.Text, (SolidColorBrush)SenderDesign.ItemFillColorButton.Background, (SolidColorBrush)SenderDesign.ItemBorderColorButton.Background)); doc = null; GC.Collect(); } } } if (!ExitSave) { if (IsTimeOver(DateTime.Now, GraphData[0].TimeTable, TimeFrameCombobox.SelectedIndex) || ManualRefresh) { for (int i = GraphData.Count - 1; i > 0; i--) { GraphData[i] = GraphData[i - 1]; } GraphData[0] = NewDataSet; } if (EqualizeColorsData) { EqualizeColorsData = false; for (int i = 1; i < DataCacheSize; i++) { for (int j = 0; j < ItemStack.Children.Count; j++) { int TargetJ = j; while (GraphData[i].GraphElements[TargetJ].Name != GraphData[0].GraphElements[j].Name) { TargetJ++; if (TargetJ > ItemStack.Children.Count - 1) { TargetJ = 0; } if (TargetJ == j) { break; } } GraphData[i].GraphElements[TargetJ] = new GI.GraphElement(GraphData[i].GraphElements[TargetJ].Value, GraphData[i].GraphElements[TargetJ].Name, GraphData[0].GraphElements[j].FillColor, GraphData[0].GraphElements[j].BorderColor); } } } UpdateVisualData(GraphData); } SaveAndLoadClass.SaveSettings(GraphData, this, DataCacheSize, CurrentGraphMode, CurrentThemeIndex); SettingsSavedLabel.Visibility = Visibility.Visible; await GI.FadeIn(SettingsSavedLabel); await Task.Delay(1000); await GI.FadeOut(SettingsSavedLabel); SettingsSavedLabel.Visibility = Visibility.Hidden; } catch { ErrorInLoading = true; } } NewLoading.DoRemove(); if (GMCValues.IsPieChartEnabled) { NewLoading2.DoRemove(); } ManualRefresh = false; if (ErrorInLoading) { await Task.Delay(10000); ErrorInLoading = false; } else { await WaitUntil(TimeFrameCombobox.SelectedIndex, GraphData); } } }