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(); } }
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; } }
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(); } }
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(); }); }
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; }