Beispiel #1
0
    void Run(std::string fname) {
        if (!m_reader.Read(fname)) {
            std::cerr << "Can not read input data\n";
            assert(0);
        }
        { LogEx("Read field\n" << m_reader); }

        int needTasks = m_reader.GetGridSize() * m_reader.GetGridSize() + 1;
        if (m_env.m_procCnt < needTasks) {
            std::stringstream ss;
            ss << "not enough tasks: need " << needTasks << " got " << m_env.m_procCnt;
            throw ss.str();
        } else if (needTasks < m_env.m_procCnt) {
            for (int i = needTasks; i < m_env.m_procCnt; ++i) {
                SendCmd(CMD_DIE, i);
            }
        }
        SendTasks();
        SendGo();
        if (WaitFinish()) {
            NotifyAllTasks(CMD_FIN_FOUND);
            std::string way;
            GetWay(way);
            LogEx("Way found: " << way);
            std::cerr << "Way found: " << way << "\n";
        } else {
            std::cerr << "Can not find way\n";
        }
        NotifyAllTasks(CMD_DIE);
    }
QVariantMap LxDialogBase::print(QString printerName, QString content, int isPreview)
{
	LogEx("void LomoX::print( QString printerName, QString content )");
	LogEx(("Printer name:" + printerName).toLocal8Bit().data());
	LogEx(("Printer content:" + content).toLocal8Bit().data());
	contentForPrint = content;
	QList <QPrinterInfo> plist = QPrinterInfo::availablePrinters();
	LogEx("All available printers:");
	bool printerAvailable = false;
	for (QPrinterInfo info : plist) {
		LogEx(info.printerName().toLocal8Bit().data());
		if (printerName == info.printerName()) {
			printerAvailable = true;
			break;
		}
	}
	int resultCode = 0;
	QString resultInfo = "success";
	if (printerAvailable) {
		QPrinter printer(QPrinter::HighResolution);
		QPrintPreviewDialog preview(&printer);
		printer.setPrinterName(printerName);
		printer.setFullPage(true);
		if (isPreview) {
			connect(&preview, SIGNAL(paintRequested(QPrinter*)),
				this, SLOT(print(QPrinter*)));
			preview.exec();
		} else {
			printContent(printer, content);
		}
	} else {
Beispiel #3
0
    void RecieveField() {
        CMpiConnections conn;
        GetData(conn, 0);

        CMatrix matr;
        GetData(matr, 0);
        { LogEx("Got matr\n" << matr); }
        m_field.SetCommunicator(new CMpiCommunicator(conn, *this, *this));
        m_field.GetType() = matr;
        m_field.Resize(matr.m_dim);
        { LogEx("Created field\n" << m_field); }
    }
void LxDialogBase::reload()
{
    LogEx("void LomoX::reload()");
    VERIFY_IN_POINTER(m_ptrWebView);
    AppIsRunning(1000);
    m_ptrWebView->stop();
    m_ptrWebView->reload();
}
Beispiel #5
0
void LxDialogBase::showMaximized()
{
    LogEx("void LomoX::showMaximized()");
    VERIFY_IN_POINTER(m_ptrWebView);
    if (m_ptrWebView->isMaximized())
        return;
    else
        m_ptrWebView->showMaximized();
}
void LxDialogBase::move()
{
    LogEx("void LomoX::move()");
    VERIFY_IN_POINTER(m_ptrWebView);
# ifdef  Q_OS_WIN32
	WId id = m_ptrWebView->winId();
	ReleaseCapture();
	SendMessage(HWND(id), WM_SYSCOMMAND, SC_MOVE|HTCAPTION, 0);
#endif
}
Beispiel #7
0
int _tmain( int argc, _TCHAR* argv[] )
{
	LogEx( FOREGROUND_GREEN|FOREGROUND_INTENSITY, false, "*******************************************************************************" );
	LogEx( FOREGROUND_GREEN|FOREGROUND_INTENSITY, false, "**                               ~~ DerpCraft ~~                             **" );
	LogEx( FOREGROUND_GREEN|FOREGROUND_INTENSITY, false, "**                            %s %s                           **", __DATE__, __TIME__ );
	LogEx( FOREGROUND_GREEN|FOREGROUND_INTENSITY, false, "*******************************************************************************\n" );

#ifdef _DEBUG
	_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF );
#endif

	SetConsoleCtrlHandler( ConsoleMessageHandler, TRUE );
	SetXSeed( GetTickCount() );
	
	g_conf.ReadConfig( "test.txt" );

	//if( !g_DBManager.CreateWorker( 2 ) )
	//{
	//	Log( Error, "Create DB Worker Failed." );
	//	goto FAILED;
	//}

	g_world.CreateWorld( WorldDimension::Overworld, 10, WorldType::Flat );
	g_world.CreateWorld( WorldDimension::Nether, 10, WorldType::Default );

	g_srv.StartNetwork( g_conf.GetServerPort() );
	g_srv.UpdateServerInformation();

	LogEx( FOREGROUND_GREEN|FOREGROUND_INTENSITY, false, "\n*******************************************************************************\n" );

	MSG msg;
	while(GetMessage (&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

FAILED:
	Log( Error, "Failed!!" );
	system( "pause" );
	return 0;
}
//add by KeoJam 增加打印接口
void LxDialogBase::printPreview()
{
	LogEx("void LomoX::printPreview()");
	if (!m_ptrWebView)
		return;
	QPrintPreviewDialog *dialog = new QPrintPreviewDialog(m_ptrWebView);
	dialog->setAttribute(Qt::WA_DeleteOnClose);
	connect(dialog, SIGNAL(paintRequested(QPrinter*)),
		m_ptrWebView, SLOT(print(QPrinter*)));
	dialog->exec();
}
Beispiel #9
0
    virtual bool Go(uint value, CSideCoord coord) {
        LogEx("Comm Go " << coord);
        int rank = m_fields[coord.m_side];
        if (0 == rank) return false;

        SendCmd(CMD_ENTER, 0);
        SendCmd(CMD_GO, rank);
        SendData(value, rank);
        SendData(coord.Flip(), rank);
        return false;
    }
Beispiel #10
0
    virtual bool GetWay(uint value, CSideCoord coord, std::string& way) {
        LogEx("Comm GetWay value " << value << " " << coord);
        int rank = m_fields[coord.m_side];
        if (0 == rank) return false;

        SendCmd(CMD_FIND_WAY, rank);
        SendData(value, rank);
        SendData(coord.Flip(), rank);
        SendData(way, rank);

        return false;
    }
Beispiel #11
0
 bool WaitFinish() {
     Log("WaitFinish");
     int delta = 1;
     bool finFound = false;
     ECommands cmd;
     while (delta > 0) {
         cmd = RecieveCmd(MPI_ANY_SOURCE);
         switch (cmd) {
         case CMD_ENTER: {
             ++delta;
         } break;
         case CMD_FIN_FOUND: {
             finFound = true;
         }; // fall throw
         case CMD_EXIT: {
             --delta;
         } break;
         default: assert(0);
         }
         { LogEx("Now delta is " << delta); }
     }
     { LogEx("Work finished " << finFound); }
     return finFound;
 }
void LxDialogBase::showNormal()
{
    LogEx("void LomoX::normal()");
    VERIFY_IN_POINTER(m_ptrWebView);
//    m_ptrWebView->showNormal();
 	WId id = m_ptrWebView->winId();
 	ShowWindow((HWND)id, SW_RESTORE);
	if (m_nWidth == 0 && m_nHeight == 0)
	{
		qDebug() << m_ptrWebView->minimumWidth();
		SetWindowPos((HWND)id, HWND_TOP, 0, 0, m_ptrWebView->minimumWidth(), m_ptrWebView->minimumHeight(), SWP_NOMOVE);
	}
	else
		SetWindowPos((HWND)id, HWND_TOP, 0, 0, m_nWidth, m_nHeight, SWP_NOMOVE);
}
Beispiel #13
0
 void SendTasks() {
     Log("SendTasks");
     uint s = m_reader.GetGridSize();
     for (uint y = 0; y < s; ++y) {
         for (uint x = 0; x < s; ++x) {
             CMpiConnections conn = CMpiConnections(
                 s,
                 CPointCoord(x,   y-1),
                 CPointCoord(x+1, y  ),
                 CPointCoord(x,   y+1),
                 CPointCoord(x-1, y  ) );
             int task = conn.GridCoordToRank(s, CPointCoord(x, y));
             SendCmd(CMD_SEND_INPUT_DATA, task);
             SendData(conn, task);
             SendData(m_reader.Get(x, y)->GetType(), task);
             LogEx("to " << task << "\n" << *m_reader.Get(x, y));
         }
     }
 }
Beispiel #14
0
void LxDialogBase::setDialogWH( QVariant Width, QVariant Hight)
{
    LogEx("voikd LomoX::setDialogWH()");
    VERIFY_IN_POINTER(m_ptrWebView);
    if (Width.isNull()|| Hight.isNull())
        return;

    int nWidth = 0, nHeight = 0;

    if (QVariant::Double == Width.type() && QVariant::Double == Hight.type())
    {
        nWidth = (int) Width.toDouble()  + 1;
        nHeight = (int) Hight.toDouble() + 1;
        QSize size(nWidth, nHeight);
        m_ptrWebView->resize(size);
    }
    else
    {
        //榛樿
    }
}
void LxDialogBase::openUrl(QVariant url)
{
    LogEx("void LomoX::openUrl()");
    QString strUrl = url.toString();
    QDesktopServices::openUrl(QUrl(strUrl));
}
bool LxDialogBase::isFullScreen()
{
    LogEx("isFullScreen()");
    Q_CHECK_PTR(m_ptrWebView);
    return m_ptrWebView->isFullScreen();
}
bool LxDialogBase::isMinimized()
{
    LogEx("isMinimized");
    Q_CHECK_PTR(m_ptrWebView);
    return m_ptrWebView->isMinimized();
}
Beispiel #18
0
    void Run() {
        bool ok = true;
        bool finFound = false;
        bool gotField = false;
        {
            ECommands cmd = RecieveCmd(0);
            switch (cmd) {
            case CMD_SEND_INPUT_DATA: {
                RecieveField();
                gotField = true;
            } break;
            case CMD_DIE: {
                ok = false;
            } break;
            default: assert(0);
            }
        }

        while (ok && !finFound) {
            MPI_Status r;
            switch(RecieveCmd(MPI_ANY_SOURCE, &r)) {
            case CMD_DIE: {
                ok = false;
            } break;
            case CMD_SEND_TASK: {
                CPointCoord p;
                GetData(p, 0);
                bool res = m_field.Go(0, p);
                if (res) {
                    SendCmd(CMD_FIN_FOUND);
                } else {
                    SendCmd(CMD_EXIT);
                }
            } break;
            case CMD_GO: {
                uint dist;
                CSideCoord coord;
                GetData(dist,  r.MPI_SOURCE);
                GetData(coord, r.MPI_SOURCE);
                bool res = m_field.Go(dist, m_field.GetSize().FromSideCoord(coord));
                if (res) {
                    SendCmd(CMD_FIN_FOUND);
                } else {
                    SendCmd(CMD_EXIT);
                }
            } break;
            case CMD_FIN_FOUND: {
                finFound = true;
            } break;
            case CMD_NONE:
            case CMD_SEND_ANS:
            case CMD_SEND_INPUT_DATA:
            case CMD_NO_FIN:
            case CMD_FIND_WAY:
            case CMD_SEND_WAY:
            case CMD_NO_WAY:
            default: assert(0);
            }
        }

        if (!ok || !finFound) return;

        while (ok) {
            MPI_Status r;
            switch(RecieveCmd(MPI_ANY_SOURCE, &r)) {
            case CMD_START_FIND_WAY: {
                CPointCoord p;
                GetData(p, r.MPI_SOURCE);
                std::string way;
                { LogEx("CMD_START_FIND_WAY\n" << m_field); }
                bool found = m_field.GetWay(-1, p, way);
                if (found) {
                    SendCmd(CMD_SEND_WAY, 0);
                    SendData(way, 0);
                }
                { LogEx(m_field); }
            } break;
            case CMD_FIND_WAY: {
                uint dist;
                CSideCoord c;
                std::string way;
                GetData(dist, r.MPI_SOURCE);
                GetData(c, r.MPI_SOURCE);
                GetData(way, r.MPI_SOURCE);
                bool found = m_field.GetWay(dist, m_field.GetSize().FromSideCoord(c), way);
                if (found) {
                    SendCmd(CMD_SEND_WAY, 0);
                    SendData(way, 0);
                }
                { LogEx(m_field); }
            } break;
            case CMD_DIE: {
                ok = false;
            } break;
            case CMD_GO: { //skip
                uint dist;
                CSideCoord coord;
                GetData(dist,  r.MPI_SOURCE);
                GetData(coord, r.MPI_SOURCE);
            } break;
            case CMD_NONE:
            case CMD_SEND_TASK:
            case CMD_SEND_ANS:
            case CMD_SEND_INPUT_DATA:
            case CMD_FIN_FOUND:
            case CMD_NO_FIN:
            case CMD_SEND_WAY:
            case CMD_NO_WAY:
            default: assert(0);
            }
        }

        if (gotField) { LogEx(m_field); }
    }
int LxDialogBase::minimumWidth()
{
    LogEx("LMDialogBase::minimumWidth()");
    Q_CHECK_PTR(m_ptrWebView);
	return m_ptrWebView->minimumWidth();
}
void LxDialogBase::showMinimized()
{
    LogEx("void LomoX::showMinimized()");
    VERIFY_IN_POINTER(m_ptrWebView);
    m_ptrWebView->showMinimized();
}
void LxDialogBase::setUrl( QString strUrl )
{
    LogEx("setUrl");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setUrl(QUrl(strUrl));
}
LxDialogBase::~LxDialogBase()
{
    LogEx("LomoX::~LMDialogBase()");
	LxDialogs *plxDialogs = lxCoreApp->getDialogs();
	plxDialogs->remove(m_url.toString());
}
void LxDialogBase::setMaximumSize( int maxw, int maxh )
{
    LogEx("LMDialogBase::setMaximumSize( int minw, int minh )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setMaximumSize(maxw, maxh);
}
void LxDialogBase::setMinimumHeight( int minh )
{
    LogEx("LMDialogBase::setMinimumHeight( int minh )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setMinimumHeight(minh);
}
void LxDialogBase::setVisible( bool visible )
{
    LogEx("LxDialogBase::setVisible( bool visible )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setVisible(visible);
}
void LxDialogBase::setHidden( bool hidden )
{
    LogEx("LxDialogBase::setHidden( bool hidden )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setHidden(hidden);
}
void LxDialogBase::setMaximumWidth( int maxw )
{
    LogEx("LMDialogBase::setMaximumWidth( int maxw )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setMaximumWidth(maxw);
}
int LxDialogBase::maximumHeight()
{
    LogEx("LMDialogBase::maximumHeight()");
    Q_CHECK_PTR(m_ptrWebView);
    return m_ptrWebView->maximumHeight();
}
QObject* LxDialogBase::getCoreDialog()
{
    LogEx("LxDialogBase::getCoreDialog()");
    Q_CHECK_PTR(m_ptrWebView);
    return m_ptrWebView;
}
void LxDialogBase::setMaximumHeight( int maxh )
{
    LogEx("LMDialogBase::setMaximumHeight( )");
    Q_CHECK_PTR(m_ptrWebView);
    m_ptrWebView->setMaximumHeight(maxh);
}