public override void Init(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, DisplayableProperty <TKey, ReadableTuple <TKey> > dp) { _textBox = new TextBox(); _textBox.Margin = new Thickness(3); _textBox.TextChanged += new TextChangedEventHandler(_textBox_TextChanged); _tab = tab; DisplayableProperty <TKey, ReadableTuple <TKey> > .RemoveUndoAndRedoEvents(_textBox, _tab); dp.AddResetField(_textBox); _grid = new Grid(); _grid.SetValue(Grid.RowProperty, _row); _grid.SetValue(Grid.ColumnProperty, _column); _grid.ColumnDefinitions.Add(new ColumnDefinition()); _grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); _textPreview = new TextBlock(); _textPreview.Margin = new Thickness(0, 3, 3, 3); _textPreview.Visibility = Visibility.Collapsed; _textPreview.VerticalAlignment = VerticalAlignment.Center; _textPreview.TextAlignment = TextAlignment.Right; _textPreview.Foreground = Brushes.DarkGray; _textPreview.SetValue(Grid.ColumnProperty, 1); _textBox.SetValue(Grid.ColumnProperty, 0); _grid.Children.Add(_textBox); _grid.Children.Add(_textPreview); _parent = _parent ?? tab.PropertiesGrid; _parent.Children.Add(_grid); dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => _textBox.Dispatch(delegate { try { string sval = item.GetValue <string>(_attribute); if (sval == _textBox.Text) { return; } _textBox.Text = sval; _textBox.UndoLimit = 0; _textBox.UndoLimit = int.MaxValue; } catch { } }))); _onInitalized(); }
public override void Init(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, DisplayableProperty <TKey, ReadableTuple <TKey> > dp) { if (_textBox == null) { _textBox = new TextBox(); } _textBox.Margin = new Thickness(3); _textBox.TextChanged += new TextChangedEventHandler(_textBox_TextChanged); _textBox.TabIndex = dp.ZIndex++; _tab = tab; DisplayableProperty <TKey, ReadableTuple <TKey> > .RemoveUndoAndRedoEvents(_textBox, _tab); dp.AddResetField(_textBox); _grid = new Grid(); _grid.SetValue(Grid.RowProperty, _row); _grid.SetValue(Grid.ColumnProperty, _column); _grid.ColumnDefinitions.Add(new ColumnDefinition()); _grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); _button = new Button(); _button.Width = 22; _button.Height = 22; _button.Margin = new Thickness(0, 3, 3, 3); _button.Content = "..."; _button.Click += _button_Click; _button.SetValue(Grid.ColumnProperty, 1); _textBox.SetValue(Grid.ColumnProperty, 0); _textBox.VerticalAlignment = VerticalAlignment.Center; _grid.Children.Add(_textBox); _grid.Children.Add(_button); _parent = _parent ?? tab.PropertiesGrid; _parent.Children.Add(_grid); dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(_updateAction)); _onInitalized(); }
public override void Init(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, DisplayableProperty <TKey, ReadableTuple <TKey> > dp) { _tab = tab; Grid grid = new Grid(); WpfUtilities.SetGridPosition(grid, _row, null, _column - 1, 2); for (int i = 0; i < _numOfItems; i++) { grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(-1, GridUnitType.Auto) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(0) }); } grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); for (int i = 0; i < _numOfItems; i++) { Label label = new Label(); label.Content = "ID" + (i + 1); label.VerticalAlignment = VerticalAlignment.Center; label.Margin = new Thickness(3); label.Padding = new Thickness(0); label.SetValue(Grid.RowProperty, 2 * i); label.SetValue(TextBlock.ForegroundProperty, Application.Current.Resources["TextForeground"] as Brush); Label spacer = new Label(); spacer.Height = 3; spacer.Content = ""; spacer.SetValue(Grid.RowProperty, 2 * i + 1); TextBlock preview = new TextBlock(); preview.HorizontalAlignment = HorizontalAlignment.Left; preview.VerticalAlignment = VerticalAlignment.Center; preview.Margin = new Thickness(7, 0, 4, 0); preview.Padding = new Thickness(0); preview.SetValue(Grid.RowProperty, 2 * i); preview.Foreground = Application.Current.Resources["TextBoxOverlayBrush"] as SolidColorBrush; preview.SetValue(Grid.ColumnProperty, 1); preview.IsHitTestVisible = false; Button button = new Button(); button.Width = 22; button.Height = 22; button.Margin = new Thickness(0, 3, 3, 3); button.Content = new Image { Stretch = Stretch.None, Source = ApplicationManager.PreloadResourceImage("arrowdown.png") }; button.Click += new RoutedEventHandler(_button_Click); button.SetValue(Grid.ColumnProperty, 2); button.SetValue(Grid.RowProperty, 2 * i); button.ContextMenu = new ContextMenu(); button.ContextMenu.Placement = PlacementMode.Bottom; button.ContextMenu.PlacementTarget = button; button.PreviewMouseRightButtonUp += delegate(object sender, MouseButtonEventArgs e) { e.Handled = true; }; MenuItem select = new MenuItem(); select.Header = "Select ''"; select.Icon = new Image { Source = ApplicationManager.PreloadResourceImage("find.png"), Stretch = Stretch.Uniform, Width = 16, Height = 16 }; select.Click += _select_Click; select.Tag = button; MenuItem selectFromList = new MenuItem(); selectFromList.Header = "Select..."; selectFromList.Icon = new Image { Source = ApplicationManager.PreloadResourceImage("treeList.png"), Stretch = Stretch.None }; selectFromList.Click += _selectFromList_Click; selectFromList.Tag = button; button.ContextMenu.Items.Add(select); button.ContextMenu.Items.Add(selectFromList); TextBox textBox = new TextBox(); textBox.Margin = new Thickness(3); textBox.TextChanged += new TextChangedEventHandler(_textBox_TextChanged); textBox.SetValue(Grid.ColumnProperty, 1); textBox.SetValue(Grid.RowProperty, 2 * i); textBox.TextChanged += new TextChangedEventHandler(_textBox2_TextChanged); dp.AddResetField(textBox); button.Tag = textBox; textBox.Tag = preview; textBox.GotFocus += delegate { preview.Visibility = Visibility.Collapsed; textBox.Foreground = Application.Current.Resources["TextForeground"] as Brush; }; textBox.LostFocus += (sender, e) => _textBox2_TextChanged(sender, null); _boxes.Add(textBox); grid.Children.Add(spacer); grid.Children.Add(textBox); grid.Children.Add(button); grid.Children.Add(label); grid.Children.Add(preview); DisplayableProperty <TKey, ReadableTuple <TKey> > .RemoveUndoAndRedoEvents(textBox, _tab); } tab.PropertiesGrid.Children.Add(grid); dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => grid.Dispatch(delegate { try { TextBox textBox; string value = item.GetValue <string>(_attribute); List <string> values = value.Split(':').ToList(); while (values.Count < _numOfItems) { values.Add(""); } for (int i = 0; i < _numOfItems; i++) { textBox = _boxes[i]; textBox.Text = values[i]; textBox.UndoLimit = 0; textBox.UndoLimit = int.MaxValue; } } #if SDE_DEBUG catch (Exception err) { Debug.PrintStack(err); #else catch { #endif } })));
public void Init(GDbTabWrapper <TKey, TValue> tab, DisplayableProperty <TKey, TValue> dp) { _tab = tab; DisplayableProperty <TKey, TValue> .RemoveUndoAndRedoEvents(_textBox, _tab); //_autocompleteService = new AutocompleteService(_tab.List, _tbIdResource, _tbUnResource, _tbIdDisplayName, _tbUnDisplayName, _tbIdDesc, _tbUnDesc); dp.AddResetField(_textBox); dp.AddResetField(_realBox); Border border = new Border(); border.BorderBrush = SystemColors.ActiveBorderBrush; border.BorderThickness = new Thickness(1); border.Child = _textBox; border.SetValue(Grid.RowProperty, _gridRow); border.SetValue(Grid.ColumnProperty, _gridColumn + 1); border.Margin = new Thickness(3); _tab.PropertiesGrid.Children.Add(border); StackPanel panel = new StackPanel(); panel.SetValue(Grid.RowProperty, _gridRow); panel.SetValue(Grid.ColumnProperty, _gridColumn); Label label = new Label { Content = "Description" }; label.SetValue(TextBlock.ForegroundProperty, Application.Current.Resources["TextForeground"] as Brush); Button button = new Button(); button.Margin = new Thickness(3); panel.Children.Add(label); panel.Children.Add(button); _textBox.GotFocus += delegate { _lastAccessed = _textBox; }; if (_quickEdit) { _tab.List.SelectionChanged += new SelectionChangedEventHandler(_list_SelectionChanged); button.Content = "Quick edit..."; button.Click += new RoutedEventHandler(_buttonQuickEdit_Click); TextEditorColorControl colorControl = new TextEditorColorControl(); Label label2 = new Label { Content = "Color picker" }; label2.SetValue(TextBlock.ForegroundProperty, Application.Current.Resources["TextForeground"] as Brush); _tecc = colorControl; _lastAccessed = _textBox; colorControl.Init(_getActive); Button itemScript = new Button { Margin = new Thickness(3), Content = "Item bonus" }; itemScript.Click += delegate { itemScript.IsEnabled = false; var meta = _tab.GetMetaTable <int>(ServerDbs.Items); var item = _tab._listView.SelectedItem as ReadableTuple <int>; _update = new Func <ReadableTuple <int>, string>(tuple => { var output = new StringBuilder(); if (tuple != null) { var entry = meta.TryGetTuple(tuple.Key); if (entry != null) { output.AppendLine("-- Script --"); output.AppendLine(entry.GetValue <string>(ServerItemAttributes.Script)); output.AppendLine("-- OnEquipScript --"); output.AppendLine(entry.GetValue <string>(ServerItemAttributes.OnEquipScript)); output.AppendLine("-- OnUnequipScript --"); output.AppendLine(entry.GetValue <string>(ServerItemAttributes.OnUnequipScript)); } else { output.AppendLine("-- Not found in item_db_m --"); } } else { output.AppendLine("-- No entry selected --"); } return(output.ToString()); }); _scriptEdit = new ScriptEditDialog(_update(item)); _scriptEdit.Closed += delegate { itemScript.IsEnabled = true; _scriptEdit = null; }; _scriptEdit._textEditor.IsReadOnly = true; _scriptEdit.DisableOk(); _scriptEdit.Show(); _scriptEdit.Owner = WpfUtilities.FindParentControl <Window>(_tab); }; panel.Children.Add(itemScript); panel.Children.Add(label2); panel.Children.Add(colorControl); } else { if (_tecc != null) { var t = _lastAccessed; _lastAccessed = _textBox; _tecc.Init(_getActive); _lastAccessed = t; } button.Content = "Copy >"; button.Click += new RoutedEventHandler(_buttonAutocomplete_Click); } tab.PropertiesGrid.Children.Add(panel); dp.AddUpdateAction(new Action <TValue>(item => _textBox.Dispatch(delegate { Debug.Ignore(() => _realBox.Text = item.GetValue <string>(_attribute)); //Debug.Ignore(() => _textBox.Text = item.GetValue<string>(_attribute)); _realBox.UndoLimit = 0; _realBox.UndoLimit = int.MaxValue; //Debug.Ignore(() => _textBox.Text = item.GetValue<string>(_attribute)); _textBox.Document.UndoStack.SizeLimit = 0; _textBox.Document.UndoStack.SizeLimit = int.MaxValue; }))); _realBox.TextChanged += delegate { WpfUtilities.UpdateRtb(_previewTextBox, _realBox.Text, true); if (_avalonUpdate) { return; } _textBox.Text = _realBox.Text; }; }
public void Init(GDbTabWrapper <TKey, TValue> tab, DisplayableProperty <TKey, TValue> dp) { _tab = tab; DisplayableProperty <TKey, TValue> .RemoveUndoAndRedoEvents(_textBox, _tab); dp.AddResetField(_textBox); Grid grid = new Grid(); grid.SetValue(Grid.RowProperty, _gridRow); grid.SetValue(Grid.ColumnProperty, _gridColumn); grid.ColumnDefinitions.Add(new ColumnDefinition()); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); _imageResource.SetValue(Grid.ColumnProperty, 2); Button button = new Button(); button.Width = 22; button.Height = 22; button.Margin = new Thickness(3); button.Content = "..."; button.Click += new RoutedEventHandler(_button_Click); button.SetValue(Grid.ColumnProperty, 3); _button = button; _textBox.SetValue(Grid.ColumnProperty, 0); Image image = new Image(); image.Visibility = Visibility.Collapsed; image.SetValue(RenderOptions.BitmapScalingModeProperty, BitmapScalingMode.NearestNeighbor); image.Source = ApplicationManager.GetResourceImage("warning16.png"); image.Width = 16; image.Height = 16; image.VerticalAlignment = VerticalAlignment.Center; image.Margin = new Thickness(1); image.ToolTip = "Invalid encoding detected. Click this button to correct the value."; image.SetValue(Grid.ColumnProperty, 1); _image = image; _image.MouseLeftButtonUp += new MouseButtonEventHandler(_image_MouseLeftButtonUp); WpfUtils.AddMouseInOutEffects(image); grid.Children.Add(_imageResource); grid.Children.Add(_textBox); grid.Children.Add(button); grid.Children.Add(image); tab.PropertiesGrid.Children.Add(grid); dp.AddUpdateAction(new Action <TValue>(item => _textBox.Dispatch(delegate { try { string sval = item.GetValue <string>(_attribute); if (sval == _textBox.Text) { return; } _textBox.Text = sval; _textBox.UndoLimit = 0; _textBox.UndoLimit = int.MaxValue; } catch { } }))); _button.ContextMenu = new ContextMenu(); _button.ContextMenu.Placement = PlacementMode.Bottom; MenuItem fromGrf = new MenuItem(); fromGrf.Header = "Select from GRF..."; fromGrf.Icon = new Image { Source = ApplicationManager.PreloadResourceImage("find.png"), Stretch = Stretch.Uniform, Width = 16, Height = 16 }; fromGrf.Click += _selectFromGrf_Click; MenuItem selectFromList = new MenuItem(); selectFromList.Header = "Autocomplete"; selectFromList.Icon = new Image { Source = ApplicationManager.PreloadResourceImage("revisionUpdate.png"), Stretch = Stretch.None }; selectFromList.Click += _autocomplete_Click; button.ContextMenu.Items.Add(fromGrf); button.ContextMenu.Items.Add(selectFromList); _button.ContextMenu.PlacementTarget = _button; _button.PreviewMouseRightButtonUp += _disableButton; }
public override void Init(GDbTabWrapper <int, ReadableTuple <int> > tab, DisplayableProperty <int, ReadableTuple <int> > dp) { _parent = _parent ?? tab.PropertiesGrid; _textBox = new TextBox(); _textBox.Margin = new Thickness(3); _textBox.TextChanged += new TextChangedEventHandler(_textBox_TextChanged); _textBox.TabIndex = dp.ZIndex++; _tab = tab; DisplayableProperty <int, ReadableTuple <int> > .RemoveUndoAndRedoEvents(_textBox, _tab); dp.AddResetField(_textBox); Grid grid = new Grid(); grid.SetValue(Grid.RowProperty, _row); grid.SetValue(Grid.ColumnProperty, _column); grid.ColumnDefinitions.Add(new ColumnDefinition()); _textBox.SetValue(Grid.ColumnProperty, 0); _textPreview = new TextBlock(); _textPreview.Margin = new Thickness(7, 0, 0, 0); _textPreview.VerticalAlignment = VerticalAlignment.Center; _textPreview.TextAlignment = TextAlignment.Left; _textPreview.Foreground = Brushes.DarkGray; _textPreview.SetValue(Grid.ColumnProperty, 0); _textPreview.IsHitTestVisible = false; dp.Deployed += delegate { try { if (_attribute.AttachedObject != null) { foreach (var attribute in (DbAttribute[])_attribute.AttachedObject) { var textBox = DisplayablePropertyHelper.Find <TextBox>(_parent, attribute).First(); textBox.TextChanged += (e, a) => OnUpdate(); } } else { var textBox = DisplayablePropertyHelper.Find <TextBox>(_parent, _attribute.AttachedAttribute as DbAttribute).First(); textBox.TextChanged += (e, a) => OnUpdate(); } } catch (Exception err) { ErrorHandler.HandleException(err); } }; grid.Children.Add(_textBox); grid.Children.Add(_textPreview); _parent.Children.Add(grid); dp.AddUpdateAction(new Action <ReadableTuple <int> >(item => _textBox.Dispatch(delegate { try { string sval = item.GetValue <string>(_attribute); if (sval == _textBox.Text) { return; } _textBox.Text = sval; _textBox.UndoLimit = 0; _textBox.UndoLimit = int.MaxValue; } catch { } OnUpdate(); }))); _textBox.GotFocus += delegate { _textPreview.Visibility = Visibility.Collapsed; }; _textBox.LostFocus += delegate { OnUpdate(); }; }
public override void Init(GDbTabWrapper <TKey, ReadableTuple <TKey> > tab, DisplayableProperty <TKey, ReadableTuple <TKey> > dp) { _tab = tab; Grid grid = new Grid(); WpfUtilities.SetGridPosition(grid, _row, null, _column - 1, 2); for (int i = 0; i < _numOfItems; i++) { grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(-1, GridUnitType.Auto) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(0) }); } grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(100) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(-1, GridUnitType.Auto) }); grid.ColumnDefinitions.Add(new ColumnDefinition()); for (int i = 0; i < _numOfItems; i++) { Label label = new Label(); label.Content = "ID" + (i + 1); label.VerticalAlignment = VerticalAlignment.Center; label.Margin = new Thickness(3); label.Padding = new Thickness(0); label.SetValue(Grid.RowProperty, 2 * i); Label spacer = new Label(); spacer.Height = 3; spacer.Content = ""; spacer.SetValue(Grid.RowProperty, 2 * i + 1); Label preview = new Label(); preview.Content = ""; preview.HorizontalAlignment = HorizontalAlignment.Left; preview.VerticalAlignment = VerticalAlignment.Center; preview.Margin = new Thickness(3); preview.Padding = new Thickness(0); preview.SetValue(Grid.RowProperty, 2 * i); preview.SetValue(Grid.ColumnProperty, 3); Button button = new Button(); button.Width = 22; button.Height = 22; button.Margin = new Thickness(0, 3, 3, 3); button.Content = new Image { Stretch = Stretch.None, Source = ApplicationManager.PreloadResourceImage("arrowdown.png") as ImageSource }; button.Click += new RoutedEventHandler(_button_Click); button.SetValue(Grid.ColumnProperty, 2); button.SetValue(Grid.RowProperty, 2 * i); button.TabIndex = dp.ZIndex++; TextBox textBox = new TextBox(); textBox.Margin = new Thickness(3); textBox.TextChanged += new TextChangedEventHandler(_textBox_TextChanged); textBox.SetValue(Grid.ColumnProperty, 1); textBox.SetValue(Grid.RowProperty, 2 * i); textBox.TextChanged += new TextChangedEventHandler(_textBox2_TextChanged); dp.AddResetField(textBox); button.Tag = textBox; textBox.Tag = preview; _boxes.Add(textBox); grid.Children.Add(spacer); grid.Children.Add(button); grid.Children.Add(label); grid.Children.Add(textBox); grid.Children.Add(preview); DisplayableProperty <TKey, ReadableTuple <TKey> > .RemoveUndoAndRedoEvents(textBox, _tab); } tab.PropertiesGrid.Children.Add(grid); dp.AddUpdateAction(new Action <ReadableTuple <TKey> >(item => grid.Dispatch(delegate { try { TextBox textBox; string value = item.GetValue <string>(_attribute); List <string> values = value.Split(':').ToList(); while (values.Count < _numOfItems) { values.Add(""); } for (int i = 0; i < _numOfItems; i++) { textBox = _boxes[i]; textBox.Text = values[i]; textBox.UndoLimit = 0; textBox.UndoLimit = int.MaxValue; } } #if SDE_DEBUG catch (Exceptionerr) { Debug.PrintStack(err); #else catch { #endif } })));