123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- namespace InABox.DynamicGrid;
- #if USEIMAGES
- public class FileEditorControl<T> : DynamicEditorControl<DataFile> where T : DataFile, new()
- {
- private TextBox Editor = null;
- T _value = null;
- protected override FrameworkElement CreateEditor()
- {
- Grid Grid = new Grid()
- {
- VerticalAlignment = VerticalAlignment.Stretch,
- HorizontalAlignment = HorizontalAlignment.Stretch
- };
- Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
- Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(50, GridUnitType.Pixel) });
- Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(50, GridUnitType.Pixel) });
- Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(50, GridUnitType.Pixel) });
- Editor = new TextBox()
- {
- VerticalAlignment = VerticalAlignment.Stretch,
- VerticalContentAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Stretch,
- };
- Editor.TextChanged += (o, e) => Changed = true;
- Editor.SetValue(Grid.ColumnProperty, 0);
- Editor.SetValue(Grid.RowProperty, 0);
- Grid.Children.Add(Editor);
- Button Select = new Button()
- {
- VerticalAlignment = VerticalAlignment.Stretch,
- VerticalContentAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Stretch,
- Margin = new Thickness(5,0,0,0),
- Content = "Select",
- Focusable = false
- };
- Select.SetValue(Grid.ColumnProperty, 1);
- Select.SetValue(Grid.RowProperty, 0);
- Select.Click += Select_Click;
- Grid.Children.Add(Select);
- Button Clear = new Button()
- {
- VerticalAlignment = VerticalAlignment.Stretch,
- VerticalContentAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Stretch,
- Margin = new Thickness(5, 0, 0, 0),
- Content = "Clear",
- Focusable = false
- };
- Clear.SetValue(Grid.ColumnProperty, 2);
- Clear.SetValue(Grid.RowProperty, 0);
- Clear.Click += Clear_Click;
- Grid.Children.Add(Clear);
- Button View = new Button()
- {
- VerticalAlignment = VerticalAlignment.Stretch,
- VerticalContentAlignment = VerticalAlignment.Center,
- HorizontalAlignment = HorizontalAlignment.Stretch,
- Margin = new Thickness(5, 0, 0, 0),
- Content = "View",
- Focusable = false
- };
- View.SetValue(Grid.ColumnProperty, 3);
- View.SetValue(Grid.RowProperty, 0);
- View.Click += View_Click;
- Grid.Children.Add(View);
- return Grid;
- }
- private void View_Click(object sender, RoutedEventArgs e)
- {
- if (String.IsNullOrEmpty(_value.FileName) || (_value.Data == null) || (_value.Data.Length == 0))
- {
- System.Windows.MessageBox.Show("No File Selected!");
- return;
- }
- String ext = System.IO.Path.GetExtension(_value.FileName);
- String filename = System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), ext);
- File.WriteAllBytes(filename, _value.Data);
- ProcessStartInfo gsProcessInfo = new ProcessStartInfo();
- gsProcessInfo.Verb = "open";
- gsProcessInfo.WindowStyle = ProcessWindowStyle.Normal;
- gsProcessInfo.FileName = filename;
- gsProcessInfo.UseShellExecute = true;
- Process.Start(gsProcessInfo);
- }
- private void Clear_Click(object sender, RoutedEventArgs e)
- {
- _value.FileName = "";
- _value.Data = new byte[] { };
- Editor.Text = "";
- }
- private void Select_Click(object sender, RoutedEventArgs e)
- {
- VistaOpenFileDialog dlg = new VistaOpenFileDialog();
- dlg.Filter = _value.Filter();
- if (dlg.ShowDialog() == true)
- {
- _value.FileName = System.IO.Path.GetFileName(dlg.FileName);
- _value.Data = File.ReadAllBytes(dlg.FileName);
- Editor.Text = _value.FileName;
- }
- }
- protected override int DesiredHeight()
- {
- return 25;
- }
- protected override DataFile GetValue()
- {
- return _value;
- }
- protected override void SetValue(DataFile value)
- {
- T file = (T)value;
- T newfile = new T(); //(DataFile)Activator.CreateInstance(file != null ? value.GetType() : typeof(MiscellaneousDataFile));
- newfile.FileName = file != null ? file.FileName : "";
- newfile.Data = file != null ? file.Data : new byte[] { };
- Editor.Text = file != null ? file.FileName : "";
- _value = newfile;
- }
- public override void SetFocus()
- {
- Editor.Focus();
- }
- public override void SetColor(Color color)
- {
- Editor.Background = new SolidColorBrush(color);
- }
- }
- public class ImageFileEditorControl : FileEditorControl<ImageDataFile> { }
- public class PDFFileEditorControl : FileEditorControl<PDFDataFile> { }
- public class MiscellaneousFileEditorControl : FileEditorControl<MiscellaneousDataFile> { }
- #endif
|