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));
}
Exemple #2
0
// ----------------------------------------------------------------------------
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