コード例 #1
0
        public void AddTool2(TabModel item, Dock targetDock, GridLength defaultSize)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (item.Usage == TabItemType.Document)
            {
                throw new InvalidOperationException();
            }

            var well = AllTabs.Where(t => (t.Parent as ToolWellModel)?.Dock == targetDock)
                       .Select(t => t.Parent as ToolWellModel)
                       .FirstOrDefault();

            if (well == null)
            {
                well = new ToolWellModel {
                    Dock = targetDock
                };
                var branch = new SplitPanelModel(targetDock, well);
                well.PanelSize = defaultSize;

                var temp = content;
                Content = branch;
                branch.Add(temp);
            }

            well.Children.Add(item);
            well.SelectedItem = item;
            well.IsActive     = true;
        }
コード例 #2
0
        public MainWindowViewModel()
        {
            hotkeyUtil = new HotkeyUtil(App.Current.MainWindow); //MainWindow should be MainWindow.xaml, per ms documentation
            OnAnonymizePlayersChanged += MainWindowViewModel_OnAnonymizePlayersChanged;
            App.Current.Exit          += Current_Exit;
            SettingsVM = new SettingsViewModel();
            SettingsVM.OnAutoEndSessionChanged += SettingsVM_OnAutoEndSessionChanged;
            OpacityVM      = new WindowOpacityVM(SettingsVM);
            RequestInputVM = new RequestUserInputViewModel("Seconds before session auto-ends");
            RequestInputVM.UserInputAccepted += RequestInputVM_UserInputAccepted;
            RequestInputVM.ValidateUserInput += RequestInputVM_ValidateUserInput;
            RequestInputVM.OnCancelled       += RequestInputVM_OnCancelled;

            UpdateDamageLogsCommand   = new RelayCommand <object>((_) => selectDamageLogsPath(true));
            ResetTrackerCommand       = new RelayCommand <object>((_) => resetParser());
            SaveSessionCommand        = new RelayCommand <object>((_) => saveSession());
            ReselectDamageLogsCommand = new RelayCommand <object>((_) => reselectDamageLogs());
            SetAccentColorCommand     = new RelayCommand <object>((_) => setAccentColor());
            SetBackgroundImageCommand = new RelayCommand <object>((_) => setBackgroundImage());
            OpenSessionLogsCommand    = new RelayCommand <object>((_) => openSessionLogsFolder());
            ExitCommand = new RelayCommand <object>((_) => App.Current.Shutdown());
            ChangeAutoEndTimeoutCommand = new RelayCommand <object>((_) => changeAutoEndTimeout());

            if (string.IsNullOrWhiteSpace(Settings.Default.DamageLogsPath))
            {
                selectDamageLogsPath(false);
            }
            loadSettings();

            if (CurrentDamageParser == null)
            {
                initializeDamageParser(Settings.Default.DamageLogsPath);
            }
            try
            {
                CurrentDamageParser.Start(TimeSpan.FromSeconds(Settings.Default.ParserTickRate));
            }
            catch (Exception)
            {
                MessageBox.Show("Error starting parser! Ensure the damagelogs folder is correctly set.");
                Settings.Default.DamageLogsPath = "";
                Settings.Default.Save();
            }

            allPlayersTab = new AllPlayersTabViewModel(this);
            allPlayersTab.UserDoubleClickedEvent += AllPlayersTab_UserDoubleClickedEvent;
            AllTabs.Add(allPlayersTab);
            SelectedTab = allPlayersTab;

            initializeHotkeys();
            StatusBarText = $"Welcome to ApexParse v{App.VersionString}";

            ClockFormat = new ClockFormatViewModel();
            UpdateClockTask();
        }
コード例 #3
0
ファイル: MainWindowViewModel.cs プロジェクト: wssh/ApexParse
 private void resetAllTabs()
 {
     lock (tabManipulationLock)
     {
         AllTabs.Clear();
         allPlayersTab.ClearPlayers();
         playerTabDict.Clear();
         AllTabs.Add(allPlayersTab);
         selfPlayerTab = null;
     }
     SelectedTab = allPlayersTab;
 }
コード例 #4
0
        private void RemoveTabFromList(int id)
        {
            var tabToRemove = AllTabs.Tabs.Single(tab => tab.Id == id);

            AllTabs.RemoveTab(tabToRemove);
            Groups.DecreaseTabCount(tabToRemove.Group);
            var tabToDelete = TabsHistory.Tabs.Where(tab => tab.Id == id).FirstOrDefault();

            if (tabToDelete != null)
            {
                TabsHistory.Tabs.Remove(tabToDelete);
            }
            RaisePropertyChanged("TabsHistory");
            RaisePropertyChanged("AllTabs");
        }
コード例 #5
0
ファイル: MainWindowViewModel.cs プロジェクト: wssh/ApexParse
        private void synchronizeTabState()
        {
            lock (tabManipulationLock)
            {
                if (selfPlayerTab == null && CurrentDamageParser.SelfPlayer != null)
                {
                    selfPlayerTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, CurrentDamageParser.SelfPlayer);
                    AllTabs.Insert(1, selfPlayerTab);
                    playerTabDict.Add(CurrentDamageParser.SelfPlayer, selfPlayerTab);
                    selfPlayerTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue());

                    if (OpenGraphForSelfAutomatically)
                    {
                        SelectedTab = selfPlayerTab;
                    }
                }

                foreach (var player in CurrentDamageParser.Players) //add
                {
                    if (DamageParser.IsBlacklistedUsername(player.Name))
                    {
                        continue;                                                  //skip blacklisted
                    }
                    if (!playerTabDict.ContainsKey(player))
                    {
                        var newTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, player);
                        AllTabs.Add(newTab);
                        playerTabDict.Add(player, newTab);
                        newTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue());
                    }
                }

                List <GraphPlayerTabVM> toRemove = new List <GraphPlayerTabVM>(); //remove
                foreach (var tab in AllTabs.Where(t => t is GraphPlayerTabVM).Cast <GraphPlayerTabVM>())
                {
                    if (!CurrentDamageParser.DoesPlayerIdExist(tab.Player.ID))
                    {
                        toRemove.Add(tab);
                    }
                }
                foreach (var rem in toRemove)
                {
                    AllTabs.Remove(rem);
                    playerTabDict.Remove(rem.Player);
                }
            }
        }