phoebehxf
init
aff3c6f
"""
Copyright © 2025 Howard Hughes Medical Institute, Authored by Carsen Stringer , Michael Rariden and Marius Pachitariu.
"""
from qtpy.QtWidgets import QAction
from . import io
def mainmenu(parent):
main_menu = parent.menuBar()
file_menu = main_menu.addMenu("&File")
# load processed data
loadImg = QAction("&Load image (*.tif, *.png, *.jpg)", parent)
loadImg.setShortcut("Ctrl+L")
loadImg.triggered.connect(lambda: io._load_image(parent))
file_menu.addAction(loadImg)
parent.autoloadMasks = QAction("Autoload masks from _masks.tif file", parent,
checkable=True)
parent.autoloadMasks.setChecked(False)
file_menu.addAction(parent.autoloadMasks)
parent.disableAutosave = QAction("Disable autosave _seg.npy file", parent,
checkable=True)
parent.disableAutosave.setChecked(False)
file_menu.addAction(parent.disableAutosave)
parent.loadMasks = QAction("Load &masks (*.tif, *.png, *.jpg)", parent)
parent.loadMasks.setShortcut("Ctrl+M")
parent.loadMasks.triggered.connect(lambda: io._load_masks(parent))
file_menu.addAction(parent.loadMasks)
parent.loadMasks.setEnabled(False)
loadManual = QAction("Load &processed/labelled image (*_seg.npy)", parent)
loadManual.setShortcut("Ctrl+P")
loadManual.triggered.connect(lambda: io._load_seg(parent))
file_menu.addAction(loadManual)
parent.saveSet = QAction("&Save masks and image (as *_seg.npy)", parent)
parent.saveSet.setShortcut("Ctrl+S")
parent.saveSet.triggered.connect(lambda: io._save_sets(parent))
file_menu.addAction(parent.saveSet)
parent.saveSet.setEnabled(False)
parent.savePNG = QAction("Save masks as P&NG/tif", parent)
parent.savePNG.setShortcut("Ctrl+N")
parent.savePNG.triggered.connect(lambda: io._save_png(parent))
file_menu.addAction(parent.savePNG)
parent.savePNG.setEnabled(False)
parent.saveOutlines = QAction("Save &Outlines as text for imageJ", parent)
parent.saveOutlines.setShortcut("Ctrl+O")
parent.saveOutlines.triggered.connect(lambda: io._save_outlines(parent))
file_menu.addAction(parent.saveOutlines)
parent.saveOutlines.setEnabled(False)
parent.saveROIs = QAction("Save outlines as .zip archive of &ROI files for ImageJ",
parent)
parent.saveROIs.setShortcut("Ctrl+R")
parent.saveROIs.triggered.connect(lambda: io._save_rois(parent))
file_menu.addAction(parent.saveROIs)
parent.saveROIs.setEnabled(False)
parent.saveFlows = QAction("Save &Flows and cellprob as tif", parent)
parent.saveFlows.setShortcut("Ctrl+F")
parent.saveFlows.triggered.connect(lambda: io._save_flows(parent))
file_menu.addAction(parent.saveFlows)
parent.saveFlows.setEnabled(False)
def editmenu(parent):
main_menu = parent.menuBar()
edit_menu = main_menu.addMenu("&Edit")
parent.undo = QAction("Undo previous mask/trace", parent)
parent.undo.setShortcut("Ctrl+Z")
parent.undo.triggered.connect(parent.undo_action)
parent.undo.setEnabled(False)
edit_menu.addAction(parent.undo)
parent.redo = QAction("Undo remove mask", parent)
parent.redo.setShortcut("Ctrl+Y")
parent.redo.triggered.connect(parent.undo_remove_action)
parent.redo.setEnabled(False)
edit_menu.addAction(parent.redo)
parent.ClearButton = QAction("Clear all masks", parent)
parent.ClearButton.setShortcut("Ctrl+0")
parent.ClearButton.triggered.connect(parent.clear_all)
parent.ClearButton.setEnabled(False)
edit_menu.addAction(parent.ClearButton)
parent.remcell = QAction("Remove selected cell (Ctrl+CLICK)", parent)
parent.remcell.setShortcut("Ctrl+Click")
parent.remcell.triggered.connect(parent.remove_action)
parent.remcell.setEnabled(False)
edit_menu.addAction(parent.remcell)
parent.mergecell = QAction("FYI: Merge cells by Alt+Click", parent)
parent.mergecell.setEnabled(False)
edit_menu.addAction(parent.mergecell)
def modelmenu(parent):
main_menu = parent.menuBar()
io._init_model_list(parent)
model_menu = main_menu.addMenu("&Models")
parent.addmodel = QAction("Add custom torch model to GUI", parent)
#parent.addmodel.setShortcut("Ctrl+A")
parent.addmodel.triggered.connect(parent.add_model)
parent.addmodel.setEnabled(True)
model_menu.addAction(parent.addmodel)
parent.removemodel = QAction("Remove selected custom model from GUI", parent)
#parent.removemodel.setShortcut("Ctrl+R")
parent.removemodel.triggered.connect(parent.remove_model)
parent.removemodel.setEnabled(True)
model_menu.addAction(parent.removemodel)
parent.newmodel = QAction("&Train new model with image+masks in folder", parent)
parent.newmodel.setShortcut("Ctrl+T")
parent.newmodel.triggered.connect(parent.new_model)
parent.newmodel.setEnabled(False)
model_menu.addAction(parent.newmodel)
openTrainHelp = QAction("Training instructions", parent)
openTrainHelp.triggered.connect(parent.train_help_window)
model_menu.addAction(openTrainHelp)
def helpmenu(parent):
main_menu = parent.menuBar()
help_menu = main_menu.addMenu("&Help")
openHelp = QAction("&Help with GUI", parent)
openHelp.setShortcut("Ctrl+H")
openHelp.triggered.connect(parent.help_window)
help_menu.addAction(openHelp)
openGUI = QAction("&GUI layout", parent)
openGUI.setShortcut("Ctrl+G")
openGUI.triggered.connect(parent.gui_window)
help_menu.addAction(openGUI)
openTrainHelp = QAction("Training instructions", parent)
openTrainHelp.triggered.connect(parent.train_help_window)
help_menu.addAction(openTrainHelp)