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

📄 hierarchyview.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	    insertObject( it.current(), item );	}    }    if ( fakeMainWindow ) {	QObjectList *l = o->parent()->queryList( "QDesignerToolBar" );	for ( QObject *obj = l->first(); obj; obj = l->next() )	    insertObject( obj, item );	delete l;	QMenuBar *m = (QMenuBar*)o->parent()->child( 0, "QDesignerMenuBar" );	if ( m )	    insertObject( m, item );    } else if ( o->inherits( "QDesignerToolBar" ) || o->inherits( "QDesignerPopupMenu" ) ) {	QPtrList<QAction> actions;	if ( o->inherits( "QDesignerToolBar" ) )	    actions = ( (QDesignerToolBar*)o )->insertedActions();	else	    actions = ( (QDesignerPopupMenu*)o )->insertedActions();	QPtrListIterator<QAction> it( actions );	it.toLast();	while ( it.current() ) {	    QAction *a = it.current();	    if ( a->inherits( "QDesignerAction" ) ) {		QDesignerAction *da = (QDesignerAction*)a;		if ( da->supportsMenu() )		    insertObject( da, item );		else		    insertObject( da->widget(), item );	    } else if ( a->inherits( "QDesignerActionGroup" ) ) {		insertObject( a, item );	    }	    --it;	}    } else if ( o->inherits( "QDesignerActionGroup" ) && o->children() ) {	QObjectList *l = (QObjectList*)o->children();	for ( QObject *obj = l->last(); obj; obj = l->prev() ) {	    if ( obj->inherits( "QDesignerAction" ) ) {		QDesignerAction *da = (QDesignerAction*)obj;		if ( da->supportsMenu() )		    insertObject( da, item );		else		    insertObject( da->widget(), item );	    } else if ( obj->inherits( "QDesignerActionGroup" ) ) {		insertObject( obj, item );	    }	}    } else if ( o->inherits( "QMenuBar" ) ) {	QMenuBar *mb = (QMenuBar*)o;	for ( int i = mb->count() -1; i >= 0; --i ) {	    QMenuItem *md = mb->findItem( mb->idAt( i ) );	    if ( !md || !md->popup() )		continue;	    insertObject( md->popup(), item );	}    }    if ( item->firstChild() )	item->setOpen( TRUE );}void HierarchyList::setCurrent( QObject *o ){    QListViewItemIterator it( this );    while ( it.current() ) {	if ( ( (HierarchyItem*)it.current() )->object() == o ) {	    blockSignals( TRUE );	    setCurrentItem( it.current() );	    ensureItemVisible( it.current() );	    blockSignals( FALSE );	    return;	}	++it;    }}void HierarchyList::showRMBMenu( QListViewItem *i, const QPoint & p ){    if ( !i )	return;    QObject *o = findObject( i );    if ( !o )	return;    if ( !o->isWidgetType() ||	 ( o != formWindow && !formWindow->widgets()->find( (QWidget*)o ) ) )	return;    QWidget *w = (QWidget*)o;    if ( w->isVisibleTo( formWindow ) ) {	if ( !w->inherits( "QTabWidget" ) && !w->inherits( "QWizard" ) ) {	    if ( !normalMenu )		normalMenu = formWindow->mainWindow()->setupNormalHierarchyMenu( this );	    normalMenu->popup( p );	} else {	    if ( !tabWidgetMenu )		tabWidgetMenu =		    formWindow->mainWindow()->setupTabWidgetHierarchyMenu(				  this, SLOT( addTabPage() ),				  SLOT( removeTabPage() ) );	    tabWidgetMenu->popup( p );	}    }}void HierarchyList::addTabPage(){    QObject *o = current();    if ( !o || !o->isWidgetType() )	return;    QWidget *w = (QWidget*)o;    if ( w->inherits( "QTabWidget" ) ) {	QTabWidget *tw = (QTabWidget*)w;	AddTabPageCommand *cmd = new AddTabPageCommand( tr( "Add Page to %1" ).							arg( tw->name() ), formWindow,							tw, "Tab" );	formWindow->commandHistory()->addCommand( cmd );	cmd->execute();    } else if ( w->inherits( "QWizard" ) ) {	QWizard *wiz = (QWizard*)formWindow->mainContainer();	AddWizardPageCommand *cmd = new AddWizardPageCommand( tr( "Add Page to %1" ).							      arg( wiz->name() ), formWindow,							      wiz, "Page" );	formWindow->commandHistory()->addCommand( cmd );	cmd->execute();    }}void HierarchyList::removeTabPage(){    QObject *o = current();    if ( !o || !o->isWidgetType() )	return;    QWidget *w = (QWidget*)o;    if ( w->inherits( "QTabWidget" ) ) {	QTabWidget *tw = (QTabWidget*)w;	if ( tw->currentPage() ) {	    QDesignerTabWidget *dtw = (QDesignerTabWidget*)tw;	    DeleteTabPageCommand *cmd =		new DeleteTabPageCommand( tr( "Delete Page %1 of %2" ).					  arg( dtw->pageTitle() ).arg( tw->name() ),					  formWindow, tw, tw->currentPage() );	    formWindow->commandHistory()->addCommand( cmd );	    cmd->execute();	}    } else if ( w->inherits( "QWizard" ) ) {	QWizard *wiz = (QWizard*)formWindow->mainContainer();	if ( wiz->currentPage() ) {	    QDesignerWizard *dw = (QDesignerWizard*)wiz;	    DeleteWizardPageCommand *cmd =		new DeleteWizardPageCommand( tr( "Delete Page %1 of %2" ).					     arg( dw->pageTitle() ).arg( wiz->name() ),					     formWindow, wiz,					     wiz->indexOf( wiz->currentPage() ), TRUE );	    formWindow->commandHistory()->addCommand( cmd );	    cmd->execute();	}    }}// ------------------------------------------------------------FormDefinitionView::FormDefinitionView( QWidget *parent, FormWindow *fw )    : HierarchyList( parent, fw, TRUE ){    header()->hide();    removeColumn( 1 );    connect( this, SIGNAL( itemRenamed( QListViewItem *, int, const QString & ) ),	     this, SLOT( renamed( QListViewItem * ) ) );    popupOpen = FALSE;}void FormDefinitionView::setup(){    if ( popupOpen || !formWindow )	return;    if ( !formWindow->project()->isCpp() )	return;    QListViewItem *i = firstChild();    while ( i ) {	if ( i->rtti() == HierarchyItem::DefinitionParent ) {	    QListViewItem *a = i;	    i = i->nextSibling();	    delete a;	    continue;	}	i = i->nextSibling();    }    LanguageInterface *lIface = MetaDataBase::languageInterface( formWindow->project()->language() );    if ( lIface ) {	QStringList defs = lIface->definitions();	for ( QStringList::Iterator dit = defs.begin(); dit != defs.end(); ++dit ) {	    HierarchyItem *itemDef = new HierarchyItem( HierarchyItem::DefinitionParent, this, 0,							tr( *dit ), QString::null, QString::null );	    itemDef->setPixmap( 0, QPixmap::fromMimeSource( "folder.png" ) );	    itemDef->setOpen( TRUE );	    QStringList entries =		lIface->definitionEntries( *dit, formWindow->mainWindow()->designerInterface() );	    HierarchyItem *item = 0;	    for ( QStringList::Iterator eit = entries.begin(); eit != entries.end(); ++eit ) {		item = new HierarchyItem( HierarchyItem::Definition,					  itemDef, item, *eit, QString::null, QString::null );		item->setRenameEnabled( 0, TRUE );	    }	}	lIface->release();    }    setupVariables();    refresh();}void FormDefinitionView::setupVariables(){    bool pubOpen, protOpen, privOpen;    pubOpen = protOpen = privOpen = TRUE;    QListViewItem *i = firstChild();    while ( i ) {	if ( i->rtti() == HierarchyItem::VarParent ) {	    QListViewItem *a = i;	    i = i->firstChild();	    while ( i ) {		if ( i->rtti() == HierarchyItem::VarPublic )		    pubOpen = i->isOpen();		else if ( i->rtti() == HierarchyItem::VarProtected )		    protOpen = i->isOpen();		else if ( i->rtti() == HierarchyItem::VarPrivate )		    privOpen = i->isOpen();		i = i->nextSibling();	    }	    delete a;	    break;	}	i = i->nextSibling();    }    HierarchyItem *itemVar = new HierarchyItem( HierarchyItem::VarParent, this, 0, tr( "Class Variables" ),						QString::null, QString::null );    itemVar->setPixmap( 0, QPixmap::fromMimeSource( "folder.png" ) );    itemVar->setOpen( TRUE );    itemVarPriv = new HierarchyItem( HierarchyItem::VarPrivate, itemVar, 0, tr( "private" ),				     QString::null, QString::null );    itemVarProt = new HierarchyItem( HierarchyItem::VarProtected, itemVar, 0, tr( "protected" ),				     QString::null, QString::null );    itemVarPubl = new HierarchyItem( HierarchyItem::VarPublic, itemVar, 0, tr( "public" ),				     QString::null, QString::null );    QValueList<MetaDataBase::Variable> varList = MetaDataBase::variables( formWindow );    QValueList<MetaDataBase::Variable>::Iterator it = --( varList.end() );    if ( !varList.isEmpty() && itemVar ) {	for (;;) {	    QListViewItem *item = 0;	    if ( (*it).varAccess == "public" )		item = new HierarchyItem( HierarchyItem::Variable, itemVarPubl, 0, (*it).varName,					  QString::null, QString::null );	    else if ( (*it).varAccess == "private" )		item = new HierarchyItem( HierarchyItem::Variable, itemVarPriv, 0, (*it).varName,					  QString::null, QString::null );	    else // default is protected		item = new HierarchyItem( HierarchyItem::Variable, itemVarProt, 0, (*it).varName,					  QString::null, QString::null );	    item->setPixmap( 0, QPixmap::fromMimeSource( "editslots.png" ) );	    if ( it == varList.begin() )		break;	    --it;	}    }    itemVar->setOpen( TRUE );    itemVarPriv->setOpen( privOpen );    itemVarProt->setOpen( protOpen );    itemVarPubl->setOpen( pubOpen );}void FormDefinitionView::refresh(){    if ( popupOpen || !formWindow || !formWindow->project()->isCpp() )	return;    bool fuPub, fuProt, fuPriv, slPub, slProt, slPriv;    fuPub = fuProt = fuPriv = slPub = slProt = slPriv = TRUE;    QListViewItem *i = firstChild();    while ( i ) {        if ( i->rtti() == HierarchyItem::SlotParent ||	     i->rtti() == HierarchyItem::FunctParent ) {	    QListViewItem *a = i;	    i = i->firstChild();	    while ( i ) {		switch( i->rtti() ) {		case HierarchyItem::FunctPublic:		    fuPub = i->isOpen();		case HierarchyItem::FunctProtected:		    fuProt = i->isOpen();		    break;		case HierarchyItem::FunctPrivate:		    fuPriv = i->isOpen();		    break;		case HierarchyItem::SlotPublic:		    slPub = i->isOpen();		    if ( slPub )		    break;		case HierarchyItem::SlotProtected:		    slProt = i->isOpen();		    break;		case HierarchyItem::SlotPrivate:		    slPriv = i->isOpen();		}		i = i->nextSibling();	    }	    i = a->nextSibling();	    delete a;	    continue;	}	i = i->nextSibling();    }    itemFunct = new HierarchyItem( HierarchyItem::FunctParent,				   this, 0, tr( "Functions" ), QString::null, QString::null );    itemFunct->moveItem( i );    itemFunct->setPixmap( 0, QPixmap::fromMimeSource( "folder.png" ) );    itemFunctPriv = new HierarchyItem( HierarchyItem::FunctPrivate, itemFunct, 0,				       tr( "private" ), QString::null, QString::null );    itemFunctProt = new HierarchyItem( HierarchyItem::FunctProtected, itemFunct, 0,				       tr( "protected" ), QString::null, QString::null );    itemFunctPubl = new HierarchyItem( HierarchyItem::FunctPublic, itemFunct, 0,				       tr( "public" ), QString::null, QString::null );    itemSlots = new HierarchyItem( HierarchyItem::SlotParent,				   this, 0, tr( "Slots" ), QString::null, QString::null );    itemSlots->setPixmap( 0, QPixmap::fromMimeSource( "folder.png" ) );    itemPrivate = new HierarchyItem( HierarchyItem::SlotPrivate, itemSlots, 0, tr( "private" ),				     QString::null, QString::null );    itemProtected = new HierarchyItem( HierarchyItem::SlotProtected, itemSlots, 0, tr( "protected" ),				       QString::null, QString::null );    itemPublic = new HierarchyItem( HierarchyItem::SlotPublic, itemSlots, 0, tr( "public" ),				    QString::null, QString::null );    QValueList<MetaDataBase::Function> functionList = MetaDataBase::functionList( formWindow );    QValueList<MetaDataBase::Function>::Iterator it = --( functionList.end() );    if ( !functionList.isEmpty() && itemFunct ) {	for (;;) {	    QListViewItem *item = 0;	    if ( (*it).type == "slot" ) {		if ( (*it).access == "protected" )		    item = new HierarchyItem( HierarchyItem::Slot, itemProtected, 0, (*it).function,					      QString::null, QString::null );		else if ( (*it).access == "private" )		    item = new HierarchyItem( HierarchyItem::Slot, itemPrivate, 0, (*it).function,					      QString::null, QString::null );		else // default is public		    item = new HierarchyItem( HierarchyItem::Slot, itemPublic, 0, (*it).function,					      QString::null, QString::null );	    } else {		if ( (*it).access == "protected" )		    item = new HierarchyItem( HierarchyItem::Function, itemFunctProt, 0, (*it).function,					      QString::null, QString::null );		else if ( (*it).access == "private" )		    item = new HierarchyItem( HierarchyItem::Function, itemFunctPriv, 0, (*it).function,					      QString::null, QString::null );		else // default is public		    item = new HierarchyItem( HierarchyItem::Function, itemFunctPubl, 0, (*it).function,					      QString::null, QString::null );	    }	    item->setPixmap( 0, QPixmap::fromMimeSource( "editslots.png" ) );	    if ( it == functionList.begin() )		break;	    --it;	}    }    itemFunct->setOpen( TRUE );    itemFunctPubl->setOpen( fuPub );    itemFunctProt->setOpen( fuProt );    itemFunctPriv->setOpen( fuPriv );    itemSlots->setOpen( TRUE );    itemPublic->setOpen( slPub );    itemProtected->setOpen( slProt );    itemPrivate->setOpen( slPriv );}void FormDefinitionView::setCurrent( QWidget * ){}void FormDefinitionView::objectClicked( QListViewItem *i ){    if ( !i )	return;    if ( (i->rtti() == HierarchyItem::Slot) || (i->rtti() == HierarchyItem::Function) )	formWindow->mainWindow()->editFunction( i->text( 0 ) );}static HierarchyItem::Type getChildType( int type ){    switch ( (HierarchyItem::Type)type ) {    case HierarchyItem::Widget:	qWarning( "getChildType: Inserting childs dynamically to Widget or SlotParent is not allwowed!" );	break;    case HierarchyItem::SlotParent:    case HierarchyItem::SlotPublic:    case HierarchyItem::SlotProtected:    case HierarchyItem::SlotPrivate:    case HierarchyItem::Slot:	return HierarchyItem::Slot;    case HierarchyItem::DefinitionParent:    case HierarchyItem::Definition:	return HierarchyItem::Definition;    case HierarchyItem::Event:    case HierarchyItem::EventFunction:	return HierarchyItem::Event;    case HierarchyItem::FunctParent:    case HierarchyItem::FunctPublic:    case HierarchyItem::FunctProtected:    case HierarchyItem::FunctPrivate:    case HierarchyItem::Function:	return HierarchyItem::Function;    case HierarchyItem::VarParent:    case HierarchyItem::VarPublic:    case HierarchyItem::VarProtected:    case HierarchyItem::VarPrivate:    case HierarchyItem::Variable:	return HierarchyItem::Variable;    }    return (HierarchyItem::Type)type;}void HierarchyList::insertEntry( QListViewItem *i, const QPixmap &pix, const QString &s ){    QListViewItem *after = i->firstChild();    while ( after && after->nextSibling() )	after = after->nextSibling();    HierarchyItem *item = new HierarchyItem( getChildType( i->rtti() ), i, after, s,					     QString::null, QString::null );    if ( !pix.isNull() )	item->setPixmap( 0, pix );    item->setRenameEnabled( 0, TRUE );    setCurrentItem( item );    ensureItemVisible( item );    qApp->processEvents();    newItem = item;    item->startRename( 0 );}void FormDefinitionView::contentsMouseDoubleClickEvent( QMouseEvent *e ){    QListViewItem *i = itemAt( contentsToViewport( e->pos() ) );    if ( !i )	return;    if ( i->rtti() == HierarchyItem::SlotParent || i->rtti() == HierarchyItem::FunctParent ||	 i->rtti() == HierarchyItem::VarParent )	return;    HierarchyItem::Type t = getChildType( i->rtti() );    if ( (int)t == i->rtti() )	i = i->parent();    if ( formWindow->project()->isCpp() )	switch( i->rtti() ) {	case HierarchyItem::FunctPublic:	    execFunctionDialog( "public", "function", TRUE );	    break;	case HierarchyItem::FunctProtected:	    execFunctionDialog( "protected", "function", TRUE );	    break;	case HierarchyItem::FunctPrivate:	    execFunctionDialog( "private", "function", TRUE );	    break;	case HierarchyItem::SlotPublic:	    execFunctionDialog( "public", "slot", TRUE );	    break;	case HierarchyItem::SlotProtected:	    execFunctionDialog( "protected", "slot", TRUE );	    break;	case HierarchyItem::SlotPrivate:	    execFunctionDialog( "private", "slot", TRUE );	    break;	case HierarchyItem::VarPublic:	case HierarchyItem::VarProtected:	case HierarchyItem::VarPrivate: {	    VariableDialog varDia( formWindow, this );	    varDia.exec();	    break;

⌨️ 快捷键说明

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