void CurveWidget::drawAxis() { qreal axisScale = calcAxisScale(); QRgb oldColor = setColor(AXIS_COLOR); AxisDrawer axisDrawer(*this, axisScale, MARK_HALF_LENGTH); axisDrawer.draw(buffer.width(), buffer.height(), Utils::roundPoint(toRelative(QPoint()))); setColor(oldColor); emit unitLengthChanged(QString::number(axisScale / scale)); }
// ---------------------------------------------------------------------------- bool Editor::OnEvent(const SEvent& event) { if (event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == EGET_BUTTON_CLICKED) if (importantButtonClicked(event.GUIEvent.Caller->getID())) return true; if (!m_valid_data_dir) { if (event.EventType == EET_GUI_EVENT) { if (event.GUIEvent.EventType == EGET_DIRECTORY_SELECTED) { if (validateDataLoc( ((IGUIFileOpenDialog*)event.GUIEvent.Caller)->getDirectoryName())) { ((IGUIFileOpenDialog*)event.GUIEvent.Caller)->remove(); } return true; } // Directory selected if (event.GUIEvent.EventType == EGET_FILE_CHOOSE_DIALOG_CANCELLED) { dataDirLocDlg(); return true; } } // GUI_EVENT return false; } // !valid data dir if (!m_viewport) return false; // mouse event if (event.EventType == EET_MOUSE_INPUT_EVENT) { // check if mouse is outside of the viewport's domain if (event.MouseInput.Y < 50 || event.MouseInput.X <= 15 || event.MouseInput.X >(s32) m_screen_size.Width - 250 || event.MouseInput.Y >= (s32)m_screen_size.Height - 15 || (event.MouseInput.X >(s32)m_screen_size.Width - 500 && m_tex_sel->isActive())) { u32 s = m_viewport->getState(); if (s == Viewport::EDIT || (s==Viewport::SELECT && m_mouse.middle_btn_down)) keepMouseIn(event.MouseInput.X, event.MouseInput.Y); else { m_viewport->setFocus(false); m_mouse.in_view = false; return false; } } // mouse is outside m_mouse.in_view = true; m_viewport->setFocus(true); m_mouse.refresh(event); } // mouse event if (event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == EGET_FILE_SELECTED) { switch (((IGUIFileOpenDialog*)event.GUIEvent.Caller)->getID()) { case 1234: m_viewport->getTrack()->setMusic(toRelative( path(((IGUIFileOpenDialog*)event.GUIEvent.Caller)->getFileName()))); break; case 333: m_exe_loc = path(((IGUIFileOpenDialog*)event.GUIEvent.Caller)->getFileName()); writeResAndExePathIntoConfig(); runTrack(); break; default: open(path(((IGUIFileOpenDialog*)event.GUIEvent.Caller)->getFileName())); } m_viewport->lock(false); return true; } if (!m_viewport->getTrack()) return false; if (event.EventType == EET_GUI_EVENT) { RoadPanel* rp; s32 id = event.GUIEvent.Caller->getID(); switch (event.GUIEvent.EventType) { case EGET_FILE_CHOOSE_DIALOG_CANCELLED: m_viewport->lock(false); return true; case EGET_BUTTON_CLICKED: m_gui_env->removeFocus(m_gui_env->getFocus()->getParent()); return buttonClicked(id); case EGET_COMBO_BOX_CHANGED: switch (id) { case EnvPanel::CB_ID: EnvPanel::getEnvPanel()->resetIndex(); EnvPanel::getEnvPanel()->refreshBtnTable(); return true; case RoadPanel::SELECT: m_viewport->setActiveRoad(RoadPanel::getRoadPanel() ->getSelectedRoadID()); break; default: break; } return false; case EGET_EDITBOX_CHANGED: switch (id) { case TerrPanel::H_MAX_EDIT_BOX: case TerrPanel::H_MIN_EDIT_BOX: TerrPanel::getTerrPanel()->refreshTerrModData(); return true; case EnvPanel::SF_ID: EnvPanel::getEnvPanel()->resetIndex(); EnvPanel::getEnvPanel()->refreshBtnTable(); return true; case TexSel::SEARCH_BOX: TexSel::getTexSel()->searchFieldDirty(); return true; default: break; } return false; case EGET_SCROLL_BAR_CHANGED: switch (id) { case TerrPanel::INTENSITY: case TerrPanel::RADIUS: TerrPanel::getTerrPanel()->refreshTerrModData(); m_viewport->setState(Viewport::TERRAIN_MOD); return true; case RoadPanel::DETAIL: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setDetail(rp->getDetail()); return true; case RoadPanel::WIDTH: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setWidth(rp->getWidth()); return true; case RoadPanel::WRAP_U: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setUWrapCount(rp->getTexUCount()); return true; case RoadPanel::WRAP_V: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setVWrapCount(rp->getTexVCount()); return true; case RoadPanel::OFFSET_U: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setUOffset(rp->getTexUOffset()); return true; case RoadPanel::OFFSET_V: rp = RoadPanel::getRoadPanel(); m_viewport->getTrack()->getRoadByID(rp->getSelectedRoadID()) ->setVOffset(rp->getTexVOffset()); return true; default: break; } return false; case EGET_CHECKBOX_CHANGED: switch (id) { case TerrPanel::H_MAX_CHECK_BOX: case TerrPanel::H_MIN_CHECK_BOX: TerrPanel::getTerrPanel()->refreshTerrModData(); m_viewport->setState(Viewport::TERRAIN_MOD); return true; case RoadPanel::CLOSED_ROAD: m_viewport->roadClosedStateChanged(); return true; case RoadPanel::SWAP_UV: m_viewport->roadSwapStateChanged(); return true; default: break; } default: return false; } } // EventType == EET_GUI_EVENT bool should_quit = false; // gui active, there is nothing we should do if (m_viewport->isLocked()) should_quit = true; if (m_gui_env->getFocus()) { s32 id = m_gui_env->getFocus()->getID(); if (id == RoadPanel::NAMEBOX || id == EnvPanel::SF_ID || id == TerrPanel::H_MAX_EDIT_BOX || id == TerrPanel::H_MIN_EDIT_BOX) should_quit = true; } // keyboard event if (event.EventType == EET_KEY_INPUT_EVENT) { if (!event.KeyInput.PressedDown || !should_quit) m_keys.keyEvent(event.KeyInput.Key, event.KeyInput.PressedDown); if (should_quit) return false; if (event.KeyInput.PressedDown) { if (m_keys.state(SHIFT_PRESSED) && m_keys.state(CTRL_PRESSED)) { if (m_keys.state(S_PRESSED)) m_viewport->build(); } else { if (m_keys.state(SHIFT_PRESSED)) shiftShortcuts(event.KeyInput.Key); if (m_keys.state(CTRL_PRESSED)) ctrlShortcuts(event.KeyInput.Key); if (!m_keys.state(CTRL_PRESSED) && !m_keys.state(SHIFT_PRESSED)) simpleShortcuts(event.KeyInput.Key); } } return true; } return false; } // OnEvent