def __init__(self, *args, **kwargs): super(Display, self).__init__(*args, **kwargs) self.image_display = ImageDisplay( orientation='vertical' ) self.toolbar_placeholder = Label( text='Toolbar Placeholder', size_hint_y=None, height=50 ) self.add_widget(self.image_display) self.add_widget(self.toolbar_placeholder)
def __init__(self, passed=None): """ImageBrowser([passed=None]) :param passed: Default=None, filepath that runs the program. Default runs os.getcwd() """ self.open_file = "" self.entered = False self.file_list = [] self.rotate_qty = 0 # ------Program Window-----# self.window = tk.Tk() self.window.title("Image Viewer") self.dimY = self.window.winfo_screenheight() self.dimX = self.window.winfo_screenwidth() self._resize_program() image = tk.PhotoImage(file="toolbar/iv_logo.png") self.window.iconphoto(False, image) self.window.geometry(f"{self.programX}x{self.programY}+100+0") self.window.resizable(width=False, height=False) self.window.config(background="gray75") self.window.bind("<Left>", lambda x: self._back_image()) self.window.bind("<Right>", lambda x: self._next_image()) self.window.bind("<BackSpace>", lambda x: self._chg_dir) self.file_bar_frame = tk.Frame(self.window, height=35, padx=5, background="gray30") self.file_bar_frame.pack(side="top", fill="x") self.file_bar_frame.pack_propagate(0) load = Image.open("toolbar/up_arrow.png") load = load.resize((20, 20)) self.up_render = ImageTk.PhotoImage(load) self.up_dir = tk.Button(self.file_bar_frame, image=self.up_render, background="gray75", borderwidth=0, command=self._chg_dir) self.up_dir.pack(side="left") self.file_bar = tk.Entry(self.file_bar_frame, width=95, font=("Ariel", 12)) self.file_bar.pack(side="left") self.file_bar.bind("<FocusIn>", lambda x: self.window.unbind("<BackSpace>")) self.file_bar.bind( "<FocusOut>", lambda x: self.window.bind("<BackSpace>", self._chg_dir)) self.go_button = tk.Button( self.file_bar_frame, text="Go!", font=("Ariel", 10), borderwidth=0, background="gray75", command=lambda: self._go_click(self.file_bar.get()), activebackground="gray45") self.go_button.pack(side="left") self.file_bar.bind("<Return>", lambda x: self.go_button.invoke()) self.image_container_c = tk.Label(self.file_bar_frame, background="gray30", pady=5) self.image_container_c.pack(side="left") tk.Label(self.image_container_c, width=8, background="gray30").pack(side="left") self.image_container = tk.Label(self.image_container_c, background="gray30", pady=5) self.image_container.pack(side="left") load = Image.open("toolbar/trash.png") load = load.resize((25, 25)) trash_render = ImageTk.PhotoImage(load) self.file_option_trash = tk.Button(self.image_container, image=trash_render, width=25, height=25, borderwidth=0, background="gray75", activebackground="gray45", command=self._del_image) self.file_option_trash.pack(side="left") load = Image.open("toolbar/flip_trans.png") load = load.resize((25, 25)) f_h_render = ImageTk.PhotoImage(load) self.flip_horizontal = tk.Button( self.image_container, image=f_h_render, height=25, width=25, borderwidth=0, background="gray75", activebackground="gray45", command=lambda: self.ID.flip("horizontal")) self.flip_horizontal.pack(side="left", anchor="center") load = load.rotate(90, Image.NEAREST, expand=1) f_v_render = ImageTk.PhotoImage(load) self.flip_vertical = tk.Button( self.image_container, image=f_v_render, height=25, width=25, borderwidth=0, background="gray75", activebackground="gray45", command=lambda: self.ID.flip("vertical")) self.flip_vertical.pack(side="left", anchor="center") load = Image.open("toolbar/rotate_trans.png") load = load.resize((25, 25)) rotate_render = ImageTk.PhotoImage(load) self.file_option_rotate = tk.Button( self.image_container, image=rotate_render, width=25, height=25, borderwidth=0, background="gray75", activebackground="gray45", command=lambda: self.ID.rotate("ccw")) self.file_option_rotate.pack(side="left") load = load.transpose(Image.FLIP_LEFT_RIGHT) rotate_r_render = ImageTk.PhotoImage(load) self.file_option_rotate_r = tk.Button( self.image_container, image=rotate_r_render, width=25, height=25, borderwidth=0, background="gray75", activebackground="gray45", command=lambda: self.ID.rotate("cw")) self.file_option_rotate_r.pack(side="left") tk.Label(self.image_container_c, width=8, background="gray30").pack(side="left") self.zoom_container = tk.Label(self.image_container_c, background="gray30") self.zoom_container.pack(side="left") self.zoom_amount = tk.Entry(self.zoom_container, width=4, font=("Ariel", 14)) self.zoom_amount.pack(side="left") self.zoom_amount.bind("<FocusIn>", lambda x: self.window.unbind("<BackSpace>")) self.zoom_amount.bind( "<FocusOut>", lambda x: self.window.bind("<BackSpace>", self._chg_dir)) load = Image.open("toolbar/zoom_trans.png") load = load.resize((25, 25)) zoom_render = ImageTk.PhotoImage(load) self.file_option_zoom = tk.Button(self.zoom_container, image=zoom_render, width=25, height=25, borderwidth=0, background="gray75", activebackground="gray45", command=self._zoom, justify=tk.CENTER) self.file_option_zoom.pack(side="left") self.zoom_amount.bind("<Return>", lambda x: self.file_option_zoom.invoke()) self.slideshow_container = tk.Label(self.file_bar_frame, width=25, background="gray75") self.slideshow_container.pack(side="right") self.slideshow_play = tk.Button( self.slideshow_container, text="Start Slideshow!", font=("Ariel", 10), background="gray75", command=lambda: self._slideshow_click(self.open_file), activebackground="gray45", borderwidth=0) self.slideshow_play.pack() self.slideshow_stop = tk.Button( self.slideshow_container, text="Stop Slideshow!", font=("Ariel", 10), background="gray75", command=lambda: self._slideshow_click(self.open_file), activebackground="gray45", borderwidth=0) self.top_frame = tk.Frame(self.window, background="gray75") self.top_frame.pack(side="top") self.folder_frame = tk.Frame(self.top_frame, width=300, height=self.height + 4, borderwidth=2, relief="flat", background="gray30") self.folder_frame.pack(side="left", anchor="nw") self.folder_frame.pack_propagate(0) self.folder_text = tk.Text(self.folder_frame, background="gray75", relief="flat", wrap="none") self.folder_text.pack(expand=True, fill="both") self.folder_text.tag_config("blank", background="gray30", foreground="#A4541D", justify=tk.LEFT, font=("Ariel", 12, "bold"), spacing1="4", spacing2="4", spacing3="4", lmargin1="5") self.folder_text.tag_config("spacer", font=("Ariel", 1), background="gray30") self.folder_buttons = ButtonManager(self.folder_text) self.folder_scroll = tk.Scrollbar(self.folder_text) self.folder_scroll.pack(side="right", fill="y") self.folder_text.config(yscrollcommand=self.folder_scroll.set) self.folder_scroll.config(command=self.folder_text.yview) self.image_frame = tk.Frame(self.top_frame, height=self.height + 4, width=self.width + 4, borderwidth=2, relief="flat", background="gray10") self.image_frame.pack(side="left", expand=True, anchor=tk.CENTER) self.image_frame.pack_propagate(0) self.image_frame.bind("<Enter>", lambda x: self.file_options_enter()) self.image_frame.bind("<Leave>", lambda x: self.file_options_exit()) load = Image.open("toolbar/default_img.png") render = ImageTk.PhotoImage(load) """ self.image_label = tk.Label(self.image_frame, image=render, height=946, width=1146, anchor="center", background="gray10", borderwidth=2, relief="flat") self.image_label.pack(fill="both", expand=True) """ self.image_canvas = tk.Canvas(self.image_frame, height=self.height, width=self.width, background="gray10", borderwidth=2, relief="flat") self.image_canvas.pack(anchor=tk.CENTER, fill="both") self.image_canvas.create_image(self.width / 2, self.height / 2, image=render, anchor="center") self.ID = ImageDisplay(self.image_canvas, self.width, self.height) self.text_var = tk.StringVar() self.text_var.set("") self.file_count = tk.StringVar() self.file_count.set("") self.folder_count = tk.StringVar() self.folder_count.set("") self.file_name = tk.Frame(self.window, background="gray60") self.file_name.pack(side="bottom", fill="x") self.file_size = tk.StringVar() self.file_size.set(" 0.00 MB") self.file_count_disp = tk.Label(self.file_name, textvariable=self.file_count, background="gray60", padx=4, justify=tk.LEFT, anchor="w", borderwidth=2, relief="sunken") self.file_count_disp.pack(side="left") self.folder_count_disp = tk.Label(self.file_name, textvariable=self.folder_count, background="gray60", padx=4, justify=tk.LEFT, anchor="w", borderwidth=2, relief="sunken") self.folder_count_disp.pack(side="left") self.file_link = tk.Label(self.file_name, textvariable=self.text_var, background="gray60", padx=4, justify=tk.LEFT, anchor="w", borderwidth=2, relief="sunken") self.file_link.pack(side="left", expand=True, fill="both") self.file_size_disp = tk.Label(self.file_name, textvariable=self.file_size, background="gray60", padx=4, justify=tk.LEFT, anchor="w", borderwidth=2, relief="sunken") self.file_size_disp.pack(side="right") if passed is None: self.link = os.getcwd() self.crawler = FileCrawler() else: self.link = passed self.crawler = FileCrawler(self.link) self.open_folder(self.link) self.file_bar.delete(0, tk.END) self.file_bar.insert(tk.INSERT, self.link) self.window.mainloop()
def __init__(self, parent=None, infile=None, inimage=None, center_ra=None, center_dec=None, position_angle=None): QtGui.QWidget.__init__(self, parent) #set up the main UI self.ui = Ui_MainWindow() self.ui.setupUi(self) # OptimizeTab.__init__(self,self.ui) #set up the slitmask self.slitmask=SlitMask(center_ra=center_ra, center_dec=center_dec, position_angle=position_angle ) self.slitlets=self.slitmask.slitlets #setup the image interaction self.imagedisplay=ImageDisplay(target='pySlitMask:5909') self.position_angle=position_angle if inimage: self.loadimage(inimage) #set up some variables that will be needed later self.xmlfile=None self.fcfile=None #read in the input data if available self.infile=infile if infile: self.ui.radioButtonInfo_Catalogue.setChecked(True) self.setmode2cat() self.entercatalog(infile) print self.slitmask.center_ra, self.slitmask.center_dec if self.slitmask.center_ra is None and self.slitmask.center_dec is None: self.slitmask.set_MaskPosition() self.displayfootprint() #if self.slitmask.center_ra and self.slitmask.center_dec: #self.imagedisplay.rssregion(self.slitmask.center_ra, self.slitmask.center_dec) self.ui.lineEditMain_CenRA.setText(str(self.slitmask.center_ra)) self.ui.lineEditMain_CenDEC.setText(str(self.slitmask.center_dec)) self.ui.lineEditMain_PA.setText(str(self.slitmask.position_angle)) self.ui.lineEditMain_Equinox.setText(str(self.slitmask.equinox)) self.ui.lineEditMain_TargetName.setText(self.slitmask.target_name) self.ui.lineEditMain_MaskName.setText(self.slitmask.mask_name) self.ui.lineEditInfo_Creator.setText(self.slitmask.creator) self.ui.lineEditInfo_Proposer.setText(self.slitmask.proposer) self.ui.lineEditInfo_ProposalCode.setText(self.slitmask.proposal_code) else: self.ui.radioButtonInfo_Catalogue.setChecked(False) self.ui.radioButtonInfo_Manual.setChecked(True) self.setmode2manual() self.ui.toolButtonCat_Load.setEnabled(True) #self.displayfootprint() # self.opttab = OptimizeTab() # setup default values for the optimizer self.opt_yspacing = 1. self.opt_iter = 10 self.ui.lineEditOpt_Yspacing.setText(str(self.opt_yspacing)) self.ui.lineEditOpt_Niter.setText(str(self.opt_iter)) # self.slitmask.outFoV() # print self.slitlets.data['fov_flag'] # self.updatetabs() #Listen to different signals #menu items QtCore.QObject.connect(self.ui.actionLoad_Catalogue, QtCore.SIGNAL("triggered()"), self.loadcatalog) QtCore.QObject.connect(self.ui.actionLoad_Image, QtCore.SIGNAL("triggered()"), self.loadimage) #main tabs QtCore.QObject.connect(self.ui.lineEditMain_CenRA, QtCore.SIGNAL("editingFinished()"), self.loadCenRA) QtCore.QObject.connect(self.ui.lineEditMain_CenDEC, QtCore.SIGNAL("editingFinished()"), self.loadCenDEC) QtCore.QObject.connect(self.ui.lineEditMain_PA, QtCore.SIGNAL("editingFinished()"), self.loadpositionangle) QtCore.QObject.connect(self.ui.lineEditMain_Equinox, QtCore.SIGNAL("editingFinished()"), self.loadequinox) QtCore.QObject.connect(self.ui.lineEditMain_TargetName, QtCore.SIGNAL("editingFinished()"), self.loadtargetname) QtCore.QObject.connect(self.ui.lineEditMain_MaskName, QtCore.SIGNAL("editingFinished()"), self.loadmaskname) #info tabs QtCore.QObject.connect(self.ui.lineEditInfo_ProposalCode, QtCore.SIGNAL("editingFinished()"), self.loadproposalcode) QtCore.QObject.connect(self.ui.lineEditInfo_Proposer, QtCore.SIGNAL("editingFinished()"), self.loadproposer) QtCore.QObject.connect(self.ui.lineEditInfo_Creator, QtCore.SIGNAL("editingFinished()"), self.loadcreator) # QtCore.QObject.connect(self.slitmask, SIGNAL('xmlloaded'), self.setcreator) QtCore.QObject.connect(self.ui.radioButtonInfo_Catalogue, QtCore.SIGNAL("clicked()"), self.setmode2cat) QtCore.QObject.connect(self.ui.radioButtonInfo_Manual, QtCore.SIGNAL("clicked()"), self.setmode2manual) QtCore.QObject.connect(self.ui.checkBoxInfo_CentroidOn, QtCore.SIGNAL("clicked()"), self.setmodecentroiding) #catalog tabs QtCore.QObject.connect(self.ui.toolButtonCat_Load, QtCore.SIGNAL("clicked(bool)"), self.loadcatalog) QtCore.QObject.connect(self.ui.pushButtonCat_AddSlits, QtCore.SIGNAL("clicked(bool)"), self.addslitfromcatalog) QtCore.QObject.connect(self.ui.pushButtonCat_Clear, QtCore.SIGNAL("clicked()"), self.clearContents) #slit tab QtCore.QObject.connect(self.ui.pushButtonSlit_ClearSlits, QtCore.SIGNAL("clicked()"), self.clearslittable) QtCore.QObject.connect(self.ui.pushButtonSlit_AddSlitImage, QtCore.SIGNAL("clicked()"), self.addslitletsfromimage) QtCore.QObject.connect(self.ui.pushButtonSlit_AddSlitfromCat, QtCore.SIGNAL("clicked()"), self.addslitletsfromcatalogue) QtCore.QObject.connect(self.ui.pushButtonSlit_AddSlit, QtCore.SIGNAL("clicked()"), self.addslitmanually) QtCore.QObject.connect(self.ui.pushButtonSlit_DeleteSlit, QtCore.SIGNAL("clicked()"), self.deleteslitmanually) QtCore.QObject.connect(self.ui.pushButtonSlit_DeleteSlitImage, QtCore.SIGNAL("clicked()"), self.deleteslitfromimage) QtCore.QObject.connect(self.ui.tableWidgetSlits, QtCore.SIGNAL("itemSelectionChanged()"), self.setposition) QtCore.QObject.connect(self.ui.tableWidgetSlits, QtCore.SIGNAL("cellChanged(int, int)"), self.slitchanged) #optimize tab QtCore.QObject.connect(self.ui.pushButtonOpt_Optimize, QtCore.SIGNAL("clicked()"), self.optimize) QtCore.QObject.connect(self.ui.lineEditOpt_Yspacing, QtCore.SIGNAL("editingFinished()"), self.setoptimizer_yspacing) QtCore.QObject.connect(self.ui.lineEditOpt_Niter, QtCore.SIGNAL("editingFinished()"), self.setoptimizer_iter) QtCore.QObject.connect(self.ui.checkBoxOpt_IncRefstars, QtCore.SIGNAL("stateChanged(int)"), self.includerefstars) QtCore.QObject.connect(self.ui.lineEditOpt_NumRefstars, QtCore.SIGNAL("editingFinished()"), self.setnumrefstars) #ref stars QtCore.QObject.connect(self.ui.pushButtonRef_ClearRefstars, QtCore.SIGNAL("clicked()"), self.clearrefstartable) QtCore.QObject.connect(self.ui.pushButtonRef_AddRefstarImage, QtCore.SIGNAL("clicked()"), self.addslitletsfromimage) QtCore.QObject.connect(self.ui.pushButtonRef_AddRefstarsfromCat, QtCore.SIGNAL("clicked()"), self.addrefstarsfromcatalogue) QtCore.QObject.connect(self.ui.pushButtonRef_AddRefstar, QtCore.SIGNAL("clicked()"), self.addrefstarmanually) QtCore.QObject.connect(self.ui.pushButtonRef_DeleteRefstar, QtCore.SIGNAL("clicked()"), self.deleterefstarmanually) QtCore.QObject.connect(self.ui.pushButtonRef_DeleteRefstar_2, QtCore.SIGNAL("clicked()"), self.deleteslitfromimage) QtCore.QObject.connect(self.ui.tableWidgetRefstars, QtCore.SIGNAL(" itemSelectionChanged()"), self.setrefposition) QtCore.QObject.connect(self.ui.tableWidgetRefstars, QtCore.SIGNAL("cellChanged(int, int)"), self.refchanged) # finalize tab QtCore.QObject.connect(self.ui.pushButtonFin_Validate, QtCore.SIGNAL("clicked(bool)"),self.validator) QtCore.QObject.connect(self.ui.pushButtonFin_WriteXML, QtCore.SIGNAL("clicked(bool)"), self.writexml) QtCore.QObject.connect(self.ui.toolButtonFin_WriteRSMT, QtCore.SIGNAL("clicked(bool)"), self.writersmt) QtCore.QObject.connect(self.ui.pushButtonFin_CreateFChart_Current, QtCore.SIGNAL("clicked(bool)"), self.writeFC_Current) QtCore.QObject.connect(self.ui.pushButtonFin_CreateFChart_DSS, QtCore.SIGNAL("clicked(bool)"), self.writeFC_DSS) self.ui.tabWidget.setCurrentIndex(0)