示例#1
0
        private void OnPreviewClick(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2)
            {
                e.Handled = true;

                if (SettingsHolder.CustomShowroom.CustomShowroomInstead)
                {
                    CustomShowroomWrapper.StartAsync(_model.SelectedObject, _model.SelectedObject.SelectedSkin);
                }
                else
                {
                    CarOpenInShowroomDialog.Run(_model.SelectedObject, _model.SelectedObject.SelectedSkin?.Id);
                }
            }
            else if (e.ClickCount == 1 && ReferenceEquals(sender, SelectedSkinPreviewImage) && !Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
            {
                e.Handled = true;

                var skins = _model.SelectedObject.EnabledOnlySkins.ToList();
                new ImageViewer(
                    from skin in skins select skin.PreviewImage,
                    skins.IndexOf(_model.SelectedObject.SelectedSkin),
                    CommonAcConsts.PreviewWidth).ShowDialog();
            }
        }
示例#2
0
        private void ShowroomButton_OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ChangedButton == MouseButton.Left)
            {
                if (Keyboard.Modifiers.HasFlag(ModifierKeys.Alt))
                {
                    e.Handled = true;
                    CustomShowroomWrapper.StartAsync(Car, SelectedSkin);
                    return;
                }

                if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) ||
                    !CarOpenInShowroomDialog.Run(Car, SelectedSkin?.Id))
                {
                    e.Handled = true;
                    new CarOpenInShowroomDialog(Car, SelectedSkin?.Id).ShowDialog();
                }
            }
            else if (e.ChangedButton == MouseButton.Right)
            {
                e.Handled = true;
                var contextMenu = new ContextMenu();

                var item = new MenuItem {
                    Header = ControlsStrings.Car_OpenInShowroom
                };
                item.Click += (s, args) => CarOpenInShowroomDialog.Run(Car, SelectedSkin?.Id);
                contextMenu.Items.Add(item);

                item = new MenuItem {
                    Header = ControlsStrings.Common_Presets
                };
                foreach (var menuItem in PresetsMenuHelper.GroupPresets(CarOpenInShowroomDialog.PresetableKeyValue, p => {
                    CarOpenInShowroomDialog.RunPreset(p.Filename, Car, SelectedSkin?.Id);
                }))
                {
                    item.Items.Add(menuItem);
                }
                contextMenu.Items.Add(item);

                item = new MenuItem {
                    Header = ControlsStrings.Common_Settings, InputGestureText = UiStrings.KeyShift
                };
                item.Click += (s, args) => new CarOpenInShowroomDialog(Car, SelectedSkin?.Id).ShowDialog();
                contextMenu.Items.Add(item);

                // TODO: Presets!

                item = new MenuItem {
                    Header = ControlsStrings.Car_OpenInCustomShowroom, InputGestureText = UiStrings.KeyAlt
                };
                item.Click += (s, args) => CustomShowroomWrapper.StartAsync(Car, SelectedSkin);
                contextMenu.Items.Add(item);

                contextMenu.IsOpen = true;
            }
        }
示例#3
0
 public void InitializeShowroomPresets()
 {
     if (ShowroomPresets == null)
     {
         ShowroomPresets = _helper.Create(CarOpenInShowroomDialog.PresetableKeyValue, p => {
             CarOpenInShowroomDialog.RunPreset(p.Filename, SelectedObject, SelectedObject.SelectedSkin?.Id);
         });
     }
 }
示例#4
0
        private void SelectedSkinPreview_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2 && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
            {
                e.Handled = true;
                CarOpenInShowroomDialog.Run(_model.SelectedObject, _model.SelectedObject.SelectedSkin?.Id);
            }
            else if (e.ClickCount == 1 && ReferenceEquals(sender, SelectedSkinPreviewImage) && !Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
            {
                e.Handled = true;

                var skins = _model.SelectedObject.EnabledOnlySkins.ToList();
                new ImageViewer(
                    from skin in skins select skin.PreviewImage,
                    skins.IndexOf(_model.SelectedObject.SelectedSkin),
                    1022).ShowDialog();
            }
        }
