BioImager  5.0.0
A .NET microscopy imaging application based on Bio library. Supports various microscopes by using imported libraries & GUI automation. Supports XInput game controllers to move stage, take images, run ImageJ macros on images or Bio C# scripts.
Loading...
Searching...
No Matches
TabsView.cs
Go to the documentation of this file.
1using AForge;
3using BioLib;
4using javax.swing.text;
5using OpenSlideGTK;
6using System;
7using System.Collections.Generic;
8using System.Diagnostics;
9using System.Drawing;
10using System.IO;
11using System.Threading;
12using System.Windows.Forms;
13using ZarrNET.Core;
14using ZarrNET.Core.Helpers;
15using BioImage = BioLib.BioImage;
16using RotateFlipType = AForge.RotateFlipType;
17using ZCT = AForge.ZCT;
18namespace BioImager
19{
20 public partial class TabsView : Form
21 {
22 public static bool init = false;
23 public Filter filters = null;
25 public static System.Drawing.Graphics graphics = null;
26 /* Returning the ImageView object that is currently selected in the tabControl. */
28 {
29 get
30 {
31 if (tabControl.TabPages.Count == 0)
32 return null;
33 if (tabControl.SelectedIndex == -1)
34 return null;
35 if (tabControl.SelectedTab.Controls.Count == 0)
36 return null;
37 return (ImageView)tabControl.SelectedTab.Controls[0];
38 }
39 }
40 private List<ImageView> viewers = new List<ImageView>();
41 public ImageView GetViewer(int i)
42 {
43 return viewers[i];
44 }
45 public ImageView? GetViewer(string name)
46 {
47 for (int v = 0; v < viewers.Count; v++)
48 {
49 for (int i = 0; i < viewers.Count; i++)
50 {
51 if (viewers[v].Images[i].Filename == name)
52 return viewers[v];
53 }
54 }
55 return null;
56 }
57 public int GetViewerCount()
58 {
59 return viewers.Count;
60 }
61 public void RemoveViewer(ImageView v)
62 {
63 viewers.Remove(v);
64 }
65 public void AddViewer(ImageView v)
66 {
67 viewers.Add(v);
68 }
69 public static BioImage SelectedImage
70 {
71 get
72 {
73 return App.tabsView.Image;
74 }
75 }
77 {
78 get
79 {
80 return App.tabsView.Viewer;
81 }
82 }
83 public TabsView(BioImage arg)
84 {
85 InitializeComponent();
86 LoadProperties();
87 ResizeView();
88 Init();
89 }
90 public TabsView()
91 {
92 InitializeComponent();
93 LoadProperties();
94 ResizeView();
95 Init();
96 }
97 /* A constructor for a class called TabsView. It is initializing the component and loading
98 properties. It is also initializing the class. */
99 public TabsView(string[] arg)
100 {
101 InitializeComponent();
102 LoadProperties();
103 Init();
104 KeyPreview = true;
105 if (arg.Length == 0)
106 return;
107 else
108 {
109 for (int i = 0; i < arg.Length; i++)
110 {
111 if (arg[i].EndsWith(".cs"))
112 {
113 App.runner.RunScriptFile(arg[0]);
114 return;
115 }
116 if (arg[i].EndsWith(".ijm"))
117 {
118 ImageJ.RunMacro(arg[i], "");
119 return;
120 }
121 else
122 {
123 BioImage.OpenFile(arg[i], true);
124 }
125 }
126 }
127 }
134 public void AddTab(BioImage b)
135 {
136 if (b == null)
137 return;
138 if (HasTab(b))
139 return;
140 if (tabControl.IsHandleCreated)
141 tabControl.Invoke((MethodInvoker)delegate
142 {
143 if (HasTab(b))
144 return;
145 AddTabCore(b);
146 AddAssociatedImageTabs(b);
147 });
148 }
149 public void RemoveTab(BioImage b)
150 {
151 int i = 0;
152 foreach (ImageView t in tabControl.TabPages)
153 {
154 if (t.Name == b.filename)
155 {
156 Images.RemoveImage(b);
157 return;
158 }
159 i++;
160 }
161 }
162 public bool HasTab(string name)
163 {
164 foreach (TabPage item in tabControl.TabPages)
165 {
166 if (item.Text == name)
167 {
168 return true;
169 }
170 }
171 return false;
172 }
173 public bool HasTab(BioImage image)
174 {
175 if (image == null)
176 return false;
177 foreach (TabPage tabPage in tabControl.TabPages)
178 {
179 if (tabPage.Controls.Count == 0 || tabPage.Controls[0] is not ImageView view)
180 continue;
181 foreach (BioImage tabImage in view.Images)
182 {
183 if (tabImage == null)
184 continue;
185 if (ReferenceEquals(tabImage, image))
186 return true;
187 if (!string.IsNullOrEmpty(tabImage.ID) && !string.IsNullOrEmpty(image.ID) && tabImage.ID == image.ID)
188 return true;
189 if (!string.IsNullOrEmpty(tabImage.Filename) && !string.IsNullOrEmpty(image.Filename) && tabImage.Filename == image.Filename)
190 return true;
191 }
192 }
193 return false;
194 }
195 private void AddTabCore(BioImage b)
196 {
197 if (b == null)
198 return;
199 if (b.filename.Contains("/") || b.filename.Contains("\\"))
200 b.filename = Path.GetFileName(b.filename);
201 TabPage t = new TabPage(b.filename);
202 ImageView v = new ImageView(b);
203 v.ShowStage = false;
204 v.Dock = DockStyle.Fill;
205 t.Controls.Add(v);
206 tabControl.TabPages.Add(t);
207 tabControl.SelectedIndex = tabControl.TabCount - 1;
208 ResizeView();
209 }
210 private static BioImage CreateAssociatedImageTab(BioImage source, string name, AssociatedImage image)
211 {
212 if (source == null || image == null)
213 return null;
214
215 string baseName = Path.GetFileNameWithoutExtension(source.Filename);
216 if (string.IsNullOrEmpty(baseName))
217 baseName = Path.GetFileNameWithoutExtension(source.ID);
218 if (string.IsNullOrEmpty(baseName))
219 baseName = "associated";
220
221 string suffix = name.Trim();
222 if (string.IsNullOrEmpty(suffix))
223 suffix = "associated";
224
225 BioImage bi = new BioImage($"{source.ID}::{suffix}");
226 bi.Filename = $"{baseName}-{suffix}.png";
227 bi.file = source.file;
228 bi.Resolutions.Add(new Resolution(
229 (int)image.Dimensions.Width,
230 (int)image.Dimensions.Height,
231 AForge.PixelFormat.Format32bppArgb,
232 1,
233 1,
234 1,
235 0,
236 0,
237 0));
238 bi.Buffers.Add(new AForge.Bitmap(
239 "",
240 (int)image.Dimensions.Width,
241 (int)image.Dimensions.Height,
242 AForge.PixelFormat.Format32bppArgb,
243 image.Data,
244 new ZCT(),
245 0,
246 null,
247 littleEndian: true,
248 interleaved: true));
249 bi.Channels.Add(new Channel(0, 8, 4));
250 bi.UpdateCoords(1, 1, 1);
251 bi.Volume = new VolumeD(new Point3D(0, 0, 0), new Point3D(
252 bi.PhysicalSizeX * bi.SizeX,
253 bi.PhysicalSizeY * bi.SizeY,
254 bi.PhysicalSizeZ * bi.SizeZ));
255 bi.Coordinate = new ZCT(0, 0, 0);
256 return bi;
257 }
258 private void AddAssociatedImageTabs(BioImage source)
259 {
260 if (source?.OpenSlideBase?.SlideImage == null)
261 return;
262
263 foreach (var entry in source.OpenSlideBase.SlideImage.GetAssociatedImages())
264 {
265 string name = entry.Key ?? string.Empty;
266 if (!name.Contains("label", StringComparison.OrdinalIgnoreCase) &&
267 !name.Contains("macro", StringComparison.OrdinalIgnoreCase))
268 {
269 continue;
270 }
271
272 BioImage associated = CreateAssociatedImageTab(source, name, entry.Value);
273 if (associated != null && !HasTab(associated))
274 AddTabCore(associated);
275 }
276 }
277 private void Init()
278 {
279 TabPage t = new TabPage("Viewer");
280 ImageView v = new ImageView();
281 v.ShowStage = true;
282 v.Dock = DockStyle.Fill;
283 t.Controls.Add(v);
284 tabControl.TabPages.Add(t);
285 filters = new Filter();
286 App.tabsView = this;
288 string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
289 foreach (char c in a)
290 {
291 ToolStripMenuItem me = new ToolStripMenuItem(c.ToString());
292 foreach (ImageJ.Macro.Command command in ImageJ.Macro.Commands.Values)
293 {
294 if (command.Name.StartsWith(c))
295 {
296 ToolStripMenuItem menuItem = new ToolStripMenuItem(command.Name.ToString());
297 menuItem.Click += MenuItem_Click;
298 me.DropDownItems.Add(menuItem);
299 }
300 }
301 commandToolStripMenuItem.DropDownItems.Add(me);
302 }
303 foreach (Scripting.Script s in Scripting.Scripts.Values)
304 {
305 ToolStripMenuItem mi = new ToolStripMenuItem(s.name);
306 mi.Click += Mi_Click;
307 runToolStripMenuItem.DropDownItems.Add(mi);
308 }
309 foreach (ImageJ.Macro.Command c in ImageJ.Macros)
310 {
311 ToolStripMenuItem mi = new ToolStripMenuItem(c.Name);
312 mi.Click += Mi_Click;
313 runToolStripMenuItem.DropDownItems.Add(mi);
314 }
315 ML.ML.Initialize();
316 init = true;
317 }
318
319 private void Mi_Click(object? sender, EventArgs e)
320 {
321 ToolStripMenuItem m = (ToolStripMenuItem)sender;
322 if (m.Text.EndsWith(".ijm") || m.Text.EndsWith(".txt") && !m.Text.EndsWith(".cs"))
323 {
324 string ma = File.ReadAllText(m.Text);
326 }
327 else
328 Scripting.RunByName(m.Text);
329 }
330
331 private void MenuItem_Click(object? sender, EventArgs e)
332 {
333 if (ImageView.SelectedImage == null) return;
334 ToolStripMenuItem m = (ToolStripMenuItem)sender;
336 ToolStripMenuItem mi = new ToolStripMenuItem(m.Text);
337 mi.Click += MenuItem_Click;
338 bool con = false;
339 foreach (ToolStripMenuItem item in recentToolStripMenuItem.DropDownItems)
340 {
341 if (item.Text == m.Text)
342 con = true;
343 }
344 if (!con)
345 recentToolStripMenuItem.DropDownItems.Add(mi);
346 }
347
352 public void ResizeView()
353 {
354 if (Image == null)
355 return;
356 System.Drawing.Size s;
357 if (SelectedImage.isPyramidal)
358 s = new System.Drawing.Size(ImageView.SelectedImage.Resolutions[Viewer.Level].SizeX + 42, ImageView.SelectedImage.Resolutions[Viewer.Level].SizeY + 206);
359 else
360 s = new System.Drawing.Size(ImageView.SelectedImage.SizeX + 20, ImageView.SelectedImage.SizeY + 180);
361 if (s.Width > Screen.PrimaryScreen.Bounds.Width || s.Height > Screen.PrimaryScreen.Bounds.Height)
362 {
363 this.WindowState = FormWindowState.Maximized;
365 }
366 else
367 {
368 Size = s;
370 }
371 }
372
373 /* A property that returns the selected image from the image viewer. */
375 {
376 get
377 {
378 if (Viewer == null)
379 return null;
380 if (ImageView.SelectedImage == null)
381 return null;
383 }
384 }
385
386 /* A property that returns the number of tabs in the tab control. */
387 public int TabCount
388 {
389 get
390 {
391 return tabControl.TabPages.Count;
392 }
393 }
394
399 public void OpenInNewProcess(string file)
400 {
401 Process p = new Process();
402 p.StartInfo.FileName = Application.ExecutablePath;
403 p.StartInfo.Arguments = file;
404 p.Start();
405 }
406
415 private async void openToolStripMenuItem_Click(object sender, EventArgs e)
416 {
417 if (openFilesDialog.ShowDialog() != DialogResult.OK)
418 return;
419 foreach (string item in openFilesDialog.FileNames)
420 {
421 StartProgress("Opening selected image.", "Opening");
422 BioImage im = await BioImage.OpenFile(item);
423 StopProgress();
424 if (im == null)
425 return;
426 AddTab(im);
427 if (!Images.images.Contains(im))
428 Images.images.Add(im);
429 if (!App.recent.Contains(im.ID))
430 App.recent.Add(im.ID);
431 }
432 foreach (string item in App.recent)
433 {
434 openRecentToolStripMenuItem.DropDownItems.Add(item, null, ItemClicked);
435 }
436 }
437
439 private void SaveProperties()
440 {
441 string s = "";
442 for (int i = 0; i < App.recent.Count; i++)
443 {
444 s += "$" + App.recent[i];
445 }
446 Properties.Settings.Default["Recent"] = s;
447 Properties.Settings.Default.Save();
448 }
449
451 private void LoadProperties()
452 {
453 App.recent.Clear();
454 string s = (string)Properties.Settings.Default["Recent"];
455 string[] sts = s.Split('$');
456 foreach (string item in sts)
457 {
458 if (item != "")
459 App.recent.Add(item);
460 }
461 }
462
463 private static bool done = false;
464 private static Progress progress = new Progress("", "");
465 private static string title;
466 private static void ProgressUpdate()
467 {
468 do
469 {
470 progress.Text = title;
471 progress.Status = BioImage.Status;
472 progress.ProgressValue = BioImage.Progress;
473 Thread.Sleep(250);
474 } while (!done);
475 }
476 private static void StartProgress(string titl, string status)
477 {
478 done = false;
479 title = titl;
480 BioImage.Progress = 0;
481 progress.Status = status;
482 progress.Text = title;
483 if (BioImage.Status == "" || BioImage.Status == null)
484 progress.Status = status;
485 else
486 progress.Status = BioImage.Status;
487 progress.ProgressValue = BioImage.Progress;
488 progress.Show();
489 Application.DoEvents();
490 Thread th = new Thread(ProgressUpdate);
491 th.Start();
492 }
493 private static void StopProgress()
494 {
495 done = true;
496 progress.Hide();
497 }
498
503 private void closeToolStripMenuItem_Click(object sender, EventArgs e)
504 {
505 if (this.Viewer != null)
506 {
507 Images.RemoveImage(SelectedImage);
508 }
509 }
510
517 private void saveToolStripMenuItem_Click(object sender, EventArgs e)
518 {
519 if (Image == null)
520 return;
521 saveTiffFileDialog.FileName = Path.GetFileNameWithoutExtension(Image.Filename);
522 if (saveTiffFileDialog.ShowDialog() != DialogResult.OK)
523 return;
524 string[] sts = new string[1];
525 sts[0] = ImageView.SelectedImage.ID;
526 StartProgress("Saving selected Tiff.", "Saving");
527 BioImage.SaveSeries(sts, saveTiffFileDialog.FileName);
528 StopProgress();
529 }
530
536 private void ImageViewer_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
537 {
538 if (e.KeyCode == Keys.S && e.Control)
539 {
540 saveToolStripMenuItem.PerformClick();
541 }
542 else
543 if (e.KeyCode == Keys.O && e.Control)
544 {
545 openToolStripMenuItem.PerformClick();
546 }
547 }
548
553 private void toolboxToolStripMenuItem_Click(object sender, EventArgs e)
554 {
555 App.tools.Show();
556 }
557
565 private void exportCSVToolStripMenuItem_Click(object sender, EventArgs e)
566 {
567 if (saveCSVFileDialog.ShowDialog() != DialogResult.OK)
568 return;
569 BioImage.ExportROIsCSV(saveCSVFileDialog.FileName, ImageView.SelectedImage.Annotations);
570 }
571
579 private void importCSVToolStripMenuItem_Click(object sender, EventArgs e)
580 {
581 if (openCSVFileDialog.ShowDialog() != DialogResult.OK)
582 return;
583 ImageView.SelectedImage.Annotations.AddRange(BioImage.ImportROIsCSV(openCSVFileDialog.FileName));
584 }
585
592 private void exportROIsOfFolderOfImagesToolStripMenuItem_Click(object sender, EventArgs e)
593 {
594 if (folderBrowserDialog.ShowDialog() != DialogResult.OK)
595 return;
596 saveOMEFileDialog.InitialDirectory = folderBrowserDialog.SelectedPath;
597 if (saveCSVFileDialog.ShowDialog() != DialogResult.OK)
598 return;
599 string f = Path.GetFileName(saveCSVFileDialog.FileName);
600
601 BioImage.ExportROIFolder(folderBrowserDialog.SelectedPath, f);
602 }
603
608 private void rOIManagerToolStripMenuItem_Click(object sender, EventArgs e)
609 {
610 App.manager.Show();
611 }
612
617 private void ImageViewer_Activated(object sender, EventArgs e)
618 {
619 App.tabsView = this;
620 //App.Image = SelectedImage;
621 }
622
630 private void channelsToolToolStripMenuItem_Click(object sender, EventArgs e)
631 {
632 if (ImageView.SelectedImage == null)
633 return;
634 if (App.channelsTool == null)
635 App.channelsTool = new ChannelsTool(App.Channels);
636 App.channelsTool.Show();
637 }
638
646 private void rGBToolStripMenuItem_Click(object sender, EventArgs e)
647 {
648 if (Viewer == null)
649 return;
650 Viewer.Mode = ImageView.ViewMode.RGBImage;
651 filteredToolStripMenuItem.Checked = false;
652 rawToolStripMenuItem.Checked = false;
653 emissionToolStripMenuItem.Checked = false;
655 }
656
664 private void filteredToolStripMenuItem_Click(object sender, EventArgs e)
665 {
666 if (Viewer == null)
667 return;
668 Viewer.Mode = ImageView.ViewMode.Filtered;
669 rGBToolStripMenuItem.Checked = false;
670 rawToolStripMenuItem.Checked = false;
671 emissionToolStripMenuItem.Checked = false;
673 }
674
682 private void rawToolStripMenuItem_Click(object sender, EventArgs e)
683 {
684 if (Viewer == null)
685 return;
686 Viewer.Mode = ImageView.ViewMode.Raw;
687 rGBToolStripMenuItem.Checked = false;
688 filteredToolStripMenuItem.Checked = false;
689 emissionToolStripMenuItem.Checked = false;
691 }
692
700 private void autoThresholdToolStripMenuItem_Click(object sender, EventArgs e)
701 {
702 if (Viewer == null)
703 return;
704 BioImage.AutoThreshold(ImageView.SelectedImage, true);
705 if (ImageView.SelectedImage.bitsPerPixel > 8)
706 ImageView.SelectedImage.StackThreshold(true);
707 else
708 ImageView.SelectedImage.StackThreshold(false);
709 }
710
711
716 {
717 if (v == ImageView.ViewMode.RGBImage)
718 rGBToolStripMenuItem.Checked = true;
719 if (v == ImageView.ViewMode.Filtered)
720 filteredToolStripMenuItem.Checked = true;
721 if (v == ImageView.ViewMode.Raw)
722 rawToolStripMenuItem.Checked = true;
723 }
724
729 private void scriptRunnerToolStripMenuItem_Click(object sender, EventArgs e)
730 {
731 App.runner.WindowState = FormWindowState.Normal;
732 App.runner.Show();
733 }
734
739 private void stackToolsToolStripMenuItem_Click(object sender, EventArgs e)
740 {
741 App.stackTools.Show();
742 }
743
748 private void scriptRecorderToolStripMenuItem_Click(object sender, EventArgs e)
749 {
750 Recorder.recorder.WindowState = FormWindowState.Normal;
751 Recorder.recorder.Show();
752 }
753
760 private void saveOMEToolStripMenuItem_Click(object sender, EventArgs e)
761 {
762 if (Image == null)
763 return;
764 saveOMEFileDialog.FileName = Path.GetFileNameWithoutExtension(ImageView.SelectedImage.Filename);
765 if (saveOMEFileDialog.ShowDialog() != DialogResult.OK)
766 return;
767 foreach (string file in saveOMEFileDialog.FileNames)
768 {
769 StartProgress("Saving selected OME.", "Saving OME");
770 BioImage.SaveOME(file, Image.ID);
771 StopProgress();
772 }
773 }
774
775 private void copyToClipboardToolStripMenuItem_Click(object sender, EventArgs e)
776 {
777
778 }
779
784 private void setToolToolStripMenuItem_Click(object sender, EventArgs e)
785 {
786 SetTool tool = new SetTool();
787 tool.Show();
788 }
789
790 private void timer_Tick(object sender, EventArgs e)
791 {
792 //Here we update the tabs based on images in the table.
793
794 }
795
796 private void filtersToolStripMenuItem_Click_1(object sender, EventArgs e)
797 {
798 }
799
804 private void to8BitToolStripMenuItem_Click(object sender, EventArgs e)
805 {
806 Image.To8Bit();
807 }
808
814 private void to16BitToolStripMenuItem_Click(object sender, EventArgs e)
815 {
816 Image.To16Bit();
817 }
818
823 private void filtersToolStripMenuItem_Click(object sender, EventArgs e)
824 {
825 filters = new Filter();
826 filters.Show();
827 }
828
834 private void bit8ToolStripMenuItem_Click(object sender, EventArgs e)
835 {
836 Image.To8Bit();
837 Viewer.InitGUI();
839 }
840
846 private void bit16ToolStripMenuItem_Click(object sender, EventArgs e)
847 {
848 Image.To16Bit();
849 Viewer.InitGUI();
851 }
852
857 private void to24BitToolStripMenuItem_Click(object sender, EventArgs e)
858 {
859 Image.To24Bit();
860 //We update the viewer gui since there are less planes now.
861 Viewer.InitGUI();
863 }
864
869 private void to48BitToolStripMenuItem_Click(object sender, EventArgs e)
870 {
871 Image.To48Bit();
872 //We update the viewer gui since there are less planes now.
873 Viewer.InitGUI();
875 }
876
881 private void to32BitToolStripMenuItem_Click(object sender, EventArgs e)
882 {
883 Image.To32Bit();
884 Viewer.InitGUI();
886 }
887
895 private void toWindowToolStripMenuItem_Click(object sender, EventArgs e)
896 {
897 if (tabControl.SelectedIndex == -1)
898 return;
900 ImageWindow vi = new ImageWindow(im);
901 vi.Show();
902 }
903
910 private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
911 {
912 if (tabControl.SelectedIndex == -1)
913 return;
914 //We update the view status based on tab.
915 if (Viewer.Mode == ImageView.ViewMode.Raw)
916 rawToolStripMenuItem.Checked = true;
917 else
918 rawToolStripMenuItem.Checked = false;
919 if (Viewer.Mode == ImageView.ViewMode.Filtered)
920 filteredToolStripMenuItem.Checked = true;
921 else
922 filteredToolStripMenuItem.Checked = false;
923 if (Viewer.Mode == ImageView.ViewMode.RGBImage)
924 rGBToolStripMenuItem.Checked = true;
925 else
926 rGBToolStripMenuItem.Checked = false;
927 //We update the active Viewer.
928 App.viewer = Viewer;
929 Viewer.SelectedIndex = 0;
930 }
931
939 private void closeToolStripMenuItem_Click_1(object sender, EventArgs e)
940 {
941 if (tabControl.SelectedIndex == -1)
942 return;
943 ImageView v = (ImageView)tabControl.SelectedTab.Controls[0];
944 tabControl.TabPages.RemoveAt(tabControl.SelectedIndex);
945 v.Dispose();
946 foreach (BioImage item in v.Images)
947 {
948 Images.RemoveImage(item);
949 item.Dispose();
950 }
951 GC.Collect();
952 }
953
958 private void saveAllToolStripMenuItem_Click(object sender, EventArgs e)
959 {
960
961 List<string> sts = new List<string>();
962 foreach (BioImage item in Images.images)
963 {
964 StartProgress("Save Selected Tiff", "Saving");
965 BioImage.SaveFile(Image.ID, Image.ID);
966 StopProgress();
967 }
968 }
969
974 private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
975 {
976 About about = new About();
977 about.Show();
978 }
979
984 private void scriptRunnerToolStripMenuItem_Click_1(object sender, EventArgs e)
985 {
986 App.runner.Show();
987 }
988
993 private void scriptRecorderToolStripMenuItem_Click_1(object sender, EventArgs e)
994 {
995 App.recorder.Show();
996 }
997
1004 private void openOMEToolStripMenuItem_Click_1(object sender, EventArgs e)
1005 {
1006 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1007 return;
1008 foreach (string item in openFilesDialog.FileNames)
1009 {
1010 StartProgress("Opening selected OME", "Opening OME");
1011 BioImage im = BioImage.OpenOME(item, 0, false, false, false, 0, 0, 0, 0);
1012 if (im == null)
1013 return;
1014 AddTab(im);
1015 if (!Images.images.Contains(im))
1016 Images.images.Add(im);
1017 if (!App.recent.Contains(im.ID))
1018 App.recent.Add(im.ID);
1019 }
1020 foreach (string item in App.recent)
1021 {
1022 openRecentToolStripMenuItem.DropDownItems.Add(item, null, ItemClicked);
1023 }
1024 }
1025
1030 private void newTabViewToolStripMenuItem_Click(object sender, EventArgs e)
1031 {
1032 Process.Start(Application.ExecutablePath);
1033 }
1034
1039 private void nodeViewToolStripMenuItem_Click(object sender, EventArgs e)
1040 {
1041 App.nodeView.Show();
1042 App.nodeView.ShowInTaskbar = true;
1043 }
1050 private void saveToolStripMenuItem1_Click(object sender, EventArgs e)
1051 {
1052 if (saveTiffFileDialog.ShowDialog() == DialogResult.OK)
1053 {
1054 StartProgress("Saving selected Tiff", "Saving");
1055 BioImage.SaveFile(ImageView.SelectedImage.ID, saveTiffFileDialog.FileName);
1056 StopProgress();
1057 }
1058 }
1059
1065 private void saveOMEToolStripMenuItem1_Click(object sender, EventArgs e)
1066 {
1067 if (saveOMEFileDialog.ShowDialog() == DialogResult.OK)
1068 BioImage.SaveOME(ImageView.SelectedImage.ID, saveOMEFileDialog.FileName);
1069 }
1074 private void openRecentToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
1075 {
1076 openRecentToolStripMenuItem.DropDownItems.Clear();
1077 foreach (string item in App.recent)
1078 {
1079 openRecentToolStripMenuItem.DropDownItems.Add(item, null, ItemClicked);
1080 }
1081 }
1088 private void ItemClicked(object sender, EventArgs e)
1089 {
1090 ToolStripMenuItem ts = (ToolStripMenuItem)sender;
1091 if (!BioImage.isOME(ts.Text))
1092 {
1093 BioImage[] bs = BioImage.OpenSeries(ts.Text, true);
1094 for (int i = 0; i < bs.Length; i++)
1095 {
1096 if (i == 0)
1097 AddTab(bs[i]);
1098 else
1099 Viewer.AddImage(bs[i]);
1100 }
1101 }
1102 else
1103 {
1104 BioImage[] bs = BioImage.OpenOMESeries(ts.Text, true, true);
1105 }
1107 SaveProperties();
1108 }
1116 private void TabsView_KeyDown(object sender, KeyEventArgs e)
1117 {
1118 if (Viewer == null)
1119 return;
1120 double moveAmount = 1500 * (1 / App.viewer.Scale.Width);
1121 if (e.KeyCode == Keys.C && e.Control)
1122 {
1124 return;
1125 }
1126 if (e.KeyCode == Keys.V && e.Control)
1127 {
1129 return;
1130 }
1131 if (e.KeyCode == Keys.Subtract || e.KeyCode == Keys.NumPad7)
1132 {
1133 App.viewer.Scale = new AForge.SizeF(App.viewer.Scale.Width - 0.1f, App.viewer.Scale.Height - 0.1f);
1134 }
1135 if (e.KeyCode == Keys.Add || e.KeyCode == Keys.NumPad9)
1136 {
1137 App.viewer.Scale = new AForge.SizeF(App.viewer.Scale.Width - 0.1f, App.viewer.Scale.Height - 0.1f);
1138 }
1139 if (e.KeyCode == Keys.W || e.KeyCode == Keys.NumPad8)
1140 {
1141 Viewer.Origin = new PointD(Viewer.Origin.X, Viewer.Origin.Y - moveAmount);
1142 }
1143 if (e.KeyCode == Keys.S || e.KeyCode == Keys.NumPad2)
1144 {
1145 Viewer.Origin = new PointD(Viewer.Origin.X, Viewer.Origin.Y + moveAmount);
1146 }
1147 if (e.KeyCode == Keys.A || e.KeyCode == Keys.NumPad4)
1148 {
1149 Viewer.Origin = new PointD(Viewer.Origin.X - moveAmount, Viewer.Origin.Y);
1150 }
1151 if (e.KeyCode == Keys.D || e.KeyCode == Keys.NumPad6)
1152 {
1153 Viewer.Origin = new PointD(Viewer.Origin.X + moveAmount, Viewer.Origin.Y);
1154 }
1155 if (e.KeyCode == Keys.Up)
1157 if (e.KeyCode == Keys.Down)
1159 if (e.KeyCode == Keys.Left)
1161 if (e.KeyCode == Keys.Right)
1165 }
1166
1172 private void duplicateToolStripMenuItem_Click(object sender, EventArgs e)
1173 {
1174 BioImage im = Image.Copy();
1175 AddTab(im);
1176 }
1177
1182 private void saveSeriesToolStripMenuItem_Click(object sender, EventArgs e)
1183 {
1184 App.seriesTool.Show();
1185 }
1186
1192 private void TabsView_FormClosing(object sender, FormClosingEventArgs e)
1193 {
1194 SaveProperties();
1195 Microscope.Close();
1196 App.imager.Close();
1197 App.stage.Close();
1198 App.nodeView.Close();
1199 Application.Exit();
1200 }
1201
1206 private void automationToolStripMenuItem_Click(object sender, EventArgs e)
1207 {
1208 App.recordings.Show();
1209 }
1210
1211 private void stageToolStripMenuItem_Click(object sender, EventArgs e)
1212 {
1213 App.stage.Show();
1214 }
1215
1222 private async void addImagesToTabToolStripMenuItem_Click(object sender, EventArgs e)
1223 {
1224 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1225 return;
1226 for (int i = 0; i < openFilesDialog.FileNames.Length; i++)
1227 {
1228 if (i == 0 && tabControl.TabPages.Count == 0)
1229 {
1230 BioImage b = await BioImage.OpenFile(openFilesDialog.FileNames[i]);
1231 }
1232 else
1233 {
1234 BioImage b = await BioImage.OpenFile(openFilesDialog.FileNames[i]);
1235 Viewer.AddImage(b);
1236 }
1237 }
1239 }
1240
1247 private void addImagesOMEToolStripMenuItem_Click(object sender, EventArgs e)
1248 {
1249 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1250 return;
1251 for (int i = 0; i < openFilesDialog.FileNames.Length; i++)
1252 {
1253 if (i == 0 && tabControl.TabPages.Count == 0)
1254 {
1255 BioImage b = BioImage.OpenOME(openFilesDialog.FileNames[i], 0, true, true, false, 0, 0, 0, 0);
1256 }
1257 else
1258 {
1259 BioImage b = BioImage.OpenOME(openFilesDialog.FileNames[i], 0, true, true, false, 0, 0, 0, 0);
1260 Viewer.AddImage(b);
1261 }
1262 }
1264 }
1265
1272 private void openSeriesToolStripMenuItem_Click(object sender, EventArgs e)
1273 {
1274 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1275 return;
1276 BioImage[] bs = BioImage.OpenOMESeries(openFilesDialog.FileName, false, true);
1277 if (bs == null)
1278 return;
1279 AddTab(bs[0]);
1280 for (int i = 1; i < bs.Length; i++)
1281 {
1282 Viewer.AddImage(bs[i]);
1283 }
1285 }
1286
1294 private void saveTabToolStripMenuItem_Click(object sender, EventArgs e)
1295 {
1296 if (saveOMEFileDialog.ShowDialog() != DialogResult.OK)
1297 return;
1298 bool convert = false;
1299 foreach (BioImage b in Viewer.Images)
1300 {
1301 if (b.isRGB)
1302 {
1303 convert = true;
1304 break;
1305 }
1306 }
1307 if (convert)
1308 {
1309 string mes;
1310 if (ImageView.SelectedImage.bitsPerPixel > 8)
1311 mes = "Saving Series as OME only supports 8 bit & 16 bit images. Convert 16 bit?";
1312 else
1313 mes = "Saving Series as OME only supports 8 bit & 16 bit images. Convert 8 bit?";
1314 if (MessageBox.Show(this, mes, "Convert to supported format?", MessageBoxButtons.OKCancel) == DialogResult.OK)
1315 {
1316 foreach (BioImage b in Viewer.Images)
1317 {
1318 if (b.bitsPerPixel > 8)
1319 b.To16Bit();
1320 else
1321 b.To8Bit();
1322 }
1323 }
1324 else
1325 return;
1326 }
1327
1328 BioImage[] sts = new BioImage[App.viewer.Images.Count];
1329 for (int i = 0; i < sts.Length; i++)
1330 {
1331 sts[i] = App.viewer.Images[i];
1332 }
1333 BioImage.SaveOMESeries(sts, saveOMEFileDialog.FileName, Properties.Settings.Default.Planes);
1334 }
1335
1343 private void saveTabTiffToolStripMenuItem_Click(object sender, EventArgs e)
1344 {
1345 if (saveTiffFileDialog.ShowDialog() != DialogResult.OK)
1346 return;
1347 string[] sts = new string[App.viewer.Images.Count];
1348 for (int i = 0; i < sts.Length; i++)
1349 {
1350 sts[i] = App.viewer.Images[i].Filename;
1351 }
1352 BioImage.SaveSeries(sts, saveTiffFileDialog.FileName);
1353 }
1354
1361 private void openSeriesToolStripMenuItem_Click_1(object sender, EventArgs e)
1362 {
1363 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1364 return;
1365 BioImage[] bms = null;
1366 foreach (string item in openFilesDialog.FileNames)
1367 {
1368 bms = BioImage.OpenSeries(openFilesDialog.FileName, false);
1369 for (int i = 0; i < bms.Length; i++)
1370 {
1371 if (i == 0)
1372 {
1373 AddTab(bms[i]);
1374 }
1375 else
1376 App.viewer.AddImage(bms[i]);
1377 }
1378 }
1380 }
1381
1388 private void TabsView_Load(object sender, EventArgs e)
1389 {
1390 if (App.viewer != null)
1392
1394 }
1395
1400 private void clearRecentToolStripMenuItem_Click(object sender, EventArgs e)
1401 {
1402 Properties.Settings.Default.Recent = "";
1403 Properties.Settings.Default.Save();
1404 openRecentToolStripMenuItem.DropDownItems.Clear();
1405 App.recent.Clear();
1406 }
1407
1415 private void rotateToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
1416 {
1417 if (ImageView.SelectedImage == null)
1418 return;
1419 string st = e.ClickedItem.Text;
1420 RotateFlipType rot = (RotateFlipType)Enum.Parse(typeof(RotateFlipType), st);
1421 ImageView.SelectedImage.RotateFlip(rot);
1424 }
1425
1432 private void rotateToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
1433 {
1434 if (rotateToolStripMenuItem.DropDownItems.Count > 0)
1435 return;
1436 string[] sts = Enum.GetNames(typeof(RotateFlipType));
1437 foreach (string item in sts)
1438 {
1439 rotateToolStripMenuItem.DropDownItems.Add(item);
1440 }
1441 }
1442
1450 private void emissionToolStripMenuItem_Click(object sender, EventArgs e)
1451 {
1452 if (Viewer == null)
1453 return;
1454 Viewer.Mode = ImageView.ViewMode.Emission;
1455 rGBToolStripMenuItem.Checked = false;
1456 rawToolStripMenuItem.Checked = false;
1457 filteredToolStripMenuItem.Checked = false;
1458 emissionToolStripMenuItem.Checked = true;
1460 }
1461
1466 private void consoleToolStripMenuItem_Click(object sender, EventArgs e)
1467 {
1468 App.console.Show();
1469 }
1470
1476 private void switchRedBlueToolStripMenuItem_Click(object sender, EventArgs e)
1477 {
1478 foreach (AForge.Bitmap bf in ImageView.SelectedImage.Buffers)
1479 {
1480 bf.SwitchRedBlue();
1481 }
1483 }
1488 private void createFunctionToolStripMenuItem_Click(object sender, EventArgs e)
1489 {
1490 FunctionForm f = new FunctionForm(new Function());
1491 f.Show();
1492 }
1498 private void DropDownItemClicked(object sender, EventArgs e)
1499 {
1500 ToolStripMenuItem ts = (ToolStripMenuItem)sender;
1501 Function.Functions[ts.Text].PerformFunction(true);
1502 }
1507 private void runToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
1508 {
1509 runToolStripMenuItem.DropDownItems.Clear();
1510 foreach (var item in Function.Functions)
1511 {
1512 runToolStripMenuItem.DropDownItems.Add(item.Value.Name, null, DropDownItemClicked);
1513 }
1514 }
1515
1520 private void reloadToolStripMenuItem_Click(object sender, EventArgs e)
1521 {
1522 ImageView.SelectedImage.Update();
1523 }
1524
1529 private void xMLToolStripMenuItem_Click(object sender, EventArgs e)
1530 {
1531 XMLView v = new XMLView(BioImage.OpenXML(ImageView.SelectedImage.file));
1532 v.Show();
1533 }
1534
1543 private void imagesToStackToolStripMenuItem_Click(object sender, EventArgs e)
1544 {
1545 OpenFileDialog fd = new OpenFileDialog();
1546 fd.Title = "Images to Stack";
1547 fd.Multiselect = true;
1548 if (fd.ShowDialog() != DialogResult.OK)
1549 return;
1550 BioImage b = BioImage.ImagesToStack(fd.FileNames, false);
1551 AddTab(b);
1552 }
1553
1560 private void importImageJROIToSelectedImageToolStripMenuItem_Click(object sender, EventArgs e)
1561 {
1562 if (openImageJROI.ShowDialog() != DialogResult.OK)
1563 return;
1564 foreach (string item in openImageJROI.FileNames)
1565 {
1566 ImageView.SelectedImage.Annotations.Add(ImageJ.RoiDecoder.open(item));
1567 }
1569 }
1570
1577 private void exportImageJROIFromSelectedImageToolStripMenuItem_Click(object sender, EventArgs e)
1578 {
1579 saveImageJROI.Title = "Set Filename for exported ROI's.";
1580 saveImageJROI.FileName = ImageView.SelectedImage.Filename;
1581 if (saveImageJROI.ShowDialog() != DialogResult.OK)
1582 return;
1583 int i = 1;
1584 foreach (ROI roi in ImageView.SelectedImage.Annotations)
1585 {
1586 string s = Path.GetDirectoryName(saveImageJROI.FileName) + "//" + Path.GetFileNameWithoutExtension(saveImageJROI.FileName) + "-" + i + ".roi";
1587 ImageJ.RoiEncoder.save(roi, s);
1588 i++;
1589 }
1591 }
1592
1597 private void lightToolToolStripMenuItem_Click(object sender, EventArgs e)
1598 {
1599 App.lightTool.Show();
1600 }
1601
1602 private void savePyramidalToolStripMenuItem_Click(object sender, EventArgs e)
1603 {
1604 if (saveOMEFileDialog.ShowDialog() != DialogResult.OK)
1605 return;
1606 BioImage.SaveOMEPyramidal(App.viewer.Images.ToArray(), saveOMEFileDialog.FileName, NetVips.Enums.ForeignTiffCompression.None, 0);
1607 }
1608
1609 private void findFocusToolStripMenuItem_Click(object sender, EventArgs e)
1610 {
1611 if (ImageView.SelectedImage == null) return;
1613 int f = BioImage.FindFocus(ImageView.SelectedImage, co.C, co.T);
1614 ZCT z = ImageView.SelectedImage.Buffers[f].Coordinate;
1615 SelectedViewer.SetCoordinate(z.Z, z.C, z.T);
1616 }
1617
1618 private void setupToolStripMenuItem_Click(object sender, EventArgs e)
1619 {
1620 App.setup.Show();
1621 }
1622
1623 private void imagerToolStripMenuItem_Click(object sender, EventArgs e)
1624 {
1625 App.imager.Show();
1626 }
1627
1628 private void stageToolToolStripMenuItem_Click(object sender, EventArgs e)
1629 {
1630 App.stage.Show();
1631 }
1632
1633 private void cellImagerToolStripMenuItem_Click_1(object sender, EventArgs e)
1634 {
1635 App.cellImager.Show();
1636 }
1637
1638 private void slideImagerToolStripMenuItem_Click(object sender, EventArgs e)
1639 {
1640 App.slideImager.Show();
1641 }
1642
1643 private void importGeoJSONROIToSelectedImageToolStripMenuItem_Click(object sender, EventArgs e)
1644 {
1645 if (openFilesDialog.ShowDialog() != DialogResult.OK)
1646 return;
1647 ImageView.SelectedImage.Annotations.AddRange(QuPath.ReadROI(openFilesDialog.FileName, ImageView.SelectedImage));
1648 }
1649
1650 private void exportGeoJSONROIFromSelectedImageToolStripMenuItem_Click(object sender, EventArgs e)
1651 {
1652 if (saveOMEFileDialog.ShowDialog() != DialogResult.OK)
1653 return;
1654 QuPath.SaveROI(saveOMEFileDialog.FileName, ImageView.SelectedImage);
1655 }
1656
1657 private async void openQuPathProjectToolStripMenuItem_Click(object sender, EventArgs e)
1658 {
1659 if (openQuPathProjDialog.ShowDialog() != DialogResult.OK)
1660 return;
1661 QuPath.Project pr = QuPath.OpenProject(openQuPathProjDialog.FileName);
1662 foreach (QuPath.Image p in pr.Images)
1663 {
1664 string s = p.ServerBuilder.Uri.Replace("file:/", "");
1665 App.tabsView.AddTab(await BioImage.OpenFile(s));
1666 }
1667 }
1668
1669 private void saveQuPathProjectToolStripMenuItem_Click(object sender, EventArgs e)
1670 {
1671 if (saveQuPathDialog.ShowDialog() != DialogResult.OK)
1672 return;
1673 List<BioImage[]> images = new List<BioImage[]>();
1674 foreach (var item in viewers)
1675 {
1676 List<BioImage> imageList = new List<BioImage>();
1677 foreach (var image in item.Images)
1678 {
1679 imageList.Add(image);
1680 }
1681 images.Add(imageList.ToArray());
1682 }
1683 QuPath.Project.SaveProject(saveQuPathDialog.FileName, images);
1684 }
1689 public void SetTab(int i)
1690 {
1691 tabControl.SelectTab(i);
1692 }
1693 private void oMEROToolStripMenuItem_Click(object sender, EventArgs e)
1694 {
1695 OMERO om = new OMERO();
1696 om.Show();
1697 }
1698 public static void SelectWindow(string name)
1699 {
1700 TabsView tbs = App.tabsView;
1701
1702 int c = tbs.GetViewerCount();
1703 for (int v = 0; v < c; v++)
1704 {
1705 int cc = tbs.GetViewer(v).Images.Count;
1706 for (int im = 0; im < cc; im++)
1707 {
1708 if (tbs.GetViewer(v).Images[im].Filename == Path.GetFileName(name))
1709 {
1710 tbs.SetTab(v);
1711 BioLib.Recorder.Record("App.SelectWindow(\"" + name + "\")");
1712 ImageView.SelectedImage = tbs.GetViewer(v).Images[im];
1713 App.viewer = tbs.GetViewer(v);
1714 App.viewer.BringToFront();
1715 return;
1716 }
1717 }
1718 }
1719 }
1720 public static void CloseWindow(string name)
1721 {
1722 BioLib.Recorder.Record("App.CloseWindow(\"" + name + "\")");
1723 TabsView tbs = App.tabsView;
1724 int c = tbs.GetViewerCount();
1725 if (name == "ROI Manager")
1726 App.manager.Close();
1727 else
1728 if (name == "Stack Tool")
1729 App.stackTools.Close();
1730 else
1731 if (name == "Channels Tool")
1732 App.channelsTool.Close();
1733 else
1734 if (name == "Scripting")
1735 App.runner.Close();
1736 else
1737 if (name == "Recorder")
1738 App.recorder.Close();
1739 else
1740 if (name == "Tools")
1741 App.tools.Close();
1742 else
1743 for (int v = 0; v < c; v++)
1744 {
1745 int cc = tbs.GetViewer(v).Images.Count;
1746 for (int im = 0; im < cc; im++)
1747 {
1748 ImageView vi = tbs.GetViewer(v);
1749 if (vi.Images[im].Filename == Path.GetFileName(name))
1750 {
1751 tbs.RemoveTab(vi.Images[im]);
1752 return;
1753 }
1754 else if (vi.Name == name)
1755 {
1756 tbs.RemoveTab(vi.Images[im]);
1757 return;
1758 }
1759 }
1760 }
1761
1762 }
1763 public void RenameTab(string name, string newName)
1764 {
1765 foreach (ImageView item in tabControl.TabPages)
1766 {
1767 if (item.Name == name)
1768 {
1769 item.Name = newName;
1770 foreach (var b in item.Images)
1771 {
1772 b.Filename = newName;
1773 b.ID = newName;
1774 return;
1775 }
1776 }
1777 }
1778 }
1779 public static void Rename(string text)
1780 {
1782 ImageView.SelectedImage.Rename(text);
1784 v.Name = ImageView.SelectedImage.Filename;
1785 BioLib.Recorder.AddLine("App.Rename(\"" + text + "\");", false);
1786 }
1787
1788 private async void zarrMenuItem_Click(object sender, EventArgs e)
1789 {
1790 if (folderBrowserDialog.ShowDialog() != DialogResult.OK)
1791 return;
1792 var bio = await BioImage.OpenURL(folderBrowserDialog.SelectedPath, new ZCT(0, 0, 0), 0, 0, 256, 256);
1793 App.tabsView.AddTab(bio);
1794 }
1795
1796 private async void uriMenuItem_Click(object sender, EventArgs e)
1797 {
1798 UrlDialog dialog = new UrlDialog();
1799 if (dialog.ShowDialog() != DialogResult.OK)
1800 return;
1801 var bio = await BioImage.OpenURL(dialog.Url, new ZCT(0, 0, 0), 0, 0, 256, 256);
1802 App.tabsView.AddTab(bio);
1803 }
1804 }
1805}
System.Drawing.Size Size
System.Drawing.Image Image
Definition ImageView.cs:16
System.Windows.Forms.Keys Keys
Definition ImageView.cs:17
System.Windows.Forms.Application Application
Definition ImageView.cs:14
AForge.PointD PointD
BioLib.OMERO OMERO
Definition OMERO.cs:16
BioLib.BioImage BioImage
Definition TabsView.cs:15
AForge.ZCT ZCT
Definition TabsView.cs:17
AForge.RotateFlipType RotateFlipType
Definition TabsView.cs:16
static ROIManager manager
Definition App.cs:14
static Series seriesTool
Definition App.cs:25
static NodeView nodeView
Definition App.cs:17
static MicroscopeSetup setup
Definition App.cs:28
static Tools tools
Definition App.cs:21
static BioConsole console
Definition App.cs:31
static StackTools stackTools
Definition App.cs:22
static List< string > recent
Definition App.cs:34
static SlideImager slideImager
Definition App.cs:30
static TabsView tabsView
Definition App.cs:16
static Recorder recorder
Definition App.cs:19
static List< Channel > Channels
Definition App.cs:68
static StageTool stage
Definition App.cs:24
static ChannelsTool channelsTool
Definition App.cs:15
static Light lightTool
Definition App.cs:32
static CellImager cellImager
Definition App.cs:29
static Recordings recordings
Definition App.cs:26
static ImageView viewer
Definition App.cs:23
static Scripting runner
Definition App.cs:18
static Imager imager
Definition App.cs:20
static bool useBioformats
Definition BioConsole.cs:20
static bool headless
Definition BioConsole.cs:21
static bool newTab
Definition BioConsole.cs:22
static bool onTab
Definition BioConsole.cs:19
static Dictionary< string, Function > Functions
static void Initialize()
static Dictionary< string, Command > Commands
Definition ImageJ.cs:53
static ROI open(string path)
Definition ImageJ.cs:383
static bool save(ROI roi, String path)
Definition ImageJ.cs:1088
static void RunMacro(string file, string param)
Definition ImageJ.cs:115
static List< Macro.Command > Macros
Definition ImageJ.cs:103
static async void RunOnImage(string con, bool headless, bool onTab, bool bioformats, bool newTab)
Definition ImageJ.cs:189
ImageView control for image stacks, pyramidal and whole-slide-images.
List< BioImage > Images
Definition ImageView.cs:323
new AForge.SizeF Scale
Scale when opening image stacks.
Definition ImageView.cs:779
PointD Origin
A property of the class PointD. *‍/.
Definition ImageView.cs:718
void SetCoordinate(int z, int c, int t)
Definition ImageView.cs:431
void UpdateView(bool refreshImages=true)
ViewMode Mode
Setting the view mode of the application. *‍/.
Definition ImageView.cs:609
void CopySelection()
It takes the selected ROIs and copies them to the clipboard.
static BioImage SelectedImage
Definition ImageView.cs:270
int Level
Current level when viewing whole-slide and pyramidal images.
Definition ImageView.cs:765
void AddImage(BioImage im)
Definition ImageView.cs:475
async void UpdateImages(bool updatePyramidal=true)
static PointD viewSize
static void MoveRight(double d)
static void MoveDown(double d)
static void MoveUp(double d)
static void Close()
static void Initialize()
Definition Plugin.cs:37
static Recorder recorder
Definition Recorder.cs:20
static Dictionary< string, Script > Scripts
Definition Scripting.cs:15
void RunScriptFile(string file)
Definition Scripting.cs:371
static void RunByName(string name)
Definition Scripting.cs:438
ImageView Viewer
Definition TabsView.cs:28
ImageView? GetViewer(string name)
Definition TabsView.cs:45
void RemoveTab(BioImage b)
Definition TabsView.cs:149
void AddTab(BioImage b)
Definition TabsView.cs:134
static bool init
Definition TabsView.cs:22
static void SelectWindow(string name)
Definition TabsView.cs:1698
void AddViewer(ImageView v)
Definition TabsView.cs:65
void RenameTab(string name, string newName)
Definition TabsView.cs:1763
bool HasTab(BioImage image)
Definition TabsView.cs:173
static System.Drawing.Graphics graphics
Definition TabsView.cs:25
ImageView GetViewer(int i)
Definition TabsView.cs:41
void UpdateViewMode(ImageView.ViewMode v)
Definition TabsView.cs:715
void SetTab(int i)
Sets the current tab index.
Definition TabsView.cs:1689
ImageView viewer
Definition TabsView.cs:24
void OpenInNewProcess(string file)
Definition TabsView.cs:399
bool HasTab(string name)
Definition TabsView.cs:162
TabsView(BioImage arg)
Definition TabsView.cs:83
static void CloseWindow(string name)
Definition TabsView.cs:1720
static BioImage SelectedImage
Definition TabsView.cs:70
static void Rename(string text)
Definition TabsView.cs:1779
TabsView(string[] arg)
Definition TabsView.cs:99
static ImageView SelectedViewer
Definition TabsView.cs:77
void RemoveViewer(ImageView v)
Definition TabsView.cs:61