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

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

?? revgraphview.cpp

?? LINUX 下以 QT/KDE 寫的 SVN 客戶端
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    //*stream << QString("  overlap=false;\n  splines=true;\n");    RevGraphView::trevTree::ConstIterator it1;    for (it1=m_Tree.begin();it1!=m_Tree.end();++it1) {        *stream << "  " << it1.key()            << "[ "            << "shape=box, "            << "label=\""<<getLabelstring(it1.key())<<"\","            << "];\n";        for (unsigned j=0;j<it1.data().targets.count();++j) {            *stream<<"  "<<it1.key().latin1()<< " "                << "->"<<" "<<it1.data().targets[j].key                << " [fontsize=10,style=\"solid\"];\n";        }    }    *stream << "}\n"<<flush;    renderProcess = new KProcess();    renderProcess->setEnvironment("LANG","C");    *renderProcess << "dot";    *renderProcess << dotTmpFile->name() << "-Tplain";    connect(renderProcess,SIGNAL(processExited(KProcess*)),this,SLOT(dotExit(KProcess*)));    connect(renderProcess,SIGNAL(receivedStdout(KProcess*,char*,int)),        this,SLOT(readDotOutput(KProcess*,char*,int)) );    if (!renderProcess->start(KProcess::NotifyOnExit,KProcess::Stdout)) {        QString arguments;        for (unsigned c=0;c<renderProcess->args().count();++c) {            arguments+=QString(" %1").arg(renderProcess->args()[c]);        }        QString error = i18n("Could not start process \"%1\".").arg(arguments);        showText(error);        renderProcess=0;        //delete renderProcess;<    }}QString RevGraphView::toolTip(const QString&_nodename,bool full)const{    QString res = QString::null;    trevTree::ConstIterator it;    it = m_Tree.find(_nodename);    if (it==m_Tree.end()) {        return res;    }    QStringList sp = QStringList::split("\n",it.data().Message);    QString sm;    if (sp.count()==0) {        sm = it.data().Message;    } else {        if (!full) {            sm = sp[0]+"...";        } else {            for (unsigned j = 0; j<sp.count(); ++j) {                if (j>0) sm+="<br>";                sm+=sp[j];            }        }    }    if (!full && sm.length()>50) {        sm.truncate(47);        sm+="...";    }    static QString csep = "</td><td>";    static QString rend = "</td></tr>";    static QString rstart = "<tr><td>";    res = QString("<html><body>");    if (!full) {        res+=QString("<b>%1</b>").arg(it.data().name);        res += i18n("<br>Revision: %1<br>Author: %2<br>Date: %3<br>Log: %4</html>")            .arg(it.data().rev)            .arg(it.data().Author)            .arg(it.data().Date)            .arg(sm);    } else {        res+="<table><tr><th colspan=\"2\"><b>"+it.data().name+"</b></th></tr>";        res+=rstart;        res+=i18n("<b>Revision</b>%1%2%3").arg(csep).arg(it.data().rev).arg(rend);        res+=rstart+i18n("<b>Author</b>%1%2%3").arg(csep).arg(it.data().Author).arg(rend);        res+=rstart+i18n("<b>Date</b>%1%2%3").arg(csep).arg(it.data().Date).arg(rend);        res+=rstart+i18n("<b>Log</b>%1%2%3").arg(csep).arg(sm).arg(rend);        res+="</table></body></html>";    }    return res;}void RevGraphView::updateSizes(QSize s){    if (!m_Canvas) return;    if (s == QSize(0,0)) s = size();    // the part of the canvas that should be visible    int cWidth  = m_Canvas->width()  - 2*_xMargin + 100;    int cHeight = m_Canvas->height() - 2*_yMargin + 100;    // hide birds eye view if no overview needed    if (((cWidth < s.width()) && cHeight < s.height())||m_NodeList.count()==0) {      m_CompleteView->hide();      return;    }    m_CompleteView->show();    // first, assume use of 1/3 of width/height (possible larger)    double zoom = .33 * s.width() / cWidth;    if (zoom * cHeight < .33 * s.height()) zoom = .33 * s.height() / cHeight;    // fit to widget size    if (cWidth  * zoom  > s.width())   zoom = s.width() / (double)cWidth;    if (cHeight * zoom  > s.height())  zoom = s.height() / (double)cHeight;    // scale to never use full height/width    zoom = zoom * 3/4;    // at most a zoom of 1/3    if (zoom > .33) zoom = .33;    if (zoom != _cvZoom) {      _cvZoom = zoom;      if (0) qDebug("Canvas Size: %dx%d, Visible: %dx%d, Zoom: %f",            m_Canvas->width(), m_Canvas->height(),            cWidth, cHeight, zoom);      QWMatrix wm;      wm.scale( zoom, zoom );      m_CompleteView->setWorldMatrix(wm);      // make it a little bigger to compensate for widget frame      m_CompleteView->resize(int(cWidth * zoom) + 4,                            int(cHeight * zoom) + 4);      // update ZoomRect in completeView      contentsMovingSlot(contentsX(), contentsY());    }    m_CompleteView->setContentsPos(int(zoom*(_xMargin-50)),                  int(zoom*(_yMargin-50)));    updateZoomerPos();}void RevGraphView::updateZoomerPos(){    int cvW = m_CompleteView->width();    int cvH = m_CompleteView->height();    int x = width()- cvW - verticalScrollBar()->width()    -2;    int y = height()-cvH - horizontalScrollBar()->height() -2;    QPoint oldZoomPos = m_CompleteView->pos();    QPoint newZoomPos = QPoint(0,0);#if 0    ZoomPosition zp = _zoomPosition;    if (zp == Auto) {#else    ZoomPosition zp = m_LastAutoPosition;#endif    QPoint tl1Pos = viewportToContents(QPoint(0,0));    QPoint tl2Pos = viewportToContents(QPoint(cvW,cvH));    QPoint tr1Pos = viewportToContents(QPoint(x,0));    QPoint tr2Pos = viewportToContents(QPoint(x+cvW,cvH));    QPoint bl1Pos = viewportToContents(QPoint(0,y));    QPoint bl2Pos = viewportToContents(QPoint(cvW,y+cvH));    QPoint br1Pos = viewportToContents(QPoint(x,y));    QPoint br2Pos = viewportToContents(QPoint(x+cvW,y+cvH));    int tlCols = m_Canvas->collisions(QRect(tl1Pos,tl2Pos)).count();    int trCols = m_Canvas->collisions(QRect(tr1Pos,tr2Pos)).count();    int blCols = m_Canvas->collisions(QRect(bl1Pos,bl2Pos)).count();    int brCols = m_Canvas->collisions(QRect(br1Pos,br2Pos)).count();    int minCols = tlCols;    zp = m_LastAutoPosition;    switch(zp) {        case TopRight:    minCols = trCols; break;        case BottomLeft:  minCols = blCols; break;        case BottomRight: minCols = brCols; break;        default:        case TopLeft:     minCols = tlCols; break;    }    if (minCols > tlCols) { minCols = tlCols; zp = TopLeft; }    if (minCols > trCols) { minCols = trCols; zp = TopRight; }    if (minCols > blCols) { minCols = blCols; zp = BottomLeft; }    if (minCols > brCols) { minCols = brCols; zp = BottomRight; }    m_LastAutoPosition = zp;#if 0    }#endif    switch(zp) {    case TopRight:        newZoomPos = QPoint(x,0);        break;    case BottomLeft:        newZoomPos = QPoint(0,y);        break;    case BottomRight:        newZoomPos = QPoint(x,y);        break;    default:    break;    }    if (newZoomPos != oldZoomPos) m_CompleteView->move(newZoomPos);}void RevGraphView::contentsMovingSlot(int x,int y){    QRect z(int(x * _cvZoom), int(y * _cvZoom),        int(visibleWidth() * _cvZoom)-1, int(visibleHeight() * _cvZoom)-1);    if (0) qDebug("moving: (%d,%d) => (%d/%d - %dx%d)",                x, y, z.x(), z.y(), z.width(), z.height());    m_CompleteView->setZoomRect(z);    if (!_noUpdateZoomerPos) {        updateZoomerPos();    }}void RevGraphView::zoomRectMoved(int dx,int dy){  if (leftMargin()>0) dx = 0;  if (topMargin()>0) dy = 0;  _noUpdateZoomerPos = true;  scrollBy(int(dx/_cvZoom),int(dy/_cvZoom));  _noUpdateZoomerPos = false;}void RevGraphView::zoomRectMoveFinished(){#if 0    if (_zoomPosition == Auto)#endif    updateZoomerPos();}void RevGraphView::resizeEvent(QResizeEvent*e){    QCanvasView::resizeEvent(e);    if (m_Canvas) updateSizes(e->size());}void RevGraphView::makeSelected(GraphTreeLabel*gtl){    if (m_Selected) {        m_Selected->setSelected(false);    }    m_Selected=gtl;    if (m_Marker) {        m_Marker->hide();        delete m_Marker;        m_Marker=0;    }    if (gtl) {        m_Marker = new GraphMark(gtl,m_Canvas);        m_Marker->setZ(-1);        m_Marker->show();        m_Selected->setSelected(true);    }    m_Canvas->update();    m_CompleteView->updateCurrentRect();}void RevGraphView::contentsMouseDoubleClickEvent ( QMouseEvent * e ){    setFocus();    if (e->button() == Qt::LeftButton) {        QCanvasItemList l = canvas()->collisions(e->pos());        if (l.count()>0) {            QCanvasItem* i = l.first();            if (i->rtti()==GRAPHTREE_LABEL) {                makeSelected( (GraphTreeLabel*)i);                emit dispDetails(toolTip(((GraphTreeLabel*)i)->nodename(),true));            }        }    }}void RevGraphView::contentsMousePressEvent ( QMouseEvent * e ){    setFocus();    _isMoving = true;    _lastPos = e->globalPos();}void RevGraphView::contentsMouseReleaseEvent ( QMouseEvent * ){    _isMoving = false;    updateZoomerPos();}void RevGraphView::contentsMouseMoveEvent ( QMouseEvent * e ){    if (_isMoving) {        int dx = e->globalPos().x() - _lastPos.x();        int dy = e->globalPos().y() - _lastPos.y();        _noUpdateZoomerPos = true;        scrollBy(-dx, -dy);        _noUpdateZoomerPos = false;        _lastPos = e->globalPos();    }}void RevGraphView::setNewDirection(int dir){    if (dir<0)dir=3;    else if (dir>3)dir=0;    Kdesvnsettings::setTree_direction(dir);    dumpRevtree();}void RevGraphView::contentsContextMenuEvent(QContextMenuEvent* e){    if (!m_Canvas) return;    QCanvasItemList l = canvas()->collisions(e->pos());    QCanvasItem* i = (l.count() == 0) ? 0 : l.first();    QPopupMenu popup;    if (i && i->rtti()==GRAPHTREE_LABEL) {        if (!((GraphTreeLabel*)i)->source().isEmpty() && getAction(((GraphTreeLabel*)i)->nodename())!='D') {            popup.insertItem(i18n("Diff to previous"),301);        }        if (m_Selected && m_Selected != i && getAction(m_Selected->nodename())!='D'            && getAction(((GraphTreeLabel*)i)->nodename())!='D') {            popup.insertItem(i18n("Diff to selected item"),302);        }        if (getAction(((GraphTreeLabel*)i)->nodename())!='D') {            popup.insertItem(i18n("Cat this version"),303);        }        if (m_Selected == i) {            popup.insertItem(i18n("Unselect item"),401);        } else {            popup.insertItem(i18n("Select item"),402);        }        popup.insertSeparator();        popup.insertItem(i18n("Display details"),403);        popup.insertSeparator();    }    popup.insertItem(i18n("Rotate counter-clockwise"),101);    popup.insertItem(i18n("Rotate clockwise"),102);    popup.insertSeparator();    int it = popup.insertItem(i18n("Diff in revisiontree is recursive"),202);    popup.setCheckable(true);    popup.setItemChecked(it,Kdesvnsettings::tree_diff_rec());    popup.insertItem(i18n("Save tree as png"),201);    int r = popup.exec(e->globalPos());    switch (r) {        case 101:        {            int dir = Kdesvnsettings::tree_direction();            setNewDirection(++dir);        }        break;        case 102:        {            int dir = Kdesvnsettings::tree_direction();            setNewDirection(--dir);        }        break;        case 201:        {            QString fn = KFileDialog::getSaveFileName(":","*.png");            if (!fn.isEmpty()) {                if (m_Marker) {                    m_Marker->hide();                }                if (m_Selected) {                    m_Selected->setSelected(false);                }                QPixmap pix(m_Canvas->size());                QPainter p(&pix);                m_Canvas->drawArea( m_Canvas->rect(), &p );                pix.save(fn,"PNG");                if (m_Marker) {                    m_Marker->show();                }                if (m_Selected) {                    m_Selected->setSelected(true);                    m_Canvas->update();                    m_CompleteView->updateCurrentRect();                }            }        }        case 202:        {            Kdesvnsettings::setTree_diff_rec(!Kdesvnsettings::tree_diff_rec());            break;        }        break;        case 301:            if (i && i->rtti()==GRAPHTREE_LABEL && !((GraphTreeLabel*)i)->source().isEmpty()) {                makeDiffPrev((GraphTreeLabel*)i);            }        break;        case 302:            if (i && i->rtti()==GRAPHTREE_LABEL && m_Selected) {                makeDiff(((GraphTreeLabel*)i)->nodename(),m_Selected->nodename());            }        break;        case 303:            if (i && i->rtti()==GRAPHTREE_LABEL) {                makeCat((GraphTreeLabel*)i);            }        break;        case 401:            makeSelected(0);        break;        case 402:            makeSelected((GraphTreeLabel*)i);        break;        case 403:            emit dispDetails(toolTip(((GraphTreeLabel*)i)->nodename(),true));        break;        default:        break;    }}void RevGraphView::makeCat(GraphTreeLabel*_l){    if (!_l) {        return;    }    QString n1 = _l->nodename();    trevTree::ConstIterator it = m_Tree.find(n1);    if (it==m_Tree.end()) {        return;    }    svn::Revision tr(it.data().rev);    QString tp = _basePath+it.data().name;    emit makeCat(tr,tp,it.data().name,tr,kapp->activeModalWidget());}void RevGraphView::makeDiffPrev(GraphTreeLabel*_l){    if (!_l) return;    QString n1,n2;    n1 = _l->nodename();    n2 = _l->source();    makeDiff(n1,n2);}void RevGraphView::makeDiff(const QString&n1,const QString&n2){    if (n1.isEmpty()||n2.isEmpty()) return;    trevTree::ConstIterator it;    it = m_Tree.find(n2);    if (it==m_Tree.end()) {        return;    }    svn::Revision sr(it.data().rev);    QString sp = _basePath+it.data().name;    it = m_Tree.find(n1);    if (it==m_Tree.end()) {        return;    }    svn::Revision tr(it.data().rev);    QString tp = _basePath+it.data().name;    if (Kdesvnsettings::tree_diff_rec()) {        emit makeRecDiff(sp,sr,tp,tr,kapp->activeModalWidget());    } else {        emit makeNorecDiff(sp,sr,tp,tr,kapp->activeModalWidget());    }}void RevGraphView::setBasePath(const QString&_path){    _basePath = _path;}void RevGraphView::slotClientException(const QString&what){    KMessageBox::sorry(KApplication::activeModalWidget(),what,i18n("SVN Error"));}#include "revgraphview.moc"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久| 亚洲成精国产精品女| 亚洲无人区一区| 国产成人精品影视| 欧美日韩日日摸| 一本一道综合狠狠老| 青青草成人在线观看| 天天色综合成人网| 色综合久久99| 欧美人xxxx| 国产成人综合网站| 日韩欧美一级片| 亚洲精选视频在线| av在线一区二区三区| 国产成人精品1024| 日韩一区二区在线免费观看| 一区二区三区欧美亚洲| 成人精品国产一区二区4080| 精品福利一二区| 蜜桃av噜噜一区| 欧美日韩亚洲综合在线 | 在线观看一区日韩| 国产精品久99| 国产精品一线二线三线| 日韩欧美在线123| 天堂在线一区二区| 欧美午夜一区二区三区| 亚洲精品免费看| 97aⅴ精品视频一二三区| 亚洲国产经典视频| 国产一区 二区 三区一级| 日韩精品自拍偷拍| 美女一区二区久久| 欧美一区二区不卡视频| 亚洲国产色一区| 欧美丝袜丝交足nylons图片| 国产在线麻豆精品观看| 视频一区二区三区入口| 欧美日韩精品一区二区在线播放| 亚洲欧美日韩国产成人精品影院| 成人黄色片在线观看| 中文字幕国产一区| 成人午夜在线免费| 中文字幕 久热精品 视频在线| 国产经典欧美精品| 中文字幕不卡三区| av在线免费不卡| 国产精品国产三级国产aⅴ原创| 国产999精品久久久久久| 日本一二三四高清不卡| 成人黄色一级视频| 椎名由奈av一区二区三区| 91一区二区在线观看| 亚洲精品ww久久久久久p站| 欧美最新大片在线看 | 精品国产髙清在线看国产毛片| 美女视频黄 久久| 欧美不卡一二三| 国产一区二区成人久久免费影院| 久久中文娱乐网| 成人国产亚洲欧美成人综合网| 日韩一区中文字幕| 欧美日韩中文字幕一区| 日本不卡一二三区黄网| 久久久噜噜噜久久中文字幕色伊伊| 国产一区 二区 三区一级| 中文字幕亚洲视频| 欧美色偷偷大香| 理论电影国产精品| 欧美国产精品一区二区三区| 91视频一区二区| 丝袜诱惑亚洲看片| 久久人人97超碰com| 91原创在线视频| 天天免费综合色| 精品福利一区二区三区| 97精品国产97久久久久久久久久久久| 亚洲午夜免费电影| 精品久久人人做人人爱| 国产91露脸合集magnet| 一区二区三区四区蜜桃| 日韩欧美一区二区免费| 成人91在线观看| 午夜国产不卡在线观看视频| 久久久久久久电影| 日本高清视频一区二区| 久久电影网电视剧免费观看| 亚洲欧洲精品天堂一级| 8x8x8国产精品| 粉嫩嫩av羞羞动漫久久久 | 夜夜精品视频一区二区| 中文av字幕一区| 久久综合久久综合久久综合| 97久久超碰国产精品| 93久久精品日日躁夜夜躁欧美| 国产做a爰片久久毛片| 国产一区二区在线观看视频| 国内欧美视频一区二区 | 久久av中文字幕片| 国产成人自拍在线| 国产福利一区在线观看| 激情五月婷婷综合网| 在线亚洲一区二区| 久久综合九色综合久久久精品综合| 亚洲男人的天堂一区二区| 国精产品一区一区三区mba桃花| 欧美色综合网站| 一区在线观看视频| 久久精品国产99久久6| 欧美三区在线观看| 亚洲欧美乱综合| 丰满放荡岳乱妇91ww| 日韩精品一区二区三区在线 | 国产精品主播直播| 91精品啪在线观看国产60岁| 一区二区三区中文字幕电影| 丁香婷婷深情五月亚洲| 久久午夜羞羞影院免费观看| 日本在线不卡视频一二三区| 欧美在线免费播放| 亚洲欧美福利一区二区| 成人精品gif动图一区| 欧美激情一区二区三区蜜桃视频| 免费在线看成人av| 777午夜精品视频在线播放| 亚洲一区免费在线观看| 一本大道久久a久久精二百| 中文字幕亚洲一区二区va在线| 国产91精品精华液一区二区三区| 亚洲精品一区二区三区四区高清| 蜜桃视频一区二区三区| 欧美一区二区在线免费观看| 日韩二区三区四区| 欧美体内she精视频| 亚洲国产三级在线| 欧美日韩中文国产| 亚洲成人在线观看视频| 国产精品久久久久久久午夜片| 国产一级精品在线| 久久精品视频免费| 成人精品高清在线| 亚洲免费在线视频| 欧美午夜精品一区二区蜜桃 | 亚洲国产精品精华液网站| 91官网在线观看| 亚洲国产一区二区在线播放| 91精品免费在线观看| 久久激情综合网| 久久你懂得1024| 风间由美一区二区av101| 国产精品女人毛片| 99久久免费精品高清特色大片| 亚洲欧洲一区二区三区| 日本久久一区二区| 午夜不卡av在线| 日韩网站在线看片你懂的| 国产综合久久久久久鬼色| 国产亚洲精品超碰| 91捆绑美女网站| 日韩在线播放一区二区| 久久综合九色欧美综合狠狠| 成人av在线资源| 亚洲电影一级片| 欧美tickling网站挠脚心| 国产美女精品人人做人人爽| 国产精品五月天| 欧美日韩在线播放一区| 久久99国产精品麻豆| 国产精品污网站| 在线观看亚洲专区| 美日韩一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整| 成人污视频在线观看| 亚洲成人福利片| 久久免费国产精品| 在线免费av一区| 国产一区二区三区四| 亚洲激情自拍视频| 欧美精品一区二区三区视频| 91美女片黄在线观看| 久久精品国产免费看久久精品| 国产精品丝袜91| 欧美一卡二卡三卡四卡| 成人av在线播放网址| 日韩成人免费电影| 中文字幕亚洲区| 精品国产一二三| 欧美午夜免费电影| 成人禁用看黄a在线| 看电视剧不卡顿的网站| 亚洲女女做受ⅹxx高潮| 精品久久国产老人久久综合| 在线区一区二视频| 国产久卡久卡久卡久卡视频精品| 亚洲午夜一二三区视频| 日本一区二区电影| 精品国产免费一区二区三区四区| 色成年激情久久综合| 日韩中文字幕av电影| 亚洲人成网站色在线观看|