summaryrefslogtreecommitdiff
path: root/basctl
diff options
context:
space:
mode:
Diffstat (limited to 'basctl')
-rw-r--r--basctl/inc/basidesh.hrc3
-rw-r--r--basctl/source/basicide/baside2.cxx31
-rw-r--r--basctl/source/basicide/baside2.hxx6
-rw-r--r--basctl/source/basicide/baside2b.cxx23
-rw-r--r--basctl/source/basicide/basides1.cxx30
-rw-r--r--basctl/source/basicide/basidesh.cxx2
-rw-r--r--basctl/source/basicide/bastypes.cxx8
-rw-r--r--basctl/source/basicide/objdlg.cxx9
-rw-r--r--basctl/source/basicide/objdlg.hxx4
-rw-r--r--basctl/source/basicide/objdlg.src3
-rw-r--r--basctl/source/inc/basidesh.hxx2
-rw-r--r--basctl/source/inc/bastypes.hxx1
12 files changed, 103 insertions, 19 deletions
diff --git a/basctl/inc/basidesh.hrc b/basctl/inc/basidesh.hrc
index 9e5ccb2b9398..dc1b43250357 100644
--- a/basctl/inc/basidesh.hrc
+++ b/basctl/inc/basidesh.hrc
@@ -31,6 +31,9 @@
#include <svx/svxids.hrc>
#endif
+// Width of Object Catalog pane in pixels
+#define OBJCAT_PANE_WIDTH 240
+
// Resource-ID's...
#ifndef _SVX_NOIDERESIDS
diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index 7adc866ca490..ce6a14043078 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -33,6 +33,7 @@
#include "brkdlg.hxx"
#include "iderdll.hxx"
#include "iderdll2.hxx"
+#include "objdlg.hxx"
#include "baside2.hrc"
@@ -1388,6 +1389,11 @@ void ModulWindow::SetLineNumberDisplay(bool b)
aXEditorWindow.SetLineNumberDisplay(b);
}
+void ModulWindow::SetObjectCatalogDisplay(bool b)
+{
+ aXEditorWindow.SetObjectCatalogDisplay(b);
+}
+
sal_Bool ModulWindow::IsPasteAllowed()
{
sal_Bool bPaste = sal_False;
@@ -1420,6 +1426,7 @@ ModulWindowLayout::ModulWindowLayout( Window* pParent ) :
aHSplitter( this, WinBits( WB_HSCROLL ) ),
aWatchWindow( this ),
aStackWindow( this ),
+ aObjectCatalog( this ),
bVSplitted(sal_False),
bHSplitted(sal_False),
m_pModulWindow(0),
@@ -1434,6 +1441,7 @@ ModulWindowLayout::ModulWindowLayout( Window* pParent ) :
aWatchWindow.Show();
aStackWindow.Show();
+ aObjectCatalog.Show();
Color aColor(GetSettings().GetStyleSettings().GetFieldTextColor());
m_aSyntaxColors[TT_UNKNOWN] = aColor;
@@ -1506,12 +1514,13 @@ void ModulWindowLayout::ArrangeWindows()
nVSplitPos = ( nVSplitPos < nMinPos ) ? 0 : ( aSz.Height() - SPLIT_HEIGHT );
Size aXEWSz;
- aXEWSz.Width() = aSz.Width();
+ aXEWSz.Width() = aSz.Width() - OBJCAT_PANE_WIDTH;
+
aXEWSz.Height() = nVSplitPos + 1;
if ( m_pModulWindow )
{
DBG_CHKOBJ( m_pModulWindow, ModulWindow, 0 );
- m_pModulWindow->SetPosSizePixel( Point( 0, 0 ), aXEWSz );
+ m_pModulWindow->SetPosSizePixel( Point( OBJCAT_PANE_WIDTH, 0 ), aXEWSz );
}
aVSplitter.SetDragRectPixel( Rectangle( Point( 0, 0 ), Size( aSz.Width(), aSz.Height() ) ) );
@@ -1536,6 +1545,11 @@ void ModulWindowLayout::ArrangeWindows()
if ( !aStackWindow.IsFloatingMode() )
aStackWindow.SetPosSizePixel( aSWPos, aSWSz );
+ Size aOCSz( OBJCAT_PANE_WIDTH, aSz.Height() - aSWSz.Height() - 3 );
+ Point aOCPos( 0, 0 );
+ if ( !aObjectCatalog.IsFloatingMode() )
+ aObjectCatalog.SetPosSizePixel( aOCPos, aOCSz );
+
if ( aStackWindow.IsFloatingMode() && aWatchWindow.IsFloatingMode() )
aHSplitter.Hide();
else
@@ -1592,6 +1606,15 @@ sal_Bool ModulWindowLayout::IsToBeDocked( DockingWindow* pDockingWindow, const P
return sal_True;
}
}
+ if ( pDockingWindow == &aObjectCatalog )
+ {
+ if ( ( aPosInMe.Y() > nVSplitPos ) && ( aPosInMe.X() > nHSplitPos ) )
+ {
+ rRect.SetSize( Size( aSz.Width() - nHSplitPos, aSz.Height() - nVSplitPos ) );
+ rRect.SetPos( OutputToScreenPixel( Point( nHSplitPos, nVSplitPos ) ) );
+ return sal_True;
+ }
+ }
}
return sal_False;
}
@@ -1606,6 +1629,10 @@ void ModulWindowLayout::DockaWindow( DockingWindow* pDockingWindow )
{
ArrangeWindows();
}
+ else if ( pDockingWindow == &aObjectCatalog )
+ {
+ ArrangeWindows();
+ }
#if OSL_DEBUG_LEVEL > 0
else
OSL_FAIL( "Wer will sich denn hier andocken ?" );
diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
index 0be4bb76d2b5..5dbc4be5dec6 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -54,6 +54,7 @@ class SvxSearchItem;
#include "breakpoint.hxx"
#include "linenumberwindow.hxx"
+#include "objdlg.hxx"
DBG_NAMEEX( ModulWindow )
@@ -291,6 +292,7 @@ private:
EditorWindow aEdtWindow;
ScrollBar aEWVScrollBar;
bool bLineNumberDisplay;
+ bool bObjectCatalogDisplay;
virtual void DataChanged(DataChangedEvent const & rDCEvt);
@@ -307,6 +309,7 @@ public:
ScrollBar& GetEWVScrollBar() { return aEWVScrollBar; }
void SetLineNumberDisplay(bool b);
+ void SetObjectCatalogDisplay(bool b);
};
@@ -368,6 +371,7 @@ public:
virtual sal_Bool IsReadOnly();
void SetLineNumberDisplay(bool);
+ void SetObjectCatalogDisplay(bool);
StarBASIC* GetBasic() { XModule(); return xBasic; }
@@ -437,6 +441,7 @@ private:
WatchWindow aWatchWindow;
StackWindow aStackWindow;
+ ObjectCatalog aObjectCatalog;
sal_Bool bVSplitted;
sal_Bool bHSplitted;
@@ -474,6 +479,7 @@ public:
WatchWindow& GetWatchWindow() { return aWatchWindow; }
StackWindow& GetStackWindow() { return aStackWindow; }
+ ObjectCatalog& GetObjectCatalog() { return aObjectCatalog; }
Image getImage(sal_uInt16 nId) const;
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index b7e394c91cb3..67c2a75e9fda 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -1658,7 +1658,8 @@ ComplexEditorWindow::ComplexEditorWindow( ModulWindow* pParent ) :
aLineNumberWindow( this, pParent ),
aEdtWindow( this ),
aEWVScrollBar( this, WB_VSCROLL | WB_DRAG ),
- bLineNumberDisplay(false)
+ bLineNumberDisplay(false),
+ bObjectCatalogDisplay(true)
{
aEdtWindow.SetModulWindow( pParent );
aBrkWindow.SetModulWindow( pParent );
@@ -1681,23 +1682,24 @@ void ComplexEditorWindow::Resize()
long nSBWidth = aEWVScrollBar.GetSizePixel().Width();
Size aBrkSz(nBrkWidth, aSz.Height());
- aBrkWindow.SetPosSizePixel( Point( DWBORDER, DWBORDER ), aBrkSz );
Size aLnSz(aLineNumberWindow.GetWidth(), aSz.Height());
- aLineNumberWindow.SetPosSizePixel(Point(DWBORDER+aBrkSz.Width() - 1, DWBORDER), aLnSz);
if(bLineNumberDisplay)
{
+ aBrkWindow.SetPosSizePixel( Point( DWBORDER, DWBORDER ), aBrkSz );
+ aLineNumberWindow.SetPosSizePixel(Point(DWBORDER + aBrkSz.Width() - 1, DWBORDER), aLnSz);
Size aEWSz(aSz.Width() - nBrkWidth - aLineNumberWindow.GetWidth() - nSBWidth + 2, aSz.Height());
- aEdtWindow.SetPosSizePixel( Point( DWBORDER+aBrkSz.Width()+aLnSz.Width()-1, DWBORDER ), aEWSz );
+ aEdtWindow.SetPosSizePixel( Point( DWBORDER + aBrkSz.Width() + aLnSz.Width() - 1, DWBORDER ), aEWSz );
}
else
{
- Size aEWSz(aSz.Width() - nBrkWidth - nSBWidth + 1, aSz.Height());
+ aBrkWindow.SetPosSizePixel( Point( DWBORDER, DWBORDER ), aBrkSz );
+ Size aEWSz(aSz.Width() - nBrkWidth - nSBWidth + 2, aSz.Height());
aEdtWindow.SetPosSizePixel(Point(DWBORDER + aBrkSz.Width() - 1, DWBORDER), aEWSz);
}
- aEWVScrollBar.SetPosSizePixel( Point( aOutSz.Width()-DWBORDER-nSBWidth, DWBORDER ), Size( nSBWidth, aSz.Height() ) );
+ aEWVScrollBar.SetPosSizePixel( Point( aOutSz.Width() - DWBORDER - nSBWidth, DWBORDER ), Size( nSBWidth, aSz.Height() ) );
}
IMPL_LINK( ComplexEditorWindow, ScrollHdl, ScrollBar *, pCurScrollBar )
@@ -1734,15 +1736,18 @@ void ComplexEditorWindow::DataChanged(DataChangedEvent const & rDCEvt)
void ComplexEditorWindow::SetLineNumberDisplay(bool b)
{
- if(b == bLineNumberDisplay)
- return;
+ bLineNumberDisplay = b;
+ Resize();
if(b)
aLineNumberWindow.Show();
else
aLineNumberWindow.Hide();
+}
- bLineNumberDisplay = b;
+void ComplexEditorWindow::SetObjectCatalogDisplay(bool b)
+{
+ bObjectCatalogDisplay = b;
Resize();
}
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 8ca700ba37bb..96f662ba0c56 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -432,10 +432,22 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
break;
case SID_BASICIDE_OBJCAT:
{
- if ( pObjectCatalog )
- ShowObjectDialog( sal_False, sal_True );
+ if ( bObjectCatalogDisplay )
+ {
+ pModulLayout->GetObjectCatalog().Hide();
+ dynamic_cast<ModulWindow*>(pCurWin)->SetPosPixel( Point( 0, 0 ) );
+ dynamic_cast<ModulWindow*>(pCurWin)->SetSizePixel( Size( pCurWin->GetSizePixel().Width() + OBJCAT_PANE_WIDTH, pCurWin->GetSizePixel().Height() ) );
+ dynamic_cast<ModulWindow*>(pCurWin)->SetObjectCatalogDisplay( false );
+ bObjectCatalogDisplay = sal_False;
+ }
else
- ShowObjectDialog( sal_True, sal_True );
+ {
+ pModulLayout->GetObjectCatalog().Show();
+ dynamic_cast<ModulWindow*>(pCurWin)->SetPosPixel( Point( OBJCAT_PANE_WIDTH, 0 ) );
+ dynamic_cast<ModulWindow*>(pCurWin)->SetSizePixel( Size( pCurWin->GetSizePixel().Width() - OBJCAT_PANE_WIDTH, pCurWin->GetSizePixel().Height() ) );
+ dynamic_cast<ModulWindow*>(pCurWin)->SetObjectCatalogDisplay( true );
+ bObjectCatalogDisplay = sal_True;
+ }
}
break;
case SID_BASICIDE_NAMECHANGEDONTAB:
@@ -870,6 +882,18 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
break;
case SID_BASICIDE_CHOOSEMACRO:
case SID_BASICIDE_OBJCAT:
+ {
+ // FIXME: hide Object Catalog icon from the toolbar,
+ // when window type is not macro editor.
+ if( pCurWin && !pCurWin->IsA( TYPE( ModulWindow ) ) )
+ {
+ rSet.DisableItem( nWh );
+ rSet.Put(SfxVisibilityItem(nWh, sal_False));
+ }
+ else
+ rSet.Put(SfxVisibilityItem(nWh, sal_True));
+ }
+ break;
case SID_BASICIDE_SHOWSBX:
case SID_BASICIDE_CREATEMACRO:
case SID_BASICIDE_EDITMACRO:
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index 8458625a9324..5aaf09cc4d22 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -206,6 +206,8 @@ void BasicIDEShell::Init()
pObjectCatalog = 0;
bCreatingWindow = sal_False;
+ bObjectCatalogDisplay = sal_True;
+
pTabBar = new BasicIDETabBar( &GetViewFrame()->GetWindow() );
pTabBar->SetSplitHdl( LINK( this, BasicIDEShell, TabBarSplitHdl ) );
bTabBarSplitted = sal_False;
diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx
index 7cffc4b2cea7..f7221f43f40d 100644
--- a/basctl/source/basicide/bastypes.cxx
+++ b/basctl/source/basicide/bastypes.cxx
@@ -263,7 +263,13 @@ BasicDockingWindow::BasicDockingWindow( Window* pParent ) :
{
}
-
+BasicDockingWindow::BasicDockingWindow( Window* pParent, const ResId& rResId ) :
+ DockingWindow( pParent, rResId )
+{
+ SetStyle( WB_BORDER | WB_3DLOOK | WB_DOCKABLE | WB_MOVEABLE |
+ WB_SIZEABLE | WB_ROLLABLE |
+ WB_DOCKABLE | WB_CLIPCHILDREN );
+}
sal_Bool BasicDockingWindow::Docking( const Point& rPos, Rectangle& rRect )
{
diff --git a/basctl/source/basicide/objdlg.cxx b/basctl/source/basicide/objdlg.cxx
index 14355bffa4d0..7e598de46754 100644
--- a/basctl/source/basicide/objdlg.cxx
+++ b/basctl/source/basicide/objdlg.cxx
@@ -44,7 +44,7 @@
#include <vcl/sound.hxx>
ObjectCatalog::ObjectCatalog( Window * pParent )
- :FloatingWindow( pParent, IDEResId( RID_BASICIDE_OBJCAT ) )
+ :BasicDockingWindow( pParent, IDEResId( RID_BASICIDE_OBJCAT ) )
,aMacroTreeList( this, IDEResId( RID_TLB_MACROS ) )
,aToolBox(this, IDEResId(RID_TB_TOOLBOX))
,aMacroDescr( this, IDEResId( RID_FT_MACRODESCR ) )
@@ -96,6 +96,13 @@ ObjectCatalog::~ObjectCatalog()
GetParent()->GetSystemWindow()->GetTaskPaneList()->RemoveWindow( this );
}
+void ObjectCatalog::Paint( const Rectangle& )
+{
+ String sOC = GetText();
+ long nPos = GetSizePixel().Width()/2-GetTextWidth(sOC)/2;
+ DrawText( Point( nPos, 10 ), String( sOC ) );
+}
+
void ObjectCatalog::Move()
{
BasicIDEGlobals::GetExtraData()->SetObjectCatalogPos( GetPosPixel() );
diff --git a/basctl/source/basicide/objdlg.hxx b/basctl/source/basicide/objdlg.hxx
index df77a64e360c..47e46518bbba 100644
--- a/basctl/source/basicide/objdlg.hxx
+++ b/basctl/source/basicide/objdlg.hxx
@@ -52,7 +52,7 @@ private:
ImageList m_aImagesNormal;
};
-class ObjectCatalog : public FloatingWindow
+class ObjectCatalog : public BasicDockingWindow
{
private:
BasicTreeListBox aMacroTreeList;
@@ -68,6 +68,7 @@ protected:
virtual void Move();
virtual sal_Bool Close();
virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
public:
ObjectCatalog( Window * pParent );
@@ -75,7 +76,6 @@ public:
void UpdateEntries();
void SetCurrentEntry( BasicEntryDescriptor& rDesc );
-
void SetCancelHdl( const Link& rLink ) { aCancelHdl = rLink; }
};
diff --git a/basctl/source/basicide/objdlg.src b/basctl/source/basicide/objdlg.src
index 845f49126257..03f740770b10 100644
--- a/basctl/source/basicide/objdlg.src
+++ b/basctl/source/basicide/objdlg.src
@@ -30,7 +30,7 @@
#define MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; };
-FloatingWindow RID_BASICIDE_OBJCAT
+DockingWindow RID_BASICIDE_OBJCAT
{
HelpID = "basctl:FloatingWindow:RID_BASICIDE_OBJCAT";
OutputSize = TRUE ;
@@ -43,6 +43,7 @@ FloatingWindow RID_BASICIDE_OBJCAT
Zoomable = TRUE ;
Hide = TRUE ;
ClipChildren = TRUE ;
+ Border = TRUE ;
Control RID_TLB_MACROS
{
HelpId = HID_BASICIDE_OBJECTCAT ;
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
index 2978eed81849..2162b7a21164 100644
--- a/basctl/source/inc/basidesh.hxx
+++ b/basctl/source/inc/basidesh.hxx
@@ -100,6 +100,8 @@ friend class LocalizationMgr;
friend class ContainerListenerImpl;
::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > m_xLibListener;
+ sal_Bool bObjectCatalogDisplay;
+
#if _SOLAR__PRIVATE
void Init();
void InitTabBar();
diff --git a/basctl/source/inc/bastypes.hxx b/basctl/source/inc/bastypes.hxx
index ac298cf19e59..2c1207b3a39c 100644
--- a/basctl/source/inc/bastypes.hxx
+++ b/basctl/source/inc/bastypes.hxx
@@ -78,6 +78,7 @@ protected:
public:
BasicDockingWindow( Window* pParent );
+ BasicDockingWindow( Window* pParent, const ResId& rResId );
};
// helper class for sorting TabBar