void PMLatheEdit::slotAddPointBelow( ) { int index = m_pPoints->currentRow( ); if( index >= 0 ) { QValueList<PMVector> points = m_pPoints->vectors( ); QValueListIterator<PMVector> it = points.at( index ); if( it != points.end( ) ) { QValueListIterator<PMVector> it2 = it; it2++; PMVector v; if( it2 == points.end( ) ) v = *it; else v = ( *it + *it2 ) / 2; points.insert( it2, v ); m_pPoints->setVectors( points, true ); m_pPoints->setCurrentCell( index + 1, m_pPoints->currentColumn( ) ); updatePointButtons( ); emit dataChanged( ); emit sizeChanged( ); } } }
/** * Return a list of PackageVersion objects sorted by their version numbers, * with the oldest version at the beginning and the latest version at the end * of the list. */ QValueList<PackageVersion*> Package::sortedVersionList() { QValueList<PackageVersion*> sortedVersions; QValueList<PackageVersion*>::iterator sortedVersionIterator; PackageVersionMap::iterator versionIterator; for( versionIterator = m_versions.begin(); versionIterator != m_versions.end(); versionIterator++ ) { if( versionIterator == m_versions.begin() ) { sortedVersions.append( *versionIterator ); continue; // if there is only one version, it can't be compared } // reverse iteration through the sorted version list sortedVersionIterator = sortedVersions.end(); while( true ) { if( sortedVersionIterator == sortedVersions.begin() ) { sortedVersions.prepend( *versionIterator ); break; } sortedVersionIterator--; if( (*versionIterator)->isNewerThan( (*sortedVersionIterator)->version() ) ) { sortedVersionIterator++; // insert after the compared one, not before sortedVersions.insert( sortedVersionIterator, *versionIterator ); break; } } } return sortedVersions; } // end of sortedVersionList()
//------------------------------------------------------------------------- KJSDebugWin::KJSDebugWin(QWidget *parent, const char *name) : KMainWindow(parent, name, WType_TopLevel), KInstance("kjs_debugger") { m_breakpoints = 0; m_breakpointCount = 0; m_curSourceFile = 0; m_mode = Continue; m_nextSourceUrl = ""; m_nextSourceBaseLine = 1; m_execs = 0; m_execsCount = 0; m_execsAlloc = 0; m_steppingDepth = 0; m_stopIcon = KGlobal::iconLoader()->loadIcon("stop", KIcon::Small); m_emptyIcon = QPixmap(m_stopIcon.width(), m_stopIcon.height()); QBitmap emptyMask(m_stopIcon.width(), m_stopIcon.height(), true); m_emptyIcon.setMask(emptyMask); setCaption(i18n("JavaScript Debugger")); QWidget *mainWidget = new QWidget(this); setCentralWidget(mainWidget); QVBoxLayout *vl = new QVBoxLayout(mainWidget, 5); // frame list & code QSplitter *hsplitter = new QSplitter(Qt::Vertical, mainWidget); QSplitter *vsplitter = new QSplitter(hsplitter); QFont font(KGlobalSettings::fixedFont()); QWidget *contextContainer = new QWidget(vsplitter); QLabel *contextLabel = new QLabel(i18n("Call stack"), contextContainer); QWidget *contextListContainer = new QWidget(contextContainer); m_contextList = new QListBox(contextListContainer); m_contextList->setMinimumSize(100, 200); connect(m_contextList, SIGNAL(highlighted(int)), this, SLOT(slotShowFrame(int))); QHBoxLayout *clistLayout = new QHBoxLayout(contextListContainer); clistLayout->addWidget(m_contextList); clistLayout->addSpacing(KDialog::spacingHint()); QVBoxLayout *contextLayout = new QVBoxLayout(contextContainer); contextLayout->addWidget(contextLabel); contextLayout->addSpacing(KDialog::spacingHint()); contextLayout->addWidget(contextListContainer); // source selection & display QWidget *sourceSelDisplay = new QWidget(vsplitter); QVBoxLayout *ssdvl = new QVBoxLayout(sourceSelDisplay); m_sourceSel = new QComboBox(toolBar()); connect(m_sourceSel, SIGNAL(activated(int)), this, SLOT(slotSourceSelected(int))); m_sourceDisplay = new SourceDisplay(this, sourceSelDisplay); ssdvl->addWidget(m_sourceDisplay); connect(m_sourceDisplay, SIGNAL(lineDoubleClicked(int)), SLOT(slotToggleBreakpoint(int))); QValueList< int > vsplitSizes; vsplitSizes.insert(vsplitSizes.end(), 120); vsplitSizes.insert(vsplitSizes.end(), 480); vsplitter->setSizes(vsplitSizes); // evaluate QWidget *evalContainer = new QWidget(hsplitter); QLabel *evalLabel = new QLabel(i18n("JavaScript console"), evalContainer); m_evalEdit = new EvalMultiLineEdit(evalContainer); m_evalEdit->setWordWrap(QMultiLineEdit::NoWrap); m_evalEdit->setFont(font); connect(m_evalEdit, SIGNAL(returnPressed()), SLOT(slotEval())); m_evalDepth = 0; QVBoxLayout *evalLayout = new QVBoxLayout(evalContainer); evalLayout->addSpacing(KDialog::spacingHint()); evalLayout->addWidget(evalLabel); evalLayout->addSpacing(KDialog::spacingHint()); evalLayout->addWidget(m_evalEdit); QValueList< int > hsplitSizes; hsplitSizes.insert(hsplitSizes.end(), 400); hsplitSizes.insert(hsplitSizes.end(), 200); hsplitter->setSizes(hsplitSizes); vl->addWidget(hsplitter); // actions KPopupMenu *debugMenu = new KPopupMenu(this); menuBar()->insertItem("&Debug", debugMenu); m_actionCollection = new KActionCollection(this); m_actionCollection->setInstance(this); // Venkman use F12, KDevelop F10 KShortcut scNext = KShortcut(KKeySequence(KKey(Qt::Key_F12))); scNext.append(KKeySequence(KKey(Qt::Key_F10))); m_nextAction = new KAction(i18n("Next breakpoint", "&Next"), "dbgnext", scNext, this, SLOT(slotNext()), m_actionCollection, "next"); m_stepAction = new KAction(i18n("&Step"), "dbgstep", KShortcut(Qt::Key_F11), this, SLOT(slotStep()), m_actionCollection, "step"); // Venkman use F5, Kdevelop F9 KShortcut scCont = KShortcut(KKeySequence(KKey(Qt::Key_F5))); scCont.append(KKeySequence(KKey(Qt::Key_F9))); m_continueAction = new KAction(i18n("&Continue"), "dbgrun", scCont, this, SLOT(slotContinue()), m_actionCollection, "cont"); m_stopAction = new KAction(i18n("St&op"), "stop", KShortcut(Qt::Key_F4), this, SLOT(slotStop()), m_actionCollection, "stop"); m_breakAction = new KAction(i18n("&Break at Next Statement"), "dbgrunto", KShortcut(Qt::Key_F8), this, SLOT(slotBreakNext()), m_actionCollection, "breaknext"); m_nextAction->setToolTip(i18n("Next breakpoint", "Next")); m_stepAction->setToolTip(i18n("Step")); m_continueAction->setToolTip(i18n("Continue")); m_stopAction->setToolTip(i18n("Stop")); m_breakAction->setToolTip("Break at next Statement"); m_nextAction->setEnabled(false); m_stepAction->setEnabled(false); m_continueAction->setEnabled(false); m_stopAction->setEnabled(false); m_breakAction->setEnabled(true); m_nextAction->plug(debugMenu); m_stepAction->plug(debugMenu); m_continueAction->plug(debugMenu); // m_stopAction->plug(debugMenu); ### disabled until DebuggerImp::stop() works reliably m_breakAction->plug(debugMenu); m_nextAction->plug(toolBar()); m_stepAction->plug(toolBar()); m_continueAction->plug(toolBar()); // m_stopAction->plug(toolBar()); ### m_breakAction->plug(toolBar()); toolBar()->insertWidget(1, 300, m_sourceSel); toolBar()->setItemAutoSized(1); updateContextList(); setMinimumSize(300, 200); resize(600, 450); }