コード例 #1
0
ファイル: MainWindowControl.cs プロジェクト: LongQin/DAMS
 public MainWindowControl(MonitorWindow win)
 {
     this.win = win;
     this.win.InitializeComponent();
     init = new Init();
     load();
 }
コード例 #2
0
ファイル: WrapPanelControl.cs プロジェクト: LongQin/DAMS
 //构造函数
 public WrapPanelControl(MonitorWindow win, Dictionary<string, UsbInfo> dic, double width, double height)
 {
     this.win = win;
     this.dic = dic;
     this.width = width;
     this.height = height;
     control = new ControlFactory(win);
 }
コード例 #3
0
        public ApplicationActions(IMonitor monitor, MonitorWindow monitorWindow, IMonitorViewModelFactory monitorViewModelFactory, SettingsWindow settingsWindow, SettingsViewModel settingsViewModel)
        {
            _monitor                    = monitor;
            _monitorWindow              = monitorWindow;
            _monitorWindow.Deactivated += MonitorWindowOnDeactivated;
            _monitorViewModelFactory    = monitorViewModelFactory;
            _settingsWindow             = settingsWindow;
            _settingsViewModel          = settingsViewModel;
            _settingsWindow.DataContext = _settingsViewModel;

            _monitorViewModel = new Lazy <MonitorWindowViewModel>(InitializeMonitorViewModel);
        }
コード例 #4
0
        public void ShowWindow()
        {
            MonitorWindow window;

            var t = new Thread(() =>
            {
                var gitPullRequests = new ConcurrentDictionary <int, IPullRequest>();
                for (int i = 0; i < 5; i++)
                {
                    var pullRequest = Substitute.For <IPullRequest>();
                    pullRequest.Id.Returns(i);
                    pullRequest.Title.Returns("Test pull request");
                    pullRequest.AuthorDisplayName.Returns("Alan Develo");
                    var repo = Substitute.For <ITfGitRepository>();
                    repo.Name.Returns("test-repo.git");
                    pullRequest.Repository.Returns(repo);
                    gitPullRequests.AddOrUpdate(i, pullRequest, (j, request) => request);
                }

                var project = Substitute.For <ITfProject>();
                project.Unapproved.Returns(gitPullRequests);
                project.Approved.Returns(gitPullRequests);

                var singleProjectViewModel = new SingleProjectViewModel(new PullRequestListViewModel(), new PullRequestListViewModel());

                var monitor = Substitute.For <IMonitor>();
                monitor.Projects.Returns(new[] { project });
                monitor.Status.Returns(MonitorStatus.UpdateSuccessful);

                var monitorViewModel = new MonitorWindowViewModel(monitor,
                                                                  Substitute.For <INoProjectsViewModel>(), singleProjectViewModel,
                                                                  new FirstUpdateViewModel(), new CouldNotReachServerViewModel(
                                                                      Substitute.For <IApplicationActions>(), Substitute.For <IAppSettings>()),
                                                                  new UnrecognisedErrorViewModel());
                monitorViewModel.Update();
                window = new MonitorWindow
                {
                    WindowStyle = WindowStyle.SingleBorderWindow,
                    DataContext = monitorViewModel
                };

                window.Closed += (sender, args) => System.Windows.Threading.Dispatcher.ExitAllFrames();

                window.Show();

                System.Windows.Threading.Dispatcher.Run();
            });

            t.SetApartmentState(ApartmentState.STA);
            t.Start();
            t.Join();
        }
コード例 #5
0
        public MainWindow()
        {
            InitializeComponent();
            SetupLogging();
            UpdateAppStates(AppState.APP_STATE_UNINITIALIZED);
            UpdateStatus();
            SetTitle();
            UpdateProfiling();
            SetLoggingLevel(Settings.Level);

            profilerWindow = new ProfilerWindow();
            profilerWindow.OnProfilerClosed += ProfilerWindow_OnClosed;
            monitorWindow = new MonitorWindow();
            monitorWindow.OnMonitorClosed += PortMonitorWindow_OnClosed;
            PortMonitor.SetMonitor(monitorWindow);

            commTester = new CommTester();
        }
