12 private Builder _builder;
14#pragma warning disable 649
16 private Button splitChannelsBut;
18 private Button substackBut;
20 private Button mergeZBut;
22 private Button mergeTBut;
24 private Button mergeBut;
26 private ComboBox stackABox;
28 private ComboBox stackBBox;
30 private SpinButton zStartBox;
32 private SpinButton cStartBox;
34 private SpinButton tStartBox;
36 private SpinButton zEndBox;
38 private SpinButton cEndBox;
40 private SpinButton tEndBox;
41#pragma warning restore 649
45 #region Constructors / Destructors
50 Builder builder =
new Builder(
new FileStream(System.IO.Path.GetDirectoryName(Environment.ProcessPath) +
"/" +
"Glade/Stacks.glade", FileMode.Open));
51 return new StackTools(builder, builder.GetObject(
"stackTools").Handle);
57 protected StackTools(Builder builder, IntPtr handle) : base(handle)
60 builder.Autoconnect(
this);
62 zStartBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
63 cStartBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
64 tStartBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
65 zEndBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
66 cEndBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
67 tEndBox.Adjustment =
new Adjustment(0, 0, 10000, 1, 10, 0);
69 stackABox.Changed += StackABox_Changed;
70 stackBBox.Changed += StackBBox_Changed;
71 splitChannelsBut.Clicked += SplitChannelsBut_Clicked;
72 substackBut.Clicked += SubstackBut_Clicked;
73 mergeZBut.Clicked += MergeZBut_Clicked;
74 mergeTBut.Clicked += MergeTBut_Clicked;
75 mergeBut.Clicked += MergeBut_Clicked;
76 this.FocusInEvent += StackTools_FocusInEvent;
78 var renderer =
new CellRendererText();
79 stackABox.PackStart(renderer,
false);
80 stackABox.AddAttribute(renderer,
"text", 0);
82 var renderer2 =
new CellRendererText();
83 stackBBox.PackStart(renderer2,
false);
84 stackBBox.AddAttribute(renderer2,
"text", 0);
85 App.ApplyStyles(
this);
88 private void StackTools_FocusInEvent(
object o, FocusInEventArgs args)
101 private void StackBBox_Changed(
object sender, EventArgs e)
103 if (stackABox.Active == -1)
105 if (stackBBox.Active == -1)
107 if (stackABox.Active == stackBBox.Active)
110 MessageDialog messageDialog =
new MessageDialog(
112 DialogFlags.DestroyWithParent,
115 "Same image selected for A & B. Change either A stack or B stack.");
117 messageDialog.Destroy();
118 stackBBox.Active = -1;
120 zEndBox.Adjustment.Upper = ImageB.SizeZ;
121 cEndBox.Adjustment.Upper = ImageB.SizeC;
122 tEndBox.Adjustment.Upper = ImageB.SizeT;
124 zStartBox.Adjustment.Upper = ImageB.SizeZ-1;
125 cStartBox.Adjustment.Upper = ImageB.SizeC-1;
126 tStartBox.Adjustment.Upper = ImageB.SizeT-1;
128 zEndBox.Value = ImageB.SizeZ;
129 cEndBox.Value = ImageB.SizeC;
130 tEndBox.Value = ImageB.SizeT;
140 private void StackABox_Changed(
object sender, EventArgs e)
142 if (stackABox.Active == -1)
144 if (stackABox.Active == stackBBox.Active)
147 MessageDialog messageDialog =
new MessageDialog(
149 DialogFlags.DestroyWithParent,
152 "Same image selected for A & B. Change either A stack or B stack.");
154 messageDialog.Destroy();
155 stackBBox.Active = -1;
157 zEndBox.Adjustment.Upper = ImageA.SizeZ;
158 cEndBox.Adjustment.Upper = ImageA.SizeC;
159 tEndBox.Adjustment.Upper = ImageA.SizeT;
161 zStartBox.Adjustment.Upper = ImageA.SizeZ-1;
162 cStartBox.Adjustment.Upper = ImageA.SizeC-1;
163 tStartBox.Adjustment.Upper = ImageA.SizeT-1;
165 zEndBox.Value = ImageA.SizeZ;
166 cEndBox.Value = ImageA.SizeC;
167 tEndBox.Value = ImageA.SizeT;
177 private void MergeBut_Clicked(
object sender, EventArgs e)
179 if (stackABox.Active == -1)
181 if (stackBBox.Active == -1)
183 BioImage b = BioImage.MergeChannels(ImageA, ImageB);
184 App.tabsView.AddTab(b);
192 private void MergeTBut_Clicked(
object sender, EventArgs e)
195 App.tabsView.AddTab(BioImage.MergeT(ImageA));
202 private void MergeZBut_Clicked(
object sender, EventArgs e)
205 App.tabsView.AddTab(BioImage.MergeZ(ImageA));
215 private void SubstackBut_Clicked(
object sender, EventArgs e)
217 if (stackABox.Active == -1)
219 BioImage b = BioImage.Substack(ImageA, ImageA.series, (
int)zStartBox.Value, (
int)zEndBox.Value, (
int)cStartBox.Value, (
int)cEndBox.Value, (
int)tStartBox.Value, (
int)tEndBox.Value);
221 App.tabsView.AddTab(b);
231 private void SplitChannelsBut_Clicked(
object sender, EventArgs e)
233 if (stackABox.Active == -1)
235 BioImage[] bms = ImageA.SplitChannels();
236 for (
int i = 0; i < bms.Length; i++)
238 App.tabsView.AddTab(bms[i]);
246 var imgs =
new ListStore(typeof(
string));
248 foreach (BioImage b
in Images.images)
250 imgs.AppendValues(b.Filename);
253 stackABox.Model = imgs;
254 stackBBox.Model = imgs;
255 zEndBox.Adjustment.Upper = ImageA.SizeZ;
256 cEndBox.Adjustment.Upper = ImageA.SizeC;
257 tEndBox.Adjustment.Upper = ImageA.SizeT;
259 public BioImage ImageA
263 if (stackABox.Active != -1)
264 return Images.images[stackABox.Active];
266 return Images.images[0];
269 public BioImage ImageB
273 if (stackBBox.Active != -1)
274 return Images.images[stackBBox.Active];
276 return Images.images[0];
280 private void StackTools_Activated(
object sender, EventArgs e)
285 private void setMaxToolStripMenuItem_Click(
object sender, EventArgs e)
288 zEndBox.Value = ImageA.SizeZ;
291 private void setMaxCToolStripMenuItem_Click(
object sender, EventArgs e)
294 cEndBox.Value = ImageA.SizeC;
297 private void setMaxTToolStripMenuItem_Click(
object sender, EventArgs e)
300 tEndBox.Value = ImageA.SizeT;