15 private Builder _builder;
17#pragma warning disable 649
19 private ComboBox stackABox;
21 private ComboBox stackBBox;
23 private ComboBox roiBox;
25 private SpinButton wBox;
27 private SpinButton hBox;
29 private SpinButton xBox;
31 private SpinButton yBox;
33 private SpinButton angleBox;
35 private ColorButton fillColor;
37 private Button cancelBut;
39 private Button applyBut;
41 private Button inPlaceBut;
42#pragma warning restore 649
46 #region Constructors / Destructors
59 Builder builder =
new Builder(
new FileStream(System.IO.Path.GetDirectoryName(Environment.ProcessPath) +
"/" +
"Glade/ApplyFilter.glade", FileMode.Open));
61 return new ApplyFilter(builder, builder.GetObject(
"applyFilter").Handle, two, filter);
65 protected ApplyFilter(Builder builder, IntPtr handle,
bool two,Filt filter) : base(handle)
68 App.applyFilter =
this;
69 builder.Autoconnect(
this);
71 stackABox.Changed += StackABox_Changed;
72 stackBBox.Changed += StackBBox_Changed;
73 applyBut.ButtonPressEvent += ApplyBut_ButtonPressEvent;
74 inPlaceBut.ButtonPressEvent += InPlaceBut_ButtonPressEvent;
75 this.FocusActivated += ApplyFilter_FocusActivated;
76 this.Title = filter.name;
79 stackBBox.Sensitive =
false;
80 if (stackBBox.Children.Length > 1)
83 if (stackABox.Children.Length > 0)
85 App.ApplyStyles(
this);
93 private void InPlaceBut_ButtonPressEvent(
object o, ButtonPressEventArgs args)
96 DefaultResponse = ResponseType.Ok;
105 private void ApplyBut_ButtonPressEvent(
object o, ButtonPressEventArgs args)
108 DefaultResponse = ResponseType.Ok;
116 private void ApplyFilter_FocusActivated(
object? sender, EventArgs e)
126 private void StackBBox_Changed(
object? sender, EventArgs e)
128 if (stackABox.Active == stackBBox.Active)
131 stackBBox.Active = -1;
142 private void StackABox_Changed(
object? sender, EventArgs e)
144 if (stackABox.Active == -1)
146 ListStore roi =
new ListStore(typeof(
string));
148 foreach (ROI r
in ImageA.Annotations)
153 if (stackABox.Active == stackBBox.Active)
156 stackBBox.Active = -1;
158 var renderer =
new CellRendererText();
159 roiBox.PackStart(renderer,
false);
160 roiBox.AddAttribute(renderer,
"text", 0);
166 ListStore store =
new ListStore(typeof(
string));
167 if (Images.images.Count != stackABox.Children.Length)
169 stackABox.Model =
null;
170 stackBBox.Model =
null;
171 foreach (BioImage b
in Images.images)
173 store.AppendValues(System.IO.Path.GetFileName(b.Filename));
175 stackABox.Active = 0;
177 stackABox.Model = store;
178 stackBBox.Model = store;
180 var renderer =
new CellRendererText();
181 stackABox.PackStart(renderer,
false);
182 stackABox.AddAttribute(renderer,
"text", 0);
184 var renderer2 =
new CellRendererText();
185 stackBBox.PackStart(renderer2,
false);
186 stackBBox.AddAttribute(renderer2,
"text", 0);
188 ListStore rois =
new ListStore(typeof(
string));
189 foreach (ROI b
in ImageA.Annotations)
191 rois.AppendValues(b.ToString());
196 var renderer3 =
new CellRendererText();
197 roiBox.PackStart(renderer3,
false);
198 roiBox.AddAttribute(renderer3,
"text", 0);
204 ListStore store =
new ListStore(typeof(
string));
205 if (Images.images.Count != stackABox.Children.Length)
207 stackABox.Model =
null;
208 stackBBox.Model =
null;
209 foreach (BioImage b
in Images.images)
211 store.AppendValues(System.IO.Path.GetFileName(b.Filename));
213 stackABox.Active = 0;
215 stackABox.Model = store;
216 stackBBox.Model = store;
217 ListStore rois =
new ListStore(typeof(
string));
218 foreach (ROI b
in ImageA.Annotations)
220 rois.AppendValues(b.ToString());
225 public BioImage ImageA
227 get {
return Images.images[stackABox.Active]; }
230 public BioImage ImageB
232 get {
return Images.images[stackBBox.Active]; }
235 public RectangleD Rectangle
239 if (roiBox.Active != -1)
240 return ImageA.Annotations[roiBox.Active].BoundingBox;
242 return new RectangleD((
double)xBox.Value, (
double)yBox.Value, (
double)wBox.Value, (
double)hBox.Value);
250 return (
int)angleBox.Value;
258 return Color.FromArgb(fillColor.Color.Red, fillColor.Color.Green, fillColor.Color.Blue);
266 return (
int)wBox.Value;
274 return (
int)hBox.Value;
281 private void cancelBut_Click(
object sender, EventArgs e)
283 DefaultResponse = ResponseType.Cancel;
291 private void Apply(
bool inPlace)
293 if (filt.type == Filt.Type.Base)
295 ImageView.SelectedImage = Filters.Base(ImageA.ID, filt.name, inPlace);
297 if (filt.type == Filt.Type.Base2)
299 ImageView.SelectedImage = Filters.Base2(ImageA.ID, ImageB.ID, filt.name, inPlace);
302 if (filt.type == Filt.Type.InPlace)
304 ImageView.SelectedImage = Filters.InPlace(ImageA.ID, filt.name, inPlace);
307 if (filt.type == Filt.Type.InPlace2)
309 ImageView.SelectedImage = Filters.InPlace2(ImageA.ID, ImageB.ID, filt.name, inPlace);
312 if (filt.type == Filt.Type.InPlacePartial)
314 ImageView.SelectedImage = Filters.InPlacePartial(ImageA.ID, filt.name, inPlace);
317 if (filt.type == Filt.Type.Resize)
319 ImageView.SelectedImage = Filters.Resize(ImageA.ID, filt.name, inPlace, W, H);
322 if (filt.type == Filt.Type.Rotate)
324 ImageView.SelectedImage = Filters.Rotate(ImageA.ID, filt.name, inPlace, Angle, Color.A, Color.R, Color.G, Color.B);
327 if (filt.type == Filt.Type.Transformation)
330 if (filt.name ==
"Crop")
332 App.tabsView.AddTab(Filters.Crop(ImageA.ID, Rectangle));
336 ImageView.SelectedImage = Filters.Transformation(ImageA.ID, filt.name, inPlace, Angle);
340 if (filt.type == Filt.Type.Copy)
342 ImageView.SelectedImage = Filters.Copy(ImageA.ID, filt.name, inPlace);
344 App.viewer.UpdateView();