Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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!");
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
 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 { }
         }
     }
 }
Пример #7
0
        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);
        }
    }
}
Пример #8
0
 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)
             };
         }
     }
 }
Пример #9
0
        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);
                }
            }
        }