示例#5
0
        public void Initialize()
        {
            OnSizeChanged(null, null);

            DataContext = new ViewModel(null, true,
                                        _selectNextCar, _selectNextCarSkinId,
                                        track: _selectNextTrack, trackSkin: _selectNextTrackSkin,
                                        weatherId: _selectNextWeather?.Id, mode: _selectNextMode);
            WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .AddHandler(Model.TrackState, nameof(INotifyPropertyChanged.PropertyChanged),
                                                                                            OnTrackStateChanged);

            this.OnActualUnload(() => {
                WeakEventManager <INotifyPropertyChanged, PropertyChangedEventArgs> .RemoveHandler(Model.TrackState, nameof(INotifyPropertyChanged.PropertyChanged),
                                                                                                   OnTrackStateChanged);
            });

            _current = new WeakReference <QuickDrive>(this);

            InitializeComponent();
            InputBindings.AddRange(new[] {
                new InputBinding(Model.GoCommand, new KeyGesture(Key.G, ModifierKeys.Control)),
                new InputBinding(Model.ShareCommand, new KeyGesture(Key.PageUp, ModifierKeys.Control)),
                new InputBinding(UserPresetsControl.SaveCommand, new KeyGesture(Key.S, ModifierKeys.Control)),

                new InputBinding(new DelegateCommand(() => {
                    CustomShowroomWrapper.StartAsync(Model.SelectedCar, Model.SelectedCar.SelectedSkin);
                }), new KeyGesture(Key.H, ModifierKeys.Alt)),
                new InputBinding(new DelegateCommand(() => {
                    CarOpenInShowroomDialog.Run(Model.SelectedCar, Model.SelectedCar.SelectedSkin?.Id);
                }), new KeyGesture(Key.H, ModifierKeys.Control)),
                new InputBinding(new DelegateCommand(() => {
                    new CarOpenInShowroomDialog(Model.SelectedCar, Model.SelectedCar.SelectedSkin?.Id).ShowDialog();
                }), new KeyGesture(Key.H, ModifierKeys.Control | ModifierKeys.Shift)),

#if DEBUG
                new InputBinding(new AsyncCommand(() =>
                                                  LapTimesManager.Instance.AddEntry(
                                                      Model.SelectedCar.Id, Model.SelectedTrack.IdWithLayout,
                                                      DateTime.Now, TimeSpan.FromSeconds(MathUtils.Random(10d, 20d)))),
                                 new KeyGesture(Key.T, ModifierKeys.Control | ModifierKeys.Alt | ModifierKeys.Shift)),
#endif

                new InputBinding(Model.RandomizeCommand, new KeyGesture(Key.R, ModifierKeys.Alt)),
                new InputBinding(Model.RandomCarSkinCommand, new KeyGesture(Key.R, ModifierKeys.Control | ModifierKeys.Alt)),
                new InputBinding(Model.RandomCarCommand, new KeyGesture(Key.D1, ModifierKeys.Control | ModifierKeys.Alt)),
                new InputBinding(Model.RandomTrackCommand, new KeyGesture(Key.D2, ModifierKeys.Control | ModifierKeys.Alt)),
                new InputBinding(Model.RandomTimeCommand, new KeyGesture(Key.D3, ModifierKeys.Control | ModifierKeys.Alt)),
                new InputBinding(Model.RandomWeatherCommand, new KeyGesture(Key.D4, ModifierKeys.Control | ModifierKeys.Alt)),
                new InputBinding(Model.RandomTemperatureCommand, new KeyGesture(Key.D5, ModifierKeys.Control | ModifierKeys.Alt)),
            });

            _selectNextCar       = null;
            _selectNextCarSkinId = null;
            _selectNextTrack     = null;
            _selectNextTrackSkin = null;
            _selectNextWeather   = null;
            _selectNextMode      = null;

            this.OnActualUnload(() => {
                Model.Unload();
            });
        }
示例#6
0
        private void OpenSkinContextMenu(CarSkinObject skin)
        {
            if (skin == null)
            {
                return;
            }

            var contextMenu = new ContextMenu {
                Items =
                {
                    new MenuItem {
                        Header           = string.Format(AppStrings.Car_SkinFormat, skin.DisplayName?.Replace(@"_", @"__") ?? @"?"),
                        StaysOpenOnClick = true
                    }
                }
            };

            var item = new MenuItem {
                Header = ControlsStrings.Car_OpenInShowroom, InputGestureText = @"Ctrl+H"
            };

            item.Click += (sender, args) => CarOpenInShowroomDialog.Run(_model.SelectedObject, skin.Id);
            contextMenu.Items.Add(item);

            item = new MenuItem {
                Header = ControlsStrings.Car_OpenInCustomShowroom, InputGestureText = @"Alt+H"
            };
            item.Click += (sender, args) => CustomShowroomWrapper.StartAsync(_model.SelectedObject, skin);
            contextMenu.Items.Add(item);

            contextMenu.Items.Add(new MenuItem {
                Header  = AppStrings.Toolbar_Folder,
                Command = skin.ViewInExplorerCommand
            });

            contextMenu.Items.Add(new Separator());

            item = new MenuItem {
                Header = AppStrings.Toolbar_UpdatePreview
            };
            item.Click += (sender, args) => new ToUpdatePreview(_model.SelectedObject, skin).Run();
            contextMenu.Items.Add(item);

            contextMenu.Items.Add(new Separator());

            item = new MenuItem {
                Header = AppStrings.Toolbar_ChangeLivery
            };
            item.Click += (sender, args) => new LiveryIconEditor(skin).ShowDialog();
            contextMenu.Items.Add(item);

            item = new MenuItem {
                Header = AppStrings.Toolbar_GenerateLivery, ToolTip = AppStrings.Solution_GenerateLivery_Details
            };
            item.Click += (sender, args) => LiveryIconEditor.GenerateAsync(skin).Forget();
            contextMenu.Items.Add(item);

            item = new MenuItem {
                Header = AppStrings.Toolbar_GenerateRandomLivery, ToolTip = AppStrings.Solution_RandomLivery_Details
            };
            item.Click += (sender, args) => LiveryIconEditor.GenerateRandomAsync(skin).Forget();
            contextMenu.Items.Add(item);

            contextMenu.Items.Add(new Separator());

            contextMenu.Items.Add(new MenuItem {
                Header  = AppStrings.Car_DeleteSkin,
                ToolTip = AppStrings.Car_DeleteSkin_Tooltip,
                Command = skin.DeleteCommand
            });

            contextMenu.IsOpen = true;
        }