DlgFieldFunctionEditor::DlgFieldFunctionEditor(QWidget *parent) : QDialog(parent), ui(new Ui::DlgFieldFunctionEditor) { ui->setupUi(this); m_glEditor = new GLFieldEditor; ui->scrollAreaOpenGL->setWidget(m_glEditor); m_timer = new QTimer(this); connect(m_timer, SIGNAL(timeout()), this, SLOT(actRunNext())); connect(ui->btnRunNext, SIGNAL(clicked()), this, SLOT(actRunNext())); connect(ui->btnRunAll, SIGNAL(clicked()), this, SLOT(actRunAll())); connect(ui->btnStop, SIGNAL(clicked()), this, SLOT(actStop())); connect(ui->btnOpen, SIGNAL(clicked()), this, SLOT(actOpenFile())); connect(ui->btnClearAll, SIGNAL(clicked()), this, SLOT(actDeleteAll())); connect(ui->btnDelete, SIGNAL(clicked()), this, SLOT(actDelete())); //connect(ui->btnDelete, SIGNAL(clicked()), this, SLOT(actDelete())); m_actCurrentItem = 0; m_actIndexMember = 0; }
void ListUsers::contextMenuEvent(QContextMenuEvent *event) { ItemUser* useritem = (ItemUser*)getCurrentItem(); if( useritem == NULL ) return; bool me = false; if( useritem->getId() == MonitorHost::getUid()) me = true; QMenu menu(this); QMenu * submenu; QAction *action; action = new QAction( "Show Log", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRequestLog() )); menu.addAction( action); if( me || af::Environment::VISOR() ) { menu.addSeparator(); action = new QAction( "Annonate", this); connect( action, SIGNAL( triggered() ), this, SLOT( actAnnotate() )); menu.addAction( action); menu.addSeparator(); action = new QAction( "Set Max Running Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMaxRunningTasks() )); menu.addAction( action); action = new QAction( "Set Hosts Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actHostsMask() )); menu.addAction( action); action = new QAction( "Set Exclude Hosts Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actHostsMaskExclude() )); menu.addAction( action); if(( af::Environment::VISOR()) || ( af::Environment::getPermUserModHisPriority())) { action = new QAction( "Set Prority", this); connect( action, SIGNAL( triggered() ), this, SLOT( actPriority() )); menu.addAction( action); } menu.addSeparator(); action = new QAction( "Set Job Avoid Errors", this); connect( action, SIGNAL( triggered() ), this, SLOT( actErrorsAvoidHost() )); menu.addAction( action); action = new QAction( "Set Task Avoid Errors", this); connect( action, SIGNAL( triggered() ), this, SLOT( actErrorsSameHost() )); menu.addAction( action); action = new QAction( "Set Task Error Retries", this); connect( action, SIGNAL( triggered() ), this, SLOT( actErrorRetries() )); menu.addAction( action); action = new QAction( "Set Errors Forgive Time", this); connect( action, SIGNAL( triggered() ), this, SLOT( actErrorsForgiveTime() )); menu.addAction( action); menu.addSeparator(); action = new QAction( "Set Jobs Life Time", this); connect( action, SIGNAL( triggered() ), this, SLOT( actJobsLifeTime() )); menu.addAction( action); menu.addSeparator(); submenu = new QMenu("Jobs Solving Method", this); action = new QAction("By Order", this); connect( action, SIGNAL( triggered() ), this, SLOT( actSolveJobsByOrder() )); submenu->addAction( action); action = new QAction("Parallel", this); connect( action, SIGNAL( triggered() ), this, SLOT( actSolveJobsParallel() )); submenu->addAction( action); menu.addMenu( submenu); menu.addSeparator(); action = new QAction( "Custom Data", this); connect( action, SIGNAL( triggered() ), this, SLOT( actCustomData() )); menu.addAction( action); menu.addSeparator(); action = new QAction( "Delete", this); action->setEnabled( useritem->numjobs == 0 ); connect( action, SIGNAL( triggered() ), this, SLOT( actDelete() )); menu.addAction( action); } menu.exec( event->globalPos()); }
ListJobs::ListJobs( QWidget* parent): ListNodes( parent, "jobs") { if( af::Environment::VISOR()) m_ctrl_sf = new CtrlSortFilter( this, &ms_SortType1_SU, &ms_SortAscending1_SU, &ms_SortType2_SU, &ms_SortAscending2_SU, &ms_FilterType_SU, &ms_FilterInclude_SU, &ms_FilterMatch_SU, &ms_FilterString_SU); else m_ctrl_sf = new CtrlSortFilter( this, &ms_SortType1, &ms_SortAscending1, &ms_SortType2, &ms_SortAscending2, &ms_FilterType, &ms_FilterInclude, &ms_FilterMatch, &ms_FilterString); m_ctrl_sf->addSortType( CtrlSortFilter::TNONE); m_ctrl_sf->addSortType( CtrlSortFilter::TTIMECREATION); m_ctrl_sf->addSortType( CtrlSortFilter::TTIMERUN); m_ctrl_sf->addSortType( CtrlSortFilter::TTIMESTARTED); m_ctrl_sf->addSortType( CtrlSortFilter::TTIMEFINISHED); m_ctrl_sf->addSortType( CtrlSortFilter::TNUMRUNNINGTASKS); m_ctrl_sf->addSortType( CtrlSortFilter::TSERVICE); m_ctrl_sf->addSortType( CtrlSortFilter::TNAME); m_ctrl_sf->addFilterType( CtrlSortFilter::TNONE); m_ctrl_sf->addFilterType( CtrlSortFilter::TNAME); m_ctrl_sf->addFilterType( CtrlSortFilter::TSERVICE); if( af::Environment::VISOR()) { m_ctrl_sf->addSortType( CtrlSortFilter::TPRIORITY); m_ctrl_sf->addSortType( CtrlSortFilter::THOSTNAME); m_ctrl_sf->addSortType( CtrlSortFilter::TUSERNAME); m_ctrl_sf->addFilterType( CtrlSortFilter::THOSTNAME); m_ctrl_sf->addFilterType( CtrlSortFilter::TUSERNAME); } initSortFilterCtrl(); CtrlJobs * control = new CtrlJobs( m_ctrl_sf, this); m_ctrl_sf->getLayout()->addWidget( control); // Add left panel buttons: ButtonPanel * bp; bp = addButtonPanel("LOG","jobs_log","Show job log."); connect( bp, SIGNAL( sigClicked()), this, SLOT( actRequestLog())); bp = addButtonPanel("EHO","jobs_show_err_hosts","Show error hosts."); connect( bp, SIGNAL( sigClicked()), this, SLOT( actRequestErrorHostsList())); bp = addButtonPanel("PAU","jobs_pause","Pause selected jobs.","P"); connect( bp, SIGNAL( sigClicked()), this, SLOT( actPause())); bp = addButtonPanel("STA","jobs_start","Start selected jobs.","S"); connect( bp, SIGNAL( sigClicked()), this, SLOT( actStart())); bp = addButtonPanel("REH","jobs_reset_avoid_hosts","Reset error hosts.","E"); connect( bp, SIGNAL( sigClicked()), this, SLOT( actResetErrorHosts())); bp = addButtonPanel("RET","jobs_restart_error_tasks","Restart error tasks.","R"); connect( bp, SIGNAL( sigClicked()), this, SLOT( actRestartErrors())); bp = addButtonPanel("DEL","jobs_delete","Delete selected jobs.","D", true); connect( bp, SIGNAL( sigClicked()), this, SLOT( actDelete())); bp = addButtonPanel("DDJ","jobs_delete_done","Delete all done jobs.","", true); connect( bp, SIGNAL( sigClicked()), this, SLOT( actDeleteDone())); init(); QTimer * timer = new QTimer(this); timer->start( 1000 * af::Environment::getWatchRefreshGuiSec()); connect( timer, SIGNAL( timeout()), this, SLOT( repaintItems())); m_parentWindow->setWindowTitle("Jobs:"); }
/* void ListJobs::v_connectionLost() { if( m_parentWindow != (QWidget*)Watch::getDialog()) m_parentWindow->close(); } */ void ListJobs::contextMenuEvent( QContextMenuEvent *event) { QMenu menu(this); QMenu * submenu; QAction *action; ItemJob* jobitem = (ItemJob*)getCurrentItem(); if( jobitem == NULL ) return; int selectedItemsCount = getSelectedItemsCount(); if( jobitem->folders.size()) { if( af::Environment::hasRULES()) { action = new QAction("Open RULES", this); connect( action, SIGNAL( triggered() ), this, SLOT( actOpenRULES() )); menu.addAction( action); menu.addSeparator(); } submenu = new QMenu("Folders", this); QMapIterator<QString,QString> it( jobitem->folders); while( it.hasNext()) { it.next(); action = new QAction( QString("\"") + it.key() + "\":", this); action->setEnabled( false); submenu->addAction( action); ActionString * action_str = new ActionString( it.value(), it.value(), this); connect( action_str, SIGNAL( triggeredString(QString) ), this, SLOT( actBrowseFolder(QString) )); submenu->addAction( action_str); } menu.addMenu( submenu); menu.addSeparator(); } action = new QAction( "Show Log", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRequestLog() )); menu.addAction( action); action = new QAction( "Show Error Hosts", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRequestErrorHostsList() )); menu.addAction( action); action = new QAction( "Reset Error Hosts", this); connect( action, SIGNAL( triggered() ), this, SLOT( actResetErrorHosts() )); menu.addAction( action); action = new QAction( "Restart Error Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestartErrors() )); if( selectedItemsCount == 1) action->setEnabled( jobitem->state & AFJOB::STATE_ERROR_MASK); menu.addAction( action); menu.addSeparator(); submenu = new QMenu("Start/Stop/Restart", this); menu.addMenu( submenu); action = new QAction( "Restart Running Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestartRunning() )); if( selectedItemsCount == 1) action->setEnabled( jobitem->state & AFJOB::STATE_RUNNING_MASK); submenu->addAction( action); action = new QAction( "Restart Skipped Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestartSkipped() )); if( selectedItemsCount == 1) action->setEnabled( jobitem->state & AFJOB::STATE_SKIPPED_MASK); submenu->addAction( action); action = new QAction( "Restart Done Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestartDone() )); submenu->addAction( action); menu.addSeparator(); action = new QAction("Start Job", this); connect( action, SIGNAL( triggered() ), this, SLOT( actStart() )); if( selectedItemsCount == 1) action->setEnabled( jobitem->state & AFJOB::STATE_OFFLINE_MASK); submenu->addAction( action); action = new QAction("Pause Job", this); connect( action, SIGNAL( triggered() ), this, SLOT( actPause() )); if( selectedItemsCount == 1) action->setEnabled( false == (jobitem->state & AFJOB::STATE_OFFLINE_MASK)); submenu->addAction( action); action = new QAction("Stop Job", this); connect( action, SIGNAL( triggered() ), this, SLOT( actStop() )); if( selectedItemsCount == 1) action->setEnabled( jobitem->state & AFJOB::STATE_RUNNING_MASK); submenu->addAction( action); action = new QAction("Restart Job", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestart() )); if( selectedItemsCount == 1) action->setEnabled(( jobitem->time_started != 0 ) || ( jobitem->state & AFJOB::STATE_SKIPPED_MASK )); submenu->addAction( action); action = new QAction("Restart&&Pause", this); connect( action, SIGNAL( triggered() ), this, SLOT( actRestartPause() )); if( selectedItemsCount == 1) action->setEnabled(( jobitem->time_started != 0 ) || ( jobitem->state & AFJOB::STATE_SKIPPED_MASK )); submenu->addAction( action); menu.addSeparator(); if( af::Environment::VISOR() == false) { action = new QAction( "Move Up", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMoveUp() )); menu.addAction( action); action = new QAction( "Move Down", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMoveDown() )); menu.addAction( action); action = new QAction( "Move Top", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMoveTop() )); menu.addAction( action); action = new QAction( "Move Bottom", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMoveBottom() )); menu.addAction( action); } else { action = new QAction("Change Owner", this); connect( action, SIGNAL( triggered() ), this, SLOT( actSetUser() )); menu.addAction( action); } menu.addSeparator(); submenu = new QMenu( "Set Parameter", this); action = new QAction( "Max Running Tasks", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMaxRunningTasks() )); submenu->addAction( action); action = new QAction( "Max Run Tasks Per Host", this); connect( action, SIGNAL( triggered() ), this, SLOT( actMaxRunTasksPerHost() )); submenu->addAction( action); action = new QAction( "Hosts Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actHostsMask() )); submenu->addAction( action); action = new QAction( "Hosts Exclude Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actHostsMaskExclude() )); submenu->addAction( action); if(( af::Environment::VISOR()) || ( af::Environment::getPermUserModJobPriority())) { action = new QAction( "Priority", this); connect( action, SIGNAL( triggered() ), this, SLOT( actPriority() )); submenu->addAction( action); } action = new QAction( "Depend Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actDependMask() )); submenu->addAction( action); action = new QAction( "Global Depend Mask", this); connect( action, SIGNAL( triggered() ), this, SLOT( actDependMaskGlobal() )); submenu->addAction( action); action = new QAction( "Wait Time", this); connect( action, SIGNAL( triggered() ), this, SLOT( actWaitTime() )); submenu->addAction( action); action = new QAction( "Preview Approval", this); connect( action, SIGNAL( triggered() ), this, SLOT( actPreviewApproval() )); submenu->addAction( action); action = new QAction( "No Preview Approval", this); connect( action, SIGNAL( triggered() ), this, SLOT( actNoPreviewApproval() )); submenu->addAction( action); action = new QAction( "OS Needed", this); connect( action, SIGNAL( triggered() ), this, SLOT( actNeedOS() )); submenu->addAction( action); action = new QAction( "Properties Needed", this); connect( action, SIGNAL( triggered() ), this, SLOT( actNeedProperties() )); submenu->addAction( action); action = new QAction( "Post Command", this); connect( action, SIGNAL( triggered() ), this, SLOT( actPostCommand() )); submenu->addAction( action); action = new QAction( "Life Time", this); connect( action, SIGNAL( triggered() ), this, SLOT( actLifeTime() )); submenu->addAction( action); submenu->addSeparator(); action = new QAction( "Hidden", this); connect( action, SIGNAL( triggered() ), this, SLOT( actSetHidden() )); submenu->addAction( action); action = new QAction( "Not Hidden", this); connect( action, SIGNAL( triggered() ), this, SLOT( actUnsetHidden() )); submenu->addAction( action); submenu->addSeparator(); action = new QAction( "Annotation", this); connect( action, SIGNAL( triggered() ), this, SLOT( actAnnotate() )); submenu->addAction( action); action = new QAction( "Custom Data", this); connect( action, SIGNAL( triggered() ), this, SLOT( actCustomData() )); submenu->addAction( action); menu.addMenu( submenu); menu.addSeparator(); if( selectedItemsCount == 1) { if( jobitem->getBlocksNum() > 1) { submenu = new QMenu( "Tasks Blocks", this); for( int b = -1; b < jobitem->getBlocksNum(); b++) { QMenu * subsubmenu = new QMenu( b == -1 ? QString("_to_all_") : jobitem->getBlockName(b), this); jobitem->generateMenu( b, subsubmenu , this); submenu->addMenu( subsubmenu); } } else { submenu = new QMenu( "Tasks Block", this); jobitem->generateMenu( 0, submenu, this); } } else { submenu = new QMenu( "All Selected Blocks", this); jobitem->generateMenu( -1, submenu, this); } menu.addMenu( submenu); menu.addSeparator(); action = new QAction( "Listen", this); connect( action, SIGNAL( triggered() ), this, SLOT( actListenJob() )); menu.addAction( action); menu.addSeparator(); // System job ID is 1, and can not be deleted if( jobitem->getId() != 1 ) { action = new QAction( "Delete All Done", this); connect( action, SIGNAL( triggered() ), this, SLOT( actDeleteDone())); menu.addAction( action); action = new QAction( "Delete", this); connect( action, SIGNAL( triggered() ), this, SLOT( actDelete())); menu.addAction( action); } menu.exec(event->globalPos()); }