LocationBar::LocationBar(QWidget *parent) : LineEdit(parent) , m_webView(0) , m_siteIcon(0) { // Urls are always LeftToRight setLayoutDirection(Qt::LeftToRight); setUpdatesEnabled(false); // site icon on the left m_siteIcon = new LocationBarSiteIcon(this); addWidget(m_siteIcon, LeftSide); // clear button on the right ClearButton *m_clearButton = new ClearButton(this); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(const QString&)), m_clearButton, SLOT(textChanged(const QString&))); addWidget(m_clearButton, RightSide); m_clearButton->hide(); updateTextMargins(); setUpdatesEnabled(true); m_defaultBaseColor = palette().color(QPalette::Base); QPalette p = palette(); p.setColor(QPalette::Base, QColor(255, 255, 255, 100)); setPalette(p); }
/* keep the contents of another vendor group (p) synchronized with this in a manner which allows any changes on this to propagate to p and any objects listening for signals from p will respond to changes to this. hide p because it's superfluous. */ void VendorGroup::synchronize(VendorGroup *p) { connect(this, SIGNAL(newTypePattern(QString)), p, SLOT(setTypePattern(QString))); connect(this, SIGNAL(newState(int)), p, SLOT(setState(int))); connect(this, SIGNAL(newVendId(int)), p, SLOT(setVendId(int))); connect(this, SIGNAL(newVendTypeId(int)), p, SLOT(setVendTypeId(int))); p->hide(); }
/* keep the contents of another customer group (p) synchronized with this in a manner which allows any changes on this to propagate to p and any objects listening for signals from p will respond to changes to this. hide p because it's superfluous. */ void CustomerSelector::synchronize(CustomerSelector *p) { connect(this, SIGNAL(newTypePattern(QString)), p, SLOT(setTypePattern(QString))); connect(this, SIGNAL(newState(int)), p, SLOT(setState(int))); connect(this, SIGNAL(newCustId(int)), p, SLOT(setCustId(int))); connect(this, SIGNAL(newCustTypeId(int)), p, SLOT(setCustTypeId(int))); p->hide(); }
void SearchLineEdit::init() { // search button on the left m_searchButton = new SearchButton(this); addWidget(m_searchButton, LeftSide); // clear button on the right m_clearButton = new ClearButton(this); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(const QString&)), m_clearButton, SLOT(textChanged(const QString&))); addWidget(m_clearButton, RightSide); m_clearButton->hide(); updateTextMargins(); setInactiveText(tr("Search")); }
QWidget * QCamTrans::buildGUI(QWidget * parent) { QWidget * remoteCTRL=QCam::buildGUI(parent); int modeTable[]={Off,Copy,On}; const char * modeLabel[]={"Off","Copy","On"}; QCamRadioBox * modeWidget=new QCamRadioBox("Mode",remoteCTRL, 3,modeTable,modeLabel,3); connect(this,SIGNAL(modeChanged(int)),modeWidget,SLOT(update(int))); connect(modeWidget,SIGNAL(change(int)),this,SLOT(mode(int))); emit(modeChanged(mode_)); if (algo_) { algoWidget_=algo_->allocGui(gui()); algoWidget_->show(); } if(hideMode_) modeWidget->hide(); return remoteCTRL; }
/* SearchLineEdit is an enhanced QLineEdit - A Search icon on the left with optional menu - When there is no text and doesn't have focus an "inactive text" is displayed - When there is text a clear button is displayed on the right hand side */ SearchLineEdit::SearchLineEdit(QWidget *parent) : LineEdit(parent) , m_searchButton(new SearchButton(this)) { addWidget(m_searchButton, LeftSide); m_inactiveText = tr("Search"); QSizePolicy policy = sizePolicy(); setSizePolicy(QSizePolicy::Preferred, policy.verticalPolicy()); // clear button on the right ClearButton *m_clearButton = new ClearButton(this); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(const QString&)), m_clearButton, SLOT(textChanged(const QString&))); addWidget(m_clearButton, RightSide); m_clearButton->hide(); }
LocationBar::LocationBar(QWidget *parent) : LineEdit(parent) , m_webView(0) , m_siteIcon(0) , m_privacyIndicator(0) { // Urls are always LeftToRight setLayoutDirection(Qt::LeftToRight); setUpdatesEnabled(false); // site icon on the left m_siteIcon = new LocationBarSiteIcon(this); addWidget(m_siteIcon, LeftSide); // privacy indicator at rightmost position m_privacyIndicator = new QLabel(this); m_privacyIndicator->setPixmap(QPixmap(QLatin1String(":private.png"))); addWidget(m_privacyIndicator, RightSide); connect(BrowserApplication::instance(), SIGNAL(privacyChanged(bool)), this, SLOT(setPrivate(bool))); setPrivate(BrowserApplication::isPrivate()); // clear button on the right ClearButton *m_clearButton = new ClearButton(this); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(const QString&)), m_clearButton, SLOT(textChanged(const QString&))); addWidget(m_clearButton, RightSide); m_clearButton->hide(); updateTextMargins(); setUpdatesEnabled(true); m_defaultBaseColor = palette().color(QPalette::Base); QPalette p = palette(); p.setColor(QPalette::Base, QColor(255, 255, 255, 100)); setPalette(p); }
/* SearchLineEdit is an enhanced QLineEdit - A Search icon on the left with optional menu - When there is no text and doesn't have focus an "inactive text" is displayed - When there is text a clear button is displayed on the right hand side */ SearchLineEdit::SearchLineEdit(QWidget *parent) : LineEdit(parent) , m_searchButton(0) { setUpdatesEnabled(false); m_searchButton = new SearchButton(this); updateGeometries(); addWidget(m_searchButton, LeftSide); setInactiveText(tr("Search")); QSizePolicy policy = sizePolicy(); setSizePolicy(QSizePolicy::Preferred, policy.verticalPolicy()); // clear button on the right ClearButton *m_clearButton = new ClearButton(this); connect(m_clearButton, SIGNAL(clicked()), this, SLOT(clear())); connect(this, SIGNAL(textChanged(const QString&)), m_clearButton, SLOT(textChanged(const QString&))); addWidget(m_clearButton, RightSide); m_clearButton->hide(); updateTextMargins(); setUpdatesEnabled(true); }
GMainWindow::GMainWindow() : emu_thread(nullptr) { Pica::g_debug_context = Pica::DebugContext::Construct(); Config config; ui.setupUi(this); statusBar()->hide(); render_window = new GRenderWindow(this, emu_thread.get()); render_window->hide(); game_list = new GameList(); ui.horizontalLayout->addWidget(game_list); profilerWidget = new ProfilerWidget(this); addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); profilerWidget->hide(); microProfileDialog = new MicroProfileDialog(this); microProfileDialog->hide(); disasmWidget = new DisassemblerWidget(this, emu_thread.get()); addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); disasmWidget->hide(); registersWidget = new RegistersWidget(this); addDockWidget(Qt::RightDockWidgetArea, registersWidget); registersWidget->hide(); callstackWidget = new CallstackWidget(this); addDockWidget(Qt::RightDockWidgetArea, callstackWidget); callstackWidget->hide(); graphicsWidget = new GPUCommandStreamWidget(this); addDockWidget(Qt::RightDockWidgetArea, graphicsWidget); graphicsWidget ->hide(); graphicsCommandsWidget = new GPUCommandListWidget(this); addDockWidget(Qt::RightDockWidgetArea, graphicsCommandsWidget); graphicsCommandsWidget->hide(); auto graphicsBreakpointsWidget = new GraphicsBreakPointsWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsBreakpointsWidget); graphicsBreakpointsWidget->hide(); auto graphicsFramebufferWidget = new GraphicsFramebufferWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsFramebufferWidget); graphicsFramebufferWidget->hide(); auto graphicsVertexShaderWidget = new GraphicsVertexShaderWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsVertexShaderWidget); graphicsVertexShaderWidget->hide(); auto graphicsTracingWidget = new GraphicsTracingWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsTracingWidget); graphicsTracingWidget->hide(); QMenu* debug_menu = ui.menu_View->addMenu(tr("Debugging")); debug_menu->addAction(profilerWidget->toggleViewAction()); debug_menu->addAction(microProfileDialog->toggleViewAction()); debug_menu->addAction(disasmWidget->toggleViewAction()); debug_menu->addAction(registersWidget->toggleViewAction()); debug_menu->addAction(callstackWidget->toggleViewAction()); debug_menu->addAction(graphicsWidget->toggleViewAction()); debug_menu->addAction(graphicsCommandsWidget->toggleViewAction()); debug_menu->addAction(graphicsBreakpointsWidget->toggleViewAction()); debug_menu->addAction(graphicsFramebufferWidget->toggleViewAction()); debug_menu->addAction(graphicsVertexShaderWidget->toggleViewAction()); debug_menu->addAction(graphicsTracingWidget->toggleViewAction()); // Set default UI state // geometry: 55% of the window contents are in the upper screen half, 45% in the lower half QDesktopWidget* desktop = ((QApplication*)QApplication::instance())->desktop(); QRect screenRect = desktop->screenGeometry(this); int x, y, w, h; w = screenRect.width() * 2 / 3; h = screenRect.height() / 2; x = (screenRect.x() + screenRect.width()) / 2 - w / 2; y = (screenRect.y() + screenRect.height()) / 2 - h * 55 / 100; setGeometry(x, y, w, h); // Restore UI state QSettings settings; settings.beginGroup("UILayout"); restoreGeometry(settings.value("geometry").toByteArray()); restoreState(settings.value("state").toByteArray()); render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray()); microProfileDialog->restoreGeometry(settings.value("microProfileDialogGeometry").toByteArray()); microProfileDialog->setVisible(settings.value("microProfileDialogVisible").toBool()); settings.endGroup(); game_list->LoadInterfaceLayout(settings); ui.action_Use_Hardware_Renderer->setChecked(Settings::values.use_hw_renderer); SetHardwareRendererEnabled(ui.action_Use_Hardware_Renderer->isChecked()); ui.action_Use_Shader_JIT->setChecked(Settings::values.use_shader_jit); SetShaderJITEnabled(ui.action_Use_Shader_JIT->isChecked()); ui.action_Single_Window_Mode->setChecked(settings.value("singleWindowMode", true).toBool()); ToggleWindowMode(); ui.actionDisplay_widget_title_bars->setChecked(settings.value("displayTitleBars", true).toBool()); OnDisplayTitleBars(ui.actionDisplay_widget_title_bars->isChecked()); // Prepare actions for recent files for (int i = 0; i < max_recent_files_item; ++i) { actions_recent_files[i] = new QAction(this); actions_recent_files[i]->setVisible(false); connect(actions_recent_files[i], SIGNAL(triggered()), this, SLOT(OnMenuRecentFile())); ui.menu_recent_files->addAction(actions_recent_files[i]); } UpdateRecentFiles(); // Setup connections connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString))); connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile())); connect(ui.action_Load_Symbol_Map, SIGNAL(triggered()), this, SLOT(OnMenuLoadSymbolMap())); connect(ui.action_Select_Game_List_Root, SIGNAL(triggered()), this, SLOT(OnMenuSelectGameListRoot())); connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); connect(ui.action_Use_Hardware_Renderer, SIGNAL(triggered(bool)), this, SLOT(SetHardwareRendererEnabled(bool))); connect(ui.action_Use_Shader_JIT, SIGNAL(triggered(bool)), this, SLOT(SetShaderJITEnabled(bool))); connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode())); connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), disasmWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), disasmWidget, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), registersWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), registersWidget, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), graphicsTracingWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), graphicsTracingWidget, SLOT(OnEmulationStopping())); // Setup hotkeys RegisterHotkey("Main Window", "Load File", QKeySequence::Open); RegisterHotkey("Main Window", "Start Emulation"); LoadHotkeys(settings); connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, SLOT(OnMenuLoadFile())); connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame())); std::string window_title = Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc); setWindowTitle(window_title.c_str()); show(); game_list->PopulateAsync(settings.value("gameListRootDir").toString(), settings.value("gameListDeepScan").toBool()); QStringList args = QApplication::arguments(); if (args.length() >= 2) { BootGame(args[1].toStdString()); } }
GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) { Pica::g_debug_context = Pica::DebugContext::Construct(); ui.setupUi(this); statusBar()->hide(); render_window = new GRenderWindow(this, emu_thread.get()); render_window->hide(); game_list = new GameList(); ui.horizontalLayout->addWidget(game_list); profilerWidget = new ProfilerWidget(this); addDockWidget(Qt::BottomDockWidgetArea, profilerWidget); profilerWidget->hide(); #if MICROPROFILE_ENABLED microProfileDialog = new MicroProfileDialog(this); microProfileDialog->hide(); #endif disasmWidget = new DisassemblerWidget(this, emu_thread.get()); addDockWidget(Qt::BottomDockWidgetArea, disasmWidget); disasmWidget->hide(); registersWidget = new RegistersWidget(this); addDockWidget(Qt::RightDockWidgetArea, registersWidget); registersWidget->hide(); callstackWidget = new CallstackWidget(this); addDockWidget(Qt::RightDockWidgetArea, callstackWidget); callstackWidget->hide(); graphicsWidget = new GPUCommandStreamWidget(this); addDockWidget(Qt::RightDockWidgetArea, graphicsWidget); graphicsWidget ->hide(); graphicsCommandsWidget = new GPUCommandListWidget(this); addDockWidget(Qt::RightDockWidgetArea, graphicsCommandsWidget); graphicsCommandsWidget->hide(); auto graphicsBreakpointsWidget = new GraphicsBreakPointsWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsBreakpointsWidget); graphicsBreakpointsWidget->hide(); auto graphicsVertexShaderWidget = new GraphicsVertexShaderWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsVertexShaderWidget); graphicsVertexShaderWidget->hide(); auto graphicsTracingWidget = new GraphicsTracingWidget(Pica::g_debug_context, this); addDockWidget(Qt::RightDockWidgetArea, graphicsTracingWidget); graphicsTracingWidget->hide(); auto graphicsSurfaceViewerAction = new QAction(tr("Create Pica surface viewer"), this); connect(graphicsSurfaceViewerAction, SIGNAL(triggered()), this, SLOT(OnCreateGraphicsSurfaceViewer())); QMenu* debug_menu = ui.menu_View->addMenu(tr("Debugging")); debug_menu->addAction(graphicsSurfaceViewerAction); debug_menu->addSeparator(); debug_menu->addAction(profilerWidget->toggleViewAction()); #if MICROPROFILE_ENABLED debug_menu->addAction(microProfileDialog->toggleViewAction()); #endif debug_menu->addAction(disasmWidget->toggleViewAction()); debug_menu->addAction(registersWidget->toggleViewAction()); debug_menu->addAction(callstackWidget->toggleViewAction()); debug_menu->addAction(graphicsWidget->toggleViewAction()); debug_menu->addAction(graphicsCommandsWidget->toggleViewAction()); debug_menu->addAction(graphicsBreakpointsWidget->toggleViewAction()); debug_menu->addAction(graphicsVertexShaderWidget->toggleViewAction()); debug_menu->addAction(graphicsTracingWidget->toggleViewAction()); // Set default UI state // geometry: 55% of the window contents are in the upper screen half, 45% in the lower half QDesktopWidget* desktop = ((QApplication*)QApplication::instance())->desktop(); QRect screenRect = desktop->screenGeometry(this); int x, y, w, h; w = screenRect.width() * 2 / 3; h = screenRect.height() / 2; x = (screenRect.x() + screenRect.width()) / 2 - w / 2; y = (screenRect.y() + screenRect.height()) / 2 - h * 55 / 100; setGeometry(x, y, w, h); // Restore UI state restoreGeometry(UISettings::values.geometry); restoreState(UISettings::values.state); render_window->restoreGeometry(UISettings::values.renderwindow_geometry); #if MICROPROFILE_ENABLED microProfileDialog->restoreGeometry(UISettings::values.microprofile_geometry); microProfileDialog->setVisible(UISettings::values.microprofile_visible); #endif game_list->LoadInterfaceLayout(); ui.action_Single_Window_Mode->setChecked(UISettings::values.single_window_mode); ToggleWindowMode(); ui.actionDisplay_widget_title_bars->setChecked(UISettings::values.display_titlebar); OnDisplayTitleBars(ui.actionDisplay_widget_title_bars->isChecked()); // Prepare actions for recent files for (int i = 0; i < max_recent_files_item; ++i) { actions_recent_files[i] = new QAction(this); actions_recent_files[i]->setVisible(false); connect(actions_recent_files[i], SIGNAL(triggered()), this, SLOT(OnMenuRecentFile())); ui.menu_recent_files->addAction(actions_recent_files[i]); } UpdateRecentFiles(); // Setup connections connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString)), Qt::DirectConnection); connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(OnConfigure())); connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()),Qt::DirectConnection); connect(ui.action_Load_Symbol_Map, SIGNAL(triggered()), this, SLOT(OnMenuLoadSymbolMap())); connect(ui.action_Select_Game_List_Root, SIGNAL(triggered()), this, SLOT(OnMenuSelectGameListRoot())); connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame())); connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame())); connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame())); connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), disasmWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), disasmWidget, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), registersWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), registersWidget, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); connect(this, SIGNAL(EmulationStarting(EmuThread*)), graphicsTracingWidget, SLOT(OnEmulationStarting(EmuThread*))); connect(this, SIGNAL(EmulationStopping()), graphicsTracingWidget, SLOT(OnEmulationStopping())); // Setup hotkeys RegisterHotkey("Main Window", "Load File", QKeySequence::Open); RegisterHotkey("Main Window", "Start Emulation"); LoadHotkeys(); connect(GetHotkey("Main Window", "Load File", this), SIGNAL(activated()), this, SLOT(OnMenuLoadFile())); connect(GetHotkey("Main Window", "Start Emulation", this), SIGNAL(activated()), this, SLOT(OnStartGame())); std::string window_title = Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc); setWindowTitle(window_title.c_str()); show(); game_list->PopulateAsync(UISettings::values.gamedir, UISettings::values.gamedir_deepscan); QStringList args = QApplication::arguments(); if (args.length() >= 2) { BootGame(args[1].toStdString()); } }
GraphicsScene::GraphicsScene(GameType type, QSize fieldSize, QRect sceneSize): _type(type), QGraphicsScene(sceneSize) { int fszX =fieldSize.width(); int fszY =fieldSize.height(); cerr << "GraphicsScene : scene size : " << this->width() << ", " << this->height() << endl; int fct = max(fszX, fszY); int sz = min(width()/(fct+3), height()/(fct+3)); _scene = new Scene(QSize(width(), height()), QPoint(sz*1.5,sz*1.5), sz, fszX, fszY); _figures = new PlayersFigures(_scene); _gameRules = new GameRules(fszX, fszY, _figures); _timer = new QTimer(this); connect(_timer,SIGNAL(timeout()), this ,SLOT(update())); // set "Skip turn" button: _skipTurnButton = new QPushButton(tr("Skip turn")); _skipTurnButton->resize(80,40); connect(_skipTurnButton, SIGNAL(clicked()), SLOT(nextTurn())); _skipTurnButton->move(width() - 100, height() - 50); _skipTurnButton->setWindowOpacity(0.8); // set "Menu" button _menuOpenButton = new QPushButton(tr("Menu")); _menuOpenButton->resize(80,40); connect(_menuOpenButton, SIGNAL(clicked()), SLOT(openMenu())); _menuOpenButton->move((0.1)*sz, sz/3); _menuOpenButton->setWindowOpacity(0.8); // set "Menu" : _dialogMenu = new DialogMenu(); connect(_dialogMenu, SIGNAL(sendCloseMenu()), SLOT(closeMenu())); connect(_dialogMenu, SIGNAL(sendUndoLastMove()), SLOT(undoLastMove())); connect(_dialogMenu, SIGNAL(sendResetGame()), SLOT(resetGame())); connect(this, SIGNAL(sendAddToRedFigures(int)), _dialogMenu, SLOT(addToRedFigures(int))); connect(this, SIGNAL(sendAddToBlueFigures(int)), _dialogMenu, SLOT(addToBlueFigures(int))); _dialogMenu->move(_menuOpenButton->pos()); _dialogMenu->setWindowOpacity(0.85); _dialogMenu->hide(); QWidget * _dialogMenuWidget = dynamic_cast<QWidget *>(_dialogMenu); // add all widgets in GraphicsScene as QWidget *widgets[] = { _skipTurnButton, _menuOpenButton, _dialogMenuWidget }; for (uint i = 0; i < sizeof(widgets) / sizeof(*widgets); ++i) { QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(0); proxy->setWidget(widgets[i]); addItem(proxy); } // setup ComputerPlayer: if (_type==HumanVsMachine){ _computerType = 1; _computerMind = new ComputerPlayer(_gameRules, _computerType); }else if (_type==MachineVsHuman){ _computerType = 0; _computerMind = new ComputerPlayer(_gameRules, _computerType); }else if (_type == MachineVsMachine){ _computerMind = new ComputerPlayer(_gameRules, 0); _computerMind2 = new ComputerPlayer(_gameRules, 1); } // initialize(): _scene->initialize(); _gameRules->displayGrid(); _timer->start(100); // start computerMind: if (_type==MachineVsHuman || _type==MachineVsMachine){ QPoint p = _computerMind->suggest(); cerr << "suggest: " << p.x() << ", " << p.y() << endl; if (p.x() >= 0 && p.y() >= 0){ moveOnPosition(p); }else{ // skip turn: nextTurn(); } } }