[Libreoffice-commits] .: Branch 'feature/line-numbers-in-basicIDE' - 2 commits - basctl/sdi basctl/source basctl/uiconfig officecfg/registry sfx2/inc sfx2/sdi

August Sodora augsod at kemper.freedesktop.org
Wed Nov 16 12:56:33 PST 2011


 basctl/sdi/baside.sdi                                                 |    5 
 basctl/source/basicide/basides1.cxx                                   |   42 +++++++
 basctl/source/basicide/linenumberwindow.cxx                           |   58 ++++++++++
 basctl/source/basicide/linenumberwindow.hxx                           |   26 ++++
 basctl/source/inc/basidesh.hxx                                        |    1 
 basctl/uiconfig/basicide/menubar/menubar.xml                          |    1 
 officecfg/registry/data/org/openoffice/Office/UI/BasicIDECommands.xcu |    5 
 sfx2/inc/sfx2/sfxsids.hrc                                             |    3 
 sfx2/sdi/sfx.sdi                                                      |   24 ++++
 9 files changed, 164 insertions(+), 1 deletion(-)

New commits:
commit ea1ed6be3ec63e639db9e1ec310f9f923c1e132c
Author: August Sodora <augsod at gmail.com>
Date:   Wed Nov 16 14:50:26 2011 -0500

    Preparing to add option for line numbers in the basic ide

diff --git a/basctl/sdi/baside.sdi b/basctl/sdi/baside.sdi
index f40e239..d297663 100644
--- a/basctl/sdi/baside.sdi
+++ b/basctl/sdi/baside.sdi
@@ -39,6 +39,11 @@ shell BasicIDEShell
     // ========================================================
     // Current, je nach aktuellem Fenster:
     // ========================================================
