⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workspace.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    QObjectList l = project->objects();    QObjectListIt objs( l );    for ( ;objs.current(); ++objs ) {	QObject* o = objs.current();	(void) new WorkspaceItem( projectItem, o, project );    }    updateColors();    completionDirty = TRUE;}void Workspace::sourceFileAdded( SourceFile* sf ){    (void) new WorkspaceItem( projectItem, sf );    updateColors();}void Workspace::sourceFileRemoved( SourceFile* sf ){    delete findItem( sf );    updateColors();}void Workspace::formFileAdded( FormFile* ff ){    if ( ff->isFake() )	return;    (void) new WorkspaceItem( projectItem, ff );    updateColors();}void Workspace::formFileRemoved( FormFile* ff ){    delete findItem( ff );    updateColors();}void Workspace::objectAdded( QObject *o ){    (void) new WorkspaceItem( projectItem, o, project );    updateColors();}void Workspace::objectRemoved( QObject *o ){    delete findItem( o );    updateColors();}void Workspace::update(){    completionDirty = TRUE;    triggerUpdate();}void Workspace::update( FormFile* ff ){    QListViewItem* i = findItem( ff );    if ( i ) {	i->repaint();	if ( (i = i->firstChild()) )	    i->repaint();    }}void Workspace::activeFormChanged( FormWindow *fw ){    WorkspaceItem *i = findItem( fw->formFile() );    if ( i ) {	setCurrentItem( i );	setSelected( i, TRUE );	if ( !i->isOpen() )	    i->setAutoOpen( TRUE );    }    closeAutoOpenItems();}void Workspace::activeEditorChanged( SourceEditor *se ){    if ( !se->object() )	return;    if ( se->formWindow() ) {	WorkspaceItem *i = findItem( se->formWindow()->formFile() );	if ( i && i->firstChild() ) {	    if ( !i->isOpen() )		i->setAutoOpen( TRUE );	    setCurrentItem( i->firstChild() );	    setSelected( i->firstChild(), TRUE );	}    } else {	WorkspaceItem *i = findItem( se->sourceFile() );	if ( i ) {	    setCurrentItem( i );	    setSelected( i, TRUE );	}    }    closeAutoOpenItems();}WorkspaceItem *Workspace::findItem( FormFile* ff){    QListViewItemIterator it( this );    for ( ; it.current(); ++it ) {	if ( ( (WorkspaceItem*)it.current() )->formFile == ff )	    return (WorkspaceItem*)it.current();    }    return 0;}WorkspaceItem *Workspace::findItem( SourceFile *sf ){    QListViewItemIterator it( this );    for ( ; it.current(); ++it ) {	if ( ( (WorkspaceItem*)it.current() )->sourceFile == sf )	    return (WorkspaceItem*)it.current();    }    return 0;}WorkspaceItem *Workspace::findItem( QObject *o ){    QListViewItemIterator it( this );    for ( ; it.current(); ++it ) {	if ( ( (WorkspaceItem*)it.current() )->object == o )	    return (WorkspaceItem*)it.current();    }    return 0;}void Workspace::closeAutoOpenItems(){    QListViewItemIterator it( this );    for ( ; it.current(); ++it ) {	WorkspaceItem* i = (WorkspaceItem*) it.current();	WorkspaceItem* ip = (WorkspaceItem*) i->parent();	if ( i->type() == WorkspaceItem::FormSourceType ) {	    if ( !i->isSelected() && !ip->isSelected()		 && ip->isAutoOpen() ) {		ip->setAutoOpen( FALSE );	    }	}    }}void Workspace::closeEvent( QCloseEvent *e ){    e->accept();}void Workspace::itemDoubleClicked( QListViewItem *i ){    if ( ( (WorkspaceItem*)i)->type()== WorkspaceItem::ProjectType )	i->setOpen( TRUE );}void Workspace::itemClicked( int button, QListViewItem *i, const QPoint& ){    if ( !i || button != LeftButton )	return;    closeAutoOpenItems();    WorkspaceItem* wi = (WorkspaceItem*)i;    switch( wi->type() ) {    case WorkspaceItem::ProjectType:	break; // ### TODO    case WorkspaceItem::FormFileType:	wi->formFile->showFormWindow();	break;    case WorkspaceItem::FormSourceType:	wi->formFile->showEditor( FALSE );	break;    case WorkspaceItem::SourceFileType:	mainWindow->editSource( wi->sourceFile );	break;    case WorkspaceItem::ObjectType:	project->fakeFormFileFor( wi->object )->formWindow()->setFocus();	mainWindow->propertyeditor()->setWidget( wi->object,				 project->fakeFormFileFor( wi->object )->formWindow() );	mainWindow->objectHierarchy()->	    setFormWindow( project->fakeFormFileFor( wi->object )->formWindow(), wi->object );	project->fakeFormFileFor( wi->object )->showEditor();	break;    }}void Workspace::contentsDropEvent( QDropEvent *e ){    if ( !QUriDrag::canDecode( e ) ) {	e->ignore();    } else {	QStringList files;	QUriDrag::decodeLocalFiles( e, files );	if ( !files.isEmpty() ) {	    for ( QStringList::Iterator it = files.begin(); it != files.end(); ++it ) {		QString fn = *it;		mainWindow->fileOpen( "", "", fn );	    }	}    }}void Workspace::contentsDragEnterEvent( QDragEnterEvent *e ){    if ( !QUriDrag::canDecode( e ) )	e->ignore();    else	e->accept();}void Workspace::contentsDragMoveEvent( QDragMoveEvent *e ){    if ( !QUriDrag::canDecode( e ) )	e->ignore();    else	e->accept();}void Workspace::rmbClicked( QListViewItem *i, const QPoint& pos ){    if ( !i )	return;    WorkspaceItem* wi = (WorkspaceItem*)i;    enum { OPEN_SOURCE, REMOVE_SOURCE, OPEN_FORM, REMOVE_FORM,	   OPEN_FORM_SOURCE, REMOVE_FORM_SOURCE, OPEN_OBJECT_SOURCE };    QPopupMenu menu( this );    menu.setCheckable( TRUE );    switch ( wi->type() ) {    case WorkspaceItem::SourceFileType:	menu.insertItem( tr( "&Open source file" ), OPEN_SOURCE );	menu.insertSeparator();	menu.insertItem( QPixmap::fromMimeSource( "editcut.png" ),			 tr( "&Remove source file from project" ), REMOVE_SOURCE );	break;    case WorkspaceItem::FormFileType:	menu.insertItem( tr( "&Open form" ), OPEN_FORM );	menu.insertSeparator();	menu.insertItem( QPixmap::fromMimeSource( "editcut.png" ),			 tr( "&Remove form from project" ), REMOVE_FORM );	break;    case WorkspaceItem::FormSourceType:	menu.insertItem( tr( "&Open form source" ), OPEN_FORM_SOURCE );	menu.insertSeparator();	if ( project->isCpp() )	    menu.insertItem( QPixmap::fromMimeSource( "editcut.png" ),			     tr( "&Remove source file from form" ), REMOVE_FORM_SOURCE );	else	    menu.insertItem( QPixmap::fromMimeSource( "editcut.png" ),	                     tr( "&Remove form from project" ), REMOVE_FORM );	break;    case WorkspaceItem::ProjectType:	MainWindow::self->popupProjectMenu( pos );	return;    case WorkspaceItem::ObjectType:	menu.insertItem( tr( "&Open source" ), OPEN_OBJECT_SOURCE );	break;    }    switch ( menu.exec( pos ) ) {    case REMOVE_SOURCE:	project->removeSourceFile( wi->sourceFile );	break;    case REMOVE_FORM:	project->removeFormFile( wi->formFile );	break;    case REMOVE_FORM_SOURCE:	( (WorkspaceItem*)i )->formFile->setModified( TRUE );	( (WorkspaceItem*)i )->formFile->setCodeFileState( FormFile::Deleted );	delete ( (WorkspaceItem*)i )->formFile->editor();	break;    case OPEN_OBJECT_SOURCE:    case OPEN_SOURCE:    case OPEN_FORM:    case OPEN_FORM_SOURCE:	itemClicked( LeftButton, i, pos );	break;    }}bool Workspace::eventFilter( QObject *o, QEvent * e ){    // Reggie, on what type of events do we have to execute updateBufferEdit()    if ( o ==bufferEdit && e->type() != QEvent::ChildRemoved )	updateBufferEdit();    return QListView::eventFilter( o, e );}void Workspace::setBufferEdit( QCompletionEdit *edit ){    bufferEdit = edit;    connect( bufferEdit, SIGNAL( chosen( const QString & ) ),	     this, SLOT( bufferChosen( const QString & ) ) );    bufferEdit->installEventFilter( this );}void Workspace::updateBufferEdit(){    if ( !bufferEdit || !completionDirty || !MainWindow::self)	return;    completionDirty = FALSE;    QStringList completion = MainWindow::self->projectFileNames();    QListViewItemIterator it( this );    while ( it.current() ) {	( (WorkspaceItem*)it.current())->fillCompletionList( completion );	++it;    }    completion.sort();    bufferEdit->setCompletionList( completion );}void Workspace::bufferChosen( const QString &buffer ){    if ( bufferEdit )	bufferEdit->setText( "" );    if ( MainWindow::self->projectFileNames().contains( buffer ) ) {	MainWindow::self->setCurrentProjectByFilename( buffer );	return;    }    QListViewItemIterator it( this );    while ( it.current() ) {	if ( ( (WorkspaceItem*)it.current())->checkCompletion( buffer ) ) {	    itemClicked( LeftButton, it.current(), QPoint() );	    break;	}	++it;    }}void Workspace::updateColors(){    QListViewItem* i = firstChild();    if ( i )	i = i->firstChild();    bool b = TRUE;    while ( i ) {	WorkspaceItem* wi = ( WorkspaceItem*) i;	i = i->nextSibling();	wi->useOddColor = b;	b = !b;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -