示例#1
0
void PiwigoWindow::slotAlbumSelected()
{
    QTreeWidgetItem* const item = d->albumView->currentItem();

    // stop loading if user clicked an image
    if (item && item->text(2) == i18n("Image") )
        return;

    if (!item)
    {
        startButton()->setEnabled(false);
    }
    else
    {
        qCDebug(DIGIKAM_WEBSERVICES_LOG) << "Album selected\n";

        int albumId = item->data(1, Qt::UserRole).toInt();
        qCDebug(DIGIKAM_WEBSERVICES_LOG) << albumId << "\n";

        if (d->talker->loggedIn() && albumId )
        {
            startButton()->setEnabled(true);
        }
        else
        {
            startButton()->setEnabled(false);
        }
    }
}
示例#2
0
PiwigoWindow::PiwigoWindow(DInfoInterface* const iface,
                           QWidget* const /*parent*/)
    : WSToolDialog(nullptr, QLatin1String("PiwigoSync Dialog")),
      d(new Private(this, iface))
{
    d->pPiwigo = new PiwigoSession();

    setWindowTitle( i18n("Piwigo Export") );
    setModal(false);

    // "Start Upload" button
    startButton()->setText( i18n("Start Upload") );
    startButton()->setEnabled(false);

    connect(startButton(), SIGNAL(clicked()),
            this, SLOT(slotAddPhoto()));

    // we need to let d->talker work..
    d->talker      = new PiwigoTalker(iface, d->widget);

    // setting progressDlg and its numeric hints
    d->progressDlg = new QProgressDialog(this);
    d->progressDlg->setModal(true);
    d->progressDlg->setAutoReset(true);
    d->progressDlg->setAutoClose(true);
    d->progressDlg->setMaximum(0);
    d->progressDlg->reset();

    d->pUploadList = new QStringList;

    // connect functions
    connectSignals();

    QPointer<PiwigoLoginDlg> configDlg;
    KConfig config;

    if (!config.hasGroup("Piwigo Settings") )
    {
        configDlg = new PiwigoLoginDlg(QApplication::activeWindow(),
                                       d->pPiwigo,
                                       i18n("Edit Piwigo Data") );

        if (configDlg->exec() != QDialog::Accepted)
        {
            delete configDlg;
        }
    }

    readSettings();
    slotDoLogin();
}
示例#3
0
void PiwigoWindow::slotBusy(bool val)
{
    if (val)
    {
        setCursor(Qt::WaitCursor);
        startButton()->setEnabled(false);
    }
    else
    {
        setCursor(Qt::ArrowCursor);
        bool loggedIn = d->talker->loggedIn();
        startButton()->setEnabled(loggedIn && d->albumView->currentItem());
    }
}
示例#4
0
void ImageshackWindow::slotLoginDone(int errCode, const QString& errMsg)
{
    m_widget->updateLabels();

    if (!errCode && m_imageshack->loggedIn())
    {
        m_imageshack->saveSettings();
        startButton()->setEnabled(!m_widget->imagesList()->imageUrls().isEmpty());
        m_talker->getGalleries();
    }
    else
    {
        QMessageBox::critical(this, QString(), i18n("Login failed: %1\n", errMsg));
        startButton()->setEnabled(false);
        m_widget->m_progressBar->setVisible(false);
        slotBusy(false);
    }
}
示例#5
0
void ImageshackWindow::slotBusy(bool val)
{
    if (val)
    {
        setCursor(Qt::WaitCursor);
        m_widget->m_chgRegCodeBtn->setEnabled(false);
        startButton()->setEnabled(false);
        setRejectButtonMode(QDialogButtonBox::Cancel);
    }
    else
    {
        setCursor(Qt::ArrowCursor);
        m_widget->m_chgRegCodeBtn->setEnabled(true);
        startButton()->setEnabled(m_imageshack->loggedIn() &&
                                  !m_widget->imagesList()->imageUrls().isEmpty());
        setRejectButtonMode(QDialogButtonBox::Close);
    }
}
示例#6
0
void VkontakteWindow::updateBusyStatus(bool busy)
{
    if (m_albumsBox)
        m_albumsBox->setEnabled(!busy && m_vkapi->isAuthenticated());

    if (!busy)
    {
        setCursor(Qt::ArrowCursor);
        startButton()->setEnabled(m_vkapi->isAuthenticated());
        setRejectButtonMode(QDialogButtonBox::Close);
    }
    else
    {
        setCursor(Qt::WaitCursor);
        startButton()->setEnabled(false);
        setRejectButtonMode(QDialogButtonBox::Cancel);
    }
}
示例#7
0
menu::menu() :QGraphicsView()/*, QMainWindow()*/
{
start = new QPushButton("Start",this);
connect(start, SIGNAL (clicked()), this, SLOT (startButton()));
start->setGeometry(QRect(QPoint(100, 50),QSize(200, 50)));

kilep = new QPushButton("Kilep",this);
connect(kilep, SIGNAL (clicked()), this, SLOT (kilepButton()));
kilep->setGeometry(QRect(QPoint(100, 100),QSize(200, 50)));

menuscene = new QGraphicsScene(this);
menuscene->setSceneRect(0,0,400,400);
setScene(menuscene);
}
示例#8
0
int main(void){

	initPIC32();
	closedLoopControl( false );
	setVel2(0, 0); //Stop Engines

	while(1){
		printf("Press start to continue\n");
					
		while(!startButton());
		
		do{

			waitTick40ms();

			int ground = readLineSensors(0);
			
			 if(NEAR_LEFT_BLACK(ground))
			
				setVel2(0, 50);
				
			else if(NEAR_RIGHT_BLACK(ground))
			
				setVel2(50, 0);
				
			else if(FAR_LEFT_BLACK(ground))
			
				setVel2(-50, 50);
				
			else if (FAR_RIGHT_BLACK(ground))	
			
				setVel2(50, -50);
			
			else if(GROUND_CENTER_BLACK(ground))
				setVel2(55, 60);
			else
				setVel2(50, -50);
			

		}while(!stopButton());
	}

return 0;

}
示例#9
0
void sab_execute() {
  if(!followPoints){
    followPoints = 1;
    firstTime=1;
    visible=1;

    setVel2(0,0);
    
    printf("Beacon found at %2.0f %2.0f\n", x, y);
    while (!startButton());
  }else {
    if(beaconDir > 0) {
        setVel2(30, -30);
    } else {
        setVel2(-30, 30);
    }
  }
}
示例#10
0
	int main(void){
	
	initPIC32();
	closedLoopControl( false );
		setVel2(0, 0); //Stop Engines


	int start, oldStart = 2;
	resetCoreTimer();
		while(1){
			start = startButton();
				if(start != oldStart)
					printf("%10d %d\n",readCoreTimer()/1000, start);

			oldStart = start;
		}
	return 0;

}
示例#11
0
void Lobby::init(int playerType, sf::IpAddress* serverip, unsigned short serverPort) {
    // Setting up network
    switch (playerType)
	{
        case SERVER:
        {
            localHost = new Server(game);
            window->setTitle("SERVER");
            
            LobbyPlayer host(1, "host", colors[0]);
            game->setLocalID(1);
            
            connected.push_back(host);
        }
            break;
        case CLIENT:
        {
            localHost = new Client(game, *serverip, serverPort);
            dynamic_cast<Client*>(localHost)->connect();
            window->setTitle("CLIENT");
            
            game->setLocalID(9999);
            
            // Get all connected lobby players and add this new client
            // This will also send a LOCAL_ID message to client sending this message
            game->getSynchronizer()->requestConnectedPlayers();
        }
            break;
        default:
            break;
	}
	network = new thread(&UDPNetwork::listen, localHost);
    
    game->setLocalHost(localHost);
    
    // Buttons
    Button startButton(sf::Vector2i(window->getSize().x/2, window->getSize().y-100),
                       sf::Vector2i(100, 50), "STARTBUTTON");
    buttons.push_back(startButton);
    director->addButton(startButton);
}
示例#12
0
int main (void)
{
	int countCiclos = 100;
	//iniciçao da pic
  	initPIC32 ();
  	closedLoopControl( true );
  	setVel2(0, 0);


	printStr(__FILE__); // para saber o nome do ficheiro que esta a correr no robot
	printf("\r    battery: %d ", batteryVoltage());
	if(batteryVoltage() <94){
		printf("_Bateria fraca, MUDAR Bateria\n");

	}
	printStr("\n");
	while(1)
	{	
		while(!tick40ms);
		tick40ms=0;
		readAnalogSensors();

		//state buttons

		if(startButton() == 1) 				// Botao start(preto) primido
		{
			estado = 1;
			enableObstSens();
			leds(0x0);						//leds off
			countCiclos = 100;
		}

		else if(stopButton() == 1) 			//Botao stop(vermelho) primido
		{
			printf("Red button pressed!!! \n");
			estado = 0;
			disableObstSens();
		}

		if(estado == 1) 
		{
			TimeOut();						// timeOut => tb devia ir para uma inturrupcao
			Chegada_Farol();
			if(countCiclos++ >= 100)
			{

				Ver_Farol();
				countCiclos = 0;
			}
			Run_Beacon();
		}

		if(estado == 2)
		{
			leds(0x1);
			Stop_robot();
		}

		if(estado == 3)
			Fim();

		else if(stopButton() == 1 || estado == 0)		// deslica o funcionamento, nenhum led activo
		{
			Stop_robot();
		}
 	}
  return (0);
}
示例#13
0
HelpDialog::HelpDialog()
    : KPToolDialog(0)
{
    setWindowIcon(QIcon::fromTheme(QString::fromLatin1("kipi-ogl")));
    setWindowTitle(i18n("Usage of OpenGL Image Viewer"));
    startButton()->setVisible(false);

    KPAboutData* about = new KPAboutData(ki18n("OpenGL Image Viewer"), 0,
                                         KAboutLicense::GPL,
                                         ki18n("A Kipi plugin to view image using OpenGL."),
                                         ki18n("(c) 2007-2008, Markus Leuthold\n"
                                               "(c) 2008-2013, Gilles Caulier"));

    about->addAuthor(i18n("Markus Leuthold"), i18n("Author"),
                     QString::fromLatin1("kusi at forum dot titlis dot org"));

    about->addAuthor(i18n("Gilles Caulier"), i18n("Developer"),
                     QString::fromLatin1("caulier dot gilles at gmail dot com"));

    setAboutData(about);

    // -------------------------------------------------------------------------------------------------------------------

    QTextBrowser* brw = new QTextBrowser(this);
    setMainWidget(brw);

    brw->setHtml(i18n(
        "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\""
        "\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
        "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
        "p, li { white-space: pre-wrap; }\n"
        "</style></head><body style=\" font-family:'Sans Serif'; font-size:10pt; "
        "font-weight:400; font-style:normal;\">\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; "
        "-qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:x-large; "
        "font-weight:600; color:#5500ff;\">Image Access</span><br /></p>\n"
        "<table border=\"0\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\">\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">next image  </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">scrollwheel down/down arrow"
                            "/right arrow/PgDown/Space/n   </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">previous image   </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">scrollwheel up/up arrow/left arrow/PgUp/p   </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">quit  </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Esc    </p></td></tr></table>\n"
        "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"></p>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"
                            "\"><span style=\" font-size:x-large; color:#5500ff;\">Display</span></p>\n"
        "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large; font-weight:600; color:#5500ff;\"></p>\n"
        "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large; font-weight:600; color:#5500ff;\"></p>\n"
        "<table border=\"0\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\">\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">toggle fullscreen/normal   </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">f    </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:"
                            "0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">toggle scrollwheel action  </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">c (either zoom or change image)   </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">rotation   </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">r    </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">reset view   </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">double click    </p></td></tr>\n"
        "<tr>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-l"
                            "eft:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">original size  </p></td>\n"
        "<td>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">o   </p></td></tr></table>\n"
        "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /><span style=\" font-size:x-large; font-weight:600; color:#5500ff;\">Zooming</span></p>\n"
        "<ul style=\"-qt-list-indent: 1;\"><li style=\" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">move mouse in up/down-direction while pressing the right mouse button</li>\n"
        "<li style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">alternatively, press c and use the scrollwheel<br /></li>\n"
        "<li style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">plus/minu"
                            "s</li>\n"
        "<li style=\" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">ctrl + scrollwheel</li></ul>\n"
        "<p style=\" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:x-large; font-weight:600; color:#5500ff;\"><span style=\" font-size:x-large;\">Panning</span></p>\n"
        "<ul style=\"-qt-list-indent: 1;\"><li style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">move mouse while pressing the left button</li></ul></body></html>",
    0));

    brw->setProperty("text", QVariant(i18n(
        "<b><font color=\"#5500ff\">"
        "<font size=\"+2\">Image Access</font></font></b><br>\n"
        "<TABLE> \n"
        " <TR> \n"
        " <TD>next image</TD> \n"
        " <TD>scrollwheel down/down arrow/right arrow/PgDown/Space/n</TD>\n"
        " </TR> \n"
        " <TR> \n"
        " <TD>previous image </TD> \n"
        " <TD>scrollwheel up/up arrow/left arrow/PgUp/p </TD> \n"
        " </TR>\n"
        "<TR> \n"
        " <TD>quit</TD> \n"
        " <TD>Esc</TD> \n"
        " </TR> \n"
        " </TABLE>\n"
        "<br>\n"
        " <TH><b><font color=\"#5500ff\"><font size=\"+2\">Display</font></font></b></TH> </br>\n"
        "<TABLE> \n"
        " <TR> \n"
        " <TD>toggle fullscreen/normal </TD> \n"
        " <TD>f</TD> \n"
        " </TR> \n"
        " <TR> \n"
        " <TD>toggle scrollwheel action</TD> \n"
        " <TD>c (either zoom or change image)</TD> \n"
        " </TR>\n"
        " <TR> \n"
        " <TD>rotation </TD> \n"
        " <TD>r</TD> \n"
        " </TR> \n"
        " <TR> \n"
        " <TD>reset view </TD> \n"
        " <TD>double click</TD> \n"
        " </TR> \n"
        " <TR> \n"
        " <TD>original size</TD> \n"
        " <TD>o</TD> \n"
        " </TR>\n"
        " </TABLE>\n"
        "<br>\n"
        "\n"
        "\n"
        "<b><font color=\"#5500ff\" size=\"+2\">Zooming</font></b><br> \n"
        "<UL>\n"
        ""
        "<LI>move mouse in up/down-direction while pressing the right mouse button\n"
        "<LI>alternatively, press c and use the scrollwheel<br>\n"
        "<LI>plus/minus\n"
        "<LI>ctrl + scrollwheel\n"
        "</UL>\n"
        "\n"
        "<b><font color=\"#5500ff\" size=\"+2\">Panning</font></b><br>\n"
        "<UL> \n"
        "<LI>move mouse while pressing the left button\n"
        "</UL>",
    0)));

    // ---------------------------------------------------------------------------------------------------------------------

    resize(700, 550);
}
void SendImagesDialog::slotImagesCountChanged()
{
    startButton()->setEnabled(!d->imagesList->imagesList().isEmpty());
}
示例#15
0
void SmugWindow::slotImageListChanged()
{
    startButton()->setEnabled(!(m_widget->m_imgList->imageUrls().isEmpty()));
}
示例#16
0
void servoControl(){
    //printf("BeaconVisible=%d beaconDir=%d left=%d right=%d ServoPos=%d\n", beaconVisible, beaconDir, left, right, currServoPos);

    //led(3,visible);

    if(followPoints){
	    //printf("FOLLOW POINT\n"); 
    	getLastPoint();
    	targetX=lastPointX;
    	targetY=lastPointY;
	    if( checkPointsRadius() ){
	    	if(removePoint()){
				// update point
				printf("Found home!\n");
				setVel2(0,0);
				while (!startButton());
			}
	    }
	    //double myNorm, targetNorm;
	    double meToTargetVector [2];
		double myDirectionVector [2];
	    double myX=x, myY=y, myDir=t;	// 0.35 radians
		

		meToTargetVector[0]=(targetX-myX);
		meToTargetVector[1]=(targetY-myY);
		myDirectionVector[0]=cos(myDir);
		myDirectionVector[1]=sin(myDir);

		double radianBeaconDir = atan2(meToTargetVector[1], meToTargetVector[0]) - atan2(myDirectionVector[1], myDirectionVector[0]);

		beaconDir=-normalizeAngle(radianBeaconDir)*(180 / PI);
		int servoPos = beaconDir/6;

		printf("My position %2.1f,%2.1f;      Target Position %d,%d;         MyAngle %2.0f     AngleToNextPoint %d\n", 
		       myX, myY, targetX, targetY, (myDir*180/PI), beaconDir);   //NEGATIVO PRA ESQUERDA
		
		if(servoPos > POS_RIGHT)
		  setServoPos(POS_RIGHT);
		else if( servoPos < POS_LEFT )
		  setServoPos(POS_LEFT);
		else
		  setServoPos(servoPos);
	    
	    
    }else{
		bVis=readBeaconSens();

		if(bVis && !oldBVis){							// Started seeing beacon!
		    if(rotate_right){ 
		    	left = currServoPos; 
		    	//if(left<0 && right>=POS_RIGHT)
		    	//	right=left+15;
		    }
		    else { 
		    	right = currServoPos; 
		    	//if(right>0 && left<=POS_LEFT)
		    	//	left=right-15;
		    }
		    
		    if(currServoPos==POS_RIGHT || currServoPos==POS_LEFT){	// Got to the end of the line
		      rotate_right=!rotate_right;
		    }
		}
		else if(!bVis && oldBVis){						// Stopped seeing beacon!
		    if(rotate_right){ right = currServoPos-1; }
		    else { left = currServoPos+1; }

		    rotate_right=!rotate_right;
		} else if(currServoPos==POS_RIGHT || currServoPos==POS_LEFT){	// Got to the end of the line
		    if(currServoPos==POS_RIGHT){ right = POS_RIGHT+1; }
		    else { left = POS_LEFT-1; }

		    rotate_right=!rotate_right;
		}

		visible = bVis||oldBVis||oldBVis2;
		//led(2, visible);

		oldBVis2=oldBVis;
		oldBVis=bVis;

		beaconDir = (left + right)/2*6;
		
		//printf("Beacon at %d\n",beaconDir);

		modder = rotate_right ? 1 : -1;
		//currServoPos+=modder;

		currServoPos = visible ? currServoPos+modder*1 : currServoPos+modder*2;
		if(currServoPos>POS_RIGHT){ currServoPos=POS_RIGHT; }
		else if(currServoPos<POS_LEFT){ currServoPos=POS_LEFT; }

		setServoPos(currServoPos);
    }
    
}
示例#17
0
int main() {
	sf::ContextSettings settings;
	settings.antialiasingLevel = 8; //smoother shapes
	window.create(sf::VideoMode(800, 600), "AKB48 Ongaku Geimu (alpha) v0.4", sf::Style::Default, settings);
	window.setVerticalSyncEnabled(true);

	/*
	window.setMouseCursorVisible(false); // Hide cursor
	sf::View fixed = window.getView(); // Create a fixed view

	// Load image and create sprite
	sf::Texture mouseTexture;
	mouseTexture.loadFromFile("cursors/mayuyu.png");
	sf::Sprite mouseSprite(mouseTexture);
	mouseSprite.rotate(-45);
	*/

	srand(time(NULL)); //seed random based on time

	//load fonts
	sf::Font gameFont;
	if (!gameFont.loadFromFile("gothic.ttf")) {
		//error
		std::cout << "Cannot load font\n";
	}
	sf::Font japaneseFont;
	if (!japaneseFont.loadFromFile("msmincho.ttc")) {
		//error
		std::cout << "Cannot load font\n";
	}

	//load background
	sf::Texture backTexture;
	if (!backTexture.loadFromFile("title_screen.png")) {
		//error
	}
	backTexture.setSmooth(true);
	backTexture.setRepeated(false);
	sf::Sprite backSprite;
	backSprite.setTexture(backTexture);
	backSprite.setColor(sf::Color(255, 255, 255, 224)); //semi-transparent

	//Load title text
	sf::Text titleText;
	titleText.setCharacterSize(50);

	//load buttons
	sf::RectangleShape startButton(sf::Vector2f(300,100));
	startButton.setFillColor(sf::Color(200, 50, 5, 128));
	startButton.setOutlineThickness(5);
	startButton.setOutlineColor(sf::Color(200, 50, 5, 128));
	startButton.setPosition(250, 250);

	sf::RectangleShape createButton(sf::Vector2f(300, 100));
	createButton.setFillColor(sf::Color(10, 150, 55, 192));
	createButton.setOutlineThickness(5);
	createButton.setOutlineColor(sf::Color(10, 150, 55, 192));
	createButton.setPosition(250, 400);

	//load button text
	sf::Text startText;
	startText.setCharacterSize(50);

	sf::Text createText;
	createText.setCharacterSize(40);

	//load music player graphics
	//music player black container
	sf::RectangleShape musicBox(sf::Vector2f(311, 30));
	musicBox.setFillColor(sf::Color(32, 32, 32, 224));
	musicBox.setPosition(sf::Vector2f(484, 565));
	//play button
	sf::CircleShape playButton;
	playButton.setPointCount(3);
	playButton.setRotation(210);
	playButton.setRadius(10);
	playButton.setFillColor(sf::Color(224, 224, 224, 224));
	playButton.setOutlineColor(sf::Color(128, 128, 128, 224));
	playButton.setPosition(sf::Vector2f(498, 593));
	//stop button
	sf::CircleShape stopButton;
	stopButton.setPointCount(4);
	stopButton.setRadius(11);
	stopButton.setRotation(45);
	stopButton.setFillColor(sf::Color(224, 224, 224, 224));
	stopButton.setOutlineColor(sf::Color(128, 128, 128, 224));
	stopButton.setPosition(sf::Vector2f(523, 565));
	//skip left button
	sf::CircleShape skipLeftButton;
	skipLeftButton.setPointCount(3);
	skipLeftButton.setRotation(30);
	skipLeftButton.setRadius(5);
	skipLeftButton.setFillColor(sf::Color(224, 224, 224, 224));
	skipLeftButton.setOutlineColor(sf::Color(128, 128, 128, 224));
	//skip right button
	sf::CircleShape skipRightButton;
	skipRightButton.setPointCount(3);
	skipRightButton.setRotation(210);
	skipRightButton.setRadius(5);
	skipRightButton.setFillColor(sf::Color(224, 224, 224, 224));
	skipRightButton.setOutlineColor(sf::Color(128, 128, 128, 224));
	//music text used for displaying time and song title
	sf::Text musicText;
	musicText.setFont(gameFont);
	musicText.setCharacterSize(12);
	//duration bar
	sf::RectangleShape timeDurBar(sf::Vector2f(100, 10));
	timeDurBar.setFillColor(sf::Color(160, 160, 160, 224));
	timeDurBar.setPosition(sf::Vector2f(632, 582));
	//current time bar
	sf::RectangleShape curTimeBar(sf::Vector2f(5, 12));
	curTimeBar.setFillColor(sf::Color(224, 224, 224, 224));
	//song name bar container
	sf::RectangleShape songNameBar(sf::Vector2f(170,10));
	songNameBar.setFillColor(sf::Color(16, 16, 16, 160));
	songNameBar.setPosition(sf::Vector2f(597, 568));
	//volume container
	sf::RectangleShape volBar(sf::Vector2f(20,24));
	volBar.setFillColor(sf::Color(16, 16, 16, 160));
	volBar.setPosition(sf::Vector2f(772, 568));
	//current volume
	sf::RectangleShape curVolBar;
	curVolBar.setFillColor(sf::Color(224, 224, 224, 224));
	//divider for buttons
	sf::RectangleShape buttonDivider(sf::Vector2f(2, 30));
	buttonDivider.setFillColor(sf::Color(160, 160, 160, 224));

	//randomly play music on title screen
	bool musicPermaStop = false; //permanently stops music (do not play next music) if stop button was pressed
	std::deque<std::string> previousPlayedSongs; //holds previous played songs (for skip left button)
	sf::Music music;
	std::string titleMusic[5] = { "Heavy Rotation", "Aitakatta", "Koi Suru Fortune Cookie", "Halloween Night", "Yankee Machine Gun" };
	std::string musicChoice = titleMusic[rand() % 5];
	if (!music.openFromFile(musicChoice + ".ogg")) {
		return -1; // error
	}
	music.setVolume(50);
	music.play();

	while (window.isOpen()) {
		//window.setMouseCursorVisible(false); // Hide cursor whenever we return to the title screen
		//if music ended, pick another song from our title screen jukebox (could be the same song again)
		if (music.getStatus() == 0 && !musicPermaStop) {
			previousPlayedSongs.push_back(musicChoice); //finished playing current song, push it to previous played song list
			musicChoice = titleMusic[rand() % 5];
			if (!music.openFromFile(musicChoice + ".ogg")) {
				return -1; // error
			}
			music.play();
		}

		sf::Event event;
		while (window.pollEvent(event)) {
			if (event.type == sf::Event::TextEntered) {
				std::cout << event.text.unicode << "\n"; //debug
			}
			if (event.type == sf::Event::MouseMoved) {
				sf::Vector2i localPos = sf::Mouse::getPosition(window);

				if (localPos.x >= 250 && localPos.x <= 550
					&& localPos.y >= 250 && localPos.y <= 350) {
					//start button
					startButton.setFillColor(sf::Color(200, 50, 5, 224));
					startButton.setOutlineColor(sf::Color(200, 50, 5, 224));
				}
				else if (localPos.x >= 250 && localPos.x <= 550
					&& localPos.y >= 400 && localPos.y <= 500) {
					//create button
					createButton.setFillColor(sf::Color(10, 150, 55, 224));
					createButton.setOutlineColor(sf::Color(10, 150, 55, 224));
				}
				else if (localPos.x >= 484 && localPos.x <= 509
					&& localPos.y >= 565 && localPos.y <= 595) {
					//play button
					playButton.setFillColor(sf::Color(35, 149, 207, 224));
					//reset colors of other buttons
					stopButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipLeftButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipRightButton.setFillColor(sf::Color(224, 224, 224, 224));
				}
				else if (localPos.x >= 511 && localPos.x <= 536
					&& localPos.y >= 565 && localPos.y <= 595) {
					//stop button
					stopButton.setFillColor(sf::Color(35, 149, 207, 224));
					//reset colors of other buttons
					playButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipLeftButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipRightButton.setFillColor(sf::Color(224, 224, 224, 224));
				}
				else if (localPos.x >= 538 && localPos.x <= 563
					&& localPos.y >= 565 && localPos.y <= 595) {
					//skip left button
					skipLeftButton.setFillColor(sf::Color(35, 149, 207, 224));
					//reset colors of other buttons
					playButton.setFillColor(sf::Color(224, 224, 224, 224));
					stopButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipRightButton.setFillColor(sf::Color(224, 224, 224, 224));
				}
				else if (localPos.x >= 565 && localPos.x <= 590
					&& localPos.y >= 565 && localPos.y <= 595) {
					//skip right button
					skipRightButton.setFillColor(sf::Color(35, 149, 207, 224));
					//reset colors of other buttons
					playButton.setFillColor(sf::Color(224, 224, 224, 224));
					stopButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipLeftButton.setFillColor(sf::Color(224, 224, 224, 224));
				}
				else {
					//reset colors
					startButton.setFillColor(sf::Color(200, 50, 5, 192));
					createButton.setFillColor(sf::Color(10, 150, 55, 192));
					startButton.setOutlineColor(sf::Color(200, 50, 5, 192));
					createButton.setOutlineColor(sf::Color(10, 150, 55, 192));
					playButton.setFillColor(sf::Color(224, 224, 224, 224));
					stopButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipLeftButton.setFillColor(sf::Color(224, 224, 224, 224));
					skipRightButton.setFillColor(sf::Color(224, 224, 224, 224));
				}
			}
			if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) {
				sf::Vector2i localPos = sf::Mouse::getPosition(window);

				if (localPos.x >= 250 && localPos.x <= 550
					&& localPos.y >= 250 && localPos.y <= 350) {
					//start button
					//std::cout << "Starting campaign\n"; //debug
					music.stop();
					//window.setMouseCursorVisible(true);
					song_selection(&window, "battle");
				}
				else if (localPos.x >= 250 && localPos.x <= 550
					&& localPos.y >= 400 && localPos.y <= 500) {
					//create button
					//std::cout << "Starting beat maker\n"; //debug
					music.stop();
					//window.setMouseCursorVisible(true);
					song_selection(&window, "make");
				}
				else if (localPos.x >= 484 && localPos.x <= 509
					&& localPos.y >= 565 && localPos.y <= 595) {
					//play button
					std::cout << "status code: " << music.getStatus() << "\n"; //debug
					if (music.getStatus() == 0 || music.getStatus() == 1) {
						std::cout << "\ttrying to play music\n"; //debug
						music.play();
						musicPermaStop = false;
					}
					else if (music.getStatus() == 2) {
						std::cout << "\ttrying to pause music\n"; //debug
						music.pause();
						musicPermaStop = false;
					}
					std::cout << "\tcode now: " << music.getStatus() << "\n"; //debug
				}
				else if (localPos.x >= 511 && localPos.x <= 536
					&& localPos.y >= 565 && localPos.y <= 595) {
					//stop button
					std::cout << "stopping music\n"; //debug
					music.stop();
					musicPermaStop = true;
					std::cout << "\tcode now: " << music.getStatus() << "\n"; //debug
				}
				else if (localPos.x >= 538 && localPos.x <= 563
					&& localPos.y >= 565 && localPos.y <= 595) {
					//skip left button
					if (previousPlayedSongs.size() > 0) {
						//play the most recent previously played song
						music.stop();
						musicChoice = previousPlayedSongs.back();
						previousPlayedSongs.pop_back();
						music.openFromFile(musicChoice + ".ogg");
						music.play();
					}
					else {
						music.setPlayingOffset(sf::milliseconds(0)); //just reset current song if we don't have any previous played songs
					}
				}
				else if (localPos.x >= 565 && localPos.x <= 590
					&& localPos.y >= 565 && localPos.y <= 595) {
					//skip right button
					music.stop();
				}
				else if (localPos.x >= 632 && localPos.x <= 732
					&& localPos.y >= 582 && localPos.y <= 592) {
					//set playing offset for music
					float xDelta = localPos.x - timeDurBar.getPosition().x;
					float timeMultiplier = xDelta / timeDurBar.getSize().x;
					music.setPlayingOffset(sf::milliseconds( int(music.getDuration().asMilliseconds() * timeMultiplier) ));
				}
				else if (localPos.x >= volBar.getPosition().x && localPos.x <= volBar.getPosition().x + volBar.getSize().x
					&& localPos.y >= volBar.getPosition().y && localPos.y <= volBar.getPosition().y + volBar.getSize().y) {
					//set volume
					float yDelta = localPos.y - volBar.getPosition().y;
					float volMultiplier = (volBar.getSize().y - yDelta) / volBar.getSize().y;
					const int maxVolume = 100.0;
					music.setVolume(maxVolume * volMultiplier);
				}
			}
			if (event.type == sf::Event::Closed) {
				window.close();
			}
		}

		//drawing stage
		window.clear(sf::Color::Black);

		window.draw(backSprite);

		titleText.setFont(gameFont);
		titleText.setString("AKB48");
		titleText.setPosition(200, 20);
		window.draw(titleText);
		
		//hacky-ish way of displaying unicode non-English characters on the title screen
		//this is hardcoded, so can't do this for long japanese inputs
		sf::Uint32 titleUniCharList[5] = { sf::Uint32(38899), sf::Uint32(27005), sf::Uint32(12466), sf::Uint32(12452), sf::Uint32(12512) };
		titleText.setFont(japaneseFont);
		for (int i = 0; i < 5; i++) {
			titleText.setString(titleUniCharList[i]);
			titleText.setPosition(300 + 50 * (i+1), 20);
			window.draw(titleText);
		}
		
		window.draw(startButton);
		window.draw(createButton);

		//hacky-ish way of displaying unicode non-English characters on the title screen
		//this is hardcoded, so can't do this for long japanese inputs
		sf::Uint32 startUniCharList[6] = { sf::Uint32(12461), sf::Uint32(12515), sf::Uint32(12531), sf::Uint32(12506), sf::Uint32(12540), sf::Uint32(12531) };
		startText.setFont(japaneseFont);
		for (int i = 0; i < 6; i++) {
			startText.setString(startUniCharList[i]);
			startText.setPosition(250 + 50 * i, 265);
			window.draw(startText);
		}
		//hacky-ish way of displaying unicode non-English characters on the title screen
		//this is hardcoded, so can't do this for long japanese inputs
		sf::Uint32 createUniCharList[7] = { sf::Uint32(12499), sf::Uint32(12540), sf::Uint32(12488), sf::Uint32(12513), sf::Uint32(12540), sf::Uint32(12459), sf::Uint32(12540) };
		createText.setFont(japaneseFont);
		for (int i = 0; i < 7; i++) {
			createText.setString(createUniCharList[i]);
			createText.setPosition(260 + 40 * i, 420);
			window.draw(createText);
		}

		//draw music player
		window.draw(musicBox);
		window.draw(playButton);
		buttonDivider.setPosition(sf::Vector2f(509, 565));
		window.draw(buttonDivider);
		window.draw(stopButton);
		buttonDivider.setPosition(sf::Vector2f(536, 565));
		window.draw(buttonDivider);
		skipLeftButton.setPosition(sf::Vector2f(544, 572));
		window.draw(skipLeftButton);
		skipLeftButton.setPosition(sf::Vector2f(554, 572));
		window.draw(skipLeftButton);
		buttonDivider.setPosition(sf::Vector2f(563, 565));
		window.draw(buttonDivider);
		skipRightButton.setPosition(sf::Vector2f(574, 585));
		window.draw(skipRightButton);
		skipRightButton.setPosition(sf::Vector2f(584, 585));
		window.draw(skipRightButton);
		buttonDivider.setPosition(sf::Vector2f(590, 565));
		window.draw(buttonDivider);
		window.draw(timeDurBar);
		//calculate position of curTimeBar based on current position in the song
		sf::Time musicCurTime = music.getPlayingOffset();
		sf::Time musicTotalDur = music.getDuration();
		curTimeBar.setPosition(sf::Vector2f(632 +
			(float(musicCurTime.asMilliseconds())/musicTotalDur.asMilliseconds()) *
			(timeDurBar.getSize().x-curTimeBar.getSize().x), 581));
		window.draw(curTimeBar);
		window.draw(songNameBar);
		//display song title
		musicText.setPosition(sf::Vector2f(597, 565));
		musicText.setString(musicChoice);
		window.draw(musicText);
		//display current time in song
		musicText.setPosition(sf::Vector2f(597, 580));
		std::string leftSideCurTime = std::to_string(int(musicCurTime.asSeconds()) / 60);
		if (leftSideCurTime.length() == 1) {
			leftSideCurTime = "0" + leftSideCurTime;
		}
		std::string rightSideCurTime = std::to_string(int(musicCurTime.asSeconds()) % 60);
		if (rightSideCurTime.length() == 1) {
			rightSideCurTime = "0" + rightSideCurTime;
		}
		musicText.setString(leftSideCurTime + ":" + rightSideCurTime);
		window.draw(musicText);
		//display total song duration
		musicText.setPosition(sf::Vector2f(737, 580));
		std::string leftSideTotalDur = std::to_string(int(musicTotalDur.asSeconds()) / 60);
		if (leftSideTotalDur.length() == 1) {
			leftSideTotalDur = "0" + leftSideTotalDur;
		}
		std::string rightSideTotalDur = std::to_string(int(musicTotalDur.asSeconds()) % 60);
		if (rightSideTotalDur.length() == 1) {
			rightSideTotalDur = "0" + rightSideTotalDur;
		}
		musicText.setString(leftSideTotalDur + ":" + rightSideTotalDur);
		window.draw(musicText);
		window.draw(volBar);
		const float maxVolume = 100.0;
		float curVolume = music.getVolume();
		curVolBar.setSize(sf::Vector2f(volBar.getSize().x, volBar.getSize().y * curVolume/maxVolume));
		curVolBar.setPosition(sf::Vector2f(volBar.getPosition().x, volBar.getPosition().y + volBar.getSize().y - curVolBar.getSize().y));
		window.draw(curVolBar);

		/*
		// Set mouse sprite position        
		mouseSprite.setPosition(static_cast<sf::Vector2f>(sf::Mouse::getPosition(window)));
		window.draw(mouseSprite);
		*/

		window.display();
	}
	return 0;
}
示例#18
0
int main (void)
{
	//iniciçao da pic
  	initPIC32 ();
  	closedLoopControl( true );
  	setVel2(0, 0);

  	T4CONbits.TCKPS=5;
PR4=(PBCLK/32/3)-1;//fout 20MHz/(32*(62499+1))*10Hz,freq a 1 hz
TMR4=0;//Reset timer T2
T4CONbits.TON=1;
//Interrupts
IFS0bits.T4IF=0;//reset do timer
IPC4bits.T4IP=2;//priority
IEC0bits.T4IE=1;//enable timer3
EnableInterrupts();

	printStr(__FILE__); // para saber o nome do ficheiro que esta a correr no robot
	printf("\r    battery: %d ", batteryVoltage());
	printStr("\n");
	

//desligar os leds para o inicio
	leds(0b1111);	//leds off


  #if 0

	while(1)
	{
		while(!tick40ms);
		tick40ms=0;
		readAnalogSensors();
		


	}


  #endif



  while (TRUE)
    {
	
	
	TimeOut();		// timeOut => tb devia ir para uma inturrupcao

	//Sensor(); 	 //leitura os sensores tem de se por numa interropecao

	


	//botao de estado 

	if(startButton() == 1) // Botao start(preto) primido
	{
		estado = 1;
		resetCoreTimer();
		leds(0x1);
	
	}
	else if(stopButton() == 1) //Botao stop(vermelho) primido
	{
		estado = 0;
		leds(0x0);
	}

 	//funcoa de funcionameneto
	if(estado == 1) // robot fica em presesamento
	{
		Ver_Farol();
		printf("D: %d   F: %d   E: %d     LINHA: %d    Farol: %d \r",	sensor_dir,sensor_frente,sensor_esq,linha ,farolsen );
		ANDAR2();
	}
	//quando e primido o botao stop
	else if(stopButton() == 1)		// deslica o funcionamento, nenhum led activo
	{
		
		Stop_robot();
	
	}

    }
  return (0);
}
示例#19
0
void SmugWindow::buttonStateChange(bool state)
{
    m_widget->m_newAlbumBtn->setEnabled(state);
    m_widget->m_reloadAlbumsBtn->setEnabled(state);
    startButton()->setEnabled(state);
}