Kaydet (Commit) 000bb6af authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Fridrich Štrba

Convert tools/table.hxx usage to std::map in Basic IDE module

üst e55595d0
......@@ -146,6 +146,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
DBG_ASSERT( nWhich, "Wich fuer SearchItem ?" );
const SfxPoolItem& rItem = pArgs->Get( nWhich );
DBG_ASSERT( rItem.ISA( SvxSearchItem ), "Kein Searchitem!" );
IDEWindowTable::const_iterator it;
if ( rItem.ISA( SvxSearchItem ) )
{
// memorize item because of the adjustments...
......@@ -155,22 +156,20 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
if ( ((const SvxSearchItem&)rItem).GetCommand() == SVX_SEARCHCMD_REPLACE_ALL )
{
sal_uInt16 nActModWindows = 0;
IDEBaseWindow* pWin = aIDEWindowTable.First();
while ( pWin )
for( it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
nActModWindows++;
pWin = aIDEWindowTable.Next();
}
if ( ( nActModWindows <= 1 ) || ( !((const SvxSearchItem&)rItem).GetSelection() && QueryBox( pCurWin, WB_YES_NO|WB_DEF_YES, String( IDEResId( RID_STR_SEARCHALLMODULES ) ) ).Execute() == RET_YES ) )
{
pWin = aIDEWindowTable.First();
while ( pWin )
for( it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
nFound = nFound + ((ModulWindow*)pWin)->StartSearchAndReplace( (const SvxSearchItem&)rItem );
pWin = aIDEWindowTable.Next();
}
}
else
......@@ -187,8 +186,15 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
{
// search other modules...
sal_Bool bChangeCurWindow = sal_False;
aIDEWindowTable.Seek( pCurWin );
IDEBaseWindow* pWin = aIDEWindowTable.Next();
for( it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
if ( it->second == pCurWin)
break;
if ( it != aIDEWindowTable.end() )
++it;
IDEBaseWindow* pWin = NULL;
if ( it != aIDEWindowTable.end() )
pWin = it->second;
sal_Bool bSearchedFromStart = sal_False;
while ( !nFound && !bCanceled && ( pWin || !bSearchedFromStart ) )
{
......@@ -200,7 +206,9 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
QueryBox aQuery(pParent, WB_YES_NO|WB_DEF_YES, ResId::toString(IDEResId(RID_STR_SEARCHFROMSTART)));
if ( aQuery.Execute() == RET_YES )
{
pWin = aIDEWindowTable.First();
it = aIDEWindowTable.begin();
if ( it != aIDEWindowTable.end() )
pWin = it->second;
bSearchedFromStart = sal_True;
}
else
......@@ -222,7 +230,11 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
}
}
if ( pWin && ( pWin != pCurWin ) )
pWin = aIDEWindowTable.Next();
{
++it;
if ( it != aIDEWindowTable.end() )
pWin = it->second;
}
else
pWin = 0;
}
......@@ -453,10 +465,10 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
const SfxUInt16Item &rTabId = (const SfxUInt16Item&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_TABID );
const SfxStringItem &rModName = (const SfxStringItem&)rReq.GetArgs()->Get(SID_BASICIDE_ARG_MODULENAME );
IDEBaseWindow* pWin = aIDEWindowTable.Get( rTabId.GetValue() );
DBG_ASSERT( pWin, "Window nicht im Liste, aber in TabBar ?" );
if ( pWin )
if ( aIDEWindowTable.find( rTabId.GetValue() ) != aIDEWindowTable.end() )
{
IDEBaseWindow* pWin = aIDEWindowTable[ rTabId.GetValue() ];
::rtl::OUString aNewName( rModName.GetValue() );
::rtl::OUString aOldName( pWin->GetName() );
if ( aNewName != aOldName )
......@@ -490,7 +502,7 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
else
{
// set old name in TabWriter
sal_uInt16 nId = (sal_uInt16)aIDEWindowTable.GetKey( pWin );
sal_uInt16 nId = GetIDEWindowId( pWin );
DBG_ASSERT( nId, "No entry in Tabbar!" );
if ( nId )
pTabBar->SetPageText( nId, aOldName );
......@@ -523,9 +535,9 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
case SID_BASICIDE_STOREALLMODULESOURCES:
case SID_BASICIDE_UPDATEALLMODULESOURCES:
{
IDEBaseWindow* pWin = aIDEWindowTable.First();
while ( pWin )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
{
if ( rReq.GetSlot() == SID_BASICIDE_STOREALLMODULESOURCES )
......@@ -533,7 +545,6 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
else
pWin->UpdateData();
}
pWin = aIDEWindowTable.Next();
}
}
break;
......@@ -1192,7 +1203,7 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, sal_Bool bUpdateTabBar
}
if ( bUpdateTabBar )
{
sal_uLong nKey = aIDEWindowTable.GetKey( pCurWin );
sal_uLong nKey = GetIDEWindowId( pCurWin );
if ( pCurWin && ( pTabBar->GetPagePos( (sal_uInt16)nKey ) == TAB_PAGE_NOTFOUND ) )
pTabBar->InsertPage( (sal_uInt16)nKey, pCurWin->GetTitle() ); // has just been faded in
pTabBar->SetCurPageId( (sal_uInt16)nKey );
......@@ -1275,9 +1286,9 @@ IDEBaseWindow* BasicIDEShell::FindApplicationWindow()
IDEBaseWindow* BasicIDEShell::FindWindow( const ScriptDocument& rDocument, const ::rtl::OUString& rLibName, const ::rtl::OUString& rName, BasicIDEType nType, sal_Bool bFindSuspended )
{
IDEBaseWindow* pWin = aIDEWindowTable.First();
while ( pWin )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( !pWin->IsSuspended() || bFindSuspended )
{
if ( rLibName.isEmpty() || rName.isEmpty() || nType == BASICIDE_TYPE_UNKNOWN )
......@@ -1292,7 +1303,6 @@ IDEBaseWindow* BasicIDEShell::FindWindow( const ScriptDocument& rDocument, const
return pWin;
}
}
pWin = aIDEWindowTable.Next();
}
return 0;
}
......@@ -1451,9 +1461,9 @@ void BasicIDEShell::Deactivate( sal_Bool bMDI )
// test CanClose to also test during deactivating the BasicIDE whether
// the sourcecode is too large in one of the modules...
for ( sal_uLong nWin = 0; nWin < aIDEWindowTable.Count(); nWin++ )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = aIDEWindowTable.GetObject( nWin );
IDEBaseWindow* pWin = it->second;
if ( /* !pWin->IsSuspended() && */ !pWin->CanClose() )
{
if ( !m_aCurLibName.isEmpty() && ( pWin->IsDocument( m_aCurDocument ) || pWin->GetLibName() != m_aCurLibName ) )
......
......@@ -231,13 +231,7 @@ ModulWindow* BasicIDEShell::CreateBasWin( const ScriptDocument& rDocument, const
else
{
pWin->SetStatus( pWin->GetStatus() & ~BASWIN_SUSPENDED );
IDEBaseWindow* pTmp = aIDEWindowTable.First();
while ( pTmp && !nKey )
{
if ( pTmp == pWin )
nKey = aIDEWindowTable.GetCurKey();
pTmp = aIDEWindowTable.Next();
}
nKey = GetIDEWindowId( pWin );
DBG_ASSERT( nKey, "CreateBasWin: Kein Key- Fenster nicht gefunden!" );
}
if( nKey && xLib.is() && rDocument.isInVBAMode() )
......@@ -269,17 +263,23 @@ ModulWindow* BasicIDEShell::CreateBasWin( const ScriptDocument& rDocument, const
ModulWindow* BasicIDEShell::FindBasWin( const ScriptDocument& rDocument, const ::rtl::OUString& rLibName, const ::rtl::OUString& rModName, sal_Bool bCreateIfNotExist, sal_Bool bFindSuspended )
{
ModulWindow* pModWin = 0;
IDEBaseWindow* pWin = aIDEWindowTable.First();
while ( pWin && !pModWin )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin();
it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( ModulWindow ) ) )
{
if ( rLibName.isEmpty() )
{
pModWin = (ModulWindow*)pWin;
break;
}
else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && pWin->GetName() == rModName )
{
pModWin = (ModulWindow*)pWin;
break;
}
}
pWin = aIDEWindowTable.Next();
}
if ( !pModWin && bCreateIfNotExist )
pModWin = CreateBasWin( rDocument, rLibName, rModName );
......
......@@ -110,13 +110,7 @@ DialogWindow* BasicIDEShell::CreateDlgWin( const ScriptDocument& rDocument, cons
else
{
pWin->SetStatus( pWin->GetStatus() & ~BASWIN_SUSPENDED );
IDEBaseWindow* pTmp = aIDEWindowTable.First();
while ( pTmp && !nKey )
{
if ( pTmp == pWin )
nKey = aIDEWindowTable.GetCurKey();
pTmp = aIDEWindowTable.Next();
}
nKey = GetIDEWindowId( pWin );
DBG_ASSERT( nKey, "CreateDlgWin: Kein Key - Fenster nicht gefunden!" );
}
......@@ -136,17 +130,22 @@ DialogWindow* BasicIDEShell::CreateDlgWin( const ScriptDocument& rDocument, cons
DialogWindow* BasicIDEShell::FindDlgWin( const ScriptDocument& rDocument, const ::rtl::OUString& rLibName, const ::rtl::OUString& rDlgName, sal_Bool bCreateIfNotExist, sal_Bool bFindSuspended )
{
DialogWindow* pDlgWin = 0;
IDEBaseWindow* pWin = aIDEWindowTable.First();
while ( pWin && !pDlgWin )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( DialogWindow ) ) )
{
if ( rLibName.isEmpty() )
{
pDlgWin = (DialogWindow*)pWin;
break;
}
else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && pWin->GetName() == rDlgName )
{
pDlgWin = (DialogWindow*)pWin;
break;
}
}
pWin = aIDEWindowTable.Next();
}
if ( !pDlgWin && bCreateIfNotExist )
pDlgWin = CreateDlgWin( rDocument, rLibName, rDlgName );
......@@ -154,6 +153,14 @@ DialogWindow* BasicIDEShell::FindDlgWin( const ScriptDocument& rDocument, const
return pDlgWin;
}
sal_uInt16 BasicIDEShell::GetIDEWindowId(const IDEBaseWindow* pWin) const
{
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
if ( it->second == pWin )
return it->first;
return 0;
}
SdrView* BasicIDEShell::GetCurDlgView() const
{
if ( !pCurWin || !pCurWin->IsA( TYPE( DialogWindow ) ) )
......
......@@ -208,7 +208,7 @@ bool RenameModule( Window* pErrorParent, const ScriptDocument& rDocument, const
pModWin->SetSbModule( (SbModule*)pModWin->GetBasic()->FindModule( rNewName ) );
// update tabwriter
sal_uInt16 nId = (sal_uInt16)(pIDEShell->GetIDEWindowTable()).GetKey( pWin );
sal_uInt16 nId = pIDEShell->GetIDEWindowId( pWin );
DBG_ASSERT( nId, "No entry in Tabbar!" );
if ( nId )
{
......
......@@ -217,7 +217,7 @@ bool RenameDialog( Window* pErrorParent, const ScriptDocument& rDocument, const
((DialogWindow*)pWin)->UpdateBrowser();
// update tabwriter
sal_uInt16 nId = (sal_uInt16)(pIDEShell->GetIDEWindowTable()).GetKey( pWin );
sal_uInt16 nId = pIDEShell->GetIDEWindowId( pWin );
DBG_ASSERT( nId, "No entry in Tabbar!" );
if ( nId )
{
......@@ -338,13 +338,12 @@ void StopBasic()
if ( pShell )
{
IDEWindowTable& rWindows = pShell->GetIDEWindowTable();
IDEBaseWindow* pWin = rWindows.First();
while ( pWin )
for( IDEWindowTable::const_iterator it = rWindows.begin(); it != rWindows.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
// call BasicStopped manually because the Stop-Notify
// might not get through otherwise
pWin->BasicStopped();
pWin = rWindows.Next();
}
}
BasicIDE::BasicStopped();
......
......@@ -462,10 +462,10 @@ void BasicIDETabBar::Command( const CommandEvent& rCEvt )
if( pBasic )
{
IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
IDEBaseWindow* pWin = aIDEWindowTable.Get( GetCurPageId() );
if( pWin && pWin->ISA( ModulWindow ) )
IDEWindowTable::const_iterator it = aIDEWindowTable.find( GetCurPageId() );
if( it != aIDEWindowTable.end() && it->second->ISA( ModulWindow ) )
{
SbModule* pActiveModule = (SbModule*)pBasic->FindModule( pWin->GetName() );
SbModule* pActiveModule = (SbModule*)pBasic->FindModule( it->second->GetName() );
if( pActiveModule && ( pActiveModule->GetModuleType() == script::ModuleType::DOCUMENT ) )
{
aPopup.EnableItem( SID_BASICIDE_DELETECURRENT, sal_False );
......@@ -532,7 +532,7 @@ void BasicIDETabBar::Sort()
sal_uInt16 nId = GetPageId( i );
aTabBarSortHelper.nPageId = nId;
aTabBarSortHelper.aPageText = GetPageText( nId );
IDEBaseWindow* pWin = aIDEWindowTable.Get( nId );
IDEBaseWindow* pWin = aIDEWindowTable[ nId ];
if ( pWin->IsA( TYPE( ModulWindow ) ) )
{
......
......@@ -823,10 +823,10 @@ DialogWindow* FindDialogWindowForEditor( DlgEditor* pEditor )
{
BasicIDEShell* pIDEShell = BasicIDEGlobals::GetShell();
IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
IDEBaseWindow* pWin = aIDEWindowTable.First();
DialogWindow* pFoundDlgWin = NULL;
while( pWin )
for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
{
IDEBaseWindow* pWin = it->second;
if ( !pWin->IsSuspended() && pWin->IsA( TYPE( DialogWindow ) ) )
{
DialogWindow* pDlgWin = (DialogWindow*)pWin;
......@@ -837,7 +837,6 @@ DialogWindow* FindDialogWindowForEditor( DlgEditor* pEditor )
break;
}
}
pWin = aIDEWindowTable.Next();
}
return pFoundDlgWin;
}
......
......@@ -34,8 +34,8 @@
#include <com/sun/star/container/XContainerListener.hpp>
#include <sfx2/viewsh.hxx>
#include <svx/ifaceids.hxx>
#include <tools/table.hxx>
#include <vcl/scrbar.hxx>
#include <map>
class SfxViewFactory;
......@@ -60,9 +60,9 @@ class LocalizationMgr;
struct BasicIDEShell_Impl;
#if _SOLAR__PRIVATE
DECLARE_TABLE( IDEWindowTable, IDEBaseWindow* )
typedef std::map<sal_uInt16, IDEBaseWindow*> IDEWindowTable;
#else
typedef Table IDEWindowTable;
typedef std::map<sal_uInt16, void*> IDEWindowTable;
#endif
namespace BasicIDE
......@@ -186,6 +186,7 @@ public:
ScrollBarBox& GetScrollBarBox() { return aScrollBarBox; }
TabBar* GetTabBar() { return (TabBar*)pTabBar; }
IDEWindowTable& GetIDEWindowTable() { return aIDEWindowTable; }
sal_uInt16 GetIDEWindowId(const IDEBaseWindow* pWin) const;
SdrView* GetCurDlgView() const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment