3 public partial class NodeView : Form
33 node =
new TreeNode();
35 node.Text = obj.ToString();
36 node.ForeColor =
Color.White;
40 get {
return node.Text; }
41 set { node.Text = value; }
47 InitializeComponent();
49 Console.WriteLine(
"Reading start up folders.");
50 string st = System.IO.Path.GetDirectoryName(Environment.ProcessPath);
51 System.IO.Directory.CreateDirectory(st +
"/Scripts");
52 System.IO.Directory.CreateDirectory(st +
"/Functions");
53 System.IO.Directory.CreateDirectory(st +
"/Tools");
57 Shown += async (sender, e) =>
59 foreach (
string file
in args)
60 await OpenImageAsync(file);
65 private static void Init()
82 treeView.Nodes.Clear();
83 TreeNode images =
new TreeNode();
84 images.Text =
"BioImages";
85 images.ForeColor =
Color.White;
86 foreach (BioImage item
in Images.images)
92 implanes.Text =
"Planes";
94 foreach (Bitmap buf
in item.Buffers)
97 plane.Text = buf.ID +
", " + buf.Coordinate.ToString();
99 implanes.node.Nodes.Add(plane.
node);
101 tree.node.Nodes.Add(implanes.node);
106 foreach (ROI an
in item.Annotations)
109 rois.node.Nodes.Add(roi.
node);
111 tree.node.Nodes.Add(rois.node);
112 images.Nodes.Add(tree.node);
114 treeView.Nodes.Add(images);
124 if (Images.images.Count != treeView.Nodes[0].Nodes.Count)
130 TreeNode images = treeView.Nodes[0];
131 foreach (TreeNode item
in images.Nodes)
135 BioImage im = (BioImage)node.
Object;
137 TreeNode rois = node.
node.Nodes[1];
138 if (im.Annotations.Count != rois.Nodes.Count)
142 foreach (ROI an
in im.Annotations)
145 rois.Nodes.Add(roi.
node);
149 for (
int i = 0; i < im.Annotations.Count; i++)
151 TreeNode roi = rois.Nodes[i];
154 roi.Text = an.ToString();
171 private void MainForm_Activated(
object sender, EventArgs e)
182 private async
void openToolStripMenuItem_Click(
object sender, EventArgs e)
184 if (openFilesDialog.ShowDialog() != DialogResult.OK)
186 foreach (
string file
in openFilesDialog.FileNames)
187 await OpenImageAsync(file);
190 private async Task OpenImageAsync(
string file)
194 BioImage image = await BioImage.OpenFile(file);
196 throw new InvalidOperationException(
"The image loader returned no image.");
197 if (App.tabsView ==
null || App.tabsView.IsDisposed)
198 App.tabsView =
new TabsView();
199 App.tabsView.AddTab(image);
204 MessageBox.Show(
this, $
"Could not open '{file}'.\n{ex.Message}",
205 "Open Image", MessageBoxButtons.OK, MessageBoxIcon.Error);
212 private void refreshToolStripMenuItem_Click_1(
object sender, EventArgs e)
221 private void newToolStripMenuItem_Click(
object sender, EventArgs e)
223 TabsView iv =
new TabsView();
231 private void treeView_AfterSelect(
object sender, TreeViewEventArgs e)
240 private void scriptRunnerToolStripMenuItem_Click_1(
object sender, EventArgs e)
242 App.runner.WindowState = FormWindowState.Normal;
252 private void deleteToolStripMenuItem_Click(
object sender, EventArgs e)
254 if (treeView.SelectedNode ==
null)
256 Node node = (Node)treeView.SelectedNode.Tag;
259 if (node.Type == Node.DataType.roi)
261 ROI an = (ROI)node.Object;
262 Node nod = (Node)treeView.SelectedNode.Parent.Tag;
263 BioImage im = (BioImage)nod.Object;
264 im.Annotations.Remove(an);
266 if (node.Type == Node.DataType.image)
268 BioImage im = (BioImage)node.Object;
269 Images.RemoveImage(im);
282 private void setTextToolStripMenuItem_Click(
object sender, EventArgs e)
284 Node node = (Node)treeView.SelectedNode.Tag;
285 if (node.Type == Node.DataType.roi)
287 ROI an = (ROI)node.Object;
288 Node nod = (Node)treeView.SelectedNode.Parent.Tag;
289 BioImage im = (BioImage)nod.Object;
290 TextInput input =
new TextInput(an.Text);
291 if (input.ShowDialog() != DialogResult.OK)
293 an.Text = input.TextValue;
294 an.family = input.font.FontFamily.ToString();
295 an.strokeColor = AForge.Color.FromArgb(input.color.A, input.color.R, input.color.G, input.color.B);
307 private void setIDToolStripMenuItem_Click(
object sender, EventArgs e)
309 Node node = (Node)treeView.SelectedNode.Tag;
310 if (node.Type == Node.DataType.roi)
312 ROI an = (ROI)node.Object;
313 Node nod = (Node)treeView.SelectedNode.Parent.Tag;
314 BioImage im = (BioImage)nod.Object;
315 TextInput input =
new TextInput(an.id);
316 if (input.ShowDialog() != DialogResult.OK)
318 an.id = input.TextValue;
328 private void aboutToolStripMenuItem_Click(
object sender, EventArgs e)
330 About about =
new About();
339 private void newTabsViewToolStripMenuItem_Click(
object sender, EventArgs e)
341 TabsView v =
new TabsView();
350 private void treeView_DoubleClick(
object sender, EventArgs e)
352 if (treeView.SelectedNode?.Tag is not Node node)
356 TreeNode imageNode = treeView.SelectedNode;
357 while (imageNode !=
null &&
358 (imageNode.Tag is not Node owner || owner.Type != Node.DataType.image))
359 imageNode = imageNode.Parent;
360 if (imageNode?.Tag is not Node imageEntry || imageEntry.Object is not BioImage image)
365 if (App.tabsView ==
null || App.tabsView.IsDisposed)
366 App.tabsView =
new TabsView();
367 TabsView tabs = App.tabsView;
368 ImageView viewer =
null;
369 for (
int i = 0; i < tabs.GetViewerCount(); i++)
371 ImageView candidate = tabs.GetViewer(i);
372 int index = candidate.Images.IndexOf(image);
376 App.viewer = candidate;
377 candidate.SelectedIndex = index;
384 viewer = tabs.Viewer;
387 if (tabs.WindowState == FormWindowState.Minimized)
388 tabs.WindowState = FormWindowState.Normal;
391 setIDToolStripMenuItem.Visible = node.Type == Node.DataType.roi;
392 setTextToolStripMenuItem.Visible = node.Type == Node.DataType.roi;
393 if (node.Object is Bitmap buf)
394 viewer.SetCoordinate(buf.Coordinate.Z, buf.Coordinate.C, buf.Coordinate.T);
395 else if (node.Object is ROI roi)
396 viewer.SetCoordinate(roi.coord.Z, roi.coord.C, roi.coord.T);
401 MessageBox.Show(
this, $
"Could not display '{image.Filename}'.\n{ex.Message}",
402 "Open Image", MessageBoxButtons.OK, MessageBoxIcon.Error);
System.Drawing.Color Color
System.Windows.Forms.Application Application
static void Initialize(bool requireImageJ=false)
Initialize() is a function that initializes the BioImage Suite Web viewer.
Node(object data, DataType typ)
void Exit()
It closes the current form, exits the application, and exits the thread.