static char *FindUserTemplate(void) { char *dir = getCwd(); for(; ; ) { char *tmplDir = combine(dir, "Template"); char *tmplSln; tmplSln = combine(tmplDir, "UUUUTMPL.sln"); if(existFile(tmplSln)) { memFree(dir); memFree(tmplSln); cout("User_Template: %s\n", tmplDir); return tmplDir; } memFree(tmplDir); memFree(tmplSln); dir = changeLocal_xc(dir, ""); errorCase(strlen(dir) == 2); UTIntoParentStep++; } error(); // never return NULL; }
XJudgerMain::XJudgerMain(QMainWindow *parent): QMainWindow(parent){ //Basic Building CurrentDir = getCwd(); if (objectName().isEmpty()) setObjectName("XJudgerMain"); setGeometry((QApplication::desktop() -> width() - 800) / 2, (QApplication::desktop() -> height() - 600) / 2, 800, 600); QIcon WindowIcon; setWindowIcon(QIcon(":/Icons/XJudgerMain.png")); MainActionExit = new QAction(this); MainActionExit -> setObjectName("MainActionExit"); MainActionAbout = new QAction(this); MainActionAbout -> setObjectName("MainActionAbout"); CentralWidget = new QWidget(this); CentralWidget -> setObjectName("CentralWidget"); TestForm = new XJudgerTest(this); ViewForm = new XJudgerView(this); setCentralWidget(CentralWidget); MenuBar = new QMenuBar(this); MenuBar -> setObjectName("MenuBar"); MainMenuFile = new QMenu(MenuBar); MainMenuFile -> setObjectName("MainMenuFile"); MainMenuHelp = new QMenu(MenuBar); MainMenuHelp -> setObjectName("MainMenuHelp"); setMenuBar(MenuBar); StatusBar = new QStatusBar(this); StatusBar -> setObjectName("StatusBar"); setStatusBar(StatusBar); MenuBar -> addAction(MainMenuFile -> menuAction()); MainMenuFile -> addAction(MainActionExit); MenuBar -> addAction(MainMenuHelp -> menuAction()); MainMenuHelp -> addAction(MainActionAbout); MainTab = new QTabWidget(this); MainTab -> setObjectName("MainTab"); DataConfig = new DataInfo(CurrentDir); LayoutMain = new QGridLayout(CentralWidget); LayoutMain -> setObjectName("LayoutMain"); LayoutMain -> addWidget(MainTab, 0, 0, 0, 0); //Building TabData TabData = new QWidget; TabData -> setObjectName(QString::fromUtf8("TabData")); MainTab -> addTab(TabData, QString::fromUtf8("Data")); GroupViewProb = new QGroupBox(TabData); GroupViewProb -> setObjectName(QString::fromUtf8("GroupViewProb")); GroupViewCase = new QGroupBox(TabData); GroupViewCase -> setObjectName(QString::fromUtf8("GroupViewCase")); GroupViewData = new QGroupBox(TabData); GroupViewData -> setObjectName(QString::fromUtf8("GroupViewData")); MainViewData = new TreeView(GroupViewData); MainViewData -> setObjectName(QString::fromUtf8("MainViewData")); MainViewData -> setMaximumWidth(200); TextProbName = new QPlainTextEdit(GroupViewProb); TextProbName -> setObjectName("TextProbName"); TextProbName -> setMaximumHeight(30); TextProbName -> setTabChangesFocus(1); LabelProb = new QLabel(GroupViewProb); LabelProb -> setObjectName("LabelProb"); LabelProb -> setText("Problem Name: "); TextInput = new QPlainTextEdit(GroupViewProb); TextInput -> setObjectName("TextInput"); TextInput -> setMaximumHeight(30); TextInput -> setTabChangesFocus(1); LabelInput = new QLabel(GroupViewProb); LabelInput -> setObjectName("LabelInput"); LabelInput -> setText("Input File Name: "); TextOutput = new QPlainTextEdit(GroupViewProb); TextOutput -> setObjectName("TextOutput"); TextOutput -> setMaximumHeight(30); TextOutput -> setTabChangesFocus(1); LabelOutput = new QLabel(GroupViewProb); LabelOutput -> setObjectName("LabelOutput"); LabelOutput -> setText("Output File Name: "); TextSource = new QPlainTextEdit(GroupViewProb); TextSource -> setObjectName("TextSource"); TextSource -> setMaximumHeight(30); TextSource -> setTabChangesFocus(1); LabelSource = new QLabel(GroupViewProb); LabelSource -> setObjectName("LabelSource"); LabelSource -> setText("Source File Name: "); LabelCaseInput = new QLabel(GroupViewCase); LabelCaseInput -> setObjectName("LabelCaseInput"); LabelCaseInput -> setText("Input File Name: "); TextCaseInput = new QPlainTextEdit(GroupViewCase); TextCaseInput -> setObjectName("TextCaseInput"); TextCaseInput -> setMaximumHeight(30); TextCaseInput -> setTabChangesFocus(1); LabelCaseOutput = new QLabel(GroupViewCase); LabelCaseOutput -> setObjectName("LabelCaseOutput"); LabelCaseOutput -> setText("Output File Name: "); TextCaseOutput = new QPlainTextEdit(GroupViewProb); TextCaseOutput -> setObjectName("TextCaseOutput"); TextCaseOutput -> setMaximumHeight(30); TextCaseOutput -> setTabChangesFocus(1); LabelCaseScore = new QLabel(GroupViewCase); LabelCaseScore -> setObjectName("LabelCaseScore"); LabelCaseScore -> setText("Score: "); TextCaseScore = new QPlainTextEdit(GroupViewCase); TextCaseScore -> setObjectName("TextCaseScore"); TextCaseScore -> setMaximumHeight(30); TextCaseScore -> setTabChangesFocus(1); LabelCaseTL = new QLabel(GroupViewCase); LabelCaseTL -> setObjectName("LabelCaseTL"); LabelCaseTL -> setText("Time Limit (second): "); TextCaseTL = new QPlainTextEdit(GroupViewCase); TextCaseTL -> setObjectName("TextCaseTL"); TextCaseTL -> setMaximumHeight(30); TextCaseTL -> setTabChangesFocus(1); LabelCaseML = new QLabel(GroupViewCase); LabelCaseML -> setObjectName("LabelCaseML"); LabelCaseML -> setText("Memory Limit (kb): "); TextCaseML = new QPlainTextEdit(GroupViewCase); TextCaseML -> setObjectName("TextCaseML"); TextCaseML -> setMaximumHeight(30); TextCaseML -> setTabChangesFocus(1); LayoutTabData = new QGridLayout(TabData); LayoutTabData -> setObjectName("LayoutTabData"); LayoutTabData -> addWidget(GroupViewData, 0, 0, 10, 1, Qt::AlignLeft); LayoutTabData -> addWidget(GroupViewProb, 0, 1, 10, 1, Qt::AlignTop); LayoutTabData -> addWidget(GroupViewCase, 0, 1, 10, 1, Qt::AlignTop); GroupViewProb -> setVisible(0); GroupViewCase -> setVisible(0); LayoutGroupProb = new QGridLayout(GroupViewProb); LayoutGroupProb -> setObjectName("LayoutGroupProb"); LayoutGroupProb -> addWidget(TextProbName, 0, 1, 1, 1); LayoutGroupProb -> addWidget(LabelProb, 0, 0, 1, 1); LayoutGroupProb -> addWidget(TextInput, 1, 1, 1, 1); LayoutGroupProb -> addWidget(LabelInput, 1, 0, 1, 1); LayoutGroupProb -> addWidget(TextOutput, 2, 1, 1, 1); LayoutGroupProb -> addWidget(LabelOutput, 2, 0, 1, 1); LayoutGroupProb -> addWidget(TextSource, 3, 1, 1, 1); LayoutGroupProb -> addWidget(LabelSource, 3, 0, 1, 1); LayoutGroupProb -> setSizeConstraint(QLayout::SetMinAndMaxSize); LayoutGroupData = new QGridLayout(GroupViewData); LayoutGroupData -> setObjectName("LayoutGroupData"); LayoutGroupData -> setSizeConstraint(QLayout::SetMinAndMaxSize); LayoutGroupData -> addWidget(MainViewData, 0, 0, 1, 1); LayoutGroupCase = new QGridLayout(GroupViewCase); LayoutGroupCase -> setObjectName("LayoutGroupCase"); LayoutGroupCase -> addWidget(TextCaseInput, 0, 1, 1, 1); LayoutGroupCase -> addWidget(LabelCaseInput, 0, 0, 1, 1); LayoutGroupCase -> addWidget(TextCaseOutput, 1, 1, 1, 1); LayoutGroupCase -> addWidget(LabelCaseOutput, 1, 0, 1, 1); LayoutGroupCase -> addWidget(TextCaseScore, 2, 1, 1, 1); LayoutGroupCase -> addWidget(LabelCaseScore, 2, 0, 1, 1); LayoutGroupCase -> addWidget(TextCaseTL, 3, 1, 1, 1); LayoutGroupCase -> addWidget(LabelCaseTL, 3, 0, 1, 1); LayoutGroupCase -> addWidget(TextCaseML, 4, 1, 1, 1); LayoutGroupCase -> addWidget(LabelCaseML, 4, 0, 1, 1); //Building TabTest TabTest = new QWidget; TabTest -> setObjectName(QString::fromUtf8("TabTest")); MainTab -> addTab(TabTest, QString::fromUtf8("Test")); MainViewScore = new TreeView(TabTest); MainViewScore -> setObjectName(QString::fromUtf8("MainViewScore")); MainViewScore -> setSelectionMode(QAbstractItemView::ExtendedSelection); MainViewScore -> setRootIsDecorated(0); MainViewScore -> setSortingEnabled(1); MainButtonTest = new QPushButton(TabTest); MainButtonTest -> setObjectName(QString::fromUtf8("MainButtonTest")); MainButtonTestAll = new QPushButton(TabTest); MainButtonTestAll -> setObjectName(QString::fromUtf8("MainButtonTestAll")); MainButtonRefresh = new QPushButton(TabTest); MainButtonRefresh -> setObjectName(QString::fromUtf8("MainButtonRefresh")); LayoutTabTest = new QGridLayout(TabTest); LayoutTabTest -> setObjectName("LayoutTabTest"); LayoutTabTest -> addWidget(MainViewScore, 0, 0, 1, 4); LayoutTabTest -> addWidget(MainButtonTest, 1, 0, 1, 1); LayoutTabTest -> addWidget(MainButtonTestAll, 1, 1, 1, 1); LayoutTabTest -> addWidget(MainButtonRefresh, 1, 2, 1, 1); //Building MenuData MenuData = new QMenu(this); MenuData -> setObjectName("MenuData"); MainViewData -> setMenu(MenuData); QAction *ActProbInsert = MenuData -> addAction("Insert Problem"); QAction *ActProbRemove = MenuData -> addAction("Remove Problem"); MenuData -> addSeparator(); QAction *ActCaseInsert = MenuData -> addAction("Insert Test Case"); QAction *ActCaseRemove = MenuData -> addAction("Remove Test Case"); MenuData -> addSeparator(); QAction *ActConfigCase = MenuData -> addAction("Automatically Configing Test Cases"); //Set Title setWindowTitle(ProjectName " - " MainVersion " - " VersionNumber); MainActionExit -> setText("Exit"); MainActionAbout -> setText("About"); MainMenuFile -> setTitle("File"); MainMenuHelp -> setTitle("Help"); MainButtonTest -> setText("Test"); MainButtonTestAll -> setText("Test All"); MainButtonRefresh -> setText("Refresh"); //Connecting Objects connect(MainActionExit, SIGNAL(triggered()), this, SLOT(shut())); connect(MainActionAbout, SIGNAL(triggered()), this, SLOT(showAbout())); connect(ActProbInsert, SIGNAL(triggered()), this, SLOT(insertProblem())); connect(ActProbRemove, SIGNAL(triggered()), this, SLOT(removeProblem())); connect(ActCaseInsert, SIGNAL(triggered()), this, SLOT(insertTestCase())); connect(ActCaseRemove, SIGNAL(triggered()), this, SLOT(removeTestCase())); connect(ActConfigCase, SIGNAL(triggered()), this, SLOT(configTestCase())); connect(MainButtonTest, SIGNAL(clicked()), this, SLOT(testSelUser())); connect(MainButtonTestAll, SIGNAL(clicked()), this, SLOT(testAllUser())); connect(MainButtonRefresh, SIGNAL(clicked()), this, SLOT(scoreRefresh())); connect(MainViewData, SIGNAL(leftClicked()), this, SLOT(showProbCase())); connect(MainViewData, SIGNAL(rightClicked()), this, SLOT(showProbCase())); connect(MainViewData, SIGNAL(keyPressed(int)), this, SLOT(showProbCase())); connect(MainViewScore, SIGNAL(doubleClicked()), this, SLOT(viewUserInfo())); //Connect to Case Change connect(TextCaseInput, SIGNAL(textChanged()), this, SLOT(updateTestCase())); connect(TextCaseScore, SIGNAL(textChanged()), this, SLOT(updateTestCase())); connect(TextCaseOutput, SIGNAL(textChanged()), this, SLOT(updateTestCase())); connect(TextCaseTL, SIGNAL(textChanged()), this, SLOT(updateTestCase())); connect(TextCaseML, SIGNAL(textChanged()), this, SLOT(updateTestCase())); //Connect to Problem Change connect(TextInput, SIGNAL(textChanged()), this, SLOT(updateProblem())); connect(TextSource, SIGNAL(textChanged()), this, SLOT(updateProblem())); connect(TextOutput, SIGNAL(textChanged()), this, SLOT(updateProblem())); connect(TextProbName, SIGNAL(textChanged()), this, SLOT(updateProblem())); //List -- Show Objects updateDir(); showData(); }
AP_MSG_HANDLER_METHOD(ApLib, System_GetCurrentWorkingDirectory) { pMsg->sCwd = getCwd(); pMsg->apStatus = ApMessage::Ok; }