int prSymbol_envirPut(struct VMGlobals *g, int numArgsPushed) { PyrSlot *a, *b; int objClassIndex; a = g->sp - 1; // key b = g->sp; // value PyrSlot* currentEnvironmentSlot = &g->classvars->slots[1]; PyrObject *dict = slotRawObject(currentEnvironmentSlot); if (!IsObj(currentEnvironmentSlot)) return errFailed; if (!ISKINDOF(dict, class_identdict_index, class_identdict_maxsubclassindex)) return errFailed; int err = identDictPut(g, dict, a, b); if (err) return err; slotCopy(a,b); return errNone; }
int prEvent_Delta(struct VMGlobals *g, int numArgsPushed) { PyrSlot *a, key, dur, stretch, delta; double fdur, fstretch; int err; a = g->sp; // dict SetSymbol(&key, s_delta); identDict_lookup(slotRawObject(a), &key, calcHash(&key), &delta); if (NotNil(&delta)) { slotCopy(a,&delta); } else { SetSymbol(&key, s_dur); identDict_lookup(slotRawObject(a), &key, calcHash(&key), &dur); err = slotDoubleVal(&dur, &fdur); if (err) { if (NotNil(&dur)) return err; SetNil(a); return errNone; } SetSymbol(&key, s_stretch); identDict_lookup(slotRawObject(a), &key, calcHash(&key), &stretch); err = slotDoubleVal(&stretch, &fstretch); if (err) { if (NotNil(&stretch)) return err; SetFloat(a, fdur); return errNone; } SetFloat(a, fdur * fstretch ); } return errNone; }
int prFileReadLine(struct VMGlobals *g, int numArgsPushed) { PyrSlot *a, *b; // receiver(a File), string PyrFile *pfile; FILE *file; a = g->sp - 1; b = g->sp; pfile = (PyrFile*)slotRawObject(a); file = (FILE*)slotRawPtr(&pfile->fileptr); if (file == NULL) return errFailed; char* result = fgets(slotRawString(b)->s, (int)(MAXINDEXSIZE(slotRawObject(b)) - 1), file); // kengo: if (!result) { SetNil(a); } else { slotRawString(b)->size = (int)strlen(slotRawString(b)->s); if (slotRawString(b)->s[slotRawString(b)->size-1] == '\n') slotRawString(b)->size--; slotCopy(a,b); } return errNone; }
int prLID_GetInfo(VMGlobals* g, int numArgsPushed) { PyrSlot* args = g->sp - 1; int err; PyrObject* obj = SC_LID::getObject(args+0); if (!obj) return errWrongType; if (!isKindOfSlot(args+1, s_inputDeviceInfoClass->u.classobj)) return errWrongType; PyrObject* infoObj = slotRawObject(&args[1]); SC_LID* dev = SC_LID::getDevice(obj); if (!dev) return errFailed; char name[128]; err = dev->getName(name, sizeof(name)); if (err) return err; struct input_id info; char namePhys[128]; char nameUniq[128]; err = dev->getInfo(&info, namePhys, sizeof( namePhys ), nameUniq, sizeof( nameUniq ) ); if (err) return err; SetSymbol(infoObj->slots+0, getsym(name)); SetInt(infoObj->slots+1, info.bustype); SetInt(infoObj->slots+2, info.vendor); SetInt(infoObj->slots+3, info.product); SetInt(infoObj->slots+4, info.version); SetSymbol(infoObj->slots+5, getsym(namePhys)); SetSymbol(infoObj->slots+6, getsym(nameUniq)); slotCopy(&args[0], &args[1]); return errNone; }
bool identDict_lookup(PyrObject *dict, PyrSlot *key, int hash, PyrSlot *result) { again: PyrSlot *dictslots = dict->slots; PyrSlot *arraySlot = dictslots + ivxIdentDict_array; if (isKindOfSlot(arraySlot, class_array)) { PyrObject *array = slotRawObject(arraySlot); int index = arrayAtIdentityHashInPairsWithHash(array, key, hash); if (SlotEq(key, array->slots + index)) { slotCopy(result,&array->slots[index + 1]); return true; } } PyrClass *identDictClass = s_identitydictionary->u.classobj; PyrSlot *parentSlot = dictslots + ivxIdentDict_parent; PyrSlot * protoSlot = dictslots + ivxIdentDict_proto; if (isKindOfSlot(parentSlot, identDictClass)) { if (isKindOfSlot(protoSlot, identDictClass)) { // recursive call. if (identDict_lookup(slotRawObject(protoSlot), key, hash, result)) return true; } dict = slotRawObject(parentSlot); goto again; // tail call } else { if (isKindOfSlot(protoSlot, identDictClass)) { dict = slotRawObject(protoSlot); goto again; // tail call } } SetNil(result); return false; }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // Settings m_settings = new VSettings("org.hawaii.desktop"); connect(m_settings, SIGNAL(changed()), this, SLOT(settingsChanged())); // Connect signals connect(ui->actionNewTab, SIGNAL(triggered()), this, SLOT(slotNewTab())); connect(ui->actionNewWindow, SIGNAL(triggered()), this, SLOT(slotNewWindow())); connect(ui->actionCloseTab, SIGNAL(triggered()), this, SLOT(slotCloseCurrentTab())); connect(ui->actionOpenFileManager, SIGNAL(triggered()), this, SLOT(slotOpenFileManager())); connect(ui->actionQuit, SIGNAL(triggered()), this, SLOT(close())); connect(ui->actionCopy, SIGNAL(triggered()), this, SLOT(slotCopy())); connect(ui->actionPaste, SIGNAL(triggered()), this, SLOT(slotPaste())); connect(ui->actionFind, SIGNAL(triggered()), this, SLOT(slotFind())); connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(slotAbout())); connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(slotCloseTab(int))); // Start with a tab slotNewTab(); }
void MainWindow::initMenu() { //file _fileMenu = menuBar()->addMenu(QWidget::tr("文件(&F)")); QAction* actionNewFile = new QAction(QIcon(":/images/new.png"), QWidget::tr("新建(&New)"), this); actionNewFile->setShortcut(QWidget::tr("Ctrl+N")); actionNewFile->setToolTip(QWidget::tr("新建场景文件")); connect(actionNewFile, SIGNAL(triggered()), this, SLOT(slotNewFile())); _fileMenu->addAction(actionNewFile); QAction* actionOpenFile = new QAction(QIcon(":/images/open.png"), QWidget::tr("打开(&Open)"), this); actionOpenFile->setShortcut(QWidget::tr("Ctrl+O")); actionOpenFile->setToolTip(QWidget::tr("打开一个场景文件")); connect(actionOpenFile, SIGNAL(triggered()), this, SLOT(slotOpenFile())); _fileMenu->addAction(actionOpenFile); QAction* actionSaveFile = new QAction(QIcon(":/images/save.png"), QWidget::tr("保存(&Save)"), this); actionSaveFile->setShortcut(QWidget::tr("Ctrl+S")); actionSaveFile->setToolTip(QWidget::tr("保存场景文件")); actionSaveFile->setEnabled(false); connect(actionSaveFile, SIGNAL(triggered()), this, SLOT(slotSaveFile())); _fileMenu->addAction(actionSaveFile); QAction* actionSaveAsFile = new QAction(QIcon(":/images/save.png"), QWidget::tr("另存(SaveAs)"), this); actionSaveAsFile->setToolTip(QWidget::tr("另存场景文件")); actionSaveAsFile->setEnabled(false); connect(actionSaveAsFile, SIGNAL(triggered()), this, SLOT(slotSaveAsFile())); _fileMenu->addAction(actionSaveAsFile); QAction* actionExit = new QAction(QIcon(":/images/close.png"), QWidget::tr("退出(&X)"), this); actionExit->setToolTip(QWidget::tr("退出场景编辑器")); connect(actionExit, SIGNAL(triggered()), this, SLOT(slotExit())); _fileMenu->addAction(actionExit); //edit _editMenu = menuBar()->addMenu(QWidget::tr("编辑(&E)")); QAction* actionUndo = new QAction(QIcon(":/images/undo.png"), QWidget::tr("撤销"), this); actionUndo->setShortcut(QWidget::tr("Ctrl+Z")); actionUndo->setToolTip(QWidget::tr("撤销Ctrl+Z")); actionUndo->setEnabled(false); connect(actionUndo, SIGNAL(triggered()), this, SLOT(slotUndo())); _editMenu->addAction(actionUndo); QAction* actionRedo = new QAction(QIcon(":/images/redo.png"), QWidget::tr("重做"), this); actionRedo->setShortcut(QWidget::tr("Ctrl+Y")); actionRedo->setToolTip(QWidget::tr("重做Ctrl+Y")); actionRedo->setEnabled(false); connect(actionRedo, SIGNAL(triggered()), this, SLOT(slotRedo())); _editMenu->addAction(actionRedo); QAction* actionCopy = new QAction(QIcon(":/images/copy.png"), QWidget::tr("复制"), this); actionCopy->setShortcut(QWidget::tr("Ctrl+C")); actionCopy->setToolTip(QWidget::tr("复制Ctrl+C")); actionCopy->setEnabled(false); connect(actionCopy, SIGNAL(triggered()), this, SLOT(slotCopy())); _editMenu->addAction(actionCopy); QAction* actionRotateFast = new QAction(QIcon(":/images/rotate.png"), QWidget::tr("快速旋转"), this); actionRotateFast->setShortcut(QKeySequence(Qt::Key_F3)); actionRotateFast->setToolTip(QWidget::tr("快速旋转F3")); actionRotateFast->setEnabled(false); connect(actionRotateFast, SIGNAL(triggered()), this, SLOT(slotRotateFast())); _editMenu->addAction(actionRotateFast); QAction* actionAlign = new QAction(QIcon(":/images/align.png"), QWidget::tr("对齐"), this); actionAlign->setShortcut(QWidget::tr("Ctrl+L")); actionAlign->setToolTip(QWidget::tr("对齐Ctrl+L")); actionAlign->setEnabled(false); connect(actionAlign, SIGNAL(triggered()), this, SLOT(slotAlign())); _editMenu->addAction(actionAlign); QAction* actionDelete = new QAction(QIcon(":/images/delete.png"), QWidget::tr("删除"), this); actionDelete->setShortcut(QKeySequence(QKeySequence::Delete)); actionDelete->setToolTip(QWidget::tr("删除Delete")); actionDelete->setEnabled(false); connect(actionDelete, SIGNAL(triggered()), this, SLOT(slotDelete())); _editMenu->addAction(actionDelete); //windowsMenu _windowsMenu = menuBar()->addMenu(QWidget::tr("窗口(&W)")); QAction* actionObjectsTreeDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("场景树(&ObjTree)"), this); actionObjectsTreeDockWidget->setShortcut(QKeySequence("h")); actionObjectsTreeDockWidget->setToolTip(QWidget::tr("打开或隐藏对象树窗口")); actionObjectsTreeDockWidget->setEnabled(false); connect(actionObjectsTreeDockWidget, SIGNAL(triggered()), this, SLOT(slotObjectTreeWidgetActive())); _windowsMenu->addAction(actionObjectsTreeDockWidget); QAction* actionPropertyDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("属性窗"), this); actionPropertyDockWidget->setToolTip(QWidget::tr("打开或隐藏属性窗口")); actionPropertyDockWidget->setEnabled(false); connect(actionPropertyDockWidget, SIGNAL(triggered()), this, SLOT(slotPropertyDockWidgetActive())); _windowsMenu->addAction(actionPropertyDockWidget); QAction* actionBuiltinResourcesDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("内置资源列表"), this); actionBuiltinResourcesDockWidget->setToolTip(QWidget::tr("打开或隐藏内置资源列表窗口")); actionBuiltinResourcesDockWidget->setEnabled(false); connect(actionBuiltinResourcesDockWidget, SIGNAL(triggered()), this, SLOT(slotBuiltinResourcesDockWidgetActive())); _windowsMenu->addAction(actionBuiltinResourcesDockWidget); QAction* actionvdsResourcesDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("资源列表"), this); actionvdsResourcesDockWidget->setToolTip(QWidget::tr("打开或隐藏资源列表窗口")); actionvdsResourcesDockWidget->setEnabled(false); connect(actionvdsResourcesDockWidget, SIGNAL(triggered()), this, SLOT(slotvdsResourcesDockWidgetActive())); _windowsMenu->addAction(actionvdsResourcesDockWidget); QAction* actionCSharpAssemblyDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("脚本列表"), this); actionCSharpAssemblyDockWidget->setToolTip(QWidget::tr("打开或隐藏脚本列表窗口")); actionCSharpAssemblyDockWidget->setEnabled(false); connect(actionCSharpAssemblyDockWidget, SIGNAL(triggered()), this, SLOT(slotCSharpAssemblyDockWidgetActive())); _windowsMenu->addAction(actionCSharpAssemblyDockWidget); //tool _toolMenu = menuBar()->addMenu(QWidget::tr("工具(&T)")); QAction* actionAnimationMerge = new QAction(QIcon(":/images/default.png"), QWidget::tr("动画合并(&AnimationMerge)"), this); actionAnimationMerge->setToolTip(QWidget::tr("完成骨骼动画合并")); actionAnimationMerge->setEnabled(false); connect(actionAnimationMerge, SIGNAL(triggered()), this, SLOT(slotAnimationMerge())); _toolMenu->addAction(actionAnimationMerge); QAction* particleEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("粒子编辑(&Particle)"), this); particleEdit->setToolTip(QWidget::tr("编辑粒子效果")); particleEdit->setEnabled(false); connect(particleEdit, SIGNAL(triggered()), this, SLOT(slotParticleEdit())); _toolMenu->addAction(particleEdit); QAction* actionPlantBrushDockWidget = new QAction(QIcon(":/images/default.png"), QWidget::tr("植被编辑"), this); actionPlantBrushDockWidget->setToolTip(QWidget::tr("打开或隐藏植被编辑窗口")); actionPlantBrushDockWidget->setEnabled(false); connect(actionPlantBrushDockWidget, SIGNAL(triggered()), this, SLOT(slotPlantBrushDockWidgetActive())); _toolMenu->addAction(actionPlantBrushDockWidget); QAction* actionViewPointEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("视点编辑(&ViewPoint)"), this); actionViewPointEdit->setToolTip(QWidget::tr("定义视点")); actionViewPointEdit->setEnabled(false); connect(actionViewPointEdit, SIGNAL(triggered()), this, SLOT(slotViewPointEdit())); _toolMenu->addAction(actionViewPointEdit); QAction* actionPhysicalEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("物理编辑"), this); actionPhysicalEdit->setToolTip(QWidget::tr("定义碰撞体或碰撞面")); actionPhysicalEdit->setEnabled(false); connect(actionPhysicalEdit, SIGNAL(triggered()), this, SLOT(slotPhysicalEditDockWidgetActive())); _toolMenu->addAction(actionPhysicalEdit); QAction* actionRiverEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("河流编辑"), this); actionRiverEdit->setToolTip(QWidget::tr("定义河流效果")); actionRiverEdit->setEnabled(false); connect(actionRiverEdit, SIGNAL(triggered()), this, SLOT(slotRiverEditDockWidgetActive())); _toolMenu->addAction(actionRiverEdit); QAction* modelConvert = new QAction(QIcon(":/images/default.png"), QWidget::tr("模型转换(&ConvertModel)"), this); modelConvert->setToolTip(QWidget::tr("转换模型到其他平台")); modelConvert->setEnabled(true); connect(modelConvert, SIGNAL(triggered()), this, SLOT(slotConvertModel())); _toolMenu->addAction(modelConvert); QAction* compressDir = new QAction(QIcon(":/images/default.png"), QWidget::tr("压缩文件夹"), this); compressDir->setToolTip(QWidget::tr("压缩文件夹,可以设定文件名编码")); compressDir->setEnabled(true); connect(compressDir, SIGNAL(triggered()), this, SLOT(slotCompressDir())); _toolMenu->addAction(compressDir); //animation _animationMenu = menuBar()->addMenu(QWidget::tr("动画(&A)")); ///////////////////////////////////////////////////////////////////should move to PlotAnimation later QAction* actionViewPointAnimationEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("视点动画编辑"), this); actionViewPointAnimationEdit->setToolTip(QWidget::tr("编辑视点动画")); actionViewPointAnimationEdit->setEnabled(false); connect(actionViewPointAnimationEdit, SIGNAL(triggered()), this, SLOT(slotViewPointAnimationEdit())); _animationMenu->addAction(actionViewPointAnimationEdit); QAction* actionPlotAnimationEdit = new QAction(QIcon(":/images/default.png"), QWidget::tr("剧情编辑"), this); actionPlotAnimationEdit->setToolTip(QWidget::tr("编辑一段剧情")); actionPlotAnimationEdit->setEnabled(false); connect(actionPlotAnimationEdit, SIGNAL(triggered()), this, SLOT(slotPlotAnimationEdit())); _animationMenu->addAction(actionPlotAnimationEdit); }
// decoupled from resetActions in toplevel.cpp // as resetActions simply uses the action groups // specified in the ui.rc file void KEBApp::createActions() { m_actionsImpl = new ActionsImpl(this, GlobalBookmarkManager::self()->model()); connect(m_actionsImpl->testLinkHolder(), SIGNAL(setCancelEnabled(bool)), this, SLOT(setCancelTestsEnabled(bool))); connect(m_actionsImpl->favIconHolder(), SIGNAL(setCancelEnabled(bool)), this, SLOT(setCancelFavIconUpdatesEnabled(bool))); // save and quit should probably not be in the toplevel??? (void) KStandardAction::quit( this, SLOT( close() ), actionCollection()); KStandardAction::keyBindings(guiFactory(), SLOT(configureShortcuts()), actionCollection()); (void) KStandardAction::configureToolbars( this, SLOT( slotConfigureToolbars() ), actionCollection()); if (m_browser) { (void) KStandardAction::open( m_actionsImpl, SLOT( slotLoad() ), actionCollection()); (void) KStandardAction::saveAs( m_actionsImpl, SLOT( slotSaveAs() ), actionCollection()); } (void) KStandardAction::cut(m_actionsImpl, SLOT( slotCut() ), actionCollection()); (void) KStandardAction::copy(m_actionsImpl, SLOT( slotCopy() ), actionCollection()); (void) KStandardAction::paste(m_actionsImpl, SLOT( slotPaste() ), actionCollection()); // actions KAction* m_actionsImplDelete = actionCollection()->addAction("delete"); m_actionsImplDelete->setIcon(KIcon("edit-delete")); m_actionsImplDelete->setText(i18n("&Delete")); m_actionsImplDelete->setShortcut(Qt::Key_Delete); connect(m_actionsImplDelete, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotDelete() )); KAction* m_actionsImplRename = actionCollection()->addAction("rename"); m_actionsImplRename->setIcon(KIcon("edit-rename")); m_actionsImplRename->setText(i18n("Rename")); m_actionsImplRename->setShortcut(Qt::Key_F2); connect(m_actionsImplRename, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotRename() )); KAction* m_actionsImplChangeURL = actionCollection()->addAction("changeurl"); m_actionsImplChangeURL->setIcon(KIcon("edit-rename")); m_actionsImplChangeURL->setText(i18n("C&hange Location")); m_actionsImplChangeURL->setShortcut(Qt::Key_F3); connect(m_actionsImplChangeURL, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeURL() )); KAction* m_actionsImplChangeComment = actionCollection()->addAction("changecomment"); m_actionsImplChangeComment->setIcon(KIcon("edit-rename")); m_actionsImplChangeComment->setText(i18n("C&hange Comment")); m_actionsImplChangeComment->setShortcut(Qt::Key_F4); connect(m_actionsImplChangeComment, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeComment() )); KAction* m_actionsImplChangeIcon = actionCollection()->addAction("changeicon"); m_actionsImplChangeIcon->setIcon(KIcon("preferences-desktop-icons")); m_actionsImplChangeIcon->setText(i18n("Chan&ge Icon...")); connect(m_actionsImplChangeIcon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotChangeIcon() )); KAction* m_actionsImplUpdateFavIcon = actionCollection()->addAction("updatefavicon"); m_actionsImplUpdateFavIcon->setText(i18n("Update Favicon")); connect(m_actionsImplUpdateFavIcon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotUpdateFavIcon() )); KAction* m_actionsImplRecursiveSort = actionCollection()->addAction("recursivesort"); m_actionsImplRecursiveSort->setText(i18n("Recursive Sort")); connect(m_actionsImplRecursiveSort, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotRecursiveSort() )); KAction* m_actionsImplNewFolder = actionCollection()->addAction("newfolder"); m_actionsImplNewFolder->setIcon(KIcon("folder-new")); m_actionsImplNewFolder->setText(i18n("&New Folder...")); m_actionsImplNewFolder->setShortcut(Qt::CTRL+Qt::Key_N); connect(m_actionsImplNewFolder, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotNewFolder() )); KAction* m_actionsImplNewBookmark = actionCollection()->addAction("newbookmark"); m_actionsImplNewBookmark->setIcon(KIcon("bookmark-new")); m_actionsImplNewBookmark->setText(i18n("&New Bookmark")); connect(m_actionsImplNewBookmark, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotNewBookmark() )); KAction* m_actionsImplInsertSeparator = actionCollection()->addAction("insertseparator"); m_actionsImplInsertSeparator->setText(i18n("&Insert Separator")); m_actionsImplInsertSeparator->setShortcut(Qt::CTRL+Qt::Key_I); connect(m_actionsImplInsertSeparator, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotInsertSeparator() )); KAction* m_actionsImplSort = actionCollection()->addAction("sort"); m_actionsImplSort->setText(i18n("&Sort Alphabetically")); connect(m_actionsImplSort, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotSort() )); KAction* m_actionsImplSetAsToolbar = actionCollection()->addAction("setastoolbar"); m_actionsImplSetAsToolbar->setIcon(KIcon("bookmark-toolbar")); m_actionsImplSetAsToolbar->setText(i18n("Set as T&oolbar Folder")); connect(m_actionsImplSetAsToolbar, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotSetAsToolbar() )); KAction* m_actionsImplExpandAll = actionCollection()->addAction("expandall"); m_actionsImplExpandAll->setText(i18n("&Expand All Folders")); connect(m_actionsImplExpandAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExpandAll() )); KAction* m_actionsImplCollapseAll = actionCollection()->addAction("collapseall"); m_actionsImplCollapseAll->setText(i18n("Collapse &All Folders")); connect(m_actionsImplCollapseAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCollapseAll() )); KAction* m_actionsImplOpenLink = actionCollection()->addAction("openlink"); m_actionsImplOpenLink->setIcon(KIcon("document-open")); m_actionsImplOpenLink->setText(i18n("&Open in Konqueror")); connect(m_actionsImplOpenLink, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotOpenLink() )); KAction* m_actionsImplTestSelection = actionCollection()->addAction("testlink"); m_actionsImplTestSelection->setIcon(KIcon("bookmarks")); m_actionsImplTestSelection->setText(i18n("Check &Status")); connect(m_actionsImplTestSelection, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotTestSelection() )); KAction* m_actionsImplTestAll = actionCollection()->addAction("testall"); m_actionsImplTestAll->setText(i18n("Check Status: &All")); connect(m_actionsImplTestAll, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotTestAll() )); KAction* m_actionsImplUpdateAllFavIcons = actionCollection()->addAction("updateallfavicons"); m_actionsImplUpdateAllFavIcons->setText(i18n("Update All &Favicons")); connect(m_actionsImplUpdateAllFavIcons, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotUpdateAllFavIcons() )); KAction* m_actionsImplCancelAllTests = actionCollection()->addAction("canceltests"); m_actionsImplCancelAllTests->setText(i18n("Cancel &Checks")); connect(m_actionsImplCancelAllTests, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCancelAllTests() )); KAction* m_actionsImplCancelFavIconUpdates = actionCollection()->addAction("cancelfaviconupdates"); m_actionsImplCancelFavIconUpdates->setText(i18n("Cancel &Favicon Updates")); connect(m_actionsImplCancelFavIconUpdates, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotCancelFavIconUpdates() )); KAction* m_actionsImplImportNS = actionCollection()->addAction("importNS"); m_actionsImplImportNS->setObjectName( QLatin1String("NS" )); m_actionsImplImportNS->setIcon(KIcon("netscape")); m_actionsImplImportNS->setText(i18n("Import &Netscape Bookmarks...")); connect(m_actionsImplImportNS, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); KAction* m_actionsImplImportOpera = actionCollection()->addAction("importOpera"); m_actionsImplImportOpera->setObjectName( QLatin1String("Opera" )); m_actionsImplImportOpera->setIcon(KIcon("opera")); m_actionsImplImportOpera->setText(i18n("Import &Opera Bookmarks...")); connect(m_actionsImplImportOpera, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); /* KAction* m_actionsImplImportCrashes = actionCollection()->addAction("importCrashes"); m_actionsImplImportCrashes->setObjectName( QLatin1String("Crashes" )); m_actionsImplImportCrashes->setText(i18n("Import All &Crash Sessions as Bookmarks...")); connect(m_actionsImplImportCrashes, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); */ KAction* m_actionsImplImportGaleon = actionCollection()->addAction("importGaleon"); m_actionsImplImportGaleon->setObjectName( QLatin1String("Galeon" )); m_actionsImplImportGaleon->setText(i18n("Import &Galeon Bookmarks...")); connect(m_actionsImplImportGaleon, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); KAction* m_actionsImplImportKDE2 = actionCollection()->addAction("importKDE2"); m_actionsImplImportKDE2->setObjectName( QLatin1String("KDE2" )); m_actionsImplImportKDE2->setIcon(KIcon("kde")); m_actionsImplImportKDE2->setText(i18n("Import &KDE 2 or KDE 3 Bookmarks...")); connect(m_actionsImplImportKDE2, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); KAction* m_actionsImplImportIE = actionCollection()->addAction("importIE"); m_actionsImplImportIE->setObjectName( QLatin1String("IE" )); m_actionsImplImportIE->setText(i18n("Import &Internet Explorer Bookmarks...")); connect(m_actionsImplImportIE, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); KAction* m_actionsImplImportMoz = actionCollection()->addAction("importMoz"); m_actionsImplImportMoz->setObjectName( QLatin1String("Moz" )); m_actionsImplImportMoz->setIcon(KIcon("mozilla")); m_actionsImplImportMoz->setText(i18n("Import &Mozilla Bookmarks...")); connect(m_actionsImplImportMoz, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotImport() )); KAction* m_actionsImplExportNS = actionCollection()->addAction("exportNS"); m_actionsImplExportNS->setIcon(KIcon("netscape")); m_actionsImplExportNS->setText(i18n("Export &Netscape Bookmarks")); connect(m_actionsImplExportNS, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportNS() )); KAction* m_actionsImplExportOpera = actionCollection()->addAction("exportOpera"); m_actionsImplExportOpera->setIcon(KIcon("opera")); m_actionsImplExportOpera->setText(i18n("Export &Opera Bookmarks...")); connect(m_actionsImplExportOpera, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportOpera() )); KAction* m_actionsImplExportHTML = actionCollection()->addAction("exportHTML"); m_actionsImplExportHTML->setIcon(KIcon("text-html")); m_actionsImplExportHTML->setText(i18n("Export &HTML Bookmarks...")); connect(m_actionsImplExportHTML, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportHTML() )); KAction* m_actionsImplExportIE = actionCollection()->addAction("exportIE"); m_actionsImplExportIE->setText(i18n("Export &Internet Explorer Bookmarks...")); connect(m_actionsImplExportIE, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportIE() )); KAction* m_actionsImplExportMoz = actionCollection()->addAction("exportMoz"); m_actionsImplExportMoz->setIcon(KIcon("mozilla")); m_actionsImplExportMoz->setText(i18n("Export &Mozilla Bookmarks...")); connect(m_actionsImplExportMoz, SIGNAL( triggered() ), m_actionsImpl, SLOT( slotExportMoz() )); }
HelpWidget::HelpWidget(QWidget * par, bool bIsStandalone) : QWidget(par) { setObjectName("help_widget"); setMinimumWidth(80); if(bIsStandalone)g_pHelpWidgetList->append(this); m_bIsStandalone = bIsStandalone; new QShortcut(QKeySequence::Copy,this,SLOT(slotCopy()),0,Qt::WidgetWithChildrenShortcut); new QShortcut(QKeySequence::Find,this,SLOT(slotShowHideFind()),0, bIsStandalone ? Qt::WidgetWithChildrenShortcut : Qt::WindowShortcut); // layout m_pLayout = new QVBoxLayout(this); m_pLayout->setMargin(0); m_pLayout->setSpacing(0); setLayout(m_pLayout); // upper toolbar m_pToolBar = new QToolBar(this); m_pLayout->addWidget(m_pToolBar); // webview m_pTextBrowser = new QWebView(this); m_pTextBrowser->setObjectName("text_browser"); m_pTextBrowser->setStyleSheet("QTextBrowser { background-color:white; color:black; }"); m_pLayout->addWidget(m_pTextBrowser); connect(m_pTextBrowser,SIGNAL(loadFinished(bool)),this,SLOT(slotLoadFinished(bool))); // lower toolbar m_pToolBarHighlight = new QToolBar(this); m_pLayout->addWidget(m_pToolBarHighlight); m_pToolBarHighlight->hide(); QLabel *pHighlightLabel = new QLabel(); pHighlightLabel->setText(__tr2qs("Highlight: ")); m_pToolBarHighlight->addWidget(pHighlightLabel); m_pFindText = new QLineEdit(); m_pToolBarHighlight->addWidget(m_pFindText); connect(m_pFindText,SIGNAL(textChanged(const QString )),this,SLOT(slotTextChanged(const QString))); m_pToolBarHighlight->addAction(*g_pIconManager->getSmallIcon(KviIconManager::Unrecognized), __tr2qs("Reset"), this, SLOT(slotResetFind())); m_pToolBarHighlight->addAction(*g_pIconManager->getSmallIcon(KviIconManager::Part), __tr2qs("Find previous"), this, SLOT(slotFindPrev())); m_pToolBarHighlight->addAction(*g_pIconManager->getSmallIcon(KviIconManager::Join), __tr2qs("Find next"), this, SLOT(slotFindNext())); // upper toolbar contents (depends on webview) QLabel *pBrowsingLabel = new QLabel(); pBrowsingLabel->setText(__tr2qs("Browsing: ")); m_pToolBar->addWidget(pBrowsingLabel); m_pToolBar->addAction(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPINDEX), __tr2qs("Show index"), this, SLOT(showIndex())); m_pToolBar->addAction(m_pTextBrowser->pageAction(QWebPage::Back)); m_pToolBar->addAction(m_pTextBrowser->pageAction(QWebPage::Forward)); m_pToolBar->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Plus)), __tr2qs("Zoom in"), this, SLOT(slotZoomIn())); m_pToolBar->addAction(*(g_pIconManager->getSmallIcon(KviIconManager::Minus)), __tr2qs("Zoom out"), this, SLOT(slotZoomOut())); if(bIsStandalone) { setAttribute(Qt::WA_DeleteOnClose); m_pToolBar->addAction(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPCLOSE), __tr2qs("Close"), this, SLOT(close())); } }
KOEditorAttachments::KOEditorAttachments( int spacing, QWidget *parent ) : QWidget( parent ) { QBoxLayout *topLayout = new QHBoxLayout( this ); topLayout->setSpacing( spacing ); QLabel *label = new QLabel( i18nc( "@label", "Attachments:" ), this ); topLayout->addWidget( label ); mAttachments = new AttachmentIconView( this ); mAttachments->setWhatsThis( i18nc( "@info:whatsthis", "Displays items (files, mail, etc.) that " "have been associated with this event or to-do." ) ); mAttachments->setItemsMovable( false ); mAttachments->setSelectionMode( Q3IconView::Extended ); topLayout->addWidget( mAttachments ); connect( mAttachments, SIGNAL(returnPressed(Q3IconViewItem *)), SLOT(showAttachment(Q3IconViewItem *)) ); connect( mAttachments, SIGNAL(doubleClicked(Q3IconViewItem *)), SLOT(showAttachment(Q3IconViewItem *)) ); connect( mAttachments, SIGNAL(itemRenamed(Q3IconViewItem *,const QString &)), SLOT(slotItemRenamed(Q3IconViewItem *,const QString &)) ); connect( mAttachments, SIGNAL(dropped(QDropEvent *,const Q3ValueList<Q3IconDragItem> &)), SLOT(dropped(QDropEvent *,const Q3ValueList<Q3IconDragItem> &)) ); connect( mAttachments, SIGNAL(selectionChanged()), SLOT(selectionChanged()) ); connect( mAttachments, SIGNAL(contextMenuRequested(Q3IconViewItem *,const QPoint &)), SLOT(contextMenu(Q3IconViewItem *,const QPoint &)) ); QPushButton *addButton = new QPushButton( this ); addButton->setIcon( KIcon( "list-add" ) ); addButton->setToolTip( i18nc( "@info:tooltip", "Add an attachment" ) ); addButton->setWhatsThis( i18nc( "@info:whatsthis", "Shows a dialog used to select an attachment " "to add to this event or to-do as link or as " "inline data." ) ); topLayout->addWidget( addButton ); connect( addButton, SIGNAL(clicked()), SLOT(slotAdd()) ); mRemoveBtn = new QPushButton( this ); mRemoveBtn->setIcon( KIcon( "list-remove" ) ); mRemoveBtn->setToolTip( i18nc( "@info:tooltip", "Remove the selected attachment" ) ); mRemoveBtn->setWhatsThis( i18nc( "@info:whatsthis", "Removes the attachment selected in the " "list above from this event or to-do." ) ); topLayout->addWidget( mRemoveBtn ); connect( mRemoveBtn, SIGNAL(clicked()), SLOT(slotRemove()) ); KActionCollection *ac = new KActionCollection( this ); ac->addAssociatedWidget( this ); mPopupMenu = new KMenu( this ); mOpenAction = new KAction( i18nc( "@action:inmenu open the attachment in a viewer", "&Open" ), this ); connect( mOpenAction, SIGNAL(triggered(bool)), this, SLOT(slotShow()) ); ac->addAction( "view", mOpenAction ); mPopupMenu->addAction( mOpenAction ); mPopupMenu->addSeparator(); mCopyAction = KStandardAction::copy( this, SLOT(slotCopy()), ac ); mPopupMenu->addAction( mCopyAction ); mCutAction = KStandardAction::cut( this, SLOT(slotCut()), ac ); mPopupMenu->addAction( mCutAction ); KAction *action = KStandardAction::paste( this, SLOT(slotPaste()), ac ); mPopupMenu->addAction( action ); mPopupMenu->addSeparator(); mDeleteAction = new KAction( i18nc( "@action:inmenu remove the attachment", "&Remove" ), this ); connect( mDeleteAction, SIGNAL(triggered(bool)), this, SLOT(slotRemove()) ); ac->addAction( "remove", mDeleteAction ); mPopupMenu->addAction( mDeleteAction ); mPopupMenu->addSeparator(); mEditAction = new KAction( i18nc( "@action:inmenu show a dialog used to edit the attachment", "&Properties..." ), this ); connect( mEditAction, SIGNAL(triggered(bool)), this, SLOT(slotEdit()) ); ac->addAction( "edit", mEditAction ); mPopupMenu->addAction( mEditAction ); selectionChanged(); setAcceptDrops( true ); }
HOT void executeMethod(VMGlobals *g, PyrMethod *meth, long numArgsPushed) { PyrMethodRaw *methraw; PyrFrame *frame; PyrFrame *caller; PyrSlot *pslot, *qslot; PyrSlot *rslot; PyrSlot *vars; PyrObject *proto; long i, m, mmax, numtemps, numargs; #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "executeMethod"); #endif #if DEBUGMETHODS if (gTraceInterpreter) { if (g->method) { postfl(" %s:%s -> %s:%s\n", slotRawSymbol(&slotRawClass(&g->method->ownerclass)->name)->name, slotRawSymbol(&g->method->name)->name, slotRawSymbol(&slotRawClass(&meth->ownerclass)->name)->name, slotRawSymbol(&meth->name)->name); } else { postfl(" top -> %s:%s\n", slotRawSymbol(&slotRawClass(&meth->ownerclass)->name)->name, slotRawSymbol(&meth->name)->name); } } #endif #if METHODMETER if (gTraceInterpreter) { slotRawInt(&meth->callMeter)++; } #endif #if TAILCALLOPTIMIZE int tailCall = g->tailCall; if (tailCall) { if (tailCall == 1) { returnFromMethod(g); } else { returnFromBlock(g); } } #endif g->execMethod = 20; proto = slotRawObject(&meth->prototypeFrame); methraw = METHRAW(meth); numtemps = methraw->numtemps; numargs = methraw->numargs; caller = g->frame; //postfl("executeMethod allArgsPushed %d numKeyArgsPushed %d\n", allArgsPushed, numKeyArgsPushed); frame = (PyrFrame*)g->gc->NewFrame(methraw->frameSize, 0, obj_slot, methraw->needsHeapContext); vars = frame->vars - 1; frame->classptr = class_frame; frame->size = FRAMESIZE + proto->size; SetObject(&frame->method, meth); SetObject(&frame->homeContext, frame); SetObject(&frame->context, frame); if (caller) { SetPtr(&caller->ip, g->ip); SetObject(&frame->caller, caller); } else { SetInt(&frame->caller, 0); } SetPtr(&frame->ip, 0); g->method = meth; g->ip = slotRawInt8Array(&meth->code)->b - 1; g->frame = frame; g->block = (PyrBlock*)meth; g->sp -= numArgsPushed; qslot = g->sp; pslot = vars; if (numArgsPushed <= numargs) { /* not enough args pushed */ /* push all args to frame */ for (m=0,mmax=numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); /* push default arg & var values */ pslot = vars + numArgsPushed; qslot = proto->slots + numArgsPushed - 1; for (m=0, mmax=numtemps - numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); } else if (methraw->varargs) { PyrObject *list; PyrSlot *lslot; /* push all normal args to frame */ for (m=0,mmax=numargs; m<mmax; ++m) slotCopy(++pslot, ++qslot); /* push list */ i = numArgsPushed - numargs; list = newPyrArray(g->gc, (int)i, 0, false); list->size = (int)i; rslot = pslot+1; SetObject(rslot, list); //SetObject(vars + numargs + 1, list); /* put extra args into list */ lslot = (list->slots - 1); // fixed and raw sizes are zero for (m=0,mmax=i; m<mmax; ++m) slotCopy(++lslot, ++qslot); if (methraw->numvars) { /* push default keyword and var values */ pslot = vars + numargs + 1; qslot = proto->slots + numargs; for (m=0,mmax=methraw->numvars; m<mmax; ++m) slotCopy(++pslot, ++qslot); } } else { /* push all args to frame */ for (m=0,mmax=numargs; m<mmax; ++m) slotCopy(++pslot, ++qslot); if (methraw->numvars) { /* push default keyword and var values */ pslot = vars + numargs; qslot = proto->slots + numargs - 1; for (m=0,mmax=methraw->numvars; m<mmax; ++m) slotCopy(++pslot, ++qslot); } } slotCopy(&g->receiver, &vars[1]); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "<executeMethod"); #endif }
void* schedRunFunc(void* arg) { pthread_mutex_lock (&gLangMutex); VMGlobals *g = gMainVMGlobals; PyrObject* inQueue = slotRawObject(&g->process->sysSchedulerQueue); //dumpObject(inQueue); gRunSched = true; while (true) { assert(inQueue->size); //postfl("wait until there is something in scheduler\n"); // wait until there is something in scheduler while (inQueue->size == 1) { //postfl("wait until there is something in scheduler\n"); pthread_cond_wait (&gSchedCond, &gLangMutex); if (!gRunSched) goto leave; } //postfl("wait until an event is ready\n"); // wait until an event is ready double elapsed; do { elapsed = elapsedTime(); if (elapsed >= slotRawFloat(inQueue->slots + 1)) break; struct timespec abstime; //doubleToTimespec(inQueue->slots->uf, &abstime); ElapsedTimeToTimespec(slotRawFloat(inQueue->slots + 1), &abstime); //postfl("wait until an event is ready\n"); pthread_cond_timedwait (&gSchedCond, &gLangMutex, &abstime); if (!gRunSched) goto leave; //postfl("time diff %g\n", elapsedTime() - inQueue->slots->uf); } while (inQueue->size > 1); //postfl("perform all events that are ready %d %.9f\n", inQueue->size, elapsed); // perform all events that are ready //postfl("perform all events that are ready\n"); while ((inQueue->size > 1) && elapsed >= slotRawFloat(inQueue->slots + 1)) { double schedtime, delta; PyrSlot task; //postfl("while %.6f >= %.6f\n", elapsed, inQueue->slots->uf); getheap(g, inQueue, &schedtime, &task); if (isKindOfSlot(&task, class_thread)) { SetNil(&slotRawThread(&task)->nextBeat); } slotCopy((++g->sp), &task); SetFloat(++g->sp, schedtime); SetFloat(++g->sp, schedtime); ++g->sp; SetObject(g->sp, s_systemclock->u.classobj); runAwakeMessage(g); long err = slotDoubleVal(&g->result, &delta); if (!err) { // add delta time and reschedule double time = schedtime + delta; schedAdd(g, inQueue, time, &task); } } //postfl("loop\n"); } //postfl("exitloop\n"); leave: pthread_mutex_unlock (&gLangMutex); return 0; }
HOT void sendMessageWithKeys(VMGlobals *g, PyrSymbol *selector, long numArgsPushed, long numKeyArgsPushed) { PyrMethod *meth = NULL; PyrMethodRaw *methraw; PyrSlot *recvrSlot, *sp; PyrClass *classobj; long index; PyrObject *obj; //postfl("->sendMessage\n"); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "sendMessageWithKeys"); #endif recvrSlot = g->sp - numArgsPushed + 1; classobj = classOfSlot(recvrSlot); lookup_again: index = slotRawInt(&classobj->classIndex) + selector->u.index; meth = gRowTable[index]; if (slotRawSymbol(&meth->name) != selector) { doesNotUnderstandWithKeys(g, selector, numArgsPushed, numKeyArgsPushed); } else { methraw = METHRAW(meth); //postfl("methraw->methType %d\n", methraw->methType); switch (methraw->methType) { case methNormal : /* normal msg send */ executeMethodWithKeys(g, meth, numArgsPushed, numKeyArgsPushed); break; case methReturnSelf : /* return self */ g->sp -= numArgsPushed - 1; break; case methReturnLiteral : /* return literal */ sp = g->sp -= numArgsPushed - 1; slotCopy(sp, &meth->selectors); /* in this case selectors is just a single value */ break; case methReturnArg : /* return an argument */ numArgsPushed = keywordFixStack(g, meth, methraw, numArgsPushed, numKeyArgsPushed); numKeyArgsPushed = 0; g->sp -= numArgsPushed - 1; sp = g->sp; index = methraw->specialIndex; // zero is index of the first argument if (index < numArgsPushed) { slotCopy(sp, sp + index); } else { slotCopy(sp, &slotRawObject(&meth->prototypeFrame)->slots[index]); } break; case methReturnInstVar : /* return inst var */ sp = g->sp -= numArgsPushed - 1; index = methraw->specialIndex; slotCopy(sp, &slotRawObject(recvrSlot)->slots[index]); break; case methAssignInstVar : /* assign inst var */ sp = g->sp -= numArgsPushed - 1; index = methraw->specialIndex; obj = slotRawObject(recvrSlot); if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); } else { if (numArgsPushed >= 2) { slotCopy(&obj->slots[index], sp + 1); g->gc->GCWrite(obj, sp + 1); } else { SetNil(&obj->slots[index]); } slotCopy(sp, recvrSlot); } break; case methReturnClassVar : /* return class var */ sp = g->sp -= numArgsPushed - 1; slotCopy(sp, &g->classvars->slots[methraw->specialIndex]); break; case methAssignClassVar : /* assign class var */ sp = g->sp -= numArgsPushed - 1; if (numArgsPushed >= 2) { slotCopy(&g->classvars->slots[methraw->specialIndex], sp + 1); g->gc->GCWrite(g->classvars, sp + 1); } else { SetNil(&g->classvars->slots[methraw->specialIndex]); } slotCopy(sp, recvrSlot); break; case methRedirect : /* send a different selector to self, e.g. this.subclassResponsibility */ numArgsPushed = keywordFixStack(g, meth, methraw, numArgsPushed, numKeyArgsPushed); numKeyArgsPushed = 0; selector = slotRawSymbol(&meth->selectors); goto lookup_again; case methRedirectSuper : /* send a different selector to self, e.g. this.subclassResponsibility */ numArgsPushed = keywordFixStack(g, meth, methraw, numArgsPushed, numKeyArgsPushed); numKeyArgsPushed = 0; selector = slotRawSymbol(&meth->selectors); classobj = slotRawSymbol(&slotRawClass(&meth->ownerclass)->superclass)->u.classobj; goto lookup_again; case methForwardInstVar : /* forward to an instance variable */ numArgsPushed = keywordFixStack(g, meth, methraw, numArgsPushed, numKeyArgsPushed); numKeyArgsPushed = 0; selector = slotRawSymbol(&meth->selectors); index = methraw->specialIndex; slotCopy(recvrSlot, &slotRawObject(recvrSlot)->slots[index]); classobj = classOfSlot(recvrSlot); goto lookup_again; case methForwardClassVar : /* forward to a class variable */ numArgsPushed = keywordFixStack(g, meth, methraw, numArgsPushed, numKeyArgsPushed); numKeyArgsPushed = 0; selector = slotRawSymbol(&meth->selectors); slotCopy(recvrSlot, &g->classvars->slots[methraw->specialIndex]); classobj = classOfSlot(recvrSlot); goto lookup_again; case methPrimitive : /* primitive */ doPrimitiveWithKeys(g, meth, (int)numArgsPushed, (int)numKeyArgsPushed); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif break; } } #if TAILCALLOPTIMIZE g->tailCall = 0; #endif #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "<sendMessageWithKeys"); #endif //postfl("<-sendMessage\n"); }
HOT void returnFromMethod(VMGlobals *g) { PyrFrame *returnFrame, *curframe, *homeContext; PyrMethod *meth; PyrMethodRaw *methraw; curframe = g->frame; //assert(slotRawFrame(&curframe->context) == NULL); /*if (gTraceInterpreter) { post("returnFromMethod %s:%s\n", slotRawClass(&g->method->ownerclass)->name.us->name, g->slotRawSymbol(&method->name)->name); post("tailcall %d\n", g->tailCall); }*/ #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif homeContext = slotRawFrame(&slotRawFrame(&curframe->context)->homeContext); if (homeContext == NULL) { null_return: #if TAILCALLOPTIMIZE if (g->tailCall) return; // do nothing. #endif /* static bool once = true; if (once || gTraceInterpreter) { once = false; post("return all the way out. sd %d\n", g->sp - g->gc->Stack()->slots); postfl("%s:%s\n", slotRawClass(&g->method->ownerclass)->name.us->name, g->slotRawSymbol(&method->name)->name ); post("tailcall %d\n", g->tailCall); post("homeContext %p\n", homeContext); post("returnFrame %p\n", returnFrame); dumpObjectSlot(&homeContext->caller); DumpStack(g, g->sp); DumpBackTrace(g); } gTraceInterpreter = false; */ //if (IsNil(&homeContext->caller)) return; // do nothing. // return all the way out. PyrSlot *bottom = g->gc->Stack()->slots; slotCopy(bottom, g->sp); g->sp = bottom; // ??!! pop everybody g->method = NULL; g->block = NULL; g->frame = NULL; longjmp(g->escapeInterpreter, 2); } else { returnFrame = slotRawFrame(&homeContext->caller); if (returnFrame == NULL) goto null_return; // make sure returnFrame is a caller and find earliest stack frame { PyrFrame *tempFrame = curframe; while (tempFrame != returnFrame) { tempFrame = slotRawFrame(&tempFrame->caller); if (!tempFrame) { if (isKindOf((PyrObject*)g->thread, class_routine) && NotNil(&g->thread->parent)) { // not found, so yield to parent thread and continue searching. PyrSlot value; slotCopy(&value, g->sp); int numArgsPushed = 1; switchToThread(g, slotRawThread(&g->thread->parent), tSuspended, &numArgsPushed); // on the other side of the looking glass, put the yielded value on the stack as the result.. g->sp -= numArgsPushed - 1; slotCopy(g->sp, &value); curframe = tempFrame = g->frame; } else { slotCopy(&g->sp[2], &g->sp[0]); slotCopy(g->sp, &g->receiver); g->sp++; SetObject(g->sp, g->method); g->sp++; sendMessage(g, getsym("outOfContextReturn"), 3); return; } } } } { PyrFrame *tempFrame = curframe; while (tempFrame != returnFrame) { meth = slotRawMethod(&tempFrame->method); methraw = METHRAW(meth); PyrFrame *nextFrame = slotRawFrame(&tempFrame->caller); if (!methraw->needsHeapContext) { SetInt(&tempFrame->caller, 0); } else { if (tempFrame != homeContext) SetInt(&tempFrame->caller, 0); } tempFrame = nextFrame; } } // return to it g->ip = (unsigned char *)slotRawPtr(&returnFrame->ip); g->frame = returnFrame; g->block = slotRawBlock(&returnFrame->method); homeContext = slotRawFrame(&returnFrame->homeContext); meth = slotRawMethod(&homeContext->method); methraw = METHRAW(meth); #if DEBUGMETHODS if (gTraceInterpreter) { postfl("%s:%s <- %s:%s\n", slotRawSymbol(&slotRawClass(&meth->ownerclass)->name)->name, slotRawSymbol(&meth->name)->name, slotRawSymbol(&slotRawClass(&g->method->ownerclass)->name)->name, slotRawSymbol(&g->method->name)->name ); } #endif g->method = meth; slotCopy(&g->receiver, &homeContext->vars[0]); } #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif }
void KOEditorAttachments::slotCut() { slotCopy(); slotRemove(); }
void TrWidget::slotCut() { slotCopy(); slotDel(); }
int prFileReadRawLE(struct VMGlobals *g, int numArgsPushed) { PyrFile *pfile; FILE *file; PyrSlot* a = g->sp - 1; PyrSlot* b = g->sp; if (!isKindOfSlot(b, class_rawarray) || isKindOfSlot(b, class_symbolarray)) return errWrongType; pfile = (PyrFile*)slotRawObject(a); file = (FILE*)slotRawPtr(&pfile->fileptr); if (file == NULL) return errFailed; int elemSize = gFormatElemSize[slotRawObject(b)->obj_format]; int numElems = slotRawObject(b)->size; numElems = (int)fread(slotRawString(b)->s, elemSize, numElems, file); slotRawObject(b)->size = numElems; #if BYTE_ORDER == BIG_ENDIAN switch (elemSize) { case 1: break; case 2: { char *ptr = slotRawString(b)->s; char *ptrend = ptr + numElems*2; for (; ptr < ptrend; ptr+=2) { char temp = ptr[0]; ptr[0] = ptr[1]; ptr[1] = temp; } break; } case 4: { char *ptr = slotRawString(b)->s; char *ptrend = ptr + numElems*4; for (; ptr < ptrend; ptr+=4) { char temp = ptr[0]; ptr[0] = ptr[3]; ptr[3] = temp; temp = ptr[1]; ptr[1] = ptr[2]; ptr[2] = temp; } break; } case 8: { char *ptr = slotRawString(b)->s; char *ptrend = ptr + numElems*8; for (; ptr < ptrend; ptr+=8) { char temp = ptr[0]; ptr[0] = ptr[7]; ptr[7] = temp; temp = ptr[1]; ptr[1] = ptr[6]; ptr[6] = temp; temp = ptr[2]; ptr[2] = ptr[5]; ptr[5] = temp; temp = ptr[3]; ptr[3] = ptr[4]; ptr[4] = temp; } break; } } #endif if (slotRawObject(b)->size==0) SetNil(a); else slotCopy(a,b); return errNone; }
HOT void sendSuperMessage(VMGlobals *g, PyrSymbol *selector, long numArgsPushed) { PyrMethod *meth = NULL; PyrMethodRaw *methraw; PyrSlot *recvrSlot, *sp; PyrClass *classobj; long index; PyrObject *obj; //postfl("->sendMessage\n"); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "sendSuperMessage"); #endif recvrSlot = g->sp - numArgsPushed + 1; classobj = slotRawSymbol(&slotRawClass(&g->method->ownerclass)->superclass)->u.classobj; //assert(isKindOfSlot(recvrSlot, classobj)); lookup_again: index = slotRawInt(&classobj->classIndex) + selector->u.index; meth = gRowTable[index]; if (slotRawSymbol(&meth->name) != selector) { doesNotUnderstand(g, selector, numArgsPushed); } else { methraw = METHRAW(meth); //postfl("methraw->methType %d\n", methraw->methType); switch (methraw->methType) { case methNormal : /* normal msg send */ executeMethod(g, meth, numArgsPushed); break; case methReturnSelf : /* return self */ g->sp -= numArgsPushed - 1; break; case methReturnLiteral : /* return literal */ sp = g->sp -= numArgsPushed - 1; slotCopy(sp, &meth->selectors); /* in this case selectors is just a single value */ break; case methReturnArg : /* return an argument */ sp = g->sp -= numArgsPushed - 1; index = methraw->specialIndex; // zero is index of the first argument if (index < numArgsPushed) { slotCopy(sp, sp + index); } else { slotCopy(sp, &slotRawObject(&meth->prototypeFrame)->slots[index]); } break; case methReturnInstVar : /* return inst var */ sp = g->sp -= numArgsPushed - 1; index = methraw->specialIndex; slotCopy(sp, &slotRawObject(recvrSlot)->slots[index]); break; case methAssignInstVar : /* assign inst var */ sp = g->sp -= numArgsPushed - 1; index = methraw->specialIndex; obj = slotRawObject(recvrSlot); if (obj->IsImmutable()) { StoreToImmutableB(g, sp, g->ip); } else { if (numArgsPushed >= 2) { slotCopy(&obj->slots[index], sp + 1); g->gc->GCWrite(obj, sp + 1); } else { SetNil(&obj->slots[index]); } slotCopy(sp, recvrSlot); } break; case methReturnClassVar : /* return class var */ sp = g->sp -= numArgsPushed - 1; slotCopy(sp, &g->classvars->slots[methraw->specialIndex]); break; case methAssignClassVar : /* assign class var */ sp = g->sp -= numArgsPushed - 1; if (numArgsPushed >= 2) { slotCopy(&g->classvars->slots[methraw->specialIndex], sp + 1); g->gc->GCWrite(g->classvars, sp + 1); } else { SetNil(&g->classvars->slots[methraw->specialIndex]); } slotCopy(sp, recvrSlot); break; case methRedirect : /* send a different selector to self, e.g. this.subclassResponsibility */ if (numArgsPushed < methraw->numargs) { // not enough args pushed /* push default arg values */ PyrSlot *pslot, *qslot; long m, mmax; pslot = g->sp; qslot = slotRawObject(&meth->prototypeFrame)->slots + numArgsPushed - 1; for (m=0, mmax=methraw->numargs - numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); numArgsPushed = methraw->numargs; g->sp += mmax; } selector = slotRawSymbol(&meth->selectors); goto lookup_again; case methRedirectSuper : /* send a different selector to self, e.g. this.subclassResponsibility */ if (numArgsPushed < methraw->numargs) { // not enough args pushed /* push default arg values */ PyrSlot *pslot, *qslot; long m, mmax; pslot = g->sp; qslot = slotRawObject(&meth->prototypeFrame)->slots + numArgsPushed - 1; for (m=0, mmax=methraw->numargs - numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); numArgsPushed = methraw->numargs; g->sp += mmax; } selector = slotRawSymbol(&meth->selectors); classobj = slotRawSymbol(&slotRawClass(&meth->ownerclass)->superclass)->u.classobj; goto lookup_again; case methForwardInstVar : /* forward to an instance variable */ if (numArgsPushed < methraw->numargs) { // not enough args pushed /* push default arg values */ PyrSlot *pslot, *qslot; long m, mmax; pslot = g->sp; qslot = slotRawObject(&meth->prototypeFrame)->slots + numArgsPushed - 1; for (m=0, mmax=methraw->numargs - numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); numArgsPushed = methraw->numargs; g->sp += mmax; } selector = slotRawSymbol(&meth->selectors); index = methraw->specialIndex; slotCopy(recvrSlot, &slotRawObject(recvrSlot)->slots[index]); classobj = classOfSlot(recvrSlot); goto lookup_again; case methForwardClassVar : /* forward to a class variable */ if (numArgsPushed < methraw->numargs) { // not enough args pushed /* push default arg values */ PyrSlot *pslot, *qslot; long m, mmax; pslot = g->sp; qslot = slotRawObject(&meth->prototypeFrame)->slots + numArgsPushed - 1; for (m=0, mmax=methraw->numargs - numArgsPushed; m<mmax; ++m) slotCopy(++pslot, ++qslot); numArgsPushed = methraw->numargs; g->sp += mmax; } selector = slotRawSymbol(&meth->selectors); slotCopy(recvrSlot, &g->classvars->slots[methraw->specialIndex]); classobj = classOfSlot(recvrSlot); goto lookup_again; case methPrimitive : /* primitive */ doPrimitive(g, meth, (int)numArgsPushed); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif break; /* case methMultDispatchByClass : { index = methraw->specialIndex; if (index < numArgsPushed) { classobj = slotRawObject(sp + index)->classptr; selector = slotRawSymbol(&meth->selectors); goto lookup_again; } else { doesNotUnderstand(g, selector, numArgsPushed); } } break; case methMultDispatchByValue : { index = methraw->specialIndex; if (index < numArgsPushed) { index = arrayAtIdentityHashInPairs(array, b); meth = slotRawObject(&meth->selectors)->slots[index + 1].uom; goto meth_select_again; } else { doesNotUnderstand(g, selector, numArgsPushed); } } break; */ } } #if TAILCALLOPTIMIZE g->tailCall = 0; #endif #ifdef GC_SANITYCHECK g->gc->SanityCheck(); CallStackSanity(g, "<sendSuperMessage"); #endif //postfl("<-sendMessage\n"); }
KSnapshot::KSnapshot(QWidget *parent, const char *name, bool grabCurrent) : DCOPObject("interface"), KDialogBase(parent, name, true, QString::null, Help|User1, User1, true, KStdGuiItem::quit() ) { grabber = new QWidget( 0, 0, WStyle_Customize | WX11BypassWM ); grabber->move( -1000, -1000 ); grabber->installEventFilter( this ); KStartupInfo::appStarted(); QVBox *vbox = makeVBoxMainWidget(); mainWidget = new KSnapshotWidget( vbox, "mainWidget" ); connect(mainWidget, SIGNAL(startImageDrag()), SLOT(slotDragSnapshot())); connect( mainWidget, SIGNAL( newClicked() ), SLOT( slotGrab() ) ); connect( mainWidget, SIGNAL( saveClicked() ), SLOT( slotSaveAs() ) ); connect( mainWidget, SIGNAL( printClicked() ), SLOT( slotPrint() ) ); connect( mainWidget, SIGNAL( copyClicked() ), SLOT( slotCopy() ) ); grabber->show(); grabber->grabMouse( waitCursor ); if ( !grabCurrent ) snapshot = QPixmap::grabWindow( qt_xrootwin() ); else { mainWidget->setMode( WindowUnderCursor ); mainWidget->setIncludeDecorations( true ); performGrab(); } updatePreview(); grabber->releaseMouse(); grabber->hide(); KConfig *conf=KGlobal::config(); conf->setGroup("GENERAL"); mainWidget->setDelay(conf->readNumEntry("delay",0)); mainWidget->setMode( conf->readNumEntry( "mode", 0 ) ); mainWidget->setIncludeDecorations(conf->readBoolEntry("includeDecorations",true)); filename = KURL::fromPathOrURL( conf->readPathEntry( "filename", QDir::currentDirPath()+"/"+i18n("snapshot")+"1.png" )); // Make sure the name is not already being used while(KIO::NetAccess::exists( filename, false, this )) { autoincFilename(); } connect( &grabTimer, SIGNAL( timeout() ), this, SLOT( grabTimerDone() ) ); connect( &updateTimer, SIGNAL( timeout() ), this, SLOT( updatePreview() ) ); QTimer::singleShot( 0, this, SLOT( updateCaption() ) ); KHelpMenu *helpMenu = new KHelpMenu(this, KGlobal::instance()->aboutData(), false); QPushButton *helpButton = actionButton( Help ); helpButton->setPopup(helpMenu->menu()); KAccel* accel = new KAccel(this); accel->insert(KStdAccel::Quit, kapp, SLOT(quit())); accel->insert( "QuickSave", i18n("Quick Save Snapshot &As..."), i18n("Save the snapshot to the file specified by the user without showing the file dialog."), CTRL+SHIFT+Key_S, this, SLOT(slotSave())); accel->insert(KStdAccel::Save, this, SLOT(slotSaveAs())); // accel->insert(KShortcut(CTRL+Key_A), this, SLOT(slotSaveAs())); accel->insert( "SaveAs", i18n("Save Snapshot &As..."), i18n("Save the snapshot to the file specified by the user."), CTRL+Key_A, this, SLOT(slotSaveAs())); accel->insert(KStdAccel::Print, this, SLOT(slotPrint())); accel->insert(KStdAccel::New, this, SLOT(slotGrab())); accel->insert(KStdAccel::Copy, this, SLOT(slotCopy())); accel->insert( "Quit2", Key_Q, this, SLOT(slotSave())); accel->insert( "Save2", Key_S, this, SLOT(slotSaveAs())); accel->insert( "Print2", Key_P, this, SLOT(slotPrint())); accel->insert( "New2", Key_N, this, SLOT(slotGrab())); accel->insert( "New3", Key_Space, this, SLOT(slotGrab())); setEscapeButton( User1 ); connect( this, SIGNAL( user1Clicked() ), SLOT( reject() ) ); mainWidget->btnNew->setFocus(); }
void doesNotUnderstand(VMGlobals *g, PyrSymbol *selector, long numArgsPushed) { PyrSlot *qslot, *pslot, *pend; long i, index; PyrSlot *uniqueMethodSlot, *arraySlot, *recvrSlot, *selSlot, *slot; PyrClass *classobj; PyrMethod *meth; PyrObject *array; #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif // move args up by one to make room for selector qslot = g->sp + 1; pslot = g->sp + 2; pend = pslot - numArgsPushed + 1; while (pslot > pend) *--pslot = *--qslot; selSlot = g->sp - numArgsPushed + 2; SetSymbol(selSlot, selector); g->sp++; recvrSlot = selSlot - 1; classobj = classOfSlot(recvrSlot); index = slotRawInt(&classobj->classIndex) + s_nocomprendo->u.index; meth = gRowTable[index]; if (slotRawClass(&meth->ownerclass) == class_object) { // lookup instance specific method uniqueMethodSlot = &g->classvars->slots[cvxUniqueMethods]; if (isKindOfSlot(uniqueMethodSlot, class_identdict)) { arraySlot = slotRawObject(uniqueMethodSlot)->slots + ivxIdentDict_array; if ((IsObj(arraySlot) && (array = slotRawObject(arraySlot))->classptr == class_array)) { i = arrayAtIdentityHashInPairs(array, recvrSlot); if (i >= 0) { slot = array->slots + i; if (NotNil(slot)) { ++slot; if (isKindOfSlot(slot, class_identdict)) { arraySlot = slotRawObject(slot)->slots + ivxIdentDict_array; if ((IsObj(arraySlot) && (array = slotRawObject(arraySlot))->classptr == class_array)) { i = arrayAtIdentityHashInPairs(array, selSlot); if (i >= 0) { slot = array->slots + i; if (NotNil(slot)) { ++slot; slotCopy(selSlot, recvrSlot); slotCopy(recvrSlot, slot); blockValue(g, (int)numArgsPushed+1); return; } } } } } } } } } executeMethod(g, meth, numArgsPushed+1); #ifdef GC_SANITYCHECK g->gc->SanityCheck(); #endif }
KRegExpEditorPrivate::KRegExpEditorPrivate(TQWidget *parent, const char *name) : TQWidget(parent, name), _updating( false ), _autoVerify( true ) { setMinimumSize(730,300); TQDockArea* area = new TQDockArea(Qt::Horizontal, TQDockArea::Normal, this ); area->setMinimumSize(2,2); TQDockArea* verArea1 = new TQDockArea(Qt::Vertical, TQDockArea::Normal, this ); verArea1->setMinimumSize(2,2); TQDockArea* verArea2 = new TQDockArea(Qt::Vertical, TQDockArea::Reverse, this ); verArea2->setMinimumSize(2,2); // The DockWindows. _regExpButtons = new RegExpButtons( area, "KRegExpEditorPrivate::regExpButton" ); _verifyButtons = new VerifyButtons( area, "KRegExpEditorPrivate::VerifyButtons" ); _auxButtons = new AuxButtons( area, "KRegExpEditorPrivate::AuxButtons" ); _userRegExps = new UserDefinedRegExps( verArea1, "KRegExpEditorPrivate::userRegExps" ); _userRegExps->setResizeEnabled( true ); TQWhatsThis::add( _userRegExps, i18n( "In this window you will find predefined regular expressions. Both regular expressions " "you have developed and saved, and regular expressions shipped with the system." )); // Editor window _editor = new TQSplitter(Qt::Vertical, this, "KRegExpEditorPrivate::_editor" ); _scrolledEditorWindow = new RegExpScrolledEditorWindow( _editor, "KRegExpEditorPrivate::_scrolledEditorWindow" ); TQWhatsThis::add( _scrolledEditorWindow, i18n( "In this window you will develop your regular expressions. " "Select one of the actions from the action buttons above, and click the mouse in this " "window to insert the given action.")); _info = new InfoPage( this, "_info" ); _verifier = new Verifier( _editor, "KRegExpEditorPrivate::_verifier" ); connect( _verifier, TQT_SIGNAL( textChanged() ), this, TQT_SLOT( maybeVerify() ) ); TQWhatsThis::add( _verifier, i18n("Type in some text in this window, and see what the regular expression you have developed matches.<p>" "Each second match will be colored in red and each other match will be colored blue, simply so you " "can distinguish them from each other.<p>" "If you select part of the regular expression in the editor window, then this part will be " "highlighted - This allows you to <i>debug</i> your regular expressions") ); _editor->hide(); _editor->setSizes( TQValueList<int>() << _editor->height()/2 << _editor->height()/2 ); TQVBoxLayout *topLayout = new TQVBoxLayout( this, 0, 6, "KRegExpEditorPrivate::topLayout" ); topLayout->addWidget( area ); TQHBoxLayout* rows = new TQHBoxLayout; // I need to cal addLayout explicit to get stretching right. topLayout->addLayout( rows, 1 ); rows->addWidget( verArea1 ); rows->addWidget( _editor, 1 ); rows->addWidget( _info, 1 ); rows->addWidget( verArea2 ); // Connect the buttons connect( _regExpButtons, TQT_SIGNAL( clicked( int ) ), _scrolledEditorWindow, TQT_SLOT( slotInsertRegExp( int ) ) ); connect( _regExpButtons, TQT_SIGNAL( doSelect() ), _scrolledEditorWindow, TQT_SLOT( slotDoSelect() ) ); connect( _userRegExps, TQT_SIGNAL( load( RegExp* ) ), _scrolledEditorWindow, TQT_SLOT( slotInsertRegExp( RegExp* ) ) ); connect( _regExpButtons, TQT_SIGNAL( clicked( int ) ), _userRegExps, TQT_SLOT( slotUnSelect() ) ); connect( _regExpButtons, TQT_SIGNAL( doSelect() ), _userRegExps, TQT_SLOT( slotUnSelect() ) ); connect( _userRegExps, TQT_SIGNAL( load( RegExp* ) ), _regExpButtons, TQT_SLOT( slotUnSelect() ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( doneEditing() ), _regExpButtons, TQT_SLOT( slotSelectNewAction() ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( doneEditing() ), _userRegExps, TQT_SLOT( slotSelectNewAction() ) ); connect( _regExpButtons, TQT_SIGNAL( clicked( int ) ), this, TQT_SLOT( slotShowEditor() ) ); connect( _userRegExps, TQT_SIGNAL( load( RegExp* ) ), this, TQT_SLOT( slotShowEditor() ) ); connect( _regExpButtons, TQT_SIGNAL( doSelect() ), this, TQT_SLOT( slotShowEditor() ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( savedRegexp() ), _userRegExps, TQT_SLOT( slotPopulateUserRegexps() ) ); connect( _auxButtons, TQT_SIGNAL( undo() ), this, TQT_SLOT( slotUndo() ) ); connect( _auxButtons, TQT_SIGNAL( redo() ), this, TQT_SLOT( slotRedo() ) ); connect( _auxButtons, TQT_SIGNAL( cut() ), _scrolledEditorWindow, TQT_SLOT( slotCut() ) ); connect( _auxButtons, TQT_SIGNAL( copy() ), _scrolledEditorWindow, TQT_SLOT( slotCopy() ) ); connect( _auxButtons, TQT_SIGNAL( paste() ), _scrolledEditorWindow, TQT_SLOT( slotPaste() ) ); connect( _auxButtons, TQT_SIGNAL( save() ), _scrolledEditorWindow, TQT_SLOT( slotSave() ) ); connect( _verifyButtons, TQT_SIGNAL( autoVerify( bool ) ), this, TQT_SLOT( setAutoVerify( bool ) ) ); connect( _verifyButtons, TQT_SIGNAL( verify() ), this, TQT_SLOT( doVerify() ) ); connect( _verifyButtons, TQT_SIGNAL( changeSyntax( const TQString& ) ), this, TQT_SLOT( setSyntax( const TQString& ) ) ); connect( this, TQT_SIGNAL( canUndo( bool ) ), _auxButtons, TQT_SLOT( slotCanUndo( bool ) ) ); connect( this, TQT_SIGNAL( canRedo( bool ) ), _auxButtons, TQT_SLOT( slotCanRedo( bool ) ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( anythingSelected( bool ) ), _auxButtons, TQT_SLOT( slotCanCut( bool ) ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( anythingSelected( bool ) ), _auxButtons, TQT_SLOT( slotCanCopy( bool ) ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( anythingOnClipboard( bool ) ), _auxButtons, TQT_SLOT( slotCanPaste( bool ) ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( canSave( bool ) ), _auxButtons, TQT_SLOT( slotCanSave( bool ) ) ); connect( _scrolledEditorWindow, TQT_SIGNAL( verifyRegExp() ), this, TQT_SLOT( maybeVerify() ) ); connect( _verifyButtons, TQT_SIGNAL( loadVerifyText( const TQString& ) ), this, TQT_SLOT( setVerifyText( const TQString& ) ) ); // connect( _verifier, TQT_SIGNAL( countChanged( int ) ), _verifyButtons, TQT_SLOT( setMatchCount( int ) ) ); // TQt anchors do not work for <pre>...</pre>, thefore scrolling to next/prev match // do not work. Enable this when they work. // connect( _verifyButtons, TQT_SIGNAL( gotoFirst() ), _verifier, TQT_SLOT( gotoFirst() ) ); // connect( _verifyButtons, TQT_SIGNAL( gotoPrev() ), _verifier, TQT_SLOT( gotoPrev() ) ); // connect( _verifyButtons, TQT_SIGNAL( gotoNext() ), _verifier, TQT_SLOT( gotoNext() ) ); // connect( _verifyButtons, TQT_SIGNAL( gotoLast() ), _verifier, TQT_SLOT( gotoLast() ) ); // connect( _verifier, TQT_SIGNAL( goForwardPossible( bool ) ), _verifyButtons, TQT_SLOT( enableForwardButtons( bool ) ) ); // connect( _verifier, TQT_SIGNAL( goBackwardPossible( bool ) ), _verifyButtons, TQT_SLOT( enableBackwardButtons( bool ) ) ); _auxButtons->slotCanPaste( false ); _auxButtons->slotCanCut( false ); _auxButtons->slotCanCopy( false ); _auxButtons->slotCanSave( false ); // Line Edit TQHBoxLayout* layout = new TQHBoxLayout( topLayout, 6 ); TQLabel* label = new TQLabel( i18n("ASCII syntax:"), this ); layout->addWidget( label ); clearButton = new TQToolButton( this ); const TQString icon( TQString::fromLatin1( TQApplication::reverseLayout() ? "clear_left" : "locationbar_erase" ) ); TQIconSet clearIcon = SmallIconSet( icon ); clearButton->setIconSet( clearIcon ); layout->addWidget( clearButton ); TQToolTip::add( clearButton, i18n("Clear expression") ); _regexpEdit = new TQLineEdit( this ); layout->addWidget( _regexpEdit ); TQWhatsThis::add( _regexpEdit, i18n( "This is the regular expression in ASCII syntax. You are likely only " "to be interested in this if you are a programmer, and need to " "develop a regular expression using TQRegExp.<p>" "You may develop your regular expression both by using the graphical " "editor, and by typing the regular expression in this line edit.") ); #ifdef TQT_ONLY TQPixmap pix( "icons/error.png" ); #else TQPixmap pix = TDEGlobal::iconLoader()->loadIcon(locate("data", TQString::fromLatin1("kregexpeditor/pics/error.png") ), TDEIcon::Toolbar ); #endif _error = new TQLabel( this ); _error->setPixmap( pix ); layout->addWidget( _error ); _error->hide(); _timer = new TQTimer(this); connect( _scrolledEditorWindow, TQT_SIGNAL( change() ), this, TQT_SLOT( slotUpdateLineEdit() ) ); connect( _regexpEdit, TQT_SIGNAL(textChanged( const TQString& ) ), this, TQT_SLOT( slotTriggerUpdate() ) ); connect( _timer, TQT_SIGNAL( timeout() ), this, TQT_SLOT( slotTimeout() ) ); connect( clearButton, TQT_SIGNAL( clicked() ), _regexpEdit, TQT_SLOT( clear() ) ); // Push an initial empty element on the stack. _undoStack.push( _scrolledEditorWindow->regExp() ); _redoStack.setAutoDelete( true ); TQAccel* accel = new TQAccel( this ); accel->connectItem( accel->insertItem( CTRL+Key_Z ), this, TQT_SLOT( slotUndo() ) ); accel->connectItem( accel->insertItem( CTRL+Key_R ), this, TQT_SLOT( slotRedo() ) ); setSyntax( TQString::fromLatin1( "TQt" ) ); }
bool getheap(VMGlobals *g, PyrObject *heapArg, double *schedtime, PyrSlot *task) { PyrHeap * heap = (PyrHeap*)heapArg; PyrGC* gc = g->gc; bool isPartialScanObj = gc->IsPartialScanObject(heapArg); assert(heap->size); // post("->getheap\n"); // dumpheap(heapArg); if (heap->size>1) { *schedtime = slotRawFloat(&heap->slots[0]); slotCopy(task, &heap->slots[1]); heap->size -= 3; int size = heap->size - 1; slotCopy(&heap->slots[0], &heap->slots[size]); slotCopy(&heap->slots[1], &heap->slots[size+1]); slotCopy(&heap->slots[2], &heap->slots[size+2]); /* parent and sibling in the heap, not in the task hierarchy */ int mom = 0; int me = 3; PyrSlot * pmom = heap->slots + mom; PyrSlot * pme = heap->slots + me; PyrSlot * pend = heap->slots + size; double timetemp = slotRawFloat(&pmom[0]); int stabilityCountTemp = slotRawInt(&pmom[2]); PyrSlot tasktemp; slotCopy(&tasktemp, &pmom[1]); for (;pme < pend;) { /* demote heap */ if (pme+3 < pend && ((slotRawFloat(&pme[0]) > slotRawFloat(&pme[3])) || ((slotRawFloat(&pme[0]) == slotRawFloat(&pme[3])) && (slotRawInt(&pme[2]) > slotRawInt(&pme[5])) ))) { me += 3; pme += 3; } if (timetemp > slotRawFloat(&pme[0]) || (timetemp == slotRawFloat(&pme[0]) && stabilityCountTemp > slotRawInt(&pme[2]))) { slotCopy(&pmom[0], &pme[0]); slotCopy(&pmom[1], &pme[1]); slotCopy(&pmom[2], &pme[2]); if (isPartialScanObj) { gc->GCWriteBlack(pmom+1); } pmom = pme; me = ((mom = me) * 2) + 3; pme = heap->slots + me; } else break; } SetRaw(&pmom[0], timetemp); slotCopy(&pmom[1], &tasktemp); SetRaw(&pmom[2], stabilityCountTemp); if (isPartialScanObj) gc->GCWriteBlack(pmom+1); if (size == 0) SetInt(&heap->count, 0); // dumpheap(heapArg); // post("<-getheap true\n"); return true; } else { // post("<-getheap false\n"); return false; } }
void KHelpMain::createMenu() { KStdAccel stdAccel; fileMenu = new QPopupMenu; CHECK_PTR( fileMenu ); fileMenu->insertItem( klocale->translate("&New Help Window"), this, SLOT( slotCloneWindow() ), stdAccel.openNew() ); fileMenu->insertSeparator(); fileMenu->insertItem( klocale->translate("&Open File..."), helpwin, SLOT(slotOpenFile()), stdAccel.open() ); // fileMenu->insertItem( klocale->translate("Open UR&L..."), helpwin, // SLOT(slotOpenURL()) ); fileMenu->insertItem( klocale->translate("&Reload"), helpwin, SLOT(slotReload()) ); fileMenu->insertSeparator(); fileMenu->insertItem( klocale->translate("&Search"), helpwin, SLOT(slotSearch()) ); fileMenu->insertSeparator(); fileMenu->insertItem( klocale->translate("&Print..."), helpwin, SLOT(slotPrint()), stdAccel.print() ); fileMenu->insertSeparator(); idClose = fileMenu->insertItem(klocale->translate("&Close"),this, SLOT(slotClose()), stdAccel.close()); // CC :!!!!! fileMenu->insertItem( klocale->translate("&Quit"), this, SLOT(slotQuit()), stdAccel.quit() ); editMenu = new QPopupMenu; CHECK_PTR( editMenu ); idCopy = editMenu->insertItem(klocale->translate("&Copy"), helpwin, SLOT(slotCopy()), stdAccel.copy() ); editMenu->insertItem(klocale->translate("&Find..."), helpwin, SLOT(slotFind()), stdAccel.find() ); editMenu->insertItem(klocale->translate("Find &next"), helpwin, SLOT(slotFindNext()), Key_F3 ); gotoMenu = new QPopupMenu; CHECK_PTR( gotoMenu ); idBack = gotoMenu->insertItem( klocale->translate("&Back"), helpwin, SLOT(slotBack()) ); idForward = gotoMenu->insertItem( klocale->translate("&Forward"), helpwin, SLOT(slotForward()) ); gotoMenu->insertSeparator(); idDir = gotoMenu->insertItem( klocale->translate("&Contents"), helpwin, SLOT(slotDir()) ); idTop = gotoMenu->insertItem( klocale->translate("&Top"), helpwin, SLOT(slotTop()) ); idUp = gotoMenu->insertItem( klocale->translate("&Up"), helpwin, SLOT(slotUp()) ); idPrev = gotoMenu->insertItem( klocale->translate("&Previous"), helpwin, SLOT(slotPrev()) ); idNext = gotoMenu->insertItem( klocale->translate("&Next"), helpwin, SLOT(slotNext()) ); bookmarkMenu = new QPopupMenu; CHECK_PTR( bookmarkMenu ); connect( bookmarkMenu, SIGNAL( activated( int ) ), helpwin, SLOT( slotBookmarkSelected( int ) ) ); connect( bookmarkMenu, SIGNAL( highlighted( int ) ), helpwin, SLOT( slotBookmarkHighlighted( int ) ) ); optionsMenu = new QPopupMenu; CHECK_PTR( optionsMenu ); optionsMenu->setCheckable( true ); optionsMenu->insertItem( klocale->translate("&General Preferences..."), this, SLOT(slotOptionsGeneral()) ); optionsMenu->insertSeparator(); optionsMenu->insertItem(klocale->translate( "Show &Toolbar"), this, SLOT(slotOptionsToolbar())); optionsMenu->insertItem( klocale->translate("Show &Location"), this, SLOT(slotOptionsLocation()) ); optionsMenu->insertItem( klocale->translate("Show Status&bar"), this, SLOT(slotOptionsStatusbar()) ); optionsMenu->insertSeparator(); optionsMenu->insertItem( klocale->translate("&Save Options"), this, SLOT(slotOptionsSave()) ); QString at = klocale->translate("KDE Help System\n"); at+= klocale->translate("Version "); at+= KDEHELP_VERSION; at+=klocale->translate("\n\nCopyright (c) 1997 Martin Jones <*****@*****.**>"\ "\n\nThis program is licensed under the GNU General Public License (GPL)."\ "\nKDEHelp comes with ABSOLUTELY NO WARRANY to the extent permitted by applicable law."); QPopupMenu *helpMenu = kapp->getHelpMenu( true, at ); /* QPopupMenu *helpMenu = new QPopupMenu; CHECK_PTR( helpMenu ); helpMenu->insertItem( klocale->translate("&Using KDE Help"), this, SLOT(slotUsingHelp()) ); helpMenu->insertSeparator(); helpMenu->insertItem( klocale->translate("&About"), this, SLOT(slotAbout()) ); */ menu = new KMenuBar( this ); CHECK_PTR( menu ); menu->insertItem( klocale->translate("&File"), fileMenu ); menu->insertItem( klocale->translate("&Edit"), editMenu ); menu->insertItem( klocale->translate("&Goto"), gotoMenu ); menu->insertItem( klocale->translate("&Bookmarks"), bookmarkMenu ); menu->insertItem( klocale->translate("&Options"), optionsMenu ); menu->insertSeparator(); menu->insertItem( klocale->translate("&Help"), helpMenu ); }
void* TempoClock::Run() { //printf("->TempoClock::Run\n"); pthread_mutex_lock (&gLangMutex); while (mRun) { assert(mQueue->size); //printf("tempo %g dur %g beats %g\n", mTempo, mBeatDur, mBeats); //printf("wait until there is something in scheduler\n"); // wait until there is something in scheduler while (mQueue->size == 1) { //printf("wait until there is something in scheduler\n"); pthread_cond_wait (&mCondition, &gLangMutex); //printf("mRun a %d\n", mRun); if (!mRun) goto leave; } //printf("wait until an event is ready\n"); // wait until an event is ready double elapsedBeats; do { elapsedBeats = ElapsedBeats(); if (elapsedBeats >= slotRawFloat(mQueue->slots)) break; struct timespec abstime; //doubleToTimespec(mQueue->slots->uf, &abstime); //printf("event ready at %g . elapsed beats %g\n", mQueue->slots->uf, elapsedBeats); double wakeTime = BeatsToSecs(slotRawFloat(mQueue->slots)); ElapsedTimeToTimespec(wakeTime, &abstime); //printf("wait until an event is ready. wake %g now %g\n", wakeTime, elapsedTime()); pthread_cond_timedwait (&mCondition, &gLangMutex, &abstime); //printf("mRun b %d\n", mRun); if (!mRun) goto leave; //printf("time diff %g\n", elapsedTime() - mQueue->slots->uf); } while (mQueue->size > 1); //printf("perform all events that are ready %d %.9f\n", mQueue->size, elapsedBeats); // perform all events that are ready //printf("perform all events that are ready\n"); while (mQueue->size > 1 && elapsedBeats >= slotRawFloat(mQueue->slots)) { double delta; PyrSlot task; //printf("while %.6f >= %.6f\n", elapsedBeats, mQueue->slots->uf); getheap(g, (PyrObject*)mQueue, &mBeats, &task); if (isKindOfSlot(&task, class_thread)) { SetNil(&slotRawThread(&task)->nextBeat); } slotCopy((++g->sp), &task); SetFloat(++g->sp, mBeats); SetFloat(++g->sp, BeatsToSecs(mBeats)); ++g->sp; SetObject(g->sp, mTempoClockObj); runAwakeMessage(g); long err = slotDoubleVal(&g->result, &delta); if (!err) { // add delta time and reschedule double beats = mBeats + delta; Add(beats, &task); } } } leave: //printf("<-TempoClock::Run\n"); pthread_mutex_unlock (&gLangMutex); return 0; }
HistoryDialog::HistoryDialog(Kopete::MetaContact *mc, QWidget* parent, const char* name) : KDialogBase(parent, name, false, i18n("History for %1").arg(mc->displayName()), 0), mSearching(false) { QString fontSize; QString htmlCode; QString fontStyle; kdDebug(14310) << k_funcinfo << "called." << endl; setWFlags(Qt::WDestructiveClose); // send SIGNAL(closing()) on quit // FIXME: Allow to show this dialog for only one contact mMetaContact = mc; // Widgets initializations mMainWidget = new HistoryViewer(this, "HistoryDialog::mMainWidget"); mMainWidget->searchLine->setFocus(); mMainWidget->searchLine->setTrapReturnKey (true); mMainWidget->searchLine->setTrapReturnKey(true); mMainWidget->searchErase->setPixmap(BarIcon("locationbar_erase")); mMainWidget->contactComboBox->insertItem(i18n("All")); mMetaContactList = Kopete::ContactList::self()->metaContacts(); QPtrListIterator<Kopete::MetaContact> it(mMetaContactList); for(; it.current(); ++it) { mMainWidget->contactComboBox->insertItem((*it)->displayName()); } if (mMetaContact) mMainWidget->contactComboBox->setCurrentItem(mMetaContactList.find(mMetaContact)+1); mMainWidget->dateSearchLine->setListView(mMainWidget->dateListView); mMainWidget->dateListView->setSorting(0, 0); //newest-first setMainWidget(mMainWidget); // Initializing HTML Part mMainWidget->htmlFrame->setFrameStyle(QFrame::WinPanel | QFrame::Sunken); QVBoxLayout *l = new QVBoxLayout(mMainWidget->htmlFrame); mHtmlPart = new KHTMLPart(mMainWidget->htmlFrame, "htmlHistoryView"); //Security settings, we don't need this stuff mHtmlPart->setJScriptEnabled(false); mHtmlPart->setJavaEnabled(false); mHtmlPart->setPluginsEnabled(false); mHtmlPart->setMetaRefreshEnabled(false); mHtmlPart->setOnlyLocalReferences(true); mHtmlView = mHtmlPart->view(); mHtmlView->setMarginWidth(4); mHtmlView->setMarginHeight(4); mHtmlView->setFocusPolicy(NoFocus); mHtmlView->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); l->addWidget(mHtmlView); QTextOStream( &fontSize ) << KopetePrefs::prefs()->fontFace().pointSize(); fontStyle = "<style>.hf { font-size:" + fontSize + ".0pt; font-family:" + KopetePrefs::prefs()->fontFace().family() + "; color: " + KopetePrefs::prefs()->textColor().name() + "; }</style>"; mHtmlPart->begin(); htmlCode = "<html><head>" + fontStyle + "</head><body class=\"hf\"></body></html>"; mHtmlPart->write( QString::fromLatin1( htmlCode.latin1() ) ); mHtmlPart->end(); connect(mHtmlPart->browserExtension(), SIGNAL(openURLRequestDelayed(const KURL &, const KParts::URLArgs &)), this, SLOT(slotOpenURLRequest(const KURL &, const KParts::URLArgs &))); connect(mMainWidget->dateListView, SIGNAL(clicked(QListViewItem*)), this, SLOT(dateSelected(QListViewItem*))); connect(mMainWidget->searchButton, SIGNAL(clicked()), this, SLOT(slotSearch())); connect(mMainWidget->searchLine, SIGNAL(returnPressed()), this, SLOT(slotSearch())); connect(mMainWidget->searchLine, SIGNAL(textChanged(const QString&)), this, SLOT(slotSearchTextChanged(const QString&))); connect(mMainWidget->searchErase, SIGNAL(clicked()), this, SLOT(slotSearchErase())); connect(mMainWidget->contactComboBox, SIGNAL(activated(int)), this, SLOT(slotContactChanged(int))); connect(mMainWidget->messageFilterBox, SIGNAL(activated(int)), this, SLOT(slotFilterChanged(int ))); connect(mHtmlPart, SIGNAL(popupMenu(const QString &, const QPoint &)), this, SLOT(slotRightClick(const QString &, const QPoint &))); //initActions KActionCollection* ac = new KActionCollection(this); mCopyAct = KStdAction::copy( this, SLOT(slotCopy()), ac ); mCopyURLAct = new KAction( i18n( "Copy Link Address" ), QString::fromLatin1( "editcopy" ), 0, this, SLOT( slotCopyURL() ), ac ); resize(650, 700); centerOnScreen(this); // show the dialog before people get impatient show(); // Load history dates in the listview init(); }
void MainWindow::createActions() { if(opt.arg_debug) printf("createActions\n"); if(opt.arg_disable == 0) { optionAct = new QAction(QIcon(":/images/option.png"), l_options, this); #ifndef USE_MAEMO optionAct->setShortcut(tr("Ctrl+O")); #endif optionAct->setStatusTip(l_status_options); connect(optionAct, SIGNAL(triggered()), this, SLOT(slotFileOpt())); } if(opt.arg_disable == 0) { windowAct = new QAction(QIcon(":/images/window.png"), l_new_window, this); windowAct->setShortcut(tr("Ctrl+N")); windowAct->setStatusTip(l_status_new_window); connect(windowAct, SIGNAL(triggered()), this, SLOT(slotWindow())); newtabAct = new QAction(QIcon(":/images/newtab.png"), l_new_tab, this); //newtabAct->setShortcut(tr("Ctrl+N")); newtabAct->setStatusTip(l_status_new_tab); connect(newtabAct, SIGNAL(triggered()), this, SLOT(slotNewTab())); } reconnectAct = new QAction(QIcon(":/images/view-refresh.png"), l_reconnect, this); reconnectAct->setShortcut(tr("Ctrl+R")); reconnectAct->setStatusTip(l_status_reconnect); connect(reconnectAct, SIGNAL(triggered()), this, SLOT(slotReconnect())); storebmpAct = new QAction(QIcon(":/images/storebmp.png"), l_save_as_bmp, this); storebmpAct->setShortcut(tr("Ctrl+B")); storebmpAct->setStatusTip(l_status_save_as_bmp); connect(storebmpAct, SIGNAL(triggered()), this, SLOT(slotStorebmp())); gohomeAct = new QAction(QIcon(":/images/gohome.png"), opt.initialhost, this); gohomeAct->setStatusTip(opt.initialhost); connect(gohomeAct, SIGNAL(triggered()), this, SLOT(slotGohome())); logbmpAct = new QAction(QIcon(":/images/logbmp.png"), l_log_as_bmp, this); logbmpAct->setStatusTip(l_status_log_as_bmp); connect(logbmpAct, SIGNAL(triggered()), this, SLOT(slotLogbmp())); logpvmAct = new QAction(QIcon(":/images/logpvm.png"), l_log_as_pvm, this); logpvmAct->setStatusTip(l_status_log_as_pvm); connect(logpvmAct, SIGNAL(triggered()), this, SLOT(slotLogpvm())); printAct = new QAction(QIcon(":/images/print.png"), l_print, this); printAct->setShortcut(tr("Ctrl+P")); printAct->setStatusTip(l_status_print); connect(printAct, SIGNAL(triggered()), this, SLOT(slotPrint())); newtabActToolBar = new QAction(QIcon(":/images/newtab.png"), l_new_tab, this); newtabActToolBar->setStatusTip(l_status_new_tab); connect(newtabActToolBar, SIGNAL(triggered()), this, SLOT(slotNewTab())); exitAct = new QAction(QIcon(":/images/exit.png"), l_exit, this); exitAct->setShortcut(tr("Ctrl+Q")); exitAct->setStatusTip(l_status_exit); connect(exitAct, SIGNAL(triggered()), this, SLOT(slotExit())); copyAct = new QAction(QIcon(":/images/copy.png"), l_copy, this); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(l_status_copy); connect(copyAct, SIGNAL(triggered()), this, SLOT(slotCopy())); if(opt.arg_disable == 0) { editmenuAct = new QAction(l_editmenu, this); editmenuAct->setShortcut(tr("Ctrl+E")); editmenuAct->setStatusTip(l_status_editmenu); connect(editmenuAct, SIGNAL(triggered()), this, SLOT(slotEditmenu())); addAction(editmenuAct); toolbarAct = new QAction(QIcon(":/images/toolbar.png"), l_toolbar, this); toolbarAct->setShortcut(tr("Ctrl+T")); toolbarAct->setStatusTip(l_status_toolbar); connect(toolbarAct, SIGNAL(triggered()), this, SLOT(slotToolbar())); addAction(toolbarAct); statusbarAct = new QAction(QIcon(":/images/statusbar.png"), l_statusbar, this); statusbarAct->setShortcut(tr("Ctrl+S")); statusbarAct->setStatusTip(l_status_statusbar); connect(statusbarAct, SIGNAL(triggered()), this, SLOT(slotStatusbar())); addAction(statusbarAct); maximizedAct = new QAction(l_maximized, this); maximizedAct->setShortcut(tr("Ctrl+M")); maximizedAct->setStatusTip(l_status_toggle_maximized); connect(maximizedAct, SIGNAL(triggered()), this, SLOT(slotMaximized())); addAction(maximizedAct); fullscreenAct = new QAction(QIcon(":/images/fullscreen.png"), l_fullscreen, this); fullscreenAct->setShortcut(tr("Ctrl+F")); fullscreenAct->setStatusTip(l_status_toggle_full_screen); connect(fullscreenAct, SIGNAL(triggered()), this, SLOT(slotFullscreen())); addAction(fullscreenAct); } manualAct = new QAction(l_manual, this); manualAct->setShortcut(tr("Ctrl+H")); manualAct->setStatusTip(l_status_manual); connect(manualAct, SIGNAL(triggered()), this, SLOT(slotManual())); aboutAct = new QAction(l_about, this); aboutAct->setStatusTip(l_status_about); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); aboutQtAct = new QAction("About &Qt", this); aboutQtAct->setStatusTip("About Qt library"); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); logoAct = new QAction(QIcon(":/images/app.png"),"pvbrowser", this); logoAct->setStatusTip(tr("About pvbrowser")); connect(logoAct, SIGNAL(triggered()), this, SLOT(about())); }
void KstApp::initActions() { fileNewWindow = new KAction(i18n("New &Window"), 0, 0, this, SLOT(slotFileNewWindow()), actionCollection(),"file_new_window"); fileOpenNew = KStdAction::openNew(this, SLOT(slotFileNew()), actionCollection()); fileOpenNew->setWhatsThis(i18n("Open Kst plot file.")); fileSave = KStdAction::save( this, SLOT(slotFileSave()), actionCollection()); fileSave->setWhatsThis(i18n("Save to current Kst plot file.")); fileSaveAs = KStdAction::saveAs( this, SLOT(slotFileSaveAs()), actionCollection()); fileSaveAs->setWhatsThis(i18n("Save to new Kst plot file.")); fileClose = KStdAction::close( this, SLOT(slotFileClose()), actionCollection()); fileClose->setWhatsThis(i18n("Close Kst.")); fileQuit = KStdAction::quit( this, SLOT(slotFileClose()), actionCollection()); fileQuit->setWhatsThis(i18n("Quit Kst.")); fileKeyBindings = KStdAction::keyBindings(this, SLOT(slotConfigureKeys()), actionCollection()); fileKeyBindings->setWhatsThis(i18n("Bring up a dialog box\n" "to configure shortcuts.")); filePreferences = KStdAction::preferences(this, SLOT(slotPreferences()), actionCollection()); filePreferences->setWhatsThis(i18n("Bring up a dialog box\n" "to configure Kst settings.")); fileCopy = KStdAction::copy(this, SLOT(slotCopy()), actionCollection()); fileCopy->setWhatsThis(i18n("Copy cursor position to the clipboard.")); /************/ filePrint = KStdAction::print(this, SLOT(slotFilePrint()), actionCollection()); filePrint->setToolTip(i18n("Print")); filePrint->setWhatsThis(i18n("Print current display")); /************/ ToolBarAction = KStdAction::showToolbar(this, SLOT(slotViewToolBar()), actionCollection()); ToolBarAction->setWhatsThis(i18n("Toggle Toolbar")); connect(ToolBarAction, SIGNAL(activated()), this, SLOT(setSettingsDirty())); /************/ StatusBarAction = KStdAction::showStatusbar(this, SLOT(slotViewStatusBar()), actionCollection()); StatusBarAction->setWhatsThis(i18n("Toggle Statusbar")); connect(StatusBarAction, SIGNAL(activated()), this, SLOT(setSettingsDirty())); /************/ KStdAction::open(this, SLOT(slotFileOpen()), actionCollection()); /************/ recent = KStdAction::openRecent(this, SLOT(slotFileOpenRecent(const KURL &)), actionCollection()); recent->setWhatsThis(i18n("Open a recently used Kst plot.")); /************/ PauseAction = new KToggleAction(i18n("P&ause"),"player_pause",0, actionCollection(), "pause_action"); PauseAction->setToolTip(i18n("Pause")); PauseAction->setWhatsThis(i18n("When paused, new data will not be read.")); /************/ TiedZoomAction = new KAction(i18n("&Tied Zoom"),"kst_zoomtie",0, view, SLOT(toggleTiedZoom()), actionCollection(), "zoomtie_action"); TiedZoomAction->setToolTip(i18n("Toggle tied zoom")); TiedZoomAction->setWhatsThis(i18n("Apply zoom actions to all plots\n" "(not just the active one).")); /************/ XYZoomAction = new KRadioAction(i18n("XY Mouse &Zoom"), "kst_zoomxy",0, actionCollection(), "zoomxy_action"); XYZoomAction->setExclusiveGroup("zoom"); XYZoomAction->setToolTip(i18n("XY mouse zoom")); XYZoomAction->setWhatsThis(i18n("XY zoom: mouse zooming effects\n" "both X and Y axis")); XYZoomAction->setChecked(true); /************/ XZoomAction = new KRadioAction(i18n("&X Mouse Zoom"), "kst_zoomx",0, actionCollection(), "zoomx_action"); XZoomAction->setExclusiveGroup("zoom"); XZoomAction->setToolTip(i18n("X mouse zoom")); XZoomAction->setWhatsThis(i18n("X zoom: Mouse zooming effects only the\n" "X axis (CTRL-mouse also does this)")); /************/ YZoomAction = new KRadioAction(i18n("&Y Mouse Zoom"), "kst_zoomy",0, actionCollection(), "zoomy_action"); YZoomAction->setExclusiveGroup("zoom"); YZoomAction->setToolTip(i18n("Y mouse zoom")); YZoomAction->setWhatsThis(i18n("Y zoom: Mouse zooming effects only the\n" "Y axis (SHIFT-mouse also does this)")); /************/ TextAction = new KRadioAction(i18n("&Label Editor"), "text",0, actionCollection(), "label_action"); TextAction->setExclusiveGroup("zoom"); TextAction->setToolTip(i18n("Label Editor")); TextAction->setWhatsThis(i18n("Use the mouse to create and edit labels.")); /************/ FilterDialogAction = new KAction(i18n("Edit &Filters"), 0, 0, this, SLOT(showFilterListEditor()), actionCollection(), "filterdialog_action"); FilterDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit filters.")); /************/ PlotDialogAction = new KAction(i18n("Edit &Plots"), "kst_editplots", 0, this, SLOT(showPlotDialog()), actionCollection(), "plotdialog_action"); PlotDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit plot settings.")); /************/ DataManagerAction = new KAction(i18n("&Data Manager"), "kst_datamanager", 0, dataManager, SLOT(show_I()), actionCollection(), "datamanager_action"); DataManagerAction->setWhatsThis(i18n("Bring up a dialog box\n" "to manage data.")); /************/ VectorDialogAction = new KAction(i18n("Edit &Vectors"), 0, 0, KstVectorDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "vectordialog_action"); VectorDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit or create vectors.")); /************/ CurveDialogAction = new KAction(i18n("Edit &Curves"), 0, 0, KstCurveDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "curvedialog_action"); CurveDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit or create curves.")); /************/ EqDialogAction = new KAction(i18n("Edit &Equations"), 0, 0, KstEqDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "eqdialog_action"); EqDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit or create equations.")); /************/ HsDialogAction = new KAction(i18n("Edit &Histograms"), 0, 0, KstHsDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "hsdialog_action"); HsDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit or create histograms.")); /************/ PsdDialogAction = new KAction(i18n("Edit Power &Spectra"), 0, 0, KstPsdDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "psddialog_action"); PsdDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit or create power spectra.")); /************/ PluginDialogAction = new KAction(i18n("Edit &Plugins"), 0, 0, KstPluginDialogI::globalInstance(), SLOT(show_I()), actionCollection(), "plugindialog_action"); PluginDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to use plugins.")); /************/ ChangeFileDialogAction = new KAction(i18n("Change Data &File"), "kst_changefile", 0, this, SLOT(showChangeFileDialog()), actionCollection(), "changefiledialog_action"); ChangeFileDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to change input files.")); /************/ ViewScalarsDialogAction = new KAction(i18n("View &Scalars"), 0, 0, this, SLOT(showViewScalarsDialog()), actionCollection(), "viewscalarsdialog_action"); ViewScalarsDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to view scalar values.")); /************/ ViewVectorsDialogAction = new KAction(i18n("View Vec&tors"), 0, 0, this, SLOT(showViewVectorsDialog()), actionCollection(), "viewvectorsdialog_action"); ViewVectorsDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to view vector values.")); /************/ ChangeNptsDialogAction = new KAction(i18n("Change Data Sample &Ranges"), "kst_changenpts", 0, this, SLOT(showChangeNptsDialog()), actionCollection(), "changenptsdialog_action"); ChangeNptsDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to change data sample ranges.")); /************/ QuickCurvesDialogAction = new KAction(i18n("Quickly Create New Curve"), "kst_quickcurves", 0, this, SLOT(showQuickCurvesDialog()), actionCollection(), "quickcurvesdialog_action"); QuickCurvesDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to create a data curve\n" "and put it in a plot.")); /************/ QuickPSDDialogAction = new KAction(i18n("Quickly Create New PSD"), "kst_quickpsd", 0, this, SLOT(showQuickPSDDialog()), actionCollection(), "quickpsddialog_action"); QuickPSDDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to create a PSD\n" "and put it in a plot.")); /************/ EventMonitorAction = new KAction(i18n("Edit Event &Monitoring"), 0, 0, KstEventMonitorI::globalInstance(), SLOT(show_I()), actionCollection(), "eventmonitor_action"); EventMonitorAction->setWhatsThis(i18n("Bring up a dialog box\n" "to edit event monitoring.")); /************/ GraphFileDialogAction = new KAction(i18n("Export to Graphics File..."), "kst_graphfile", 0, this, SLOT(showGraphFileDialog()), actionCollection(), "graphfiledialog_action"); GraphFileDialogAction->setWhatsThis(i18n("Bring up a dialog box\n" "to export the plot as a\n" "graphics file.")); /************/ _vectorSaveAction = new KAction(i18n("Save Vectors to Disk..."), 0, 0, vectorSaveDialog, SLOT(show()), actionCollection(), "vectorsavedialog_action"); _vectorSaveAction->setWhatsThis(i18n("Bring up a dialog box\n" "to save vectors to text files.")); /************/ SamplesDownAction = new KAction(i18n("&Back 1 Screen"), "kst_back", KAccel::stringToKey("Ctrl+Left"), this, SLOT(samplesDown()), actionCollection(), "samplesdown_action"); //SamplesDownAction->setToolTip(i18n("Back")); SamplesDownAction->setWhatsThis(i18n("Reduce the starting frame by\n" "the current number of frames.")); /************/ SamplesUpAction = new KAction(i18n("&Advance 1 Screen"), "kst_advance", KAccel::stringToKey("Ctrl+Right"), this, SLOT(samplesUp()), actionCollection(), "samplesup_action"); //SamplesUpAction->setToolTip(i18n("Advance")); SamplesUpAction->setWhatsThis(i18n("Increase the starting frame by\n" "the current number of frames.")); /************/ SamplesFromEndAction = new KAction(i18n("Read From &End"), "1rightarrow", KAccel::stringToKey("Shift+Ctrl+Right"), this, SLOT(samplesEnd()), actionCollection(), "samplesend_action"); SamplesFromEndAction->setToolTip(i18n("Read from end")); SamplesFromEndAction->setWhatsThis(i18n("Read current data from end of file.")); /************/ PluginManagerAction = new KAction(i18n("&Plugins..."), 0, 0, this, SLOT(showPluginManager()), actionCollection(), "pluginmanager_action"); PluginManagerAction->setWhatsThis(i18n("Bring up a dialog box\n" "to manage plugins.")); /************/ ExtensionManagerAction = new KAction(i18n("&Extensions..."), 0, 0, this, SLOT(showExtensionManager()), actionCollection(), "extensionmanager_action"); ExtensionManagerAction->setWhatsThis(i18n("Bring up a dialog box\n" "to manage extensions.")); /************/ DataWizardAction = new KAction(i18n("Data &Wizard..."), "kst_datawizard", 0, this, SLOT(showDataWizard()), actionCollection(), "datawizard_action"); DataWizardAction->setWhatsThis(i18n("Bring up a wizard\n" "to easily load data.")); /************/ DebugDialogAction = new KAction(i18n("Debug Kst..."), 0, 0, this, SLOT(showDebugDialog()), actionCollection(), "debug_action"); DebugDialogAction->setWhatsThis(i18n("Bring up a dialog\n" "to display debugging information.")); /************/ DataMode = new KToggleAction(i18n("Data Mode"), "kst_datamode", 0, this, SLOT(toggleDataMode()), actionCollection(), "datamode_action"); DataMode->setWhatsThis(i18n("Toggle between cursor mode and data mode.")); /************/ _reloadAction = new KAction(i18n("Reload"), "reload", Key_F5, this, SLOT(reload()), actionCollection(), "reload"); _reloadAction->setWhatsThis(i18n("Reload the data from file.")); createGUI(); }