Beispiel #1
0
  def __init__ (self,parent,hide_on_close=False):
    QMainWindow.__init__(self,parent);
    self.setWindowIcon(pixmaps.tigger_starface.icon());
    self._currier = PersistentCurrier();
    self.hide();
    # init column constants
    for icol,col in enumerate(self.ViewModelColumns):
        setattr(self,"Column%s"%col.capitalize(),icol);
    # init GUI
    self.setWindowTitle("Tigger");
    # self.setIcon(pixmaps.purr_logo.pm());
    cw = QWidget(self);
    self.setCentralWidget(cw);
    cwlo = QVBoxLayout(cw);
    cwlo.setMargin(5);
    # make splitter
    spl1 = self._splitter1 = QSplitter(Qt.Vertical,cw);
    spl1.setOpaqueResize(False);
    cwlo.addWidget(spl1);
    # Create listview of LSM entries
    self.tw = SkyModelTreeWidget(spl1);
    self.tw.hide();

    # split bottom pane
    spl2 = self._splitter2 = QSplitter(Qt.Horizontal,spl1);
    spl2.setOpaqueResize(False);
    self._skyplot_stack = QWidget(spl2);
    self._skyplot_stack_lo = QVBoxLayout(self._skyplot_stack);
    self._skyplot_stack_lo.setContentsMargins(0,0,0,0);

    # add plot
    self.skyplot = SkyModelPlotter(self._skyplot_stack,self);
    self.skyplot.resize(128,128);
    self.skyplot.setSizePolicy(QSizePolicy.Minimum,QSizePolicy.Preferred);
    self._skyplot_stack_lo.addWidget(self.skyplot,1000);
    self.skyplot.hide();
    QObject.connect(self.skyplot,SIGNAL("imagesChanged"),self._imagesChanged);
    QObject.connect(self.skyplot,SIGNAL("showMessage"),self.showMessage);
    QObject.connect(self.skyplot,SIGNAL("showErrorMessage"),self.showErrorMessage);

    self._grouptab_stack = QWidget(spl2);
    self._grouptab_stack_lo = lo =QVBoxLayout(self._grouptab_stack);
    self._grouptab_stack_lo.setContentsMargins(0,0,0,0);
    # add groupings table
    self.grouptab = ModelGroupsTable(self._grouptab_stack);
    self.grouptab.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Preferred);
    QObject.connect(self,SIGNAL("hasSkyModel"),self.grouptab.setEnabled);
    lo.addWidget(self.grouptab,1000);
    lo.addStretch(1);
    self.grouptab.hide();

    # add image controls -- parentless for now (setLayout will reparent them anyway)
    self.imgman = ImageManager();
    self.skyplot.setImageManager(self.imgman);
    QObject.connect(self.imgman,SIGNAL("imagesChanged"),self._imagesChanged);
    QObject.connect(self.imgman,SIGNAL("showMessage"),self.showMessage);
    QObject.connect(self.imgman,SIGNAL("showErrorMessage"),self.showErrorMessage);

    # enable status line
    self.statusBar().show();
    # Create and populate main menu
    menubar = self.menuBar();
    # File menu
    file_menu = menubar.addMenu("&File");
    qa_open = file_menu.addAction("&Open model...",self._openFileCallback,Qt.CTRL+Qt.Key_O);
    qa_merge = file_menu.addAction("&Merge in model...",self._mergeFileCallback,Qt.CTRL+Qt.SHIFT+Qt.Key_O);
    QObject.connect(self,SIGNAL("hasSkyModel"),qa_merge.setEnabled);
    file_menu.addSeparator();
    qa_save = file_menu.addAction("&Save model",self.saveFile,Qt.CTRL+Qt.Key_S);
    QObject.connect(self,SIGNAL("isUpdated"),qa_save.setEnabled);
    qa_save_as = file_menu.addAction("Save model &as...",self.saveFileAs);
    QObject.connect(self,SIGNAL("hasSkyModel"),qa_save_as.setEnabled);
    qa_save_selection_as = file_menu.addAction("Save selection as...",self.saveSelectionAs);
    QObject.connect(self,SIGNAL("hasSelection"),qa_save_selection_as.setEnabled);
    file_menu.addSeparator();
    qa_close = file_menu.addAction("&Close model",self.closeFile,Qt.CTRL+Qt.Key_W);
    QObject.connect(self,SIGNAL("hasSkyModel"),qa_close.setEnabled);
    qa_quit = file_menu.addAction("Quit",self.close,Qt.CTRL+Qt.Key_Q);

    # Image menu
    menubar.addMenu(self.imgman.getMenu());
    # Plot menu
    menubar.addMenu(self.skyplot.getMenu());

    # LSM Menu
    em = QMenu("&LSM",self);
    self._qa_em = menubar.addMenu(em);
    self._qa_em.setVisible(False);
    QObject.connect(self,SIGNAL("hasSkyModel"),self._qa_em.setVisible);
    self._column_view_menu = QMenu("&Show columns",self);
    self._qa_cv_menu = em.addMenu(self._column_view_menu);
    em.addSeparator();
    em.addAction("Select &all",self._selectAll,Qt.CTRL+Qt.Key_A);
    em.addAction("&Invert selection",self._selectInvert,Qt.CTRL+Qt.Key_I);
    em.addAction("Select b&y attribute...",self._showSourceSelector,Qt.CTRL+Qt.Key_Y);
    em.addSeparator();
    qa_add_tag = em.addAction("&Tag selection...",self.addTagToSelection,Qt.CTRL+Qt.Key_T);
    QObject.connect(self,SIGNAL("hasSelection"),qa_add_tag.setEnabled);
    qa_del_tag = em.addAction("&Untag selection...",self.removeTagsFromSelection,Qt.CTRL+Qt.Key_U);
    QObject.connect(self,SIGNAL("hasSelection"),qa_del_tag.setEnabled);
    qa_del_sel = em.addAction("&Delete selection",self._deleteSelection);
    QObject.connect(self,SIGNAL("hasSelection"),qa_del_sel.setEnabled);

   # Tools menu
    tm = self._tools_menu = QMenu("&Tools",self);
    self._qa_tm = menubar.addMenu(tm);
    self._qa_tm.setVisible(False);
    QObject.connect(self,SIGNAL("hasSkyModel"),self._qa_tm.setVisible);

   # Help menu
    menubar.addSeparator();
    hm = self._help_menu = menubar.addMenu("&Help");
    hm.addAction("&About...",self._showAboutDialog);
    self._about_dialog = None;

    # message handlers
    self.qerrmsg = QErrorMessage(self);

    # set initial state
    self.setAcceptDrops(True);
    self.model = None;
    self.filename = None;
    self._display_filename = None;
    self._open_file_dialog = self._merge_file_dialog = self._save_as_dialog = self._save_sel_as_dialog = self._open_image_dialog = None;
    self.emit(SIGNAL("isUpdated"),False);
    self.emit(SIGNAL("hasSkyModel"),False);
    self.emit(SIGNAL("hasSelection"),False);
    self._exiting = False;

    # set initial layout
    self._current_layout = None;
    self.setLayout(self.LayoutEmpty);
    dprint(1,"init complete");