+    SID_SHOWLINES
+    [
+        StateMethod = GetState;
+        ExecMethod  = ExecuteCurrent;
+    ]
     SID_BASICIDE_HIDECURPAGE
     [
         ExecMethod  = ExecuteCurrent;
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index 6a5cd13..c10ff6d 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -34,6 +34,7 @@
 #include <basic/sbx.hxx>
 #define _SVSTDARR_STRINGS
 #include <svl/svstdarr.hxx>
+#include <svl/visitem.hxx>
 #include <ide_pch.hxx>
 
 #define _SOLAR__PRIVATE 1
@@ -83,6 +84,19 @@ using namespace ::com::sun::star::frame;
 class SvxSearchItem;
 
 
+// until we have some configuration lets just keep
+// persist this value for the process lifetime
+bool& lcl_GetSourceLinesEnabledValue()
+{
+    static bool bSourceLinesEnabled(false);
+    return bSourceLinesEnabled;
+}
+
+bool  BasicIDEShell::SourceLinesDisplayed()
+{
+    return lcl_GetSourceLinesEnabledValue();
+}
+
 void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
 {
     if ( !pCurWin )
@@ -90,6 +104,20 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
 
     switch ( rReq.GetSlot() )
     {
+        case SID_SHOWLINES:
+        {
+            SFX_REQUEST_ARG(rReq, pItem, SfxBoolItem, rReq.GetSlot(), sal_False);
+            bool bValue = false;
+            if ( pItem )
+                bValue = pItem->GetValue();
+            lcl_GetSourceLinesEnabledValue() = bValue;
+            if ( pCurWin && pCurWin->IsA( TYPE( ModulWindow ) ) )
+            {
+//                (ModuleWindow*)(pCurWin)->SetLineNumberDisplay( bValue );
+            }
+        }
+        break;
+
         case SID_BASICIDE_HIDECURPAGE:
         {
             pCurWin->StoreData();
@@ -779,6 +807,20 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
     {
         switch ( nWh )
         {
+            case SID_SHOWLINES:
+            {
+                // if this is not a module window hide the
+                // setting, doesn't make sense for example if the
+                // dialog editor is open
+                if( pCurWin && !pCurWin->IsA( TYPE( ModulWindow ) ) )
+                {
+                    rSet.DisableItem( nWh );
+                    rSet.Put(SfxVisibilityItem(nWh, sal_False));
+                }
+                else
+                    rSet.Put( SfxBoolItem( nWh, lcl_GetSourceLinesEnabledValue() ) );
+                break;
+            }
             case SID_DOCINFO:
             {
                 rSet.DisableItem( nWh );
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
index 15fd8f2..9d66a6d 100644
--- a/basctl/source/inc/basidesh.hxx
+++ b/basctl/source/inc/basidesh.hxx
@@ -227,6 +227,7 @@ public:
 
     virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
                         GetCurrentDocument() const;
+    bool SourceLinesDisplayed();
 
 };
 
diff --git a/basctl/uiconfig/basicide/menubar/menubar.xml b/basctl/uiconfig/basicide/menubar/menubar.xml
index 4583ca2..fa99e98 100644
--- a/basctl/uiconfig/basicide/menubar/menubar.xml
+++ b/basctl/uiconfig/basicide/menubar/menubar.xml
@@ -48,6 +48,7 @@
             <menu:menuitem menu:id=".uno:AvailableToolbars"/>
             <menu:menuitem menu:id=".uno:StatusBarVisible"/>
             <menu:menuitem menu:id=".uno:ShowImeStatusWindow"/>
+            <menu:menuitem menu:id=".uno:ShowLines"/>
             <menu:menuseparator/>
             <menu:menuitem menu:id=".uno:FullScreen"/>
         </menu:menupopup>
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/BasicIDECommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/BasicIDECommands.xcu
index 6750028..c6e7aa2 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/BasicIDECommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/BasicIDECommands.xcu
@@ -3,6 +3,11 @@
 <oor:component-data oor:name="BasicIDECommands" oor:package="org.openoffice.Office.UI" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <node oor:name="UserInterface">
         <node oor:name="Commands">
+             <node oor:name=".uno:ShowLines" oor:op="replace">
+                 <prop oor:name="Label" oor:type="xs:string">
+                     <value xml:lang="en-US">Display Source Line Numbers</value>
+                 </prop>
+            </node>
         </node>
         <node oor:name="Popups">
         </node>
diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc
index baf4b56..3a5e375 100755
--- a/sfx2/inc/sfx2/sfxsids.hrc
+++ b/sfx2/inc/sfx2/sfxsids.hrc
@@ -314,7 +314,8 @@
 #define SID_SUGGESTEDSAVEASNAME             (SID_SFX_START + 1721)
 #define SID_ENCRYPTIONDATA                  (SID_SFX_START + 1722)
 #define SID_PASSWORDINTERACTION             (SID_SFX_START + 1723)
-#define SID_SFX_free_START                  (SID_SFX_START + 1724)
+#define SID_SHOWLINES                       (SID_SFX_START + 1724)
+#define SID_SFX_free_START                  (SID_SFX_START + 1725)
 #define SID_SFX_free_END                    (SID_SFX_START + 3999)
 
 #define SID_OPEN_NEW_VIEW                   (SID_SFX_START + 520)
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index b5b432f..bd165e7 100755
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -3593,6 +3593,30 @@ SfxBoolItem ReccomendReadonly SID_RECOMMENDREADONLY
     GroupId = ;
 ]
 
+//----------------------------------------------------FALSE
+SfxBoolItem ShowLines SID_SHOWLINES
+
+[
+    /* flags: */
+    AutoUpdate = TRUE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = TRUE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_MACRO;
+]
 
 //--------------------------------------------------------------------------
 SfxVoidItem RunMacro SID_RUNMACRO
commit 2a44bd05b1f7bd36bec8b20c85d8fee6458c6c1b
Author: August Sodora <augsod at gmail.com>
Date:   Wed Nov 16 14:48:49 2011 -0500

    Added missing files

diff --git a/basctl/source/basicide/linenumberwindow.cxx b/basctl/source/basicide/linenumberwindow.cxx
new file mode 100644
index 0000000..5168da1
--- /dev/null
+++ b/basctl/source/basicide/linenumberwindow.cxx
@@ -0,0 +1,58 @@
+#include "baside2.hxx"
+#include "linenumberwindow.hxx"
+
+#include <svtools/xtextedt.hxx>
+#include <svtools/textview.hxx>
+
+LineNumberWindow::LineNumberWindow( Window* pParent, ModulWindow* pModulWin ) :
+  Window( pParent, WB_BORDER ),
+  pModulWindow(pModulWin),
+  nWidth(1)
+{
+  SetBackground(Wallpaper(GetSettings().GetStyleSettings().GetFieldColor()));
+}
+
+LineNumberWindow::~LineNumberWindow() { }
+
+void LineNumberWindow::Paint( const Rectangle& )
+{
+  ExtTextEngine* txtEngine = pModulWindow->GetEditEngine();
+  if(!txtEngine)
+    return;
+
+  TextView* txtView = pModulWindow->GetEditView();
+  if(!txtView)
+    return;
+
+  GetParent()->Resize();
+
+  ulong windowHeight = GetOutputSize().Height();
+  ulong startY = txtView->GetStartDocPos().Y();
+  ulong nLineHeight = GetTextHeight();
+
+  ulong nStartLine = startY / nLineHeight + 1;
+  ulong nEndLine = (startY + windowHeight) / nLineHeight + 1;
+
+  if(txtEngine->GetParagraphCount() + 1 < nEndLine)
+    nEndLine = txtEngine->GetParagraphCount() + 1;
+
+  nWidth = String::CreateFromInt64(nEndLine).Len() * 10;
+
+  for(ulong i = nStartLine, y = 0; i < nEndLine; ++i, y += nLineHeight)
+    DrawText(Point(0, y), String::CreateFromInt64(i));
+}
+
+void LineNumberWindow::DataChanged(DataChangedEvent const & rDCEvt)
+{
+  Window::DataChanged(rDCEvt);
+  if (rDCEvt.GetType() == DATACHANGED_SETTINGS
+      && (rDCEvt.GetFlags() & SETTINGS_STYLE) != 0)
+  {
+    Color aColor(GetSettings().GetStyleSettings().GetFieldColor());
+    if (aColor != rDCEvt.GetOldSettings()->GetStyleSettings().GetFieldColor())
+    {
+      SetBackground(Wallpaper(aColor));
+      Invalidate();
+    }
+  }
+}
diff --git a/basctl/source/basicide/linenumberwindow.hxx b/basctl/source/basicide/linenumberwindow.hxx
new file mode 100644
index 0000000..885ea14
--- /dev/null
+++ b/basctl/source/basicide/linenumberwindow.hxx
@@ -0,0 +1,26 @@
+#ifndef BASICIDE_LINENUMBERWINDOW_HXX
+#define BASICIDE_LINENUMBERWINDOW_HXX
+
+#include <vcl/window.hxx>
+
+class ModulWindow;
+
+class LineNumberWindow : public Window
+{
+private:
+  ModulWindow* pModulWindow;
+  ulong nWidth;
+
+  virtual void DataChanged(DataChangedEvent const & rDCEvt);
+
+protected:
+  virtual void Paint( const Rectangle& );
+
+public:
+  LineNumberWindow( Window* pParent, ModulWindow* pModulWin );
+  ~LineNumberWindow();
+
+  ulong GetWidth() { return (nWidth < 20 ? 20 : nWidth); }
+};
+
+#endif // BASICIDE_LINENUMBERWINDOW_HXX


More information about the Libreoffice-commits mailing list