亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? selectionpopup.cpp

?? celestia源代碼
?? CPP
字號:
/***************************************************************************                          selectionpopup.cpp  -  description                             -------------------    begin                : 2003-05-06    copyright            : (C) 2002 by Christophe Teyssier    email                : chris@teyssier.org ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#include <sstream>#include <fstream>#include "selectionpopup.h"#include <qlabel.h>#include <klocale.h>#include <kurl.h>#include <krun.h>#include "celutil/utf8.h"SelectionPopup::SelectionPopup(QWidget* parent, CelestiaCore* _appCore, Selection _sel):KPopupMenu(parent), appCore(_appCore), sel(_sel){}void SelectionPopup::init(){    QPalette pal( palette() );    pal.setColor( QPalette::Normal, QColorGroup::Background, QColor( "White" ) );    pal.setColor( QPalette::Normal, QColorGroup::Foreground, QColor( "Black" ) );    pal.setColor( QPalette::Inactive, QColorGroup::Foreground, QColor( "Black" ) );    QFont rsFont = font();    rsFont.setPointSize( rsFont.pointSize() - 2 );    Simulation *sim = appCore->getSimulation();    Vec3d v = sel.getPosition(sim->getTime()) - sim->getObserver().getPosition();    if (sel.body() != NULL)    {        insertTitle(QString::fromUtf8(sel.body()->getName(true).c_str()), 0, 0);        insert(this, sel, MENUMAXSIZE);    }    else if (sel.star() != NULL)    {        std::string name = sim->getUniverse()->getStarCatalog()->getStarName(*sel.star());        double distance = v.length() * 1e-6;        char buff[50];        ostringstream o;        if (abs(distance) >= astro::AUtoLightYears(1000.0f))            sprintf(buff, "%.3f ly", distance);        else if (abs(distance) >= astro::kilometersToLightYears(10000000.0))            sprintf(buff, "%.3f au", astro::lightYearsToAU(distance));        else if (abs(distance) > astro::kilometersToLightYears(1.0f))            sprintf(buff, "%.3f km", astro::lightYearsToKilometers(distance));        else            sprintf(buff, "%.3f m", astro::lightYearsToKilometers(distance) * 1000.0f);        o << i18n("Distance: ") << buff << "\n";        o << i18n("Abs (app) mag: ");        sprintf(buff, "%.2f (%.2f)",                   sel.star()->getAbsoluteMagnitude(),                   astro::absToAppMag(sel.star()->getAbsoluteMagnitude(),                                      (float) distance));        o << buff << "\n";        o << i18n("Class: ");        sprintf(buff, "%s", sel.star()->getSpectralType());        o << buff << "\n";        o << i18n("Surface Temp: ");        sprintf(buff, "%.0f K", sel.star()->getTemperature());        o << buff << "\n";        o << i18n("Radius: ");        sprintf(buff, "%.2f Rsun", sel.star()->getRadius() / 696000.0f);        o << buff;        QLabel *starDetails = new QLabel(QString(o.str().c_str()), this);        starDetails->setPalette(pal);        starDetails->setFont(rsFont);        insertTitle(QString::fromUtf8(ReplaceGreekLetterAbbr(name).c_str()), 0, 0);        insertItem(starDetails);        insertSeparator();        insert(this, sel, MENUMAXSIZE);    }    else if (sel.deepsky() != NULL)    {        insertTitle(QString::fromUtf8(sim->getUniverse()->getDSOCatalog()->getDSOName(sel.deepsky()).c_str()), 0);        insert(this, sel, MENUMAXSIZE);    }    if (sim->getUniverse() != NULL)    {        MarkerList* markers = sim->getUniverse()->getMarkers();        if (markers->size() > 0)        {            KPopupMenu *markMenu = new KPopupMenu(this);            int j=1;            for (std::vector<Marker>::iterator i = markers->begin(); i < markers->end() && j < MENUMAXSIZE; i++)            {                KPopupMenu *objMenu = new KPopupMenu(this);                insert(objMenu, (*i).getObject(), (2 * MENUMAXSIZE + j) * MENUMAXSIZE, false);                markMenu->insertItem(QString::fromUtf8(getSelectionName((*i).getObject())), objMenu);                j++;            }            insertItem(i18n("Marked objects"), markMenu);        }    }}void SelectionPopup::process(int id){    Simulation *sim = appCore->getSimulation();    int actionId = id;    actionId = id - (id / MENUMAXSIZE) * MENUMAXSIZE;    int subId = id;    int level = 1;    while (id > MENUMAXSIZE) {        id /= MENUMAXSIZE;        level *= MENUMAXSIZE;    }    subId -= id * level;    if (id == 1)    {        int selId = subId / MENUMAXSIZE;        sel = getSelectionFromId(sel, selId);    }    else if (id == 2) // marked objects sub-menu    {        int subsubId = subId;        int level = 1;        while (subId > MENUMAXSIZE) {            subId /= MENUMAXSIZE;            level *= MENUMAXSIZE;        }        subsubId -= subId * level;        MarkerList* markers = sim->getUniverse()->getMarkers();        sel = (*markers)[subId-1].getObject();        int selId = subsubId / MENUMAXSIZE;        sel = getSelectionFromId(sel, selId);    }    if (actionId == 1) {        sim->setSelection(sel);        return;    }    if (actionId == 2) {        sim->setSelection(sel);        appCore->charEntered('c');        return;    }    if (actionId == 3) {        sim->setSelection(sel);        appCore->charEntered('g');        return;    }    if (actionId == 4) {        sim->setSelection(sel);        appCore->charEntered('f');        return;    }    if (actionId == 5) {        sim->setSelection(sel);        appCore->charEntered('y');        return;    }    if (actionId == 6) {        QString url;        if (sel.body() != NULL)        {            url = QString(sel.body()->getInfoURL().c_str());            if (url == "")            {                QString name = QString(sel.body()->getName().c_str()).lower();                url = QString("http://www.nineplanets.org/") + name + ".html";            }        }        else if (sel.star() != NULL)        {            if (sel.star()->getCatalogNumber() != 0)                url = QString("http://simbad.u-strasbg.fr/sim-id.pl?protocol=html&Ident=HIP %1")                      .arg(sel.star()->getCatalogNumber() & ~0xf0000000);            else                url = QString("http://www.nineplanets.org/sun.html");        }        else if (sel.deepsky() != NULL)        {                url = QString("http://simbad.u-strasbg.fr/sim-id.pl?protocol=html&Ident=%1")                      .arg(sim->getUniverse()->getDSOCatalog()->getDSOName(sel.deepsky()).c_str());        }        KRun::runURL(url, "text/html");        return;    }    if (actionId == 7)    {        if (sim->getUniverse() != NULL)            sim->getUniverse()->unmarkObject(sel, 1);        return;    }    if (actionId == 8)    {        sim->getUniverse()->unmarkAll();        return;    }    if (actionId >= 10 && actionId <= 14)    {        if (sim->getUniverse() != NULL)        {            sim->getUniverse()->markObject(sel,                                           10.0f,                                           Color(0.0f, 1.0f, 0.0f, 0.9f),                                           (Marker::Symbol)(actionId - 10),                                           1);        }        return;    }    if (actionId == 20) {        sim->getActiveObserver()->setDisplayedSurface("");        return;    }    if (actionId > 20) {        std::vector<std::string>* altSurfaces = sel.body()->getAlternateSurfaceNames();        if (altSurfaces != NULL && altSurfaces->size() > actionId - 21)        {            sim->getActiveObserver()->setDisplayedSurface((*altSurfaces)[actionId - 21]);        }    }}const char* SelectionPopup::getSelectionName(const Selection& sel) const{    if (sel.body() != NULL)        return sel.body()->getName(true).c_str();    else if (sel.star() != NULL)        return appCore->getSimulation()->getUniverse()->getStarCatalog()->getStarName(*(sel.star())).c_str();    else if (sel.deepsky() != NULL)        return appCore->getSimulation()->getUniverse()->getDSOCatalog()->getDSOName(sel.deepsky()).c_str();    return "";}Selection SelectionPopup::getSelectionFromId(Selection sel, int id) const{    if (id == 0) return sel;    int subId = id;    int level = 1;    while (id > MENUMAXSIZE) {        id /= MENUMAXSIZE;        level *= MENUMAXSIZE;    }    subId -= id * level;    if (subId < 0) subId = 0;    if (sel.body() != NULL)    {        const PlanetarySystem* satellites = sel.body()->getSatellites();        if (satellites != NULL && satellites->getSystemSize() != 0)        {            Body* body = satellites->getBody(id - 1);            Selection satSel(body);            return getSelectionFromId(satSel, subId);        }    }    else if (sel.star() != NULL)    {        Simulation *sim = appCore->getSimulation();        SolarSystemCatalog* solarSystemCatalog = sim->getUniverse()->getSolarSystemCatalog();        SolarSystemCatalog::iterator iter = solarSystemCatalog->find(sel.star()->getCatalogNumber());        if (iter != solarSystemCatalog->end())        {            SolarSystem* solarSys = iter->second;            Body* body = solarSys->getPlanets()->getBody(id - 1);            Selection satSel(body);            return getSelectionFromId(satSel, subId);        }    }    return sel;}void SelectionPopup::insert(KPopupMenu *popup, Selection sel, int baseId, bool showSubObjects){    popup->insertItem(i18n("&Select"), baseId + 1);    popup->insertItem(i18n("&Center"), baseId + 2);    popup->insertItem(i18n("&Goto"), baseId + 3);    popup->insertItem(i18n("&Follow"), baseId + 4);    popup->insertItem(i18n("S&ynch Orbit"), baseId + 5);    popup->insertItem(i18n("&Info"), baseId + 6);    popup->insertItem(i18n("Unmark &All"), baseId + 8);    if (appCore->getSimulation()->getUniverse()->isMarked(sel, 1))    {        popup->insertItem(i18n("&Unmark"), baseId + 7);    }    else    {        KPopupMenu *markMenu = new KPopupMenu(this);        markMenu->insertItem(i18n("Diamond"), baseId + 10);        markMenu->insertItem(i18n("Triangle"), baseId + 11);        markMenu->insertItem(i18n("Square"), baseId + 12);        markMenu->insertItem(i18n("Plus"), baseId + 13);        markMenu->insertItem(i18n("X"), baseId + 14);        popup->insertItem(i18n("&Mark"), markMenu);    }    if (showSubObjects && sel.body() != NULL)    {        std::vector<std::string>* altSurfaces = sel.body()->getAlternateSurfaceNames();        if (altSurfaces != NULL)        {            if (altSurfaces->size() != NULL)            {                KPopupMenu *surfaces = new KPopupMenu(this);                surfaces->insertItem(i18n("Normal"), baseId + 20);                int j=0;                for (std::vector<std::string>::const_iterator i = altSurfaces->begin();                     i < altSurfaces->end() && j < MENUMAXSIZE - 1; i++, j++)                {                    surfaces->insertItem(QString((*i).c_str()), baseId + 21 + j);                }                popup->insertItem(i18n("&Alternate Surfaces"), surfaces);            }            delete altSurfaces;        }        const PlanetarySystem* satellites = sel.body()->getSatellites();        if (satellites != NULL && satellites->getSystemSize() != 0)        {            popup->insertSeparator();            KPopupMenu *planetaryMenu = new KPopupMenu(this);            for (int i = 0; i < satellites->getSystemSize() && i < MENUMAXSIZE; i++)            {                Body* body = satellites->getBody(i);                Selection satSel(body);                KPopupMenu *satMenu = new KPopupMenu(this);                insert(satMenu, satSel, baseId * MENUMAXSIZE + (i + 1) * MENUMAXSIZE);                planetaryMenu->insertItem(QString::fromUtf8(body->getName(true).c_str()), satMenu);            }            popup->insertItem(i18n("Satellites"), planetaryMenu);        }    }    else if (showSubObjects && sel.star() != NULL)    {        popup->setItemEnabled(baseId + 5, false);        Simulation *sim = appCore->getSimulation();        SolarSystemCatalog* solarSystemCatalog = sim->getUniverse()->getSolarSystemCatalog();        SolarSystemCatalog::iterator iter = solarSystemCatalog->find(sel.star()->getCatalogNumber());        if (iter != solarSystemCatalog->end())        {            popup->insertSeparator();            SolarSystem* solarSys = iter->second;            KPopupMenu* planetsMenu = new KPopupMenu(this);            for (int i = 0; i < solarSys->getPlanets()->getSystemSize() && i < MENUMAXSIZE; i++)            {                Body* body = solarSys->getPlanets()->getBody(i);                Selection satSel(body);                KPopupMenu *satMenu = new KPopupMenu(this);                insert(satMenu, satSel, baseId * MENUMAXSIZE + (i + 1) * MENUMAXSIZE);                planetsMenu->insertItem(QString::fromUtf8(body->getName(true).c_str()), satMenu);            }            popup->insertItem(i18n("Planets"), planetsMenu);        }    }    else if (sel.deepsky() != NULL)    {        popup->setItemEnabled(baseId + 5, false);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产三级电影在线观看| 天堂va蜜桃一区二区三区| 午夜视频在线观看一区二区 | 欧美激情一区二区三区蜜桃视频| 一区二区三区在线视频观看58| 久草精品在线观看| 欧美丝袜自拍制服另类| 国产欧美va欧美不卡在线| 青青草国产精品亚洲专区无| 色美美综合视频| 日本一区二区三区dvd视频在线| 久久精品久久综合| 69p69国产精品| 亚洲成人7777| 日本久久精品电影| 亚洲人精品一区| 波多野结衣中文一区| 26uuu欧美| 国产伦理精品不卡| 精品少妇一区二区三区免费观看| 午夜欧美大尺度福利影院在线看 | 国内精品免费在线观看| 日韩一区二区视频在线观看| 亚洲成人一区在线| 欧美日韩国产综合一区二区三区| 一区二区日韩av| 在线观看视频91| 一区二区三区免费网站| 色狠狠色噜噜噜综合网| 一区二区三区不卡视频在线观看| 色域天天综合网| 一区二区在线观看视频| 欧美中文字幕不卡| 午夜欧美大尺度福利影院在线看| 欧美日韩国产高清一区二区| 水蜜桃久久夜色精品一区的特点 | 亚洲图片自拍偷拍| 91蝌蚪porny九色| 亚洲视频1区2区| 成人av小说网| 一区二区在线看| 欧美日韩成人在线一区| 日韩影院精彩在线| 精品日韩在线观看| 国产成人综合亚洲网站| 国产调教视频一区| 91视频一区二区三区| 亚洲国产日韩一区二区| 91麻豆精品国产综合久久久久久 | 国产清纯白嫩初高生在线观看91| 国产精品66部| 中文字幕在线不卡视频| 欧美在线免费观看视频| 日本亚洲欧美天堂免费| 国产农村妇女精品| 日本乱码高清不卡字幕| 美女一区二区视频| 亚洲国产精品成人综合| 欧美色视频在线| 免费成人美女在线观看| 中文字幕在线播放不卡一区| 91久久精品一区二区三| 六月丁香综合在线视频| 中日韩免费视频中文字幕| 在线观看视频一区二区欧美日韩| 免费一级欧美片在线观看| 国产欧美日韩一区二区三区在线观看 | 亚洲一区二区三区四区的| 日韩视频免费观看高清完整版 | 日韩美女视频在线| 99久久婷婷国产精品综合| 亚洲gay无套男同| 国产日本欧洲亚洲| 欧美区一区二区三区| 成人黄色av网站在线| 美女视频一区二区| 亚洲精品乱码久久久久久| 久久免费午夜影院| 91麻豆精品国产91| 91香蕉视频污| 国产美女精品在线| 午夜激情一区二区| 亚洲免费伊人电影| 国产女人水真多18毛片18精品视频 | 91精品福利视频| 国产一区二区三区在线观看免费视频| 一区二区三区在线观看动漫 | 成人av动漫网站| 麻豆一区二区三区| 亚洲第一激情av| 亚洲你懂的在线视频| 国产精品久久毛片a| 国产偷国产偷精品高清尤物 | 欧美午夜精品一区二区三区| 欧美三区在线观看| 97精品电影院| 波多野结衣欧美| 韩国理伦片一区二区三区在线播放| 亚洲一区二区三区四区五区中文| 国产精品久久久久影院亚瑟 | ww亚洲ww在线观看国产| 欧美精品在线视频| 欧美亚洲动漫精品| 91国产成人在线| 色欧美日韩亚洲| 99国产精品99久久久久久| 成人午夜视频网站| 成人aaaa免费全部观看| 国产成人av福利| 成人免费av在线| 成人丝袜高跟foot| 粉嫩蜜臀av国产精品网站| 国产美女久久久久| 福利电影一区二区三区| 成人精品视频一区| 99国产精品一区| 在线视频中文字幕一区二区| 色综合久久久久久久| 在线观看日韩av先锋影音电影院| 日本乱人伦一区| 在线观看一区日韩| 日韩一级免费观看| 国产亚洲欧美激情| 国产精品入口麻豆九色| 亚洲欧美国产高清| 日韩国产欧美一区二区三区| 捆绑调教一区二区三区| 国产高清无密码一区二区三区| 国产a精品视频| 99re视频精品| 欧美亚洲动漫制服丝袜| 日韩欧美国产电影| 中文幕一区二区三区久久蜜桃| 国产精品乱码妇女bbbb| 亚洲一级二级在线| 美国欧美日韩国产在线播放| 国产成人午夜精品影院观看视频 | 欧洲精品一区二区| 7777精品伊人久久久大香线蕉| 欧美一二三区精品| 欧美极品另类videosde| 亚洲国产aⅴ成人精品无吗| 美女在线观看视频一区二区| 国产精品一区二区在线观看网站| 91网站黄www| 欧美高清激情brazzers| 国产欧美一区二区三区网站| 亚洲裸体在线观看| 久久精品国产亚洲a| 成人精品电影在线观看| 欧美麻豆精品久久久久久| www国产精品av| 亚洲一区二区三区四区五区中文 | 在线观看三级视频欧美| 精品免费视频.| 亚洲精品日日夜夜| 加勒比av一区二区| 在线观看av一区| 久久久久久电影| 一区二区三区四区五区视频在线观看| 久久国产精品色婷婷| 色婷婷狠狠综合| 国产亚洲综合在线| 日韩av一区二区三区四区| 97se亚洲国产综合自在线观| 久久伊人蜜桃av一区二区| 夜夜精品浪潮av一区二区三区 | 美女国产一区二区| 色就色 综合激情| 久久久久青草大香线综合精品| 亚洲综合色网站| 国产福利91精品一区二区三区| 在线免费观看一区| 国产精品欧美精品| 国产一区二区毛片| 日韩欧美成人一区二区| 亚洲一区二区不卡免费| av成人免费在线观看| 国产三级精品三级在线专区| 麻豆精品在线播放| 欧美性大战久久| 亚洲欧美一区二区三区极速播放| 国产麻豆精品在线观看| 欧美电视剧免费观看| 天天操天天干天天综合网| 97精品久久久久中文字幕| 国产精品日产欧美久久久久| 韩国午夜理伦三级不卡影院| 日韩美一区二区三区| 免费观看成人av| 欧美一区日韩一区| 午夜不卡在线视频| 欧美蜜桃一区二区三区| 亚洲一区国产视频| 色哟哟国产精品| 亚洲欧美日韩国产另类专区| 成人成人成人在线视频| 国产精品另类一区| 99re亚洲国产精品| 亚洲男人的天堂av|