/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _BASTYPES_HXX #define _BASTYPES_HXX #include #include #include "scriptdocument.hxx" class ModulWindow; class SfxRequest; class SvTreeListBox; class SvLBoxEntry; class ScrollBar; class SbModule; class BasicManager; class SfxItemSet; #include #include #include #include #include #include #include #include #define LINE_SEP_CR 0x0D #define LINE_SEP 0x0A // Implementation: baside2b.cxx sal_Int32 searchEOL( const ::rtl::OUString& rStr, sal_Int32 fromIndex ); // Bedeutung von bToBeKilled: // Wenn in Reschedule-Schleife, darf ich das Fenster nicht zerstoeren. // Es muss erst aus der Reschedule-Schleife Fallen, um sich dann // selbst zu zerstoeren. // Geht so leider nicht: Destroying Window with living Child! struct BasicStatus { // sal_Bool bCompiled : 1; sal_Bool bIsRunning : 1; sal_Bool bError : 1; sal_Bool bIsInReschedule : 1; sal_uInt16 nBasicFlags; BasicStatus() { bIsRunning = sal_False; bError = sal_False; nBasicFlags = 0; bIsInReschedule = sal_False; } }; struct BreakPoint { sal_Bool bEnabled; sal_Bool bTemp; sal_uLong nLine; sal_uLong nStopAfter; sal_uLong nHitCount; BreakPoint( sal_uLong nL ) { nLine = nL; nStopAfter = 0; nHitCount = 0; bEnabled = sal_True; bTemp = sal_False; } }; class BasicDockingWindow : public DockingWindow { Rectangle aFloatingPosAndSize; protected: virtual sal_Bool Docking( const Point& rPos, Rectangle& rRect ); virtual void EndDocking( const Rectangle& rRect, sal_Bool bFloatMode ); virtual void ToggleFloatingMode(); virtual sal_Bool PrepareToggleFloatingMode(); virtual void StartDocking(); public: BasicDockingWindow( Window* pParent ); }; DECLARE_LIST( BreakPL, BreakPoint* ) class BreakPointList : public BreakPL { private: void operator =(BreakPointList); // not implemented public: BreakPointList(); BreakPointList(BreakPointList const & rList); ~BreakPointList(); void reset(); void transfer(BreakPointList & rList); void InsertSorted( BreakPoint* pBrk ); BreakPoint* FindBreakPoint( sal_uLong nLine ); void AdjustBreakPoints( sal_uLong nLine, sal_Bool bInserted ); void SetBreakPointsInBasic( SbModule* pModule ); void ResetHitCount(); }; // helper class for sorting TabBar class TabBarSortHelper { public: sal_uInt16 nPageId; String aPageText; bool operator<(const TabBarSortHelper& rComp) const { return (aPageText.CompareIgnoreCaseToAscii( rComp.aPageText ) == COMPARE_LESS); } }; class BasicIDETabBar : public TabBar { protected: virtual void MouseButtonDown( const MouseEvent& rMEvt ); virtual void Command( const CommandEvent& rCEvt ); virtual long AllowRenaming(); virtual void EndRenaming(); public: BasicIDETabBar( Window* pParent ); void Sort(); }; #define BASWIN_OK 0x00 #define BASWIN_RUNNINGBASIC 0x01 #define BASWIN_TOBEKILLED 0x02 #define BASWIN_SUSPENDED 0x04 #define BASWIN_INRESCHEDULE 0x08 class Printer; class BasicEntryDescriptor; namespace svl { class IUndoManager; } class IDEBaseWindow : public Window { private: ScrollBar* pShellHScrollBar; ScrollBar* pShellVScrollBar; DECL_LINK( ScrollHdl, ScrollBar * ); sal_uInt8 nStatus; ScriptDocument m_aDocument; String m_aLibName; String m_aName; protected: virtual void DoScroll( ScrollBar* pCurScrollBar ); public: TYPEINFO(); IDEBaseWindow( Window* pParent, const ScriptDocument& rDocument, String aLibName, String aName ); virtual ~IDEBaseWindow(); void Init(); virtual void DoInit(); virtual void Deactivating(); void GrabScrollBars( ScrollBar* pHScroll, ScrollBar* pVScroll ); ScrollBar* GetHScrollBar() const { return pShellHScrollBar; } ScrollBar* GetVScrollBar() const { return pShellVScrollBar; } virtual void ExecuteCommand( SfxRequest& rReq ); virtual void GetState( SfxItemSet& ); virtual long Notify( NotifyEvent& rNEvt ); virtual void StoreData(); virtual void UpdateData(); virtual sal_Bool CanClose(); // return number of pages to be printed virtual sal_Int32 countPages( Printer* pPrinter ) = 0; // print page virtual void printPage( sal_Int32 nPage, Printer* pPrinter ) = 0; virtual String GetTitle(); String CreateQualifiedName(); virtual BasicEntryDescriptor CreateEntryDescriptor() = 0; virtual sal_Bool IsModified(); virtual sal_Bool IsPasteAllowed(); virtual sal_Bool AllowUndo(); virtual void SetReadOnly( sal_Bool bReadOnly ); virtual sal_Bool IsReadOnly(); sal_uInt8 GetStatus() { return nStatus; } void SetStatus( sal_uInt8 n ) { nStatus = n; } void AddStatus( sal_uInt8 n ) { nStatus = nStatus | n; } void ClearStatus( sal_uInt8 n ) { nStatus = nStatus & ~n; } virtual Window* GetLayoutWindow(); virtual ::svl::IUndoManager* GetUndoManager(); virtual sal_uInt16 GetSearchOptions(); virtual void BasicStarted(); virtual void BasicStopped(); sal_Bool IsSuspended() const { return ( nStatus & BASWIN_SUSPENDED ) ? sal_True : sal_False; } const ScriptDocument& GetDocument() const { return m_aDocument; } void SetDocument( const ScriptDocument& rDocument ) { m_aDocument = rDocument; } bool IsDocument( const ScriptDocument& rDocument ) const { return rDocument == m_aDocument; } const String& GetLibName() const { return m_aLibName; } void SetLibName( const String& aLibName ) { m_aLibName = aLibName; } const String& GetName() const { return m_aName; } void SetName( const String& aName ) { m_aName = aName; } }; class LibInfoKey { private: ScriptDocument m_aDocument; String m_aLibName; public: LibInfoKey( const ScriptDocument& rDocument, const String& rLibName ); ~LibInfoKey(); LibInfoKey( const LibInfoKey& rKey ); LibInfoKey& operator=( const LibInfoKey& rKey ); bool operator==( const LibInfoKey& rKey ) const; const ScriptDocument& GetDocument() const { return m_aDocument; } const String& GetLibName() const { return m_aLibName; } }; class LibInfoItem { private: ScriptDocument m_aDocument; String m_aLibName; String m_aCurrentName; sal_uInt16 m_nCurrentType; public: LibInfoItem( const ScriptDocument& rDocument, const String& rLibName, const String& rCurrentName, sal_uInt16 nCurrentType ); ~LibInfoItem(); LibInfoItem( const LibInfoItem& rItem ); LibInfoItem& operator=( const LibInfoItem& rItem ); const ScriptDocument& GetDocument() const { return m_aDocument; } const String& GetLibName() const { return m_aLibName; } const String& GetCurrentName() const { return m_aCurrentName; } sal_uInt16 GetCurrentType() const { return m_nCurrentType; } }; class LibInfos { private: struct LibInfoKeyHash { size_t operator()( const LibInfoKey& rKey ) const { size_t nHash = (size_t) rKey.GetDocument().hashCode(); nHash += (size_t) ::rtl::OUString( rKey.GetLibName() ).hashCode(); return nHash; } }; typedef ::std::hash_map< LibInfoKey, LibInfoItem*, LibInfoKeyHash, ::std::equal_to< LibInfoKey > > LibInfoMap; LibInfoMap m_aLibInfoMap; public: LibInfos(); ~LibInfos(); void InsertInfo( LibInfoItem* pItem ); void RemoveInfoFor( const ScriptDocument& _rDocument ); LibInfoItem* GetInfo( const LibInfoKey& rKey ); }; void CutLines( ::rtl::OUString& rStr, sal_Int32 nStartLine, sal_Int32 nLines, sal_Bool bEraseTrailingEmptyLines = sal_False ); String CreateMgrAndLibStr( const String& rMgrName, const String& rLibName ); sal_uLong CalcLineCount( SvStream& rStream ); sal_Bool QueryReplaceMacro( const String& rName, Window* pParent = 0 ); sal_Bool QueryDelMacro( const String& rName, Window* pParent = 0 ); sal_Bool QueryDelDialog( const String& rName, Window* pParent = 0 ); sal_Bool QueryDelModule( const String& rName, Window* pParent = 0 ); sal_Bool QueryDelLib( const String& rName, sal_Bool bRef = sal_False, Window* pParent = 0 ); sal_Bool QueryPassword( const ::com::sun::star::uno::Reference< ::com::sun::star::script::XLibraryContainer >& xLibContainer, const String& rLibName, String& rPassword, sal_Bool bRepeat = sal_False, sal_Bool bNewTitle = sal_False ); class ModuleInfoHelper { ModuleInfoHelper(); ModuleInfoHelper(const ModuleInfoHelper&); ModuleInfoHelper& operator = (const ModuleInfoHelper&); public: static void getObjectName( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rLib, const String& rModName, String& rObjName ); static sal_Int32 getModuleType( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& rLib, const String& rModName ); }; #endif // _BASTYPES_HXX