コード例 #6
0
        /// <summary>
        /// Open Monitor window.
        /// </summary>
        private void OpenExecuted(object target, ExecutedRoutedEventArgs e)
        {
            try
            {
                var monitorWindow = this.OwnedWindows.OfType <MonitorWindow>().FirstOrDefault();
                if (monitorWindow != null)
                {
                    // Activate Monitor window.
                    WindowSupplement.ActivateWindow(monitorWindow);
                    return;
                }

                // Open Monitor Window.
                monitorWindow = new MonitorWindow {
                    Owner = this
                };
                monitorWindow.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,
                                ProductInfo.Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
コード例 #7
0
ファイル: ButtonControl.cs プロジェクト: LongQin/DAMS
 public ButtonControl(MonitorWindow win)
 {
     this.win = win;
     //colorNoFocus = (Color)ColorConverter.ConvertFromString("#C2C2C2");
 }
コード例 #8
0
ファイル: ControlFactory.cs プロジェクト: LongQin/DAMS
 public ControlFactory(MonitorWindow win)
 {
     this.win = win;
 }
コード例 #9
0
        public static void StartSession(IReadOnlyList <SessionConfig.Experiment> experimentParts, IDictionary <string, DeviceParams> devicePart, bool monitor = false,
                                        ISessionListener sessionListener = null)
        {
            /* Constructs experiment instances. */
            var experiments = new IExperiment[experimentParts.Count];
            var formattedSessionDescriptors = new string[experimentParts.Count];

            for (var i = 0; i < experimentParts.Count; i++)
            {
                var expConf = experimentParts[i];
                if (!App.Instance.Registries.Registry <PluginExperiment>().LookUp(expConf.Params.Id, out var pluginExperiment))
                {
                    throw new ArgumentException($"Cannot find specific experiment by id: {expConf.Params.Id}");
                }
                if (!TryInitiateExperiment(pluginExperiment, pluginExperiment.DeserializeParams(expConf.Params.Params), out var experiment))
                {
                    return;
                }
                experiments[i] = experiment;
                formattedSessionDescriptors[i] = expConf.GetFormattedSessionDescriptor();
            }

            /* Parse consumer configurations. */
            var deviceConsumerLists = new Dictionary <DeviceType, IList <Tuple <PluginStreamConsumer, IReadonlyContext> > >();

            foreach (var deviceType in App.Instance.Registries.Registry <PluginDeviceType>().Registered)
            {
                if (!devicePart.TryGetValue(deviceType.DeviceType.Name, out var deviceParams) || deviceParams.Device.Id == null)
                {
                    continue;
                }
                var list = new List <Tuple <PluginStreamConsumer, IReadonlyContext> >();
                deviceConsumerLists[deviceType.DeviceType] = list;
                foreach (var consumerConf in deviceParams.Consumers)
                {
                    if (!App.Instance.Registries.Registry <PluginStreamConsumer>().LookUp(consumerConf.Id, out var pluginStreamConsumer))
                    {
                        throw new ArgumentException($"Cannot find specific consumer by id: {consumerConf.Params}");
                    }
                    list.Add(new Tuple <PluginStreamConsumer, IReadonlyContext>(pluginStreamConsumer, pluginStreamConsumer.DeserializeParams(consumerConf.Params)));
                }
            }

            /* IMPORTANT: ALL EXPERIMENT RELATED CONFIG SHOULD BE CHECKED BEFORE STEAMERS WERE INITIALIZED */

            var monitorWindow = monitor ? MonitorWindow.Show() : null;

            var sessions  = new Session[experimentParts.Count];
            var baseClock = Clock.SystemMillisClock;
            var streamers = CreateStreamerCollection(devicePart, baseClock, out var deviceStreamers);

            using (var disposablePool = new DisposablePool())
            {
                try
                {
                    streamers.Start();
                    monitorWindow?.Bind(streamers);

                    for (var i = 0; i < experimentParts.Count; i++)
                    {
                        var experimentPart = experimentParts[i];
                        var experiment     = experiments[i];
                        var sessionName    = formattedSessionDescriptors[i];
                        var session        = sessions[i] = new Session(App.Instance.Dispatcher, experimentPart.Subject, sessionName, baseClock, experiment, streamers, App.DataDir);

                        new SessionConfig {
                            ExperimentPart = experimentPart, DevicePart = devicePart
                        }
                        .JsonSerializeToFile(session.GetDataFileName(SessionConfig.FileSuffix), JsonUtils.PrettyFormat, Encoding.UTF8);

                        var writerBaseTime = session.CreateTimestamp;

                        if (ExperimentProperties.RecordMarkers.Get(experiment.Metadata) && streamers.TryFindFirst <MarkerStreamer>(out var markerStreamer))
                        {
                            var markerFileWriter = new MarkerFileWriter(session.GetDataFileName(MarkerFileWriter.FileSuffix), writerBaseTime);
                            disposablePool.Add(markerFileWriter);
                            markerStreamer.Attach(markerFileWriter);
                            disposablePool.Add(new DelegatedDisposable(() => markerStreamer.Detach(markerFileWriter)));
                        }

                        foreach (var entry in deviceConsumerLists)
                        {
                            if (deviceStreamers.TryGetValue(entry.Key, out var deviceStreamer))
                            {
                                var  deviceConsumerList = entry.Value;
                                var  indexed            = deviceConsumerList.Count > 1;
                                byte num = 1;

                                foreach (var tuple in deviceConsumerList)
                                {
                                    var consumer = tuple.Item1.NewInstance(session, tuple.Item2, indexed ? num++ : (byte?)null);
                                    if (consumer is IDisposable disposable)
                                    {
                                        disposablePool.Add(disposable);
                                    }
                                    deviceStreamer.Attach(consumer);
                                    disposablePool.Add(new DelegatedDisposable(() => deviceStreamer.Detach(consumer)));
                                }
                            }
                        }

                        sessionListener?.BeforeStart(i, session);
                        var result = session.Run();
                        sessionListener?.AfterCompleted(i, session);

                        disposablePool.DisposeAll(); // Release resources.

                        new SessionInfo(session).JsonSerializeToFile(session.GetDataFileName(SessionInfo.FileSuffix), JsonUtils.PrettyFormat, Encoding.UTF8);
                        result?.Save(session);

                        if (session.UserInterrupted && i < experimentParts.Count - 1 &&
                            MessageBox.Show("Continue following sessions?", "User Exit", MessageBoxButton.YesNo,
                                            MessageBoxImage.Question, MessageBoxResult.No, MessageBoxOptions.None) == MessageBoxResult.No)
                        {
                            break;
                        }
                    }
                }
                finally
                {
                    streamers.Stop();
                    monitorWindow?.Release(); // Detach session from monitor.
                }
            }
            sessionListener?.AfterAllCompleted(sessions);
        }
 private void Btn_Click(object sender, EventArgs e)
 {
     currentMonitor = new MonitorWindow();
     currentMonitor.Show();
 }
コード例 #11
0
ファイル: Activity.cs プロジェクト: LongQin/DAMS
 public Activity(MonitorWindow win)
 {
     this.win = win;
     colorOnFocus = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#FF00CCFF");
 }
コード例 #12
0
ファイル: WrapPanelControl.cs プロジェクト: LongQin/DAMS
 //构造函数
 public WrapPanelControl(MonitorWindow win, Dictionary<string, UsbInfo> dic)
 {
     this.win = win;
     this.dic = dic;
     control = new ControlFactory(win);
 }