Ejemplo n.º 1
0
  /*! \brief Setup the user interface.
   */
  void createUI() {
    WContainerWidget *w = root();
    w->setStyleClass("maindiv");

    /*
     * The main layout is a 3x2 grid layout.
     */
    WGridLayout *layout = new WGridLayout();
    layout->addWidget(createTitle("Folders"), 0, 0);
    layout->addWidget(createTitle("Files"), 0, 1);
    layout->addWidget(folderView(), 1, 0);
    layout->setColumnResizable(0);

    // select the first folder
    folderView_->select(folderModel_->index(0, 0, folderModel_->index(0, 0)));

    WVBoxLayout *vbox = new WVBoxLayout();
    vbox->addWidget(fileView(), 1);
    vbox->addWidget(pieChart(), 1);
    vbox->setResizable(0);

    layout->addLayout(vbox, 1, 1);

    layout->addWidget(aboutDisplay(), 2, 0, 1, 2);

    /*
     * Let row 1 and column 1 take the excess space.
     */
    layout->setRowStretch(1, 1);
    layout->setColumnStretch(1, 1);

    w->setLayout(layout);
  }
Ejemplo n.º 2
0
///
//  Constructor
//
SubjectPage::SubjectPage(WContainerWidget *parent) :
    WContainerWidget(parent)
{
    setStyleClass("tabdiv");

    WGridLayout *layout = new WGridLayout();
    mSelectScans = new SelectScans();
    //mPipelineConfigure = new PipelineConfigure(mSelectScans->getScansToProcess(),
      //                                         mSelectScans->getCurrentPipeline());

    mStackedStage = new WStackedWidget();
    mStackedStage->addWidget(mSelectScans);
    //mStackedStage->addWidget(mPipelineConfigure);

    layout->addWidget(mStackedStage, 0, 0);

    mNextButton = new WPushButton("Next ->");
    mNextButton->setMinimumSize(WLength(65, WLength::Pixel), WLength::Auto);
    mBackButton = new WPushButton("<- Back");
    mBackButton->setMinimumSize(WLength(65, WLength::Pixel), WLength::Auto);

    mRefreshMRIBrowserButton = new WPushButton("New scan received, click to refresh MRID list.");
    mLoadingImage = new WImage("icons/ajax-loader-2.gif");

    WGridLayout *navLayout = new WGridLayout();
    navLayout->addWidget(mLoadingImage, 0, 0, Wt::AlignRight | Wt::AlignMiddle);
    navLayout->addWidget(mRefreshMRIBrowserButton, 0, 1, Wt::AlignLeft | Wt::AlignMiddle);
    navLayout->addWidget(mBackButton, 0, 3, Wt::AlignRight);
    navLayout->addWidget(mNextButton, 0, 4, Wt::AlignLeft);
    navLayout->setColumnStretch(2, 1);
    layout->addLayout(navLayout, 1, 0);

    // Let row 0 take the excess space
    layout->setRowStretch(0, 1);
    mLoadingImage->hide();
    mRefreshMRIBrowserButton->hide();


    setLayout(layout);

    mMessageBox = new WMessageBox();
    mMessageBox->buttonClicked().connect(SLOT(this, SubjectPage::handleMessageBoxFinished));
//    mSubmitJobDialog = new SubmitJobDialog("Submit Scans");
  //  mSubmitJobDialog->finished().connect(SLOT(this, SubjectPage::handleSubmitScans));

    // Signal/slot connections
    mSelectScans->getScanAdded().connect(SLOT(this, SubjectPage::scanAdded));
    mNextButton->clicked().connect(SLOT(this, SubjectPage::nextClicked));
    mBackButton->clicked().connect(SLOT(this, SubjectPage::backClicked));
//    mSelectScans->getMRIBrowser()->mriListUpdated().connect(SLOT(this, SubjectPage::mriListUpdated));
    mRefreshMRIBrowserButton->clicked().connect(SLOT(this, SubjectPage::refreshMRIList));

    resetAll();
}
Ejemplo n.º 3
0
///
//  Constructor
//
MonitorPage::MonitorPage(const MRIBrowser *mriBrowser,
                         WContainerWidget *parent) :
    WContainerWidget(parent),
    mMRIBrowser(mriBrowser)
{
    setStyleClass("tabdiv");

    WGridLayout *layout = new WGridLayout();
    layout->addWidget(createTitle("Cluster Jobs"), 0, 0);

    WTabWidget *tabWidget = new WTabWidget();
    tabWidget->setStyleClass("toptabdiv");
    mMonitorLogTab = new MonitorLogTab(mriBrowser);
    mMonitorResultsTab = new MonitorResultsTab(mriBrowser);
    tabWidget->addTab(mMonitorResultsTab, "Results");
    tabWidget->addTab(mMonitorLogTab, "Logs");
    layout->addWidget(tabWidget, 1, 1);

    WVBoxLayout *clusterJobsLayout = new WVBoxLayout();
    mClusterJobBrowser = new ClusterJobBrowser();
    mPatientInfoBox = new PatientInfoBox();
    mPatientInfoBox->setStyleClass("verysmallgroupdiv");

    clusterJobsLayout->addWidget(mClusterJobBrowser);
    clusterJobsLayout->addWidget(mPatientInfoBox);

    layout->addLayout(clusterJobsLayout, 1, 0);


    // Let row 1 and column 2 take the excess space.
    layout->setRowStretch(1, 1);
    layout->setColumnStretch(1, 1);

    setLayout(layout);

    // Make connections
    mClusterJobBrowser->clusterJobSelected().connect(SLOT(this, MonitorPage::jobSelectedChanged));

    // All items in the tabbed widget need to be resized to 100% to
    // fill the contents.  This trick came from the Wt WTabWidget
    // documentation and took me a good half a day to figure out.
    mMonitorLogTab->resize(WLength(100, WLength::Percentage),
                           WLength(100, WLength::Percentage));
    mMonitorResultsTab->resize(WLength(100, WLength::Percentage),
                               WLength(100, WLength::Percentage));

}
Ejemplo n.º 4
0
///
//  Constructor
//
ClusterLoadPage::ClusterLoadPage(WContainerWidget *parent) :
    WContainerWidget(parent)
{
    setStyleClass("tabdiv");

    mTopFileTailer = new LogFileTailer(getConfigOptionsPtr()->GetTopLogFile(), false, 1000, false);
    mClusterLoadChart = new ClusterLoadChart();

    WGridLayout *gridBox = new WGridLayout();
    gridBox->addWidget(createTitle("Cluster Usage"), 0, 0, AlignRight | AlignMiddle);
    gridBox->addWidget(mClusterLoadChart, 0, 1, AlignLeft);

    WGridLayout *layout = new WGridLayout();
    layout->addLayout(gridBox, 0, 0);
    layout->addWidget(mTopFileTailer, 1, 0);

    layout->setRowStretch(1, 1);
    setLayout(layout);
}
Ejemplo n.º 5
0
///
//  Constructor
//
ProjectChooser::ProjectChooser(WContainerWidget *parent) :
    WContainerWidget(parent)
{
    setStyleClass("maindiv");

    WGroupBox *mainBox = new WGroupBox("Select Existing Project");
    mainBox->setStyleClass("groupdiv");

    mProjectSelectionBox = new WSelectionBox();
    mProjectSelectionBox->setSelectionMode(SingleSelection);

    WPushButton *loadButton = new WPushButton("Load");
    mDeleteButton = new WPushButton("Delete");
    WGridLayout *buttonLayout = new WGridLayout();
    buttonLayout->addWidget(loadButton, 0, 0, AlignCenter | AlignMiddle);
    buttonLayout->addWidget(mDeleteButton, 0, 1, AlignCenter | AlignMiddle);

    WGridLayout *boxLayout = new WGridLayout();
    boxLayout->addWidget(new WText("Projects:"), 0, 0);
    boxLayout->addWidget(mProjectSelectionBox, 1, 0);
    boxLayout->addLayout(buttonLayout, 2, 0, AlignCenter);
    boxLayout->setRowStretch(0, -1);
    boxLayout->setRowStretch(1, 1);
    boxLayout->setRowStretch(2, -1);
    mainBox->setLayout(boxLayout);

    WGridLayout *layout = new WGridLayout();
    layout->addWidget(mainBox, 0, 0);
    setLayout(layout);

    loadButton->clicked().connect(SLOT(this, ProjectChooser::loadClicked));
    mProjectSelectionBox->doubleClicked().connect(SLOT(this, ProjectChooser::loadClicked));
    mDeleteButton->clicked().connect(SLOT(this, ProjectChooser::deleteClicked));
    mProjectSelectionBox->clicked().connect(SLOT(this, ProjectChooser::selectionChanged));

    // Message Box
    mMessageBox = new WMessageBox();
    mMessageBox->buttonClicked().connect(SLOT(this, ProjectChooser::handleMessageBoxFinished));


    resetAll();
}
Ejemplo n.º 6
0
///
//  Constructor
//
ResultsPage::ResultsPage(const MRIBrowser *mriBrowser, WContainerWidget *parent) :
    mMRIBrowser(mriBrowser),
    WContainerWidget(parent)
{
    setStyleClass("tabdiv");

    mResultsTable = new ResultsTable();

    WContainerWidget *browserContainer = new WContainerWidget();
    WContainerWidget *resultsContainer = new WContainerWidget;

    WText *showText = new WText("Show Results by User:"******"<user>");
    mUserComboBox->addItem("All");

    mSearchLineEdit = new WLineEdit("");
    mSearchLineEdit->setMinimumSize(150, WLength::Auto);
    mSearchLineEdit->resize(150, WLength::Auto);

    mSearchPushButton = new WPushButton("GO");
    WPushButton *clearButton = new WPushButton("Clear");
    WPushButton *refreshButton = new WPushButton("Refresh");

    userBox->addWidget(new WText("Search:"), 0, 2, AlignRight | AlignMiddle);
    userBox->addWidget(mSearchLineEdit, 0, 3, AlignLeft| AlignMiddle);
    userBox->addWidget(mSearchPushButton, 0, 4, AlignLeft | AlignMiddle);
    userBox->addWidget(clearButton, 0, 5, AlignLeft | AlignMiddle);
    userBox->addWidget(refreshButton, 0, 6, AlignRight | AlignMiddle);
    userBox->setColumnStretch(2, 1);
    userBox->setColumnStretch(6, 1);
    userBox->setColumnStretch(7, 3);

    mPipelineArgTable = new PipelineArgTable();
    mPipelineArgTable->resize(WLength::Auto, 150);
    mPipelineArgTable->setMinimumSize(WLength::Auto,
                                      WLength(150, WLength::Pixel));
    mPipelineArgTable->setMaximumSize(WLength::Auto,
                                      WLength(150, WLength::Pixel));

    mJobStatus = new JobStatus();
    WHBoxLayout *bottomLayout = new WHBoxLayout();
    bottomLayout->addWidget(mPipelineArgTable);
    bottomLayout->addWidget(mJobStatus);



    WGridLayout *browserLayout = new WGridLayout();
    browserLayout->addLayout(userBox, 0, 0);
    browserLayout->addWidget(mResultsTable, 1, 0);
    browserLayout->addLayout(bottomLayout, 2, 0);
    browserLayout->setRowStretch(0, -1);
    browserLayout->setRowStretch(1, 1);
    browserLayout->setRowStretch(2, -1);
    browserContainer->setLayout(browserLayout);


    mBackButton = new WPushButton("<- Back");

    WTabWidget *tabWidget = new WTabWidget();
    tabWidget->setStyleClass("toptabdiv");
    mMonitorLogTab = new MonitorLogTab(mriBrowser);
    mMonitorResultsTab = new MonitorResultsTab(mriBrowser);
    tabWidget->addTab(mMonitorResultsTab, "Results");
    tabWidget->addTab(mMonitorLogTab, "Logs");

    WGridLayout *resultsLayout = new WGridLayout();
    resultsLayout->addWidget(mBackButton, 0, 0, AlignLeft | AlignMiddle);
    resultsLayout->addWidget(tabWidget, 1, 0);
    resultsLayout->setRowStretch(0, -1);
    resultsLayout->setRowStretch(1, 1);
    resultsContainer->setLayout(resultsLayout);

    mStackedWidget = new WStackedWidget();
    mStackedWidget->addWidget(browserContainer);
    mStackedWidget->addWidget(resultsContainer);

    WGridLayout *layout = new WGridLayout();
    layout->addWidget(mStackedWidget, 0, 0);
    layout->setRowStretch(0, -1);
    setLayout(layout);

    mUserComboBox->activated().connect(SLOT(this, ResultsPage::userChanged));
    mSearchPushButton->clicked().connect(SLOT(this, ResultsPage::searchPushed));
    clearButton->clicked().connect(SLOT(this, ResultsPage::clearPushed));
    mResultsTable->resultSelected().connect(SLOT(this, ResultsPage::resultSelected));
    mResultsTable->resultClicked().connect(SLOT(this, ResultsPage::resultClicked));
    mBackButton->clicked().connect(SLOT(this, ResultsPage::backPushed));
    refreshButton->clicked().connect(SLOT(this, ResultsPage::refreshClicked));

    // All items in the tabbed widget need to be resized to 100% to
    // fill the contents.  This trick came from the Wt WTabWidget
    // documentation and took me a good half a day to figure out.
    mMonitorLogTab->resize(WLength(100, WLength::Percentage),
                           WLength(100, WLength::Percentage));
    mMonitorResultsTab->resize(WLength(100, WLength::Percentage),
                               WLength(100, WLength::Percentage));
}