diff options
author | sb <sb@openoffice.org> | 2010-11-19 11:35:41 +0100 |
---|---|---|
committer | sb <sb@openoffice.org> | 2010-11-19 11:35:41 +0100 |
commit | ee0b907a8e54d6ba80551a24415d173d4d5b2db1 (patch) | |
tree | e69f3b3e38aa3a0d1f10e9cedbaf1e59dba205c9 | |
parent | 10ab6463a189a22b6059a2fafeed414ef50dbf1c (diff) | |
parent | 94753953df87e4d761ff9fa30333dc02994f6d3f (diff) |
sb131: merged in re/DEV300_next towards DEV300_m94
355 files changed, 14763 insertions, 11587 deletions
diff --git a/avmedia/inc/helpids.hrc b/avmedia/inc/helpids.hrc index 2d7ccd764762..4b1d2e04d628 100644 --- a/avmedia/inc/helpids.hrc +++ b/avmedia/inc/helpids.hrc @@ -28,19 +28,17 @@ #ifndef _AVMEDIA_HELPIDS_HRC #define _AVMEDIA_HELPIDS_HRC -#include <svl/solar.hrc> - -#define HID_AVMEDIA_TOOLBOXITEM_PLAY (HID_AVMEDIA_START+0) -#define HID_AVMEDIA_TOOLBOXITEM_PAUSE (HID_AVMEDIA_START+1) -#define HID_AVMEDIA_TOOLBOXITEM_STOP (HID_AVMEDIA_START+2) -#define HID_AVMEDIA_TOOLBOXITEM_MUTE (HID_AVMEDIA_START+3) -#define HID_AVMEDIA_TOOLBOXITEM_LOOP (HID_AVMEDIA_START+4) -#define HID_AVMEDIA_TOOLBOXITEM_OPEN (HID_AVMEDIA_START+5) -#define HID_AVMEDIA_TOOLBOXITEM_INSERT (HID_AVMEDIA_START+6) -#define HID_AVMEDIA_ZOOMLISTBOX (HID_AVMEDIA_START+7) -#define HID_AVMEDIA_TIMESLIDER (HID_AVMEDIA_START+8) -#define HID_AVMEDIA_TIMEEDIT (HID_AVMEDIA_START+9) -#define HID_AVMEDIA_VOLUMESLIDER (HID_AVMEDIA_START+10) -#define HID_AVMEDIA_PLAYERWINDOW (HID_AVMEDIA_START+11) +#define HID_AVMEDIA_TOOLBOXITEM_PLAY "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_PLAY" +#define HID_AVMEDIA_TOOLBOXITEM_PAUSE "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_PAUSE" +#define HID_AVMEDIA_TOOLBOXITEM_STOP "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_STOP" +#define HID_AVMEDIA_TOOLBOXITEM_MUTE "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_MUTE" +#define HID_AVMEDIA_TOOLBOXITEM_LOOP "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_LOOP" +#define HID_AVMEDIA_TOOLBOXITEM_OPEN "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_OPEN" +#define HID_AVMEDIA_TOOLBOXITEM_INSERT "AVMEDIA_HID_AVMEDIA_TOOLBOXITEM_INSERT" +#define HID_AVMEDIA_ZOOMLISTBOX "AVMEDIA_HID_AVMEDIA_ZOOMLISTBOX" +#define HID_AVMEDIA_TIMESLIDER "AVMEDIA_HID_AVMEDIA_TIMESLIDER" +#define HID_AVMEDIA_TIMEEDIT "AVMEDIA_HID_AVMEDIA_TIMEEDIT" +#define HID_AVMEDIA_VOLUMESLIDER "AVMEDIA_HID_AVMEDIA_VOLUMESLIDER" +#define HID_AVMEDIA_PLAYERWINDOW "AVMEDIA_HID_AVMEDIA_PLAYERWINDOW" #endif // _AVMEDIA_HELPIDS_HRC diff --git a/basic/inc/basic/sbmod.hxx b/basic/inc/basic/sbmod.hxx index abb482f7bfe5..0bc764e863fe 100644 --- a/basic/inc/basic/sbmod.hxx +++ b/basic/inc/basic/sbmod.hxx @@ -35,10 +35,12 @@ #include <rtl/ustring.hxx> #include <vector> +#include <deque> + class SbMethod; class SbProperty; class SbiRuntime; -class SbiBreakpoints; +typedef std::deque< USHORT > SbiBreakpoints; class SbiImage; class SbProcedureProperty; class SbIfaceMapperMethod; @@ -115,8 +117,8 @@ public: const SbxObject* FindType( String aTypeName ) const; virtual BOOL IsBreakable( USHORT nLine ) const; - virtual USHORT GetBPCount() const; - virtual USHORT GetBP( USHORT n ) const; + virtual size_t GetBPCount() const; + virtual USHORT GetBP( size_t n ) const; virtual BOOL IsBP( USHORT nLine ) const; virtual BOOL SetBP( USHORT nLine ); virtual BOOL ClearBP( USHORT nLine ); diff --git a/basic/inc/basic/sbstar.hxx b/basic/inc/basic/sbstar.hxx index a234dc206ec7..7d189c363364 100644 --- a/basic/inc/basic/sbstar.hxx +++ b/basic/inc/basic/sbstar.hxx @@ -44,7 +44,6 @@ class SbiInstance; // runtime instance class SbiRuntime; // currently running procedure class SbiImage; // compiled image class BasicLibInfo; // info block for basic manager -class SbiBreakpoints; class SbTextPortions; class SbMethod; class BasicManager; diff --git a/basic/inc/basic/ttstrhlp.hxx b/basic/inc/basic/ttstrhlp.hxx index 1827d013c492..06f4939d61c0 100644 --- a/basic/inc/basic/ttstrhlp.hxx +++ b/basic/inc/basic/ttstrhlp.hxx @@ -31,6 +31,8 @@ #define CByteString( constAsciiStr ) ByteString( RTL_CONSTASCII_STRINGPARAM ( constAsciiStr ) ) #define CUniString( constAsciiStr ) UniString( RTL_CONSTASCII_USTRINGPARAM ( constAsciiStr ) ) +#define Str2Id( Str ) rtl::OUStringToOString( Str, RTL_TEXTENCODING_ASCII_US ) +#define Id2Str( Id ) String( rtl::OStringToOUString( Id, RTL_TEXTENCODING_ASCII_US ) ) #define StartKenn CUniString("%") #define EndKenn CUniString("%") @@ -42,7 +44,7 @@ #define TabKenn ( StartKenn.AppendAscii("Tab") ) #define MakeStringParam(Type,aText) ( Type.AppendAscii("=").Append( aText ).Append( EndKenn ) ) #define MakeStringNumber(Type,nNumber) MakeStringParam (Type, UniString::CreateFromInt32(nNumber)) -#define UIdString(aID) MakeStringParam(UIdKenn,aID.GetText()) +#define UIdString(aID) MakeStringParam(UIdKenn,String(rtl::OStringToOUString( aID, RTL_TEXTENCODING_ASCII_US ))) #define MethodString(nNumber) MakeStringNumber(MethodKenn,nNumber) #define TypeString(nNumber) MakeStringNumber(TypeKenn,nNumber) #define SlotString(nNumber) MakeStringNumber(SlotKenn,nNumber) diff --git a/basic/source/app/basic.src b/basic/source/app/basic.src index 0713fd859f56..7f83ba8db2ba 100644 --- a/basic/source/app/basic.src +++ b/basic/source/app/basic.src @@ -29,6 +29,7 @@ #include "resids.hrc" ModalDialog RID_CALLDLG { + HelpID = "basic:ModalDialog:RID_CALLDLG"; PosSize = MAP_SYSFONT (18,18,142,142); SVLook = TRUE; MOVEABLE = TRUE; @@ -43,11 +44,13 @@ ModalDialog RID_CALLDLG { PosSize = MAP_SYSFONT (10,70,120,8); }; Edit RID_RETVAL { + HelpID = "basic:Edit:RID_CALLDLG:RID_RETVAL"; PosSize = MAP_SYSFONT (10,85,120,12); Border = TRUE; TabStop = TRUE; }; ListBox RID_PARAMS { + HelpID = "basic:ListBox:RID_CALLDLG:RID_PARAMS"; PosSize = MAP_SYSFONT (10,25,120,40); TabStop = TRUE; Border = TRUE; @@ -61,6 +64,7 @@ ModalDialog RID_CALLDLG { }; ModalDialog IDD_ABOUT_DIALOG { + HelpID = "basic:ModalDialog:IDD_ABOUT_DIALOG"; Pos = MAP_APPFONT( 58, 17 ); Size = MAP_APPFONT( 155, 106 ); SVLook = TRUE; @@ -107,6 +111,7 @@ ModalDialog IDD_ABOUT_DIALOG { }; ModalDialog IDD_TT_ABOUT_DIALOG { + HelpID = "basic:ModalDialog:IDD_TT_ABOUT_DIALOG"; Pos = MAP_APPFONT( 58, 17 ); Size = MAP_APPFONT( 120, 81 ); SVLook = TRUE; @@ -138,6 +143,7 @@ ModalDialog IDD_TT_ABOUT_DIALOG { }; ModalDialog IDD_FIND_DIALOG { + HelpID = "basic:ModalDialog:IDD_FIND_DIALOG"; Pos = MAP_APPFONT( 69, 30 ); Size = MAP_APPFONT( 185, 70 ); SVLook = TRUE; @@ -150,6 +156,7 @@ ModalDialog IDD_FIND_DIALOG { TEXT[ en-US ] = "~Text"; }; Edit RID_FIND { + HelpID = "basic:Edit:IDD_FIND_DIALOG:RID_FIND"; BORDER = TRUE; Pos = MAP_APPFONT( 40, 8 ); Size = MAP_APPFONT( 135, 12 ); @@ -172,6 +179,7 @@ ModalDialog IDD_FIND_DIALOG { }; ModalDialog IDD_REPLACE_DIALOG { + HelpID = "basic:ModalDialog:IDD_REPLACE_DIALOG"; Pos = MAP_APPFONT( 69, 30 ); Size = MAP_APPFONT( 185, 88 ); SVLook = TRUE; @@ -188,12 +196,14 @@ ModalDialog IDD_REPLACE_DIALOG { TEXT[ en-US ] = "~Replace by"; }; Edit RID_FIND { + HelpID = "basic:Edit:IDD_REPLACE_DIALOG:RID_FIND"; BORDER = TRUE; Pos = MAP_APPFONT( 65, 8 ); Size = MAP_APPFONT( 110, 12 ); TABSTOP = TRUE; }; Edit RID_REPLACE { + HelpID = "basic:Edit:IDD_REPLACE_DIALOG:RID_REPLACE"; BORDER = TRUE; Pos = MAP_APPFONT( 65, 28 ); Size = MAP_APPFONT( 110, 12 ); @@ -718,6 +728,7 @@ Menu RID_HELP { }; }; ModelessDialog IDD_PRINT_DIALOG { + HelpID = "basic:ModelessDialog:IDD_PRINT_DIALOG"; Pos = MAP_APPFONT( 83, 42 ); Size = MAP_APPFONT( 171, 94 ); MOVEABLE = TRUE; @@ -784,6 +795,7 @@ TabDialog IDD_OPTIONS_DLG TabPage RID_TP_GENERIC { + HelpID = "basic:TabPage:RID_TP_GENERIC"; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT( 244, 100 ); @@ -793,6 +805,7 @@ TabPage RID_TP_GENERIC { Text[ en-US ] = "Area"; }; ComboBox RID_CB_AREA { + HelpID = "basic:ComboBox:RID_TP_GENERIC:RID_CB_AREA"; HScroll = TRUE; VScroll = TRUE; AutoHScroll = TRUE; @@ -803,12 +816,14 @@ TabPage RID_TP_GENERIC { DropDown = TRUE; }; PushButton RID_PB_NEW_AREA { + HelpID = "basic:PushButton:RID_TP_GENERIC:RID_PB_NEW_AREA"; Pos = MAP_APPFONT( 144, 12 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; Text[ en-US ] = "New"; }; PushButton RID_PD_DEL_AREA { + HelpID = "basic:PushButton:RID_TP_GENERIC:RID_PD_DEL_AREA"; Pos = MAP_APPFONT( 188, 12 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -820,6 +835,7 @@ TabPage RID_TP_GENERIC { Text[ en-US ] = "Setting"; }; ComboBox RID_CB_VALUE { + HelpID = "basic:ComboBox:RID_TP_GENERIC:RID_CB_VALUE"; HScroll = TRUE; VScroll = TRUE; AutoHScroll = TRUE; @@ -829,6 +845,7 @@ TabPage RID_TP_GENERIC { TabStop = TRUE; }; PushButton RID_PB_SELECT_FILE { + HelpID = "basic:PushButton:RID_TP_GENERIC:RID_PB_SELECT_FILE"; Pos = MAP_APPFONT( 188, 48 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -837,12 +854,14 @@ TabPage RID_TP_GENERIC { Hide = TRUE; }; PushButton RID_PB_NEW_VALUE { + HelpID = "basic:PushButton:RID_TP_GENERIC:RID_PB_NEW_VALUE"; Pos = MAP_APPFONT( 188, 48 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; Text[ en-US ] = "New"; }; PushButton RID_PB_DEL_VALUE { + HelpID = "basic:PushButton:RID_TP_GENERIC:RID_PB_DEL_VALUE"; Pos = MAP_APPFONT( 188, 64 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -852,6 +871,7 @@ TabPage RID_TP_GENERIC { TabPage RID_TP_PROFILE { + HelpID = "basic:TabPage:RID_TP_PROFILE"; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT( 244, 100 ); @@ -861,6 +881,7 @@ TabPage RID_TP_PROFILE { Text[ en-US ] = "Profile"; }; ComboBox RID_CB_PROFILE { + HelpID = "basic:ComboBox:RID_TP_PROFILE:RID_CB_PROFILE"; HScroll = TRUE; VScroll = TRUE; AutoHScroll = TRUE; @@ -871,12 +892,14 @@ TabPage RID_TP_PROFILE { DropDown = TRUE; }; PushButton RID_PB_NEW_PROFILE { + HelpID = "basic:PushButton:RID_TP_PROFILE:RID_PB_NEW_PROFILE"; Pos = MAP_APPFONT( 144, 2 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; Text[ en-US ] = "New"; }; PushButton RID_PD_DEL_PROFILE { + HelpID = "basic:PushButton:RID_TP_PROFILE:RID_PD_DEL_PROFILE"; Pos = MAP_APPFONT( 188, 2 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -898,6 +921,7 @@ TabPage RID_TP_PROFILE { Text[ en-US ] = "Base directory"; }; CheckBox HID_CHECK { + HelpID = "basic:CheckBox:RID_TP_PROFILE:HID_CHECK"; Pos = MAP_APPFONT( 7, 58 ); Size = MAP_APPFONT( 86, 12 ); Text[ en-US ] = "Default HID directory"; @@ -905,52 +929,61 @@ TabPage RID_TP_PROFILE { Hide = FALSE; }; Edit LOG_NAME { + HelpID = "basic:Edit:RID_TP_PROFILE:LOG_NAME"; Border = TRUE; Pos = MAP_APPFONT( 97, 26 ); Size = MAP_APPFONT( 116, 12 ); TabStop = TRUE; }; Edit BASIS_NAME { + HelpID = "basic:Edit:RID_TP_PROFILE:BASIS_NAME"; Border = TRUE; Pos = MAP_APPFONT( 97, 42 ); Size = MAP_APPFONT( 116, 12 ); TabStop = TRUE; }; Edit HID_NAME { + HelpID = "basic:Edit:RID_TP_PROFILE:HID_NAME"; Border = TRUE; Pos = MAP_APPFONT( 97, 58 ); Size = MAP_APPFONT( 116, 12 ); TabStop = TRUE; }; PushButton LOG_SET { + HelpID = "basic:PushButton:RID_TP_PROFILE:LOG_SET"; Pos = MAP_APPFONT( 217, 26 ); Size = MAP_APPFONT( 12, 12 ); TabStop = TRUE; Text[ en-US ] = "..."; }; PushButton BASIS_SET { + HelpID = "basic:PushButton:RID_TP_PROFILE:BASIS_SET"; Pos = MAP_APPFONT( 217, 42 ); Size = MAP_APPFONT( 12, 12 ); TabStop = TRUE; Text[ en-US ] = "..."; }; PushButton HID_SET { + HelpID = "basic:PushButton:RID_TP_PROFILE:HID_SET"; Pos = MAP_APPFONT( 217, 58 ); Size = MAP_APPFONT( 12, 12 ); TabStop = TRUE; Text[ en-US ] = "..."; }; CheckBox CB_AUTORELOAD { + HelpID = "basic:CheckBox:RID_TP_PROFILE:CB_AUTORELOAD"; Pos = MAP_APPFONT( 7, 74 ); Size = MAP_APPFONT( 115, 12 ); Text[ en-US ] = "AutoReload"; }; CheckBox CB_AUTOSAVE { + HelpID = "basic:CheckBox:RID_TP_PROFILE:CB_AUTOSAVE"; Pos = MAP_APPFONT( 7, 87 ); Size = MAP_APPFONT( 115, 12 ); Text[ en-US ] = "Save before execute"; }; CheckBox CB_STOPONSYNTAXERRORS { + HelpID = "basic:CheckBox:RID_TP_PROFILE:CB_STOPONSYNTAXERRORS"; Pos = MAP_APPFONT( 132, 74 ); Size = MAP_APPFONT( 115, 12 ); Text[ en-US ] = "Stop on Syntax Errors"; @@ -958,6 +991,7 @@ TabPage RID_TP_PROFILE { }; TabPage RID_TP_CRASH { + HelpID = "basic:TabPage:RID_TP_CRASH"; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT( 244, 100 ); @@ -967,6 +1001,7 @@ TabPage RID_TP_CRASH { Text[ en-US ] = "Crashreport"; }; CheckBox CB_USEPROXY { + HelpID = "basic:CheckBox:RID_TP_CRASH:CB_USEPROXY"; Pos = MAP_APPFONT( 8, 12 ); Size = MAP_APPFONT( 120, 12 ); Text[ en-US ] = "Use Proxy"; @@ -977,6 +1012,7 @@ TabPage RID_TP_CRASH { Text[ en-US ] = "Host"; }; Edit ED_CRHOST { + HelpID = "basic:Edit:RID_TP_CRASH:ED_CRHOST"; Border = TRUE; Pos = MAP_APPFONT( 43+12, 12+13 ); Size = MAP_APPFONT( 80, 12 ); @@ -988,6 +1024,7 @@ TabPage RID_TP_CRASH { Text[ en-US ] = "Port"; }; NumericField NF_CRPORT { + HelpID = "basic:NumericField:RID_TP_CRASH:NF_CRPORT"; Border = TRUE; Pos = MAP_APPFONT( 43+12, 12+13+16 ); Size = MAP_APPFONT( 40, 12 ); @@ -1001,6 +1038,7 @@ TabPage RID_TP_CRASH { Last = 0xffff; }; CheckBox CB_ALLOWCONTACT { + HelpID = "basic:CheckBox:RID_TP_CRASH:CB_ALLOWCONTACT"; Pos = MAP_APPFONT( 8, 12+13+16+16 ); Size = MAP_APPFONT( 120, 12 ); Text[ en-US ] = "Allow Contact"; @@ -1011,6 +1049,7 @@ TabPage RID_TP_CRASH { Text[ en-US ] = "EMail"; }; Edit ED_EMAIL { + HelpID = "basic:Edit:RID_TP_CRASH:ED_EMAIL"; Border = TRUE; Pos = MAP_APPFONT( 43+12, 12+13+16+16+13 ); Size = MAP_APPFONT( 80, 12 ); @@ -1020,6 +1059,7 @@ TabPage RID_TP_CRASH { TabPage RID_TP_MISC { + HelpID = "basic:TabPage:RID_TP_MISC"; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT( 244, 100 ); @@ -1034,6 +1074,7 @@ TabPage RID_TP_MISC { Text[ en-US ] = "Host"; }; Edit ED_HOST { + HelpID = "basic:Edit:RID_TP_MISC:ED_HOST"; Border = TRUE; Pos = MAP_APPFONT( 43, 12); Size = MAP_APPFONT( 80, 12 ); @@ -1045,6 +1086,7 @@ TabPage RID_TP_MISC { Text[ en-US ] = "Testtool Port"; }; NumericField NF_TTPORT { + HelpID = "basic:NumericField:RID_TP_MISC:NF_TTPORT"; Border = TRUE; Pos = MAP_APPFONT( 191, 12); Size = MAP_APPFONT( 40, 12 ); @@ -1063,6 +1105,7 @@ TabPage RID_TP_MISC { Text[ en-US ] = "Remote UNO Port"; }; NumericField NF_UNOPORT { + HelpID = "basic:NumericField:RID_TP_MISC:NF_UNOPORT"; Border = TRUE; Pos = MAP_APPFONT( 191, 12+15); Size = MAP_APPFONT( 40, 12 ); @@ -1087,6 +1130,7 @@ TabPage RID_TP_MISC { Text[ en-US ] = "Server Timeout"; }; TimeField SERVER_TIMEOUT { + HelpID = "basic:TimeField:RID_TP_MISC:SERVER_TIMEOUT"; Border = TRUE; Pos = MAP_APPFONT( 83, 50 ); Size = MAP_APPFONT( 40, 12 ); @@ -1102,6 +1146,7 @@ TabPage RID_TP_MISC { Text[ en-US ] = "Max LRU Files"; }; NumericField TF_MAX_LRU { + HelpID = "basic:NumericField:RID_TP_MISC:TF_MAX_LRU"; Border = TRUE; Pos = MAP_APPFONT( 191, 50); Size = MAP_APPFONT( 40, 12 ); @@ -1118,12 +1163,14 @@ TabPage RID_TP_MISC { Text[ en-US ] = "OOo Program Dir"; }; Edit ED_PROGDIR { + HelpID = "basic:Edit:RID_TP_MISC:ED_PROGDIR"; Border = TRUE; Pos = MAP_APPFONT( 83, 50+15 ); Size = MAP_APPFONT( 219-83-4, 12 ); TabStop = TRUE; }; PushButton PB_PROGDIR { + HelpID = "basic:PushButton:RID_TP_MISC:PB_PROGDIR"; Pos = MAP_APPFONT( 219, 50+15 ); Size = MAP_APPFONT( 12, 12 ); TabStop = TRUE; @@ -1133,6 +1180,7 @@ TabPage RID_TP_MISC { TabPage RID_TP_FONT { + HelpID = "basic:TabPage:RID_TP_FONT"; Hide = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT( 244, 100 ); @@ -1142,6 +1190,7 @@ TabPage RID_TP_FONT { Text[ en-US ] = "Type"; }; ComboBox CB_FONTNAME { + HelpID = "basic:ComboBox:RID_TP_FONT:CB_FONTNAME"; Pos = MAP_APPFONT( 4, 12 ); Size = MAP_APPFONT( 123, 12*4 ); Sort = TRUE; @@ -1153,6 +1202,7 @@ TabPage RID_TP_FONT { Text[ en-US ] = "Typeface"; }; ComboBox CB_FONTSTYLE { + HelpID = "basic:ComboBox:RID_TP_FONT:CB_FONTSTYLE"; Pos = MAP_APPFONT( 131, 12 ); Size = MAP_APPFONT( 65, 12*4 ); AutoHScroll = TRUE; @@ -1163,6 +1213,7 @@ TabPage RID_TP_FONT { Text[ en-US ] = "Size"; }; MetricBox MB_FONTSIZE { + HelpID = "basic:MetricBox:RID_TP_FONT:MB_FONTSIZE"; Pos = MAP_APPFONT( 200, 12 ); Size = MAP_APPFONT( 29, 12*4 ); AutoHScroll = TRUE; @@ -1178,6 +1229,7 @@ TabPage RID_TP_FONT { FloatingWindow IDD_DISPLAY_HID { + HelpID = "basic:FloatingWindow:IDD_DISPLAY_HID"; OutputSize = TRUE; SVLook = TRUE; Size = MAP_APPFONT( 261, 160 ); @@ -1204,6 +1256,7 @@ FloatingWindow IDD_DISPLAY_HID { Text[ en-US ] = "Controls"; }; MultiListBox RID_MLB_CONTROLS { + HelpID = "basic:MultiListBox:IDD_DISPLAY_HID:RID_MLB_CONTROLS"; Border = TRUE; AutoHScroll = TRUE; Pos = MAP_APPFONT( 4, 28 ); @@ -1216,6 +1269,7 @@ FloatingWindow IDD_DISPLAY_HID { Text[ en-US ] = "Slots"; }; MultiListBox RID_MLB_SLOTS { + HelpID = "basic:MultiListBox:IDD_DISPLAY_HID:RID_MLB_SLOTS"; Border = TRUE; AutoHScroll = TRUE; Pos = MAP_APPFONT( 4, 132 ); @@ -1223,12 +1277,14 @@ FloatingWindow IDD_DISPLAY_HID { TabStop = TRUE; }; PushButton RID_PB_KOPIEREN { + HelpID = "basic:PushButton:IDD_DISPLAY_HID:RID_PB_KOPIEREN"; Pos = MAP_APPFONT( 216, 28 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; Text[ en-US ] = "Copy"; }; PushButton RID_PB_BENENNEN { + HelpID = "basic:PushButton:IDD_DISPLAY_HID:RID_PB_BENENNEN"; Pos = MAP_APPFONT( 216, 44 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -1236,6 +1292,7 @@ FloatingWindow IDD_DISPLAY_HID { Text[ en-US ] = "Name"; }; PushButton RID_PB_SELECTALL { + HelpID = "basic:PushButton:IDD_DISPLAY_HID:RID_PB_SELECTALL"; Pos = MAP_APPFONT( 216, 44 ); Size = MAP_APPFONT( 40, 12 ); TabStop = TRUE; @@ -1356,6 +1413,7 @@ ImageList RID_IMGLST_LAYOUT }; ModelessDialog IDD_EDIT_VAR { + HelpID = "basic:ModelessDialog:IDD_EDIT_VAR"; Pos = MAP_APPFONT( 0, 0 ); Size = MAP_APPFONT( 171, 87 ); Moveable = TRUE; @@ -1386,6 +1444,7 @@ ModelessDialog IDD_EDIT_VAR { Text[ en-US ] = "Previous contents"; }; RadioButton RID_RB_NEW_BOOL_T { + HelpID = "basic:RadioButton:IDD_EDIT_VAR:RID_RB_NEW_BOOL_T"; Hide = TRUE; Pos = MAP_APPFONT( 53, 37 ); Size = MAP_APPFONT( 40, 12 ); @@ -1393,6 +1452,7 @@ ModelessDialog IDD_EDIT_VAR { Text[ en-US ] = "True"; }; RadioButton RID_RB_NEW_BOOL_F { + HelpID = "basic:RadioButton:IDD_EDIT_VAR:RID_RB_NEW_BOOL_F"; Hide = TRUE; Pos = MAP_APPFONT( 98, 37 ); Size = MAP_APPFONT( 40, 12 ); @@ -1400,6 +1460,7 @@ ModelessDialog IDD_EDIT_VAR { Text[ en-US ] = "False"; }; NumericField RID_NF_NEW_INTEGER { + HelpID = "basic:NumericField:IDD_EDIT_VAR:RID_NF_NEW_INTEGER"; Border = TRUE; Hide = TRUE; Pos = MAP_APPFONT( 53, 37 ); @@ -1414,6 +1475,7 @@ ModelessDialog IDD_EDIT_VAR { SpinSize = 10; }; NumericField RID_NF_NEW_LONG { + HelpID = "basic:NumericField:IDD_EDIT_VAR:RID_NF_NEW_LONG"; Border = TRUE; Hide = TRUE; Pos = MAP_APPFONT( 53, 37 ); @@ -1428,6 +1490,7 @@ ModelessDialog IDD_EDIT_VAR { SpinSize = 10; }; Edit RID_ED_NEW_STRING { + HelpID = "basic:Edit:IDD_EDIT_VAR:RID_ED_NEW_STRING"; Hide = TRUE; Border = TRUE; Pos = MAP_APPFONT( 53, 37 ); @@ -1449,6 +1512,7 @@ ModelessDialog IDD_EDIT_VAR { }; FloatingWindow LOAD_CONF { + HelpID = "basic:FloatingWindow:LOAD_CONF"; SVLook = TRUE; Pos = MAP_APPFONT( 66, 23 ); Size = MAP_APPFONT( 156, 51 ); diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx index 8b1069bbeab3..e70f38bbeaed 100644 --- a/basic/source/classes/sbxmod.cxx +++ b/basic/source/classes/sbxmod.cxx @@ -444,11 +444,7 @@ TYPEINIT1(SbJScriptMethod,SbMethod) TYPEINIT1(SbObjModule,SbModule) TYPEINIT1(SbUserFormModule,SbObjModule) -SV_DECL_VARARR(SbiBreakpoints,USHORT,4,4) -SV_IMPL_VARARR(SbiBreakpoints,USHORT) - - -SV_IMPL_VARARR(HighlightPortions, HighlightPortion) +typedef std::vector<HighlightPortion> HighlightPortions; bool getDefaultVBAMode( StarBASIC* pb ) { @@ -1478,15 +1474,15 @@ BOOL SbModule::IsBreakable( USHORT nLine ) const return FALSE; } -USHORT SbModule::GetBPCount() const +size_t SbModule::GetBPCount() const { - return pBreaks ? pBreaks->Count() : 0; + return pBreaks ? pBreaks->size() : 0; } -USHORT SbModule::GetBP( USHORT n ) const +USHORT SbModule::GetBP( size_t n ) const { - if( pBreaks && n < pBreaks->Count() ) - return pBreaks->GetObject( n ); + if( pBreaks && n < pBreaks->size() ) + return pBreaks->operator[]( n ); else return 0; } @@ -1495,11 +1491,9 @@ BOOL SbModule::IsBP( USHORT nLine ) const { if( pBreaks ) { - const USHORT* p = pBreaks->GetData(); - USHORT n = pBreaks->Count(); - for( USHORT i = 0; i < n; i++, p++ ) + for( size_t i = 0; i < pBreaks->size(); i++ ) { - USHORT b = *p; + USHORT b = pBreaks->operator[]( i ); if( b == nLine ) return TRUE; if( b < nLine ) @@ -1515,18 +1509,16 @@ BOOL SbModule::SetBP( USHORT nLine ) return FALSE; if( !pBreaks ) pBreaks = new SbiBreakpoints; - const USHORT* p = pBreaks->GetData(); - USHORT n = pBreaks->Count(); - USHORT i; - for( i = 0; i < n; i++, p++ ) + size_t i; + for( i = 0; i < pBreaks->size(); i++ ) { - USHORT b = *p; + USHORT b = pBreaks->operator[]( i ); if( b == nLine ) return TRUE; if( b < nLine ) break; } - pBreaks->Insert( &nLine, 1, i ); + pBreaks->insert( pBreaks->begin() + i, nLine ); // #38568: Zur Laufzeit auch hier SbDEBUG_BREAK setzen if( pINST && pINST->pRun ) @@ -1540,19 +1532,19 @@ BOOL SbModule::ClearBP( USHORT nLine ) BOOL bRes = FALSE; if( pBreaks ) { - const USHORT* p = pBreaks->GetData(); - USHORT n = pBreaks->Count(); - for( USHORT i = 0; i < n; i++, p++ ) + for( size_t i = 0; i < pBreaks->size(); i++ ) { - USHORT b = *p; + USHORT b = pBreaks->operator[]( i ); if( b == nLine ) { - pBreaks->Remove( i, 1 ); bRes = TRUE; break; + pBreaks->erase( pBreaks->begin() + i ); + bRes = TRUE; + break; } if( b < nLine ) break; } - if( !pBreaks->Count() ) + if( pBreaks->empty() ) delete pBreaks, pBreaks = NULL; } return bRes; @@ -1560,7 +1552,8 @@ BOOL SbModule::ClearBP( USHORT nLine ) void SbModule::ClearAllBP() { - delete pBreaks; pBreaks = NULL; + delete pBreaks; + pBreaks = NULL; } void @@ -1588,7 +1581,7 @@ BOOL SbModule::LoadData( SvStream& rStrm, USHORT nVer ) Clear(); if( !SbxObject::LoadData( rStrm, 1 ) ) return FALSE; - // Sicherheitshalber... + // Precaution... SetFlag( SBX_EXTSEARCH | SBX_GBLSEARCH ); BYTE bImage; rStrm >> bImage; diff --git a/basic/source/sbx/sbxbool.cxx b/basic/source/sbx/sbxbool.cxx index 3216e401b707..c3ed0d09b134 100644 --- a/basic/source/sbx/sbxbool.cxx +++ b/basic/source/sbx/sbxbool.cxx @@ -91,7 +91,7 @@ enum SbxBOOL ImpGetBool( const SbxValues* p ) { if( p->pOUString->equalsIgnoreAsciiCase( SbxRes( STRING_TRUE ) ) ) nRes = SbxTRUE; - else if( p->pOUString->equalsIgnoreAsciiCase( SbxRes( STRING_FALSE ) ) ) + else if( !p->pOUString->equalsIgnoreAsciiCase( SbxRes( STRING_FALSE ) ) ) { // Jetzt kann es noch in eine Zahl konvertierbar sein BOOL bError = TRUE; diff --git a/configmgr/source/access.cxx b/configmgr/source/access.cxx index eda60e6d612a..933a414d331c 100644 --- a/configmgr/source/access.cxx +++ b/configmgr/source/access.cxx @@ -909,11 +909,8 @@ rtl::OUString Access::getImplementationName() throw (css::uno::RuntimeException) OSL_ASSERT(thisIs(IS_ANY)); osl::MutexGuard g(lock); checkLocalizedPropertyAccess(); - throw css::uno::RuntimeException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "configmgr Access has no service implementation name")), - static_cast< cppu::OWeakObject * >(this)); + return rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("org.openoffice-configmgr::Access")); } sal_Bool Access::supportsService(rtl::OUString const & ServiceName) @@ -2092,7 +2089,8 @@ css::beans::Property Access::asProperty() { default: type = cppu::UnoType< css::uno::XInterface >::get(); //TODO: correct? nillable = false; - removable = getParentNode()->kind() == Node::KIND_SET; + rtl::Reference< Node > parent(getParentNode()); + removable = parent.is() && parent->kind() == Node::KIND_SET; break; } return css::beans::Property( diff --git a/configmgr/source/childaccess.cxx b/configmgr/source/childaccess.cxx index ef2b213d4ef1..c20fa49fb18c 100644 --- a/configmgr/source/childaccess.cxx +++ b/configmgr/source/childaccess.cxx @@ -283,8 +283,9 @@ css::uno::Any ChildAccess::asValue() { // Find best match using an adaption of RFC 4647 lookup matching // rules, removing "-" or "_" delimited segments from the end; // defaults are the empty string locale, the "en-US" locale, the - // first child (if any), or a nil value (even though it may be - // illegal for the given property), in that order: + // "en" locale, the first child (if any), or a nil value (even + // though it may be illegal for the given property), in that + // order: rtl::Reference< ChildAccess > child; for (;;) { child = getChild(locale); @@ -301,10 +302,14 @@ css::uno::Any ChildAccess::asValue() { child = getChild( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en-US"))); if (!child.is()) { - std::vector< rtl::Reference< ChildAccess > > all( - getAllChildren()); - if (!all.empty()) { - child = all.front(); + child = getChild( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en"))); + if (!child.is()) { + std::vector< rtl::Reference< ChildAccess > > all( + getAllChildren()); + if (!all.empty()) { + child = all.front(); + } } } } diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx index 32478e96813d..2d148959edfc 100644 --- a/configmgr/source/components.cxx +++ b/configmgr/source/components.cxx @@ -214,7 +214,7 @@ void Components::WriteThread::run() { reference_->clear(); } -void Components::initSingleton( +Components & Components::getSingleton( css::uno::Reference< css::uno::XComponentContext > const & context) { OSL_ASSERT(context.is()); @@ -223,10 +223,6 @@ void Components::initSingleton( static Components theSingleton(context); singleton = &theSingleton; } -} - -Components & Components::getSingleton() { - OSL_ASSERT(singletonCreated); if (singleton == 0) { throw css::uno::RuntimeException( rtl::OUString( diff --git a/configmgr/source/components.hxx b/configmgr/source/components.hxx index 1c735efca6ba..34b693c7e585 100644 --- a/configmgr/source/components.hxx +++ b/configmgr/source/components.hxx @@ -65,12 +65,10 @@ class RootAccess; class Components: private boost::noncopyable { public: - static void initSingleton( + static Components & getSingleton( com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > const & context); - static Components & getSingleton(); - static bool allLocales(rtl::OUString const & locale); rtl::Reference< Node > resolvePathRepresentation( diff --git a/configmgr/source/configurationprovider.cxx b/configmgr/source/configurationprovider.cxx index 3cd58b145bff..999253118f11 100644 --- a/configmgr/source/configurationprovider.cxx +++ b/configmgr/source/configurationprovider.cxx @@ -55,7 +55,7 @@ #include "cppu/unotype.hxx" #include "cppuhelper/compbase5.hxx" #include "cppuhelper/factory.hxx" -#include "cppuhelper/implbase1.hxx" +#include "cppuhelper/implbase2.hxx" #include "cppuhelper/interfacecontainer.hxx" #include "cppuhelper/weak.hxx" #include "osl/diagnose.h" @@ -127,7 +127,6 @@ private: virtual css::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException) { return configuration_provider::getSupportedServiceNames(); } - //TODO: DefaultProvider? virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( rtl::OUString const & aServiceSpecifier) @@ -276,8 +275,7 @@ Service::createInstanceWithArguments( static_cast< cppu::OWeakObject * >(this)); } osl::MutexGuard guard(lock); - Components::initSingleton(context_); - Components & components = Components::getSingleton(); + Components & components = Components::getSingleton(context_); rtl::Reference< RootAccess > root( new RootAccess(components, nodepath, locale, update)); if (root->isValue()) { @@ -388,14 +386,14 @@ void Service::flushModifications() const { Components * components; { osl::MutexGuard guard(lock); - Components::initSingleton(context_); - components = &Components::getSingleton(); + components = &Components::getSingleton(context_); } components->flushModifications(); } class Factory: - public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, + public cppu::WeakImplHelper2< + css::lang::XSingleComponentFactory, css::lang::XServiceInfo >, private boost::noncopyable { public: @@ -414,6 +412,18 @@ private: css::uno::Sequence< css::uno::Any > const & Arguments, css::uno::Reference< css::uno::XComponentContext > const & Context) throw (css::uno::Exception, css::uno::RuntimeException); + + virtual rtl::OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException) + { return configuration_provider::getImplementationName(); } + + virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName) + throw (css::uno::RuntimeException) + { return ServiceName == getSupportedServiceNames()[0]; } //TODO + + virtual css::uno::Sequence< rtl::OUString > SAL_CALL + getSupportedServiceNames() throw (css::uno::RuntimeException) + { return configuration_provider::getSupportedServiceNames(); } }; css::uno::Reference< css::uno::XInterface > Factory::createInstanceWithContext( diff --git a/configmgr/source/configurationregistry.cxx b/configmgr/source/configurationregistry.cxx index ffd7174c0ad7..f4810eb34ff8 100644 --- a/configmgr/source/configurationregistry.cxx +++ b/configmgr/source/configurationregistry.cxx @@ -36,7 +36,6 @@ #include "com/sun/star/lang/XMultiComponentFactory.hpp" #include "com/sun/star/lang/XMultiServiceFactory.hpp" #include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/lang/XSingleComponentFactory.hpp" #include "com/sun/star/registry/InvalidRegistryException.hpp" #include "com/sun/star/registry/InvalidValueException.hpp" #include "com/sun/star/registry/MergeConflictException.hpp" @@ -56,13 +55,11 @@ #include "com/sun/star/uno/XInterface.hpp" #include "com/sun/star/util/XFlushable.hpp" #include "cppu/unotype.hxx" -#include "cppuhelper/factory.hxx" #include "cppuhelper/implbase1.hxx" #include "cppuhelper/implbase3.hxx" #include "cppuhelper/weak.hxx" #include "osl/diagnose.h" #include "osl/mutex.hxx" -#include "rtl/unload.h" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" @@ -877,53 +874,12 @@ rtl::OUString RegistryKey::getResolvedName(rtl::OUString const & aKeyName) return aKeyName; } -class Factory: - public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, - private boost::noncopyable -{ -public: - Factory() {} - -private: - virtual ~Factory() {} - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); -}; - -css::uno::Reference< css::uno::XInterface > Factory::createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException) -{ - return createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any >(), Context); } -css::uno::Reference< css::uno::XInterface > -Factory::createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException) +css::uno::Reference< css::uno::XInterface > create( + css::uno::Reference< css::uno::XComponentContext > const & context) { - if (Arguments.getLength() != 0) { - throw css::uno::Exception( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationRegistry must be" - " instantiated without arguments")), - static_cast< cppu::OWeakObject * >(this)); - } - return static_cast< cppu::OWeakObject * >(new Service(Context)); -} - + return static_cast< cppu::OWeakObject * >(new Service(context)); } rtl::OUString getImplementationName() { @@ -939,12 +895,4 @@ css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { return css::uno::Sequence< rtl::OUString >(&name, 1); } -css::uno::Reference< css::lang::XSingleComponentFactory > createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()) -{ - return new Factory; -} - } } diff --git a/configmgr/source/configurationregistry.hxx b/configmgr/source/configurationregistry.hxx index 6cba122188b1..417c519b97f4 100644 --- a/configmgr/source/configurationregistry.hxx +++ b/configmgr/source/configurationregistry.hxx @@ -30,28 +30,28 @@ #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" -#include "cppuhelper/factory.hxx" -#include "rtl/unload.h" #include "sal/types.h" -namespace com { namespace sun { namespace star { namespace lang { - class XSingleComponentFactory; -} } } } +namespace com { namespace sun { namespace star { + namespace uno { + class XComponentContext; + class XInterface; + } +} } } namespace rtl { class OUString; } namespace configmgr { namespace configuration_registry { +com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL +create( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + rtl::OUString SAL_CALL getImplementationName(); com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(); -com::sun::star::uno::Reference< com::sun::star::lang::XSingleComponentFactory > -SAL_CALL createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - com::sun::star::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()); - } } #endif diff --git a/configmgr/source/defaultprovider.cxx b/configmgr/source/defaultprovider.cxx index d069663290e8..9079d4736a6c 100644 --- a/configmgr/source/defaultprovider.cxx +++ b/configmgr/source/defaultprovider.cxx @@ -28,24 +28,16 @@ #include "precompiled_configmgr.hxx" #include "sal/config.h" -#include "boost/noncopyable.hpp" -#include "com/sun/star/lang/XSingleComponentFactory.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Exception.hpp" #include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" #include "com/sun/star/uno/Sequence.hxx" #include "com/sun/star/uno/XComponentContext.hpp" #include "com/sun/star/uno/XInterface.hpp" -#include "cppuhelper/factory.hxx" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/weak.hxx" -#include "sal/types.h" -#include "rtl/unload.h" +#include "osl/mutex.hxx" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "configurationprovider.hxx" +#include "defaultprovider.hxx" #include "lock.hxx" namespace configmgr { namespace default_provider { @@ -54,58 +46,17 @@ namespace { namespace css = com::sun::star; -class Factory: - public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, - private boost::noncopyable -{ -public: - Factory() {} - -private: - virtual ~Factory() {} - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); -}; - -css::uno::Reference< css::uno::XInterface > Factory::createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException) -{ - return createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any >(), Context); } -css::uno::Reference< css::uno::XInterface > -Factory::createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException) +css::uno::Reference< css::uno::XInterface > create( + css::uno::Reference< css::uno::XComponentContext > const & context) { - if (Arguments.getLength() != 0) { - throw css::uno::Exception( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.DefaultProvider must be" - " instantiated without arguments")), - static_cast< cppu::OWeakObject * >(this)); - } osl::MutexGuard guard(lock); static css::uno::Reference< css::uno::XInterface > singleton( - configuration_provider::createDefault(Context)); + configuration_provider::createDefault(context)); return singleton; } -} - rtl::OUString getImplementationName() { return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( @@ -119,13 +70,4 @@ css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { return css::uno::Sequence< rtl::OUString >(&name, 1); } -css::uno::Reference< css::lang::XSingleComponentFactory > -SAL_CALL createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()) -{ - return new Factory; -} - } } diff --git a/configmgr/source/defaultprovider.hxx b/configmgr/source/defaultprovider.hxx index 7b267a80b42e..f678931d35fe 100644 --- a/configmgr/source/defaultprovider.hxx +++ b/configmgr/source/defaultprovider.hxx @@ -32,28 +32,28 @@ #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" -#include "cppuhelper/factory.hxx" -#include "rtl/unload.h" #include "sal/types.h" -namespace com { namespace sun { namespace star { namespace lang { - class XSingleComponentFactory; -} } } } +namespace com { namespace sun { namespace star { + namespace uno { + class XComponentContext; + class XInterface; + } +} } } namespace rtl { class OUString; } namespace configmgr { namespace default_provider { +com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL +create( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + rtl::OUString SAL_CALL getImplementationName(); com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(); -com::sun::star::uno::Reference< com::sun::star::lang::XSingleComponentFactory > -SAL_CALL createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - com::sun::star::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()); - } } #endif diff --git a/configmgr/source/node.cxx b/configmgr/source/node.cxx index a5a089106b2a..5473b6b1de0c 100644 --- a/configmgr/source/node.cxx +++ b/configmgr/source/node.cxx @@ -101,8 +101,4 @@ Node::~Node() {} void Node::clear() {} -rtl::Reference< Node > Node::findMember(rtl::OUString const &) { - return rtl::Reference< Node >(); -} - } diff --git a/configmgr/source/node.hxx b/configmgr/source/node.hxx index 7c9417e68ea9..f79e7ba296fa 100644 --- a/configmgr/source/node.hxx +++ b/configmgr/source/node.hxx @@ -31,11 +31,12 @@ #include "sal/config.h" #include "rtl/ref.hxx" -#include "rtl/ustring.hxx" #include "salhelper/simplereferenceobject.hxx" #include "nodemap.hxx" +namespace rtl { class OUString; } + namespace configmgr { class Node: public salhelper::SimpleReferenceObject { @@ -75,8 +76,6 @@ protected: virtual void clear(); - virtual rtl::Reference< Node > findMember(rtl::OUString const & name); - int layer_; int finalized_; }; diff --git a/configmgr/source/services.cxx b/configmgr/source/services.cxx index b1ef8d2169bb..dd01189be6e2 100644 --- a/configmgr/source/services.cxx +++ b/configmgr/source/services.cxx @@ -32,6 +32,7 @@ #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/XComponentContext.hpp" #include "com/sun/star/uno/XInterface.hpp" +#include "cppuhelper/factory.hxx" #include "cppuhelper/implementationentry.hxx" #include "osl/diagnose.h" #include "uno/lbnames.h" @@ -58,15 +59,17 @@ static cppu::ImplementationEntry const services[] = { { &dummy, &configmgr::configuration_provider::getImplementationName, &configmgr::configuration_provider::getSupportedServiceNames, &configmgr::configuration_provider::createFactory, 0, 0 }, - { &dummy, &configmgr::default_provider::getImplementationName, + { &configmgr::default_provider::create, + &configmgr::default_provider::getImplementationName, &configmgr::default_provider::getSupportedServiceNames, - &configmgr::default_provider::createFactory, 0, 0 }, - { &dummy, &configmgr::configuration_registry::getImplementationName, + &cppu::createSingleComponentFactory, 0, 0 }, + { &configmgr::configuration_registry::create, + &configmgr::configuration_registry::getImplementationName, &configmgr::configuration_registry::getSupportedServiceNames, - &configmgr::configuration_registry::createFactory, 0, 0 }, - { &dummy, &configmgr::update::getImplementationName, + &cppu::createSingleComponentFactory, 0, 0 }, + { &configmgr::update::create, &configmgr::update::getImplementationName, &configmgr::update::getSupportedServiceNames, - &configmgr::update::createFactory, 0, 0 }, + &cppu::createSingleComponentFactory, 0, 0 }, { 0, 0, 0, 0, 0, 0 } }; diff --git a/configmgr/source/update.cxx b/configmgr/source/update.cxx index 403b761a5abd..258765158aa3 100644 --- a/configmgr/source/update.cxx +++ b/configmgr/source/update.cxx @@ -32,20 +32,15 @@ #include "boost/noncopyable.hpp" #include "com/sun/star/configuration/XUpdate.hpp" -#include "com/sun/star/lang/XSingleComponentFactory.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Exception.hpp" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/RuntimeException.hpp" #include "com/sun/star/uno/Sequence.hxx" #include "com/sun/star/uno/XComponentContext.hpp" #include "com/sun/star/uno/XInterface.hpp" -#include "cppuhelper/factory.hxx" #include "cppuhelper/implbase1.hxx" #include "cppuhelper/weak.hxx" #include "osl/mutex.hxx" #include "rtl/ref.hxx" -#include "rtl/unload.h" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" @@ -76,7 +71,11 @@ class Service: private boost::noncopyable { public: - Service() {} + Service(css::uno::Reference< css::uno::XComponentContext > const context): + context_(context) + { + OSL_ASSERT(context.is()); + } private: virtual ~Service() {} @@ -97,6 +96,8 @@ private: css::uno::Sequence< rtl::OUString > const & includedPaths, css::uno::Sequence< rtl::OUString > const & excludedPaths) throw (css::uno::RuntimeException); + + css::uno::Reference< css::uno::XComponentContext > context_; }; void Service::insertExtensionXcsFile( @@ -104,7 +105,7 @@ void Service::insertExtensionXcsFile( throw (css::uno::RuntimeException) { osl::MutexGuard g(lock); - Components::getSingleton().insertExtensionXcsFile(shared, fileUri); + Components::getSingleton(context_).insertExtensionXcsFile(shared, fileUri); } void Service::insertExtensionXcuFile( @@ -114,10 +115,10 @@ void Service::insertExtensionXcuFile( Broadcaster bc; { osl::MutexGuard g(lock); + Components & components = Components::getSingleton(context_); Modifications mods; - Components::getSingleton().insertExtensionXcuFile( - shared, fileUri, &mods); - Components::getSingleton().initGlobalBroadcaster( + components.insertExtensionXcuFile(shared, fileUri, &mods); + components.initGlobalBroadcaster( mods, rtl::Reference< RootAccess >(), &bc); } bc.send(); @@ -129,9 +130,10 @@ void Service::removeExtensionXcuFile(rtl::OUString const & fileUri) Broadcaster bc; { osl::MutexGuard g(lock); + Components & components = Components::getSingleton(context_); Modifications mods; - Components::getSingleton().removeExtensionXcuFile(fileUri, &mods); - Components::getSingleton().initGlobalBroadcaster( + components.removeExtensionXcuFile(fileUri, &mods); + components.initGlobalBroadcaster( mods, rtl::Reference< RootAccess >(), &bc); } bc.send(); @@ -146,62 +148,22 @@ void Service::insertModificationXcuFile( Broadcaster bc; { osl::MutexGuard g(lock); + Components & components = Components::getSingleton(context_); Modifications mods; - Components::getSingleton().insertModificationXcuFile( + components.insertModificationXcuFile( fileUri, seqToSet(includedPaths), seqToSet(excludedPaths), &mods); - Components::getSingleton().initGlobalBroadcaster( + components.initGlobalBroadcaster( mods, rtl::Reference< RootAccess >(), &bc); } bc.send(); } -class Factory: - public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, - private boost::noncopyable -{ -public: - Factory() {} - -private: - virtual ~Factory() {} - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); - - virtual css::uno::Reference< css::uno::XInterface > SAL_CALL - createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException); -}; - -css::uno::Reference< css::uno::XInterface > Factory::createInstanceWithContext( - css::uno::Reference< css::uno::XComponentContext > const & Context) - throw (css::uno::Exception, css::uno::RuntimeException) -{ - return createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any >(), Context); } -css::uno::Reference< css::uno::XInterface > -Factory::createInstanceWithArgumentsAndContext( - css::uno::Sequence< css::uno::Any > const & Arguments, - css::uno::Reference< css::uno::XComponentContext > const &) - throw (css::uno::Exception, css::uno::RuntimeException) +css::uno::Reference< css::uno::XInterface > create( + css::uno::Reference< css::uno::XComponentContext > const & context) { - if (Arguments.getLength() != 0) { - throw css::uno::Exception( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.comp.configuration.Update must be" - " instantiated without arguments")), - static_cast< cppu::OWeakObject * >(this)); - } - return static_cast< cppu::OWeakObject * >(new Service); -} - + return static_cast< cppu::OWeakObject * >(new Service(context)); } rtl::OUString getImplementationName() { @@ -216,12 +178,4 @@ css::uno::Sequence< rtl::OUString > getSupportedServiceNames() { return css::uno::Sequence< rtl::OUString >(&name, 1); } -css::uno::Reference< css::lang::XSingleComponentFactory > createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - css::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()) -{ - return new Factory; -} - } } diff --git a/configmgr/source/update.hxx b/configmgr/source/update.hxx index faa5c86b15fa..a60264e67ac3 100644 --- a/configmgr/source/update.hxx +++ b/configmgr/source/update.hxx @@ -32,28 +32,28 @@ #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" -#include "cppuhelper/factory.hxx" -#include "rtl/unload.h" #include "sal/types.h" -namespace com { namespace sun { namespace star { namespace lang { - class XSingleComponentFactory; -} } } } +namespace com { namespace sun { namespace star { + namespace uno { + class XComponentContext; + class XInterface; + } +} } } namespace rtl { class OUString; } namespace configmgr { namespace update { +com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL +create( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const &); + rtl::OUString SAL_CALL getImplementationName(); com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(); -com::sun::star::uno::Reference< com::sun::star::lang::XSingleComponentFactory > -SAL_CALL createFactory( - cppu::ComponentFactoryFunc, rtl::OUString const &, - com::sun::star::uno::Sequence< rtl::OUString > const &, rtl_ModuleCount *) - SAL_THROW(()); - } } #endif diff --git a/connectivity/inc/connectivity/filtermanager.hxx b/connectivity/inc/connectivity/filtermanager.hxx index 71494de67b38..c9d1e95cfac4 100644 --- a/connectivity/inc/connectivity/filtermanager.hxx +++ b/connectivity/inc/connectivity/filtermanager.hxx @@ -33,7 +33,8 @@ #include <com/sun/star/sdb/XSQLQueryComposer.hpp> #include <com/sun/star/sdbc/XConnection.hpp> /** === end UNO includes === **/ -#include <rtl/ustring.hxx> + +#include <rtl/ustrbuf.hxx> #include <vector> #include "connectivity/dbtoolsdllapi.hxx" @@ -111,10 +112,10 @@ namespace dbtools /** appends one filter component to the statement in our composer */ - void appendFilterComponent( ::rtl::OUString& /* [inout] */ _rAppendTo, const ::rtl::OUString& _rComponent ) const; + void appendFilterComponent( ::rtl::OUStringBuffer& io_appendTo, const ::rtl::OUString& i_component ) const; /// checks whether there is only one (or even no) non-empty filter component - bool isThereAtMostOneComponent( ::rtl::OUString& _rOnlyComponent ) const; + bool isThereAtMostOneComponent( ::rtl::OUStringBuffer& o_singleComponent ) const; /// returns the index of the first filter component which should be considered when building the composed filter inline sal_Int32 getFirstApplicableFilterIndex() const diff --git a/connectivity/source/commontools/FValue.cxx b/connectivity/source/commontools/FValue.cxx index aca181916b47..1e39befaf5f7 100644 --- a/connectivity/source/commontools/FValue.cxx +++ b/connectivity/source/commontools/FValue.cxx @@ -1753,7 +1753,7 @@ Sequence<sal_Int8> ORowSetValue::getSequence() const } // ----------------------------------------------------------------------------- -::com::sun::star::util::Date ORowSetValue::getDate() const +::com::sun::star::util::Date ORowSetValue::getDate() const { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getDate" ); ::com::sun::star::util::Date aValue; @@ -1768,8 +1768,6 @@ Sequence<sal_Int8> ORowSetValue::getSequence() const break; case DataType::DECIMAL: case DataType::NUMERIC: - aValue = DBTypeConversion::toDate((double)*this); - break; case DataType::FLOAT: case DataType::DOUBLE: case DataType::REAL: @@ -1787,12 +1785,28 @@ Sequence<sal_Int8> ORowSetValue::getSequence() const aValue.Year = pDateTime->Year; } break; + case DataType::BIT: + case DataType::BOOLEAN: + case DataType::TINYINT: + case DataType::SMALLINT: + case DataType::INTEGER: + case DataType::BIGINT: + aValue = DBTypeConversion::toDate( double( sal_Int64( *this ) ) ); + break; + + case DataType::BLOB: + case DataType::CLOB: + case DataType::OBJECT: default: - { - Any aAnyValue = getAny(); - aAnyValue >>= aValue; - break; - } + OSL_ENSURE( false, "ORowSetValue::getDate: cannot retrieve the data!" ); + // NO break! + + case DataType::BINARY: + case DataType::VARBINARY: + case DataType::LONGVARBINARY: + case DataType::TIME: + aValue = DBTypeConversion::toDate( (double)0 ); + break; } } return aValue; diff --git a/connectivity/source/commontools/dbtools2.cxx b/connectivity/source/commontools/dbtools2.cxx index c9a878fe1840..67f1b9130862 100644 --- a/connectivity/source/commontools/dbtools2.cxx +++ b/connectivity/source/commontools/dbtools2.cxx @@ -585,7 +585,6 @@ bool getDataSourceSetting( const Reference< XInterface >& _xChild, const ::rtl:: try { const Reference< XPropertySet> xDataSourceProperties( findDataSource( _xChild ), UNO_QUERY ); - OSL_ENSURE( xDataSourceProperties.is(), "getDataSourceSetting: invalid data source object!" ); if ( !xDataSourceProperties.is() ) return false; diff --git a/connectivity/source/commontools/filtermanager.cxx b/connectivity/source/commontools/filtermanager.cxx index bab2ec4ed144..6b9ac603a722 100644 --- a/connectivity/source/commontools/filtermanager.cxx +++ b/connectivity/source/commontools/filtermanager.cxx @@ -35,6 +35,8 @@ #include "TConnection.hxx" #include <osl/diagnose.h> #include "connectivity/dbtools.hxx" +#include <tools/diagnose_ex.h> +#include <rtl/ustrbuf.hxx> //........................................................................ namespace dbtools @@ -92,7 +94,7 @@ namespace dbtools } catch( const Exception& ) { - OSL_ENSURE( sal_False, "FilterManager::setFilterComponent: setting the filter failed!" ); + DBG_UNHANDLED_EXCEPTION(); } } @@ -113,44 +115,30 @@ namespace dbtools } catch( const Exception& ) { - OSL_ENSURE( sal_False, "FilterManager::setApplyPublicFilter: setting the filter failed!" ); + DBG_UNHANDLED_EXCEPTION(); } } //-------------------------------------------------------------------- - namespace + void FilterManager::appendFilterComponent( ::rtl::OUStringBuffer& io_appendTo, const ::rtl::OUString& i_component ) const { - void lcl_ensureBracketed( ::rtl::OUString& /* [inout] */ _rExpression ) + if ( io_appendTo.getLength() > 0 ) { - OSL_ENSURE( _rExpression.getLength(), "lcl_ensureBracketed: expression is empty!" ); - if ( _rExpression.getLength() ) - { - if ( ( _rExpression.getStr()[0] != '(' ) || ( _rExpression.getStr()[ _rExpression.getLength() - 1 ] != ')' ) ) - { - ::rtl::OUString sComposed( RTL_CONSTASCII_USTRINGPARAM( "(" ) ); - sComposed += _rExpression; - sComposed += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ")" ) ); - _rExpression = sComposed; - } - } + io_appendTo.insert( 0, sal_Unicode( '(' ) ); + io_appendTo.insert( 1, sal_Unicode( ' ' ) ); + io_appendTo.appendAscii( " ) AND " ); } - } - //-------------------------------------------------------------------- - void FilterManager::appendFilterComponent( ::rtl::OUString& /* [inout] */ _rAppendTo, const ::rtl::OUString& _rComponent ) const - { - if ( _rAppendTo.getLength() ) - _rAppendTo += ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " AND " ) ); - ::rtl::OUString sComponent( _rComponent ); - lcl_ensureBracketed( sComponent ); - _rAppendTo += sComponent; + io_appendTo.appendAscii( "( " ); + io_appendTo.append( i_component ); + io_appendTo.appendAscii( " )" ); } //-------------------------------------------------------------------- - bool FilterManager::isThereAtMostOneComponent( ::rtl::OUString& _rOnlyComponent ) const + bool FilterManager::isThereAtMostOneComponent( ::rtl::OUStringBuffer& o_singleComponent ) const { sal_Int32 nOnlyNonEmpty = -1; - sal_Int32 i; + sal_Int32 i; for ( i = getFirstApplicableFilterIndex(); i < FC_COMPONENT_COUNT; ++i ) { if ( m_aFilterComponents[ i ].getLength() ) @@ -164,14 +152,14 @@ namespace dbtools } if ( nOnlyNonEmpty == -1 ) { - _rOnlyComponent = ::rtl::OUString(); + o_singleComponent.makeStringAndClear(); return true; } if ( i == FC_COMPONENT_COUNT ) { // we found only one non-empty filter component - _rOnlyComponent = m_aFilterComponents[ nOnlyNonEmpty ]; + o_singleComponent = m_aFilterComponents[ nOnlyNonEmpty ]; return true; } return false; @@ -180,17 +168,17 @@ namespace dbtools //-------------------------------------------------------------------- ::rtl::OUString FilterManager::getComposedFilter( ) const { - ::rtl::OUString sComposedFilter; + ::rtl::OUStringBuffer aComposedFilter; // if we have only one non-empty component, then there's no need to compose anything - if ( isThereAtMostOneComponent( sComposedFilter ) ) - return sComposedFilter; - - // append the single components - for ( sal_Int32 i = getFirstApplicableFilterIndex(); i < FC_COMPONENT_COUNT; ++i ) - appendFilterComponent( sComposedFilter, m_aFilterComponents[ i ] ); + if ( !isThereAtMostOneComponent( aComposedFilter ) ) + { + // append the single components + for ( sal_Int32 i = getFirstApplicableFilterIndex(); i < FC_COMPONENT_COUNT; ++i ) + appendFilterComponent( aComposedFilter, m_aFilterComponents[ i ] ); + } - return sComposedFilter; + return aComposedFilter.makeStringAndClear(); } //........................................................................ diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index 305e26d386e0..c516b325ad9a 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -937,9 +937,13 @@ again: { m_pTable->fetchRow(m_aEvaluateRow, rTableCols, sal_True,bRetrieveData || bHasRestriction); - if ( (!m_bShowDeleted && m_aEvaluateRow->isDeleted()) - || (bHasRestriction && //!bShowDeleted && m_aEvaluateRow->isDeleted() ||// keine Anzeige von geloeschten Saetzen - !m_pSQLAnalyzer->evaluateRestriction())) // Auswerten der Bedingungen + if ( ( !m_bShowDeleted + && m_aEvaluateRow->isDeleted() + ) + || ( bHasRestriction + && !m_pSQLAnalyzer->evaluateRestriction() + ) + ) { // naechsten Satz auswerten // aktuelle Zeile loeschen im Keyset if (m_pEvaluationKeySet) @@ -988,12 +992,14 @@ again: // Evaluate darf nur gesetzt sein, // wenn der Keyset weiter aufgebaut werden soll - if (m_aSQLIterator.getStatementType() == SQL_STATEMENT_SELECT && !isCount() && - (m_pFileSet.isValid() || m_pSortIndex) && bEvaluate) + if ( ( m_aSQLIterator.getStatementType() == SQL_STATEMENT_SELECT ) + && !isCount() + && bEvaluate + ) { if (m_pSortIndex) { - OKeyValue* pKeyValue = GetOrderbyKeyValue(m_aEvaluateRow); + OKeyValue* pKeyValue = GetOrderbyKeyValue( m_aSelectRow ); m_pSortIndex->AddKeyValue(pKeyValue); } else if (m_pFileSet.isValid()) @@ -1294,8 +1300,8 @@ void OResultSet::sortRows() ::std::vector<sal_Int32>::iterator aOrderByIter = m_aOrderbyColumnNumber.begin(); for (::std::vector<sal_Int16>::size_type i=0;aOrderByIter != m_aOrderbyColumnNumber.end(); ++aOrderByIter,++i) { - OSL_ENSURE((sal_Int32)m_aRow->get().size() > *aOrderByIter,"Invalid Index"); - switch ((*(m_aRow->get().begin()+*aOrderByIter))->getValue().getTypeKind()) + OSL_ENSURE((sal_Int32)m_aSelectRow->get().size() > *aOrderByIter,"Invalid Index"); + switch ((*(m_aSelectRow->get().begin()+*aOrderByIter))->getValue().getTypeKind()) { case DataType::CHAR: case DataType::VARCHAR: @@ -1324,7 +1330,7 @@ void OResultSet::sortRows() OSL_ASSERT("OFILECursor::Execute: Datentyp nicht implementiert"); break; } - (m_aEvaluateRow->get())[*aOrderByIter]->setBound(sal_True); + (m_aSelectRow->get())[*aOrderByIter]->setBound(sal_True); } m_pSortIndex = new OSortIndex(eKeyType,m_aOrderbyAscending); @@ -1341,8 +1347,13 @@ void OResultSet::sortRows() } else { - while (ExecuteRow(IResultSetHelper::NEXT,1,TRUE)) + while ( ExecuteRow( IResultSetHelper::NEXT, 1, FALSE, TRUE ) ) { + m_aSelectRow->get()[0]->setValue( m_aRow->get()[0]->getValue() ); + if ( m_pSQLAnalyzer->hasFunctions() ) + m_pSQLAnalyzer->setSelectionEvaluationResult( m_aSelectRow, m_aColMapping ); + const sal_Int32 nBookmark = (*m_aRow->get().begin())->getValue(); + ExecuteRow( IResultSetHelper::BOOKMARK, nBookmark, TRUE, FALSE ); } } diff --git a/connectivity/source/drivers/file/FStatement.cxx b/connectivity/source/drivers/file/FStatement.cxx index acc2059f15c7..52200553d042 100644 --- a/connectivity/source/drivers/file/FStatement.cxx +++ b/connectivity/source/drivers/file/FStatement.cxx @@ -451,19 +451,12 @@ void OStatement_Base::setOrderbyColumn( OSQLParseNode* pColumnRef, return; // Alles geprueft und wir haben den Namen der Column. // Die wievielte Column ist das? - try - { - m_aOrderbyColumnNumber.push_back(xColLocate->findColumn(aColumnName)); - } - catch(Exception) - { - ::vos::ORef<OSQLColumns> aSelectColumns = m_aSQLIterator.getSelectColumns(); - ::comphelper::UStringMixEqual aCase; - OSQLColumns::Vector::const_iterator aFind = ::connectivity::find(aSelectColumns->get().begin(),aSelectColumns->get().end(),aColumnName,aCase); - if ( aFind == aSelectColumns->get().end() ) - throw SQLException(); - m_aOrderbyColumnNumber.push_back((aFind - aSelectColumns->get().begin()) + 1); - } + ::vos::ORef<OSQLColumns> aSelectColumns = m_aSQLIterator.getSelectColumns(); + ::comphelper::UStringMixEqual aCase; + OSQLColumns::Vector::const_iterator aFind = ::connectivity::find(aSelectColumns->get().begin(),aSelectColumns->get().end(),aColumnName,aCase); + if ( aFind == aSelectColumns->get().end() ) + throw SQLException(); + m_aOrderbyColumnNumber.push_back((aFind - aSelectColumns->get().begin()) + 1); // Ascending or Descending? m_aOrderbyAscending.push_back((SQL_ISTOKEN(pAscendingDescending,DESC)) ? SQL_DESC : SQL_ASC); diff --git a/connectivity/source/drivers/file/fanalyzer.cxx b/connectivity/source/drivers/file/fanalyzer.cxx index 7abf10191f21..8211e954a49f 100644 --- a/connectivity/source/drivers/file/fanalyzer.cxx +++ b/connectivity/source/drivers/file/fanalyzer.cxx @@ -103,7 +103,26 @@ void OSQLAnalyzer::start(OSQLParseNode* pSQLParseNode) m_pConnection->throwGenericSQLException(STR_QUERY_COMPLEX_COUNT,NULL); } else - m_aSelectionEvaluations.push_back( TPredicates() ); + { + if ( SQL_ISPUNCTUATION( pColumnRef, "*" ) + || ( SQL_ISRULE( pColumnRef, column_ref ) + && ( pColumnRef->count() == 3 ) + && ( pColumnRef->getChild(0)->getNodeType() == SQL_NODE_NAME ) + && SQL_ISPUNCTUATION( pColumnRef->getChild(1), "." ) + && SQL_ISRULE( pColumnRef->getChild(2), column_val ) + && SQL_ISPUNCTUATION( pColumnRef->getChild(2)->getChild(0), "*" ) + ) + ) + { + // push one element for each column of our table + const Reference< XNameAccess > xColumnNames( m_aCompiler->getOrigColumns() ); + const Sequence< ::rtl::OUString > aColumnNames( xColumnNames->getElementNames() ); + for ( sal_Int32 j=0; j<aColumnNames.getLength(); ++j ) + m_aSelectionEvaluations.push_back( TPredicates() ); + } + else + m_aSelectionEvaluations.push_back( TPredicates() ); + } } } } @@ -291,11 +310,12 @@ void OSQLAnalyzer::setSelectionEvaluationResult(OValueRefRow& _pRow,const ::std: { if ( aIter->second.isValid() ) { - sal_Int32 map = nPos; // the first column (index 0) is for convenience only. The first real select column is no 1. - if ( (nPos > 0) && (nPos < static_cast<sal_Int32>(_rColumnMapping.size())) ) + sal_Int32 map = nPos; + if ( nPos < static_cast< sal_Int32 >( _rColumnMapping.size() ) ) map = _rColumnMapping[nPos]; - aIter->second->startSelection((_pRow->get())[map]); + if ( map > 0 ) + aIter->second->startSelection( (_pRow->get())[map] ); } } } diff --git a/connectivity/source/drivers/hsqldb/HDriver.cxx b/connectivity/source/drivers/hsqldb/HDriver.cxx index 14758afafb3f..a0b755c107c9 100644 --- a/connectivity/source/drivers/hsqldb/HDriver.cxx +++ b/connectivity/source/drivers/hsqldb/HDriver.cxx @@ -273,22 +273,38 @@ namespace connectivity if ( pStream.get() ) { ByteString sLine; + ByteString sVersionString; while ( pStream->ReadLine(sLine) ) { - if ( sLine.Equals("version=",0,sizeof("version=")-1) ) + if ( sLine.Len() == 0 ) + continue; + const ByteString sIniKey = sLine.GetToken( 0, '=' ); + const ByteString sValue = sLine.GetToken( 1, '=' ); + if ( sIniKey.Equals( "hsqldb.compatible_version" ) ) { - sLine = sLine.GetToken(1,'='); - const sal_Int32 nMajor = sLine.GetToken(0,'.').ToInt32(); - const sal_Int32 nMinor = sLine.GetToken(1,'.').ToInt32(); - const sal_Int32 nMicro = sLine.GetToken(2,'.').ToInt32(); - if ( nMajor > 1 - || ( nMajor == 1 && nMinor > 8 ) - || ( nMajor == 1 && nMinor == 8 && nMicro > 0 ) ) + sVersionString = sValue; + } + else + { + if ( sIniKey.Equals( "version" ) + && ( sVersionString.Len() == 0 ) + ) { - ::connectivity::SharedResources aResources; - sMessage = aResources.getResourceString(STR_ERROR_NEW_VERSION); + sVersionString = sValue; } - break; + } + } + if ( sVersionString.Len() ) + { + const sal_Int32 nMajor = sVersionString.GetToken(0,'.').ToInt32(); + const sal_Int32 nMinor = sVersionString.GetToken(1,'.').ToInt32(); + const sal_Int32 nMicro = sVersionString.GetToken(2,'.').ToInt32(); + if ( nMajor > 1 + || ( nMajor == 1 && nMinor > 8 ) + || ( nMajor == 1 && nMinor == 8 && nMicro > 0 ) ) + { + ::connectivity::SharedResources aResources; + sMessage = aResources.getResourceString(STR_ERROR_NEW_VERSION); } } } diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx b/connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx index a5d3211fecab..90ba51c29d4d 100644 --- a/connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx +++ b/connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx @@ -51,14 +51,6 @@ using namespace ::com::sun::star::mozilla; namespace { - #if defined(XP_MAC) || defined(XP_MACOSX) || defined(MACOSX) - #define APP_REGISTRY_NAME "Application Registry" - #elif defined(XP_WIN) || defined(XP_OS2) - #define APP_REGISTRY_NAME "registry.dat" - #else - #define APP_REGISTRY_NAME "appreg" - #endif - // ------------------------------------------------------------------- static ::rtl::OUString lcl_getUserDataDirectory() { @@ -73,15 +65,15 @@ namespace static const char* DefaultProductDir[3][3] = { #if defined(XP_WIN) - { "Mozilla/", NULL, NULL }, + { "Mozilla/SeaMonkey/", NULL, NULL }, { "Mozilla/Firefox/", NULL, NULL }, { "Thunderbird/", "Mozilla/Thunderbird/", NULL } #elif(MACOSX) - { "../Mozilla/", NULL, NULL }, + { "../Mozilla/SeaMonkey/", NULL, NULL }, { "Firefox/", NULL, NULL }, { "../Thunderbird/", NULL, NULL } #else - { ".mozilla/", NULL, NULL }, + { ".mozilla/seamonkey/", NULL, NULL }, { ".mozilla/firefox/", NULL, NULL }, { ".thunderbird/", ".mozilla-thunderbird/", ".mozilla/thunderbird/" } #endif @@ -115,7 +107,7 @@ namespace else { ::rtl::OUString sProductDirCandidate; - const char* pProfileRegistry = ( _product == MozillaProductType_Mozilla ) ? APP_REGISTRY_NAME : "profiles.ini"; + const char* pProfileRegistry = "profiles.ini"; // check all possible candidates for ( size_t i=0; i<3; ++i ) @@ -159,13 +151,3 @@ namespace return lcl_guessProfileRoot( product ); } -#ifndef MINIMAL_PROFILEDISCOVER -// ----------------------------------------------------------------------- -::rtl::OUString getRegistryFileName(MozillaProductType product) -{ - if (product == MozillaProductType_Default) - return ::rtl::OUString(); - - return getRegistryDir(product) + ::rtl::OUString::createFromAscii(APP_REGISTRY_NAME); -} -#endif diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSFolders.hxx b/connectivity/source/drivers/mozab/bootstrap/MNSFolders.hxx index d69a5e3435bf..c12894d30684 100644 --- a/connectivity/source/drivers/mozab/bootstrap/MNSFolders.hxx +++ b/connectivity/source/drivers/mozab/bootstrap/MNSFolders.hxx @@ -38,9 +38,6 @@ #include <rtl/ustring.hxx> ::rtl::OUString getRegistryDir(::com::sun::star::mozilla::MozillaProductType product); -#ifndef MINIMAL_PROFILEDISCOVER -::rtl::OUString getRegistryFileName(::com::sun::star::mozilla::MozillaProductType product); -#endif #endif diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx b/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx index aa20fb04a089..a9cd5c62fe0b 100644 --- a/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx +++ b/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx @@ -144,11 +144,8 @@ namespace connectivity sal_Int32 ProfileAccess::LoadProductsInfo() { -#ifndef MINIMAL_PROFILEDISCOVER - //load mozilla profiles to m_ProductProfileList - LoadMozillaProfiles(); -#endif - sal_Int32 count=static_cast<sal_Int32>(m_ProductProfileList[MozillaProductType_Mozilla].mProfileList.size()); + //load SeaMonkey 2 profiles to m_ProductProfileList + sal_Int32 count = LoadXPToolkitProfiles(MozillaProductType_Mozilla); //load thunderbird profiles to m_ProductProfileList count += LoadXPToolkitProfiles(MozillaProductType_Thunderbird); @@ -158,117 +155,6 @@ namespace connectivity count += LoadXPToolkitProfiles(MozillaProductType_Firefox); return count; } -#ifndef MINIMAL_PROFILEDISCOVER - nsresult ProfileAccess::LoadMozillaProfiles() - { - sal_Int32 index=MozillaProductType_Mozilla; - ProductStruct &m_Product = m_ProductProfileList[index]; - nsresult rv = NS_OK; - - //step 1 : get mozilla registry file - nsCOMPtr<nsILocalFile> localFile; - ::rtl::OUString regDir( getRegistryFileName( MozillaProductType_Mozilla ) ); - // PRUnichar != sal_Unicode in mingw - nsAutoString registryDir(reinterpret_cast_mingw_only<const PRUnichar *>(regDir.getStr())); - rv = NS_NewLocalFile(registryDir, PR_TRUE, - getter_AddRefs(localFile)); - NS_ENSURE_SUCCESS(rv,rv); - PRBool bExist; - rv = localFile->Exists(&bExist); - NS_ENSURE_SUCCESS(rv,rv); - if (!bExist) - return rv; - nsCOMPtr<nsIRegistry> registry(do_CreateInstance(NS_REGISTRY_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS(rv,rv); - //step 2: open mozilla registry file - rv = registry->Open(localFile); - NS_ENSURE_SUCCESS(rv,rv); - - nsCOMPtr<nsIEnumerator> enumKeys; - nsRegistryKey profilesTreeKey; - - //step 3:Enumerator it - rv = registry->GetKey(nsIRegistry::Common, - // PRUnichar != sal_Unicode in mingw - reinterpret_cast_mingw_only<const PRUnichar *>(szProfileSubtreeString.getStr()), - &profilesTreeKey); - if (NS_FAILED(rv)) return rv; - - nsXPIDLString tmpCurrentProfile; - - // Get the current profile - rv = registry->GetString(profilesTreeKey, - // PRUnichar != sal_Unicode in mingw - reinterpret_cast_mingw_only<const PRUnichar *>(szCurrentProfileString.getStr()), - getter_Copies(tmpCurrentProfile)); - - if (tmpCurrentProfile) - { - // PRUnichar != sal_Unicode in mingw - m_Product.setCurrentProfile ( reinterpret_cast_mingw_only<const sal_Unicode *>(NS_STATIC_CAST(const PRUnichar*, tmpCurrentProfile))); - } - - - rv = registry->EnumerateSubtrees( profilesTreeKey, getter_AddRefs(enumKeys)); - NS_ENSURE_SUCCESS(rv,rv); - - rv = enumKeys->First(); - NS_ENSURE_SUCCESS(rv,rv); - - while (NS_OK != enumKeys->IsDone()) - { - nsCOMPtr<nsISupports> base; - - rv = enumKeys->CurrentItem( getter_AddRefs(base) ); - NS_ENSURE_SUCCESS(rv,rv); - rv = enumKeys->Next(); - NS_ENSURE_SUCCESS(rv,rv); - - // Get specific interface. - nsCOMPtr <nsIRegistryNode> node; - nsIID nodeIID = NS_IREGISTRYNODE_IID; - - rv = base->QueryInterface( nodeIID, getter_AddRefs(node)); - if (NS_FAILED(rv)) continue; - - // Get node name. - nsXPIDLString profile; - rv = node->GetName(getter_Copies(profile)); - if (NS_FAILED(rv)) continue; - - nsRegistryKey profKey; - rv = node->GetKey(&profKey); - if (NS_FAILED(rv)) continue; - - - nsCOMPtr<nsILocalFile> tempLocal; - - nsXPIDLString regData; - rv = registry->GetString(profKey, - // PRUnichar != sal_Unicode in mingw - reinterpret_cast_mingw_only<const PRUnichar *>(szDirectoryString.getStr()), - getter_Copies(regData)); - if (NS_FAILED(rv)) continue; - -#if defined(XP_MAC) || defined(XP_MACOSX) || defined(MACOSX) - rv = NS_NewNativeLocalFile(nsCString(), PR_TRUE, getter_AddRefs(tempLocal)); - if (NS_SUCCEEDED(rv)) - rv = tempLocal->SetPersistentDescriptor(NS_LossyConvertUCS2toASCII(regData)); -#else - rv = NS_NewLocalFile(regData, PR_TRUE, getter_AddRefs(tempLocal)); -#endif - //Add found profile to profile lists - if (NS_SUCCEEDED(rv) && tempLocal) - { - // PRUnichar != sal_Unicode in mingw - ProfileStruct* profileItem = new ProfileStruct(MozillaProductType_Mozilla,reinterpret_cast_mingw_only<const sal_Unicode *>(NS_STATIC_CAST(const PRUnichar*, profile)),tempLocal); - m_Product.mProfileList[profileItem->getProfileName()] = profileItem; - } - - } - return rv; - } -#endif //Thunderbird and firefox profiles are saved in profiles.ini sal_Int32 ProfileAccess::LoadXPToolkitProfiles(MozillaProductType product) { diff --git a/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.hxx b/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.hxx index 9358cd65e650..6c88f04b1cf8 100644 --- a/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.hxx +++ b/connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.hxx @@ -116,9 +116,6 @@ namespace connectivity protected: ProductStruct m_ProductProfileList[4]; sal_Int32 LoadProductsInfo(); -#ifndef MINIMAL_PROFILEDISCOVER - nsresult LoadMozillaProfiles(); -#endif sal_Int32 LoadXPToolkitProfiles(MozillaProductType product); #ifndef MINIMAL_PROFILEDISCOVER //used by isProfileLocked diff --git a/connectivity/source/drivers/mozab/mozab.xcu b/connectivity/source/drivers/mozab/mozab.xcu index c92209e09e5a..fa732d6257ae 100755 --- a/connectivity/source/drivers/mozab/mozab.xcu +++ b/connectivity/source/drivers/mozab/mozab.xcu @@ -62,7 +62,7 @@ <value>com.sun.star.comp.sdbc.MozabDriver</value> </prop> <prop oor:name="DriverTypeDisplayName" oor:type="xs:string"> - <value xml:lang="en-US">Mozilla Address Book</value> + <value xml:lang="en-US">SeaMonkey Address Book</value> </prop> <node oor:name="Features"> <node oor:name="EscapeDateTime" oor:op="replace"> diff --git a/connectivity/source/drivers/mozab/mozab2.xcu b/connectivity/source/drivers/mozab/mozab2.xcu index e7c24143f5a1..d1a620dc73d0 100755 --- a/connectivity/source/drivers/mozab/mozab2.xcu +++ b/connectivity/source/drivers/mozab/mozab2.xcu @@ -32,7 +32,7 @@ <value>com.sun.star.comp.sdbc.MozabDriver</value> </prop> <prop oor:name="DriverTypeDisplayName" oor:type="xs:string"> - <value xml:lang="en-US">Mozilla Address Book</value> + <value xml:lang="en-US">SeaMonkey Address Book</value> </prop> <node oor:name="MetaData"> <node oor:name="SupportsBrowsing" oor:op="replace"> diff --git a/connectivity/source/inc/file/fcomp.hxx b/connectivity/source/inc/file/fcomp.hxx index b46d24ddd089..7cbdb730258a 100644 --- a/connectivity/source/inc/file/fcomp.hxx +++ b/connectivity/source/inc/file/fcomp.hxx @@ -109,7 +109,7 @@ namespace connectivity inline void startSelection(ORowSetValueDecoratorRef& _rVal) { - return evaluateSelection(m_rCompiler->m_aCodeList,_rVal); + evaluateSelection(m_rCompiler->m_aCodeList,_rVal); } diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y index 84e9aa2532ff..9709d33fdf76 100644 --- a/connectivity/source/parse/sqlbison.y +++ b/connectivity/source/parse/sqlbison.y @@ -2627,7 +2627,7 @@ value_exp_commalist: } ; function_arg: - value_exp + result | value_exp comparison value_exp { $$ = SQL_NEW_RULE; diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 1b3eb1aa5a4a..a49cabc90bed 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -121,6 +121,7 @@ #include <osl/module.h> #include <osl/file.hxx> #include <osl/signal.h> +#include <osl/thread.hxx> #include <rtl/uuid.h> #include <rtl/uri.hxx> #include <unotools/pathoptions.hxx> @@ -347,10 +348,8 @@ CommandLineArgs* Desktop::GetCommandLineArgs() { ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); if ( !pArgs ) - { pArgs = new CommandLineArgs; } - } return pArgs; } @@ -785,7 +784,6 @@ BOOL Desktop::QueryExit() { RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); utl::ConfigManager::GetConfigManager()->StoreConfigItems(); - FlushConfiguration(); RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); } catch ( RuntimeException& ) @@ -817,6 +815,7 @@ BOOL Desktop::QueryExit() } else { + FlushConfiguration(); try { // it is no problem to call DisableOfficeIPCThread() more than once @@ -1552,7 +1551,7 @@ void Desktop::Main() Reference< ::com::sun::star::task::XRestartManager > xRestartManager; sal_Bool bRestartRequested( sal_False ); sal_Bool bUseSystemFileDialog(sal_True); - int nAcquireCount( 0 ); + int nAcquireCount( 0 ); Reference < css::document::XEventListener > xGlobalBroadcaster; try { @@ -1619,25 +1618,6 @@ void Desktop::Main() } String aTitle = pLabelResMgr ? String( ResId( RID_APPTITLE, *pLabelResMgr ) ) : String(); delete pLabelResMgr; -/* - // locale and UI locale in AppSettings are now retrieved from configuration or system directly via SvtSysLocale - // no reason to set while starting - // set UI language and locale - RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ set locale settings" ); - //LanguageSelection langselect; - OUString aUILocaleString = LanguageSelection::getLanguageString(); - Locale aUILocale = LanguageSelection::IsoStringToLocale(aUILocaleString); - LanguageType eLanguage = SvtSysLocale().GetLanguage(); - - // #i39040#, do not call anything between GetSettings and SetSettings that might have - // a side effect on the settings (like, eg, SvtSysLocaleOptions().GetLocaleLanguageType(), - // which changes the MiscSettings !!! ) - AllSettings aSettings( Application::GetSettings() ); - aSettings.SetUILocale( aUILocale ); - aSettings.SetLanguage( eLanguage ); - Application::SetSettings( aSettings ); - RTL_LOGFILE_CONTEXT_TRACE( aLog, "} set locale settings" ); -*/ // Check for StarOffice/Suite specific extensions runs also with OpenOffice installation sets OUString aTitleString( aTitle ); @@ -1657,12 +1637,9 @@ void Desktop::Main() #endif SetDisplayName( aTitle ); -// SetSplashScreenProgress(30); RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create SvtPathOptions and SvtLanguageOptions" ); pPathOptions.reset( new SvtPathOptions); -// SetSplashScreenProgress(40); -// pLanguageOptions = new SvtLanguageOptions(sal_True); -// SetSplashScreenProgress(45); + SetSplashScreenProgress(40); RTL_LOGFILE_CONTEXT_TRACE( aLog, "} create SvtPathOptions and SvtLanguageOptions" ); // Check special env variable #111015# @@ -1744,6 +1721,7 @@ void Desktop::Main() } SetSplashScreenProgress(50); + // Backing Component sal_Bool bCrashed = sal_False; sal_Bool bExistsRecoveryData = sal_False; @@ -1773,43 +1751,37 @@ void Desktop::Main() if ( !bRestartRequested ) { - if ( - (pCmdLineArgs->IsEmptyOrAcceptOnly() ) && + if ((!pCmdLineArgs->WantsToLoadDocument() ) && (SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::E_SSTARTMODULE)) && (!bExistsRecoveryData ) && (!bExistsSessionData ) && - (!Application::AnyInput( INPUT_APPEVENT ) ) - ) + (!Application::AnyInput( INPUT_APPEVENT ) )) { - RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create BackingComponent" ); - Reference< XFrame > xDesktopFrame( xSMgr->createInstance( - OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY ); - if (xDesktopFrame.is()) - { - // SetSplashScreenProgress(60); - Reference< XFrame > xBackingFrame; - Reference< ::com::sun::star::awt::XWindow > xContainerWindow; - - xBackingFrame = xDesktopFrame->findFrame(OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" )), 0); - if (xBackingFrame.is()) - xContainerWindow = xBackingFrame->getContainerWindow(); - if (xContainerWindow.is()) - { - // set the WB_EXT_DOCUMENT style. Normally, this is done by the TaskCreator service when a "_blank" - // frame/window is created. Since we do not use the TaskCreator here, we need to mimic its behavior, - // otherwise documents loaded into this frame will later on miss functionality depending on the style. - Window* pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - OSL_ENSURE( pContainerWindow, "Desktop::Main: no implementation access to the frame's container window!" ); - pContainerWindow->SetExtendedStyle( pContainerWindow->GetExtendedStyle() | WB_EXT_DOCUMENT ); - - SetSplashScreenProgress(75); - Sequence< Any > lArgs(1); - lArgs[0] <<= xContainerWindow; - - Reference< XController > xBackingComp( - xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs), - UNO_QUERY); - // SetSplashScreenProgress(80); + RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create BackingComponent" ); + Reference< XFrame > xDesktopFrame( xSMgr->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY ); + if (xDesktopFrame.is()) + { + Reference< XFrame > xBackingFrame; + Reference< ::com::sun::star::awt::XWindow > xContainerWindow; + + xBackingFrame = xDesktopFrame->findFrame(OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" )), 0); + if (xBackingFrame.is()) + xContainerWindow = xBackingFrame->getContainerWindow(); + if (xContainerWindow.is()) + { + // set the WB_EXT_DOCUMENT style. Normally, this is done by the TaskCreator service when a "_blank" + // frame/window is created. Since we do not use the TaskCreator here, we need to mimic its behavior, + // otherwise documents loaded into this frame will later on miss functionality depending on the style. + Window* pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + OSL_ENSURE( pContainerWindow, "Desktop::Main: no implementation access to the frame's container window!" ); + pContainerWindow->SetExtendedStyle( pContainerWindow->GetExtendedStyle() | WB_EXT_DOCUMENT ); + + SetSplashScreenProgress(75); + Sequence< Any > lArgs(1); + lArgs[0] <<= xContainerWindow; + + Reference< XController > xBackingComp( + xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs), UNO_QUERY); if (xBackingComp.is()) { Reference< ::com::sun::star::awt::XWindow > xBackingWin(xBackingComp, UNO_QUERY); @@ -1840,16 +1812,6 @@ void Desktop::Main() FatalError( MakeStartupErrorMessage(e.Message) ); return; } - /* - catch ( ... ) - { - FatalError( MakeStartupErrorMessage( - OUString::createFromAscii( - "Unknown error during startup (Office wrapper service).\nInstallation could be damaged."))); - return; - } - */ -// SetSplashScreenProgress(55); SvtFontSubstConfig().Apply(); @@ -1858,7 +1820,6 @@ void Desktop::Main() aAppearanceCfg.SetApplicationDefaults( this ); SvtAccessibilityOptions aOptions; aOptions.SetVCLSettings(); -// SetSplashScreenProgress(60); if ( !bRestartRequested ) { @@ -1892,15 +1853,6 @@ void Desktop::Main() FatalError( MakeStartupErrorMessage(e.Message) ); return; } - /* - catch ( ... ) - { - FatalError( MakeStartupErrorMessage( - OUString::createFromAscii( - "Unknown error during startup (TD/Desktop service).\nInstallation could be damaged."))); - return; - } - */ // Post user event to startup first application component window // We have to send this OpenClients message short before execute() to @@ -2219,12 +2171,7 @@ IMPL_LINK( Desktop, OpenClients_Impl, void*, EMPTYARG ) // CloseStartupScreen(); CloseSplashScreen(); - CheckFirstRun( ); - - // allow ipc interaction -// OfficeIPCThread::SetReady(); - EnableOleAutomation(); if (getenv ("OOO_EXIT_POST_STARTUP")) @@ -2721,16 +2668,6 @@ void Desktop::OpenClients() if ( ! bAllowRecoveryAndSessionManagement ) { - /* - ::comphelper::ConfigurationHelper::writeDirectKey( - ::comphelper::getProcessServiceFactory(), - ::rtl::OUString::createFromAscii("org.openoffice.Office.Recovery"), - ::rtl::OUString::createFromAscii("AutoSave"), - ::rtl::OUString::createFromAscii("Enabled"), - ::com::sun::star::uno::makeAny(sal_False), - ::comphelper::ConfigurationHelper::E_STANDARD); - - */ try { Reference< XDispatch > xRecovery( diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx index 0625191ee2ea..14b4fd1d6ddc 100644 --- a/desktop/source/app/cmdlineargs.cxx +++ b/desktop/source/app/cmdlineargs.cxx @@ -142,15 +142,16 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier ) UNO_QUERY); // parse command line arguments - sal_Bool bPrintEvent = sal_False; - sal_Bool bOpenEvent = sal_True; - sal_Bool bViewEvent = sal_False; - sal_Bool bStartEvent = sal_False; - sal_Bool bPrintToEvent = sal_False; - sal_Bool bPrinterName = sal_False; - sal_Bool bForceOpenEvent = sal_False; - sal_Bool bForceNewEvent = sal_False; - sal_Bool bDisplaySpec = sal_False; + bool bOpenEvent(true); + bool bPrintEvent(false); + bool bViewEvent(false); + bool bStartEvent(false); + bool bPrintToEvent(false); + bool bPrinterName(false); + bool bForceOpenEvent(false); + bool bForceNewEvent(false); + bool bDisplaySpec(false); + bool bOpenDoc(false); m_eArgumentCount = NONE; @@ -169,8 +170,8 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier ) if (tmp.getLength() > 0) aArg = tmp; } - String aArgStr = aArg; + String aArgStr = aArg; if ( aArg.getLength() > 0 ) { m_eArgumentCount = m_eArgumentCount == NONE ? ONE : MANY; @@ -182,98 +183,98 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier ) if ( aArgStr.EqualsIgnoreCaseAscii( "-n" )) { // force new documents based on the following documents - bForceNewEvent = sal_True; - bOpenEvent = sal_False; - bForceOpenEvent = sal_False; - bPrintToEvent = sal_False; - bPrintEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; - } + bForceNewEvent = true; + bOpenEvent = false; + bForceOpenEvent = false; + bPrintToEvent = false; + bPrintEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; + } else if ( aArgStr.EqualsIgnoreCaseAscii( "-o" )) { - // force open documents regards if they are templates or not - bForceOpenEvent = sal_True; - bOpenEvent = sal_False; - bForceNewEvent = sal_False; - bPrintToEvent = sal_False; - bPrintEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; - } + // force open documents regardless if they are templates or not + bForceOpenEvent = true; + bOpenEvent = false; + bForceNewEvent = false; + bPrintToEvent = false; + bPrintEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; + } else if ( aArgStr.EqualsIgnoreCaseAscii( "-pt" )) { // Print to special printer - bPrintToEvent = sal_True; - bPrinterName = sal_True; - bPrintEvent = sal_False; - bOpenEvent = sal_False; - bForceNewEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; - bForceOpenEvent = sal_False; - } - else if ( aArgStr.EqualsIgnoreCaseAscii( "-p" )) - { + bPrintToEvent = true; + bPrinterName = true; + bPrintEvent = false; + bOpenEvent = false; + bForceNewEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; + bForceOpenEvent = false; + } + else if ( aArgStr.EqualsIgnoreCaseAscii( "-p" )) + { // Print to default printer - bPrintEvent = sal_True; - bPrintToEvent = sal_False; - bOpenEvent = sal_False; - bForceNewEvent = sal_False; - bForceOpenEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; - } - else if ( aArgStr.EqualsIgnoreCaseAscii( "-view" )) - { + bPrintEvent = true; + bPrintToEvent = false; + bOpenEvent = false; + bForceNewEvent = false; + bForceOpenEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; + } + else if ( aArgStr.EqualsIgnoreCaseAscii( "-view" )) + { // open in viewmode - bOpenEvent = sal_False; - bPrintEvent = sal_False; - bPrintToEvent = sal_False; - bForceNewEvent = sal_False; - bForceOpenEvent = sal_False; - bViewEvent = sal_True; - bStartEvent = sal_False; - bDisplaySpec = sal_False; - } + bOpenEvent = false; + bPrintEvent = false; + bPrintToEvent = false; + bForceNewEvent = false; + bForceOpenEvent = false; + bViewEvent = true; + bStartEvent = false; + bDisplaySpec = false; + } else if ( aArgStr.EqualsIgnoreCaseAscii( "-show" )) { // open in viewmode - bOpenEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_True; - bPrintEvent = sal_False; - bPrintToEvent = sal_False; - bForceNewEvent = sal_False; - bForceOpenEvent = sal_False; - bDisplaySpec = sal_False; + bOpenEvent = false; + bViewEvent = false; + bStartEvent = true; + bPrintEvent = false; + bPrintToEvent = false; + bForceNewEvent = false; + bForceOpenEvent = false; + bDisplaySpec = false; } else if ( aArgStr.EqualsIgnoreCaseAscii( "-display" )) { // set display - bOpenEvent = sal_False; - bPrintEvent = sal_False; - bForceOpenEvent = sal_False; - bPrintToEvent = sal_False; - bForceNewEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_True; + bOpenEvent = false; + bPrintEvent = false; + bForceOpenEvent = false; + bPrintToEvent = false; + bForceNewEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = true; } else if ( aArgStr.EqualsIgnoreCaseAscii( "-language" )) { - bOpenEvent = sal_False; - bPrintEvent = sal_False; - bForceOpenEvent = sal_False; - bPrintToEvent = sal_False; - bForceNewEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; + bOpenEvent = false; + bPrintEvent = false; + bForceOpenEvent = false; + bPrintToEvent = false; + bForceNewEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; } #ifdef MACOSX @@ -285,14 +286,14 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier ) else if ( aArgStr.CompareToAscii( "-psn", 4 ) == COMPARE_EQUAL ) { // finder argument from MacOSX - bOpenEvent = sal_False; - bPrintEvent = sal_False; - bForceOpenEvent = sal_False; - bPrintToEvent = sal_False; - bForceNewEvent = sal_False; - bViewEvent = sal_False; - bStartEvent = sal_False; - bDisplaySpec = sal_False; + bOpenEvent = false; + bPrintEvent = false; + bForceOpenEvent = false; + bPrintToEvent = false; + bForceNewEvent = false; + bViewEvent = false; + bStartEvent = false; + bDisplaySpec = false; } #endif } @@ -308,29 +309,54 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier ) { // handle this argument as a filename if ( bOpenEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_OPENLIST, aArgStr ); + bOpenDoc = true; + } else if ( bViewEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_VIEWLIST, aArgStr ); + bOpenDoc = true; + } else if ( bStartEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_STARTLIST, aArgStr ); + bOpenDoc = true; + } else if ( bPrintEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_PRINTLIST, aArgStr ); + bOpenDoc = true; + } else if ( bPrintToEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_PRINTTOLIST, aArgStr ); + bOpenDoc = true; + } else if ( bForceNewEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_FORCENEWLIST, aArgStr ); + bOpenDoc = true; + } else if ( bForceOpenEvent ) + { AddStringListParam_Impl( CMD_STRINGPARAM_FORCEOPENLIST, aArgStr ); - else if ( bDisplaySpec ){ + bOpenDoc = true; + } + else if ( bDisplaySpec ) + { AddStringListParam_Impl( CMD_STRINGPARAM_DISPLAY, aArgStr ); - bDisplaySpec = sal_False; // only one display, not a lsit - bOpenEvent = sal_True; // set back to standard + bDisplaySpec = false; // only one display, not a lsit + bOpenEvent = true; // set back to standard } } } } } } + + if ( bOpenDoc ) + m_bDocumentArgs = true; } void CommandLineArgs::AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam ) @@ -432,8 +458,8 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-help" )) - || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-h" )) - || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-?" ))) + || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-h" )) + || aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-?" ))) { SetBoolParam_Impl( CMD_BOOLPARAM_HELP, sal_True ); return sal_True; @@ -473,18 +499,18 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& SetBoolParam_Impl( CMD_BOOLPARAM_HELPMATH, sal_True ); return sal_True; } - #ifdef MACOSX - /* #i84053# ignore -psn on Mac - Platform dependent #ifdef here is ugly, however this is currently - the only platform dependent parameter. Should more appear - we should find a better solution - */ +#ifdef MACOSX + /* #i84053# ignore -psn on Mac + Platform dependent #ifdef here is ugly, however this is currently + the only platform dependent parameter. Should more appear + we should find a better solution + */ else if ( aArg.compareToAscii( "-psn", 4 ) == 0 ) { SetBoolParam_Impl( CMD_BOOLPARAM_PSN, sal_True ); return sal_True; } - #endif +#endif else if ( aArgStr.Copy(0, 8).EqualsIgnoreCaseAscii( "-accept=" )) { AddStringListParam_Impl( CMD_STRINGPARAM_ACCEPT, aArgStr.Copy( 8 ) ); @@ -496,7 +522,7 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& return sal_True; } else if ( aArgStr.CompareIgnoreCaseToAscii( "-portal," , - RTL_CONSTASCII_LENGTH( "-portal," )) == COMPARE_EQUAL ) + RTL_CONSTASCII_LENGTH( "-portal," )) == COMPARE_EQUAL ) { AddStringListParam_Impl( CMD_STRINGPARAM_PORTAL, aArgStr.Copy( RTL_CONSTASCII_LENGTH( "-portal," )) ); return sal_True; @@ -504,13 +530,10 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& else if ( aArgStr.Copy( 0, 7 ).EqualsIgnoreCaseAscii( "-userid" )) { if ( aArgStr.Len() > 8 ) - { - rtl::OUString aUserDir = aArgStr; - AddStringListParam_Impl( - CMD_STRINGPARAM_USERDIR, - ::rtl::Uri::decode( aUserDir.copy( 8 ), - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8 ) ); + { + rtl::OUString aUserDir = aArgStr; + AddStringListParam_Impl( CMD_STRINGPARAM_USERDIR, + ::rtl::Uri::decode( aUserDir.copy( 8 ), rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 ) ); } return sal_True; } @@ -533,56 +556,64 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString& { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WRITER ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_WRITER, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_WRITER, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-calc" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_CALC ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_CALC, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_CALC, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-draw" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_DRAW ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_DRAW, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_DRAW, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-impress" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_IMPRESS ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_IMPRESS, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_IMPRESS, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-base" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_BASE ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_BASE, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_BASE, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-global" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_GLOBAL ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_GLOBAL, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_GLOBAL, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-math" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_MATH ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_MATH, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_MATH, sal_True ); + m_bDocumentArgs = true; return sal_True; } else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-web" )) == sal_True ) { sal_Bool bAlreadySet = CheckGroupMembers( CMD_GRPID_MODULE, CMD_BOOLPARAM_WEB ); if ( !bAlreadySet ) - SetBoolParam_Impl( CMD_BOOLPARAM_WEB, sal_True ); + SetBoolParam_Impl( CMD_BOOLPARAM_WEB, sal_True ); + m_bDocumentArgs = true; return sal_True; } @@ -605,12 +636,12 @@ sal_Bool CommandLineArgs::CheckGroupMembers( GroupParamId nGroupId, BoolParam nE void CommandLineArgs::ResetParamValues() { int i; - for ( i = 0; i < CMD_BOOLPARAM_COUNT; i++ ) m_aBoolParams[i] = sal_False; for ( i = 0; i < CMD_STRINGPARAM_COUNT; i++ ) m_aStrSetParams[i] = sal_False; m_eArgumentCount = NONE; + m_bDocumentArgs = false; } void CommandLineArgs::SetBoolParam( BoolParam eParam, sal_Bool bNewValue ) @@ -897,4 +928,10 @@ sal_Bool CommandLineArgs::IsEmptyOrAcceptOnly() const ( ( m_eArgumentCount == ONE ) && m_aBoolParams[ CMD_BOOLPARAM_PSN ] ); } +sal_Bool CommandLineArgs::WantsToLoadDocument() const +{ + osl::MutexGuard aMutexGuard( m_aMutex ); + return m_bDocumentArgs; +} + } // namespace desktop diff --git a/desktop/source/app/cmdlineargs.hxx b/desktop/source/app/cmdlineargs.hxx index 615577098c2d..a1c70bf5df72 100644 --- a/desktop/source/app/cmdlineargs.hxx +++ b/desktop/source/app/cmdlineargs.hxx @@ -38,7 +38,7 @@ namespace desktop class CommandLineArgs { public: - enum BoolParam // must be zero based! + enum BoolParam // must be zero based! { CMD_BOOLPARAM_MINIMIZED, CMD_BOOLPARAM_INVISIBLE, @@ -71,7 +71,7 @@ class CommandLineArgs CMD_BOOLPARAM_HELPIMPRESS, CMD_BOOLPARAM_HELPBASE, CMD_BOOLPARAM_PSN, - CMD_BOOLPARAM_COUNT // must be last element! + CMD_BOOLPARAM_COUNT // must be last element! }; enum StringParam // must be zero based! @@ -92,7 +92,7 @@ class CommandLineArgs CMD_STRINGPARAM_PRINTERNAME, CMD_STRINGPARAM_DISPLAY, CMD_STRINGPARAM_LANGUAGE, - CMD_STRINGPARAM_COUNT // must be last element! + CMD_STRINGPARAM_COUNT // must be last element! }; enum GroupParamId @@ -101,7 +101,8 @@ class CommandLineArgs CMD_GRPID_COUNT }; - struct Supplier { + struct Supplier + { // Thrown from constructors and next: class Exception { public: @@ -122,86 +123,88 @@ class CommandLineArgs boost::optional< rtl::OUString > getCwdUrl() const { return m_cwdUrl; } // generic methods to access parameter - void SetBoolParam( BoolParam eParam, sal_Bool bNewValue ); + void SetBoolParam( BoolParam eParam, sal_Bool bNewValue ); // Access to bool parameters - sal_Bool IsMinimized() const; - sal_Bool IsInvisible() const; - sal_Bool IsNoRestore() const; - sal_Bool IsNoDefault() const; - sal_Bool IsBean() const; - sal_Bool IsServer() const; - sal_Bool IsHeadless() const; - sal_Bool IsQuickstart() const; - sal_Bool IsNoQuickstart() const; - sal_Bool IsTerminateAfterInit() const; - sal_Bool IsNoFirstStartWizard() const; - sal_Bool IsNoLogo() const; - sal_Bool IsNoLockcheck() const; - sal_Bool IsHelp() const; - sal_Bool IsHelpWriter() const; - sal_Bool IsHelpCalc() const; - sal_Bool IsHelpDraw() const; - sal_Bool IsHelpImpress() const; - sal_Bool IsHelpBase() const; - sal_Bool IsHelpMath() const; - sal_Bool IsHelpBasic() const; - sal_Bool IsWriter() const; - sal_Bool IsCalc() const; - sal_Bool IsDraw() const; - sal_Bool IsImpress() const; - sal_Bool IsBase() const; - sal_Bool IsGlobal() const; - sal_Bool IsMath() const; - sal_Bool IsWeb() const; - sal_Bool HasModuleParam() const; + sal_Bool IsMinimized() const; + sal_Bool IsInvisible() const; + sal_Bool IsNoRestore() const; + sal_Bool IsNoDefault() const; + sal_Bool IsBean() const; + sal_Bool IsServer() const; + sal_Bool IsHeadless() const; + sal_Bool IsQuickstart() const; + sal_Bool IsNoQuickstart() const; + sal_Bool IsTerminateAfterInit() const; + sal_Bool IsNoFirstStartWizard() const; + sal_Bool IsNoLogo() const; + sal_Bool IsNoLockcheck() const; + sal_Bool IsHelp() const; + sal_Bool IsHelpWriter() const; + sal_Bool IsHelpCalc() const; + sal_Bool IsHelpDraw() const; + sal_Bool IsHelpImpress() const; + sal_Bool IsHelpBase() const; + sal_Bool IsHelpMath() const; + sal_Bool IsHelpBasic() const; + sal_Bool IsWriter() const; + sal_Bool IsCalc() const; + sal_Bool IsDraw() const; + sal_Bool IsImpress() const; + sal_Bool IsBase() const; + sal_Bool IsGlobal() const; + sal_Bool IsMath() const; + sal_Bool IsWeb() const; + sal_Bool HasModuleParam() const; + sal_Bool WantsToLoadDocument() const; // Access to string parameters - sal_Bool GetPortalConnectString( ::rtl::OUString& rPara) const; - sal_Bool GetAcceptString( ::rtl::OUString& rPara) const; - sal_Bool GetUnAcceptString( ::rtl::OUString& rPara) const; - sal_Bool GetOpenList( ::rtl::OUString& rPara) const; - sal_Bool GetViewList( ::rtl::OUString& rPara) const; - sal_Bool GetStartList( ::rtl::OUString& rPara) const; - sal_Bool GetForceOpenList( ::rtl::OUString& rPara) const; - sal_Bool GetForceNewList( ::rtl::OUString& rPara) const; - sal_Bool GetPrintList( ::rtl::OUString& rPara) const; - sal_Bool GetPrintToList( ::rtl::OUString& rPara ) const; - sal_Bool GetPrinterName( ::rtl::OUString& rPara ) const; - sal_Bool GetLanguage( ::rtl::OUString& rPara ) const; + sal_Bool GetPortalConnectString( ::rtl::OUString& rPara) const; + sal_Bool GetAcceptString( ::rtl::OUString& rPara) const; + sal_Bool GetUnAcceptString( ::rtl::OUString& rPara) const; + sal_Bool GetOpenList( ::rtl::OUString& rPara) const; + sal_Bool GetViewList( ::rtl::OUString& rPara) const; + sal_Bool GetStartList( ::rtl::OUString& rPara) const; + sal_Bool GetForceOpenList( ::rtl::OUString& rPara) const; + sal_Bool GetForceNewList( ::rtl::OUString& rPara) const; + sal_Bool GetPrintList( ::rtl::OUString& rPara) const; + sal_Bool GetPrintToList( ::rtl::OUString& rPara ) const; + sal_Bool GetPrinterName( ::rtl::OUString& rPara ) const; + sal_Bool GetLanguage( ::rtl::OUString& rPara ) const; // Special analyzed states (does not match directly to a command line parameter!) - sal_Bool IsPrinting() const; - sal_Bool IsEmpty() const; - sal_Bool IsEmptyOrAcceptOnly() const; + sal_Bool IsPrinting() const; + sal_Bool IsEmpty() const; + sal_Bool IsEmptyOrAcceptOnly() const; private: enum Count { NONE, ONE, MANY }; struct GroupDefinition { - sal_Int32 nCount; - BoolParam* pGroupMembers; + sal_Int32 nCount; + BoolParam* pGroupMembers; }; // no copy and operator= CommandLineArgs( const CommandLineArgs& ); CommandLineArgs operator=( const CommandLineArgs& ); - sal_Bool InterpretCommandLineParameter( const ::rtl::OUString& ); - void ParseCommandLine_Impl( Supplier& supplier ); - void ResetParamValues(); - sal_Bool CheckGroupMembers( GroupParamId nGroup, BoolParam nExcludeMember ) const; + sal_Bool InterpretCommandLineParameter( const ::rtl::OUString& ); + void ParseCommandLine_Impl( Supplier& supplier ); + void ResetParamValues(); + sal_Bool CheckGroupMembers( GroupParamId nGroup, BoolParam nExcludeMember ) const; - void AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam ); - void SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue ); + void AddStringListParam_Impl( StringParam eParam, const rtl::OUString& aParam ); + void SetBoolParam_Impl( BoolParam eParam, sal_Bool bValue ); boost::optional< rtl::OUString > m_cwdUrl; - sal_Bool m_aBoolParams[ CMD_BOOLPARAM_COUNT ]; // Stores boolean parameters - rtl::OUString m_aStrParams[ CMD_STRINGPARAM_COUNT ]; // Stores string parameters - sal_Bool m_aStrSetParams[ CMD_STRINGPARAM_COUNT ]; // Stores if string parameters are provided on cmdline - Count m_eArgumentCount; // Number of Args - mutable ::osl::Mutex m_aMutex; + sal_Bool m_aBoolParams[ CMD_BOOLPARAM_COUNT ]; // Stores boolean parameters + rtl::OUString m_aStrParams[ CMD_STRINGPARAM_COUNT ]; // Stores string parameters + sal_Bool m_aStrSetParams[ CMD_STRINGPARAM_COUNT ]; // Stores if string parameters are provided on cmdline + Count m_eArgumentCount; // Number of Args + bool m_bDocumentArgs; // A document creation/open/load arg is used + mutable ::osl::Mutex m_aMutex; // static definition for groups where only one member can be true static GroupDefinition m_pGroupDefinitions[ CMD_GRPID_COUNT ]; diff --git a/desktop/source/app/desktop.src b/desktop/source/app/desktop.src index 2f6897adf80e..98ee68685917 100644 --- a/desktop/source/app/desktop.src +++ b/desktop/source/app/desktop.src @@ -159,6 +159,7 @@ InfoBox INFOBOX_CMDLINEHELP ModalDialog DLG_CMDLINEHELP { + HelpID = "desktop:ModalDialog:DLG_CMDLINEHELP"; Text = "Help Message..."; Size = MAP_APPFONT(250, 365); Border = True; diff --git a/desktop/source/deployment/gui/dp_gui_dependencydialog.src b/desktop/source/deployment/gui/dp_gui_dependencydialog.src index fa7465678326..e7adbce9992b 100644 --- a/desktop/source/deployment/gui/dp_gui_dependencydialog.src +++ b/desktop/source/deployment/gui/dp_gui_dependencydialog.src @@ -34,6 +34,7 @@ #define LOCAL_LIST_HEIGHT (6 * RSC_BS_CHARHEIGHT) ModalDialog RID_DLG_DEPENDENCIES { + HelpID = "desktop:ModalDialog:RID_DLG_DEPENDENCIES"; Size = MAP_APPFONT( (RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH + RSC_SP_DLG_INNERBORDER_RIGHT), @@ -52,6 +53,7 @@ ModalDialog RID_DLG_DEPENDENCIES { NoLabel = TRUE; }; ListBox RID_DLG_DEPENDENCIES_LIST { + HelpID = "desktop:ListBox:RID_DLG_DEPENDENCIES:RID_DLG_DEPENDENCIES_LIST"; Pos = MAP_APPFONT( RSC_SP_DLG_INNERBORDER_LEFT, (RSC_SP_DLG_INNERBORDER_TOP + LOCAL_TEXT_HEIGHT + diff --git a/desktop/source/deployment/gui/dp_gui_dialog.src b/desktop/source/deployment/gui/dp_gui_dialog.src index 15823288ee20..665dbe5934d7 100755..100644 --- a/desktop/source/deployment/gui/dp_gui_dialog.src +++ b/desktop/source/deployment/gui/dp_gui_dialog.src @@ -169,6 +169,7 @@ String RID_STR_ERROR_MISSING_LICENSE ModalDialog RID_DLG_LICENSE { + HelpID = "desktop:ModalDialog:RID_DLG_LICENSE"; Text [ en-US ] = "Extension Software License Agreement"; Size = MAP_APPFONT(LIC_DLG_WIDTH, LIC_DLG_HEIGHT); @@ -181,6 +182,7 @@ ModalDialog RID_DLG_LICENSE MultiLineEdit ML_LICENSE { + HelpID = "desktop:MultiLineEdit:RID_DLG_LICENSE:ML_LICENSE"; Pos = MAP_APPFONT(COL1_X, ROW1_Y); Size = MAP_APPFONT(BODYWIDTH, ROW1_HEIGHT); Border = TRUE; @@ -230,6 +232,7 @@ ModalDialog RID_DLG_LICENSE }; PushButton PB_LICENSE_DOWN { + HelpID = "desktop:PushButton:RID_DLG_LICENSE:PB_LICENSE_DOWN"; TabStop = TRUE ; Pos = MAP_APPFONT(COL5_X , ROW3_Y) ; Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT) ; diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.src b/desktop/source/deployment/gui/dp_gui_dialog2.src index 7c47365999a0..996c96b1d083 100644 --- a/desktop/source/deployment/gui/dp_gui_dialog2.src +++ b/desktop/source/deployment/gui/dp_gui_dialog2.src @@ -43,6 +43,7 @@ ModelessDialog RID_DLG_EXTENSION_MANAGER PushButton RID_EM_BTN_ADD { + HelpID = "desktop:PushButton:RID_DLG_EXTENSION_MANAGER:RID_EM_BTN_ADD"; TabStop = TRUE; Text [ en-US ] = "~Add..."; Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -50,6 +51,7 @@ ModelessDialog RID_DLG_EXTENSION_MANAGER PushButton RID_EM_BTN_CHECK_UPDATES { + HelpID = "desktop:PushButton:RID_DLG_EXTENSION_MANAGER:RID_EM_BTN_CHECK_UPDATES"; TabStop = TRUE; Text [ en-US ] = "Check for ~Updates..."; Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -131,6 +133,7 @@ ModalDialog RID_DLG_UPDATE_REQUIRED PushButton RID_EM_BTN_CHECK_UPDATES { + HelpID = "desktop:PushButton:RID_DLG_UPDATE_REQUIRED:RID_EM_BTN_CHECK_UPDATES"; TabStop = TRUE; Text [ en-US ] = "Check for ~Updates..."; Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -138,6 +141,7 @@ ModalDialog RID_DLG_UPDATE_REQUIRED PushButton RID_EM_BTN_CLOSE { + HelpID = "desktop:PushButton:RID_DLG_UPDATE_REQUIRED:RID_EM_BTN_CLOSE"; TabStop = TRUE; DefButton = TRUE; Text [ en-US ] = "Disable all"; diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx index 24b47aa223e3..5f9de3965199 100755..100644 --- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx +++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx @@ -71,29 +71,34 @@ Entry_Impl::Entry_Impl( const uno::Reference< deployment::XPackage > &xPackage, m_pPublisher( NULL ), m_xPackage( xPackage ) { - m_sTitle = xPackage->getDisplayName(); - m_sVersion = xPackage->getVersion(); - m_sDescription = xPackage->getDescription(); - - beans::StringPair aInfo( m_xPackage->getPublisherInfo() ); - m_sPublisher = aInfo.First; - m_sPublisherURL = aInfo.Second; - - // get the icons for the package if there are any - uno::Reference< graphic::XGraphic > xGraphic = xPackage->getIcon( false ); - if ( xGraphic.is() ) - m_aIcon = Image( xGraphic ); - - xGraphic = xPackage->getIcon( true ); - if ( xGraphic.is() ) - m_aIconHC = Image( xGraphic ); - else - m_aIconHC = m_aIcon; + try + { + m_sTitle = xPackage->getDisplayName(); + m_sVersion = xPackage->getVersion(); + m_sDescription = xPackage->getDescription(); + + beans::StringPair aInfo( m_xPackage->getPublisherInfo() ); + m_sPublisher = aInfo.First; + m_sPublisherURL = aInfo.Second; + + // get the icons for the package if there are any + uno::Reference< graphic::XGraphic > xGraphic = xPackage->getIcon( false ); + if ( xGraphic.is() ) + m_aIcon = Image( xGraphic ); + + xGraphic = xPackage->getIcon( true ); + if ( xGraphic.is() ) + m_aIconHC = Image( xGraphic ); + else + m_aIconHC = m_aIcon; - if ( eState == AMBIGUOUS ) - m_sErrorText = DialogHelper::getResourceString( RID_STR_ERROR_UNKNOWN_STATUS ); - else if ( eState == NOT_REGISTERED ) - checkDependencies(); + if ( eState == AMBIGUOUS ) + m_sErrorText = DialogHelper::getResourceString( RID_STR_ERROR_UNKNOWN_STATUS ); + else if ( eState == NOT_REGISTERED ) + checkDependencies(); + } + catch (deployment::ExtensionRemovedException &) {} + catch (uno::RuntimeException &) {} } //------------------------------------------------------------------------------ @@ -963,6 +968,11 @@ long ExtensionBox_Impl::addEntry( const uno::Reference< deployment::XPackage > & bool bLocked = m_pManager->isReadOnly( xPackage ); TEntry_Impl pEntry( new Entry_Impl( xPackage, eState, bLocked ) ); + + // Don't add empty entries + if ( ! pEntry->m_sTitle.Len() ) + return 0; + xPackage->addEventListener( uno::Reference< lang::XEventListener > ( m_xRemoveListener, uno::UNO_QUERY ) ); ::osl::ClearableMutexGuard guard(m_entriesMutex); diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.src b/desktop/source/deployment/gui/dp_gui_updatedialog.src index 325d98c88d48..20b7d30988fd 100644 --- a/desktop/source/deployment/gui/dp_gui_updatedialog.src +++ b/desktop/source/deployment/gui/dp_gui_updatedialog.src @@ -86,6 +86,7 @@ ModalDialog RID_DLG_UPDATE { TabStop = TRUE; }; CheckBox RID_DLG_UPDATE_ALL { + HelpID = "desktop:CheckBox:RID_DLG_UPDATE:RID_DLG_UPDATE_ALL"; Disable = TRUE; Pos = MAP_APPFONT( RSC_SP_DLG_INNERBORDER_LEFT, @@ -150,6 +151,7 @@ ModalDialog RID_DLG_UPDATE { Text[en-US] = "Release Notes"; }; MultiLineEdit RID_DLG_UPDATE_DESCRIPTIONS { + HelpID = "desktop:MultiLineEdit:RID_DLG_UPDATE:RID_DLG_UPDATE_DESCRIPTIONS"; Disable = TRUE; Border = TRUE; Pos = MAP_APPFONT( @@ -183,6 +185,7 @@ ModalDialog RID_DLG_UPDATE { Size = MAP_APPFONT(RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT); }; PushButton RID_DLG_UPDATE_OK { + HelpID = "desktop:PushButton:RID_DLG_UPDATE:RID_DLG_UPDATE_OK"; Disable = TRUE; Pos = MAP_APPFONT( (RSC_SP_DLG_INNERBORDER_LEFT + LOCAL_WIDTH - RSC_CD_PUSHBUTTON_WIDTH - diff --git a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src index d77dd256582c..f7cc93493b5d 100644 --- a/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src +++ b/desktop/source/deployment/gui/dp_gui_updateinstalldialog.src @@ -90,6 +90,7 @@ ModalDialog RID_DLG_UPDATEINSTALL { }; MultiLineEdit RID_DLG_UPDATE_INSTALL_INFO { + HelpID = "desktop:MultiLineEdit:RID_DLG_UPDATEINSTALL:RID_DLG_UPDATE_INSTALL_INFO"; Pos = MAP_APPFONT( RSC_SP_DLG_INNERBORDER_LEFT, RSC_SP_DLG_INNERBORDER_TOP + RSC_CD_FIXEDTEXT_HEIGHT + diff --git a/desktop/source/deployment/registry/package/dp_package.cxx b/desktop/source/deployment/registry/package/dp_package.cxx index feb55d0af3bf..7f262d66684b 100644..100755 --- a/desktop/source/deployment/registry/package/dp_package.cxx +++ b/desktop/source/deployment/registry/package/dp_package.cxx @@ -986,16 +986,20 @@ OUString BackendImpl::PackageImpl::getDescription() if (sRelativeURL.getLength()) { OUString sURL = m_url_expanded + OUSTR("/") + sRelativeURL; - sDescription = getTextFromURL( - css::uno::Reference< css::ucb::XCommandEnvironment >(), sURL); + try + { + sDescription = getTextFromURL( css::uno::Reference< css::ucb::XCommandEnvironment >(), sURL ); + } + catch ( css::deployment::DeploymentException& ) + { + OSL_ENSURE( 0, ::rtl::OUStringToOString( ::comphelper::anyToString( ::cppu::getCaughtException() ), RTL_TEXTENCODING_UTF8 ).getStr() ); + } } + if (sDescription.getLength()) return sDescription; - else if(m_oldDescription.getLength()) - return m_oldDescription; - else - return OUString(); + return m_oldDescription; } //______________________________________________________________________________ diff --git a/desktop/source/inc/helpid.hrc b/desktop/source/inc/helpid.hrc index 2619c4398881..d96b12196342 100644 --- a/desktop/source/inc/helpid.hrc +++ b/desktop/source/inc/helpid.hrc @@ -28,51 +28,40 @@ #if ! defined INCLUDED_DESKTOP_HELPID_HRC #define INCLUDED_DESKTOP_HELPID_HRC -#include "svl/solar.hrc" +#define HID_PACKAGE_MANAGER "DESKTOP_HID_PACKAGE_MANAGER" +#define HID_PACKAGE_MANAGER_TREELISTBOX "DESKTOP_HID_PACKAGE_MANAGER_TREELISTBOX" +#define HID_PACKAGE_MANAGER_PROGRESS "DESKTOP_HID_PACKAGE_MANAGER_PROGRESS" +#define HID_PACKAGE_MANAGER_PROGRESS_CANCEL "DESKTOP_HID_PACKAGE_MANAGER_PROGRESS_CANCEL" +#define HID_PACKAGE_MANAGER_MENU_ITEM "DESKTOP_HID_PACKAGE_MANAGER_MENU_ITEM" -#define HID_GLOBAL_FALLBACK 0xFFFFFFFF +#define HID_FIRSTSTART_DIALOG "DESKTOP_HID_FIRSTSTART_DIALOG" +#define HID_FIRSTSTART_WELCOME "DESKTOP_HID_FIRSTSTART_WELCOME" +#define HID_FIRSTSTART_LICENSE "DESKTOP_HID_FIRSTSTART_LICENSE" +#define HID_FIRSTSTART_MIGRATION "DESKTOP_HID_FIRSTSTART_MIGRATION" +#define HID_FIRSTSTART_REGISTRATION "DESKTOP_HID_FIRSTSTART_REGISTRATION" +#define HID_FIRSTSTART_USER "DESKTOP_HID_FIRSTSTART_USER" +#define HID_FIRSTSTART_PREV "DESKTOP_HID_FIRSTSTART_PREV" +#define HID_FIRSTSTART_NEXT "DESKTOP_HID_FIRSTSTART_NEXT" +#define HID_FIRSTSTART_CANCEL "DESKTOP_HID_FIRSTSTART_CANCEL" +#define HID_FIRSTSTART_FINISH "DESKTOP_HID_FIRSTSTART_FINISH" +#define UID_FIRSTSTART_HELP "DESKTOP_UID_FIRSTSTART_HELP" +#define UID_BTN_LICENSE_ACCEPT "DESKTOP_UID_BTN_LICENSE_ACCEPT" +#define HID_FIRSTSTART_UPDATE_CHECK "DESKTOP_HID_FIRSTSTART_UPDATE_CHECK" +#define HID_DEPLOYMENT_GUI_UPDATE "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE" +#define HID_DEPLOYMENT_GUI_UPDATEINSTALL "DESKTOP_HID_DEPLOYMENT_GUI_UPDATEINSTALL" +#define HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER" +#define HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES" +#define HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES "DESKTOP_HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES" -#define HID_PACKAGE_MANAGER (HID_DESKTOP_START + 0) -#define HID_PACKAGE_MANAGER_TREELISTBOX (HID_DESKTOP_START + 1) -#define HID_PACKAGE_MANAGER_PROGRESS (HID_DESKTOP_START + 2) -#define HID_PACKAGE_MANAGER_PROGRESS_CANCEL (HID_DESKTOP_START + 3) -#define HID_PACKAGE_MANAGER_MENU_ITEM (HID_DESKTOP_START + 4) +#define HID_EXTENSION_MANAGER_LISTBOX "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX" +#define HID_EXTENSION_MANAGER_LISTBOX_OPTIONS "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_OPTIONS" +#define HID_EXTENSION_MANAGER_LISTBOX_ENABLE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_ENABLE" +#define HID_EXTENSION_MANAGER_LISTBOX_DISABLE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_DISABLE" +#define HID_EXTENSION_MANAGER_LISTBOX_REMOVE "DESKTOP_HID_EXTENSION_MANAGER_LISTBOX_REMOVE" -#define HID_FIRSTSTART_DIALOG (HID_DESKTOP_START + 5) -#define HID_FIRSTSTART_WELCOME (HID_DESKTOP_START + 6) -#define HID_FIRSTSTART_LICENSE (HID_DESKTOP_START + 7) -#define HID_FIRSTSTART_MIGRATION (HID_DESKTOP_START + 8) -#define HID_FIRSTSTART_REGISTRATION (HID_DESKTOP_START + 9) -#define HID_FIRSTSTART_USER (HID_DESKTOP_START + 10) -#define HID_FIRSTSTART_PREV (HID_DESKTOP_START + 11) -#define HID_FIRSTSTART_NEXT (HID_DESKTOP_START + 12) -#define HID_FIRSTSTART_CANCEL (HID_DESKTOP_START + 13) -#define HID_FIRSTSTART_FINISH (HID_DESKTOP_START + 14) -#define UID_FIRSTSTART_HELP (HID_DESKTOP_START + 15) -#define UID_BTN_LICENSE_ACCEPT (HID_DESKTOP_START + 16) -#define HID_FIRSTSTART_UPDATE_CHECK (HID_DESKTOP_START + 17) -#define HID_DEPLOYMENT_GUI_UPDATE (HID_DESKTOP_START + 18) -#define HID_DEPLOYMENT_GUI_UPDATEINSTALL (HID_DESKTOP_START + 19) -#define HID_DEPLOYMENT_GUI_UPDATE_PUBLISHER (HID_DESKTOP_START + 20) -#define HID_DEPLOYMENT_GUI_UPDATE_RELEASENOTES (HID_DESKTOP_START + 21) -#define HID_DEPLOYMENT_GUI_UPDATE_AVAILABLE_UPDATES (HID_DESKTOP_START + 22) +#define HID_EXTENSION_DEPENDENCIES "DESKTOP_HID_EXTENSION_DEPENDENCIES" -#define HID_EXTENSION_MANAGER_LISTBOX (HID_DESKTOP_START + 23) -#define HID_EXTENSION_MANAGER_LISTBOX_OPTIONS (HID_DESKTOP_START + 24) -#define HID_EXTENSION_MANAGER_LISTBOX_ENABLE (HID_DESKTOP_START + 25) -#define HID_EXTENSION_MANAGER_LISTBOX_DISABLE (HID_DESKTOP_START + 26) -#define HID_EXTENSION_MANAGER_LISTBOX_REMOVE (HID_DESKTOP_START + 27) - -#define HID_EXTENSION_DEPENDENCIES (HID_DESKTOP_START + 28) - -#define HID_PACKAGE_MANAGER_UPD_REQ (HID_DESKTOP_START + 29) - -#define ACT_DESKTOP_HID_END HID_PACKAGE_MANAGER_UPD_REQ - -// check bounds: -#if ACT_DESKTOP_HID_END > HID_DESKTOP_END -#error Resource overflow in #line, #file -#endif +#define HID_PACKAGE_MANAGER_UPD_REQ "DESKTOP_HID_PACKAGE_MANAGER_UPD_REQ" #endif diff --git a/desktop/source/migration/wizard.cxx b/desktop/source/migration/wizard.cxx index 81a789a613b9..5cc90577aaff 100644 --- a/desktop/source/migration/wizard.cxx +++ b/desktop/source/migration/wizard.cxx @@ -209,7 +209,6 @@ FirstStartWizard::FirstStartWizard( Window* pParent, sal_Bool bLicenseNeedsAccep m_aDefaultPath = defineWizardPagesDependingFromContext(); activatePath(m_aDefaultPath, sal_True); - enterState(STATE_WELCOME); ActivatePage(); // set text of finish putton: diff --git a/desktop/source/migration/wizard.src b/desktop/source/migration/wizard.src index 9c1ab5496d39..e690e130c74f 100644 --- a/desktop/source/migration/wizard.src +++ b/desktop/source/migration/wizard.src @@ -188,6 +188,7 @@ TabPage TP_LICENSE }; MultiLineEdit ML_LICENSE { + HelpID = "desktop:MultiLineEdit:TP_LICENSE:ML_LICENSE"; PosSize = MAP_APPFONT (MARGINLEFT+INDENT, MARGINTOP + 8*ROWHEIGHT, BODYWIDTH-INDENT , BODYHEIGHT - 8*ROWHEIGHT - 20-2*MARGINBOTTOM) ; Border = TRUE; VScroll = TRUE; @@ -195,6 +196,7 @@ TabPage TP_LICENSE }; PushButton PB_LICENSE_DOWN { + HelpID = "desktop:PushButton:TP_LICENSE:PB_LICENSE_DOWN"; TabStop = TRUE ; Pos = MAP_APPFONT ( TP_WIDTH-MARGINRIGHT-50 , TP_HEIGHT-MARGINBOTTOM-18 ) ; Size = MAP_APPFONT ( 50, 15 ) ; @@ -240,6 +242,7 @@ TabPage TP_MIGRATION CheckBox CB_MIGRATION { + HelpID = "desktop:CheckBox:TP_MIGRATION:CB_MIGRATION"; Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*10); Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*2); Check = TRUE; @@ -275,6 +278,7 @@ TabPage TP_UPDATE_CHECK CheckBox CB_UPDATE_CHECK { + HelpID = "desktop:CheckBox:TP_UPDATE_CHECK:CB_UPDATE_CHECK"; Pos = MAP_APPFONT(MARGINLEFT, MARGINTOP+ROWHEIGHT*10); Size = MAP_APPFONT(BODYWIDTH, ROWHEIGHT*2); Check = TRUE; @@ -321,6 +325,7 @@ TabPage TP_USER }; Edit ED_USER_FIRST { + HelpID = "desktop:Edit:TP_USER:ED_USER_FIRST"; Border = TRUE; Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*7); Size = MAP_APPFONT(BODYWIDTH-USERINDENT, EDHEIGHT); @@ -333,6 +338,7 @@ TabPage TP_USER }; Edit ED_USER_LAST { + HelpID = "desktop:Edit:TP_USER:ED_USER_LAST"; Border = TRUE; Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*9); Size = MAP_APPFONT(BODYWIDTH-USERINDENT, EDHEIGHT); @@ -345,6 +351,7 @@ TabPage TP_USER }; Edit ED_USER_INITIALS { + HelpID = "desktop:Edit:TP_USER:ED_USER_INITIALS"; Border = TRUE; Pos = MAP_APPFONT(MARGINLEFT+USERINDENT, MARGINTOP+ROWHEIGHT*11); Size = MAP_APPFONT(INITIALSWIDTH, EDHEIGHT); @@ -359,6 +366,7 @@ TabPage TP_USER }; Edit ED_USER_FATHER { + HelpID = "desktop:Edit:TP_USER:ED_USER_FATHER"; Border = TRUE; Hide = TRUE; Pos = MAP_APPFONT(MARGINLEFT+USERINDENT*2+INITIALSWIDTH+10, MARGINTOP+ROWHEIGHT*11); @@ -391,6 +399,7 @@ TabPage TP_REGISTRATION }; RadioButton RB_REGISTRATION_NOW { + HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_NOW"; Text [ en-US ] = "I want to register ~now"; Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2); Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT); @@ -398,12 +407,14 @@ TabPage TP_REGISTRATION }; RadioButton RB_REGISTRATION_LATER { + HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_LATER"; Text [ en-US ] = "I want to register ~later"; Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2+RB_HEIGHT); Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT); }; RadioButton RB_REGISTRATION_NEVER { + HelpID = "desktop:RadioButton:TP_REGISTRATION:RB_REGISTRATION_NEVER"; Text [ en-US ] = "I do not want to ~register"; Pos = MAP_APPFONT(MARGINLEFT+INDENT2, ROWHEIGHT*12+2+RB_HEIGHT*2); Size = MAP_APPFONT(BODYWIDTH-INDENT2, RSC_CD_CHECKBOX_HEIGHT); diff --git a/editeng/inc/editeng/svxrtf.hxx b/editeng/inc/editeng/svxrtf.hxx index 25d20fe0fdcd..10864b1850f1 100644 --- a/editeng/inc/editeng/svxrtf.hxx +++ b/editeng/inc/editeng/svxrtf.hxx @@ -37,6 +37,9 @@ #include <svl/svstdarr.hxx> #include <editeng/editengdllapi.h> +#include <deque> +#include <utility> +#include <vector> class Font; class Color; class Graphic; @@ -82,12 +85,15 @@ public: typedef Color* ColorPtr; -SV_DECL_PTRARR( SvxRTFColorTbl, ColorPtr, 16, 4 ) +typedef std::deque< ColorPtr > SvxRTFColorTbl; DECLARE_TABLE( SvxRTFFontTbl, Font* ) DECLARE_TABLE( SvxRTFStyleTbl, SvxRTFStyleType* ) typedef SvxRTFItemStackType* SvxRTFItemStackTypePtr; SV_DECL_PTRARR_DEL( SvxRTFItemStackList, SvxRTFItemStackTypePtr, 1, 1 ) -SV_DECL_PTRARR_STACK( SvxRTFItemStack, SvxRTFItemStackTypePtr, 0, 1 ) + +// SvxRTFItemStack can't be "std::stack< SvxRTFItemStackTypePtr >" type, because +// the methods are using operator[] in sw/source/filter/rtf/rtftbl.cxx file +typedef std::deque< SvxRTFItemStackTypePtr > SvxRTFItemStack; // einige Hilfsklassen fuer den RTF-Parser struct SvxRTFStyleType @@ -104,7 +110,7 @@ struct SvxRTFStyleType // Bitmap - Mode - +typedef ::std::vector< ::std::pair< ::rtl::OUString, ::rtl::OUString > > PictPropertyNameValuePairs; struct EDITENG_DLLPUBLIC SvxRTFPictureType { // Format der Bitmap @@ -135,7 +141,7 @@ struct EDITENG_DLLPUBLIC SvxRTFPictureType USHORT nWidthBytes; USHORT nScalX, nScalY; short nCropT, nCropB, nCropL, nCropR; - + PictPropertyNameValuePairs aPropertyPairs; SvxRTFPictureType() { ResetValues(); } // alle Werte auf default; wird nach einlesen der Bitmap aufgerufen ! void ResetValues(); @@ -376,7 +382,7 @@ public: virtual SvParserState CallParser(); // Aufruf des Parsers - inline const Color& GetColor( USHORT nId ) const; + inline const Color& GetColor( size_t nId ) const; const Font& GetFont( USHORT nId ); // aendert den dflt Font virtual int IsEndPara( SvxNodeIdx* pNd, xub_StrLen nCnt ) const = 0; @@ -451,12 +457,12 @@ public: }; -// ----------- Inline Implementierungen -------------- +// ----------- Inline Implementations -------------- -inline const Color& SvxRTFParser::GetColor( USHORT nId ) const +inline const Color& SvxRTFParser::GetColor( size_t nId ) const { ColorPtr pColor = (ColorPtr)pDfltColor; - if( nId < aColorTbl.Count() ) + if( nId < aColorTbl.size() ) pColor = aColorTbl[ nId ]; return *pColor; } @@ -464,7 +470,7 @@ inline const Color& SvxRTFParser::GetColor( USHORT nId ) const inline SfxItemSet& SvxRTFParser::GetAttrSet() { SvxRTFItemStackTypePtr pTmp; - if( bNewGroup || 0 == ( pTmp = aAttrStack.Top()) ) + if( bNewGroup || 0 == ( pTmp = aAttrStack.back()) ) pTmp = _GetAttrSet(); return pTmp->aAttrSet; } diff --git a/editeng/inc/helpid.hrc b/editeng/inc/helpid.hrc index 204f97842bf9..6d6c4822b037 100644 --- a/editeng/inc/helpid.hrc +++ b/editeng/inc/helpid.hrc @@ -30,52 +30,31 @@ #ifndef _EDITENG_HELPID_HRC #define _EDITENG_HELPID_HRC -// include --------------------------------------------------------------- - -#include <svl/solar.hrc> - -// Help-Ids -------------------------------------------------------------- -#define HID_EDITENG_SPELLER_WORDLANGUAGE (HID_EDIT_START) -#define HID_EDITENG_SPELLER_PARALANGUAGE (HID_EDIT_START + 1) -#define HID_EDITENG_SPELLER_ADDWORD (HID_EDIT_START + 2) -#define HID_EDITENG_SPELLER_AUTOCORRECT (HID_EDIT_START + 3) -#define HID_EDITENG_SPELLER_IGNORE (HID_EDIT_START + 4) -#define HID_EDITENG_SPELLER_START (HID_EDIT_START + 5) -#define HID_AUTOCORR_HELP_END (HID_EDIT_START + 6) -#define HID_AUTOCORR_HELP_START (HID_EDIT_START + 7) -#define HID_AUTOCORR_HELP_WORD HID_AUTOCORR_HELP_START - -#define HID_AUTOCORR_HELP_SENT (HID_AUTOCORR_HELP_START+1) -#define HID_AUTOCORR_HELP_SENTWORD (HID_AUTOCORR_HELP_START+2) -#define HID_AUTOCORR_HELP_ACORWORD (HID_AUTOCORR_HELP_START+3) - -#define HID_AUTOCORR_HELP_ACORSENTWORD (HID_AUTOCORR_HELP_START+5) - -#define HID_AUTOCORR_HELP_CHGTOENEMDASH (HID_AUTOCORR_HELP_START+7) -#define HID_AUTOCORR_HELP_WORDENEMDASH (HID_AUTOCORR_HELP_START+8) -#define HID_AUTOCORR_HELP_SENTENEMDASH (HID_AUTOCORR_HELP_START+9) -#define HID_AUTOCORR_HELP_SENTWORDENEMDASH (HID_AUTOCORR_HELP_START+10) -#define HID_AUTOCORR_HELP_ACORWORDENEMDASH (HID_AUTOCORR_HELP_START+11) - -#define HID_AUTOCORR_HELP_ACORSENTWORDENEMDASH (HID_AUTOCORR_HELP_START+13) -#define HID_AUTOCORR_HELP_CHGQUOTES (HID_AUTOCORR_HELP_START+15) -#define HID_AUTOCORR_HELP_CHGSGLQUOTES (HID_AUTOCORR_HELP_START+16) -#define HID_AUTOCORR_HELP_SETINETATTR (HID_AUTOCORR_HELP_START+17) -#define HID_AUTOCORR_HELP_INGNOREDOUBLESPACE (HID_AUTOCORR_HELP_START+18) -#define HID_AUTOCORR_HELP_CHGWEIGHTUNDERL (HID_AUTOCORR_HELP_START+19) -#define HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL (HID_AUTOCORR_HELP_START+20) -#define HID_AUTOCORR_HELP_CHGORDINALNUMBER (HID_AUTOCORR_HELP_START+21) // HID_EDIT_START + 28 - -// please adjust ACT_SVX_HID_END2 below if you add entries here! - -// ----------------------------------------------------------------------- -// Overrun check --------------------------------------------------------- -// ----------------------------------------------------------------------- - -#define ACT_SVX_HID_END (HID_EDIT_START+28) -#if ACT_SVX_HID_END > HID_EDIT_END -#error Resource-Ueberlauf in #line, #file -#endif +#define HID_EDITENG_SPELLER_WORDLANGUAGE "EDITENG_HID_EDITENG_SPELLER_WORDLANGUAGE" +#define HID_EDITENG_SPELLER_PARALANGUAGE "EDITENG_HID_EDITENG_SPELLER_PARALANGUAGE" +#define HID_EDITENG_SPELLER_ADDWORD "EDITENG_HID_EDITENG_SPELLER_ADDWORD" +#define HID_EDITENG_SPELLER_AUTOCORRECT "EDITENG_HID_EDITENG_SPELLER_AUTOCORRECT" +#define HID_EDITENG_SPELLER_IGNORE "EDITENG_HID_EDITENG_SPELLER_IGNORE" +#define HID_EDITENG_SPELLER_START "EDITENG_HID_EDITENG_SPELLER_START" + +#define HID_AUTOCORR_HELP_WORD "EDITENG_HID_AUTOCORR_HELP_START" +#define HID_AUTOCORR_HELP_SENT "EDITENG_HID_AUTOCORR_HELP_SENT" +#define HID_AUTOCORR_HELP_SENTWORD "EDITENG_HID_AUTOCORR_HELP_SENTWORD" +#define HID_AUTOCORR_HELP_ACORWORD "EDITENG_HID_AUTOCORR_HELP_ACORWORD" +#define HID_AUTOCORR_HELP_ACORSENTWORD "EDITENG_HID_AUTOCORR_HELP_ACORSENTWORD" +#define HID_AUTOCORR_HELP_CHGTOENEMDASH "EDITENG_HID_AUTOCORR_HELP_CHGTOENEMDASH" +#define HID_AUTOCORR_HELP_WORDENEMDASH "EDITENG_HID_AUTOCORR_HELP_WORDENEMDASH" +#define HID_AUTOCORR_HELP_SENTENEMDASH "EDITENG_HID_AUTOCORR_HELP_SENTENEMDASH" +#define HID_AUTOCORR_HELP_SENTWORDENEMDASH "EDITENG_HID_AUTOCORR_HELP_SENTWORDENEMDASH" +#define HID_AUTOCORR_HELP_ACORWORDENEMDASH "EDITENG_HID_AUTOCORR_HELP_ACORWORDENEMDASH" +#define HID_AUTOCORR_HELP_ACORSENTWORDENEMDASH "EDITENG_HID_AUTOCORR_HELP_ACORSENTWORDENEMDASH" +#define HID_AUTOCORR_HELP_CHGQUOTES "EDITENG_HID_AUTOCORR_HELP_CHGQUOTES" +#define HID_AUTOCORR_HELP_CHGSGLQUOTES "EDITENG_HID_AUTOCORR_HELP_CHGSGLQUOTES" +#define HID_AUTOCORR_HELP_SETINETATTR "EDITENG_HID_AUTOCORR_HELP_SETINETATTR" +#define HID_AUTOCORR_HELP_INGNOREDOUBLESPACE "EDITENG_HID_AUTOCORR_HELP_INGNOREDOUBLESPACE" +#define HID_AUTOCORR_HELP_CHGWEIGHTUNDERL "EDITENG_HID_AUTOCORR_HELP_CHGWEIGHTUNDERL" +#define HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL "EDITENG_HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL" +#define HID_AUTOCORR_HELP_CHGORDINALNUMBER "EDITENG_HID_AUTOCORR_HELP_CHGORDINALNUMBER" #endif diff --git a/editeng/inc/pch/precompiled_editeng.hxx b/editeng/inc/pch/precompiled_editeng.hxx index d82ecc6cb6b5..9d432f73a731 100644 --- a/editeng/inc/pch/precompiled_editeng.hxx +++ b/editeng/inc/pch/precompiled_editeng.hxx @@ -739,7 +739,6 @@ #include "svtools/parhtml.hxx" #include "svtools/parrtf.hxx" #include "unotools/pathoptions.hxx" -#include "svl/pickerhelper.hxx" #include "svl/poolitem.hxx" #include "unotools/printwarningoptions.hxx" #include "svl/ptitem.hxx" diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx index 9ac179a2a47f..a8b9efd1fff7 100644 --- a/editeng/source/editeng/editdoc.cxx +++ b/editeng/source/editeng/editdoc.cxx @@ -255,10 +255,6 @@ USHORT aV5Map[] = { }; SV_IMPL_PTRARR( DummyContentList, ContentNode* ); -SV_IMPL_VARARR( ScriptTypePosInfos, ScriptTypePosInfo ); -SV_IMPL_VARARR( WritingDirectionInfos, WritingDirectionInfo ); -// SV_IMPL_VARARR( ExtraCharInfos, ExtraCharInfo ); - int SAL_CALL CompareStart( const void* pFirst, const void* pSecond ) { diff --git a/editeng/source/editeng/editdoc.hxx b/editeng/source/editeng/editdoc.hxx index bf2e3d01852b..16b4da6f8429 100644 --- a/editeng/source/editeng/editdoc.hxx +++ b/editeng/source/editeng/editdoc.hxx @@ -40,6 +40,8 @@ #include <svl/itempool.hxx> #include <tools/table.hxx> +#include <deque> + class ImpEditEngine; class SvxTabStop; class SvtCTLOptions; @@ -96,7 +98,7 @@ struct ScriptTypePosInfo } }; -SV_DECL_VARARR( ScriptTypePosInfos, ScriptTypePosInfo, 0, 4 ) +typedef std::deque< ScriptTypePosInfo > ScriptTypePosInfos; struct WritingDirectionInfo { @@ -112,7 +114,8 @@ struct WritingDirectionInfo } }; -SV_DECL_VARARR( WritingDirectionInfos, WritingDirectionInfo, 0, 4 ) + +typedef std::deque< WritingDirectionInfo > WritingDirectionInfos; typedef EditCharAttrib* EditCharAttribPtr; SV_DECL_PTRARR( CharAttribArray, EditCharAttribPtr, 0, 4 ) diff --git a/editeng/source/editeng/editdoc2.cxx b/editeng/source/editeng/editdoc2.cxx index b2a83ffd6274..3610423ba3c0 100644 --- a/editeng/source/editeng/editdoc2.cxx +++ b/editeng/source/editeng/editdoc2.cxx @@ -238,9 +238,8 @@ void ParaPortion::MarkInvalid( USHORT nStart, short nDiff ) } } bInvalid = TRUE; - aScriptInfos.Remove( 0, aScriptInfos.Count() ); - aWritingDirectionInfos.Remove( 0, aWritingDirectionInfos.Count() ); -// aExtraCharInfos.Remove( 0, aExtraCharInfos.Count() ); + aScriptInfos.clear(); + aWritingDirectionInfos.clear(); } void ParaPortion::MarkSelectionInvalid( USHORT nStart, USHORT /* nEnd */ ) @@ -258,9 +257,8 @@ void ParaPortion::MarkSelectionInvalid( USHORT nStart, USHORT /* nEnd */ ) nInvalidDiff = 0; bInvalid = TRUE; bSimple = FALSE; - aScriptInfos.Remove( 0, aScriptInfos.Count() ); - aWritingDirectionInfos.Remove( 0, aWritingDirectionInfos.Count() ); -// aExtraCharInfos.Remove( 0, aExtraCharInfos.Count() ); + aScriptInfos.clear(); + aWritingDirectionInfos.clear(); } USHORT ParaPortion::GetLineNumber( USHORT nIndex ) diff --git a/editeng/source/editeng/eertfpar.cxx b/editeng/source/editeng/eertfpar.cxx index 9f919afb39d6..817949294444 100644 --- a/editeng/source/editeng/eertfpar.cxx +++ b/editeng/source/editeng/eertfpar.cxx @@ -54,6 +54,7 @@ void SvxRTFPictureType::ResetValues() nBitsPerPixel = nPlanes = 1; nScalX = nScalY = 100; // Skalierung in Prozent nCropT = nCropB = nCropL = nCropR = 0; + aPropertyPairs.clear(); } ImportInfo::ImportInfo( ImportState eSt, SvParser* pPrsrs, const ESelection& rSel ) diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 148ca08816ae..fe20464eb905 100755 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -1719,9 +1719,7 @@ void ImpEditEngine::InitScriptTypes( USHORT nPara ) { ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; - rTypes.Remove( 0, rTypes.Count() ); - -// pParaPortion->aExtraCharInfos.Remove( 0, pParaPortion->aExtraCharInfos.Count() ); + rTypes.clear(); ContentNode* pNode = pParaPortion->GetNode(); if ( pNode->Len() ) @@ -1770,19 +1768,19 @@ void ImpEditEngine::InitScriptTypes( USHORT nPara ) sal_Int32 nPos = 0; short nScriptType = _xBI->getScriptType( aOUText, nPos ); - rTypes.Insert( ScriptTypePosInfo( nScriptType, (USHORT)nPos, nTextLen ), rTypes.Count() ); + rTypes.push_back( ScriptTypePosInfo( nScriptType, (USHORT)nPos, nTextLen ) ); nPos = _xBI->endOfScript( aOUText, nPos, nScriptType ); while ( ( nPos != (-1) ) && ( nPos < nTextLen ) ) { - rTypes[rTypes.Count()-1].nEndPos = (USHORT)nPos; + rTypes.back().nEndPos = (USHORT)nPos; nScriptType = _xBI->getScriptType( aOUText, nPos ); long nEndPos = _xBI->endOfScript( aOUText, nPos, nScriptType ); - if ( ( nScriptType == i18n::ScriptType::WEAK ) || ( nScriptType == rTypes[rTypes.Count()-1].nScriptType ) ) + if ( ( nScriptType == i18n::ScriptType::WEAK ) || ( nScriptType == rTypes.back().nScriptType ) ) { // Expand last ScriptTypePosInfo, don't create weak or unecessary portions - rTypes[rTypes.Count()-1].nEndPos = (USHORT)nEndPos; + rTypes.back().nEndPos = (USHORT)nEndPos; } else { @@ -1793,26 +1791,26 @@ void ImpEditEngine::InitScriptTypes( USHORT nPara ) case U_ENCLOSING_MARK: case U_COMBINING_SPACING_MARK: --nPos; - rTypes[rTypes.Count()-1].nEndPos--; + rTypes.back().nEndPos--; break; } } - rTypes.Insert( ScriptTypePosInfo( nScriptType, (USHORT)nPos, nTextLen ), rTypes.Count() ); + rTypes.push_back( ScriptTypePosInfo( nScriptType, (USHORT)nPos, nTextLen ) ); } nPos = nEndPos; } if ( rTypes[0].nScriptType == i18n::ScriptType::WEAK ) - rTypes[0].nScriptType = ( rTypes.Count() > 1 ) ? rTypes[1].nScriptType : GetI18NScriptTypeOfLanguage( GetDefaultLanguage() ); + rTypes[0].nScriptType = ( rTypes.size() > 1 ) ? rTypes[1].nScriptType : GetI18NScriptTypeOfLanguage( GetDefaultLanguage() ); // create writing direction information: - if ( !pParaPortion->aWritingDirectionInfos.Count() ) + if ( pParaPortion->aWritingDirectionInfos.empty() ) InitWritingDirections( nPara ); // i89825: Use CTL font for numbers embedded into an RTL run: WritingDirectionInfos& rDirInfos = pParaPortion->aWritingDirectionInfos; - for ( USHORT n = 0; n < rDirInfos.Count(); ++n ) + for ( size_t n = 0; n < rDirInfos.size(); ++n ) { const xub_StrLen nStart = rDirInfos[n].nStartPos; const xub_StrLen nEnd = rDirInfos[n].nEndPos; @@ -1821,30 +1819,30 @@ void ImpEditEngine::InitScriptTypes( USHORT nPara ) if ( nCurrDirType % 2 == UBIDI_RTL || // text in RTL run ( nCurrDirType > UBIDI_LTR && !lcl_HasStrongLTR( aText, nStart, nEnd ) ) ) // non-strong text in embedded LTR run { - USHORT nIdx = 0; + size_t nIdx = 0; // Skip entries in ScriptArray which are not inside the RTL run: - while ( nIdx < rTypes.Count() && rTypes[nIdx].nStartPos < nStart ) + while ( nIdx < rTypes.size() && rTypes[nIdx].nStartPos < nStart ) ++nIdx; // Remove any entries *inside* the current run: - while ( nIdx < rTypes.Count() && rTypes[nIdx].nEndPos <= nEnd ) - rTypes.Remove( nIdx ); + while ( nIdx < rTypes.size() && rTypes[nIdx].nEndPos <= nEnd ) + rTypes.erase( rTypes.begin()+nIdx ); // special case: - if(nIdx < rTypes.Count() && rTypes[nIdx].nStartPos < nStart && rTypes[nIdx].nEndPos > nEnd) + if(nIdx < rTypes.size() && rTypes[nIdx].nStartPos < nStart && rTypes[nIdx].nEndPos > nEnd) { - rTypes.Insert( ScriptTypePosInfo( rTypes[nIdx].nScriptType, (USHORT)nEnd, rTypes[nIdx].nEndPos ), nIdx ); + rTypes.insert( rTypes.begin()+nIdx, ScriptTypePosInfo( rTypes[nIdx].nScriptType, (USHORT)nEnd, rTypes[nIdx].nEndPos ) ); rTypes[nIdx].nEndPos = nStart; } if( nIdx ) rTypes[nIdx - 1].nEndPos = nStart; - rTypes.Insert( ScriptTypePosInfo( i18n::ScriptType::COMPLEX, (USHORT)nStart, (USHORT)nEnd), nIdx ); + rTypes.insert( rTypes.begin()+nIdx, ScriptTypePosInfo( i18n::ScriptType::COMPLEX, (USHORT)nStart, (USHORT)nEnd) ); ++nIdx; - if( nIdx < rTypes.Count() ) + if( nIdx < rTypes.size() ) rTypes[nIdx].nStartPos = nEnd; } } @@ -1853,7 +1851,7 @@ void ImpEditEngine::InitScriptTypes( USHORT nPara ) USHORT nDebugStt = 0; USHORT nDebugEnd = 0; short nDebugType = 0; - for ( USHORT n = 0; n < rTypes.Count(); ++n ) + for ( size_t n = 0; n < rTypes.size(); ++n ) { nDebugStt = rTypes[n].nStartPos; nDebugEnd = rTypes[n].nEndPos; @@ -1874,12 +1872,12 @@ USHORT ImpEditEngine::GetScriptType( const EditPaM& rPaM, USHORT* pEndPos ) cons { USHORT nPara = GetEditDoc().GetPos( rPaM.GetNode() ); ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); - if ( !pParaPortion->aScriptInfos.Count() ) + if ( pParaPortion->aScriptInfos.empty() ) ((ImpEditEngine*)this)->InitScriptTypes( nPara ); ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; USHORT nPos = rPaM.GetIndex(); - for ( USHORT n = 0; n < rTypes.Count(); n++ ) + for ( size_t n = 0; n < rTypes.size(); n++ ) { if ( ( rTypes[n].nStartPos <= nPos ) && ( rTypes[n].nEndPos >= nPos ) ) { @@ -1906,7 +1904,7 @@ USHORT ImpEditEngine::GetScriptType( const EditSelection& rSel ) const for ( USHORT nPara = nStartPara; nPara <= nEndPara; nPara++ ) { ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); - if ( !pParaPortion->aScriptInfos.Count() ) + if ( pParaPortion->aScriptInfos.empty() ) ((ImpEditEngine*)this)->InitScriptTypes( nPara ); ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; @@ -1916,7 +1914,7 @@ USHORT ImpEditEngine::GetScriptType( const EditSelection& rSel ) const // well as with just moving the cursor from char to char. USHORT nS = ( nPara == nStartPara ) ? aSel.Min().GetIndex() : 0; USHORT nE = ( nPara == nEndPara ) ? aSel.Max().GetIndex() : pParaPortion->GetNode()->Len(); - for ( USHORT n = 0; n < rTypes.Count(); n++ ) + for ( size_t n = 0; n < rTypes.size(); n++ ) { if (rTypes[n].nStartPos <= nS && nE <= rTypes[n].nEndPos) { @@ -1947,12 +1945,12 @@ BOOL ImpEditEngine::IsScriptChange( const EditPaM& rPaM ) const { USHORT nPara = GetEditDoc().GetPos( rPaM.GetNode() ); ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); - if ( !pParaPortion->aScriptInfos.Count() ) + if ( pParaPortion->aScriptInfos.empty() ) ((ImpEditEngine*)this)->InitScriptTypes( nPara ); ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; USHORT nPos = rPaM.GetIndex(); - for ( USHORT n = 0; n < rTypes.Count(); n++ ) + for ( size_t n = 0; n < rTypes.size(); n++ ) { if ( rTypes[n].nStartPos == nPos ) { @@ -1969,11 +1967,11 @@ BOOL ImpEditEngine::HasScriptType( USHORT nPara, USHORT nType ) const BOOL bTypeFound = FALSE; ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); - if ( !pParaPortion->aScriptInfos.Count() ) + if ( pParaPortion->aScriptInfos.empty() ) ((ImpEditEngine*)this)->InitScriptTypes( nPara ); ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; - for ( USHORT n = rTypes.Count(); n && !bTypeFound; ) + for ( size_t n = rTypes.size(); n && !bTypeFound; ) { if ( rTypes[--n].nScriptType == nType ) bTypeFound = TRUE; @@ -1985,11 +1983,11 @@ void ImpEditEngine::InitWritingDirections( USHORT nPara ) { ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); WritingDirectionInfos& rInfos = pParaPortion->aWritingDirectionInfos; - rInfos.Remove( 0, rInfos.Count() ); + rInfos.clear(); BOOL bCTL = FALSE; ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; - for ( USHORT n = 0; n < rTypes.Count(); n++ ) + for ( size_t n = 0; n < rTypes.size(); n++ ) { if ( rTypes[n].nScriptType == i18n::ScriptType::COMPLEX ) { @@ -2014,16 +2012,16 @@ void ImpEditEngine::InitWritingDirections( USHORT nPara ) ubidi_setPara( pBidi, reinterpret_cast<const UChar *>(aText.GetBuffer()), aText.Len(), nBidiLevel, NULL, &nError ); // UChar != sal_Unicode in MinGW nError = U_ZERO_ERROR; - long nCount = ubidi_countRuns( pBidi, &nError ); + size_t nCount = ubidi_countRuns( pBidi, &nError ); int32_t nStart = 0; int32_t nEnd; UBiDiLevel nCurrDir; - for ( USHORT nIdx = 0; nIdx < nCount; ++nIdx ) + for ( size_t nIdx = 0; nIdx < nCount; ++nIdx ) { ubidi_getLogicalRun( pBidi, nStart, &nEnd, &nCurrDir ); - rInfos.Insert( WritingDirectionInfo( nCurrDir, (USHORT)nStart, (USHORT)nEnd ), rInfos.Count() ); + rInfos.push_back( WritingDirectionInfo( nCurrDir, (USHORT)nStart, (USHORT)nEnd ) ); nStart = nEnd; } @@ -2031,8 +2029,8 @@ void ImpEditEngine::InitWritingDirections( USHORT nPara ) } // No infos mean no CTL and default dir is L2R... - if ( !rInfos.Count() ) - rInfos.Insert( WritingDirectionInfo( 0, 0, (USHORT)pParaPortion->GetNode()->Len() ), rInfos.Count() ); + if ( rInfos.empty() ) + rInfos.push_back( WritingDirectionInfo( 0, 0, (USHORT)pParaPortion->GetNode()->Len() ) ); } @@ -2096,12 +2094,12 @@ BYTE ImpEditEngine::GetRightToLeft( USHORT nPara, USHORT nPos, USHORT* pStart, U if ( pNode && pNode->Len() ) { ParaPortion* pParaPortion = GetParaPortions().SaveGetObject( nPara ); - if ( !pParaPortion->aWritingDirectionInfos.Count() ) + if ( pParaPortion->aWritingDirectionInfos.empty() ) InitWritingDirections( nPara ); // BYTE nType = 0; WritingDirectionInfos& rDirInfos = pParaPortion->aWritingDirectionInfos; - for ( USHORT n = 0; n < rDirInfos.Count(); n++ ) + for ( size_t n = 0; n < rDirInfos.size(); n++ ) { if ( ( rDirInfos[n].nStartPos <= nPos ) && ( rDirInfos[n].nEndPos >= nPos ) ) { diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 08f50a0da884..14f3f35c66b1 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -2294,15 +2294,15 @@ void ImpEditEngine::CreateTextPortions( ParaPortion* pParaPortion, sal_uInt16& r } aPositions.Insert( pNode->Len() ); - if ( !pParaPortion->aScriptInfos.Count() ) + if ( pParaPortion->aScriptInfos.empty() ) ((ImpEditEngine*)this)->InitScriptTypes( GetParaPortions().GetPos( pParaPortion ) ); const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; - for ( USHORT nT = 0; nT < rTypes.Count(); nT++ ) + for ( size_t nT = 0; nT < rTypes.size(); nT++ ) aPositions.Insert( rTypes[nT].nStartPos ); const WritingDirectionInfos& rWritingDirections = pParaPortion->aWritingDirectionInfos; - for ( USHORT nD = 0; nD < rWritingDirections.Count(); nD++ ) + for ( size_t nD = 0; nD < rWritingDirections.size(); nD++ ) aPositions.Insert( rWritingDirections[nD].nStartPos ); if ( mpIMEInfos && mpIMEInfos->nLen && mpIMEInfos->pAttribs && ( mpIMEInfos->aPos.GetNode() == pNode ) ) diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index 46a0668394f2..b5225751a8cb 100755 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -397,8 +397,8 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel ) else if ( nScriptType == 2 ) nWhich = EE_CHAR_FONTINFO_CTL; - sal_uInt16 i = 0; - SvxFontItem* pFontItem = (SvxFontItem*)aEditDoc.GetItemPool().GetItem( nWhich, i ); + sal_uInt32 i = 0; + SvxFontItem* pFontItem = (SvxFontItem*)aEditDoc.GetItemPool().GetItem2( nWhich, i ); while ( pFontItem ) { bool bAlreadyExist = false; @@ -411,7 +411,7 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel ) if ( !bAlreadyExist ) aFontTable.Insert( aFontTable.Count(), new SvxFontItem( *pFontItem ) ); - pFontItem = (SvxFontItem*)aEditDoc.GetItemPool().GetItem( nWhich, ++i ); + pFontItem = (SvxFontItem*)aEditDoc.GetItemPool().GetItem2( nWhich, ++i ); } } @@ -467,17 +467,17 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel ) // ColorList rausschreiben... SvxColorList aColorList; - sal_uInt16 i = 0; - SvxColorItem* pColorItem = (SvxColorItem*)aEditDoc.GetItemPool().GetItem( EE_CHAR_COLOR, i ); + sal_uInt32 i = 0; + SvxColorItem* pColorItem = (SvxColorItem*)aEditDoc.GetItemPool().GetItem2( EE_CHAR_COLOR, i ); while ( pColorItem ) { - USHORT nPos = i; + sal_uInt32 nPos = i; if ( pColorItem->GetValue() == COL_AUTO ) nPos = 0; aColorList.Insert( new SvxColorItem( *pColorItem ), nPos ); - pColorItem = (SvxColorItem*)aEditDoc.GetItemPool().GetItem( EE_CHAR_COLOR, ++i ); + pColorItem = (SvxColorItem*)aEditDoc.GetItemPool().GetItem2( EE_CHAR_COLOR, ++i ); } - aColorList.Insert( new SvxColorItem( (const SvxColorItem&)aEditDoc.GetItemPool().GetDefaultItem( EE_CHAR_COLOR) ), (sal_uInt32)i ); + aColorList.Insert( new SvxColorItem( (const SvxColorItem&)aEditDoc.GetItemPool().GetDefaultItem( EE_CHAR_COLOR) ), i ); rOutput << '{' << OOO_STRING_SVTOOLS_RTF_COLORTBL; for ( j = 0; j < aColorList.Count(); j++ ) diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index f969a8033f08..ae977b2ed0d7 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -1387,6 +1387,32 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt, if( nRet ) { + const char* aHelpIds[] = + { + HID_AUTOCORR_HELP_WORD, + HID_AUTOCORR_HELP_SENT, + HID_AUTOCORR_HELP_SENTWORD, + HID_AUTOCORR_HELP_ACORWORD, + "", + HID_AUTOCORR_HELP_ACORSENTWORD, + "", + HID_AUTOCORR_HELP_CHGTOENEMDASH, + HID_AUTOCORR_HELP_WORDENEMDASH, + HID_AUTOCORR_HELP_SENTENEMDASH, + HID_AUTOCORR_HELP_SENTWORDENEMDASH, + HID_AUTOCORR_HELP_ACORWORDENEMDASH, + "", + HID_AUTOCORR_HELP_ACORSENTWORDENEMDASH, + "", + HID_AUTOCORR_HELP_CHGQUOTES, + HID_AUTOCORR_HELP_CHGSGLQUOTES, + HID_AUTOCORR_HELP_SETINETATTR, + HID_AUTOCORR_HELP_INGNOREDOUBLESPACE, + HID_AUTOCORR_HELP_CHGWEIGHTUNDERL, + HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL, + HID_AUTOCORR_HELP_CHGORDINALNUMBER + }; + ULONG nHelpId = 0; if( nRet & ( Autocorrect|CptlSttSntnc|CptlSttWrd|ChgToEnEmDash ) ) { @@ -1413,8 +1439,8 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt, if( nHelpId ) { - nHelpId += HID_AUTOCORR_HELP_START - 1; - Application::GetHelp()->OpenHelpAgent( nHelpId ); + nHelpId -= 1; + Application::GetHelp()->OpenHelpAgent( aHelpIds[nHelpId] ); } } diff --git a/editeng/source/misc/txtrange.cxx b/editeng/source/misc/txtrange.cxx index 61e4a5253ced..a69fd59439c2 100644 --- a/editeng/source/misc/txtrange.cxx +++ b/editeng/source/misc/txtrange.cxx @@ -196,7 +196,7 @@ public: SvxBoundArgs::SvxBoundArgs( TextRanger* pRanger, SvLongs *pLong, const Range& rRange ) - : aBoolArr( 4, 4 ), pLongArr( pLong ), pTextRanger( pRanger ), + : pLongArr( pLong ), pTextRanger( pRanger ), nTop( rRange.Min() ), nBottom( rRange.Max() ), bInner( pRanger->IsInner() ), bMultiple( bInner || !pRanger->IsSimple() ), bConcat( FALSE ), bRotate( pRanger->IsVertical() ) @@ -291,7 +291,7 @@ void SvxBoundArgs::NoteRange( BOOL bToggle ) bToggle = FALSE; USHORT nIdx = 0; USHORT nCount = pLongArr->Count(); - DBG_ASSERT( nCount == 2 * aBoolArr.Count(), "NoteRange: Incompatible Sizes" ); + DBG_ASSERT( nCount == 2 * aBoolArr.size(), "NoteRange: Incompatible Sizes" ); while( nIdx < nCount && (*pLongArr)[ nIdx ] < nMin ) ++nIdx; BOOL bOdd = nIdx % 2 ? TRUE : FALSE; @@ -300,7 +300,7 @@ void SvxBoundArgs::NoteRange( BOOL bToggle ) { // Dann wird ein neues eingefuegt ... pLongArr->Insert( nMin, nIdx ); pLongArr->Insert( nMax, nIdx + 1 ); - aBoolArr.Insert( bToggle, nIdx / 2 ); + aBoolArr.insert( aBoolArr.begin() + nIdx / 2, bToggle ); } else { // ein vorhandes Intervall erweitern ... @@ -332,9 +332,9 @@ void SvxBoundArgs::NoteRange( BOOL bToggle ) USHORT nStop = nMaxIdx + nDiff; for( USHORT i = nMaxIdx; i < nStop; ++i ) bToggle ^= aBoolArr[ i ]; - aBoolArr.Remove( nMaxIdx, nDiff ); + aBoolArr.erase( aBoolArr.begin() + nMaxIdx, aBoolArr.begin() + (nMaxIdx + nDiff) ); } - DBG_ASSERT( nMaxIdx < aBoolArr.Count(), "NoteRange: Too much deleted" ); + DBG_ASSERT( nMaxIdx < aBoolArr.size(), "NoteRange: Too much deleted" ); aBoolArr[ nMaxIdx ] ^= bToggle; } } @@ -479,13 +479,13 @@ void SvxBoundArgs::Calc( const PolyPolygon& rPoly ) void SvxBoundArgs::Add() { USHORT nLongIdx = 1; - USHORT nCount = aBoolArr.Count(); + size_t nCount = aBoolArr.size(); if( nCount && ( !bInner || !pTextRanger->IsSimple() ) ) { - BOOL bDelete = aBoolArr[ 0 ]; + BOOL bDelete = aBoolArr.front(); if( bInner ) bDelete = !bDelete; - for( USHORT nBoolIdx = 1; nBoolIdx < nCount; ++nBoolIdx ) + for( size_t nBoolIdx = 1; nBoolIdx < nCount; ++nBoolIdx ) { if( bDelete ) { @@ -497,7 +497,7 @@ void SvxBoundArgs::Add() next /= 2; nBoolIdx = nBoolIdx - next; nCount = nCount - next; - aBoolArr.Remove( nBoolIdx, next ); + aBoolArr.erase( aBoolArr.begin() + nBoolIdx, aBoolArr.begin() + (nBoolIdx + next) ); if( nBoolIdx ) aBoolArr[ nBoolIdx - 1 ] = FALSE; #if OSL_DEBUG_LEVEL > 1 @@ -508,7 +508,7 @@ void SvxBoundArgs::Add() bDelete = nBoolIdx < nCount && aBoolArr[ nBoolIdx ]; nLongIdx += 2; DBG_ASSERT( nLongIdx == 2*nBoolIdx+1, "BoundArgs: Array-Idx Confusion" ); - DBG_ASSERT( aBoolArr.Count()*2 == pLongArr->Count(), + DBG_ASSERT( aBoolArr.size()*2 == pLongArr->Count(), "BoundArgs: Array-Count: Confusion" ); } } @@ -538,7 +538,7 @@ void SvxBoundArgs::Concat( const PolyPolygon* pPoly ) DBG_ASSERT( pPoly, "Nothing to do?" ); SvLongs *pOld = pLongArr; pLongArr = new SvLongs( 2, 8 ); - aBoolArr.Remove( 0, aBoolArr.Count() ); + aBoolArr.clear(); bInner = FALSE; Calc( *pPoly ); USHORT nCount = pLongArr->Count(); diff --git a/editeng/source/rtf/makefile.mk b/editeng/source/rtf/makefile.mk index ef1c5f44b196..081cd5b506cd 100644 --- a/editeng/source/rtf/makefile.mk +++ b/editeng/source/rtf/makefile.mk @@ -29,20 +29,19 @@ PRJ=..$/.. PRJNAME=editeng TARGET=rtf - +ENABLE_EXCEPTIONS=TRUE # --- Settings ----------------------------------------------------- .INCLUDE : settings.mk .INCLUDE : $(PRJ)$/util$/makefile.pmk - # --- Files -------------------------------------------------------- EXCEPTIONSFILES= \ + $(SLO)$/rtfitem.obj \ $(SLO)$/svxrtf.obj SLOFILES= \ $(EXCEPTIONSFILES) \ - $(SLO)$/rtfitem.obj \ $(SLO)$/rtfgrf.obj # ========================================================================== diff --git a/editeng/source/rtf/rtfgrf.cxx b/editeng/source/rtf/rtfgrf.cxx index 24fd4465b031..4b0051cd3c81 100644 --- a/editeng/source/rtf/rtfgrf.cxx +++ b/editeng/source/rtf/rtfgrf.cxx @@ -39,6 +39,7 @@ #include <editeng/svxrtf.hxx> +using namespace ::rtl; #ifndef DBG_UTIL #undef DEBUG_JP @@ -316,14 +317,26 @@ BOOL SvxRTFParser::ReadBmpData( Graphic& rGrf, SvxRTFPictureType& rPicType ) if( RTF_SHPPICT == GetStackPtr(0)->nTokenId ) ++nValidDataBraket; - + OUString sShapePropertyName, sShapePropertyValue; + int nShapePropertyBracket = -1; while( _nOpenBrakets && IsParserWorking() && bValidBmp ) { nToken = GetNextToken(); USHORT nVal = USHORT( nTokenValue ); switch( nToken ) { - case '}': --_nOpenBrakets; break; + case '}': + --_nOpenBrakets; + if( nShapePropertyBracket > 0 && nShapePropertyBracket > _nOpenBrakets ) + { + nShapePropertyBracket = -1; + if( sShapePropertyName.getLength() ) + { + rPicType.aPropertyPairs.push_back( ::std::pair< OUString, OUString >( sShapePropertyName, sShapePropertyValue ) ); + sShapePropertyName = sShapePropertyValue = ::rtl::OUString(); + } + } + break; case '{': { if( RTF_IGNOREFLAG != GetNextToken() ) @@ -439,7 +452,24 @@ BOOL SvxRTFParser::ReadBmpData( Graphic& rGrf, SvxRTFPictureType& rPicType ) case RTF_PICCROPB: rPicType.nCropB = (short)nTokenValue; break; case RTF_PICCROPL: rPicType.nCropL = (short)nTokenValue; break; case RTF_PICCROPR: rPicType.nCropR = (short)nTokenValue; break; - + case RTF_SP: + //read pairs of {\sn Name}{\sv Value} + nShapePropertyBracket = _nOpenBrakets; + break; + case RTF_SN: + nToken = GetNextToken(); + if( nToken != '}' ) + sShapePropertyName = aToken; + else + nToken = SkipToken( -1 ); + break; + case RTF_SV: + nToken = GetNextToken(); + if( nToken != '}' ) + sShapePropertyValue = aToken; + else + nToken = SkipToken( -1 ); + break; case RTF_TEXTTOKEN: // JP 26.06.98: Bug #51719# - nur TextToken auf 1. Ebene // auswerten. Alle anderen sind irgendwelche diff --git a/editeng/source/rtf/rtfitem.cxx b/editeng/source/rtf/rtfitem.cxx index 89b44be23ba8..3141ab20afcd 100644 --- a/editeng/source/rtf/rtfitem.cxx +++ b/editeng/source/rtf/rtfitem.cxx @@ -228,7 +228,7 @@ void SvxRTFParser::ReadAttr( int nToken, SfxItemSet* pSet ) RTF_CharTypeDef eCharType = NOTDEF_CHARTYPE; USHORT nFontAlign; - int bChkStkPos = !bNewGroup && aAttrStack.Top(); + int bChkStkPos = !bNewGroup && aAttrStack.back(); while( bWeiter && IsParserWorking() ) // solange bekannte Attribute erkannt werden { @@ -250,7 +250,7 @@ void SvxRTFParser::ReadAttr( int nToken, SfxItemSet* pSet ) if( !bChkStkPos ) break; - SvxRTFItemStackType* pAkt = aAttrStack.Top(); + SvxRTFItemStackType* pAkt = aAttrStack.back(); if( !pAkt || (pAkt->pSttNd->GetIdx() == pInsPos->GetNodeIdx() && pAkt->nSttCnt == pInsPos->GetCntIdx() )) break; @@ -269,10 +269,10 @@ void SvxRTFParser::ReadAttr( int nToken, SfxItemSet* pSet ) // alle bis hierher gueltigen Attribute "setzen" AttrGroupEnd(); - pAkt = aAttrStack.Top(); // can be changed after AttrGroupEnd! + pAkt = aAttrStack.back(); // can be changed after AttrGroupEnd! pNew->aAttrSet.SetParent( pAkt ? &pAkt->aAttrSet : 0 ); - aAttrStack.Push( pNew ); + aAttrStack.push_back( pNew ); pAkt = pNew; } else @@ -305,7 +305,7 @@ void SvxRTFParser::ReadAttr( int nToken, SfxItemSet* pSet ) nStyleNo = -1 == nTokenValue ? 0 : USHORT(nTokenValue); // setze am akt. auf dem AttrStack stehenden Style die // StyleNummer - SvxRTFItemStackType* pAkt = aAttrStack.Top(); + SvxRTFItemStackType* pAkt = aAttrStack.back(); if( !pAkt ) break; @@ -1869,9 +1869,9 @@ void SvxRTFParser::ReadBackgroundAttr( int nToken, SfxItemSet& rSet, // pard / plain abarbeiten void SvxRTFParser::RTFPardPlain( int bPard, SfxItemSet** ppSet ) { - if( !bNewGroup && aAttrStack.Top() ) // nicht am Anfang einer neuen Gruppe + if( !bNewGroup && aAttrStack.back() ) // not at the beginning of a new group { - SvxRTFItemStackType* pAkt = aAttrStack.Top(); + SvxRTFItemStackType* pAkt = aAttrStack.back(); int nLastToken = GetStackPtr(-1)->nTokenId; int bNewStkEntry = TRUE; @@ -1887,9 +1887,9 @@ void SvxRTFParser::RTFPardPlain( int bPard, SfxItemSet** ppSet ) // alle bis hierher gueltigen Attribute "setzen" AttrGroupEnd(); - pAkt = aAttrStack.Top(); // can be changed after AttrGroupEnd! + pAkt = aAttrStack.back(); // can be changed after AttrGroupEnd! pNew->aAttrSet.SetParent( pAkt ? &pAkt->aAttrSet : 0 ); - aAttrStack.Push( pNew ); + aAttrStack.push_back( pNew ); pAkt = pNew; } else diff --git a/editeng/source/rtf/svxrtf.cxx b/editeng/source/rtf/svxrtf.cxx index 61ae8e256c67..14b17807a0ea 100644 --- a/editeng/source/rtf/svxrtf.cxx +++ b/editeng/source/rtf/svxrtf.cxx @@ -55,7 +55,6 @@ using namespace ::com::sun::star; -SV_IMPL_PTRARR( SvxRTFColorTbl, ColorPtr ) SV_IMPL_PTRARR( SvxRTFItemStackList, SvxRTFItemStackType* ) CharSet lcl_GetDefaultTextEncodingForRTF() @@ -83,7 +82,6 @@ SvxRTFParser::SvxRTFParser( SfxItemPool& rPool, SvStream& rIn, int bReadNewDoc ) : SvRTFParser( rIn, 5 ), rStrm(rIn), - aColorTbl( 16, 4 ), aFontTbl( 16, 4 ), pInsPos( 0 ), pAttrPool( &rPool ), @@ -124,13 +122,13 @@ void SvxRTFParser::ResetPard() SvxRTFParser::~SvxRTFParser() { - if( aColorTbl.Count() ) + if( !aColorTbl.empty() ) ClearColorTbl(); if( aFontTbl.Count() ) ClearFontTbl(); if( aStyleTbl.Count() ) ClearStyleTbl(); - if( aAttrStack.Count() ) + if( !aAttrStack.empty() ) ClearAttrStack(); delete pRTFDefaults; @@ -149,18 +147,18 @@ void SvxRTFParser::SetInsPos( const SvxPosition& rNew ) SvParserState SvxRTFParser::CallParser() { - DBG_ASSERT( pInsPos, "keine Einfuegeposition" ); + DBG_ASSERT( pInsPos, "no insertion" ); if( !pInsPos ) return SVPAR_ERROR; - if( aColorTbl.Count() ) + if( !aColorTbl.empty() ) ClearColorTbl(); if( aFontTbl.Count() ) ClearFontTbl(); if( aStyleTbl.Count() ) ClearStyleTbl(); - if( aAttrStack.Count() ) + if( !aAttrStack.empty() ) ClearAttrStack(); bIsSetDfltTab = FALSE; @@ -488,10 +486,10 @@ void SvxRTFParser::ReadColorTable() // eine Farbe ist Fertig, in die Tabelle eintragen // versuche die Werte auf SV interne Namen zu mappen ColorPtr pColor = new Color( nRed, nGreen, nBlue ); - if( !aColorTbl.Count() && + if( aColorTbl.empty() && BYTE(-1) == nRed && BYTE(-1) == nGreen && BYTE(-1) == nBlue ) pColor->SetColor( COL_AUTO ); - aColorTbl.Insert( pColor, aColorTbl.Count() ); + aColorTbl.push_back( pColor ); nRed = 0, nGreen = 0, nBlue = 0; // Color konnte vollstaendig gelesen werden, @@ -818,7 +816,11 @@ void SvxRTFParser::ReadInfo( const sal_Char* pChkForVerNo ) void SvxRTFParser::ClearColorTbl() { - aColorTbl.DeleteAndDestroy( 0, aColorTbl.Count() ); + while ( !aColorTbl.empty() ) + { + delete aColorTbl.back(); + aColorTbl.pop_back(); + } } void SvxRTFParser::ClearFontTbl() @@ -836,9 +838,10 @@ void SvxRTFParser::ClearStyleTbl() void SvxRTFParser::ClearAttrStack() { SvxRTFItemStackType* pTmp; - for( ULONG nCnt = aAttrStack.Count(); nCnt; --nCnt ) + for( size_t nCnt = aAttrStack.size(); nCnt; --nCnt ) { - pTmp = aAttrStack.Pop(); + pTmp = aAttrStack.back(); + aAttrStack.pop_back(); delete pTmp; } } @@ -872,7 +875,7 @@ const Font& SvxRTFParser::GetFont( USHORT nId ) SvxRTFItemStackType* SvxRTFParser::_GetAttrSet( int bCopyAttr ) { - SvxRTFItemStackType* pAkt = aAttrStack.Top(); + SvxRTFItemStackType* pAkt = aAttrStack.back(); SvxRTFItemStackType* pNew; if( pAkt ) pNew = new SvxRTFItemStackType( *pAkt, *pInsPos, bCopyAttr ); @@ -881,7 +884,7 @@ SvxRTFItemStackType* SvxRTFParser::_GetAttrSet( int bCopyAttr ) *pInsPos ); pNew->SetRTFDefaults( GetRTFDefaults() ); - aAttrStack.Push( pNew ); + aAttrStack.push_back( pNew ); bNewGroup = FALSE; return pNew; } @@ -936,10 +939,11 @@ void SvxRTFParser::_ClearStyleAttr( SvxRTFItemStackType& rStkType ) void SvxRTFParser::AttrGroupEnd() // den akt. Bearbeiten, vom Stack loeschen { - if( aAttrStack.Count() ) + if( !aAttrStack.empty() ) { - SvxRTFItemStackType *pOld = aAttrStack.Pop(); - SvxRTFItemStackType *pAkt = aAttrStack.Top(); + SvxRTFItemStackType *pOld = aAttrStack.back(); + aAttrStack.pop_back(); + SvxRTFItemStackType *pAkt = aAttrStack.back(); do { // middle check loop ULONG nOldSttNdIdx = pOld->pSttNd->GetIdx(); @@ -1114,9 +1118,9 @@ void SvxRTFParser::AttrGroupEnd() // den akt. Bearbeiten, vom Stack loeschen // alle bis hierher gueltigen Attribute "setzen" AttrGroupEnd(); - pAkt = aAttrStack.Top(); // can be changed after AttrGroupEnd! + pAkt = aAttrStack.back(); // can be changed after AttrGroupEnd! pNew->aAttrSet.SetParent( pAkt ? &pAkt->aAttrSet : 0 ); - aAttrStack.Push( pNew ); + aAttrStack.push_back( pNew ); pAkt = pNew; } } @@ -1144,8 +1148,8 @@ void SvxRTFParser::AttrGroupEnd() // den akt. Bearbeiten, vom Stack loeschen void SvxRTFParser::SetAllAttrOfStk() // end all Attr. and set it into doc { - // noch alle Attrbute vom Stack holen !! - while( aAttrStack.Count() ) + // repeat until all attributes will be taken from stack + while( !aAttrStack.empty() ) AttrGroupEnd(); for( USHORT n = aAttrSetList.Count(); n; ) @@ -1174,10 +1178,10 @@ void SvxRTFParser::SetAttrSet( SvxRTFItemStackType &rSet ) SetAttrSet( *(*rSet.pChildList)[ n ] ); } - // wurde noch kein Text eingefuegt ? (SttPos vom obersten StackEintrag!) + // Is text wasn't inserted? (Get SttPos from the top of stack!) int SvxRTFParser::IsAttrSttPos() { - SvxRTFItemStackType* pAkt = aAttrStack.Top(); + SvxRTFItemStackType* pAkt = aAttrStack.back(); return !pAkt || (pAkt->pSttNd->GetIdx() == pInsPos->GetNodeIdx() && pAkt->nSttCnt == pInsPos->GetCntIdx()); } diff --git a/formula/inc/formula/IFunctionDescription.hxx b/formula/inc/formula/IFunctionDescription.hxx index 110b1dfd2470..8dd3a95ae067 100644 --- a/formula/inc/formula/IFunctionDescription.hxx +++ b/formula/inc/formula/IFunctionDescription.hxx @@ -92,7 +92,7 @@ namespace formula virtual void fillVisibleArgumentMapping(::std::vector<USHORT>& _rArguments) const = 0; virtual void initArgumentInfo() const = 0; virtual ::rtl::OUString getSignature() const = 0; - virtual long getHelpId() const = 0; + virtual rtl::OString getHelpId() const = 0; // parameter virtual sal_uInt32 getParameterCount() const = 0; diff --git a/formula/inc/formula/formdata.hxx b/formula/inc/formula/formdata.hxx index da211d4f7449..0db3492a9519 100644 --- a/formula/inc/formula/formdata.hxx +++ b/formula/inc/formula/formdata.hxx @@ -53,7 +53,7 @@ public: inline USHORT GetEdFocus() const { return nEdFocus; } inline const String& GetUndoStr() const { return aUndoStr; } inline BOOL GetMatrixFlag()const{ return bMatrix;} - inline ULONG GetUniqueId()const { return nUniqueId;} + inline rtl::OString GetUniqueId()const { return aUniqueId;} inline const Selection& GetSelection()const { return aSelection;} inline void SetMode( USHORT nNew ) { nMode = nNew; } @@ -64,7 +64,7 @@ public: inline void SetEdFocus( USHORT nNew ) { nEdFocus = nNew; } inline void SetUndoStr( const String& rNew ) { aUndoStr = rNew; } inline void SetMatrixFlag(BOOL bNew) { bMatrix=bNew;} - inline void SetUniqueId(ULONG nNew) { nUniqueId=nNew;} + inline void SetUniqueId(const rtl::OString nNew) { aUniqueId=nNew;} inline void SetSelection(const Selection& aSel) { aSelection=aSel;} protected: void Reset(); @@ -81,7 +81,7 @@ private: USHORT nEdFocus; String aUndoStr; BOOL bMatrix; - ULONG nUniqueId; + rtl::OString aUniqueId; Selection aSelection; }; diff --git a/formula/inc/formula/formula.hxx b/formula/inc/formula/formula.hxx index d88d1fe62057..c12501f61103 100644 --- a/formula/inc/formula/formula.hxx +++ b/formula/inc/formula/formula.hxx @@ -80,8 +80,8 @@ protected: ::std::pair<RefButton*,RefEdit*> RefInputStartBefore( RefEdit* pEdit, RefButton* pButton = NULL ); void RefInputStartAfter( RefEdit* pEdit, RefButton* pButton = NULL ); void RefInputDoneAfter( BOOL bForced = FALSE ); - ULONG FindFocusWin(Window *pWin); - void SetFocusWin(Window *pWin,ULONG nUniqueId); + rtl::OString FindFocusWin(Window *pWin); + void SetFocusWin(Window *pWin,const rtl::OString& nUniqueId); void HighlightFunctionParas(const String& aFormula); void SetMeText(const String& _sText); @@ -129,8 +129,8 @@ protected: ::std::pair<RefButton*,RefEdit*> RefInputStartBefore( RefEdit* pEdit, RefButton* pButton = NULL ); void RefInputStartAfter( RefEdit* pEdit, RefButton* pButton = NULL ); void RefInputDoneAfter( BOOL bForced = FALSE ); - ULONG FindFocusWin(Window *pWin); - void SetFocusWin(Window *pWin,ULONG nUniqueId); + rtl::OString FindFocusWin(Window *pWin); + void SetFocusWin(Window *pWin,const rtl::OString& nUniqueId); void HighlightFunctionParas(const String& aFormula); void SetMeText(const String& _sText); diff --git a/formula/inc/helpids.hrc b/formula/inc/helpids.hrc index ff51f806b734..5502c4370d58 100644 --- a/formula/inc/helpids.hrc +++ b/formula/inc/helpids.hrc @@ -27,36 +27,26 @@ #ifndef FORMULA_HELPID_HRC #define FORMULA_HELPID_HRC -#ifndef _SOLAR_HRC -#include <svl/solar.hrc> // HID_FORMULA_START -#endif - -#define HID_FORMULADLG_FORMULA (HID_FORMULA_START + 0) -#define HID_FORMULA_FAP_FORMULA (HID_FORMULA_START + 1) -#define HID_FORMULA_FAP_STRUCT (HID_FORMULA_START + 2) -#define HID_FORMULA_FAP_PAGE (HID_FORMULA_START + 3) -#define HID_FORMULA_FAP_EDIT1 (HID_FORMULA_START + 4) -#define HID_FORMULA_FAP_EDIT2 (HID_FORMULA_START + 5) -#define HID_FORMULA_FAP_EDIT3 (HID_FORMULA_START + 6) -#define HID_FORMULA_FAP_EDIT4 (HID_FORMULA_START + 7) -#define HID_FORMULA_FAP_BTN_FX1 (HID_FORMULA_START + 8) -#define HID_FORMULA_FAP_BTN_FX2 (HID_FORMULA_START + 9) -#define HID_FORMULA_FAP_BTN_FX3 (HID_FORMULA_START +10) -#define HID_FORMULA_FAP_BTN_FX4 (HID_FORMULA_START +11) -#define HID_FORMULA_FAP_BTN_REF1 (HID_FORMULA_START +12) -#define HID_FORMULA_FAP_BTN_REF2 (HID_FORMULA_START +13) -#define HID_FORMULA_FAP_BTN_REF3 (HID_FORMULA_START +14) -#define HID_FORMULA_FAP_BTN_REF4 (HID_FORMULA_START +15) -#define HID_FORMULA_LB_CATEGORY (HID_FORMULA_START +16) -#define HID_FORMULA_LB_FUNCTION (HID_FORMULA_START +17) -#define HID_FORMULATAB_FUNCTION (HID_FORMULA_START +18) -#define HID_FORMULATAB_STRUCT (HID_FORMULA_START +19) - - -#if HID_FORMULATAB_STRUCT > HID_FORMULA_END -#error Help-Id Ueberlauf in #file, #line -#endif -// don't forget to update the file util/hidother.src +#define HID_FORMULADLG_FORMULA "FORMULA_HID_FORMULADLG_FORMULA" +#define HID_FORMULA_FAP_FORMULA "FORMULA_HID_FORMULA_FAP_FORMULA" +#define HID_FORMULA_FAP_STRUCT "FORMULA_HID_FORMULA_FAP_STRUCT" +#define HID_FORMULA_FAP_PAGE "FORMULA_HID_FORMULA_FAP_PAGE" +#define HID_FORMULA_FAP_EDIT1 "FORMULA_HID_FORMULA_FAP_EDIT1" +#define HID_FORMULA_FAP_EDIT2 "FORMULA_HID_FORMULA_FAP_EDIT2" +#define HID_FORMULA_FAP_EDIT3 "FORMULA_HID_FORMULA_FAP_EDIT3" +#define HID_FORMULA_FAP_EDIT4 "FORMULA_HID_FORMULA_FAP_EDIT4" +#define HID_FORMULA_FAP_BTN_FX1 "FORMULA_HID_FORMULA_FAP_BTN_FX1" +#define HID_FORMULA_FAP_BTN_FX2 "FORMULA_HID_FORMULA_FAP_BTN_FX2" +#define HID_FORMULA_FAP_BTN_FX3 "FORMULA_HID_FORMULA_FAP_BTN_FX3" +#define HID_FORMULA_FAP_BTN_FX4 "FORMULA_HID_FORMULA_FAP_BTN_FX4" +#define HID_FORMULA_FAP_BTN_REF1 "FORMULA_HID_FORMULA_FAP_BTN_REF1" +#define HID_FORMULA_FAP_BTN_REF2 "FORMULA_HID_FORMULA_FAP_BTN_REF2" +#define HID_FORMULA_FAP_BTN_REF3 "FORMULA_HID_FORMULA_FAP_BTN_REF3" +#define HID_FORMULA_FAP_BTN_REF4 "FORMULA_HID_FORMULA_FAP_BTN_REF4" +#define HID_FORMULA_LB_CATEGORY "FORMULA_HID_FORMULA_LB_CATEGORY" +#define HID_FORMULA_LB_FUNCTION "FORMULA_HID_FORMULA_LB_FUNCTION" +#define HID_FORMULATAB_FUNCTION "FORMULA_HID_FORMULATAB_FUNCTION" +#define HID_FORMULATAB_STRUCT "FORMULA_HID_FORMULATAB_STRUCT" #endif //FORMULA_HELPID_HRC diff --git a/formula/source/ui/dlg/FormulaHelper.cxx b/formula/source/ui/dlg/FormulaHelper.cxx index 3adbd95d9fd1..1d71b40919eb 100644 --- a/formula/source/ui/dlg/FormulaHelper.cxx +++ b/formula/source/ui/dlg/FormulaHelper.cxx @@ -50,7 +50,7 @@ namespace formula virtual void fillVisibleArgumentMapping(::std::vector<USHORT>& ) const {} virtual void initArgumentInfo() const {} virtual ::rtl::OUString getSignature() const { return ::rtl::OUString(); } - virtual long getHelpId() const { return 0; } + virtual rtl::OString getHelpId() const { return ""; } virtual sal_uInt32 getParameterCount() const { return 0; } virtual ::rtl::OUString getParameterName(sal_uInt32 ) const { return ::rtl::OUString(); } virtual ::rtl::OUString getParameterDescription(sal_uInt32 ) const { return ::rtl::OUString(); } diff --git a/formula/source/ui/dlg/formdlgs.src b/formula/source/ui/dlg/formdlgs.src index c85aa561ced8..935fed8ed2ba 100644 --- a/formula/source/ui/dlg/formdlgs.src +++ b/formula/source/ui/dlg/formdlgs.src @@ -163,6 +163,7 @@ ModalDialog RID_FORMULADLG_FORMULA_MODAL Moveable = TRUE ; TabControl TC_FUNCTION { + HelpID = "formula:TabControl:RID_FORMULADLG_FORMULA_MODAL:TC_FUNCTION"; Pos = MAP_APPFONT ( 6 , 5 ) ; Size = MAP_APPFONT ( 102 , 199 ) ; PageList = @@ -249,6 +250,7 @@ ModalDialog RID_FORMULADLG_FORMULA_MODAL }; CheckBox BTN_MATRIX { + HelpID = "formula:CheckBox:RID_FORMULADLG_FORMULA_MODAL:BTN_MATRIX"; Pos = MAP_APPFONT ( 6 , 208 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; TabStop = TRUE ; @@ -256,12 +258,14 @@ ModalDialog RID_FORMULADLG_FORMULA_MODAL }; Edit ED_REF { + HelpID = "formula:Edit:RID_FORMULADLG_FORMULA_MODAL:ED_REF"; Border = TRUE ; Pos = MAP_APPFONT ( 76 , 205 ) ; Size = MAP_APPFONT ( 66 , 12 ) ; }; ImageButton RB_REF { + HelpID = "formula:ImageButton:RID_FORMULADLG_FORMULA_MODAL:RB_REF"; Pos = MAP_APPFONT ( 144 , 205 ) ; Size = MAP_APPFONT ( 13 , 15 ) ; TabStop = FALSE ; @@ -281,6 +285,7 @@ ModalDialog RID_FORMULADLG_FORMULA_MODAL }; PushButton BTN_BACKWARD { + HelpID = "formula:PushButton:RID_FORMULADLG_FORMULA_MODAL:BTN_BACKWARD"; Pos = MAP_APPFONT ( 171 , 208 ) ; Size = MAP_APPFONT ( 45 , 14 ) ; TabStop = TRUE ; @@ -288,6 +293,7 @@ ModalDialog RID_FORMULADLG_FORMULA_MODAL }; PushButton BTN_FORWARD { + HelpID = "formula:PushButton:RID_FORMULADLG_FORMULA_MODAL:BTN_FORWARD"; Pos = MAP_APPFONT ( 219 , 208 ) ; Size = MAP_APPFONT ( 45 , 14 ) ; TabStop = TRUE ; @@ -324,6 +330,7 @@ ModelessDialog RID_FORMULADLG_FORMULA Moveable = TRUE ; TabControl TC_FUNCTION { + HelpID = "formula:TabControl:RID_FORMULADLG_FORMULA:TC_FUNCTION"; Pos = MAP_APPFONT ( 6 , 5 ) ; Size = MAP_APPFONT ( 102 , 199 ) ; PageList = @@ -410,6 +417,7 @@ ModelessDialog RID_FORMULADLG_FORMULA }; CheckBox BTN_MATRIX { + HelpID = "formula:CheckBox:RID_FORMULADLG_FORMULA:BTN_MATRIX"; Pos = MAP_APPFONT ( 6 , 208 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; TabStop = TRUE ; @@ -417,12 +425,14 @@ ModelessDialog RID_FORMULADLG_FORMULA }; Edit ED_REF { + HelpID = "formula:Edit:RID_FORMULADLG_FORMULA:ED_REF"; Border = TRUE ; Pos = MAP_APPFONT ( 76 , 205 ) ; Size = MAP_APPFONT ( 66 , 12 ) ; }; ImageButton RB_REF { + HelpID = "formula:ImageButton:RID_FORMULADLG_FORMULA:RB_REF"; Pos = MAP_APPFONT ( 144 , 205 ) ; Size = MAP_APPFONT ( 13 , 15 ) ; TabStop = FALSE ; @@ -442,6 +452,7 @@ ModelessDialog RID_FORMULADLG_FORMULA }; PushButton BTN_BACKWARD { + HelpID = "formula:PushButton:RID_FORMULADLG_FORMULA:BTN_BACKWARD"; Pos = MAP_APPFONT ( 171 , 208 ) ; Size = MAP_APPFONT ( 45 , 14 ) ; TabStop = TRUE ; @@ -449,6 +460,7 @@ ModelessDialog RID_FORMULADLG_FORMULA }; PushButton BTN_FORWARD { + HelpID = "formula:PushButton:RID_FORMULADLG_FORMULA:BTN_FORWARD"; Pos = MAP_APPFONT ( 219 , 208 ) ; Size = MAP_APPFONT ( 45 , 14 ) ; TabStop = TRUE ; diff --git a/formula/source/ui/dlg/formula.cxx b/formula/source/ui/dlg/formula.cxx index f1a97171fa11..0a971e94e5b6 100644 --- a/formula/source/ui/dlg/formula.cxx +++ b/formula/source/ui/dlg/formula.cxx @@ -143,7 +143,7 @@ namespace formula void PreNotify( NotifyEvent& rNEvt ); RefEdit* GetCurrRefEdit(); - ULONG FindFocusWin(Window *pWin); + rtl::OString FindFocusWin(Window *pWin); const FormulaHelper& GetFormulaHelper() const; uno::Reference< sheet::XFormulaOpCodeMapper > GetFormulaOpCodeMapper() const; @@ -226,11 +226,11 @@ namespace formula FormulaHelper m_aFormulaHelper; - SmartId m_aSmartEditHelpId; + rtl::OString m_aEditHelpId; - ULONG nOldHelp; - ULONG nOldUnique; - ULONG nActivWinId; + rtl::OString aOldHelp; + rtl::OString aOldUnique; + rtl::OString aActivWinId; BOOL bIsShutDown; @@ -300,7 +300,6 @@ FormulaDlg_Impl::FormulaDlg_Impl(Dialog* pParent aTxtOk ( aBtnEnd.GetText() ), m_aFormulaHelper(_pFunctionMgr), // - nActivWinId (0), bIsShutDown (FALSE), nEdFocus (0), pFuncDesc (NULL), @@ -314,8 +313,8 @@ FormulaDlg_Impl::FormulaDlg_Impl(Dialog* pParent aRefBtn.Hide(); pMEdit = aMEFormula.GetEdit(); - m_aSmartEditHelpId = pMEdit->GetSmartHelpId(); - pMEdit->SetSmartUniqueId(m_aSmartEditHelpId); + m_aEditHelpId = pMEdit->GetHelpId(); + pMEdit->SetUniqueId( m_aEditHelpId ); bEditFlag=FALSE; bStructUpdate=TRUE; @@ -331,8 +330,8 @@ FormulaDlg_Impl::FormulaDlg_Impl(Dialog* pParent aTabCtrl.SetTabPage( TP_FUNCTION, pFuncPage); aTabCtrl.SetTabPage( TP_STRUCT, pStructPage); - nOldHelp = pParent->GetHelpId(); // HelpId aus Resource immer fuer "Seite 1" - nOldUnique = pParent->GetUniqueId(); + aOldHelp = pParent->GetHelpId(); // HelpId aus Resource immer fuer "Seite 1" + aOldUnique = pParent->GetUniqueId(); aFtResult.Show( _bSupportResult ); aWndResult.Show( _bSupportResult ); @@ -408,27 +407,27 @@ void FormulaDlg_Impl::PreNotify( NotifyEvent& rNEvt ) Window* pWin=rNEvt.GetWindow(); if(pWin!=NULL) { - nActivWinId = pWin->GetUniqueId(); - if(nActivWinId==0) + aActivWinId = pWin->GetUniqueId(); + if(aActivWinId.getLength()==0) { Window* pParent=pWin->GetParent(); while(pParent!=NULL) { - nActivWinId=pParent->GetUniqueId(); + aActivWinId=pParent->GetUniqueId(); - if(nActivWinId!=0) break; + if(aActivWinId.getLength()!=0) break; pParent=pParent->GetParent(); } } - if(nActivWinId!=0) + if(aActivWinId.getLength()) { FormEditData* pData = m_pHelper->getFormEditData(); if (pData && !aTimer.IsActive()) // wird nicht ueber Close zerstoert; { - pData->SetUniqueId(nActivWinId); + pData->SetUniqueId(aActivWinId); } } } @@ -825,8 +824,8 @@ void FormulaDlg_Impl::FillListboxes() aNewTitle = aTitle1; // HelpId fuer 1. Seite ist die aus der Resource - m_pParent->SetHelpId( nOldHelp ); - m_pParent->SetUniqueId( nOldUnique ); + m_pParent->SetHelpId( aOldHelp ); + m_pParent->SetUniqueId( aOldUnique ); } // ----------------------------------------------------------------------------- void FormulaDlg_Impl::FillControls(BOOL &rbNext, BOOL &rbPrev) @@ -862,9 +861,9 @@ void FormulaDlg_Impl::FillControls(BOOL &rbNext, BOOL &rbPrev) aFtEditName.SetText( pFuncDesc->getFunctionName() ); aFtEditName.Show(); pParaWin->Show(); - const long nHelpId = pFuncDesc->getHelpId(); - if ( nHelpId ) - pMEdit->SetSmartHelpId(SmartId(nHelpId)); + const rtl::OString aHelpId = pFuncDesc->getHelpId(); + if ( aHelpId.getLength() ) + pMEdit->SetHelpId(aHelpId); } xub_StrLen nOldStart, nOldEnd; @@ -920,7 +919,7 @@ void FormulaDlg_Impl::FillControls(BOOL &rbNext, BOOL &rbPrev) else { aFtEditName.SetText(String()); - pMEdit->SetSmartHelpId(m_aSmartEditHelpId); + pMEdit->SetHelpId( m_aEditHelpId ); } // Test, ob vorne/hinten noch mehr Funktionen sind @@ -1790,20 +1789,20 @@ BOOL FormulaDlg_Impl::UpdateParaWin(Selection& _rSelection) } return pTheRefEdit == NULL; } -ULONG FormulaDlg_Impl::FindFocusWin(Window *pWin) +rtl::OString FormulaDlg_Impl::FindFocusWin(Window *pWin) { - ULONG nUniqueId=0; + rtl::OString aUniqueId; if(pWin->HasFocus()) { - nUniqueId=pWin->GetUniqueId(); - if(nUniqueId==0) + aUniqueId=pWin->GetUniqueId(); + if(aUniqueId.getLength()==0) { Window* pParent=pWin->GetParent(); while(pParent!=NULL) { - nUniqueId=pParent->GetUniqueId(); + aUniqueId=pParent->GetUniqueId(); - if(nUniqueId!=0) break; + if(aUniqueId.getLength()!=0) break; pParent=pParent->GetParent(); } @@ -1816,11 +1815,11 @@ ULONG FormulaDlg_Impl::FindFocusWin(Window *pWin) for(USHORT i=0;i<nCount;i++) { Window* pChild=pWin->GetChild(i); - nUniqueId=FindFocusWin(pChild); - if(nUniqueId>0) break; + aUniqueId=FindFocusWin(pChild); + if(aUniqueId.getLength()>0) break; } } - return nUniqueId; + return aUniqueId; } void FormulaDlg_Impl::SetEdSelection() @@ -1925,12 +1924,12 @@ void FormulaModalDialog::RefInputDoneAfter( BOOL bForced ) m_pImpl->RefInputDoneAfter( bForced ); } -ULONG FormulaModalDialog::FindFocusWin(Window *pWin) +rtl::OString FormulaModalDialog::FindFocusWin(Window *pWin) { return m_pImpl->FindFocusWin( pWin ); } -void FormulaModalDialog::SetFocusWin(Window *pWin,ULONG nUniqueId) +void FormulaModalDialog::SetFocusWin(Window *pWin,const rtl::OString& nUniqueId) { if(pWin->GetUniqueId()==nUniqueId) { @@ -2007,7 +2006,7 @@ FormulaDlg::FormulaDlg( SfxBindings* pB, SfxChildWindow* pCW, ,_pHelper,_pFunctionMgr,_pDlg)) { FreeResource(); - if(GetHelpId()==0) //Hack, da im SfxModelessDialog die HelpId + if(!GetHelpId().getLength()) //Hack, da im SfxModelessDialog die HelpId SetHelpId(GetUniqueId()); //fuer einen ModelessDialog entfernt und //in eine UniqueId gewandelt wird, machen //wir das an dieser Stelle rueckgaengig. @@ -2080,12 +2079,12 @@ void FormulaDlg::RefInputDoneAfter( BOOL bForced ) m_pImpl->RefInputDoneAfter( bForced ); } -ULONG FormulaDlg::FindFocusWin(Window *pWin) +rtl::OString FormulaDlg::FindFocusWin(Window *pWin) { return m_pImpl->FindFocusWin( pWin ); } -void FormulaDlg::SetFocusWin(Window *pWin,ULONG nUniqueId) +void FormulaDlg::SetFocusWin(Window *pWin,const rtl::OString& nUniqueId) { if(pWin->GetUniqueId()==nUniqueId) { @@ -2156,7 +2155,7 @@ IMPL_LINK( FormulaDlg, UpdateFocusHdl, Timer*, EMPTYARG ) if (pData) // wird nicht ueber Close zerstoert; { m_pImpl->m_pHelper->setReferenceInput(pData); - ULONG nUniqueId=pData->GetUniqueId(); + rtl::OString nUniqueId(pData->GetUniqueId()); SetFocusWin(this,nUniqueId); } return 0; @@ -2182,7 +2181,7 @@ void FormEditData::Reset() nOffset = 0; nEdFocus = 0; bMatrix =FALSE; - nUniqueId=0; + aUniqueId=rtl::OString(); aSelection.Min()=0; aSelection.Max()=0; aUndoStr.Erase(); @@ -2211,7 +2210,7 @@ const FormEditData& FormEditData::operator=( const FormEditData& r ) nEdFocus = r.nEdFocus; aUndoStr = r.aUndoStr; bMatrix = r.bMatrix ; - nUniqueId = r.nUniqueId; + aUniqueId = r.aUniqueId; aSelection = r.aSelection; return *this; } diff --git a/formula/source/ui/dlg/funcpage.cxx b/formula/source/ui/dlg/funcpage.cxx index 3633afa29316..1f8b64c7b4ba 100644 --- a/formula/source/ui/dlg/funcpage.cxx +++ b/formula/source/ui/dlg/funcpage.cxx @@ -102,8 +102,8 @@ FuncPage::FuncPage(Window* pParent,const IFunctionManager* _pFunctionManager): m_pFunctionManager(_pFunctionManager) { FreeResource(); - m_aSmartHelpId = aLbFunction.GetSmartHelpId(); - aLbFunction.SetSmartUniqueId(m_aSmartHelpId); + m_aHelpId = aLbFunction.GetHelpId(); + aLbFunction.SetUniqueId(m_aHelpId); InitLRUList(); @@ -190,15 +190,15 @@ IMPL_LINK( FuncPage, SelHdl, ListBox*, pLb ) const IFunctionDescription* pDesc = GetFuncDesc( GetFunction() ); if ( pDesc ) { - const long nHelpId = pDesc->getHelpId(); - if ( nHelpId ) - aLbFunction.SetSmartHelpId(SmartId(nHelpId)); + const rtl::OString sHelpId = pDesc->getHelpId(); + if ( sHelpId.getLength() ) + aLbFunction.SetHelpId(sHelpId); } aSelectionLink.Call(this); } else { - aLbFunction.SetSmartHelpId(m_aSmartHelpId); + aLbFunction.SetHelpId(m_aHelpId); UpdateFunctionList(); } return 0; diff --git a/formula/source/ui/dlg/funcpage.hxx b/formula/source/ui/dlg/funcpage.hxx index 09f77cc81019..225114ff00aa 100644 --- a/formula/source/ui/dlg/funcpage.hxx +++ b/formula/source/ui/dlg/funcpage.hxx @@ -82,7 +82,7 @@ private: m_pFunctionManager; ::std::vector< TFunctionDesc > aLRUList; - SmartId m_aSmartHelpId; + rtl::OString m_aHelpId; void impl_addFunctions(const IFunctionCategory* _pCategory); diff --git a/formula/source/ui/dlg/funcutl.cxx b/formula/source/ui/dlg/funcutl.cxx index 4ba8d87c139b..c4e28b3da8f1 100644 --- a/formula/source/ui/dlg/funcutl.cxx +++ b/formula/source/ui/dlg/funcutl.cxx @@ -758,8 +758,8 @@ EditBox::EditBox( Window* pParent, const ResId& rResId ) // #105582# the HelpId from the resource must be set for the MultiLineEdit, // not for the control that contains it. - pMEdit->SetSmartHelpId( GetSmartHelpId() ); - SetSmartHelpId( SmartId() ); + pMEdit->SetHelpId( GetHelpId() ); + SetHelpId( "" ); } EditBox::~EditBox() diff --git a/formula/source/ui/dlg/parawin.cxx b/formula/source/ui/dlg/parawin.cxx index 3876621a3ec0..5e656aea0967 100644 --- a/formula/source/ui/dlg/parawin.cxx +++ b/formula/source/ui/dlg/parawin.cxx @@ -294,15 +294,15 @@ void ParaWin::SetFunctionDesc(const IFunctionDescription* pFDesc) { SetEditDesc(aDefaultString); } - long nHelpId = pFuncDesc->getHelpId(); nArgs = pFuncDesc->getSuppressedArgumentCount(); pFuncDesc->fillVisibleArgumentMapping(aVisibleArgMapping); aSlider.Hide(); - SetHelpId( nHelpId ); - aEdArg1.SetHelpId( nHelpId ); - aEdArg2.SetHelpId( nHelpId ); - aEdArg3.SetHelpId( nHelpId ); - aEdArg4.SetHelpId( nHelpId ); + rtl::OString sHelpId = pFuncDesc->getHelpId(); + SetHelpId( sHelpId ); + aEdArg1.SetHelpId( sHelpId ); + aEdArg2.SetHelpId( sHelpId ); + aEdArg3.SetHelpId( sHelpId ); + aEdArg4.SetHelpId( sHelpId ); // Unique-IDs muessen gleich bleiben fuer Automatisierung SetUniqueId( HID_FORMULA_FAP_PAGE ); diff --git a/formula/source/ui/dlg/parawin.src b/formula/source/ui/dlg/parawin.src index eda2bfcecda9..ea0b9b2f480b 100644 --- a/formula/source/ui/dlg/parawin.src +++ b/formula/source/ui/dlg/parawin.src @@ -68,6 +68,7 @@ TabPage RID_FORMULATAB_PARAMETER { + HelpID = "formula:TabPage:RID_FORMULATAB_PARAMETER"; Border = FALSE; Size = MAP_APPFONT( 203, 128 ); DialogControl = TRUE; @@ -119,10 +120,18 @@ TabPage RID_FORMULATAB_PARAMETER HelpId=HID_FORMULA_FAP_BTN_FX4; FXBUTTONBLOCK ( 109 ) }; - Edit ED_ARG1 { ED_ARGBLOCK ( 64 ) }; - Edit ED_ARG2 { ED_ARGBLOCK ( 79 ) }; - Edit ED_ARG3 { ED_ARGBLOCK ( 94 ) }; - Edit ED_ARG4 { ED_ARGBLOCK ( 109 ) }; + Edit ED_ARG1 { ED_ARGBLOCK ( 64 ) + HelpID = "formula:Edit:RID_FORMULATAB_PARAMETER:ED_ARG1"; + }; + Edit ED_ARG2 { ED_ARGBLOCK ( 79 ) + HelpID = "formula:Edit:RID_FORMULATAB_PARAMETER:ED_ARG2"; + }; + Edit ED_ARG3 { ED_ARGBLOCK ( 94 ) + HelpID = "formula:Edit:RID_FORMULATAB_PARAMETER:ED_ARG3"; + }; + Edit ED_ARG4 { ED_ARGBLOCK ( 109 ) + HelpID = "formula:Edit:RID_FORMULATAB_PARAMETER:ED_ARG4"; + }; ImageButton RB_ARG1 { diff --git a/formula/source/ui/dlg/structpg.cxx b/formula/source/ui/dlg/structpg.cxx index 3c7da5a3f8b0..3f86b4ba21eb 100644 --- a/formula/source/ui/dlg/structpg.cxx +++ b/formula/source/ui/dlg/structpg.cxx @@ -112,7 +112,7 @@ StructPage::StructPage(Window* pParent): maImgErrorHC ( ModuleRes( BMP_STR_ERROR_H ) ), pSelectedToken ( NULL ) { - aTlbStruct.SetWindowBits(WB_HASLINES|WB_CLIPCHILDREN| + aTlbStruct.SetStyle(aTlbStruct.GetStyle()|WB_HASLINES|WB_CLIPCHILDREN| WB_HASBUTTONS|WB_HSCROLL|WB_NOINITIALSELECTION); aTlbStruct.SetNodeDefaultImages(); diff --git a/formula/util/hidother.src b/formula/util/hidother.src index 8cf49660e919..09a79b694e87 100644 --- a/formula/util/hidother.src +++ b/formula/util/hidother.src @@ -27,10 +27,6 @@ #include "../inc/helpids.hrc" -#ifndef _SBASLTID_HRC -#include <svx/svxids.hrc> -#endif - hidspecial HID_FORMULADLG_FORMULA { HelpId = HID_FORMULADLG_FORMULA; }; hidspecial HID_FORMULA_FAP_FORMULA { HelpId = HID_FORMULA_FAP_FORMULA; }; hidspecial HID_FORMULA_FAP_STRUCT { HelpId = HID_FORMULA_FAP_STRUCT; }; diff --git a/fpicker/source/office/OfficeControlAccess.cxx b/fpicker/source/office/OfficeControlAccess.cxx index e0b5d259302d..50e99f2b590b 100644 --- a/fpicker/source/office/OfficeControlAccess.cxx +++ b/fpicker/source/office/OfficeControlAccess.cxx @@ -33,9 +33,8 @@ #include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp> #include <com/sun/star/ui/dialogs/ControlActions.hpp> #include <vcl/lstbox.hxx> -#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HPP_ #include <com/sun/star/uno/Sequence.hxx> -#endif +#include <tools/urlobj.hxx> #include <algorithm> #include <functional> @@ -201,37 +200,36 @@ namespace svt } //--------------------------------------------------------------------- - void OControlAccess::setHelpURL( Window* _pControl, const ::rtl::OUString& _rURL, sal_Bool _bFileView ) + void OControlAccess::setHelpURL( Window* _pControl, const ::rtl::OUString& sHelpURL, sal_Bool _bFileView ) { - String sHelpURL( _rURL ); - if ( COMPARE_EQUAL == sHelpURL.CompareIgnoreCaseToAscii( "HID:", sizeof( "HID:" ) - 1 ) ) - { - String sID = sHelpURL.Copy( sizeof( "HID:" ) - 1 ); - sal_Int32 nHelpId = sID.ToInt32(); + rtl::OUString sHelpID( sHelpURL ); + INetURLObject aHID( sHelpURL ); + if ( aHID.GetProtocol() == INET_PROT_HID ) + sHelpID = aHID.GetURLPath(); - if ( _bFileView ) - // the file view "overloaded" the SetHelpId - static_cast< SvtFileView* >( _pControl )->SetHelpId( nHelpId ); - else - _pControl->SetHelpId( nHelpId ); - } + // URLs should always be UTF8 encoded and escaped + rtl::OString sID( rtl::OUStringToOString( sHelpID, RTL_TEXTENCODING_UTF8 ) ); + if ( _bFileView ) + // the file view "overloaded" the SetHelpId + static_cast< SvtFileView* >( _pControl )->SetHelpId( sID ); else - { - DBG_ERRORFILE( "OControlAccess::setHelpURL: unsupported help URL type!" ); - } + _pControl->SetHelpId( sID ); } //--------------------------------------------------------------------- ::rtl::OUString OControlAccess::getHelpURL( Window* _pControl, sal_Bool _bFileView ) { - sal_Int32 nHelpId = _pControl->GetHelpId(); + rtl::OString aHelpId = _pControl->GetHelpId(); if ( _bFileView ) // the file view "overloaded" the SetHelpId - nHelpId = static_cast< SvtFileView* >( _pControl )->GetHelpId( ); - - ::rtl::OUString sHelpURL( RTL_CONSTASCII_USTRINGPARAM( "HID:" ) ); - sHelpURL += ::rtl::OUString::valueOf( (sal_Int32)nHelpId ); - + aHelpId = static_cast< SvtFileView* >( _pControl )->GetHelpId( ); + + ::rtl::OUString sHelpURL; + ::rtl::OUString aTmp( rtl::OStringToOUString( aHelpId, RTL_TEXTENCODING_UTF8 ) ); + INetURLObject aHID( aTmp ); + if ( aHID.GetProtocol() == INET_PROT_NOT_VALID ) + sHelpURL = rtl::OUString::createFromAscii( INET_HID_SCHEME ); + sHelpURL += aTmp; return sHelpURL; } diff --git a/fpicker/source/office/iodlg.hrc b/fpicker/source/office/iodlg.hrc index 15f5121b0965..b87082b56cbd 100644 --- a/fpicker/source/office/iodlg.hrc +++ b/fpicker/source/office/iodlg.hrc @@ -28,9 +28,8 @@ #ifndef _SVTOOLS_IODLGIMPL_HRC #define _SVTOOLS_IODLGIMPL_HRC -#ifndef _SVTOOLS_HRC #include "svtools/svtools.hrc" -#endif +#include "svtools/helpid.hrc" // ModalDialog DLG_SVT_EXPLORERFILE @@ -86,22 +85,5 @@ #define SID_SFX_START 5000 #define SID_OPENURL (SID_SFX_START + 596) -#define HID_FILEDLG_STANDARD (HID_SFX_START + 27) -#define HID_FILEDLG_MANAGER (HID_SFX_START + 28) -#define HID_FILEDLG_URL (HID_SFX_START + 29) -#define HID_FILEDLG_USE_PASSWD (HID_SFX_START + 31) -#define HID_FILEDLG_READ_ONLY (HID_SFX_START + 32) - -#define HID_FILEDLG_AUTOCOMPLETEBOX (HID_SFX_START + 218) -#define HID_FILEDLG_SAVE_BTN (HID_SFX_START + 219) -#define HID_FILEDLG_SAVE_FILENAME (HID_SFX_START + 220) -#define HID_FILEDLG_SAVE_FILETYPE (HID_SFX_START + 221) -#define HID_FILEDLG_INSERT_BTN (HID_SFX_START + 222) -#define HID_FILEDLG_PATH_BTN (HID_SFX_START + 223) -#define HID_FILEDLG_PATH_FILENAME (HID_SFX_START + 224) -#define HID_FILEDLG_FOLDER_BTN (HID_SFX_START + 225) -#define HID_FILEDLG_FOLDER_FILENAME (HID_SFX_START + 226) -#define HID_FILEDLG_SRCHFOLDER_BTN (HID_SFX_START + 227) - #endif diff --git a/fpicker/source/office/iodlg.src b/fpicker/source/office/iodlg.src index 0b3c27b68071..da2d1cd926b6 100644 --- a/fpicker/source/office/iodlg.src +++ b/fpicker/source/office/iodlg.src @@ -79,12 +79,14 @@ ModalDialog DLG_SVT_EXPLORERFILE }; ImageButton BTN_EXPLORERFILE_NEWFOLDER { + HelpID = "fpicker:ImageButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_NEWFOLDER"; TabStop = FALSE ; Pos = MAP_APPFONT ( 59 , 6 ) ; QuickHelpText [ en-US ] = "Create New Directory" ; }; ImageButton BTN_EXPLORERFILE_LISTVIEW { + HelpID = "fpicker:ImageButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_LISTVIEW"; TabStop = FALSE ; Pos = MAP_APPFONT ( 109 , 6 ) ; ButtonImage = Image @@ -99,6 +101,7 @@ ModalDialog DLG_SVT_EXPLORERFILE }; ImageButton BTN_EXPLORERFILE_DETAILSVIEW { + HelpID = "fpicker:ImageButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_DETAILSVIEW"; TabStop = FALSE ; Pos = MAP_APPFONT ( 109 , 6 ) ; ButtonImage = Image @@ -113,6 +116,7 @@ ModalDialog DLG_SVT_EXPLORERFILE }; MenuButton BTN_EXPLORERFILE_UP { + HelpID = "fpicker:MenuButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_UP"; TabStop = FALSE ; Pos = MAP_APPFONT ( 109 , 6 ) ; QuickHelpText [ en-US ] = "Up One Level" ; @@ -120,6 +124,7 @@ ModalDialog DLG_SVT_EXPLORERFILE MenuButton BTN_EXPLORERFILE_STANDARD { + HelpID = "fpicker:MenuButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_STANDARD"; TabStop = FALSE ; Pos = MAP_APPFONT ( 59 , 6 ) ; QuickHelpText [ en-US ] = "Default Directory" ; @@ -139,6 +144,7 @@ ModalDialog DLG_SVT_EXPLORERFILE }; Edit ED_EXPLORERFILE_FILENAME { + HelpID = "fpicker:Edit:DLG_SVT_EXPLORERFILE:ED_EXPLORERFILE_FILENAME"; Pos = MAP_APPFONT ( 59 , 117 ) ; Size = MAP_APPFONT ( 159 , 12 ) ; Border = TRUE ; @@ -152,6 +158,7 @@ ModalDialog DLG_SVT_EXPLORERFILE }; ListBox LB_EXPLORERFILE_SHARED_LISTBOX { + HelpID = "fpicker:ListBox:DLG_SVT_EXPLORERFILE:LB_EXPLORERFILE_SHARED_LISTBOX"; Pos = MAP_APPFONT ( 59 , 132 ) ; Size = MAP_APPFONT ( 159 , 40 ) ; DropDown = TRUE ; @@ -166,6 +173,7 @@ ModalDialog DLG_SVT_EXPLORERFILE }; ListBox LB_EXPLORERFILE_FILETYPE { + HelpID = "fpicker:ListBox:DLG_SVT_EXPLORERFILE:LB_EXPLORERFILE_FILETYPE"; Pos = MAP_APPFONT ( 59 , 147 ) ; Size = MAP_APPFONT ( 159 , 80 ) ; DropDown = TRUE ; @@ -175,26 +183,31 @@ ModalDialog DLG_SVT_EXPLORERFILE }; CheckBox CB_EXPLORERFILE_READONLY { + HelpID = "fpicker:CheckBox:DLG_SVT_EXPLORERFILE:CB_EXPLORERFILE_READONLY"; Size = MAP_APPFONT ( 80 , 10 ) ; Text [ en-US ] = "~Read-only" ; }; CheckBox CB_EXPLORERFILE_PASSWORD { + HelpID = "fpicker:CheckBox:DLG_SVT_EXPLORERFILE:CB_EXPLORERFILE_PASSWORD"; Size = MAP_APPFONT ( 100, 10 ) ; Text [ en-US ] = "Save with password" ; }; CheckBox CB_AUTO_EXTENSION { + HelpID = "fpicker:CheckBox:DLG_SVT_EXPLORERFILE:CB_AUTO_EXTENSION"; Size = MAP_APPFONT ( 160 , 10 ) ; Text [ en-US ] = "~Automatic file name extension" ; }; CheckBox CB_OPTIONS { + HelpID = "fpicker:CheckBox:DLG_SVT_EXPLORERFILE:CB_OPTIONS"; Size = MAP_APPFONT ( 120 , 10 ) ; Text [ en-US ] = "Edit ~filter settings"; }; PushButton BTN_EXPLORERFILE_OPEN { + HelpID = "fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_OPEN"; Pos = MAP_APPFONT ( 224 , 117 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; DefButton = TRUE ; @@ -243,6 +256,7 @@ ModalDialog DLG_SVT_EXPLORERFILE // QueryFolderNameDialog ---------------------------------------------------------- ModalDialog DLG_SVT_QUERYFOLDERNAME { + HelpID = "fpicker:ModalDialog:DLG_SVT_QUERYFOLDERNAME"; Border = TRUE ; Moveable = TRUE ; OutputSize = TRUE ; @@ -257,6 +271,7 @@ ModalDialog DLG_SVT_QUERYFOLDERNAME }; Edit ED_SVT_QUERYFOLDERNAME_DLG_NAME { + HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME"; Pos = MAP_APPFONT ( 12 , 27 ) ; Size = MAP_APPFONT ( 138 , 12 ) ; Border = TRUE ; diff --git a/framework/inc/framework.hrc b/framework/inc/framework.hrc index eea91edeaa07..1817b60d90e9 100644 --- a/framework/inc/framework.hrc +++ b/framework/inc/framework.hrc @@ -35,9 +35,9 @@ #define RID_GROUPS_OFFSET 32000 #define RID_GROUPS_END 32767 -#define RID_FWK_DIALOG_START (RID_FWK_START + 2048) +#define RID_FWK_DIALOG_START_CORRECT (RID_FWK_START + 2048) -#define DLG_FILTER_SELECT (RID_FWK_DIALOG_START + 0) +#define DLG_FILTER_SELECT (RID_FWK_DIALOG_START_CORRECT + 0) #define STR_FILTER_DOWNLOAD (RID_FWK_START+0) #define STR_FILTER_CHOOSER (RID_FWK_START+1) @@ -45,7 +45,7 @@ #define STR_FILTER_ZIPPED (RID_FWK_START+3) // ResIds for BackingWindow -#define DLG_BACKING (RID_FWK_DIALOG_START+100) +#define DLG_BACKING (RID_FWK_DIALOG_START_CORRECT+100) #define STR_BACKING_WELCOME 1 #define STR_BACKING_WELCOMEPRODUCT 2 #define STR_BACKING_CREATE 3 @@ -78,7 +78,7 @@ #define BMP_BACKING_OPENTEMPLATE 17 // Ids of TabWindow -#define WIN_TABWINDOW (RID_FWK_DIALOG_START+101) +#define WIN_TABWINDOW (RID_FWK_DIALOG_START_CORRECT+101) #define TC_TABCONTROL 1 #endif diff --git a/framework/inc/helper/ilayoutnotifications.hxx b/framework/inc/helper/ilayoutnotifications.hxx new file mode 100755 index 000000000000..db63ea15c7b4 --- /dev/null +++ b/framework/inc/helper/ilayoutnotifications.hxx @@ -0,0 +1,52 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_ILAYOUTNOTIFICATIONS_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_ILAYOUTNOTIFICATIONS_HXX_ + +namespace framework +{ + +class ILayoutNotifications +{ + public: + enum Hint + { + HINT_NOT_SPECIFIED, + HINT_TOOLBARSPACE_HAS_CHANGED, + HINT_COUNT + }; + + virtual void requestLayout( Hint eHint = HINT_NOT_SPECIFIED ) = 0; +}; + +} + +#endif // __FRAMEWORK_LAYOUTMANAGER_ILAYOUTNOTIFICATIONS_HXX_ diff --git a/framework/inc/helpid.hrc b/framework/inc/helpid.hrc index f40d5fcaaa2d..b5cd1f6a4ac1 100644 --- a/framework/inc/helpid.hrc +++ b/framework/inc/helpid.hrc @@ -27,23 +27,11 @@ #ifndef _FRAMEWORK_HELPID_HRC #define _FRAMEWORK_HELPID_HRC -// include ------------------------------------------------------------------ - -#include <svl/solar.hrc> - -// Help-Ids ----------------------------------------------------------------- - -#define HID_BACKINGWINDOW (HID_FRAMEWORK_START + 0) -#define HID_LICENSEDIALOG (HID_FRAMEWORK_START + 1) -#define HID_STATUSBAR (HID_FRAMEWORK_START + 2) - -#define ACT_FRAMEWORK_HID_END HID_BACKINGWINDOW - -// "Uberlaufpr"ufung -------------------------------------------------------- - -#if ACT_FRAMEWORK_HID_END > HID_FRAMEWORK_END -#error Resource-Ueberlauf in #line, #file -#endif +#define HID_BACKINGWINDOW "FWK_HID_BACKINGWINDOW" +#define HID_LICENSEDIALOG "FWK_HID_LICENSEDIALOG" +#define HID_STATUSBAR "FWK_HID_STATUSBAR" +#define HID_SVX_COMMON_MACRO_ORGANIZER "FWK_HID_SVX_COMMON_MACRO_ORGANIZER" +#define HID_SVX_BASIC_MACRO_ORGANIZER "FWK_HID_SVX_BASIC_MACRO_ORGANIZER" #endif // #ifndef _FRAMEWORK_HELPID_HRC diff --git a/framework/inc/services.h b/framework/inc/services.h index 9c19f8b6251e..bdd6221eff9c 100644 --- a/framework/inc/services.h +++ b/framework/inc/services.h @@ -125,6 +125,8 @@ namespace framework{ #define SERVICENAME_TABWINDOWSERVICE DECLARE_ASCII("com.sun.star.ui.dialogs.TabContainerWindow" ) #define SERVICENAME_WINDOWCONTENTFACTORYMANAGER DECLARE_ASCII("com.sun.star.ui.WindowContentFactoryManager" ) #define SERVICENAME_DISPLAYACCESS DECLARE_ASCII("com.sun.star.awt.DisplayAccess" ) +#define SERVICENAME_PANELFACTORY DECLARE_ASCII("com.sun.star.ui.PanelFactory" ) +#define SERVICENAME_MODELWINSERVICE DECLARE_ASCII("com.sun.star.ui.ModelWinService" ) //_________________________________________________________________________________________________________________ // used implementationnames by framework @@ -211,6 +213,8 @@ namespace framework{ #define IMPLEMENTATIONNAME_IMAGEMANAGER DECLARE_ASCII("com.sun.star.comp.framework.ImageManager" ) #define IMPLEMENTATIONNAME_TABWINDOWSERVICE DECLARE_ASCII("com.sun.star.comp.framework.TabWindowService" ) #define IMPLEMENTATIONNAME_WINDOWCONTENTFACTORYMANAGER DECLARE_ASCII("com.sun.star.comp.framework.WindowContentFactoryManager" ) +#define IMPLEMENTATIONNAME_PANELFACTORY DECLARE_ASCII("com.sun.star.comp.framework.PanelFactory" ) +#define IMPLEMENTATIONNAME_MODELWINSERVICE DECLARE_ASCII("com.sun.star.comp.framework.ModelWinService" ) } // namespace framework diff --git a/framework/inc/services/layoutmanager.hxx b/framework/inc/services/layoutmanager.hxx index 2ccba9e7ffde..6b0135a39e10 100644 --- a/framework/inc/services/layoutmanager.hxx +++ b/framework/inc/services/layoutmanager.hxx @@ -6,6 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -50,6 +53,9 @@ #include <uielement/menubarmanager.hxx> #include <uiconfiguration/windowstateconfiguration.hxx> #include <classes/addonsoptions.hxx> +#include <uielement/panelwindow.hxx> +#include <uielement/uielement.hxx> +#include <helper/ilayoutnotifications.hxx> //_________________________________________________________________________________________________________________ // interface includes @@ -76,7 +82,7 @@ // other includes //_________________________________________________________________________________________________________________ #include <cppuhelper/propshlp.hxx> -#include <cppuhelper/implbase9.hxx> +#include <cppuhelper/implbase8.hxx> #include <cppuhelper/interfacecontainer.hxx> #include <comphelper/propertycontainer.hxx> #include <vcl/wintypes.hxx> @@ -87,14 +93,15 @@ class MenuBar; namespace framework { + class ToolbarLayoutManager; + class PanelManager; class GlobalSettings; - typedef ::cppu::WeakImplHelper9 < ::com::sun::star::lang::XServiceInfo + typedef ::cppu::WeakImplHelper8 < ::com::sun::star::lang::XServiceInfo , ::com::sun::star::frame::XLayoutManager , ::com::sun::star::awt::XWindowListener , ::com::sun::star::frame::XFrameActionListener , ::com::sun::star::ui::XUIConfigurationListener , ::com::sun::star::frame::XInplaceLayout - , ::com::sun::star::awt::XDockableWindowListener , ::com::sun::star::frame::XMenuBarMergingAcceptor , ::com::sun::star::frame::XLayoutManagerEventBroadcaster > LayoutManager_Base; @@ -104,6 +111,7 @@ namespace framework // Order is neccessary for right initialization! private ThreadHelpBase , // Struct for right initalization of mutex member! Must be first of baseclasses. public ::cppu::OBroadcastHelper , + public ILayoutNotifications , public LayoutManager_PBase { public: @@ -121,7 +129,7 @@ namespace framework // XLayoutManager //--------------------------------------------------------------------------------------------------------- virtual void SAL_CALL attachFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& Frame ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL reset( ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL reset() throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::awt::Rectangle SAL_CALL getCurrentDockingArea( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Reference< ::com::sun::star::ui::XDockingAreaAcceptor > SAL_CALL getDockingAreaAcceptor() throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL setDockingAreaAcceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XDockingAreaAcceptor >& xDockingAreaAcceptor ) throw (::com::sun::star::uno::RuntimeException); @@ -192,17 +200,6 @@ namespace framework virtual void SAL_CALL elementReplaced( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException); //--------------------------------------------------------------------------------------------------------- - // XDockableWindowListener - //--------------------------------------------------------------------------------------------------------- - virtual void SAL_CALL startDocking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::awt::DockingData SAL_CALL docking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endDocking( const ::com::sun::star::awt::EndDockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL prepareToggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL toggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL closed( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endPopupMode( const ::com::sun::star::awt::EndPopupModeEvent& e ) throw (::com::sun::star::uno::RuntimeException); - - //--------------------------------------------------------------------------------------------------------- // XLayoutManagerEventBroadcaster //--------------------------------------------------------------------------------------------------------- virtual void SAL_CALL addLayoutManagerEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManagerListener >& aLayoutManagerListener ) throw (::com::sun::star::uno::RuntimeException); @@ -211,196 +208,64 @@ namespace framework DECL_LINK( MenuBarClose, MenuBar * ); DECL_LINK( WindowEventListener, VclSimpleEvent* ); - struct DockedData - { - DockedData() : m_aPos( LONG_MAX, LONG_MAX ), - m_nDockedArea( ::com::sun::star::ui::DockingArea_DOCKINGAREA_TOP ), - m_bLocked( sal_False ) {} - - Point m_aPos; - Size m_aSize; - sal_Int16 m_nDockedArea; - sal_Bool m_bLocked; - }; - struct FloatingData - { - FloatingData() : m_aPos( LONG_MAX, LONG_MAX ), - m_nLines( 1 ), - m_bIsHorizontal( sal_True ) {} - - Point m_aPos; - Size m_aSize; - sal_Int16 m_nLines; - sal_Bool m_bIsHorizontal; - }; - struct SingleRowColumnWindowData - { - SingleRowColumnWindowData() : nVarSize( 0 ), nStaticSize( 0 ), nSpace( 0 ) {} - - std::vector< rtl::OUString > aUIElementNames; - std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > > aRowColumnWindows; - std::vector< ::com::sun::star::awt::Rectangle > aRowColumnWindowSizes; - std::vector< sal_Int32 > aRowColumnSpace; - ::com::sun::star::awt::Rectangle aRowColumnRect; - sal_Int32 nVarSize; - sal_Int32 nStaticSize; - sal_Int32 nSpace; - sal_Int32 nRowColumn; - }; + //--------------------------------------------------------------------------------------------------------- + // ILayoutNotifications + //--------------------------------------------------------------------------------------------------------- + virtual void requestLayout( Hint eHint ); protected: DECL_LINK( AsyncLayoutHdl, Timer * ); private: - enum DockingOperation - { - DOCKOP_BEFORE_COLROW, - DOCKOP_ON_COLROW, - DOCKOP_AFTER_COLROW - }; - struct UIElement - { - UIElement() : m_bFloating( sal_False ), - m_bVisible( sal_True ), - m_bUserActive( sal_False ), - m_bCreateNewRowCol0( sal_False ), - m_bDeactiveHide( sal_False ), - m_bMasterHide( sal_False ), - m_bContextSensitive( sal_False ), - m_bContextActive( sal_True ), - m_bNoClose( sal_False ), - m_bSoftClose( sal_False ), - m_bStateRead( sal_False ), - m_nStyle( BUTTON_SYMBOL ) - {} - - UIElement( const rtl::OUString& rName, - const rtl::OUString& rType, - const com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& rUIElement, - sal_Bool bFloating = sal_False - ) : m_aType( rType ), - m_aName( rName ), - m_xUIElement( rUIElement ), - m_bFloating( bFloating ), - m_bVisible( sal_True ), - m_bUserActive( sal_False ), - m_bCreateNewRowCol0( sal_False ), - m_bDeactiveHide( sal_False ), - m_bMasterHide( sal_False ), - m_bContextSensitive( sal_False ), - m_bContextActive( sal_True ), - m_bNoClose( sal_False ), - m_bSoftClose( sal_False ), - m_bStateRead( sal_False ), - m_nStyle( BUTTON_SYMBOL ) {} - - bool operator< ( const UIElement& aUIElement ) const; - UIElement& operator=( const UIElement& rUIElement ); - - rtl::OUString m_aType; - rtl::OUString m_aName; - rtl::OUString m_aUIName; - com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > m_xUIElement; - sal_Bool m_bFloating, - m_bVisible, - m_bUserActive, - m_bCreateNewRowCol0, - m_bDeactiveHide, - m_bMasterHide, - m_bContextSensitive, - m_bContextActive; - sal_Bool m_bNoClose, - m_bSoftClose, - m_bStateRead; - sal_Int16 m_nStyle; - DockedData m_aDockedData; - FloatingData m_aFloatingData; - }; - - typedef std::vector< UIElement > UIElementVector; - //--------------------------------------------------------------------------------------------------------- // helper //--------------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------------- - // helper + // menu bar //--------------------------------------------------------------------------------------------------------- void impl_clearUpMenuBar(); void implts_reset( sal_Bool bAttach ); + void implts_setMenuBarCloser(sal_Bool bCloserState); void implts_updateMenuBarClose(); sal_Bool implts_resetMenuBar(); + //--------------------------------------------------------------------------------------------------------- + // locking + //--------------------------------------------------------------------------------------------------------- void implts_lock(); sal_Bool implts_unlock(); - sal_Bool implts_findElement( const rtl::OUString& aName, rtl::OUString& aElementType, rtl::OUString& aElementName, ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& xSettings ); - sal_Bool implts_findElement( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xUIElement, UIElement& aElementData ); - sal_Bool implts_findElement( const rtl::OUString& aName, UIElement& aElementData ); + //--------------------------------------------------------------------------------------------------------- + // query + //--------------------------------------------------------------------------------------------------------- + ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > implts_findElement( const rtl::OUString& aName ); UIElement& impl_findElement( const rtl::OUString& aName ); - sal_Bool implts_insertUIElement( const UIElement& rUIElement ); - void implts_refreshContextToolbarsVisibility(); void implts_writeNewStateData( const rtl::OUString aName, const ::com::sun::star::uno::Reference< com::sun::star::awt::XWindow >& xWindow ); sal_Bool implts_readWindowStateData( const rtl::OUString& rName, UIElement& rElementData ); void implts_writeWindowStateData( const rtl::OUString& rName, const UIElement& rElementData ); void implts_setElementData( UIElement& rUIElement, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDockableWindow >& rDockWindow ); void implts_sortUIElements(); void implts_destroyElements(); - void implts_destroyDockingAreaWindows(); - void implts_createAddonsToolBars(); - void implts_createCustomToolBars(); - void implts_createNonContextSensitiveToolBars(); - void implts_createCustomToolBars( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& aCustomTbxSeq ); - void implts_createCustomToolBar( const rtl::OUString& aTbxResName, const rtl::OUString& aTitle ); void implts_toggleFloatingUIElementsVisibility( sal_Bool bActive ); void implts_reparentChildWindows(); + ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > implts_createDockingWindow( const ::rtl::OUString& aElementName ); sal_Bool implts_isEmbeddedLayoutManager() const; sal_Int16 implts_getCurrentSymbolsSize(); sal_Int16 implts_getCurrentSymbolsStyle(); - ::com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > implts_createToolkitWindow( const ::com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer >& rParent ); ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > implts_createElement( const rtl::OUString& aName ); - rtl::OUString implts_generateGenericAddonToolbarTitle( sal_Int32 nNumber ) const; - - // docking methods - ::Rectangle implts_calcHotZoneRect( const ::Rectangle& rRect, sal_Int32 nHotZoneOffset ); - void implts_calcDockingPosSize( UIElement& aUIElement, DockingOperation& eDockOperation, ::Rectangle& rTrackingRect, const Point& rMousePos ); - DockingOperation implts_determineDockingOperation( ::com::sun::star::ui::DockingArea DockingArea, const ::Rectangle& rRowColRect, const Point& rMousePos ); - ::Rectangle implts_getWindowRectFromRowColumn( ::com::sun::star::ui::DockingArea DockingArea, const SingleRowColumnWindowData& rRowColumnWindowData, const ::Point& rMousePos, const rtl::OUString& rExcludeElementName ); - ::Rectangle implts_determineFrontDockingRect( ::com::sun::star::ui::DockingArea eDockingArea, - sal_Int32 nRowCol, - const ::Rectangle& rDockedElementRect, - const ::rtl::OUString& rMovedElementName, - const ::Rectangle& rMovedElementRect ); - void implts_calcWindowPosSizeOnSingleRowColumn( sal_Int32 nDockingArea, - sal_Int32 nOffset, - SingleRowColumnWindowData& rRowColumnWindowData, - const ::Size& rContainerSize ); - ::Rectangle implts_calcTrackingAndElementRect( ::com::sun::star::ui::DockingArea eDockingArea, - sal_Int32 nRowCol, - UIElement& rUIElement, - const ::Rectangle& rTrackingRect, - const ::Rectangle& rRowColumnRect, - const ::Size& rContainerWinSize ); - void implts_renumberRowColumnData( ::com::sun::star::ui::DockingArea eDockingArea, DockingOperation eDockingOperation, const UIElement& rUIElement ); // layouting methods - sal_Bool implts_compareRectangles( const ::com::sun::star::awt::Rectangle& rRect1, const ::com::sun::star::awt::Rectangle& rRect2 ); sal_Bool implts_resizeContainerWindow( const ::com::sun::star::awt::Size& rContainerSize, const ::com::sun::star::awt::Point& rComponentPos ); ::Size implts_getTopBottomDockingAreaSizes(); ::Size implts_getContainerWindowOutputSize(); - ::com::sun::star::awt::Rectangle implts_getDockingAreaWindowSizes(); - void implts_getDockingAreaElementInfos( ::com::sun::star::ui::DockingArea DockingArea, std::vector< SingleRowColumnWindowData >& rRowColumnsWindowData ); - void implts_getDockingAreaElementInfoOnSingleRowCol( ::com::sun::star::ui::DockingArea, - sal_Int32 nRowCol, - SingleRowColumnWindowData& rRowColumnWindowData ); - ::Point implts_findNextCascadeFloatingPos(); - void implts_findNextDockingPos( ::com::sun::star::ui::DockingArea DockingArea, const ::Size& aUIElementSize, ::Point& rVirtualPos, ::Point& rPixelPos ); + + void implts_setDockingAreaWindowSizes( const css::awt::Rectangle& rBorderSpace ); ::com::sun::star::awt::Rectangle implts_calcDockingAreaSizes(); - void implts_setDockingAreaWindowSizes( const com::sun::star::awt::Rectangle& rBorderSpace ); sal_Bool implts_doLayout( sal_Bool bForceRequestBorderSpace, sal_Bool bOuterResize ); - void implts_doLayout_notify( sal_Bool bOuterResize ); + void implts_doLayout_notify( sal_Bool bOuterResize ); // internal methods to control status/progress bar ::Size implts_getStatusBarSize(); @@ -415,6 +280,7 @@ namespace framework sal_Bool implts_showProgressBar(); sal_Bool implts_hideProgressBar(); void implts_backupProgressBarWrapper(); + void implts_setOffset( const sal_Int32 nBottomOffset ); void implts_setInplaceMenuBar( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xMergedMenuBar ) @@ -425,12 +291,7 @@ namespace framework void implts_setVisibleState( sal_Bool bShow ); void implts_updateUIElementsVisibleState( sal_Bool bShow ); void implts_setCurrentUIVisibility( sal_Bool bShow ); - sal_Bool impl_parseResourceURL( const rtl::OUString aResourceURL, rtl::OUString& aElementType, rtl::OUString& aElementName ); - void implts_notifyListeners( short nEvent, ::com::sun::star::uno::Any aInfoParam ); -#ifdef DBG_UTIL - void implts_checkElementContainer(); -#endif DECL_LINK( OptionsChanged, void* ); DECL_LINK( SettingsChanged, void* ); @@ -459,9 +320,7 @@ namespace framework css::uno::WeakReference< css::frame::XModel > m_xModel; css::uno::Reference< css::awt::XWindow > m_xContainerWindow; css::uno::Reference< css::awt::XTopWindow2 > m_xContainerTopWindow; - css::uno::Reference< css::awt::XWindow > m_xDockAreaWindows[DOCKINGAREAS_COUNT]; sal_Int32 m_nLockCount; - UIElementVector m_aUIElements; bool m_bActive; bool m_bInplaceMenuSet; bool m_bDockingInProgress; @@ -476,11 +335,9 @@ namespace framework bool m_bHideCurrentUI; bool m_bGlobalSettings; bool m_bPreserveContentSize; - DockingOperation m_eDockOperation; - UIElement m_aDockUIElement; + bool m_bMenuBarCloser; css::awt::Rectangle m_aDockingArea; css::uno::Reference< ::com::sun::star::ui::XDockingAreaAcceptor > m_xDockingAreaAcceptor; - Point m_aStartDockMousePos; css::uno::Reference< ::com::sun::star::lang::XComponent > m_xInplaceMenuBar; MenuBarManager* m_pInplaceMenuBar; css::uno::Reference< ::com::sun::star::ui::XUIElement > m_xMenuBar; @@ -489,14 +346,10 @@ namespace framework com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > m_xProgressBarBackup; css::uno::Reference< ::com::sun::star::frame::XModuleManager > m_xModuleManager; css::uno::Reference< ::com::sun::star::ui::XUIElementFactory > m_xUIElementFactoryManager; - bool m_bMenuBarCloser; css::uno::Reference< ::com::sun::star::container::XNameAccess > m_xPersistentWindowState; css::uno::Reference< ::com::sun::star::container::XNameAccess > m_xPersistentWindowStateSupplier; GlobalSettings* m_pGlobalSettings; rtl::OUString m_aModuleIdentifier; - rtl::OUString m_aCustomTbxPrefix; - rtl::OUString m_aFullCustomTbxPrefix; - rtl::OUString m_aFullAddonTbxPrefix; rtl::OUString m_aStatusBarAlias; rtl::OUString m_aProgressBarAlias; rtl::OUString m_aPropDocked; @@ -509,12 +362,13 @@ namespace framework rtl::OUString m_aPropStyle; rtl::OUString m_aPropLocked; rtl::OUString m_aCustomizeCmd; - AddonsOptions* m_pAddonOptions; - SvtMiscOptions* m_pMiscOptions; sal_Int16 m_eSymbolsSize; sal_Int16 m_eSymbolsStyle; - Timer m_aAsyncLayoutTimer; + Timer m_aAsyncLayoutTimer; ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer; // container for ALL Listener + PanelManager* m_pPanelManager; + ToolbarLayoutManager* m_pToolbarManager; + css::uno::Reference< ::com::sun::star::ui::XUIConfigurationListener > m_xToolbarManager; }; } // namespace framework diff --git a/framework/inc/services/modelwinservice.hxx b/framework/inc/services/modelwinservice.hxx new file mode 100755 index 000000000000..7e07fcb0cd37 --- /dev/null +++ b/framework/inc/services/modelwinservice.hxx @@ -0,0 +1,122 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: urltransformer.hxx,v $ + * $Revision: 1.8 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ +#define __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <threadhelp/threadhelpbase.hxx> +#include <macros/generic.hxx> +#include <macros/debug.hxx> +#include <macros/xinterface.hxx> +#include <macros/xtypeprovider.hxx> +#include <macros/xserviceinfo.hxx> +#include <general.h> +#include <stdtypes.h> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/awt/XControlModel.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <cppuhelper/weak.hxx> +#include <vcl/window.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework{ + +class IModelWin +{ + public: + virtual void registerModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow, const css::uno::Reference< css::awt::XControlModel >& rModel ) = 0; + virtual void deregisterModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow ) = 0; +}; + +class ModelWinService : public css::lang::XTypeProvider + , public css::lang::XServiceInfo + , public css::container::XNameAccess + , public IModelWin + , public ::cppu::OWeakObject +{ + public: + ModelWinService(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); + virtual ~ModelWinService(); + + //--------------------------------------------------------------------------------------------------------- + // XInterface, XTypeProvider, XServiceInfo + //--------------------------------------------------------------------------------------------------------- + + FWK_DECLARE_XINTERFACE + FWK_DECLARE_XTYPEPROVIDER + DECLARE_XSERVICEINFO + + //--------------------------------------------------------------------------------------------------------- + // IModelWin + //--------------------------------------------------------------------------------------------------------- + virtual void registerModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow, const css::uno::Reference< css::awt::XControlModel >& rModel ); + virtual void deregisterModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow ); + + //--------------------------------------------------------------------------------------------------------- + // XNameAccess + //--------------------------------------------------------------------------------------------------------- + virtual css::uno::Any SAL_CALL getByName( const ::rtl::OUString& sName ) throw( css::container::NoSuchElementException , + css::lang::WrappedTargetException , + css::uno::RuntimeException ); + virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw( css::uno::RuntimeException ); + virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& sName ) throw( css::uno::RuntimeException ); + + //--------------------------------------------------------------------------------------------------------- + // XElementAccess + //--------------------------------------------------------------------------------------------------------- + virtual css::uno::Type SAL_CALL getElementType() throw( css::uno::RuntimeException ); + virtual sal_Bool SAL_CALL hasElements() throw( css::uno::RuntimeException ); + + private: + css::uno::Reference< css::lang::XMultiServiceFactory > m_xServiceManager; +}; + +} + +#endif // __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ diff --git a/framework/inc/uielement/commandinfo.hxx b/framework/inc/uielement/commandinfo.hxx index d33ab0d7baad..58aa382bc6eb 100644 --- a/framework/inc/uielement/commandinfo.hxx +++ b/framework/inc/uielement/commandinfo.hxx @@ -47,11 +47,13 @@ namespace framework struct CommandInfo { CommandInfo() : nId( 0 ), + nWidth( 0 ), nImageInfo( 0 ), bMirrored( false ), bRotated( false ) {} USHORT nId; + sal_uInt16 nWidth; ::std::vector< USHORT > aIds; sal_Int16 nImageInfo; sal_Bool bMirrored : 1, diff --git a/framework/inc/uielement/panelwindow.hxx b/framework/inc/uielement/panelwindow.hxx new file mode 100755 index 000000000000..e1b8ae2abcc7 --- /dev/null +++ b/framework/inc/uielement/panelwindow.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_PANELWINDOW_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_PANELWINDOW_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <vcl/dockwin.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework +{ + +class PanelWindow : public DockingWindow +{ + public: + PanelWindow( Window* pParent, WinBits nWinBits =0); + virtual ~PanelWindow(); + + const ::rtl::OUString& getResourceURL() const; + void setResourceURL(const ::rtl::OUString& rResourceURL); + Window* getContentWindow() const; + void setContentWindow( Window* pContentWindow ); + + virtual void Command ( const CommandEvent& rCEvt ); + virtual void StateChanged( StateChangedType nType ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + virtual void Resize(); + + // Provide additional handlers to support external implementations + void SetCommandHdl( const Link& aLink ) { m_aCommandHandler = aLink; } + const Link& GetCommandHdl() const { return m_aCommandHandler; } + void SetStateChangedHdl( const Link& aLink ) { m_aStateChangedHandler = aLink; } + const Link& GetStateChangedHdl() const { return m_aStateChangedHandler; } + void SetDataChangedHdl( const Link& aLink ) { m_aDataChangedHandler = aLink; } + const Link& GetDataChangedHdl() { return m_aDataChangedHandler; } + + private: + ::rtl::OUString m_aResourceURL; + Link m_aCommandHandler; + Link m_aStateChangedHandler; + Link m_aDataChangedHandler; + Window* m_pContentWindow; +}; + +} + +#endif // __FRAMEWORK_UIELEMENT_PANELWINDOW_HXX_ diff --git a/framework/inc/uielement/panelwrapper.hxx b/framework/inc/uielement/panelwrapper.hxx new file mode 100755 index 000000000000..348fd679db9f --- /dev/null +++ b/framework/inc/uielement/panelwrapper.hxx @@ -0,0 +1,68 @@ + + +#ifndef __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ +#define __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <helper/uielementwrapperbase.hxx> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +namespace framework +{ + +class PanelWrapper : public UIElementWrapperBase +{ + public: + PanelWrapper( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& xServiceManager ); + virtual ~PanelWrapper(); + + // XInterface + virtual void SAL_CALL acquire() throw(); + virtual void SAL_CALL release() throw(); + virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw( ::com::sun::star::uno::RuntimeException ); + + // XComponent + virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException); + + // XInitialization + virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); + + // XUIElement + virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getRealInterface() throw (::com::sun::star::uno::RuntimeException); + + // XUpdatable + virtual void SAL_CALL update() throw (::com::sun::star::uno::RuntimeException); + + // XEventListener + using cppu::OPropertySetHelper::disposing; + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException); + + //------------------------------------------------------------------------------------------------------------- + // protected methods + //------------------------------------------------------------------------------------------------------------- + protected: + virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const com::sun::star::uno::Any& aValue ) throw( com::sun::star::uno::Exception ); + + private: + com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager; + com::sun::star::uno::Reference< com::sun::star::awt::XWindow > m_xPanelWindow; + bool m_bNoClose; +}; + +} + +#endif // __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ diff --git a/framework/inc/uielement/toolbarmerger.hxx b/framework/inc/uielement/toolbarmerger.hxx index 8016bbb620b8..12301f170f26 100644 --- a/framework/inc/uielement/toolbarmerger.hxx +++ b/framework/inc/uielement/toolbarmerger.hxx @@ -145,6 +145,7 @@ class ToolBarMerger const ::rtl::OUString& rControlType ); static void CreateToolbarItem( ToolBox* pToolbox, + CommandToInfoMap& rCommandMap, sal_uInt16 nPos, sal_uInt16 nItemId, const AddonToolbarItem& rAddonToolbarItem ); diff --git a/framework/inc/uielement/toolbarsmenucontroller.hxx b/framework/inc/uielement/toolbarsmenucontroller.hxx index 35f517d33e80..169923b00e47 100644 --- a/framework/inc/uielement/toolbarsmenucontroller.hxx +++ b/framework/inc/uielement/toolbarsmenucontroller.hxx @@ -105,7 +105,7 @@ namespace framework ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > > getLayoutManagerToolbars( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& rLayoutManager ); rtl::OUString getUINameFromCommand( const rtl::OUString& rCommandURL ); ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > getDispatchFromCommandURL( const rtl::OUString& rCommandURL ); - void addCommand( com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu >& rPopupMenu, const rtl::OUString& rCommandURL, USHORT nHelpId, const rtl::OUString& aLabel ); + void addCommand( com::sun::star::uno::Reference< com::sun::star::awt::XPopupMenu >& rPopupMenu, const rtl::OUString& rCommandURL, const rtl::OUString& aLabel ); sal_Bool isContextSensitiveToolbarNonVisible(); ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xPersistentWindowState; diff --git a/framework/inc/uielement/uielement.hxx b/framework/inc/uielement/uielement.hxx new file mode 100755 index 000000000000..b4ad9e2cbb6d --- /dev/null +++ b/framework/inc/uielement/uielement.hxx @@ -0,0 +1,146 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_UIELEMENT_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_UIELEMENT_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/ui/XUIElement.hpp> +#include <com/sun/star/ui/DockingArea.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <rtl/ustring.hxx> +#include <vcl/toolbox.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework +{ + +struct DockedData +{ + DockedData() : m_aPos( LONG_MAX, LONG_MAX ), + m_nDockedArea( ::com::sun::star::ui::DockingArea_DOCKINGAREA_TOP ), + m_bLocked( false ) {} + + Point m_aPos; + Size m_aSize; + sal_Int16 m_nDockedArea; + bool m_bLocked; +}; + +struct FloatingData +{ + FloatingData() : m_aPos( LONG_MAX, LONG_MAX ), + m_nLines( 1 ), + m_bIsHorizontal( true ) {} + + Point m_aPos; + Size m_aSize; + sal_Int16 m_nLines; + bool m_bIsHorizontal; +}; + +struct UIElement +{ + UIElement() : m_bFloating( false ), + m_bVisible( true ), + m_bUserActive( false ), + m_bCreateNewRowCol0( false ), + m_bDeactiveHide( false ), + m_bMasterHide( false ), + m_bContextSensitive( false ), + m_bContextActive( true ), + m_bNoClose( false ), + m_bSoftClose( false ), + m_bStateRead( false ), + m_nStyle( BUTTON_SYMBOL ) + {} + + UIElement( const rtl::OUString& rName, + const rtl::OUString& rType, + const com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& rUIElement, + bool bFloating = false + ) : m_aType( rType ), + m_aName( rName ), + m_xUIElement( rUIElement ), + m_bFloating( bFloating ), + m_bVisible( true ), + m_bUserActive( false ), + m_bCreateNewRowCol0( false ), + m_bDeactiveHide( false ), + m_bMasterHide( false ), + m_bContextSensitive( false ), + m_bContextActive( true ), + m_bNoClose( false ), + m_bSoftClose( false ), + m_bStateRead( false ), + m_nStyle( BUTTON_SYMBOL ) {} + + bool operator< ( const UIElement& aUIElement ) const; + UIElement& operator=( const UIElement& rUIElement ); + + rtl::OUString m_aType; + rtl::OUString m_aName; + rtl::OUString m_aUIName; + com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > m_xUIElement; + bool m_bFloating, + m_bVisible, + m_bUserActive, + m_bCreateNewRowCol0, + m_bDeactiveHide, + m_bMasterHide, + m_bContextSensitive, + m_bContextActive; + bool m_bNoClose, + m_bSoftClose, + m_bStateRead; + sal_Int16 m_nStyle; + DockedData m_aDockedData; + FloatingData m_aFloatingData; +}; + +typedef std::vector< UIElement > UIElementVector; + +} // namespace framework + +#endif // __FRAMEWORK_LAYOUTMANAGER_UIELEMENT_HXX_ diff --git a/framework/source/classes/resource.src b/framework/source/classes/resource.src index 2f8e1bdf2f16..e14c57fb555a 100644 --- a/framework/source/classes/resource.src +++ b/framework/source/classes/resource.src @@ -175,6 +175,7 @@ ModalDialog DLG_LICENSE MultiLineEdit ML_LICENSE { + HelpID = "framework:MultiLineEdit:DLG_LICENSE:ML_LICENSE"; PosSize = MAP_APPFONT ( LICENSE_COL_1 , LICENSE_ROW_1 , LICENSE_WIDTH , LICENSE_HEIGHT ) ; Border = TRUE ; VScroll = TRUE ; @@ -221,6 +222,7 @@ ModalDialog DLG_LICENSE PushButton PB_PAGEDOWN { + HelpID = "framework:PushButton:DLG_LICENSE:PB_PAGEDOWN"; TabStop = TRUE ; Pos = MAP_APPFONT ( LICENSE_COL_4 , LICENSE_ROW_3 ) ; Size = MAP_APPFONT ( PD_WIDTH , PB_HEIGHT ) ; @@ -261,6 +263,7 @@ ModalDialog DLG_LICENSE PushButton PB_ACCEPT { + HelpID = "framework:PushButton:DLG_LICENSE:PB_ACCEPT"; TabStop = TRUE ; Pos = MAP_APPFONT ( LICENSE_COL_4 - PD_WIDTH - OFFSET_IMG , LICENSE_ROW_6 ) ; Size = MAP_APPFONT ( PD_WIDTH , PB_HEIGHT ) ; @@ -268,6 +271,7 @@ ModalDialog DLG_LICENSE PushButton PB_DECLINE { + HelpID = "framework:PushButton:DLG_LICENSE:PB_DECLINE"; TabStop = TRUE ; Pos = MAP_APPFONT ( LICENSE_COL_4 , LICENSE_ROW_6 ) ; Size = MAP_APPFONT ( PD_WIDTH , PB_HEIGHT ) ; diff --git a/framework/source/layoutmanager/helpers.cxx b/framework/source/layoutmanager/helpers.cxx new file mode 100755 index 000000000000..0e6dff554daa --- /dev/null +++ b/framework/source/layoutmanager/helpers.cxx @@ -0,0 +1,415 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +// my own includes +#include "helpers.hxx" +#include <threadhelp/resetableguard.hxx> +#include <services.h> + +// interface includes +#include <com/sun/star/ui/DockingArea.hpp> +#include <com/sun/star/awt/XTopWindow.hpp> +#include <com/sun/star/frame/XDispatchHelper.hpp> +#include <com/sun/star/awt/XDockableWindow.hpp> +#include <com/sun/star/awt/XDockableWindowListener.hpp> +#include <com/sun/star/awt/XWindowListener.hpp> +#include <com/sun/star/ui/XUIElement.hpp> + +// other includes +#include <comphelper/mediadescriptor.hxx> +#include <vcl/svapp.hxx> +#include <vos/mutex.hxx> +#include <toolkit/unohlp.hxx> + +// namespace +using namespace com::sun::star; + +namespace framework +{ + +bool hasEmptySize( const:: Size& aSize ) +{ + return ( aSize.Width() == 0 ) && ( aSize.Height() == 0 ); +} + +bool hasDefaultPosValue( const ::Point& aPos ) +{ + return (( aPos.X() == SAL_MAX_INT32 ) || ( aPos.Y() == SAL_MAX_INT32 )); +} + +bool isDefaultPos( const ::com::sun::star::awt::Point& aPos ) +{ + return (( aPos.X == SAL_MAX_INT32 ) && ( aPos.Y == SAL_MAX_INT32 )); +} + +bool isDefaultPos( const ::Point& aPos ) +{ + return (( aPos.X() == SAL_MAX_INT32 ) && ( aPos.Y() == SAL_MAX_INT32 )); +} + +bool isReverseOrderDockingArea( const sal_Int32 nDockArea ) +{ + ui::DockingArea eDockArea = static_cast< ui::DockingArea >( nDockArea ); + return (( eDockArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) || + ( eDockArea == ui::DockingArea_DOCKINGAREA_RIGHT )); +} + +bool isToolboxHorizontalAligned( ToolBox* pToolBox ) +{ + if ( pToolBox ) + return (( pToolBox->GetAlign() == WINDOWALIGN_TOP ) || ( pToolBox->GetAlign() == WINDOWALIGN_BOTTOM )); + return false; +} + +bool isHorizontalDockingArea( const ui::DockingArea& nDockingArea ) +{ + return (( nDockingArea == ui::DockingArea_DOCKINGAREA_TOP ) || + ( nDockingArea == ui::DockingArea_DOCKINGAREA_BOTTOM )); +} + +bool isHorizontalDockingArea( const sal_Int32 nDockArea ) +{ + return isHorizontalDockingArea(static_cast< ui::DockingArea >( nDockArea )); +} + +::rtl::OUString retrieveToolbarNameFromHelpURL( Window* pWindow ) +{ + ::rtl::OUString aToolbarName; + + if ( pWindow->GetType() == WINDOW_TOOLBOX ) + { + ToolBox* pToolBox = dynamic_cast<ToolBox *>( pWindow ); + if ( pToolBox ) + { + aToolbarName = rtl::OStringToOUString( pToolBox->GetHelpId(), RTL_TEXTENCODING_UTF8 ); + sal_Int32 i = aToolbarName.lastIndexOf( ':' ); + if (( aToolbarName.getLength() > 0 ) && ( i > 0 ) && (( i+ 1 ) < aToolbarName.getLength() )) + aToolbarName = aToolbarName.copy( i+1 ); // Remove ".HelpId:" protocol from toolbar name + else + aToolbarName = ::rtl::OUString(); + } + } + return aToolbarName; +} + +ToolBox* getToolboxPtr( Window* pWindow ) +{ + ToolBox* pToolbox(NULL); + if ( pWindow->GetType() == WINDOW_TOOLBOX ) + pToolbox = dynamic_cast<ToolBox*>( pWindow ); + return pToolbox; +} + +Window* getWindowFromXUIElement( const uno::Reference< ui::XUIElement >& xUIElement ) +{ + vos::OGuard aGuard( Application::GetSolarMutex() ); + uno::Reference< awt::XWindow > xWindow; + if ( xUIElement.is() ) + xWindow = uno::Reference< awt::XWindow >( xUIElement->getRealInterface(), uno::UNO_QUERY ); + return VCLUnoHelper::GetWindow( xWindow ); +} + +SystemWindow* getTopSystemWindow( const uno::Reference< awt::XWindow >& xWindow ) +{ + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + while ( pWindow && !pWindow->IsSystemWindow() ) + pWindow = pWindow->GetParent(); + + if ( pWindow ) + return (SystemWindow *)pWindow; + else + return 0; +} + +void setZeroRectangle( ::Rectangle& rRect ) +{ + rRect.setX(0); + rRect.setY(0); + rRect.setWidth(0); + rRect.setHeight(0); +} + +// ATTENTION! +// This value is directly copied from the sfx2 project. +// You have to change BOTH values, see sfx2/inc/sfx2/sfxsids.hrc (SID_DOCKWIN_START) +static const sal_Int32 DOCKWIN_ID_BASE = 9800; + +bool lcl_checkUIElement(const uno::Reference< ui::XUIElement >& xUIElement, awt::Rectangle& _rPosSize, uno::Reference< awt::XWindow >& _xWindow) +{ + bool bRet = xUIElement.is(); + if ( bRet ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + _xWindow.set( xUIElement->getRealInterface(), uno::UNO_QUERY ); + _rPosSize = _xWindow->getPosSize(); + + Window* pWindow = VCLUnoHelper::GetWindow( _xWindow ); + if ( pWindow->GetType() == WINDOW_TOOLBOX ) + { + ::Size aSize = ((ToolBox*)pWindow)->CalcWindowSizePixel( 1 ); + _rPosSize.Width = aSize.Width(); + _rPosSize.Height = aSize.Height(); + } + } // if ( xUIElement.is() ) + return bRet; +} + +uno::Reference< awt::XWindowPeer > createToolkitWindow( const uno::Reference< lang::XMultiServiceFactory >& rFactory, const uno::Reference< awt::XWindowPeer >& rParent, const char* pService ) +{ + const rtl::OUString aAWTToolkit( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" )); + + uno::Reference< awt::XWindowPeer > xPeer; + if ( rFactory.is() ) + { + uno::Reference< awt::XToolkit > xToolkit( rFactory->createInstance( aAWTToolkit ), uno::UNO_QUERY_THROW ); + if ( xToolkit.is() ) + { + // describe window properties. + css::awt::WindowDescriptor aDescriptor; + aDescriptor.Type = awt::WindowClass_SIMPLE; + aDescriptor.WindowServiceName = ::rtl::OUString::createFromAscii( pService ); + aDescriptor.ParentIndex = -1; + aDescriptor.Parent = uno::Reference< awt::XWindowPeer >( rParent, uno::UNO_QUERY ); + aDescriptor.Bounds = awt::Rectangle(0,0,0,0); + aDescriptor.WindowAttributes = 0; + + // create a awt window + xPeer = xToolkit->createWindow( aDescriptor ); + } + } + + return xPeer; +} + +// convert alignment constant to vcl's WindowAlign type +WindowAlign ImplConvertAlignment( sal_Int16 aAlignment ) +{ + if ( aAlignment == ui::DockingArea_DOCKINGAREA_LEFT ) + return WINDOWALIGN_LEFT; + else if ( aAlignment == ui::DockingArea_DOCKINGAREA_RIGHT ) + return WINDOWALIGN_RIGHT; + else if ( aAlignment == ui::DockingArea_DOCKINGAREA_TOP ) + return WINDOWALIGN_TOP; + else + return WINDOWALIGN_BOTTOM; +} + +::rtl::OUString getElementTypeFromResourceURL( const ::rtl::OUString& aResourceURL ) +{ + ::rtl::OUString aType; + + ::rtl::OUString aUIResourceURL( UIRESOURCE_URL ); + if ( aResourceURL.indexOf( aUIResourceURL ) == 0 ) + { + sal_Int32 nIndex = 0; + ::rtl::OUString aPathPart = aResourceURL.copy( aUIResourceURL.getLength() ); + ::rtl::OUString aUIResource = aPathPart.getToken( 0, (sal_Unicode)'/', nIndex ); + + return aPathPart.getToken( 0, (sal_Unicode)'/', nIndex ); + } + + return aType; +} + +void parseResourceURL( const rtl::OUString& aResourceURL, rtl::OUString& aElementType, rtl::OUString& aElementName ) +{ + ::rtl::OUString aUIResourceURL( UIRESOURCE_URL ); + if ( aResourceURL.indexOf( aUIResourceURL ) == 0 ) + { + sal_Int32 nIndex = 0; + ::rtl::OUString aPathPart = aResourceURL.copy( aUIResourceURL.getLength() ); + ::rtl::OUString aUIResource = aPathPart.getToken( 0, (sal_Unicode)'/', nIndex ); + + aElementType = aPathPart.getToken( 0, (sal_Unicode)'/', nIndex ); + aElementName = aPathPart.getToken( 0, (sal_Unicode)'/', nIndex ); + } +} + +::com::sun::star::awt::Rectangle putRectangleValueToAWT( const ::Rectangle& rRect ) +{ + css::awt::Rectangle aRect; + aRect.X = rRect.Left(); + aRect.Y = rRect.Top(); + aRect.Width = rRect.Right(); + aRect.Height = rRect.Bottom(); + + return aRect; +} + +::Rectangle putAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ) +{ + ::Rectangle aRect; + aRect.Left() = rRect.X; + aRect.Top() = rRect.Y; + aRect.Right() = rRect.Width; + aRect.Bottom() = rRect.Height; + + return aRect; +} + +css::awt::Rectangle convertRectangleToAWT( const ::Rectangle& rRect ) +{ + css::awt::Rectangle aRect; + aRect.X = rRect.Left(); + aRect.Y = rRect.Top(); + aRect.Width = rRect.GetWidth(); + aRect.Height = rRect.GetHeight(); + return aRect; +} + +::Rectangle convertAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ) +{ + ::Rectangle aRect; + aRect.Left() = rRect.X; + aRect.Top() = rRect.Y; + aRect.Right() = rRect.X + rRect.Width; + aRect.Bottom() = rRect.Y + rRect.Height; + + return aRect; +} + +bool equalRectangles( const css::awt::Rectangle& rRect1, + const css::awt::Rectangle& rRect2 ) +{ + return (( rRect1.X == rRect2.X ) && + ( rRect1.Y == rRect2.Y ) && + ( rRect1.Width == rRect2.Width ) && + ( rRect1.Height == rRect2.Height )); +} + +uno::Reference< frame::XModel > impl_getModelFromFrame( const uno::Reference< frame::XFrame >& rFrame ) +{ + // Query for the model to get check the context information + uno::Reference< frame::XModel > xModel; + if ( rFrame.is() ) + { + uno::Reference< frame::XController > xController( rFrame->getController(), uno::UNO_QUERY ); + if ( xController.is() ) + xModel = xController->getModel(); + } + + return xModel; +} + +sal_Bool implts_isPreviewModel( const uno::Reference< frame::XModel >& xModel ) +{ + if ( xModel.is() ) + { + ::comphelper::MediaDescriptor aDesc( xModel->getArgs() ); + return aDesc.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_PREVIEW(), (sal_Bool)sal_False); + } + else + return sal_False; +} + +sal_Bool implts_isFrameOrWindowTop( const uno::Reference< frame::XFrame >& xFrame ) +{ + if (xFrame->isTop()) + return sal_True; + + uno::Reference< awt::XTopWindow > xWindowCheck(xFrame->getContainerWindow(), uno::UNO_QUERY); // dont use _THROW here ... its a check only + if (xWindowCheck.is()) + { + // --> PB 2007-06-18 #i76867# top and system window is required. + ::vos::OGuard aSolarLock(&Application::GetSolarMutex()); + uno::Reference< awt::XWindow > xWindow( xWindowCheck, uno::UNO_QUERY ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + return ( pWindow && pWindow->IsSystemWindow() ); + // <-- + } + + return sal_False; +} + +void impl_setDockingWindowVisibility( const css::uno::Reference< css::lang::XMultiServiceFactory>& rSMGR, const css::uno::Reference< css::frame::XFrame >& rFrame, const ::rtl::OUString& rDockingWindowName, bool bVisible ) +{ + const ::rtl::OUString aDockWinPrefixCommand( RTL_CONSTASCII_USTRINGPARAM( "DockingWindow" )); + css::uno::WeakReference< css::frame::XDispatchHelper > xDispatchHelper; + + sal_Int32 nID = rDockingWindowName.toInt32(); + sal_Int32 nIndex = nID - DOCKWIN_ID_BASE; + + css::uno::Reference< css::frame::XDispatchProvider > xProvider(rFrame, css::uno::UNO_QUERY); + if ( nIndex >= 0 && xProvider.is() ) + { + ::rtl::OUString aDockWinCommand( RTL_CONSTASCII_USTRINGPARAM( ".uno:" )); + ::rtl::OUString aDockWinArgName( aDockWinPrefixCommand ); + + aDockWinArgName += ::rtl::OUString::valueOf( nIndex ); + + css::uno::Sequence< css::beans::PropertyValue > aArgs(1); + aArgs[0].Name = aDockWinArgName; + aArgs[0].Value = css::uno::makeAny( bVisible ); + + css::uno::Reference< css::frame::XDispatchHelper > xDispatcher( xDispatchHelper ); + if ( !xDispatcher.is()) + { + xDispatcher = css::uno::Reference< css::frame::XDispatchHelper >( + rSMGR->createInstance(SERVICENAME_DISPATCHHELPER), css::uno::UNO_QUERY_THROW); + } + + aDockWinCommand = aDockWinCommand + aDockWinArgName; + xDispatcher->executeDispatch( + xProvider, + aDockWinCommand, + ::rtl::OUString::createFromAscii("_self"), + 0, + aArgs); + } +} + +void impl_addWindowListeners( + const css::uno::Reference< css::uno::XInterface >& xThis, + const css::uno::Reference< css::ui::XUIElement >& xUIElement ) +{ + css::uno::Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); + css::uno::Reference< css::awt::XDockableWindow > xDockWindow( xUIElement->getRealInterface(), css::uno::UNO_QUERY ); + if ( xDockWindow.is() && xWindow.is() ) + { + try + { + xDockWindow->addDockableWindowListener( + css::uno::Reference< css::awt::XDockableWindowListener >( + xThis, css::uno::UNO_QUERY )); + xWindow->addWindowListener( + css::uno::Reference< css::awt::XWindowListener >( + xThis, css::uno::UNO_QUERY )); + xDockWindow->enableDocking( sal_True ); + } + catch ( css::uno::Exception& ) + { + } + } +} + +} // namespace framework diff --git a/framework/source/layoutmanager/helpers.hxx b/framework/source/layoutmanager/helpers.hxx new file mode 100755 index 000000000000..d4e9ce313d0e --- /dev/null +++ b/framework/source/layoutmanager/helpers.hxx @@ -0,0 +1,95 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_HELPERS_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_HELPERS_HXX_ + +// my own includes +#include <macros/generic.hxx> +#include <stdtypes.h> +#include <properties.h> + +// interface includes +#include <com/sun/star/awt/XWindowPeer.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/ui/XUIElement.hpp> +#include <com/sun/star/awt/Rectangle.hpp> +#include <com/sun/star/ui/DockingArea.hpp> +#include <com/sun/star/awt/Point.hpp> + +// other includes +#include <vcl/window.hxx> +#include <vcl/toolbox.hxx> + +#define UIRESOURCE_PROTOCO_ASCII "private:" +#define UIRESOURCE_RESOURCE_ASCII "resource" +#define UIRESOURCE_URL_ASCII "private:resource" +#define UIRESOURCE_URL rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( UIRESOURCE_URL_ASCII )) +#define UIRESOURCETYPE_TOOLBAR "toolbar" +#define UIRESOURCETYPE_STATUSBAR "statusbar" +#define UIRESOURCETYPE_MENUBAR "menubar" + +namespace framework +{ + +bool hasEmptySize( const:: Size& aSize ); +bool hasDefaultPosValue( const ::Point& aPos ); +bool isDefaultPos( const ::com::sun::star::awt::Point& aPos ); +bool isDefaultPos( const ::Point& aPos ); +bool isToolboxHorizontalAligned( ToolBox* pToolBox ); +bool isReverseOrderDockingArea( const sal_Int32 nDockArea ); +bool isHorizontalDockingArea( const sal_Int32 nDockArea ); +bool isHorizontalDockingArea( const ::com::sun::star::ui::DockingArea& nDockArea ); +::rtl::OUString retrieveToolbarNameFromHelpURL( Window* pWindow ); +ToolBox* getToolboxPtr( Window* pWindow ); +Window* getWindowFromXUIElement( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& xUIElement ); +SystemWindow* getTopSystemWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& xWindow ); +bool equalRectangles( const css::awt::Rectangle& rRect1, const css::awt::Rectangle& rRect2 ); +void setZeroRectangle( ::Rectangle& rRect ); +bool lcl_checkUIElement(const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& xUIElement,::com::sun::star::awt::Rectangle& _rPosSize, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xWindow); +::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > createToolkitWindow( const css::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rFactory, const css::uno::Reference< ::com::sun::star::awt::XWindowPeer >& rParent, const char* pService ); +WindowAlign ImplConvertAlignment( sal_Int16 aAlignment ); +::rtl::OUString getElementTypeFromResourceURL( const ::rtl::OUString& aResourceURL ); +void parseResourceURL( const rtl::OUString& aResourceURL, rtl::OUString& aElementType, rtl::OUString& aElementName ); +::Rectangle putAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ); +::com::sun::star::awt::Rectangle putRectangleValueToAWT( const ::Rectangle& rRect ); +::com::sun::star::awt::Rectangle convertRectangleToAWT( const ::Rectangle& rRect ); +::Rectangle convertAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ); +::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > impl_getModelFromFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); +sal_Bool implts_isPreviewModel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel ); +sal_Bool implts_isFrameOrWindowTop( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame ); +void impl_setDockingWindowVisibility( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& rSMGR, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rDockingWindowName, bool bVisible ); +void impl_addWindowListeners( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xThis, const ::com::sun::star::uno::Reference< css::ui::XUIElement >& xUIElement ); +::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > implts_createToolkitWindow( const css::uno::Reference< ::com::sun::star::awt::XToolkit >& rToolkit, const css::uno::Reference< ::com::sun::star::awt::XWindowPeer >& rParent ); + +} + +#endif // __FRAMEWORK_LAYOUTMANAGER_HELPERS_HXX_ diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index f72759891acb..e5bf08cf0300 100644..100755 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -6,6 +6,9 @@ * * OpenOffice.org - a multi-platform office productivity suite * + * $RCSfile: layoutmanager.cxx,v $ + * $Revision: 1.72 $ + * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify @@ -28,34 +31,23 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_framework.hxx" -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -// #include <math.h> - -#ifndef _FRAMEWORK_SERVICES_LAYOUTMANAGER_HXX_ +// my own includes #include <services/layoutmanager.hxx> -#endif +#include <helpers.hxx> +#include <panelmanager.hxx> #include <threadhelp/resetableguard.hxx> #include <services.h> - #include <classes/sfxhelperfunctions.hxx> #include <uielement/menubarwrapper.hxx> -#include <classes/addonsoptions.hxx> #include <uiconfiguration/windowstateconfiguration.hxx> #include <classes/fwkresid.hxx> - -#ifndef __FRAMEWORK_CLASSES_RESOURCE_HRC_ #include <classes/resource.hrc> -#endif #include <toolkit/helper/convert.hxx> #include <uielement/progressbarwrapper.hxx> #include <uiconfiguration/globalsettings.hxx> +#include <toolbarlayoutmanager.hxx> -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ +// interface includes #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/frame/XModel.hpp> @@ -69,21 +61,17 @@ #include <com/sun/star/awt/PosSize.hpp> #include <com/sun/star/awt/XDevice.hpp> #include <com/sun/star/awt/XSystemDependentWindowPeer.hpp> -#include <com/sun/star/awt/XTopWindow.hpp> #include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp> #include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp> #include <com/sun/star/ui/UIElementType.hpp> #include <com/sun/star/container/XNameReplace.hpp> #include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/ui/XUIFunctionListener.hpp> #include <com/sun/star/frame/LayoutManagerEvents.hpp> #include <com/sun/star/frame/XDispatchProvider.hpp> #include <com/sun/star/frame/XDispatchHelper.hpp> #include <com/sun/star/lang/DisposedException.hpp> -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ +// other includes #include <svtools/imgdef.hxx> #include <tools/diagnose_ex.h> #include <vcl/window.hxx> @@ -102,348 +90,101 @@ #include <algorithm> #include <boost/bind.hpp> -// ______________________________________________ -// using namespace +// using namespace using namespace ::com::sun::star; -using namespace com::sun::star::uno; -using namespace com::sun::star::beans; -using namespace com::sun::star::util; -using namespace com::sun::star::lang; -using namespace com::sun::star::container; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::util; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::container; using namespace ::com::sun::star::ui; -using namespace com::sun::star::frame; using namespace ::com::sun::star::frame; -#define UIRESOURCE_PROTOCO_ASCII "private:" -#define UIRESOURCE_RESOURCE_ASCII "resource" -#define UIRESOURCE_URL_ASCII "private:resource" -#define UIRESOURCE_URL rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( UIRESOURCE_URL_ASCII )) // ATTENTION! // This value is directly copied from the sfx2 project. // You have to change BOTH values, see sfx2/inc/sfx2/sfxsids.hrc (SID_DOCKWIN_START) static const sal_Int32 DOCKWIN_ID_BASE = 9800; -bool lcl_checkUIElement(const Reference< XUIElement >& xUIElement,css::awt::Rectangle& _rPosSize,Reference< css::awt::XWindow >& _xWindow) -{ - bool bRet = xUIElement.is(); - if ( bRet ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - _xWindow.set( xUIElement->getRealInterface(), UNO_QUERY ); - _rPosSize = _xWindow->getPosSize(); - - Window* pWindow = VCLUnoHelper::GetWindow( _xWindow ); - if ( pWindow->GetType() == WINDOW_TOOLBOX ) - { - ::Size aSize = ((ToolBox*)pWindow)->CalcWindowSizePixel( 1 ); - _rPosSize.Width = aSize.Width(); - _rPosSize.Height = aSize.Height(); - } - } // if ( xUIElement.is() ) - return bRet; -} - -// convert alignment constant to vcl's WindowAlign type -static WindowAlign ImplConvertAlignment( sal_Int16 aAlignment ) -{ - if ( aAlignment == DockingArea_DOCKINGAREA_LEFT ) - return WINDOWALIGN_LEFT; - else if ( aAlignment == DockingArea_DOCKINGAREA_RIGHT ) - return WINDOWALIGN_RIGHT; - else if ( aAlignment == DockingArea_DOCKINGAREA_TOP ) - return WINDOWALIGN_TOP; - else - return WINDOWALIGN_BOTTOM; -} - -//_________________________________________________________________________________________________________________ -// Namespace -//_________________________________________________________________________________________________________________ -// - namespace framework { -struct UIElementVisibility -{ - rtl::OUString aName; - bool bVisible; -}; - -bool LayoutManager::UIElement::operator< ( const LayoutManager::UIElement& aUIElement ) const -{ - if ( !m_xUIElement.is() && aUIElement.m_xUIElement.is() ) - return false; - else if ( m_xUIElement.is() && !aUIElement.m_xUIElement.is() ) - return true; - else if ( !m_bVisible && aUIElement.m_bVisible ) - return false; - else if ( m_bVisible && !aUIElement.m_bVisible ) - return true; - else if ( !m_bFloating && aUIElement.m_bFloating ) - return true; - else if ( m_bFloating && !aUIElement.m_bFloating ) - return false; - else - { - if ( m_bFloating ) - { - bool bEqual = ( m_aFloatingData.m_aPos.Y() == aUIElement.m_aFloatingData.m_aPos.Y() ); - if ( bEqual ) - return ( m_aFloatingData.m_aPos.X() < aUIElement.m_aFloatingData.m_aPos.X() ); - else - return ( m_aFloatingData.m_aPos.Y() < aUIElement.m_aFloatingData.m_aPos.Y() ); - } - else - { - if ( m_aDockedData.m_nDockedArea < aUIElement.m_aDockedData.m_nDockedArea ) - return true; - else if ( m_aDockedData.m_nDockedArea > aUIElement.m_aDockedData.m_nDockedArea ) - return false; - else - { - if ( m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_TOP || - m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_BOTTOM ) - { - if ( !( m_aDockedData.m_aPos.Y() == aUIElement.m_aDockedData.m_aPos.Y() ) ) - return ( m_aDockedData.m_aPos.Y() < aUIElement.m_aDockedData.m_aPos.Y() ); - else - { - bool bEqual = ( m_aDockedData.m_aPos.X() == aUIElement.m_aDockedData.m_aPos.X() ); - if ( bEqual ) - { - return m_bUserActive && !aUIElement.m_bUserActive; - } - else - return ( m_aDockedData.m_aPos.X() < aUIElement.m_aDockedData.m_aPos.X() ); - } - } - else - { - if ( !( m_aDockedData.m_aPos.X() == aUIElement.m_aDockedData.m_aPos.X() ) ) - return ( m_aDockedData.m_aPos.X() < aUIElement.m_aDockedData.m_aPos.X() ); - else - { - bool bEqual = ( m_aDockedData.m_aPos.Y() == aUIElement.m_aDockedData.m_aPos.Y() ); - if ( bEqual ) - { - return m_bUserActive && !aUIElement.m_bUserActive; - } - else - return ( m_aDockedData.m_aPos.Y() < aUIElement.m_aDockedData.m_aPos.Y() ); - } - } - } - } - } -} - -LayoutManager::UIElement& LayoutManager::UIElement::operator= ( const LayoutManager::UIElement& rUIElement ) -{ - if (this == &rUIElement) { return *this; } - m_aType = rUIElement.m_aType; - m_aName = rUIElement.m_aName; - m_aUIName = rUIElement.m_aUIName; - m_xUIElement = rUIElement.m_xUIElement; - m_bFloating = rUIElement.m_bFloating; - m_bVisible = rUIElement.m_bVisible; - m_bUserActive = rUIElement.m_bUserActive; - m_bCreateNewRowCol0 = rUIElement.m_bCreateNewRowCol0; - m_bDeactiveHide = rUIElement.m_bDeactiveHide; - m_bMasterHide = rUIElement.m_bMasterHide; - m_bContextSensitive = rUIElement.m_bContextSensitive; - m_bContextActive = rUIElement.m_bContextActive; - m_bNoClose = rUIElement.m_bNoClose; - m_bSoftClose = rUIElement.m_bSoftClose; - m_bStateRead = rUIElement.m_bStateRead; - m_nStyle = rUIElement.m_nStyle; - m_aDockedData = rUIElement.m_aDockedData; - m_aFloatingData = rUIElement.m_aFloatingData; - return *this; -} - -static Reference< XModel > impl_getModelFromFrame( const Reference< XFrame >& rFrame ) -{ - // Query for the model to get check the context information - Reference< XModel > xModel; - if ( rFrame.is() ) - { - Reference< XController > xController( rFrame->getController(), UNO_QUERY ); - if ( xController.is() ) - xModel = xController->getModel(); - } - - return xModel; -} - -static sal_Bool implts_isPreviewModel( const Reference< XModel >& xModel ) -{ - if ( xModel.is() ) - { - ::comphelper::MediaDescriptor aDesc( xModel->getArgs() ); - return aDesc.getUnpackedValueOrDefault(::comphelper::MediaDescriptor::PROP_PREVIEW(), (sal_Bool)sal_False); - } - else - return sal_False; -} - -static sal_Bool implts_isFrameOrWindowTop( const css::uno::Reference< css::frame::XFrame >& xFrame ) -{ - if (xFrame->isTop()) - return sal_True; - - css::uno::Reference< css::awt::XTopWindow > xWindowCheck(xFrame->getContainerWindow(), css::uno::UNO_QUERY); // dont use _THROW here ... its a check only - if (xWindowCheck.is()) - { - // --> PB 2007-06-18 #i76867# top and system window is required. - ::vos::OGuard aSolarLock(&Application::GetSolarMutex()); - css::uno::Reference< css::awt::XWindow > xWindow( xWindowCheck, UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - return ( pWindow && pWindow->IsSystemWindow() ); - // <-- - } - - return sal_False; -} - -static void impl_setDockingWindowVisibility( const css::uno::Reference< css::lang::XMultiServiceFactory>& rSMGR, const css::uno::Reference< css::frame::XFrame >& rFrame, const ::rtl::OUString& rDockingWindowName, bool bVisible ) -{ - const ::rtl::OUString aDockWinPrefixCommand( RTL_CONSTASCII_USTRINGPARAM( "DockingWindow" )); - css::uno::WeakReference< css::frame::XDispatchHelper > xDispatchHelper; - - sal_Int32 nID = rDockingWindowName.toInt32(); - sal_Int32 nIndex = nID - DOCKWIN_ID_BASE; - - css::uno::Reference< css::frame::XDispatchProvider > xProvider(rFrame, css::uno::UNO_QUERY); - if ( nIndex >= 0 && xProvider.is() ) - { - ::rtl::OUString aDockWinCommand( RTL_CONSTASCII_USTRINGPARAM( ".uno:" )); - ::rtl::OUString aDockWinArgName( aDockWinPrefixCommand ); - - aDockWinArgName += ::rtl::OUString::valueOf( nIndex ); - - css::uno::Sequence< css::beans::PropertyValue > aArgs(1); - aArgs[0].Name = aDockWinArgName; - aArgs[0].Value = css::uno::makeAny( bVisible ); - - css::uno::Reference< css::frame::XDispatchHelper > xDispatcher( xDispatchHelper ); - if ( !xDispatcher.is()) - { - xDispatcher = css::uno::Reference< css::frame::XDispatchHelper >( - rSMGR->createInstance(SERVICENAME_DISPATCHHELPER), css::uno::UNO_QUERY_THROW); - } - - aDockWinCommand = aDockWinCommand + aDockWinArgName; - xDispatcher->executeDispatch( - xProvider, - aDockWinCommand, - ::rtl::OUString::createFromAscii("_self"), - 0, - aArgs); - } -} - -//***************************************************************************************************************** -// XInterface, XTypeProvider, XServiceInfo -//***************************************************************************************************************** IMPLEMENT_FORWARD_XTYPEPROVIDER2( LayoutManager, LayoutManager_Base, LayoutManager_PBase ) IMPLEMENT_FORWARD_XINTERFACE2( LayoutManager, LayoutManager_Base, LayoutManager_PBase ) - -DEFINE_XSERVICEINFO_MULTISERVICE ( LayoutManager , - ::cppu::OWeakObject , - SERVICENAME_LAYOUTMANAGER , - IMPLEMENTATIONNAME_LAYOUTMANAGER - ) - -DEFINE_INIT_SERVICE ( LayoutManager, {} ) - - -LayoutManager::LayoutManager( const Reference< XMultiServiceFactory >& xServiceManager ) - : LayoutManager_Base ( ) - , ThreadHelpBase ( &Application::GetSolarMutex() ) - , ::cppu::OBroadcastHelperVar< ::cppu::OMultiTypeInterfaceContainerHelper, ::cppu::OMultiTypeInterfaceContainerHelper::keyType >( m_aLock.getShareableOslMutex() ) - , LayoutManager_PBase ( *(static_cast< ::cppu::OBroadcastHelper* >(this)) ) - , m_xSMGR( xServiceManager ) - , m_xURLTransformer( xServiceManager->createInstance( SERVICENAME_URLTRANSFORMER ), UNO_QUERY ) - , m_xDisplayAccess( xServiceManager->createInstance( SERVICENAME_DISPLAYACCESS ), UNO_QUERY ) - , m_nLockCount( 0 ) - , m_bActive( sal_False ) - , m_bInplaceMenuSet( sal_False ) - , m_bDockingInProgress( sal_False ) - , m_bMenuVisible( sal_True ) - , m_bComponentAttached( sal_False ) - , m_bDoLayout( sal_False ) - , m_bVisible( sal_True ) - , m_bParentWindowVisible( sal_False ) - , m_bMustDoLayout( sal_True ) - , m_bAutomaticToolbars( sal_True ) - , m_bStoreWindowState( sal_False ) - , m_bHideCurrentUI( false ) - , m_bGlobalSettings( sal_False ) - , m_bPreserveContentSize( false ) - , m_eDockOperation( DOCKOP_ON_COLROW ) - , m_pInplaceMenuBar( NULL ) - , m_xModuleManager( Reference< XModuleManager >( - xServiceManager->createInstance( SERVICENAME_MODULEMANAGER ), UNO_QUERY )) - , m_xUIElementFactoryManager( Reference< ::com::sun::star::ui::XUIElementFactory >( +DEFINE_XSERVICEINFO_MULTISERVICE( LayoutManager, ::cppu::OWeakObject, SERVICENAME_LAYOUTMANAGER, IMPLEMENTATIONNAME_LAYOUTMANAGER) +DEFINE_INIT_SERVICE( LayoutManager, {} ) + +LayoutManager::LayoutManager( const Reference< XMultiServiceFactory >& xServiceManager ) : LayoutManager_Base() + , ThreadHelpBase( &Application::GetSolarMutex()) + , ::cppu::OBroadcastHelperVar< ::cppu::OMultiTypeInterfaceContainerHelper, ::cppu::OMultiTypeInterfaceContainerHelper::keyType >( m_aLock.getShareableOslMutex()) + , LayoutManager_PBase( *(static_cast< ::cppu::OBroadcastHelper* >(this)) ) + , m_xSMGR( xServiceManager ) + , m_xURLTransformer( xServiceManager->createInstance( SERVICENAME_URLTRANSFORMER ), UNO_QUERY ) + , m_xDisplayAccess( xServiceManager->createInstance( SERVICENAME_DISPLAYACCESS ), UNO_QUERY ) + , m_nLockCount( 0 ) + , m_bActive( false ) + , m_bInplaceMenuSet( false ) + , m_bDockingInProgress( false ) + , m_bMenuVisible( true ) + , m_bComponentAttached( false ) + , m_bDoLayout( false ) + , m_bVisible( true ) + , m_bParentWindowVisible( false ) + , m_bMustDoLayout( true ) + , m_bAutomaticToolbars( true ) + , m_bStoreWindowState( false ) + , m_bHideCurrentUI( false ) + , m_bGlobalSettings( false ) + , m_bPreserveContentSize( false ) + , m_bMenuBarCloser( false ) + , m_pInplaceMenuBar( NULL ) + , m_xModuleManager( Reference< XModuleManager >( xServiceManager->createInstance( SERVICENAME_MODULEMANAGER ), UNO_QUERY )) + , m_xUIElementFactoryManager( Reference< ui::XUIElementFactory >( xServiceManager->createInstance( SERVICENAME_UIELEMENTFACTORYMANAGER ), UNO_QUERY )) - , m_bMenuBarCloser( sal_False ) - , m_xPersistentWindowStateSupplier( Reference< XNameAccess >( + , m_xPersistentWindowStateSupplier( Reference< XNameAccess >( xServiceManager->createInstance( SERVICENAME_WINDOWSTATECONFIGURATION ), UNO_QUERY )) - , m_pGlobalSettings( 0 ) - , m_aCustomTbxPrefix( RTL_CONSTASCII_USTRINGPARAM( "custom_" )) - , m_aFullCustomTbxPrefix( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/custom_" )) - , m_aFullAddonTbxPrefix( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/addon_" )) - , m_aStatusBarAlias( RTL_CONSTASCII_USTRINGPARAM( "private:resource/statusbar/statusbar" )) - , m_aProgressBarAlias( RTL_CONSTASCII_USTRINGPARAM( "private:resource/progressbar/progressbar" )) - , m_aPropDocked( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKED )) - , m_aPropVisible( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_VISIBLE )) - , m_aPropDockingArea( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKINGAREA )) - , m_aPropDockPos( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKPOS )) - , m_aPropPos( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_POS )) - , m_aPropSize( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_SIZE )) - , m_aPropUIName( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_UINAME )) - , m_aPropStyle( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_STYLE )) - , m_aPropLocked( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_LOCKED )) - , m_aCustomizeCmd( RTL_CONSTASCII_USTRINGPARAM( "ConfigureDialog" )) - , m_pAddonOptions( 0 ) - , m_aListenerContainer( m_aLock.getShareableOslMutex() ) + , m_pGlobalSettings( 0 ) + , m_aStatusBarAlias( RTL_CONSTASCII_USTRINGPARAM( "private:resource/statusbar/statusbar" )) + , m_aProgressBarAlias( RTL_CONSTASCII_USTRINGPARAM( "private:resource/progressbar/progressbar" )) + , m_aPropDocked( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKED )) + , m_aPropVisible( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_VISIBLE )) + , m_aPropDockingArea( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKINGAREA )) + , m_aPropDockPos( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_DOCKPOS )) + , m_aPropPos( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_POS )) + , m_aPropSize( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_SIZE )) + , m_aPropUIName( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_UINAME )) + , m_aPropStyle( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_STYLE )) + , m_aPropLocked( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_LOCKED )) + , m_aCustomizeCmd( RTL_CONSTASCII_USTRINGPARAM( "ConfigureDialog" )) + , m_aListenerContainer( m_aLock.getShareableOslMutex() ) + , m_pPanelManager( 0 ) + , m_pToolbarManager( 0 ) { // Initialize statusbar member + const sal_Bool bRefreshVisibility = sal_False; m_aStatusBarElement.m_aType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "statusbar" )); m_aStatusBarElement.m_aName = m_aStatusBarAlias; - m_pMiscOptions = new SvtMiscOptions(); + m_pToolbarManager = new ToolbarLayoutManager( xServiceManager, m_xUIElementFactoryManager, this ); + m_xToolbarManager = uno::Reference< ui::XUIConfigurationListener >( static_cast< OWeakObject* >( m_pToolbarManager ), uno::UNO_QUERY ); - m_pMiscOptions->AddListenerLink( LINK( this, LayoutManager, OptionsChanged ) ); Application::AddEventListener( LINK( this, LayoutManager, SettingsChanged ) ); - m_eSymbolsSize = m_pMiscOptions->GetSymbolsSize(); - m_eSymbolsStyle = m_pMiscOptions->GetCurrentSymbolsStyle(); m_aAsyncLayoutTimer.SetTimeout( 50 ); m_aAsyncLayoutTimer.SetTimeoutHdl( LINK( this, LayoutManager, AsyncLayoutHdl ) ); - registerProperty( LAYOUTMANAGER_PROPNAME_AUTOMATICTOOLBARS, LAYOUTMANAGER_PROPHANDLE_AUTOMATICTOOLBARS, css::beans::PropertyAttribute::TRANSIENT, &m_bAutomaticToolbars, ::getCppuType( &m_bAutomaticToolbars ) ); - registerProperty( LAYOUTMANAGER_PROPNAME_HIDECURRENTUI, LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI, css::beans::PropertyAttribute::TRANSIENT, &m_bHideCurrentUI, ::getCppuType( &m_bHideCurrentUI ) ); - registerProperty( LAYOUTMANAGER_PROPNAME_LOCKCOUNT, LAYOUTMANAGER_PROPHANDLE_LOCKCOUNT, css::beans::PropertyAttribute::TRANSIENT | css::beans::PropertyAttribute::READONLY, &m_nLockCount, getCppuType( &m_nLockCount ) ); - registerProperty( LAYOUTMANAGER_PROPNAME_MENUBARCLOSER, LAYOUTMANAGER_PROPHANDLE_MENUBARCLOSER, css::beans::PropertyAttribute::TRANSIENT, &m_bMenuBarCloser, ::getCppuType( &m_bMenuBarCloser ) ); - const sal_Bool bRefreshVisibility = sal_False; - registerPropertyNoMember( LAYOUTMANAGER_PROPNAME_REFRESHVISIBILITY, LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY, css::beans::PropertyAttribute::TRANSIENT, ::getCppuType( &bRefreshVisibility ), &bRefreshVisibility ); - registerProperty( LAYOUTMANAGER_PROPNAME_PRESERVE_CONTENT_SIZE, LAYOUTMANAGER_PROPHANDLE_PRESERVE_CONTENT_SIZE, css::beans::PropertyAttribute::TRANSIENT, &m_bPreserveContentSize, ::getCppuType( &m_bPreserveContentSize ) ); + registerProperty( LAYOUTMANAGER_PROPNAME_HIDECURRENTUI, LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI, beans::PropertyAttribute::TRANSIENT, &m_bHideCurrentUI, ::getCppuType( &m_bHideCurrentUI ) ); + registerProperty( LAYOUTMANAGER_PROPNAME_LOCKCOUNT, LAYOUTMANAGER_PROPHANDLE_LOCKCOUNT, beans::PropertyAttribute::TRANSIENT | beans::PropertyAttribute::READONLY, &m_nLockCount, getCppuType( &m_nLockCount ) ); + registerProperty( LAYOUTMANAGER_PROPNAME_MENUBARCLOSER, LAYOUTMANAGER_PROPHANDLE_MENUBARCLOSER, beans::PropertyAttribute::TRANSIENT, &m_bMenuBarCloser, ::getCppuType( &m_bMenuBarCloser ) ); + registerPropertyNoMember( LAYOUTMANAGER_PROPNAME_REFRESHVISIBILITY, LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY, beans::PropertyAttribute::TRANSIENT, ::getCppuType( &bRefreshVisibility ), &bRefreshVisibility ); + registerProperty( LAYOUTMANAGER_PROPNAME_PRESERVE_CONTENT_SIZE, LAYOUTMANAGER_PROPHANDLE_PRESERVE_CONTENT_SIZE, beans::PropertyAttribute::TRANSIENT, &m_bPreserveContentSize, ::getCppuType( &m_bPreserveContentSize ) ); } LayoutManager::~LayoutManager() { Application::RemoveEventListener( LINK( this, LayoutManager, SettingsChanged ) ); - if ( m_pMiscOptions ) - { - m_pMiscOptions->RemoveListenerLink( LINK( this, LayoutManager, OptionsChanged ) ); - delete m_pMiscOptions; - m_pMiscOptions = 0; - } m_aAsyncLayoutTimer.Stop(); } @@ -457,18 +198,15 @@ void LayoutManager::impl_clearUpMenuBar() { vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); - - if ( pWindow ) + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) { MenuBar* pSetMenuBar = 0; if ( m_xInplaceMenuBar.is() ) pSetMenuBar = (MenuBar *)m_pInplaceMenuBar->GetMenuBar(); else { - Reference< css::awt::XMenuBar > xMenuBar; + Reference< awt::XMenuBar > xMenuBar; Reference< XPropertySet > xPropSet( m_xMenuBar, UNO_QUERY ); if ( xPropSet.is() ) @@ -477,12 +215,8 @@ void LayoutManager::impl_clearUpMenuBar() { xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "XMenuBar" ))) >>= xMenuBar; } - catch ( com::sun::star::beans::UnknownPropertyException ) - { - } - catch ( com::sun::star::lang::WrappedTargetException ) - { - } + catch ( beans::UnknownPropertyException ) {} + catch ( lang::WrappedTargetException ) {} } VCLXMenu* pAwtMenuBar = VCLXMenu::GetImplementation( xMenuBar ); @@ -490,9 +224,9 @@ void LayoutManager::impl_clearUpMenuBar() pSetMenuBar = (MenuBar*)pAwtMenuBar->GetMenu(); } - MenuBar* pTopMenuBar = ((SystemWindow *)pWindow)->GetMenuBar(); + MenuBar* pTopMenuBar = pSysWindow->GetMenuBar(); if ( pSetMenuBar == pTopMenuBar ) - ((SystemWindow *)pWindow)->SetMenuBar( 0 ); + pSysWindow->SetMenuBar( 0 ); } } @@ -511,45 +245,17 @@ void LayoutManager::impl_clearUpMenuBar() implts_unlock(); } -sal_Bool LayoutManager::impl_parseResourceURL( const rtl::OUString aResourceURL, rtl::OUString& aElementType, rtl::OUString& aElementName ) -{ - URL aURL; - sal_Int32 nIndex = 0; - - aURL.Complete = aResourceURL; - m_xURLTransformer->parseStrict( aURL ); - - ::rtl::OUString aUIResource = aURL.Path.getToken( 0, (sal_Unicode)'/', nIndex ); - - if (( aURL.Protocol.equalsIgnoreAsciiCaseAscii( UIRESOURCE_PROTOCO_ASCII )) && - ( aUIResource.equalsIgnoreAsciiCaseAscii( UIRESOURCE_RESOURCE_ASCII ))) - { - aElementType = aURL.Path.getToken( 0, (sal_Unicode)'/', nIndex ); - aElementName = aURL.Path.getToken( 0, (sal_Unicode)'/', nIndex ); - return sal_True; - } - - return sal_False; -} - void LayoutManager::implts_lock() { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); ++m_nLockCount; - aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } sal_Bool LayoutManager::implts_unlock() { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - --m_nLockCount; - if ( m_nLockCount < 0 ) - m_nLockCount = 0; + m_nLockCount = std::max( --m_nLockCount, static_cast<sal_Int32>(0) ); return ( m_nLockCount == 0 ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } void LayoutManager::implts_reset( sal_Bool bAttached ) @@ -557,18 +263,16 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); Reference< XFrame > xFrame = m_xFrame; - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); - Reference< css::awt::XWindow > xTopDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - Reference< css::awt::XWindow > xLeftDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT]; - Reference< css::awt::XWindow > xRightDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT]; - Reference< css::awt::XWindow > xBottomDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM]; + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); Reference< XUIConfiguration > xModuleCfgMgr( m_xModuleCfgMgr, UNO_QUERY ); Reference< XUIConfiguration > xDocCfgMgr( m_xDocCfgMgr, UNO_QUERY ); Reference< XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); Reference< XMultiServiceFactory > xServiceManager( m_xSMGR ); Reference< XNameAccess > xPersistentWindowStateSupplier( m_xPersistentWindowStateSupplier ); + Reference< awt::XWindowListener > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); ::rtl::OUString aModuleIdentifier( m_aModuleIdentifier ); - sal_Bool bAutomaticToolbars( m_bAutomaticToolbars ); + bool bAutomaticToolbars( m_bAutomaticToolbars ); aReadLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ @@ -584,9 +288,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) { aModuleIdentifier = m_xModuleManager->identify( Reference< XInterface >( xFrame, UNO_QUERY ) ); } - catch( Exception& ) - { - } + catch( Exception& ) {} if ( aModuleIdentifier.getLength() && aOldModuleIdentifier != aModuleIdentifier ) { @@ -602,9 +304,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) // Remove listener to old module ui configuration manager xModuleCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } try @@ -614,9 +314,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) if ( xModuleCfgMgr.is() ) xModuleCfgMgr->addConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} try { @@ -624,12 +322,8 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) if ( xPersistentWindowStateSupplier.is() ) xPersistentWindowStateSupplier->getByName( aModuleIdentifier ) >>= xPersistentWindowState; } - catch ( NoSuchElementException& ) - { - } - catch ( WrappedTargetException& ) - { - } + catch ( NoSuchElementException& ) {} + catch ( WrappedTargetException& ) {} } xModel = impl_getModelFromFrame( xFrame ); @@ -645,9 +339,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) // Remove listener to old ui configuration manager xDocCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } try @@ -656,9 +348,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) if ( xDocCfgMgr.is() ) xDocCfgMgr->addConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } } } @@ -672,9 +362,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) xModuleCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } if ( xDocCfgMgr.is() ) @@ -684,9 +372,7 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) xDocCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } // Release references to our configuration managers as we currently don't have @@ -697,47 +383,39 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) aModuleIdentifier = ::rtl::OUString(); } + Reference< XUIConfigurationManager > xModCfgMgr( xModuleCfgMgr, UNO_QUERY ); + Reference< XUIConfigurationManager > xDokCfgMgr( xDocCfgMgr, UNO_QUERY ); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_xModel = xModel; - m_aDockingArea = css::awt::Rectangle(); + m_aDockingArea = awt::Rectangle(); m_bComponentAttached = bAttached; m_aModuleIdentifier = aModuleIdentifier; - m_xModuleCfgMgr = Reference< XUIConfigurationManager >( xModuleCfgMgr, UNO_QUERY ); - m_xDocCfgMgr = Reference< XUIConfigurationManager >( xDocCfgMgr, UNO_QUERY ); + m_xModuleCfgMgr = xModCfgMgr; + m_xDocCfgMgr = xDokCfgMgr; m_xPersistentWindowState = xPersistentWindowState; m_aStatusBarElement.m_bStateRead = sal_False; // reset state to read data again! aWriteLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( bAttached ) + // reset/notify toolbar layout manager + if ( pToolbarManager ) { - // reset docking area windows back to zero size - try + if ( bAttached ) { - if ( xTopDockingWindow.is() ) - xTopDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xLeftDockingWindow.is() ) - xLeftDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xRightDockingWindow.is() ) - xRightDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xBottomDockingWindow.is() ) - xBottomDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); + pToolbarManager->attach( xFrame, xModCfgMgr, xDokCfgMgr, xPersistentWindowState ); + uno::Reference< awt::XWindowPeer > xParent( xContainerWindow, UNO_QUERY ); + pToolbarManager->setParentWindow( xParent ); + if ( bAutomaticToolbars ) + pToolbarManager->createStaticToolbars(); } - catch ( Exception& ) - { - } - - if ( bAutomaticToolbars ) + else { - implts_createCustomToolBars(); - implts_createAddonsToolBars(); - implts_createNonContextSensitiveToolBars(); + pToolbarManager->reset(); + implts_destroyElements(); } - implts_sortUIElements(); } - else - implts_destroyElements(); } implts_unlock(); @@ -745,15 +423,12 @@ void LayoutManager::implts_reset( sal_Bool bAttached ) sal_Bool LayoutManager::implts_isEmbeddedLayoutManager() const { - // check if this layout manager is currently using the embedded feature - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); Reference< XFrame > xFrame = m_xFrame; - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - Reference< css::awt::XWindow > xFrameContainerWindow = xFrame->getContainerWindow(); + Reference< awt::XWindow > xFrameContainerWindow = xFrame->getContainerWindow(); if ( xFrameContainerWindow == xContainerWindow ) return sal_False; else @@ -762,20 +437,13 @@ sal_Bool LayoutManager::implts_isEmbeddedLayoutManager() const void LayoutManager::implts_destroyElements() { - UIElementVector aUIElementVector; - WriteGuard aWriteLock( m_aLock ); - aUIElementVector = m_aUIElements; - m_aUIElements.clear(); + uno::Reference< ui::XUIConfigurationListener > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; aWriteLock.unlock(); - UIElementVector::iterator pIter; - for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) - { - Reference< XComponent > xComponent( pIter->m_xUIElement, UNO_QUERY ); - if ( xComponent.is() ) - xComponent->dispose(); - } + if ( pToolbarManager ) + pToolbarManager->destroyToolbars(); implts_destroyStatusBar(); @@ -784,592 +452,49 @@ void LayoutManager::implts_destroyElements() aWriteLock.unlock(); } -void LayoutManager::implts_destroyDockingAreaWindows() -{ - std::vector< Reference< css::awt::XWindow > > oldDockingAreaWindows; - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - WriteGuard aWriteLock( m_aLock ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT] ); - - m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT].clear(); - aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - - const sal_uInt32 nCount = oldDockingAreaWindows.size(); - for ( sal_uInt32 i=0; i < nCount; i++ ) - { - if ( oldDockingAreaWindows[i].is() ) - { - try - { - oldDockingAreaWindows[i]->dispose(); - } - catch ( Exception& ) - { - } - } - } -} - -void LayoutManager::implts_createCustomToolBar( const rtl::OUString& aTbxResName, const rtl::OUString& aTitle ) -{ - if ( aTbxResName.getLength() > 0 ) - { - createElement( aTbxResName ); - if ( aTitle ) - { - Reference< XUIElement > xUIElement = getElement( aTbxResName ); - if ( xUIElement.is() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - pWindow->SetText( aTitle ); - } - } - } -} - -void LayoutManager::implts_createCustomToolBars( - const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& aTbxSeqSeq ) -{ - const Sequence< PropertyValue >* pTbxSeq = aTbxSeqSeq.getConstArray(); - for ( sal_Int32 i = 0; i < aTbxSeqSeq.getLength(); i++ ) - { - const Sequence< PropertyValue >& rTbxSeq = pTbxSeq[i]; - ::rtl::OUString aTbxResName; - ::rtl::OUString aTbxTitle; - for ( sal_Int32 j = 0; j < rTbxSeq.getLength(); j++ ) - { - if ( rTbxSeq[j].Name.equalsAscii( "ResourceURL" )) - rTbxSeq[j].Value >>= aTbxResName; - else if ( rTbxSeq[j].Name.equalsAscii( "UIName" )) - rTbxSeq[j].Value >>= aTbxTitle; - } - - // Only create custom toolbars. Their name have to start with "custom_"! - if ( aTbxResName.getLength() > 0 && aTbxResName.indexOf( m_aCustomTbxPrefix ) != -1 ) - implts_createCustomToolBar( aTbxResName, aTbxTitle ); - } -} - -void LayoutManager::implts_createCustomToolBars() -{ - ReadGuard aReadLock( m_aLock ); - if ( !m_bComponentAttached ) - return; - - Reference< XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); - Reference< XFrame > xFrame( m_xFrame ); - Reference< XModel > xModel; - Reference< XUIConfigurationManager > xModuleCfgMgr( m_xModuleCfgMgr, UNO_QUERY ); - Reference< XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr, UNO_QUERY ); - aReadLock.unlock(); - - if ( xFrame.is() ) - { - xModel = impl_getModelFromFrame( xFrame ); - if ( implts_isPreviewModel( xModel )) - return; // no custom toolbars for preview frame! - - Sequence< Sequence< PropertyValue > > aTbxSeq; - if ( xDocCfgMgr.is() ) - { - aTbxSeq = xDocCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); - implts_createCustomToolBars( aTbxSeq ); // first create all document based toolbars - } - if ( xModuleCfgMgr.is() ) - { - aTbxSeq = xModuleCfgMgr->getUIElementsInfo( UIElementType::TOOLBAR ); - implts_createCustomToolBars( aTbxSeq ); // second create module based toolbars - } - } -} - -rtl::OUString LayoutManager::implts_generateGenericAddonToolbarTitle( sal_Int32 nNumber ) const -{ - String aAddonGenericTitle; - - aAddonGenericTitle = String( FwkResId( STR_TOOLBAR_TITLE_ADDON )); - const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper(); - - String aNumStr = rI18nHelper.GetNum( nNumber, 0, FALSE, FALSE ); - aAddonGenericTitle.SearchAndReplaceAscii( "%num%", aNumStr ); - - return rtl::OUString( aAddonGenericTitle ); -} - -void LayoutManager::implts_createAddonsToolBars() -{ - WriteGuard aWriteLock( m_aLock ); - if ( !m_bComponentAttached ) - return; - - Reference< XModel > xModel; - Reference< XFrame > xFrame( m_xFrame ); - if ( !xFrame.is() ) - return; - - if ( !m_pAddonOptions ) - m_pAddonOptions = new AddonsOptions; - - Reference< XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); - aWriteLock.unlock(); - - xModel = impl_getModelFromFrame( xFrame ); - if ( implts_isPreviewModel( xModel )) - return; // no addon toolbars for preview frame! - - UIElementVector aUIElementVector; - Sequence< Sequence< PropertyValue > > aAddonToolBarData; - Reference< XUIElement > xUIElement; - - sal_uInt32 nCount = m_pAddonOptions->GetAddonsToolBarCount(); - ::rtl::OUString aAddonsToolBarStaticName( m_aFullAddonTbxPrefix ); - ::rtl::OUString aElementType( RTL_CONSTASCII_USTRINGPARAM( "toolbar" )); - - Sequence< PropertyValue > aPropSeq( 2 ); - aPropSeq[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" )); - aPropSeq[0].Value <<= xFrame; - aPropSeq[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationData" )); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - ::rtl::OUString aAddonToolBarName( aAddonsToolBarStaticName + m_pAddonOptions->GetAddonsToolbarResourceName(i) ); - aAddonToolBarData = m_pAddonOptions->GetAddonsToolBarPart( i ); - aPropSeq[1].Value <<= aAddonToolBarData; - - aWriteLock.lock(); - UIElement aElement = impl_findElement( aAddonToolBarName ); - aWriteLock.unlock(); - - // #i79828 - // It's now possible that we are called more than once. Be sure to not create - // add-on toolbars more than once! - if ( aElement.m_xUIElement.is() ) - continue; - - try - { - xUIElement = xUIElementFactory->createUIElement( aAddonToolBarName, aPropSeq ); - if ( xUIElement.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( xUIElement->getRealInterface(), UNO_QUERY ); - if ( xDockWindow.is() ) - { - try - { - xDockWindow->addDockableWindowListener( Reference< css::awt::XDockableWindowListener >( static_cast< OWeakObject * >( this ), UNO_QUERY )); - xDockWindow->enableDocking( sal_True ); - Reference< css::awt::XWindow > xWindow( xDockWindow, UNO_QUERY ); - if ( xWindow.is() ) - xWindow->addWindowListener( Reference< css::awt::XWindowListener >( static_cast< OWeakObject * >( this ), UNO_QUERY )); - } - catch ( Exception& ) - { - } - } - - ::rtl::OUString aGenericAddonTitle = implts_generateGenericAddonToolbarTitle( i+1 ); - - if ( aElement.m_aName.getLength() > 0 ) - { - // Reuse a local entry so we are able to use the latest - // UI changes for this document. - implts_setElementData( aElement, xDockWindow ); - aElement.m_xUIElement = xUIElement; - if ( aElement.m_aUIName.getLength() == 0 ) - { - aElement.m_aUIName = aGenericAddonTitle; - implts_writeWindowStateData( aElement.m_aName, aElement ); - } - } - else - { - // Create new UI element and try to read its state data - UIElement aNewToolbar( aAddonToolBarName, aElementType, xUIElement ); - aNewToolbar.m_bFloating = sal_True; - implts_readWindowStateData( aAddonToolBarName, aNewToolbar ); - implts_setElementData( aNewToolbar, xDockWindow ); - if ( aNewToolbar.m_aUIName.getLength() == 0 ) - { - aNewToolbar.m_aUIName = aGenericAddonTitle; - implts_writeWindowStateData( aNewToolbar.m_aName, aNewToolbar ); - } - implts_insertUIElement( aNewToolbar ); - } - - Reference< css::awt::XWindow > xWindow( xDockWindow, UNO_QUERY ); - if ( xWindow.is() ) - { - // Set generic title for add-on toolbar - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow->GetText().Len() == 0 ) - pWindow->SetText( aGenericAddonTitle ); - if ( pWindow->GetType() == WINDOW_TOOLBOX ) - { - ToolBox* pToolbar = (ToolBox *)pWindow; - pToolbar->SetMenuType(); - } - } - } - } - catch ( NoSuchElementException& ) - { - } - catch ( IllegalArgumentException& ) - { - } - } -} - -void LayoutManager::implts_createNonContextSensitiveToolBars() -{ - ReadGuard aReadLock( m_aLock ); - - if ( !m_xPersistentWindowState.is() || - !m_xFrame.is() || - !m_bComponentAttached ) - return; - - Reference< XFrame > xFrame( m_xFrame ); - - Reference< XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); - Reference< XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); - aReadLock.unlock(); - - if ( implts_isPreviewModel( impl_getModelFromFrame( xFrame ))) - return; - - std::vector< rtl::OUString > aMakeVisibleToolbars; - - try - { - Sequence< rtl::OUString > aToolbarNames = xPersistentWindowState->getElementNames(); - - if ( aToolbarNames.getLength() > 0 ) - { - rtl::OUString aElementType; - rtl::OUString aElementName; - rtl::OUString aName; - - Reference< ::com::sun::star::ui::XUIElement > xUIElement; - aMakeVisibleToolbars.reserve(aToolbarNames.getLength()); - WriteGuard aWriteLock( m_aLock ); - - const rtl::OUString* pTbNames = aToolbarNames.getConstArray(); - for ( sal_Int32 i = 0; i < aToolbarNames.getLength(); i++ ) - { - aName = pTbNames[i]; - if ( impl_parseResourceURL( aName, aElementType, aElementName )) - { - // Check that we only create: - // - Toolbars (the statusbar is also member of the persistent window state) - // - Not custom toolbars, there are created with their own method (implts_createCustomToolbars) - if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" ) && - aElementName.indexOf( m_aCustomTbxPrefix ) == -1 ) - { - UIElement aNewToolbar( aName, aElementType, xUIElement ); - bool bFound = implts_findElement( aName, aNewToolbar ); - if ( !bFound ) - implts_readWindowStateData( aName, aNewToolbar ); - - if ( aNewToolbar.m_bVisible && - !aNewToolbar.m_bContextSensitive ) - { - if ( !bFound ) - implts_insertUIElement( aNewToolbar ); - aMakeVisibleToolbars.push_back( aName ); - } - } - } - } - } - } - catch ( RuntimeException& e ) - { - throw e; - } - catch ( Exception& ) - { - } - - if ( !aMakeVisibleToolbars.empty() ) - { - implts_lock(); - ::std::for_each( aMakeVisibleToolbars.begin(), aMakeVisibleToolbars.end(),::boost::bind( &LayoutManager::requestElement, this,_1 )); - implts_unlock(); - } -} - void LayoutManager::implts_toggleFloatingUIElementsVisibility( sal_Bool bActive ) { - WriteGuard aWriteLock( m_aLock ); - UIElementVector::iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XWindow > xWindow( xDockWindow, UNO_QUERY ); - if ( xDockWindow.is() && xWindow.is() ) - { - sal_Bool bVisible( sal_True ); - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - bVisible = pWindow->IsVisible(); - - if ( xDockWindow->isFloating() ) - { - if ( bActive ) - { - if ( !bVisible && pIter->m_bDeactiveHide ) - { - pIter->m_bDeactiveHide = sal_False; - // we need VCL here to pass special flags to Show() - if( pWindow ) - pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - //xWindow->setVisible( sal_True ); - } - } - else - { - if ( bVisible ) - { - pIter->m_bDeactiveHide = sal_True; - xWindow->setVisible( sal_False ); - } - } - } - } - } - } -} - -sal_Bool LayoutManager::implts_findElement( const rtl::OUString& aName, rtl::OUString& aElementType, rtl::OUString& aElementName, Reference< XUIElement >& xUIElement ) -{ - if ( impl_parseResourceURL( aName, aElementType, aElementName )) - { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) - { - ReadGuard aReadLock( m_aLock ); - xUIElement = m_xMenuBar; - return sal_True; - } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == aName )) - { - ReadGuard aReadLock( m_aLock ); - xUIElement = m_aStatusBarElement.m_xUIElement; - return sal_True; - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) - { - ReadGuard aReadLock( m_aLock ); - xUIElement = m_aProgressBarElement.m_xUIElement; - return sal_True; - } - else - { - UIElementVector::const_iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName ) - { - xUIElement = pIter->m_xUIElement; - return sal_True; - } - } - } - } - - return sal_False; -} - -sal_Bool LayoutManager::implts_findElement( const Reference< XInterface >& xUIElement, UIElement& aElementData ) -{ - UIElementVector::const_iterator pIter; - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - { - Reference< XInterface > xIfac( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - if ( xIfac == xUIElement ) - { - aElementData = *pIter; - return sal_True; - } - } - } + uno::Reference< ui::XUIConfigurationListener > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - return sal_False; + if ( pToolbarManager ) + pToolbarManager->setFloatingToolbarsVisibility( bActive ); } -sal_Bool LayoutManager::implts_findElement( const rtl::OUString& aName, UIElement& aElementData ) +uno::Reference< ui::XUIElement > LayoutManager::implts_findElement( const rtl::OUString& aName ) { - UIElementVector::const_iterator pIter; + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName ) - { - aElementData = *pIter; - return sal_True; - } - } + parseResourceURL( aName, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + return m_xMenuBar; + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) + return m_aStatusBarElement.m_xUIElement; + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + return m_aProgressBarElement.m_xUIElement; - return sal_False; + return uno::Reference< ui::XUIElement >(); } -LayoutManager::UIElement& LayoutManager::impl_findElement( const rtl::OUString& aName ) +UIElement& LayoutManager::impl_findElement( const rtl::OUString& aName ) { static UIElement aEmptyElement; - UIElementVector::iterator pIter; + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName ) - return *pIter; - } + parseResourceURL( aName, aElementType, aElementName ); + if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) + return m_aStatusBarElement; + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + return m_aProgressBarElement; return aEmptyElement; } -sal_Bool LayoutManager::implts_insertUIElement( const UIElement& rUIElement ) -{ - UIElement aTempData; - bool bFound = implts_findElement( rUIElement.m_aName, aTempData ); - -#ifdef DBG_UTIL - if ( bFound ) - { - char aBuffer[256]; - const sal_Int32 MAX_NAME_LENGTH = 128; - ::rtl::OString aName = ::rtl::OUStringToOString( rUIElement.m_aName, RTL_TEXTENCODING_ASCII_US ); - aName = aName.copy( ::std::min( MAX_NAME_LENGTH, aName.getLength() )); - sprintf( aBuffer, "Try to insert an already existing user interface element (%s) into the list\n", aName.getStr() ); - DBG_ASSERT( bFound, aBuffer ); - } -#endif - - bool bResult( false ); - if ( !bFound ) - { - WriteGuard aWriteLock( m_aLock ); - m_aUIElements.push_back( rUIElement ); - bResult = true; - } - return bResult; -} - -void LayoutManager::implts_writeNewStateData( const rtl::OUString aName, const Reference< css::awt::XWindow >& xWindow ) -{ - css::awt::Rectangle aPos; - css::awt::Size aSize; - sal_Bool bVisible( sal_False ); - sal_Bool bFloating( sal_True ); - - if ( xWindow.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow.is() ) - bFloating = xDockWindow->isFloating(); - - Reference< css::awt::XWindow2 > xWindow2( xWindow, UNO_QUERY ); - if( xWindow2.is() ) - { - aPos = xWindow2->getPosSize(); - aSize = xWindow2->getOutputSize(); // always use output size for consistency - bVisible = xWindow2->isVisible(); - } - } - - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = impl_findElement( aName ); - if ( rUIElement.m_xUIElement.is() && xWindow.is() ) - { - rUIElement.m_bVisible = bVisible; - rUIElement.m_bFloating = bFloating; - if ( bFloating ) - { - rUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); - rUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); - } - } - - implts_writeWindowStateData( aName, rUIElement ); - - aWriteLock.unlock(); -} - -void LayoutManager::implts_refreshContextToolbarsVisibility() -{ - std::vector< UIElementVisibility > aToolbarVisibleVector; - - ReadGuard aReadLock( m_aLock ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( !m_bVisible || !m_bAutomaticToolbars ) - return; - - UIElementVisibility aUIElementVisible; - - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aType.equalsAsciiL( "toolbar", 7 )) - { - aUIElementVisible.aName = pIter->m_aName; - aUIElementVisible.bVisible = pIter->m_bVisible; - aToolbarVisibleVector.push_back( aUIElementVisible ); - } - } - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - aReadLock.unlock(); - - UIElement aUIElement; - const sal_uInt32 nCount = aToolbarVisibleVector.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - UIElementVisibility& rToolbar = aToolbarVisibleVector[i]; - - sal_Bool bVisible = rToolbar.bVisible; - if ( implts_readWindowStateData( rToolbar.aName, aUIElement ) && - aUIElement.m_bVisible != bVisible ) - { - WriteGuard aWriteLock( m_aLock ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - UIElement& rUIElement = impl_findElement( rToolbar.aName ); - - if ( rUIElement.m_aName == rToolbar.aName ) - rUIElement.m_bVisible = aUIElement.m_bVisible; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - aWriteLock.unlock(); - } - } -} - sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, UIElement& rElementData ) { sal_Bool bGetSettingsState( sal_False ); @@ -1411,13 +536,13 @@ sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, } else if ( aWindowState[n].Name == m_aPropDockingArea ) { - ::com::sun::star::ui::DockingArea eDockingArea; + ui::DockingArea eDockingArea; if ( aWindowState[n].Value >>= eDockingArea ) rElementData.m_aDockedData.m_nDockedArea = sal_Int16( eDockingArea ); } else if ( aWindowState[n].Name == m_aPropDockPos ) { - css::awt::Point aPoint; + awt::Point aPoint; if ( aWindowState[n].Value >>= aPoint ) { rElementData.m_aDockedData.m_aPos.X() = aPoint.X; @@ -1426,7 +551,7 @@ sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, } else if ( aWindowState[n].Name == m_aPropPos ) { - css::awt::Point aPoint; + awt::Point aPoint; if ( aWindowState[n].Value >>= aPoint ) { rElementData.m_aFloatingData.m_aPos.X() = aPoint.X; @@ -1435,7 +560,7 @@ sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, } else if ( aWindowState[n].Name == m_aPropSize ) { - css::awt::Size aSize; + awt::Size aSize; if ( aWindowState[n].Value >>= aSize ) { rElementData.m_aFloatingData.m_aSize.Width() = aSize.Width; @@ -1487,7 +612,7 @@ sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, m_bGlobalSettings = sal_True; aWriteLock2.unlock(); - css::uno::Any aValue; + uno::Any aValue; sal_Bool bValue = sal_Bool(); if ( pGlobalSettings->GetStateInfo( GlobalSettings::UIELEMENT_TYPE_TOOLBAR, GlobalSettings::STATEINFO_LOCKED, @@ -1505,9 +630,7 @@ sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, return sal_True; } - catch ( NoSuchElementException& ) - { - } + catch ( NoSuchElementException& ) {} } return sal_False; @@ -1531,14 +654,12 @@ void LayoutManager::implts_writeWindowStateData( const rtl::OUString& aName, con // Check persistent flag of the user interface element xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Persistent" ))) >>= bPersistent; } - catch ( com::sun::star::beans::UnknownPropertyException ) + catch ( beans::UnknownPropertyException ) { // Non-configurable elements should at least store their dimension/position bPersistent = sal_True; } - catch ( com::sun::star::lang::WrappedTargetException ) - { - } + catch ( lang::WrappedTargetException ) {} } if ( bPersistent && xPersistentWindowState.is() ) @@ -1547,49 +668,47 @@ void LayoutManager::implts_writeWindowStateData( const rtl::OUString& aName, con { Sequence< PropertyValue > aWindowState( 8 ); - aWindowState[0].Name = m_aPropDocked; - aWindowState[0].Value = makeAny( sal_Bool( !rElementData.m_bFloating )); - aWindowState[1].Name = m_aPropVisible; - aWindowState[1].Value = makeAny( sal_Bool( rElementData.m_bVisible )); + aWindowState[0].Name = m_aPropDocked; + aWindowState[0].Value = makeAny( sal_Bool( !rElementData.m_bFloating )); + aWindowState[1].Name = m_aPropVisible; + aWindowState[1].Value = makeAny( sal_Bool( rElementData.m_bVisible )); - aWindowState[2].Name = m_aPropDockingArea; - aWindowState[2].Value = makeAny( static_cast< DockingArea >( rElementData.m_aDockedData.m_nDockedArea ) ); + aWindowState[2].Name = m_aPropDockingArea; + aWindowState[2].Value = makeAny( static_cast< DockingArea >( rElementData.m_aDockedData.m_nDockedArea ) ); - css::awt::Point aPos; + awt::Point aPos; aPos.X = rElementData.m_aDockedData.m_aPos.X(); aPos.Y = rElementData.m_aDockedData.m_aPos.Y(); - aWindowState[3].Name = m_aPropDockPos; - aWindowState[3].Value <<= aPos; + aWindowState[3].Name = m_aPropDockPos; + aWindowState[3].Value <<= aPos; aPos.X = rElementData.m_aFloatingData.m_aPos.X(); aPos.Y = rElementData.m_aFloatingData.m_aPos.Y(); - aWindowState[4].Name = m_aPropPos; - aWindowState[4].Value <<= aPos; + aWindowState[4].Name = m_aPropPos; + aWindowState[4].Value <<= aPos; - css::awt::Size aSize; + awt::Size aSize; aSize.Width = rElementData.m_aFloatingData.m_aSize.Width(); aSize.Height = rElementData.m_aFloatingData.m_aSize.Height(); - aWindowState[5].Name = m_aPropSize; - aWindowState[5].Value <<= aSize; - aWindowState[6].Name = m_aPropUIName; - aWindowState[6].Value = makeAny( rElementData.m_aUIName ); - aWindowState[7].Name = m_aPropLocked; - aWindowState[7].Value = makeAny( rElementData.m_aDockedData.m_bLocked ); + aWindowState[5].Name = m_aPropSize; + aWindowState[5].Value <<= aSize; + aWindowState[6].Name = m_aPropUIName; + aWindowState[6].Value = makeAny( rElementData.m_aUIName ); + aWindowState[7].Name = m_aPropLocked; + aWindowState[7].Value = makeAny( rElementData.m_aDockedData.m_bLocked ); if ( xPersistentWindowState->hasByName( aName )) { - Reference< XNameReplace > xReplace( xPersistentWindowState, UNO_QUERY ); + Reference< XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); xReplace->replaceByName( aName, makeAny( aWindowState )); } else { - Reference< XNameContainer > xInsert( xPersistentWindowState, UNO_QUERY ); + Reference< XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); xInsert->insertByName( aName, makeAny( aWindowState )); } } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } // Reset flag @@ -1598,1450 +717,23 @@ void LayoutManager::implts_writeWindowStateData( const rtl::OUString& aName, con aWriteLock.unlock(); } -void LayoutManager::implts_setElementData( UIElement& rElement, const Reference< css::awt::XDockableWindow >& rDockWindow ) -{ - ReadGuard aReadLock( m_aLock ); - sal_Bool bShowElement( rElement.m_bVisible && !rElement.m_bMasterHide && m_bParentWindowVisible ); - aReadLock.unlock(); - - Reference< css::awt::XDockableWindow > xDockWindow( rDockWindow ); - Reference< css::awt::XWindow2 > xWindow( xDockWindow, UNO_QUERY ); - - Window* pWindow( 0 ); - ToolBox* pToolBox( 0 ); - - if ( xDockWindow.is() && xWindow.is() ) - { - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - { - String aText = pWindow->GetText(); - if ( aText.Len() == 0 ) - pWindow->SetText( rElement.m_aUIName ); - if ( rElement.m_bNoClose ) - pWindow->SetStyle( pWindow->GetStyle() & ~WB_CLOSEABLE ); - if ( pWindow->GetType() == WINDOW_TOOLBOX ) - pToolBox = (ToolBox *)pWindow; - } - if ( pToolBox ) - { - if (( rElement.m_nStyle < 0 ) || - ( rElement.m_nStyle > BUTTON_SYMBOLTEXT )) - rElement.m_nStyle = BUTTON_SYMBOL; - pToolBox->SetButtonType( (ButtonType)rElement.m_nStyle ); - if ( rElement.m_bNoClose ) - pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); - } - } - - if ( rElement.m_bFloating ) - { - if ( pWindow ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - String aText = pWindow->GetText(); - if ( aText.Len() == 0 ) - pWindow->SetText( rElement.m_aUIName ); - } - - ::Point aPos( rElement.m_aFloatingData.m_aPos.X(), - rElement.m_aFloatingData.m_aPos.Y() ); - sal_Bool bWriteData( sal_False ); - sal_Bool bUndefPos = ( rElement.m_aFloatingData.m_aPos.X() == SAL_MAX_INT32 || - rElement.m_aFloatingData.m_aPos.Y() == SAL_MAX_INT32 ); - sal_Bool bSetSize = ( rElement.m_aFloatingData.m_aSize.Width() != 0 && - rElement.m_aFloatingData.m_aSize.Height() != 0 ); - xDockWindow->setFloatingMode( sal_True ); - if ( bUndefPos ) - { - aPos = implts_findNextCascadeFloatingPos(); - rElement.m_aFloatingData.m_aPos = aPos; // set new cascaded position - bWriteData = sal_True; - } - - if( bSetSize ) - xWindow->setOutputSize( AWTSize( rElement.m_aFloatingData.m_aSize ) ); - else - { - if( pToolBox ) - { - // set an optimal initial floating size - vos::OGuard aGuard( Application::GetSolarMutex() ); - ::Size aSize( pToolBox->CalcFloatingWindowSizePixel() ); - pToolBox->SetOutputSizePixel( aSize ); - } - } - - // #i60882# IMPORTANT: Set position after size as it is - // possible that we position some part of the toolbar - // outside of the desktop. A default constructed toolbar - // always has one line. Now VCL automatically - // position the toolbar back into the desktop. Therefore - // we resize the toolbar with the new (wrong) position. - // To fix this problem we have to set the size BEFORE the - // position. - xWindow->setPosSize( aPos.X(), aPos.Y(), 0, 0, - css::awt::PosSize::POS ); - - if ( bWriteData ) - implts_writeWindowStateData( rElement.m_aName, rElement ); - if ( bShowElement && pWindow ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pWindow->Show( sal_True, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - } - } - else - { - ::Point aDockPos; - ::Point aPixelPos; - sal_Bool bSetSize( sal_False ); - ::Size aSize; - - if ( pToolBox ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pToolBox->SetAlign( ImplConvertAlignment(rElement.m_aDockedData.m_nDockedArea ) ); - pToolBox->SetLineCount( 1 ); - if ( rElement.m_aDockedData.m_bLocked ) - xDockWindow->lock(); - aSize = pToolBox->CalcWindowSizePixel(); - bSetSize = sal_True; - - if (( rElement.m_aDockedData.m_aPos.X() == SAL_MAX_INT32 ) && - ( rElement.m_aDockedData.m_aPos.Y() == SAL_MAX_INT32 )) - { - implts_findNextDockingPos( (DockingArea)rElement.m_aDockedData.m_nDockedArea, - aSize, - aDockPos, - aPixelPos ); - rElement.m_aDockedData.m_aPos = aDockPos; - } - } - - xWindow->setPosSize( aPixelPos.X(), - aPixelPos.Y(), - 0, 0, - css::awt::PosSize::POS ); - if( bSetSize ) - xWindow->setOutputSize( AWTSize( aSize) ); - - if ( bShowElement && pWindow ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pWindow->Show( sal_True ); - } - } - } -} - -::Point LayoutManager::implts_findNextCascadeFloatingPos() -{ - const sal_Int32 nHotZoneX = 50; - const sal_Int32 nHotZoneY = 50; - const sal_Int32 nCascadeIndentX = 15; - const sal_Int32 nCascadeIndentY = 15; - - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xContainerWindow = m_xContainerWindow; - Reference< css::awt::XWindow > xTopDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - Reference< css::awt::XWindow > xLeftDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT]; - aReadLock.unlock(); - - ::Point aStartPos( nCascadeIndentX, nCascadeIndentY ); - ::Point aCurrPos( aStartPos ); - css::awt::Rectangle aRect; - - Window* pContainerWindow( 0 ); - if ( xContainerWindow.is() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - if ( pContainerWindow ) - aStartPos = pContainerWindow->OutputToScreenPixel( aStartPos ); - } - - // Determine size of top and left docking area - css::awt::Rectangle aTopRect = xTopDockingWindow->getPosSize(); - css::awt::Rectangle aLeftRect = xLeftDockingWindow->getPosSize(); - - aStartPos.X() += aLeftRect.Width + nCascadeIndentX; - aStartPos.Y() += aTopRect.Height + nCascadeIndentY; - aCurrPos = aStartPos; - - // Try to find a cascaded position for the new floating window - UIElementVector::const_iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XWindow > xWindow( xDockWindow, UNO_QUERY ); - if ( xDockWindow.is() && xDockWindow->isFloating() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->IsVisible() ) - { - css::awt::Rectangle aFloatRect = xWindow->getPosSize(); - if ((( aFloatRect.X - nHotZoneX ) <= aCurrPos.X() ) && - ( aFloatRect.X >= aCurrPos.X() ) && - (( aFloatRect.Y - nHotZoneY ) <= aCurrPos.Y() ) && - ( aFloatRect.Y >= aCurrPos.Y() )) - { - aCurrPos.X() = aFloatRect.X + nCascadeIndentX; - aCurrPos.Y() = aFloatRect.Y + nCascadeIndentY; - } - } - } - } - } - - return aCurrPos; -} - -void LayoutManager::implts_findNextDockingPos( DockingArea DockingArea, const ::Size& aUIElementSize, ::Point& rVirtualPos, ::Point& rPixelPos ) -{ - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xDockingWindow = m_xDockAreaWindows[DockingArea]; - ::Size aDockingWinSize; - Window* pDockingWindow( 0 ); - aReadLock.unlock(); - - if (( DockingArea < DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea > DockingArea_DOCKINGAREA_RIGHT )) - DockingArea = DockingArea_DOCKINGAREA_TOP; - - { - // Retrieve output size from container Window - vos::OGuard aGuard( Application::GetSolarMutex() ); - pDockingWindow = VCLUnoHelper::GetWindow( xDockingWindow ); - if ( pDockingWindow ) - aDockingWinSize = pDockingWindow->GetOutputSizePixel(); - } - - sal_Int32 nFreeRowColPixelPos( 0 ); - sal_Int32 nMaxSpace( 0 ); - sal_Int32 nNeededSpace( 0 ); - sal_Int32 nTopDockingAreaSize( 0 ); - - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - nMaxSpace = aDockingWinSize.Width(); - nNeededSpace = aUIElementSize.Width(); - } - else - { - nMaxSpace = aDockingWinSize.Height(); - nNeededSpace = aUIElementSize.Height(); - nTopDockingAreaSize = implts_getTopBottomDockingAreaSizes().Width(); - } - - std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; - - implts_getDockingAreaElementInfos( DockingArea, aRowColumnsWindowData ); - sal_Int32 nPixelPos( 0 ); - const sal_uInt32 nCount = aRowColumnsWindowData.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - SingleRowColumnWindowData& rRowColumnWindowData = aRowColumnsWindowData[i]; - - if (( DockingArea == DockingArea_DOCKINGAREA_BOTTOM ) || - ( DockingArea == DockingArea_DOCKINGAREA_RIGHT )) - nPixelPos += rRowColumnWindowData.nStaticSize; - - if ((( nMaxSpace - rRowColumnWindowData.nVarSize ) >= nNeededSpace ) || - ( rRowColumnWindowData.nSpace >= nNeededSpace )) - { - // Check current row where we can find the needed space - sal_Int32 nCurrPos( 0 ); - const sal_uInt32 nWindowSizesCount = rRowColumnWindowData.aRowColumnWindowSizes.size(); - for ( sal_uInt32 j = 0; j < nWindowSizesCount; j++ ) - { - css::awt::Rectangle rRect = rRowColumnWindowData.aRowColumnWindowSizes[j]; - sal_Int32& rSpace = rRowColumnWindowData.aRowColumnSpace[j]; - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - if ( rSpace >= nNeededSpace ) - { - rVirtualPos = ::Point( nCurrPos, rRowColumnWindowData.nRowColumn ); - if ( DockingArea == DockingArea_DOCKINGAREA_TOP ) - rPixelPos = ::Point( nCurrPos, nPixelPos ); - else - rPixelPos = ::Point( nCurrPos, aDockingWinSize.Height() - nPixelPos ); - return; - } - nCurrPos = rRect.X + rRect.Width; - } - else - { - if ( rSpace >= nNeededSpace ) - { - rVirtualPos = ::Point( rRowColumnWindowData.nRowColumn, nCurrPos ); - if ( DockingArea == DockingArea_DOCKINGAREA_LEFT ) - rPixelPos = ::Point( nPixelPos, nTopDockingAreaSize + nCurrPos ); - else - rPixelPos = ::Point( aDockingWinSize.Width() - nPixelPos , nTopDockingAreaSize + nCurrPos ); - return; - } - nCurrPos = rRect.Y + rRect.Height; - } - } - - if (( nCurrPos + nNeededSpace ) <= nMaxSpace ) - { - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - rVirtualPos = ::Point( nCurrPos, rRowColumnWindowData.nRowColumn ); - if ( DockingArea == DockingArea_DOCKINGAREA_TOP ) - rPixelPos = ::Point( nCurrPos, nPixelPos ); - else - rPixelPos = ::Point( nCurrPos, aDockingWinSize.Height() - nPixelPos ); - return; - } - else - { - rVirtualPos = ::Point( rRowColumnWindowData.nRowColumn, nCurrPos ); - if ( DockingArea == DockingArea_DOCKINGAREA_LEFT ) - rPixelPos = ::Point( nPixelPos, nTopDockingAreaSize + nCurrPos ); - else - rPixelPos = ::Point( aDockingWinSize.Width() - nPixelPos , nTopDockingAreaSize + nCurrPos ); - return; - } - } - } - - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_LEFT )) - nPixelPos += rRowColumnWindowData.nStaticSize; - } - - sal_Int32 nNextFreeRowCol( 0 ); - sal_Int32 nRowColumnsCount = aRowColumnsWindowData.size(); - if ( nRowColumnsCount > 0 ) - nNextFreeRowCol = aRowColumnsWindowData[nRowColumnsCount-1].nRowColumn+1; - else - nNextFreeRowCol = 0; - - if ( nNextFreeRowCol == 0 ) - { - if ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM ) - nFreeRowColPixelPos = aDockingWinSize.Height() - aUIElementSize.Height(); - else if ( DockingArea == DockingArea_DOCKINGAREA_RIGHT ) - nFreeRowColPixelPos = aDockingWinSize.Width() - aUIElementSize.Width(); - } - - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - rVirtualPos = ::Point( 0, nNextFreeRowCol ); - if ( DockingArea == DockingArea_DOCKINGAREA_TOP ) - rPixelPos = ::Point( 0, nFreeRowColPixelPos ); - else - rPixelPos = ::Point( 0, aDockingWinSize.Height() - nFreeRowColPixelPos ); - } - else - { - rVirtualPos = ::Point( nNextFreeRowCol, 0 ); - rPixelPos = ::Point( aDockingWinSize.Width() - nFreeRowColPixelPos, 0 ); - } -} - ::Size LayoutManager::implts_getContainerWindowOutputSize() { - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xContainerWindow = m_xContainerWindow; - ::Size aContainerWinSize; + ::Size aContainerWinSize; Window* pContainerWindow( 0 ); - aReadLock.unlock(); // Retrieve output size from container Window vos::OGuard aGuard( Application::GetSolarMutex() ); - pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + pContainerWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); if ( pContainerWindow ) - return pContainerWindow->GetOutputSizePixel(); - else - return ::Size(); -} - -void LayoutManager::implts_sortUIElements() -{ - WriteGuard aWriteLock( m_aLock ); - UIElementVector::iterator pIterStart = m_aUIElements.begin(); - UIElementVector::iterator pIterEnd = m_aUIElements.end(); - - std::stable_sort( pIterStart, pIterEnd ); // first created element should first - - // We have to reset our temporary flags. - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - // why check, just set it to false - //if ( pIter->m_bUserActive ) - pIter->m_bUserActive = sal_False; - } - -#ifdef DBG_UTIL - implts_checkElementContainer(); -#endif - aWriteLock.unlock(); -} - -void LayoutManager::implts_getDockingAreaElementInfos( DockingArea eDockingArea, std::vector< SingleRowColumnWindowData >& rRowColumnsWindowData ) -{ - std::vector< UIElement > aWindowVector; - - if (( eDockingArea < DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea > DockingArea_DOCKINGAREA_RIGHT )) - eDockingArea = DockingArea_DOCKINGAREA_TOP; - - Reference< css::awt::XWindow > xDockAreaWindow; - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - ReadGuard aReadLock( m_aLock ); - aWindowVector.reserve(m_aUIElements.size()); - xDockAreaWindow = m_xDockAreaWindows[eDockingArea]; - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aDockedData.m_nDockedArea == eDockingArea && pIter->m_bVisible && !pIter->m_bFloating ) - { - Reference< XUIElement > xUIElement( pIter->m_xUIElement ); - if ( xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow.is() ) - { - // docked windows - aWindowVector.push_back( *pIter ); - } - } - } - } - aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - - rRowColumnsWindowData.clear(); - - // Collect data from windows that are on the same row/column - sal_Int32 j; - sal_Int32 nIndex( 0 ); - sal_Int32 nLastPos( 0 ); - sal_Int32 nCurrPos( -1 ); - sal_Int32 nLastRowColPixelPos( 0 ); - css::awt::Rectangle aDockAreaRect; - - if ( xDockAreaWindow.is() ) - aDockAreaRect = xDockAreaWindow->getPosSize(); - - if ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) - nLastRowColPixelPos = 0; - else if ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM ) - nLastRowColPixelPos = aDockAreaRect.Height; - else if ( eDockingArea == DockingArea_DOCKINGAREA_LEFT ) - nLastRowColPixelPos = 0; - else - nLastRowColPixelPos = aDockAreaRect.Width; - - const sal_uInt32 nCount = aWindowVector.size(); - for ( j = 0; j < sal_Int32( nCount); j++ ) - { - const UIElement& rElement = aWindowVector[j]; - Reference< css::awt::XWindow > xWindow; - Reference< XUIElement > xUIElement( rElement.m_xUIElement ); - css::awt::Rectangle aPosSize; - if ( !lcl_checkUIElement(xUIElement,aPosSize,xWindow) ) - continue; - if (( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - if ( nCurrPos == -1 ) - { - nCurrPos = rElement.m_aDockedData.m_aPos.Y(); - nLastPos = 0; - - SingleRowColumnWindowData aRowColumnWindowData; - aRowColumnWindowData.nRowColumn = nCurrPos; - rRowColumnsWindowData.push_back( aRowColumnWindowData ); - } - - sal_Int32 nSpace( 0 ); - if ( rElement.m_aDockedData.m_aPos.Y() != nCurrPos ) - { - if ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) - nLastRowColPixelPos += rRowColumnsWindowData[nIndex].nStaticSize; - else - nLastRowColPixelPos -= rRowColumnsWindowData[nIndex].nStaticSize; - ++nIndex; - nLastPos = 0; - nCurrPos = rElement.m_aDockedData.m_aPos.Y(); - SingleRowColumnWindowData aRowColumnWindowData; - aRowColumnWindowData.nRowColumn = nCurrPos; - rRowColumnsWindowData.push_back( aRowColumnWindowData ); - } - - // Calc space before an element and store it - nSpace = ( rElement.m_aDockedData.m_aPos.X() - nLastPos ); - if ( rElement.m_aDockedData.m_aPos.X() >= nLastPos ) - { - rRowColumnsWindowData[nIndex].nSpace += nSpace; - nLastPos = rElement.m_aDockedData.m_aPos.X() + aPosSize.Width; - } - else - { - nSpace = 0; - nLastPos += aPosSize.Width; - } - rRowColumnsWindowData[nIndex].aRowColumnSpace.push_back( nSpace ); - - rRowColumnsWindowData[nIndex].aRowColumnWindows.push_back( xWindow ); - rRowColumnsWindowData[nIndex].aUIElementNames.push_back( rElement.m_aName ); - rRowColumnsWindowData[nIndex].aRowColumnWindowSizes.push_back( - css::awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), - rElement.m_aDockedData.m_aPos.Y(), - aPosSize.Width, - aPosSize.Height )); - if ( rRowColumnsWindowData[nIndex].nStaticSize < aPosSize.Height ) - rRowColumnsWindowData[nIndex].nStaticSize = aPosSize.Height; - if ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) - rRowColumnsWindowData[nIndex].aRowColumnRect = css::awt::Rectangle( 0, nLastRowColPixelPos, - aDockAreaRect.Width, aPosSize.Height ); - else - rRowColumnsWindowData[nIndex].aRowColumnRect = css::awt::Rectangle( 0, ( nLastRowColPixelPos - aPosSize.Height ), - aDockAreaRect.Width, aPosSize.Height ); - rRowColumnsWindowData[nIndex].nVarSize += aPosSize.Width + nSpace; - } - else - { - if ( nCurrPos == -1 ) - { - nCurrPos = rElement.m_aDockedData.m_aPos.X(); - nLastPos = 0; - - SingleRowColumnWindowData aRowColumnWindowData; - aRowColumnWindowData.nRowColumn = nCurrPos; - rRowColumnsWindowData.push_back( aRowColumnWindowData ); - } - - sal_Int32 nSpace( 0 ); - if ( rElement.m_aDockedData.m_aPos.X() != nCurrPos ) - { - if ( eDockingArea == DockingArea_DOCKINGAREA_LEFT ) - nLastRowColPixelPos += rRowColumnsWindowData[nIndex].nStaticSize; - else - nLastRowColPixelPos -= rRowColumnsWindowData[nIndex].nStaticSize; - ++nIndex; - nLastPos = 0; - nCurrPos = rElement.m_aDockedData.m_aPos.X(); - SingleRowColumnWindowData aRowColumnWindowData; - aRowColumnWindowData.nRowColumn = nCurrPos; - rRowColumnsWindowData.push_back( aRowColumnWindowData ); - } - - // Calc space before an element and store it - nSpace = ( rElement.m_aDockedData.m_aPos.Y() - nLastPos ); - if ( rElement.m_aDockedData.m_aPos.Y() > nLastPos ) - { - rRowColumnsWindowData[nIndex].nSpace += nSpace; - nLastPos = rElement.m_aDockedData.m_aPos.Y() + aPosSize.Height; - } - else - { - nSpace = 0; - nLastPos += aPosSize.Height; - } - rRowColumnsWindowData[nIndex].aRowColumnSpace.push_back( nSpace ); - - rRowColumnsWindowData[nIndex].aRowColumnWindows.push_back( xWindow ); - rRowColumnsWindowData[nIndex].aUIElementNames.push_back( rElement.m_aName ); - rRowColumnsWindowData[nIndex].aRowColumnWindowSizes.push_back( - css::awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), - rElement.m_aDockedData.m_aPos.Y(), - aPosSize.Width, - aPosSize.Height )); - if ( rRowColumnsWindowData[nIndex].nStaticSize < aPosSize.Width ) - rRowColumnsWindowData[nIndex].nStaticSize = aPosSize.Width; - if ( eDockingArea == DockingArea_DOCKINGAREA_LEFT ) - rRowColumnsWindowData[nIndex].aRowColumnRect = css::awt::Rectangle( nLastRowColPixelPos, 0, - aPosSize.Width, aDockAreaRect.Height ); - else - rRowColumnsWindowData[nIndex].aRowColumnRect = css::awt::Rectangle( ( nLastRowColPixelPos - aPosSize.Width ), 0, - aPosSize.Width, aDockAreaRect.Height ); - rRowColumnsWindowData[nIndex].nVarSize += aPosSize.Height + nSpace; - } - } -} - -void LayoutManager::implts_getDockingAreaElementInfoOnSingleRowCol( DockingArea eDockingArea, sal_Int32 nRowCol, SingleRowColumnWindowData& rRowColumnWindowData ) -{ - std::vector< UIElement > aWindowVector; - - if (( eDockingArea < DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea > DockingArea_DOCKINGAREA_RIGHT )) - eDockingArea = DockingArea_DOCKINGAREA_TOP; - - sal_Bool bHorzDockArea = (( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )); - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - ReadGuard aReadLock( m_aLock ); - UIElementVector::iterator pIter; - UIElementVector::iterator pEnd = m_aUIElements.end(); - for ( pIter = m_aUIElements.begin(); pIter != pEnd; pIter++ ) - { - if ( pIter->m_aDockedData.m_nDockedArea == eDockingArea ) - { - sal_Bool bSameRowCol = bHorzDockArea ? - ( pIter->m_aDockedData.m_aPos.Y() == nRowCol ) : - ( pIter->m_aDockedData.m_aPos.X() == nRowCol ); - Reference< XUIElement > xUIElement( pIter->m_xUIElement ); - - if ( bSameRowCol && xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - if ( xWindow.is() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( pWindow && pIter->m_bVisible && xDockWindow.is() && !pIter->m_bFloating ) - { - // docked windows - aWindowVector.push_back( *pIter ); - } - } - } - } - } - aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - - // Initialize structure - rRowColumnWindowData.aUIElementNames.clear(); - rRowColumnWindowData.aRowColumnWindows.clear(); - rRowColumnWindowData.aRowColumnWindowSizes.clear(); - rRowColumnWindowData.aRowColumnSpace.clear(); - rRowColumnWindowData.nVarSize = 0; - rRowColumnWindowData.nStaticSize = 0; - rRowColumnWindowData.nSpace = 0; - rRowColumnWindowData.nRowColumn = nRowCol; - - // Collect data from windows that are on the same row/column - sal_Int32 j; - sal_Int32 nLastPos( 0 ); - - const sal_uInt32 nCount = aWindowVector.size(); - for ( j = 0; j < sal_Int32( nCount); j++ ) - { - const UIElement& rElement = aWindowVector[j]; - Reference< css::awt::XWindow > xWindow; - Reference< XUIElement > xUIElement( rElement.m_xUIElement ); - css::awt::Rectangle aPosSize; - if ( !lcl_checkUIElement(xUIElement,aPosSize,xWindow) ) - continue; - - sal_Int32 nSpace; - if (( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - nSpace = ( rElement.m_aDockedData.m_aPos.X() - nLastPos ); - - // Calc space before an element and store it - if ( rElement.m_aDockedData.m_aPos.X() > nLastPos ) - rRowColumnWindowData.nSpace += nSpace; - else - nSpace = 0; - - nLastPos = rElement.m_aDockedData.m_aPos.X() + aPosSize.Width; - - - rRowColumnWindowData.aRowColumnWindowSizes.push_back( - css::awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), - rElement.m_aDockedData.m_aPos.Y(), - aPosSize.Width, - aPosSize.Height )); - if ( rRowColumnWindowData.nStaticSize < aPosSize.Height ) - rRowColumnWindowData.nStaticSize = aPosSize.Height; - rRowColumnWindowData.nVarSize += aPosSize.Width; - } - else - { - // Calc space before an element and store it - nSpace = ( rElement.m_aDockedData.m_aPos.Y() - nLastPos ); - if ( rElement.m_aDockedData.m_aPos.Y() > nLastPos ) - rRowColumnWindowData.nSpace += nSpace; - else - nSpace = 0; - - nLastPos = rElement.m_aDockedData.m_aPos.Y() + aPosSize.Height; - - rRowColumnWindowData.aRowColumnWindowSizes.push_back( - css::awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), - rElement.m_aDockedData.m_aPos.Y(), - aPosSize.Width, - aPosSize.Height )); - if ( rRowColumnWindowData.nStaticSize < aPosSize.Width ) - rRowColumnWindowData.nStaticSize = aPosSize.Width; - rRowColumnWindowData.nVarSize += aPosSize.Height; - } - - rRowColumnWindowData.aUIElementNames.push_back( rElement.m_aName ); - rRowColumnWindowData.aRowColumnWindows.push_back( xWindow ); - rRowColumnWindowData.aRowColumnSpace.push_back( nSpace ); - rRowColumnWindowData.nVarSize += nSpace; - } -} - -::Rectangle LayoutManager::implts_determineFrontDockingRect( - DockingArea eDockingArea, - sal_Int32 nRowCol, - const ::Rectangle& rDockedElementRect, - const ::rtl::OUString& rMovedElementName, - const ::Rectangle& rMovedElementRect ) -{ - SingleRowColumnWindowData aRowColumnWindowData; - - sal_Bool bHorzDockArea = (( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )); - - implts_getDockingAreaElementInfoOnSingleRowCol( eDockingArea, nRowCol, aRowColumnWindowData ); - if ( aRowColumnWindowData.aRowColumnWindows.empty() ) - return rMovedElementRect; - else - { - sal_Int32 nSpace( 0 ); - ::Rectangle aFrontDockingRect( rMovedElementRect ); - const sal_uInt32 nCount = aRowColumnWindowData.aRowColumnWindows.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - if ( bHorzDockArea ) - { - if ( aRowColumnWindowData.aRowColumnWindowSizes[i].X >= rDockedElementRect.Left() ) - { - nSpace += aRowColumnWindowData.aRowColumnSpace[i]; - break; - } - else if ( aRowColumnWindowData.aUIElementNames[i] == rMovedElementName ) - nSpace += aRowColumnWindowData.aRowColumnWindowSizes[i].Width + - aRowColumnWindowData.aRowColumnSpace[i]; - else - nSpace = 0; - } - else - { - if ( aRowColumnWindowData.aRowColumnWindowSizes[i].Y >= rDockedElementRect.Top() ) - { - nSpace += aRowColumnWindowData.aRowColumnSpace[i]; - break; - } - else if ( aRowColumnWindowData.aUIElementNames[i] == rMovedElementName ) - nSpace += aRowColumnWindowData.aRowColumnWindowSizes[i].Height + - aRowColumnWindowData.aRowColumnSpace[i]; - else - nSpace = 0; - } - } - - if ( nSpace > 0 ) - { - sal_Int32 nMove = std::min( nSpace, static_cast<sal_Int32>(aFrontDockingRect.getWidth()) ); - if ( bHorzDockArea ) - aFrontDockingRect.Move( -nMove, 0 ); - else - aFrontDockingRect.Move( 0, -nMove ); - } - - return aFrontDockingRect; - } -} - -::Rectangle LayoutManager::implts_getWindowRectFromRowColumn( - ::com::sun::star::ui::DockingArea DockingArea, - const SingleRowColumnWindowData& rRowColumnWindowData, - const ::Point& rMousePos, - const rtl::OUString& rExcludeElementName ) -{ - ::Rectangle aWinRect; - - if (( DockingArea < DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea > DockingArea_DOCKINGAREA_RIGHT )) - DockingArea = DockingArea_DOCKINGAREA_TOP; - - if ( rRowColumnWindowData.aRowColumnWindows.empty() ) - return aWinRect; - else - { - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xContainerWindow = m_xContainerWindow; - Reference< css::awt::XWindow > xDockingAreaWindow = m_xDockAreaWindows[DockingArea]; - aReadLock.unlock(); - - // Calc correct position of the column/row rectangle to be able to compare it with mouse pos/tracking rect - vos::OGuard aGuard( Application::GetSolarMutex() ); - - // Retrieve output size from container Window - Window* pContainerWindow( VCLUnoHelper::GetWindow( xContainerWindow )); - Window* pDockingAreaWindow( VCLUnoHelper::GetWindow( xDockingAreaWindow )); - if ( pDockingAreaWindow && pContainerWindow ) - { - const sal_uInt32 nCount = rRowColumnWindowData.aRowColumnWindows.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - css::awt::Rectangle aWindowRect = rRowColumnWindowData.aRowColumnWindows[i]->getPosSize(); - ::Rectangle aRect( aWindowRect.X, aWindowRect.Y, aWindowRect.X+aWindowRect.Width, aWindowRect.Y+aWindowRect.Height ); - aRect.SetPos( pContainerWindow->ScreenToOutputPixel( pDockingAreaWindow->OutputToScreenPixel( aRect.TopLeft() ))); - if ( aRect.IsInside( rMousePos )) - { - // Check if we have found the excluded element. If yes, we have to provide an empty rectangle. - // We prevent that a toolbar cannot be moved when the mouse pointer is inside its own rectangle! - if ( rExcludeElementName != rRowColumnWindowData.aUIElementNames[i] ) - return aRect; - else - break; - } - } - } - } - - return aWinRect; -} - -framework::LayoutManager::DockingOperation -LayoutManager::implts_determineDockingOperation( - ::com::sun::star::ui::DockingArea DockingArea, - const ::Rectangle& rRowColRect, - const Point& rMousePos ) -{ - const sal_Int32 nHorzVerticalRegionSize = 6; - const sal_Int32 nHorzVerticalMoveRegion = 4; - - if ( rRowColRect.IsInside( rMousePos )) - { - if (( DockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( DockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - sal_Int32 nRegion = rRowColRect.getHeight() / nHorzVerticalRegionSize; - sal_Int32 nPosY = rRowColRect.Top() + nRegion; - - if ( rMousePos.Y() < nPosY ) - return ( DockingArea == DockingArea_DOCKINGAREA_TOP ) ? DOCKOP_BEFORE_COLROW : DOCKOP_AFTER_COLROW; - else if ( rMousePos.Y() < ( nPosY + nRegion*nHorzVerticalMoveRegion )) - return DOCKOP_ON_COLROW; - else - return ( DockingArea == DockingArea_DOCKINGAREA_TOP ) ? DOCKOP_AFTER_COLROW : DOCKOP_BEFORE_COLROW; - } - else - { - sal_Int32 nRegion = rRowColRect.getWidth() / nHorzVerticalRegionSize; - sal_Int32 nPosX = rRowColRect.Left() + nRegion; - - if ( rMousePos.X() < nPosX ) - return ( DockingArea == DockingArea_DOCKINGAREA_LEFT ) ? DOCKOP_BEFORE_COLROW : DOCKOP_AFTER_COLROW; - else if ( rMousePos.X() < ( nPosX + nRegion*nHorzVerticalMoveRegion )) - return DOCKOP_ON_COLROW; - else - return ( DockingArea == DockingArea_DOCKINGAREA_LEFT ) ? DOCKOP_AFTER_COLROW : DOCKOP_BEFORE_COLROW; - } - } - else - return DOCKOP_ON_COLROW; -} - -::Rectangle LayoutManager::implts_calcTrackingAndElementRect( - ::com::sun::star::ui::DockingArea eDockingArea, - sal_Int32 nRowCol, - UIElement& rUIElement, - const ::Rectangle& rTrackingRect, - const ::Rectangle& rRowColumnRect, - const ::Size& rContainerWinSize ) -{ - sal_Bool bHorizontalDockArea( ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )); - - sal_Int32 nTopDockingAreaSize( implts_getTopBottomDockingAreaSizes().Width() ); - sal_Int32 nBottomDockingAreaSize( implts_getTopBottomDockingAreaSizes().Height() ); - - ::Size aStatusBarSize( implts_getStatusBarSize() ); - sal_Int32 nMaxLeftRightDockAreaSize = rContainerWinSize.Height() - - nTopDockingAreaSize - - nBottomDockingAreaSize - - aStatusBarSize.Height(); - - ::Rectangle aTrackingRect( rTrackingRect ); - if ( bHorizontalDockArea ) - { - sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); - if (( nPosX + rTrackingRect.getWidth()) > rContainerWinSize.Width() ) - nPosX = std::min( nPosX, - std::max( sal_Int32( rContainerWinSize.Width() - rTrackingRect.getWidth() ), - sal_Int32( 0 ))); - - sal_Int32 nSize = std::min( rContainerWinSize.Width(), rTrackingRect.getWidth() ); - - aTrackingRect.SetPos( ::Point( nPosX, rRowColumnRect.Top() )); - aTrackingRect.setWidth( nSize ); - aTrackingRect.setHeight( rRowColumnRect.getHeight() ); - - // Set virtual position - rUIElement.m_aDockedData.m_aPos.X() = nPosX; - rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; - } - else - { - sal_Int32 nMaxDockingAreaHeight = std::max( sal_Int32( 0 ), - sal_Int32( nMaxLeftRightDockAreaSize )); - - sal_Int32 nPosY( std::max( sal_Int32( aTrackingRect.Top()), sal_Int32( nTopDockingAreaSize ))); - if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) - nPosY = std::min( nPosY, - std::max( sal_Int32( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() )), - sal_Int32( nTopDockingAreaSize ))); - - sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); - - aTrackingRect.SetPos( ::Point( rRowColumnRect.Left(), nPosY )); - aTrackingRect.setWidth( rRowColumnRect.getWidth() ); - aTrackingRect.setHeight( nSize ); - - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xDockingAreaWindow = m_xDockAreaWindows[eDockingArea]; - Reference< css::awt::XWindow > xContainerWindow = m_xContainerWindow; - aReadLock.unlock(); - - sal_Int32 nDockPosY( 0 ); - Window* pDockingAreaWindow( 0 ); - Window* pContainerWindow( 0 ); - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pDockingAreaWindow = VCLUnoHelper::GetWindow( xDockingAreaWindow ); - pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - nDockPosY = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( ::Point( 0, nPosY ))).Y(); - } - - // Set virtual position - rUIElement.m_aDockedData.m_aPos.X() = nRowCol; - rUIElement.m_aDockedData.m_aPos.Y() = nDockPosY; - } - - return aTrackingRect; -} - -void implts_setTrackingRect( DockingArea eDockingArea, const Point& rMousePos, ::Rectangle& rTrackingRect ) -{ - sal_Bool bHorizontalDockArea( ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )); - - ::Point aPoint = rTrackingRect.TopLeft(); - if ( bHorizontalDockArea ) - aPoint.X() = rMousePos.X(); - else - aPoint.Y() = rMousePos.Y(); - rTrackingRect.SetPos( aPoint ); -} - -void LayoutManager::implts_calcDockingPosSize( - UIElement& rUIElement, - DockingOperation& rDockingOperation, - ::Rectangle& rTrackingRect, - const Point& rMousePos ) -{ - ReadGuard aReadLock( m_aLock ); - Reference< css::awt::XWindow > xContainerWindow = m_xContainerWindow; - ::Size aContainerWinSize; - Window* pContainerWindow( 0 ); - aReadLock.unlock(); - - { - // Retrieve output size from container Window - vos::OGuard aGuard( Application::GetSolarMutex() ); - pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); aContainerWinSize = pContainerWindow->GetOutputSizePixel(); - } - - if ( !rUIElement.m_xUIElement.is() ) - { - rTrackingRect = ::Rectangle(); - return; - } - - Window* pDockWindow( 0 ); - Window* pDockingAreaWindow( 0 ); - ToolBox* pToolBox( 0 ); - Reference< css::awt::XWindow > xWindow( rUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XWindow > xDockingAreaWindow; - ::Rectangle aTrackingRect( rTrackingRect ); - ::com::sun::star::ui::DockingArea eDockedArea( (::com::sun::star::ui::DockingArea)rUIElement.m_aDockedData.m_nDockedArea ); - sal_Int32 nTopDockingAreaSize( implts_getTopBottomDockingAreaSizes().Width() ); - sal_Int32 nBottomDockingAreaSize( implts_getTopBottomDockingAreaSizes().Height() ); - sal_Bool bHorizontalDockArea( ( eDockedArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockedArea == DockingArea_DOCKINGAREA_BOTTOM )); - ::Size aStatusBarSize( implts_getStatusBarSize() ); - sal_Int32 nMaxLeftRightDockAreaSize = aContainerWinSize.Height() - - nTopDockingAreaSize - - nBottomDockingAreaSize - - aStatusBarSize.Height(); - ::Rectangle aDockingAreaRect; - - aReadLock.lock(); - xDockingAreaWindow = m_xDockAreaWindows[eDockedArea]; - aReadLock.unlock(); - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pDockingAreaWindow = VCLUnoHelper::GetWindow( xDockingAreaWindow ); - pDockWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pDockWindow && pDockWindow->GetType() == WINDOW_TOOLBOX ) - pToolBox = (ToolBox *)pDockWindow; - - aDockingAreaRect = ::Rectangle( pDockingAreaWindow->GetPosPixel(), pDockingAreaWindow->GetSizePixel() ); - if ( pToolBox ) - { - // docked toolbars always have one line - ::Size aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( sal_Int16( eDockedArea )) ); - aTrackingRect.SetSize( ::Size( aSize.Width(), aSize.Height() )); - } - } - - // default docking operation, dock on the given row/column - sal_Bool bOpOutsideOfDockingArea( !aDockingAreaRect.IsInside( rMousePos )); - std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; - - rDockingOperation = DOCKOP_ON_COLROW; - implts_getDockingAreaElementInfos( eDockedArea, aRowColumnsWindowData ); - - // determine current first row/column and last row/column - sal_Int32 nMaxRowCol( -1 ); - sal_Int32 nMinRowCol( SAL_MAX_INT32 ); - const sal_uInt32 nCount = aRowColumnsWindowData.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - if ( aRowColumnsWindowData[i].nRowColumn > nMaxRowCol ) - nMaxRowCol = aRowColumnsWindowData[i].nRowColumn; - if ( aRowColumnsWindowData[i].nRowColumn < nMinRowCol ) - nMinRowCol = aRowColumnsWindowData[i].nRowColumn; - } - - if ( !bOpOutsideOfDockingArea ) - { - // docking inside our docking area - sal_Int32 nIndex( -1 ); - sal_Int32 nRowCol( -1 ); - ::Rectangle aWindowRect; - ::Rectangle aRowColumnRect; - - const sal_uInt32 nWindowDataCount = aRowColumnsWindowData.size(); - for ( sal_uInt32 i = 0; i < nWindowDataCount; i++ ) - { - ::Rectangle aRect( aRowColumnsWindowData[i].aRowColumnRect.X, - aRowColumnsWindowData[i].aRowColumnRect.Y, - aRowColumnsWindowData[i].aRowColumnRect.X + aRowColumnsWindowData[i].aRowColumnRect.Width, - aRowColumnsWindowData[i].aRowColumnRect.Y + aRowColumnsWindowData[i].aRowColumnRect.Height ); - - { - // Calc correct position of the column/row rectangle to be able to compare it with mouse pos/tracking rect - vos::OGuard aGuard( Application::GetSolarMutex() ); - aRect.SetPos( pContainerWindow->ScreenToOutputPixel( pDockingAreaWindow->OutputToScreenPixel( aRect.TopLeft() ))); - } - - sal_Bool bIsInsideRowCol( aRect.IsInside( rMousePos ) ); - if ( bIsInsideRowCol ) - { - nIndex = i; - nRowCol = aRowColumnsWindowData[i].nRowColumn; - rDockingOperation = implts_determineDockingOperation( eDockedArea, aRect, rMousePos ); - aWindowRect = implts_getWindowRectFromRowColumn( eDockedArea, aRowColumnsWindowData[i], rMousePos, rUIElement.m_aName ); - aRowColumnRect = aRect; - break; - } - } - - OSL_ENSURE( ( nIndex >= 0 ) && ( nRowCol >= 0 ), "Impossible case - no row/column found but mouse pointer is inside our docking area" ); - if (( nIndex >= 0 ) && ( nRowCol >= 0 )) - { - if ( rDockingOperation == DOCKOP_ON_COLROW ) - { - if ( !aWindowRect.IsEmpty()) - { - // Tracking rect is on a row/column and mouse is over a docked toolbar. - // Determine if the tracking rect must be located before/after the docked toolbar. - - ::Rectangle aUIElementRect( aWindowRect ); - sal_Int32 nMiddle( bHorizontalDockArea ? ( aWindowRect.Left() + aWindowRect.getWidth() / 2 ) : - ( aWindowRect.Top() + aWindowRect.getHeight() / 2 )); - sal_Bool bInsertBefore( bHorizontalDockArea ? ( rMousePos.X() < nMiddle ) : ( rMousePos.Y() < nMiddle )); - if ( bInsertBefore ) - { - if ( bHorizontalDockArea ) - { - sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( aContainerWinSize.Width() - aWindowRect.Left() ), - sal_Int32( aTrackingRect.getWidth() ))); - if ( nSize == 0 ) - nSize = aWindowRect.getWidth(); - - aUIElementRect.SetSize( ::Size( nSize, aWindowRect.getHeight() )); - aWindowRect = implts_determineFrontDockingRect( eDockedArea, nRowCol, aWindowRect,rUIElement.m_aName, aUIElementRect ); - - // Set virtual position - rUIElement.m_aDockedData.m_aPos.X() = aWindowRect.Left(); - rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; - } - else - { - sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( - nTopDockingAreaSize + nMaxLeftRightDockAreaSize - aWindowRect.Top() ), - sal_Int32( aTrackingRect.getHeight() ))); - if ( nSize == 0 ) - nSize = aWindowRect.getHeight(); - - aUIElementRect.SetSize( ::Size( aWindowRect.getWidth(), nSize )); - aWindowRect = implts_determineFrontDockingRect( eDockedArea, nRowCol, aWindowRect, rUIElement.m_aName, aUIElementRect ); - - // Set virtual position - sal_Int32 nPosY = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( aWindowRect.TopLeft() )).Y(); - rUIElement.m_aDockedData.m_aPos.X() = nRowCol; - rUIElement.m_aDockedData.m_aPos.Y() = nPosY; - } - - rTrackingRect = aWindowRect; - return; - } - else - { - if ( bHorizontalDockArea ) - { - sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32(( aContainerWinSize.Width() ) - aWindowRect.Right() ), - sal_Int32( aTrackingRect.getWidth() ))); - if ( nSize == 0 ) - { - aUIElementRect.SetPos( ::Point( aContainerWinSize.Width() - aTrackingRect.getWidth(), aWindowRect.Top() )); - aUIElementRect.SetSize( ::Size( aTrackingRect.getWidth(), aWindowRect.getHeight() )); - rUIElement.m_aDockedData.m_aPos.X() = aUIElementRect.Left(); - } - else - { - aUIElementRect.SetPos( ::Point( aWindowRect.Right(), aWindowRect.Top() )); - aUIElementRect.SetSize( ::Size( nSize, aWindowRect.getHeight() )); - rUIElement.m_aDockedData.m_aPos.X() = aWindowRect.Right(); - } - - // Set virtual position - rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; - } - else - { - sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( nTopDockingAreaSize + nMaxLeftRightDockAreaSize - aWindowRect.Bottom() ), - sal_Int32( aTrackingRect.getHeight() ))); - aUIElementRect.SetPos( ::Point( aWindowRect.Left(), aWindowRect.Bottom() )); - aUIElementRect.SetSize( ::Size( aWindowRect.getWidth(), nSize )); - - // Set virtual position - sal_Int32 nPosY( 0 ); - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - nPosY = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( aWindowRect.BottomRight() )).Y(); - } - rUIElement.m_aDockedData.m_aPos.X() = nRowCol; - rUIElement.m_aDockedData.m_aPos.Y() = nPosY; - } - - rTrackingRect = aUIElementRect; - return; - } - } - else - { - implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); - rTrackingRect = implts_calcTrackingAndElementRect( - eDockedArea, nRowCol, rUIElement, - aTrackingRect, aRowColumnRect, aContainerWinSize ); - return; - } - } - else - { - if ((( nRowCol == nMinRowCol ) && ( rDockingOperation == DOCKOP_BEFORE_COLROW )) || - (( nRowCol == nMaxRowCol ) && ( rDockingOperation == DOCKOP_AFTER_COLROW ))) - bOpOutsideOfDockingArea = sal_True; - else - { - // handle docking before/after a row - implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); - rTrackingRect = implts_calcTrackingAndElementRect( - eDockedArea, nRowCol, rUIElement, - aTrackingRect, aRowColumnRect, aContainerWinSize ); - - sal_Int32 nOffsetX( 0 ); - sal_Int32 nOffsetY( 0 ); - if ( bHorizontalDockArea ) - nOffsetY = sal_Int32( floor( aRowColumnRect.getHeight() / 2 + 0.5 )); - else - nOffsetX = sal_Int32( floor( aRowColumnRect.getWidth() / 2 + 0.5 )); - - if ( rDockingOperation == DOCKOP_BEFORE_COLROW ) - { - if (( eDockedArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockedArea == DockingArea_DOCKINGAREA_LEFT )) - { - // Docking before/after means move track rectangle half column/row. - // As left and top are ordered 0...n instead of right and bottom - // which uses n...0, we have to use negative values for top/left. - nOffsetX *= -1; - nOffsetY *= -1; - } - } - else - { - if (( eDockedArea == DockingArea_DOCKINGAREA_BOTTOM ) || - ( eDockedArea == DockingArea_DOCKINGAREA_RIGHT )) - { - // Docking before/after means move track rectangle half column/row. - // As left and top are ordered 0...n instead of right and bottom - // which uses n...0, we have to use negative values for top/left. - nOffsetX *= -1; - nOffsetY *= -1; - } - nRowCol++; - } - - if ( bHorizontalDockArea ) - rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; - else - rUIElement.m_aDockedData.m_aPos.X() = nRowCol; - - rTrackingRect.Move( nOffsetX, nOffsetY ); - rTrackingRect.SetSize( aTrackingRect.GetSize() ); - } - } - } - } - - // Docking outside of our docking window area => - // Users want to dock before/after first/last docked element or to an empty docking area - if ( bOpOutsideOfDockingArea ) - { - // set correct size for docking - implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); - rTrackingRect = aTrackingRect; - - if ( bHorizontalDockArea ) - { - sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); - if (( nPosX + rTrackingRect.getWidth()) > aContainerWinSize.Width() ) - nPosX = std::min( nPosX, - std::max( sal_Int32( aContainerWinSize.Width() - rTrackingRect.getWidth() ), - sal_Int32( 0 ))); - - sal_Int32 nSize = std::min( aContainerWinSize.Width(), rTrackingRect.getWidth() ); - sal_Int32 nDockHeight = std::max( static_cast<sal_Int32>(aDockingAreaRect.getHeight()), sal_Int32( 0 )); - if ( nDockHeight == 0 ) - { - sal_Int32 nPosY( std::max( aDockingAreaRect.Top(), aDockingAreaRect.Bottom() )); - if ( eDockedArea == DockingArea_DOCKINGAREA_BOTTOM ) - nPosY -= rTrackingRect.getHeight(); - rTrackingRect.SetPos( Point( nPosX, nPosY )); - rUIElement.m_aDockedData.m_aPos.Y() = 0; - } - else if ( rMousePos.Y() < ( aDockingAreaRect.Top() + ( nDockHeight / 2 ))) - { - rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Top() - rTrackingRect.getHeight() )); - if ( eDockedArea == DockingArea_DOCKINGAREA_TOP ) - rUIElement.m_aDockedData.m_aPos.Y() = 0; - else - rUIElement.m_aDockedData.m_aPos.Y() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - rDockingOperation = DOCKOP_BEFORE_COLROW; - } - else - { - rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Bottom() )); - if ( eDockedArea == DockingArea_DOCKINGAREA_TOP ) - rUIElement.m_aDockedData.m_aPos.Y() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - else - rUIElement.m_aDockedData.m_aPos.Y() = 0; - rDockingOperation = DOCKOP_AFTER_COLROW; - } - rTrackingRect.setWidth( nSize ); - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - nPosX = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).X(); - } - rUIElement.m_aDockedData.m_aPos.X() = nPosX; - } - else - { - sal_Int32 nMaxDockingAreaHeight = std::max( sal_Int32( 0 ), - sal_Int32( nMaxLeftRightDockAreaSize )); - - sal_Int32 nPosY( std::max( sal_Int32( aTrackingRect.Top()), sal_Int32( nTopDockingAreaSize ))); - if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) - nPosY = std::min( nPosY, - std::max( sal_Int32( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() )), - sal_Int32( nTopDockingAreaSize ))); - - sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); - sal_Int32 nDockWidth = std::max( static_cast<sal_Int32>(aDockingAreaRect.getWidth()), sal_Int32( 0 )); - if ( nDockWidth == 0 ) - { - sal_Int32 nPosX( std::max( aDockingAreaRect.Left(), aDockingAreaRect.Right() )); - if ( eDockedArea == DockingArea_DOCKINGAREA_RIGHT ) - nPosX -= rTrackingRect.getWidth(); - rTrackingRect.SetPos( Point( nPosX, nPosY )); - rUIElement.m_aDockedData.m_aPos.X() = 0; - } - else if ( rMousePos.X() < ( aDockingAreaRect.Left() + ( nDockWidth / 2 ))) - { - rTrackingRect.SetPos( Point( aDockingAreaRect.Left() - rTrackingRect.getWidth(), nPosY )); - if ( eDockedArea == DockingArea_DOCKINGAREA_LEFT ) - rUIElement.m_aDockedData.m_aPos.X() = 0; - else - rUIElement.m_aDockedData.m_aPos.X() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - rDockingOperation = DOCKOP_BEFORE_COLROW; - } - else - { - rTrackingRect.SetPos( Point( aDockingAreaRect.Right(), nPosY )); - if ( eDockedArea == DockingArea_DOCKINGAREA_LEFT ) - rUIElement.m_aDockedData.m_aPos.X() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; - else - rUIElement.m_aDockedData.m_aPos.X() = 0; - rDockingOperation = DOCKOP_AFTER_COLROW; - } - rTrackingRect.setHeight( nSize ); - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - nPosY = pDockingAreaWindow->ScreenToOutputPixel( - pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).Y(); - } - rUIElement.m_aDockedData.m_aPos.Y() = nPosY; - } - } -} - -void LayoutManager::implts_renumberRowColumnData( - ::com::sun::star::ui::DockingArea eDockingArea, - DockingOperation /*eDockingOperation*/, - const UIElement& rUIElement ) -{ - ReadGuard aReadLock( m_aLock ); - Reference< XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); - aReadLock.unlock(); - - sal_Bool bHorzDockingArea(( eDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM )); - sal_Int32 nRowCol( bHorzDockingArea ? rUIElement.m_aDockedData.m_aPos.Y() : - rUIElement.m_aDockedData.m_aPos.X() ); - - WriteGuard aWriteLock( m_aLock ); - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if (( pIter->m_aDockedData.m_nDockedArea == sal_Int16( eDockingArea )) && - ( pIter->m_aName != rUIElement.m_aName )) - { - // Don't change toolbars without a valid docking position! - if (( pIter->m_aDockedData.m_aPos.X() == SAL_MAX_INT32 ) && - ( pIter->m_aDockedData.m_aPos.Y() == SAL_MAX_INT32 )) - continue; - - sal_Int32 nWindowRowCol = ( bHorzDockingArea ) ? - pIter->m_aDockedData.m_aPos.Y() : pIter->m_aDockedData.m_aPos.X(); - if ( nWindowRowCol >= nRowCol ) - { - if ( bHorzDockingArea ) - pIter->m_aDockedData.m_aPos.Y() += 1; - else - pIter->m_aDockedData.m_aPos.X() += 1; - } - } - } - aWriteLock.unlock(); - - // We have to change the persistent window state part - if ( xPersistentWindowState.is() ) - { - try - { - Sequence< rtl::OUString > aWindowElements = xPersistentWindowState->getElementNames(); - for ( sal_Int32 i = 0; i < aWindowElements.getLength(); i++ ) - { - if ( rUIElement.m_aName != aWindowElements[i] ) - { - try - { - Sequence< PropertyValue > aPropValueSeq; - css::awt::Point aDockedPos; - DockingArea nDockedArea( DockingArea_DOCKINGAREA_DEFAULT ); - - xPersistentWindowState->getByName( aWindowElements[i] ) >>= aPropValueSeq; - for ( sal_Int32 j = 0; j < aPropValueSeq.getLength(); j++ ) - { - if ( aPropValueSeq[j].Name == m_aPropDockingArea ) - aPropValueSeq[j].Value >>= nDockedArea; - else if ( aPropValueSeq[j].Name == m_aPropDockPos ) - aPropValueSeq[j].Value >>= aDockedPos; - } - - // Don't change toolbars without a valid docking position! - if (( aDockedPos.X == SAL_MAX_INT32 ) && ( aDockedPos.Y == SAL_MAX_INT32 )) - continue; - - sal_Int32 nWindowRowCol = ( bHorzDockingArea ) ? aDockedPos.Y : aDockedPos.X; - if (( nDockedArea == eDockingArea ) && ( nWindowRowCol >= nRowCol )) - { - if ( bHorzDockingArea ) - aDockedPos.Y += 1; - else - aDockedPos.X += 1; - - Reference< XNameReplace > xReplace( xPersistentWindowState, UNO_QUERY ); - xReplace->replaceByName( aWindowElements[i], makeAny( aPropValueSeq )); - } - } - catch ( Exception& ) - { - } - } - } - } - catch ( Exception& ) - { - } - } -} -::Size LayoutManager::implts_getTopBottomDockingAreaSizes() -{ - ::Size aSize; - Reference< css::awt::XWindow > xTopDockingAreaWindow; - Reference< css::awt::XWindow > xBottomDockingAreaWindow; - - ReadGuard aReadLock( m_aLock ); - xTopDockingAreaWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - xBottomDockingAreaWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM]; - aReadLock.unlock(); - - if ( xTopDockingAreaWindow.is() ) - aSize.Width() = xTopDockingAreaWindow->getPosSize().Height; - if ( xBottomDockingAreaWindow.is() ) - aSize.Height() = xBottomDockingAreaWindow->getPosSize().Height; - - return aSize; + return aContainerWinSize; } Reference< XUIElement > LayoutManager::implts_createElement( const rtl::OUString& aName ) { - Reference< ::com::sun::star::ui::XUIElement > xUIElement; + Reference< ui::XUIElement > xUIElement; ReadGuard aReadLock( m_aLock ); Sequence< PropertyValue > aPropSeq( 2 ); @@ -3054,121 +746,39 @@ Reference< XUIElement > LayoutManager::implts_createElement( const rtl::OUString { xUIElement = m_xUIElementFactoryManager->createUIElement( aName, aPropSeq ); } - catch ( NoSuchElementException& ) - { - } - catch ( IllegalArgumentException& ) - { - } + catch ( NoSuchElementException& ) {} + catch ( IllegalArgumentException& ) {} return xUIElement; } -Reference< css::awt::XWindowPeer > LayoutManager::implts_createToolkitWindow( const Reference< css::awt::XWindowPeer >& rParent ) -{ - Reference< css::awt::XWindowPeer > xPeer; - css::uno::Reference< css::awt::XToolkit > xToolkit( m_xSMGR->createInstance( SERVICENAME_VCLTOOLKIT ), css::uno::UNO_QUERY ); - if ( xToolkit.is() ) - { - // describe window properties. - css::awt::WindowDescriptor aDescriptor; - aDescriptor.Type = css::awt::WindowClass_SIMPLE ; - aDescriptor.WindowServiceName = DECLARE_ASCII("dockingarea") ; - aDescriptor.ParentIndex = -1 ; - aDescriptor.Parent = css::uno::Reference< css::awt::XWindowPeer >( rParent, UNO_QUERY ) ; - aDescriptor.Bounds = css::awt::Rectangle(0,0,0,0) ; - aDescriptor.WindowAttributes = 0 ; - - // create a docking area window - xPeer = xToolkit->createWindow( aDescriptor ); - } - - return xPeer; -} - void LayoutManager::implts_setVisibleState( sal_Bool bShow ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - pIter->m_bMasterHide = !bShow; m_aStatusBarElement.m_bMasterHide = !bShow; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ implts_updateUIElementsVisibleState( bShow ); - //implts_doLayout( sal_False ); } void LayoutManager::implts_updateUIElementsVisibleState( sal_Bool bSetVisible ) { // notify listeners - css::uno::Any a; + uno::Any a; if ( bSetVisible ) - implts_notifyListeners( css::frame::LayoutManagerEvents::VISIBLE, a ); + implts_notifyListeners( frame::LayoutManagerEvents::VISIBLE, a ); else - implts_notifyListeners( css::frame::LayoutManagerEvents::INVISIBLE, a ); - std::vector< Reference< css::awt::XWindow > > aWinVector; - sal_Bool bOld; - - { - WriteGuard aWriteLock( m_aLock ); - m_bDoLayout = sal_True; - bOld = m_bDoLayout; - } - - ReadGuard aReadLock( m_aLock ); - aWinVector.reserve(m_aUIElements.size()); - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - if ( xWindow.is() ) - { - if ( bSetVisible ) - { - if ( pIter->m_bVisible && !pIter->m_bMasterHide ) - aWinVector.push_back( xWindow ); - } - else - aWinVector.push_back( xWindow ); - } - } - } - - aReadLock.unlock(); + implts_notifyListeners( frame::LayoutManagerEvents::INVISIBLE, a ); + std::vector< Reference< awt::XWindow > > aWinVector; - try - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - const sal_uInt32 nCount = aWinVector.size(); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - Reference< css::awt::XWindow > xWindow( aWinVector[i] ); - if ( xWindow.is() ) - { - // we need VCL here to pass special flags to Show() - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if( pWindow ) - pWindow->Show( bSetVisible, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - } - } - } - catch ( DisposedException& ) - { - } - - // Hide/show menubar according to bSetVisible - aReadLock.lock(); - Reference< XUIElement > xMenuBar( m_xMenuBar, UNO_QUERY ); - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); - Reference< XComponent > xInplaceMenuBar( m_xInplaceMenuBar ); - MenuBarManager* pInplaceMenuBar( m_pInplaceMenuBar ); - aReadLock.unlock(); + WriteGuard aWriteLock( m_aLock ); + Reference< XUIElement > xMenuBar( m_xMenuBar, UNO_QUERY ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< XComponent > xInplaceMenuBar( m_xInplaceMenuBar ); + MenuBarManager* pInplaceMenuBar( m_pInplaceMenuBar ); + aWriteLock.unlock(); + bool bMustDoLayout(false); if (( xMenuBar.is() || xInplaceMenuBar.is() ) && xContainerWindow.is() ) { vos::OGuard aGuard( Application::GetSolarMutex() ); @@ -3182,103 +792,59 @@ void LayoutManager::implts_updateUIElementsVisibleState( sal_Bool bSetVisible ) pMenuBar = (MenuBar *)pMenuBarWrapper->GetMenuBarManager()->GetMenuBar(); } - Window* pWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); - - if ( pWindow ) + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow ) { - SystemWindow* pSysWindow = (SystemWindow *)pWindow; if ( bSetVisible ) pSysWindow->SetMenuBar( pMenuBar ); else pSysWindow->SetMenuBar( 0 ); + bMustDoLayout = true; } } // Hide/show the statusbar according to bSetVisible if ( bSetVisible ) - implts_showStatusBar(); + bMustDoLayout = !implts_showStatusBar(); else - implts_hideStatusBar(); + bMustDoLayout = !implts_hideStatusBar(); - if ( !bOld ) - { - WriteGuard aWriteLock( m_aLock ); - m_bDoLayout = sal_False; - } + aWriteLock.lock(); + uno::Reference< ui::XUIConfigurationListener > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aWriteLock.unlock(); - if ( bSetVisible ) + if ( pToolbarManager ) { - implts_createNonContextSensitiveToolBars(); - implts_doLayout_notify( sal_False ); + pToolbarManager->setVisible( bSetVisible ); + bMustDoLayout = pToolbarManager->isLayoutDirty(); } - else - { - // Set docking area window size to zero - ReadGuard aReadLock2( m_aLock ); - Reference< css::awt::XWindow > xTopDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - Reference< css::awt::XWindow > xLeftDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT]; - Reference< css::awt::XWindow > xRightDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT]; - Reference< css::awt::XWindow > xBottomDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM]; - aReadLock2.unlock(); - try - { - if ( xTopDockingWindow.is() ) - xTopDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xLeftDockingWindow.is() ) - xLeftDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xRightDockingWindow.is() ) - xRightDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - if ( xBottomDockingWindow.is() ) - xBottomDockingWindow->setPosSize( 0, 0, 0, 0, css::awt::PosSize::POSSIZE ); - - WriteGuard aWriteLock( m_aLock ); - m_aDockingArea = css::awt::Rectangle(); - m_bMustDoLayout = sal_True; - aWriteLock.unlock(); - } - catch ( Exception& ) - { - } - } + if ( bMustDoLayout ) + implts_doLayout_notify( sal_False ); } void LayoutManager::implts_setCurrentUIVisibility( sal_Bool bShow ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( !bShow && pIter->m_bVisible && pIter->m_xUIElement.is() ) - pIter->m_bMasterHide = true; - else if ( bShow && pIter->m_bMasterHide ) - pIter->m_bMasterHide = false; - } - if ( !bShow && m_aStatusBarElement.m_bVisible && m_aStatusBarElement.m_xUIElement.is() ) m_aStatusBarElement.m_bMasterHide = true; else if ( bShow && m_aStatusBarElement.m_bVisible ) m_aStatusBarElement.m_bMasterHide = false; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ implts_updateUIElementsVisibleState( bShow ); } void LayoutManager::implts_destroyStatusBar() { - Reference< XComponent > xCompStatusBar; + Reference< XComponent > xCompStatusBar; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_aStatusBarElement.m_aName = rtl::OUString(); xCompStatusBar = Reference< XComponent >( m_aStatusBarElement.m_xUIElement, UNO_QUERY ); m_aStatusBarElement.m_xUIElement.clear(); aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( xCompStatusBar.is() ) xCompStatusBar->dispose(); @@ -3288,7 +854,6 @@ void LayoutManager::implts_destroyStatusBar() void LayoutManager::implts_createStatusBar( const rtl::OUString& aStatusBarName ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); if ( !m_aStatusBarElement.m_xUIElement.is() ) { @@ -3296,14 +861,13 @@ void LayoutManager::implts_createStatusBar( const rtl::OUString& aStatusBarName m_aStatusBarElement.m_aName = aStatusBarName; m_aStatusBarElement.m_xUIElement = implts_createElement( aStatusBarName ); } + aWriteLock.unlock(); implts_createProgressBar(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } void LayoutManager::implts_readStatusBarState( const rtl::OUString& rStatusBarName ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); if ( !m_aStatusBarElement.m_bStateRead ) { @@ -3311,17 +875,15 @@ void LayoutManager::implts_readStatusBarState( const rtl::OUString& rStatusBarNa if ( implts_readWindowStateData( rStatusBarName, m_aStatusBarElement )) m_aStatusBarElement.m_bStateRead = sal_True; } - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } void LayoutManager::implts_createProgressBar() { - Reference< XUIElement > xStatusBar; + Reference< XUIElement > xStatusBar; Reference< XUIElement > xProgressBar; Reference< XUIElement > xProgressBarBackup; - Reference< css::awt::XWindow > xContainerWindow; + Reference< awt::XWindow > xContainerWindow; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); xStatusBar = Reference< XUIElement >( m_aStatusBarElement.m_xUIElement, UNO_QUERY ); xProgressBar = Reference< XUIElement >( m_aProgressBarElement.m_xUIElement, UNO_QUERY ); @@ -3329,7 +891,6 @@ void LayoutManager::implts_createProgressBar() m_xProgressBarBackup.clear(); xContainerWindow = m_xContainerWindow; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ sal_Bool bRecycled = xProgressBarBackup.is(); ProgressBarWrapper* pWrapper = 0; @@ -3342,14 +903,14 @@ void LayoutManager::implts_createProgressBar() if ( xStatusBar.is() ) { - Reference< css::awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); + Reference< awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); pWrapper->setStatusBar( xWindow ); } else { - Reference< css::awt::XWindow > xStatusBarWindow = pWrapper->getStatusBar(); + Reference< awt::XWindow > xStatusBarWindow = pWrapper->getStatusBar(); - vos::OGuard aGuard( Application::GetSolarMutex() ); + vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pStatusBarWnd = VCLUnoHelper::GetWindow( xStatusBarWindow ); if ( !pStatusBarWnd ) { @@ -3357,7 +918,7 @@ void LayoutManager::implts_createProgressBar() if ( pWindow ) { StatusBar* pStatusBar = new StatusBar( pWindow, WinBits( WB_LEFT | WB_3DLOOK ) ); - Reference< css::awt::XWindow > xStatusBarWindow2( VCLUnoHelper::GetInterface( pStatusBar )); + Reference< awt::XWindow > xStatusBarWindow2( VCLUnoHelper::GetInterface( pStatusBar )); pWrapper->setStatusBar( xStatusBarWindow2, sal_True ); } } @@ -3394,7 +955,7 @@ void LayoutManager::implts_backupProgressBarWrapper() { ProgressBarWrapper* pWrapper = (ProgressBarWrapper*)m_xProgressBarBackup.get(); if ( pWrapper ) - pWrapper->setStatusBar( Reference< css::awt::XWindow >(), sal_False ); + pWrapper->setStatusBar( Reference< awt::XWindow >(), sal_False ); } // prevent us from dispose() the m_aProgressBarElement.m_xUIElement inside implts_reset() @@ -3415,9 +976,9 @@ void LayoutManager::implts_destroyProgressBar() void LayoutManager::implts_setStatusBarPosSize( const ::Point& rPos, const ::Size& rSize ) { - Reference< XUIElement > xStatusBar; + Reference< XUIElement > xStatusBar; Reference< XUIElement > xProgressBar; - Reference< css::awt::XWindow > xContainerWindow; + Reference< awt::XWindow > xContainerWindow; /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); @@ -3425,9 +986,9 @@ void LayoutManager::implts_setStatusBarPosSize( const ::Point& rPos, const ::Siz xProgressBar = Reference< XUIElement >( m_aProgressBarElement.m_xUIElement, UNO_QUERY ); xContainerWindow = m_xContainerWindow; - Reference< css::awt::XWindow > xWindow; + Reference< awt::XWindow > xWindow; if ( xStatusBar.is() ) - xWindow = Reference< css::awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); + xWindow = Reference< awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); else if ( xProgressBar.is() ) { ProgressBarWrapper* pWrapper = (ProgressBarWrapper*)xProgressBar.get(); @@ -3439,7 +1000,7 @@ void LayoutManager::implts_setStatusBarPosSize( const ::Point& rPos, const ::Siz if ( xWindow.is() ) { - vos::OGuard aGuard( Application::GetSolarMutex() ); + vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pParentWindow = VCLUnoHelper::GetWindow( xContainerWindow ); Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); if ( pParentWindow && ( pWindow && pWindow->GetType() == WINDOW_STATUSBAR )) @@ -3454,9 +1015,9 @@ void LayoutManager::implts_setStatusBarPosSize( const ::Point& rPos, const ::Siz sal_Bool LayoutManager::implts_showProgressBar() { - Reference< XUIElement > xStatusBar; + Reference< XUIElement > xStatusBar; Reference< XUIElement > xProgressBar; - Reference< css::awt::XWindow > xWindow; + Reference< awt::XWindow > xWindow; /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); @@ -3469,7 +1030,7 @@ sal_Bool LayoutManager::implts_showProgressBar() { if ( xStatusBar.is() && !m_aStatusBarElement.m_bMasterHide ) { - xWindow = Reference< css::awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); + xWindow = Reference< awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); } else if ( xProgressBar.is() ) { @@ -3479,6 +1040,7 @@ sal_Bool LayoutManager::implts_showProgressBar() } } aWriteLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); @@ -3486,6 +1048,7 @@ sal_Bool LayoutManager::implts_showProgressBar() { if ( !pWindow->IsVisible() ) { + implts_setOffset( pWindow->GetSizePixel().Height() ); pWindow->Show(); implts_doLayout_notify( sal_False ); } @@ -3498,7 +1061,7 @@ sal_Bool LayoutManager::implts_showProgressBar() sal_Bool LayoutManager::implts_hideProgressBar() { Reference< XUIElement > xProgressBar; - Reference< css::awt::XWindow > xWindow; + Reference< awt::XWindow > xWindow; sal_Bool bHideStatusBar( sal_False ); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ @@ -3508,25 +1071,26 @@ sal_Bool LayoutManager::implts_hideProgressBar() sal_Bool bInternalStatusBar( sal_False ); if ( xProgressBar.is() ) { - Reference< css::awt::XWindow > xStatusBar; + Reference< awt::XWindow > xStatusBar; ProgressBarWrapper* pWrapper = (ProgressBarWrapper*)xProgressBar.get(); if ( pWrapper ) xWindow = pWrapper->getStatusBar(); - Reference< css::ui::XUIElement > xStatusBarElement = m_aStatusBarElement.m_xUIElement; + Reference< ui::XUIElement > xStatusBarElement = m_aStatusBarElement.m_xUIElement; if ( xStatusBarElement.is() ) - xStatusBar = Reference< css::awt::XWindow >( xStatusBarElement->getRealInterface(), UNO_QUERY ); + xStatusBar = Reference< awt::XWindow >( xStatusBarElement->getRealInterface(), UNO_QUERY ); bInternalStatusBar = xStatusBar != xWindow; } m_aProgressBarElement.m_bVisible = sal_False; implts_readStatusBarState( m_aStatusBarAlias ); bHideStatusBar = !m_aStatusBarElement.m_bVisible; aWriteLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->IsVisible() && - ( bHideStatusBar || bInternalStatusBar )) + if ( pWindow && pWindow->IsVisible() && ( bHideStatusBar || bInternalStatusBar )) { + implts_setOffset( 0 ); pWindow->Hide(); implts_doLayout_notify( sal_False ); return sal_True; @@ -3537,23 +1101,23 @@ sal_Bool LayoutManager::implts_hideProgressBar() sal_Bool LayoutManager::implts_showStatusBar( sal_Bool bStoreState ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - Reference< css::ui::XUIElement > xStatusBar = m_aStatusBarElement.m_xUIElement; + Reference< ui::XUIElement > xStatusBar = m_aStatusBarElement.m_xUIElement; if ( bStoreState ) m_aStatusBarElement.m_bVisible = sal_True; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( xStatusBar.is() ) { - Reference< css::awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); + Reference< awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); - vos::OGuard aGuard( Application::GetSolarMutex() ); + vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); if ( pWindow && !pWindow->IsVisible() ) { + implts_setOffset( pWindow->GetSizePixel().Height() ); pWindow->Show(); + implts_doLayout_notify( sal_False ); return sal_True; } } @@ -3563,23 +1127,23 @@ sal_Bool LayoutManager::implts_showStatusBar( sal_Bool bStoreState ) sal_Bool LayoutManager::implts_hideStatusBar( sal_Bool bStoreState ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - Reference< css::ui::XUIElement > xStatusBar = m_aStatusBarElement.m_xUIElement; + Reference< ui::XUIElement > xStatusBar = m_aStatusBarElement.m_xUIElement; if ( bStoreState ) m_aStatusBarElement.m_bVisible = sal_False; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( xStatusBar.is() ) { - Reference< css::awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); + Reference< awt::XWindow > xWindow( xStatusBar->getRealInterface(), UNO_QUERY ); - vos::OGuard aGuard( Application::GetSolarMutex() ); + vos::OGuard aGuard( Application::GetSolarMutex() ); Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); if ( pWindow && pWindow->IsVisible() ) { + implts_setOffset( 0 ); pWindow->Hide(); + implts_doLayout_notify( sal_False ); return sal_True; } } @@ -3587,14 +1151,26 @@ sal_Bool LayoutManager::implts_hideStatusBar( sal_Bool bStoreState ) return sal_False; } +void LayoutManager::implts_setOffset( const sal_Int32 nBottomOffset ) +{ + ::Rectangle aOffsetRect; + setZeroRectangle( aOffsetRect ); + aOffsetRect.setHeight( nBottomOffset ); + + // make sure that the toolbar manager refernence/pointer is valid + uno::Reference< ui::XUIConfigurationListener > xThis( m_xToolbarManager ); + if ( xThis.is() ) + m_pToolbarManager->setDockingAreaOffsets( aOffsetRect ); +} + void LayoutManager::implts_setInplaceMenuBar( const Reference< XIndexAccess >& xMergedMenuBar ) -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - if ( !m_bInplaceMenuSet ) - { + if ( !m_bInplaceMenuSet ) + { vos::OGuard aGuard( Application::GetSolarMutex() ); // Reset old inplace menubar! @@ -3604,8 +1180,7 @@ throw (::com::sun::star::uno::RuntimeException) m_xInplaceMenuBar.clear(); m_bInplaceMenuSet = sal_False; - if ( m_xFrame.is() && - m_xContainerWindow.is() ) + if ( m_xFrame.is() && m_xContainerWindow.is() ) { rtl::OUString aModuleIdentifier; Reference< XDispatchProvider > xDispatchProvider; @@ -3614,50 +1189,40 @@ throw (::com::sun::star::uno::RuntimeException) m_pInplaceMenuBar = new MenuBarManager( m_xSMGR, m_xFrame, m_xURLTransformer,xDispatchProvider, aModuleIdentifier, pMenuBar, sal_True, sal_True ); m_pInplaceMenuBar->SetItemContainer( xMergedMenuBar ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) + pSysWindow->SetMenuBar( pMenuBar ); - if ( pWindow ) - { - SystemWindow* pSysWindow = (SystemWindow *)pWindow; - pSysWindow->SetMenuBar( pMenuBar ); - } - - m_bInplaceMenuSet = sal_True; + m_bInplaceMenuSet = sal_True; m_xInplaceMenuBar = Reference< XComponent >( (OWeakObject *)m_pInplaceMenuBar, UNO_QUERY ); } aWriteLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + implts_updateMenuBarClose(); } - } void LayoutManager::implts_resetInplaceMenuBar() -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_bInplaceMenuSet = sal_False; // if ( m_xMenuBar.is() && if ( m_xContainerWindow.is() ) { - vos::OGuard aGuard( Application::GetSolarMutex() ); + vos::OGuard aGuard( Application::GetSolarMutex() ); MenuBarWrapper* pMenuBarWrapper = SAL_STATIC_CAST( MenuBarWrapper*, m_xMenuBar.get() ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); - - if ( pWindow ) + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) { - SystemWindow* pSysWindow = (SystemWindow *)pWindow; if ( pMenuBarWrapper ) - pSysWindow->SetMenuBar( (MenuBar *)pMenuBarWrapper->GetMenuBarManager()->GetMenuBar() ); - else - pSysWindow->SetMenuBar( 0 ); + pSysWindow->SetMenuBar( (MenuBar *)pMenuBarWrapper->GetMenuBarManager()->GetMenuBar() ); + else + pSysWindow->SetMenuBar( 0 ); } } @@ -3666,21 +1231,14 @@ throw (::com::sun::star::uno::RuntimeException) if ( m_xInplaceMenuBar.is() ) m_xInplaceMenuBar->dispose(); m_xInplaceMenuBar.clear(); - - aWriteLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } void SAL_CALL LayoutManager::attachFrame( const Reference< XFrame >& xFrame ) -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_xFrame = xFrame; - aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - // if ( xFrame.is() ) - // xFrame->getContainerWindow()->addWindowListener( Reference< css::awt::XWindowListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } void SAL_CALL LayoutManager::reset() @@ -3688,7 +1246,6 @@ throw (RuntimeException) { sal_Bool bComponentAttached( sal_False ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); bComponentAttached = m_bComponentAttached; aReadLock.unlock(); @@ -3697,13 +1254,13 @@ throw (RuntimeException) } void SAL_CALL LayoutManager::setInplaceMenuBar( sal_Int64 ) -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { OSL_ENSURE( sal_False, "This method is obsolete and should not be used!\n" ); } void SAL_CALL LayoutManager::resetInplaceMenuBar() -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { OSL_ENSURE( sal_False, "This method is obsolete and should not be used!\n" ); } @@ -3713,45 +1270,42 @@ throw (::com::sun::star::uno::RuntimeException) //--------------------------------------------------------------------------------------------------------- sal_Bool SAL_CALL LayoutManager::setMergedMenuBar( const Reference< XIndexAccess >& xMergedMenuBar ) -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { implts_setInplaceMenuBar( xMergedMenuBar ); - css::uno::Any a; - implts_notifyListeners( css::frame::LayoutManagerEvents::MERGEDMENUBAR, a ); + uno::Any a; + implts_notifyListeners( frame::LayoutManagerEvents::MERGEDMENUBAR, a ); return sal_True; } void SAL_CALL LayoutManager::removeMergedMenuBar() -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { implts_resetInplaceMenuBar(); } -::com::sun::star::awt::Rectangle SAL_CALL LayoutManager::getCurrentDockingArea() +awt::Rectangle SAL_CALL LayoutManager::getCurrentDockingArea() throw ( RuntimeException ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); return m_aDockingArea; } Reference< XDockingAreaAcceptor > SAL_CALL LayoutManager::getDockingAreaAcceptor() -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); return m_xDockingAreaAcceptor; } -void SAL_CALL LayoutManager::setDockingAreaAcceptor( const Reference< ::com::sun::star::ui::XDockingAreaAcceptor >& xDockingAreaAcceptor ) +void SAL_CALL LayoutManager::setDockingAreaAcceptor( const Reference< ui::XDockingAreaAcceptor >& xDockingAreaAcceptor ) throw ( RuntimeException ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - if (( m_xDockingAreaAcceptor == xDockingAreaAcceptor ) || - !m_xFrame.is() ) + if (( m_xDockingAreaAcceptor == xDockingAreaAcceptor ) || !m_xFrame.is() ) return; // IMPORTANT: Be sure to stop layout timer if don't have a docking area acceptor! @@ -3759,7 +1313,10 @@ throw ( RuntimeException ) m_aAsyncLayoutTimer.Stop(); sal_Bool bAutomaticToolbars( m_bAutomaticToolbars ); - std::vector< Reference< css::awt::XWindow > > oldDockingAreaWindows; + std::vector< Reference< awt::XWindow > > oldDockingAreaWindows; + + uno::Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; if ( !xDockingAreaAcceptor.is() ) m_aAsyncLayoutTimer.Stop(); @@ -3767,45 +1324,31 @@ throw ( RuntimeException ) // Remove listener from old docking area acceptor if ( m_xDockingAreaAcceptor.is() ) { - Reference< css::awt::XWindow > xWindow( m_xDockingAreaAcceptor->getContainerWindow() ); + Reference< awt::XWindow > xWindow( m_xDockingAreaAcceptor->getContainerWindow() ); if ( xWindow.is() && ( m_xFrame->getContainerWindow() != m_xContainerWindow || !xDockingAreaAcceptor.is() ) ) - xWindow->removeWindowListener( Reference< css::awt::XWindowListener >( static_cast< OWeakObject * >( this ), UNO_QUERY )); + xWindow->removeWindowListener( Reference< awt::XWindowListener >( static_cast< OWeakObject * >( this ), UNO_QUERY )); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT] ); - oldDockingAreaWindows.push_back( m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT] ); - - m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT].clear(); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT].clear(); - m_aDockingArea = css::awt::Rectangle(); + m_aDockingArea = awt::Rectangle(); + if ( pToolbarManager ) + pToolbarManager->resetDockingArea(); Window* pContainerWindow = VCLUnoHelper::GetWindow( xWindow ); if ( pContainerWindow ) pContainerWindow->RemoveChildEventListener( LINK( this, LayoutManager, WindowEventListener ) ); } - // Set new docking area acceptor and add ourself as window listener on the container window. - // Create our docking area windows which are parents for all docked windows. - css::uno::Reference< css::awt::XWindow > xTopDockWindow; - css::uno::Reference< css::awt::XWindow > xBottomDockWindow; - css::uno::Reference< css::awt::XWindow > xLeftDockWindow; - css::uno::Reference< css::awt::XWindow > xRightDockWindow; - - Reference< ::com::sun::star::ui::XDockingAreaAcceptor > xOldDockingAreaAcceptor( m_xDockingAreaAcceptor ); + Reference< ui::XDockingAreaAcceptor > xOldDockingAreaAcceptor( m_xDockingAreaAcceptor ); m_xDockingAreaAcceptor = xDockingAreaAcceptor; if ( m_xDockingAreaAcceptor.is() ) { - m_aDockingArea = css::awt::Rectangle(); + m_aDockingArea = awt::Rectangle(); m_xContainerWindow = m_xDockingAreaAcceptor->getContainerWindow(); m_xContainerTopWindow.set( m_xContainerWindow, UNO_QUERY ); - m_xContainerWindow->addWindowListener( Reference< css::awt::XWindowListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); + m_xContainerWindow->addWindowListener( Reference< awt::XWindowListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); // we always must keep a connection to the window of our frame for resize events if ( m_xContainerWindow != m_xFrame->getContainerWindow() ) - m_xFrame->getContainerWindow()->addWindowListener( Reference< css::awt::XWindowListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); + m_xFrame->getContainerWindow()->addWindowListener( Reference< awt::XWindowListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); // #i37884# set initial visibility state - in the plugin case the container window is already shown // and we get no notification anymore @@ -3816,32 +1359,15 @@ throw ( RuntimeException ) m_bParentWindowVisible = pContainerWindow->IsVisible(); } - css::uno::Reference< css::awt::XWindowPeer > xParent( m_xContainerWindow, UNO_QUERY ); - xTopDockWindow = Reference< css::awt::XWindow >( implts_createToolkitWindow( xParent ), UNO_QUERY ); - xBottomDockWindow = Reference< css::awt::XWindow >( implts_createToolkitWindow( xParent ), UNO_QUERY ); - xLeftDockWindow = Reference< css::awt::XWindow >( implts_createToolkitWindow( xParent ), UNO_QUERY ); - xRightDockWindow = Reference< css::awt::XWindow >( implts_createToolkitWindow( xParent ), UNO_QUERY ); - m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP] = xTopDockWindow; - m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM] = xBottomDockWindow; - m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT] = xLeftDockWindow; - m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT] = xRightDockWindow; + uno::Reference< awt::XWindowPeer > xParent( m_xContainerWindow, UNO_QUERY ); } aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( xDockingAreaAcceptor.is() ) { vos::OGuard aGuard( Application::GetSolarMutex() ); - ::DockingAreaWindow* pWindow; - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xTopDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_TOP ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xBottomDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_BOTTOM ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xLeftDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_LEFT ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xRightDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_RIGHT ); // Add layout manager as listener to get notifications about toolbar button activties Window* pContainerWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); @@ -3856,23 +1382,8 @@ throw ( RuntimeException ) if ( !oldDockingAreaWindows.empty() ) { - const sal_uInt32 nCount = oldDockingAreaWindows.size(); - for ( sal_uInt32 i = 0; i < nCount; ++i ) - { - if ( oldDockingAreaWindows[i].is() ) - { - try - { - oldDockingAreaWindows[i]->dispose(); - } - catch ( Exception& ) - { - } - } - } - // Reset docking area size for our old docking area acceptor - css::awt::Rectangle aEmptyRect; + awt::Rectangle aEmptyRect; xOldDockingAreaAcceptor->setDockingAreaSpace( aEmptyRect ); } @@ -3880,201 +1391,77 @@ throw ( RuntimeException ) { if ( bAutomaticToolbars ) { - implts_createAddonsToolBars(); // create addon toolbars - implts_createCustomToolBars(); // create custom toolbars - implts_createNonContextSensitiveToolBars(); + lock(); + pToolbarManager->createStaticToolbars(); + unlock(); } - implts_sortUIElements(); implts_doLayout( sal_True, sal_False ); } } void LayoutManager::implts_reparentChildWindows() { - UIElementVector aUIElementVector; - UIElement aStatusBarElement; - css::uno::Reference< css::awt::XWindow > xTopDockWindow; - css::uno::Reference< css::awt::XWindow > xBottomDockWindow; - css::uno::Reference< css::awt::XWindow > xLeftDockWindow; - css::uno::Reference< css::awt::XWindow > xRightDockWindow; - css::uno::Reference< css::awt::XWindow > xContainerWindow; - css::uno::Reference< css::awt::XWindow > xStatusBarWindow; - WriteGuard aWriteLock( m_aLock ); - aUIElementVector = m_aUIElements; - xTopDockWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - xBottomDockWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM]; - xLeftDockWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT]; - xRightDockWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT]; - xContainerWindow = m_xContainerWindow; - aStatusBarElement = m_aStatusBarElement; + UIElement aStatusBarElement = m_aStatusBarElement; + uno::Reference< awt::XWindow > xContainerWindow = m_xContainerWindow; aWriteLock.unlock(); + uno::Reference< awt::XWindow > xStatusBarWindow; if ( aStatusBarElement.m_xUIElement.is() ) { try { - xStatusBarWindow = Reference< css::awt::XWindow >( - aStatusBarElement.m_xUIElement->getRealInterface(), - UNO_QUERY ); - } - catch ( RuntimeException& ) - { - throw; - } - catch ( Exception& ) - { + xStatusBarWindow = Reference< awt::XWindow >( aStatusBarElement.m_xUIElement->getRealInterface(), UNO_QUERY ); } + catch ( RuntimeException& ) { throw; } + catch ( Exception& ) {} } - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - Window* pTopDockWindow = VCLUnoHelper::GetWindow( xTopDockWindow ); - Window* pBottomDockWindow = VCLUnoHelper::GetWindow( xBottomDockWindow ); - Window* pLeftDockWindow = VCLUnoHelper::GetWindow( xLeftDockWindow ); - Window* pRightDockWindow = VCLUnoHelper::GetWindow( xRightDockWindow ); - if ( pContainerWindow ) + if ( xStatusBarWindow.is() ) { - UIElementVector::iterator pIter; - for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) - { - Reference< XUIElement > xUIElement( pIter->m_xUIElement ); - if ( xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow; - try - { - // We have to retreive the window reference with try/catch as it is - // possible that all elements has been disposed! - xWindow = Reference< css::awt::XWindow >( xUIElement->getRealInterface(), UNO_QUERY ); - } - catch ( RuntimeException& ) - { - throw; - } - catch ( Exception& ) - { - } + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + Window* pWindow = VCLUnoHelper::GetWindow( xStatusBarWindow ); + if ( pWindow && pContainerWindow ) + pWindow->SetParent( pContainerWindow ); + } - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - { - // Reparent our child windows acording to their current state. - if ( pIter->m_bFloating ) - pWindow->SetParent( pContainerWindow ); - else - { - if ( pIter->m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_TOP ) - pWindow->SetParent( pTopDockWindow ); - else if ( pIter->m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_BOTTOM ) - pWindow->SetParent( pBottomDockWindow ); - else if ( pIter->m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_LEFT ) - pWindow->SetParent( pLeftDockWindow ); - else - pWindow->SetParent( pRightDockWindow ); - } - } - } - } + implts_resetMenuBar(); - if ( xStatusBarWindow.is() ) - { - Window* pWindow = VCLUnoHelper::GetWindow( xStatusBarWindow ); - if ( pWindow ) - pWindow->SetParent( pContainerWindow ); - } + aWriteLock.lock(); + uno::Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + if ( pToolbarManager ) + pToolbarManager->setParentWindow( uno::Reference< awt::XWindowPeer >( xContainerWindow, uno::UNO_QUERY )); + aWriteLock.unlock(); +} - implts_resetMenuBar(); - } +uno::Reference< ui::XUIElement > LayoutManager::implts_createDockingWindow( const ::rtl::OUString& aElementName ) +{ + Reference< XUIElement > xUIElement = implts_createElement( aElementName ); + return xUIElement; } IMPL_LINK( LayoutManager, WindowEventListener, VclSimpleEvent*, pEvent ) { - // To enable toolbar controllers to change their image when a sub-toolbar function - // is activated, we need this mechanism. We have NO connection between these toolbars - // anymore! + long nResult( 1 ); + if ( pEvent && pEvent->ISA( VclWindowEvent )) { - if ( pEvent->GetId() == VCLEVENT_TOOLBOX_SELECT ) - { - Window* pWindow( ((VclWindowEvent*)pEvent)->GetWindow() ); - ToolBox* pToolBox( 0 ); - rtl::OUString aToolbarName; - rtl::OUString aCommand; - - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - { - pToolBox = (ToolBox *)pWindow; - aToolbarName = pToolBox->GetSmartHelpId().GetStr(); - sal_Int32 i = aToolbarName.lastIndexOf( ':' ); - if (( aToolbarName.getLength() > 0 ) && - ( i > 0 ) && (( i+ 1 ) < aToolbarName.getLength() )) - { - // Remove ".HelpId:" protocol from toolbar name - aToolbarName = aToolbarName.copy( i+1 ); - - USHORT nId = pToolBox->GetCurItemId(); - if ( nId > 0 ) - aCommand = pToolBox->GetItemCommand( nId ); - } - } - - if (( aToolbarName.getLength() > 0 ) && ( aCommand.getLength() > 0 )) - { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - ReadGuard aReadLock( m_aLock ); - std::vector< css::uno::Reference< css::ui::XUIFunctionListener > > aListenerArray; - UIElementVector::iterator pIter; - - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aType.equalsAscii( "toolbar" ) && - pIter->m_xUIElement.is() ) - { - css::uno::Reference< css::ui::XUIFunctionListener > xListener( pIter->m_xUIElement, UNO_QUERY ); - if ( xListener.is() ) - aListenerArray.push_back( xListener ); - } - } - aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - - const sal_uInt32 nCount = aListenerArray.size(); - for ( sal_uInt32 i = 0; i < nCount; ++i ) - { - try - { - aListenerArray[i]->functionExecute( aToolbarName, aCommand ); - } - catch ( RuntimeException& e ) - { - throw e; - } - catch ( Exception& ) {} - } - } - } - else if ( pEvent->GetId() == VCLEVENT_TOOLBOX_FORMATCHANGED ) + Window* pWindow = static_cast< VclWindowEvent* >(pEvent)->GetWindow(); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); + uno::Reference< ui::XUIConfigurationListener > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aReadLock.unlock(); - Window* pWindow( ((VclWindowEvent*)pEvent)->GetWindow() ); - ToolBox* pToolBox( 0 ); - rtl::OUString aToolbarName; - - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - { - pToolBox = (ToolBox *)pWindow; - aToolbarName = pToolBox->GetSmartHelpId().GetStr(); - if (( aToolbarName.getLength() > 0 ) && ( m_nLockCount == 0 )) - m_aAsyncLayoutTimer.Start(); - } - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + if ( pToolbarManager ) + nResult = pToolbarManager->childWindowEvent( pEvent ); } } - return 1; + return nResult; } void SAL_CALL LayoutManager::createElement( const ::rtl::OUString& aName ) @@ -4082,13 +1469,11 @@ throw (RuntimeException) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::createElement" ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); Reference< XFrame > xFrame = m_xFrame; Reference< XURLTransformer > xURLTransformer = m_xURLTransformer; sal_Bool bInPlaceMenu = m_bInplaceMenuSet; aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( !xFrame.is() ) return; @@ -4098,105 +1483,35 @@ throw (RuntimeException) /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - sal_Bool bFound( sal_False ); - sal_Bool bNotify( sal_False ); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - Reference< ::com::sun::star::ui::XUIElement > xUIElement; + bool bMustBeLayouted( false ); + bool bNotify( false ); - implts_findElement( aName, aElementType, aElementName, xUIElement ); - bFound = xUIElement.is(); - - if ( /*xFrame.is() && */m_xContainerWindow.is() && !implts_isPreviewModel( xModel ) ) // no bars on preview mode + if ( m_xContainerWindow.is() && !implts_isPreviewModel( xModel ) ) // no UI elements on preview frames { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - { - if ( !bFound ) - { - SvtCommandOptions aCmdOptions; - - xUIElement = implts_createElement( aName ); - sal_Bool bVisible( sal_False ); - if ( xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xUIElement->getRealInterface(), UNO_QUERY ); - if ( xDockWindow.is() && xWindow.is() ) - { - try - { - xDockWindow->addDockableWindowListener( Reference< css::awt::XDockableWindowListener >( - static_cast< OWeakObject * >( this ), UNO_QUERY )); - xWindow->addWindowListener( Reference< css::awt::XWindowListener >( - static_cast< OWeakObject * >( this ), UNO_QUERY )); - xDockWindow->enableDocking( sal_True ); - } - catch ( Exception& ) - { - } - } - - UIElement& rElement = impl_findElement( aName ); - if ( rElement.m_aName.getLength() > 0 ) - { - // Reuse a local entry so we are able to use the latest - // UI changes for this document. - implts_setElementData( rElement, xDockWindow ); - rElement.m_xUIElement = xUIElement; - bVisible = rElement.m_bVisible; - } - else - { - // Create new UI element and try to read its state data - UIElement aNewToolbar( aName, aElementType, xUIElement ); - implts_readWindowStateData( aName, aNewToolbar ); - implts_setElementData( aNewToolbar, xDockWindow ); - implts_insertUIElement( aNewToolbar ); - bVisible = aNewToolbar.m_bVisible; - } - - // set toolbar menu style according to customize command state - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - { - ToolBox* pToolbar = (ToolBox *)pWindow; - USHORT nMenuType = pToolbar->GetMenuType(); - if ( aCmdOptions.Lookup( SvtCommandOptions::CMDOPTION_DISABLED, m_aCustomizeCmd )) - pToolbar->SetMenuType( nMenuType & ~TOOLBOX_MENUTYPE_CUSTOMIZE ); - else - pToolbar->SetMenuType( nMenuType | TOOLBOX_MENUTYPE_CUSTOMIZE ); - } - } - aWriteLock.unlock(); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - implts_sortUIElements(); + parseResourceURL( aName, aElementType, aElementName ); - if ( bVisible ) - { - doLayout(); - bNotify = sal_True; - } - } + if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR ) && m_pToolbarManager != NULL ) + { + bNotify = m_pToolbarManager->createToolbar( aName ); + bMustBeLayouted = m_pToolbarManager->isLayoutDirty(); } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" )) + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) { - if ( aElementName.equalsIgnoreAsciiCaseAscii( "menubar" ) && !bInPlaceMenu ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - // PB 2004-12-15 #i38743# don't create a menubar if frame isn't top - if ( !m_xMenuBar.is() && implts_isFrameOrWindowTop(xFrame) ) - m_xMenuBar = implts_createElement( aName ); - - if ( m_xMenuBar.is() && implts_isFrameOrWindowTop(xFrame) ) + // PB 2004-12-15 #i38743# don't create a menubar if frame isn't top + if ( !bInPlaceMenu && !m_xMenuBar.is() && implts_isFrameOrWindowTop( xFrame )) + { + m_xMenuBar = implts_createElement( aName ); + if ( m_xMenuBar.is() ) { - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); + vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pWindow ) + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) { - SystemWindow* pSysWindow = (SystemWindow *)pWindow; - Reference< css::awt::XMenuBar > xMenuBar; + Reference< awt::XMenuBar > xMenuBar; Reference< XPropertySet > xPropSet( m_xMenuBar, UNO_QUERY ); if ( xPropSet.is() ) @@ -4205,12 +1520,8 @@ throw (RuntimeException) { xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "XMenuBar" ))) >>= xMenuBar; } - catch ( com::sun::star::beans::UnknownPropertyException ) - { - } - catch ( com::sun::star::lang::WrappedTargetException ) - { - } + catch ( beans::UnknownPropertyException ) {} + catch ( lang::WrappedTargetException ) {} } if ( xMenuBar.is() ) @@ -4224,9 +1535,7 @@ throw (RuntimeException) pSysWindow->SetMenuBar( pMenuBar ); pMenuBar->SetDisplayable( m_bMenuVisible ); if ( m_bMenuVisible ) - { bNotify = sal_True; - } implts_updateMenuBarClose(); } } @@ -4241,27 +1550,35 @@ throw (RuntimeException) implts_createStatusBar( aName ); bNotify = sal_True; } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - implts_isFrameOrWindowTop(xFrame) ) + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ) && implts_isFrameOrWindowTop(xFrame) ) { implts_createProgressBar(); bNotify = sal_True; } else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) { - aWriteLock.unlock(); + // Add layout manager as listener for docking and other window events + uno::Reference< uno::XInterface > xThis( static_cast< OWeakObject* >(this), uno::UNO_QUERY ); + uno::Reference< ui::XUIElement > xUIElement( implts_createDockingWindow( aName )); + + if ( xUIElement.is() ) + { + impl_addWindowListeners( xThis, xUIElement ); + m_pPanelManager->addDockingWindow( aName, xUIElement ); + } // The docking window is created by a factory method located in the sfx2 library. - CreateDockingWindow( xFrame, aElementName ); +// CreateDockingWindow( xFrame, aElementName ); } } - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + if ( bMustBeLayouted ) + implts_doLayout_notify( sal_True ); + if ( bNotify ) { // UI element is invisible - provide information to listeners - implts_notifyListeners( css::frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( aName ) ); + implts_notifyListeners( frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( aName ) ); } } @@ -4273,112 +1590,54 @@ throw (RuntimeException) /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - sal_Bool bMustLayouted( sal_False ); - sal_Bool bMustBeDestroyed( sal_False ); - sal_Bool bMustBeSorted( sal_False ); - sal_Bool bNotify( sal_False ); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; + bool bMustBeLayouted( sal_False ); + bool bMustBeDestroyed( sal_False ); + bool bNotify( sal_False ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; Reference< XComponent > xComponent; - if ( impl_parseResourceURL( aName, aElementType, aElementName )) + parseResourceURL( aName, aElementType, aElementName ); + + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) - { - if ( !m_bInplaceMenuSet ) - { - impl_clearUpMenuBar(); - m_xMenuBar.clear(); - bNotify = sal_True; - } - } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == aName )) - { - aWriteLock.unlock(); - implts_destroyStatusBar(); - bMustLayouted = sal_True; - bNotify = sal_True; - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ) ) - { - aWriteLock.unlock(); - implts_createProgressBar(); - bMustLayouted = sal_True; - bNotify = sal_True; - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) + if ( !m_bInplaceMenuSet ) { - UIElementVector::iterator pIter; - - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName ) - { - xComponent.set( pIter->m_xUIElement, UNO_QUERY ); - Reference< XUIElement > xUIElement( pIter->m_xUIElement ); - if ( xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - - rtl::OUString aAddonTbResourceName( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/addon_" )); - if ( aName.indexOf( aAddonTbResourceName ) != 0 ) - { - try - { - if ( xWindow.is() ) - xWindow->removeWindowListener( Reference< css::awt::XWindowListener >( - static_cast< OWeakObject * >( this ), UNO_QUERY )); - } - catch( Exception& ) - { - } - - try - { - if ( xDockWindow.is() ) - xDockWindow->removeDockableWindowListener( Reference< css::awt::XDockableWindowListener >( - static_cast< OWeakObject * >( this ), UNO_QUERY )); - } - catch ( Exception& ) - { - } - - bMustBeDestroyed = sal_True; - } - else - { - pIter->m_bVisible = sal_False; - xWindow->setVisible( sal_False ); - bNotify = sal_True; - } - - if ( !xDockWindow->isFloating() ) - bMustLayouted = sal_True; - if ( bMustBeDestroyed ) - pIter->m_xUIElement.clear(); - - bMustBeSorted = sal_True; - } - - break; - } - } + impl_clearUpMenuBar(); + m_xMenuBar.clear(); + bNotify = true; } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) - { - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR( m_xSMGR ); - aWriteLock.unlock(); + } + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || + ( m_aStatusBarElement.m_aName == aName )) + { + aWriteLock.unlock(); + implts_destroyStatusBar(); + bMustBeLayouted = true; + bNotify = true; + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + { + aWriteLock.unlock(); + implts_createProgressBar(); + bMustBeLayouted = true; + bNotify = sal_True; + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR ) && m_pToolbarManager != NULL ) + { + aWriteLock.unlock(); + bNotify = m_pToolbarManager->destroyToolbar( aName ); + bMustBeLayouted = m_pToolbarManager->isLayoutDirty(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + { + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< lang::XMultiServiceFactory > xSMGR( m_xSMGR ); + aWriteLock.unlock(); - impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, false ); - bMustLayouted = sal_False; - bNotify = sal_False; - } + impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, false ); + bMustBeLayouted = false; + bNotify = false; } aWriteLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ @@ -4387,173 +1646,91 @@ throw (RuntimeException) { if ( xComponent.is() ) xComponent->dispose(); - bNotify = sal_True; + bNotify = true; } - if ( bMustBeSorted ) - { - implts_sortUIElements(); - if ( bMustLayouted ) - doLayout(); - } + if ( bMustBeLayouted ) + doLayout(); if ( bNotify ) - { - // UI element is invisible - provide information to listeners - implts_notifyListeners( css::frame::LayoutManagerEvents::UIELEMENT_INVISIBLE, uno::makeAny( aName ) ); - } + implts_notifyListeners( frame::LayoutManagerEvents::UIELEMENT_INVISIBLE, uno::makeAny( aName ) ); } -::sal_Bool SAL_CALL LayoutManager::requestElement( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::uno::RuntimeException) +::sal_Bool SAL_CALL LayoutManager::requestElement( const ::rtl::OUString& rResourceURL ) +throw (uno::RuntimeException) { - RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::requestElement" ); + bool bResult( false ); + bool bNotify( false ); + bool bDoLayout( false ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - UIElementVector::iterator pIter; - sal_Bool bResult( sal_False ); - sal_Bool bNotify( sal_False ); + parseResourceURL( rResourceURL, aElementType, aElementName ); WriteGuard aWriteLock( m_aLock ); - if ( impl_parseResourceURL( ResourceURL, aElementType, aElementName )) - { - ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); - RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s", aResName.getStr() ); - if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == ResourceURL )) - { - implts_readStatusBarState( ResourceURL ); - if ( m_aStatusBarElement.m_bVisible && !m_aStatusBarElement.m_bMasterHide ) - { - createElement( ResourceURL ); + ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); + RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s requested.", aResName.getStr() ); - // There are some situation where we are not able to create an element. - // Therefore we have to check the reference before further action. - // See #i70019# - css::uno::Reference< css::ui::XUIElement > xUIElement( m_aStatusBarElement.m_xUIElement ); - if ( xUIElement.is() ) - { - // we need VCL here to pass special flags to Show() - vos::OGuard aGuard( Application::GetSolarMutex() ); - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - { - pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - doLayout(); - bResult = sal_True; - bNotify = sal_True; - } - } - } - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ) ) + if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == rResourceURL )) + { + implts_readStatusBarState( rResourceURL ); + if ( m_aStatusBarElement.m_bVisible && !m_aStatusBarElement.m_bMasterHide ) { aWriteLock.unlock(); - implts_showProgressBar(); - doLayout(); - bResult = sal_True; - bNotify = sal_True; - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - { - if ( m_bVisible ) - { - bool bFound( false ); - bool bShowElement( false ); - - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == ResourceURL ) - { - bFound = sal_True; - bShowElement = ( pIter->m_bVisible && !pIter->m_bMasterHide && m_bParentWindowVisible ); - - Reference< css::awt::XWindow2 > xContainerWindow( m_xContainerWindow, UNO_QUERY ); - if ( xContainerWindow.is() && pIter->m_bFloating ) - bShowElement = ( bShowElement && xContainerWindow->isActive() ); - - if ( pIter->m_xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - - if ( xDockWindow.is() && xDockWindow->isFloating() ) - bShowElement = ( bShowElement && xContainerWindow->isActive() ); + createElement( rResourceURL ); - if ( xDockWindow.is() && bShowElement ) - { - pIter->m_bVisible = sal_True; - aWriteLock.unlock(); - - // we need VCL here to pass special flags to Show() - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if( pWindow && !pWindow->IsReallyVisible() ) - { - pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - implts_writeNewStateData( ResourceURL, xWindow ); - - if ( xDockWindow.is() && !xDockWindow->isFloating() ) - doLayout(); - bResult = sal_True; - bNotify = sal_True; - } - - bResult = sal_False; - } - } // if ( pIter->m_xUIElement.is() ) - break; - } - } - - // Create toolbar on demand when it's visible - if ( !bResult ) + // There are some situation where we are not able to create an element. + // Therefore we have to check the reference before further action. + // See #i70019# + uno::Reference< ui::XUIElement > xUIElement( m_aStatusBarElement.m_xUIElement ); + if ( xUIElement.is() ) + { + // we need VCL here to pass special flags to Show() + vos::OGuard aGuard( Application::GetSolarMutex() ); + Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow ) { - Reference< ::com::sun::star::ui::XUIElement > xUIElement; - if ( !bFound ) - { - UIElement aNewToolbar( aElementName, aElementType, xUIElement ); - aNewToolbar.m_aName = ResourceURL; - implts_readWindowStateData( ResourceURL, aNewToolbar ); - implts_insertUIElement( aNewToolbar ); - aWriteLock.unlock(); - - implts_sortUIElements(); - if ( aNewToolbar.m_bVisible ) - createElement( ResourceURL ); - bResult = sal_True; - bNotify = sal_True; - } - else if ( bShowElement ) - { - aWriteLock.unlock(); - - createElement( ResourceURL ); - bResult = sal_True; - bNotify = sal_True; - } + pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + bResult = true; + bNotify = true; + bDoLayout = true; } } } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ) ) + { + aWriteLock.unlock(); + implts_showProgressBar(); + bResult = true; + bNotify = true; + bDoLayout = true; + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR ) && m_bVisible ) + { + bool bComponentAttached( m_aModuleIdentifier.getLength() > 0 ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aWriteLock.unlock(); + + if ( pToolbarManager && bComponentAttached ) { - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - aWriteLock.unlock(); + bNotify = pToolbarManager->requestToolbar( rResourceURL ); + bDoLayout = true; + } + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + { + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + aWriteLock.unlock(); - CreateDockingWindow( xFrame, aElementName ); - } + CreateDockingWindow( xFrame, aElementName ); } if ( bNotify ) - { - // UI element is visible - provide information to listeners - implts_notifyListeners( css::frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( ResourceURL ) ); - } + implts_notifyListeners( frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( rResourceURL ) ); return bResult; } @@ -4561,50 +1738,54 @@ throw (::com::sun::star::uno::RuntimeException) Reference< XUIElement > SAL_CALL LayoutManager::getElement( const ::rtl::OUString& aName ) throw (RuntimeException) { - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - Reference< XUIElement > xElement; + Reference< XUIElement > xUIElement = implts_findElement( aName ); + if ( !xUIElement.is() ) + { + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aReadLock.unlock(); - implts_findElement( aName, aElementType, aElementName, xElement ); - return xElement; + if ( pToolbarManager ) + xUIElement = pToolbarManager->getToolbar( aName ); + } + + return xUIElement; } -Sequence< Reference< ::com::sun::star::ui::XUIElement > > SAL_CALL LayoutManager::getElements() -throw (::com::sun::star::uno::RuntimeException) +Sequence< Reference< ui::XUIElement > > SAL_CALL LayoutManager::getElements() +throw (uno::RuntimeException) { - ReadGuard aReadLock( m_aLock ); + ReadGuard aReadLock( m_aLock ); + uno::Reference< ui::XUIElement > xMenuBar( m_xMenuBar ); + uno::Reference< ui::XUIElement > xStatusBar( m_aStatusBarElement.m_xUIElement ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aReadLock.unlock(); - sal_Bool bMenuBar( sal_False ); - sal_Bool bStatusBar( sal_False ); - sal_Int32 nSize = m_aUIElements.size(); + Sequence< Reference< ui::XUIElement > > aSeq; + if ( pToolbarManager ) + aSeq = pToolbarManager->getToolbars(); - if ( m_xMenuBar.is() ) + sal_Int32 nSize = aSeq.getLength(); + sal_Int32 nMenuBarIndex(-1); + sal_Int32 nStatusBarIndex(-1); + if ( xMenuBar.is() ) { + nMenuBarIndex = nSize; ++nSize; - bMenuBar = sal_True; } - if ( m_aStatusBarElement.m_xUIElement.is() ) + if ( xStatusBar.is() ) { + nStatusBarIndex = nSize; ++nSize; - bStatusBar = sal_True; } - Sequence< Reference< ::com::sun::star::ui::XUIElement > > aSeq( nSize ); - - sal_Int32 nIndex = 0; - UIElementVector::const_iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - aSeq[nIndex++] = pIter->m_xUIElement; - } - if ( bMenuBar ) - aSeq[nIndex++] = m_xMenuBar; - if ( bStatusBar ) - aSeq[nIndex++] = m_aStatusBarElement.m_xUIElement; - - // Resize sequence as we now know our correct size - aSeq.realloc( nIndex ); + aSeq.realloc(nSize); + if ( nMenuBarIndex >= 0 ) + aSeq[nMenuBarIndex] = xMenuBar; + if ( nStatusBarIndex >= 0 ) + aSeq[nStatusBarIndex] = xStatusBar; return aSeq; } @@ -4614,115 +1795,80 @@ throw (RuntimeException) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::showElement" ); - sal_Bool bResult( sal_False ); - sal_Bool bNotify( sal_False ); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; + bool bResult( false ); + bool bNotify( false ); + bool bMustLayout( false ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + + parseResourceURL( aName, aElementType, aElementName ); - if ( impl_parseResourceURL( aName, aElementType, aElementName )) + ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); + RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s", aResName.getStr() ); + + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) { - ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); - RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s", aResName.getStr() ); + WriteGuard aWriteLock( m_aLock ); + m_bMenuVisible = sal_True; + aWriteLock.unlock(); - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + bResult = implts_resetMenuBar(); + bNotify = bResult; + } + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) + { + WriteGuard aWriteLock( m_aLock ); + if ( m_aStatusBarElement.m_xUIElement.is() && !m_aStatusBarElement.m_bMasterHide && + implts_showStatusBar( sal_True )) { - WriteGuard aWriteLock( m_aLock ); - m_bMenuVisible = sal_True; aWriteLock.unlock(); - bResult = implts_resetMenuBar(); - bNotify = bResult; - } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == aName )) - { - WriteGuard aWriteLock( m_aLock ); - if ( m_aStatusBarElement.m_xUIElement.is() && - !m_aStatusBarElement.m_bMasterHide ) - { - if ( implts_showStatusBar( sal_True )) - { - implts_writeWindowStateData( m_aStatusBarAlias, m_aStatusBarElement ); - doLayout(); - bResult = sal_True; - bNotify = sal_True; - } - } - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) - { - bNotify = bResult = implts_showProgressBar(); - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - { - UIElementVector::iterator pIter; - - WriteGuard aWriteLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) - { - UIElement aUIElement = *pIter; - Reference< css::awt::XWindow > xWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - - sal_Bool bShowElement( !pIter->m_bMasterHide && m_bParentWindowVisible ); - - pIter->m_bVisible = sal_True; - aWriteLock.unlock(); - - implts_writeWindowStateData( aUIElement.m_aName, aUIElement ); - implts_sortUIElements(); - - if ( xDockWindow.is() && bShowElement ) - { - // we need VCL here to pass special flags to Show() - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if( pWindow ) - { - pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); - bNotify = sal_True; - } - implts_writeNewStateData( aName, xWindow ); - - if ( xDockWindow.is() && !xDockWindow->isFloating() ) - doLayout(); - - bResult = sal_True; - } // if ( xDockWindow.is() && bShowElement ) - break; - } - } + implts_writeWindowStateData( m_aStatusBarAlias, m_aStatusBarElement ); + bMustLayout = true; + bResult = true; + bNotify = true; } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) - { - ReadGuard aReadGuard( m_aLock ); - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR( m_xSMGR ); - aReadGuard.unlock(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + { + bNotify = bResult = implts_showProgressBar(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) + { + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindowListener > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, true ); - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolpanel" )) + if ( pToolbarManager ) { - ReadGuard aReadGuard( m_aLock ); - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - aReadGuard.unlock(); - - ActivateToolPanel( m_xFrame, aName ); + bNotify = pToolbarManager->showToolbar( aName ); + bMustLayout = pToolbarManager->isLayoutDirty(); } } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + { + ReadGuard aReadGuard( m_aLock ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< lang::XMultiServiceFactory > xSMGR( m_xSMGR ); + aReadGuard.unlock(); - if ( bNotify ) + impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, true ); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolpanel" )) { - // UI element is visible - provide information to listeners - implts_notifyListeners( css::frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( aName ) ); + ReadGuard aReadGuard( m_aLock ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + aReadGuard.unlock(); + ActivateToolPanel( m_xFrame, aName ); } + if ( bMustLayout ) + doLayout(); + + if ( bNotify ) + implts_notifyListeners( frame::LayoutManagerEvents::UIELEMENT_VISIBLE, uno::makeAny( aName ) ); + return bResult; } @@ -4731,479 +1877,240 @@ throw (RuntimeException) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::hideElement" ); + bool bResult( false ); + bool bNotify( false ); + bool bMustLayout( false ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - sal_Bool bResult( sal_False ); - sal_Bool bNotify( sal_False ); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; + parseResourceURL( aName, aElementType, aElementName ); + ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); + RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s", aResName.getStr() ); - if ( impl_parseResourceURL( aName, aElementType, aElementName )) + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) { - ::rtl::OString aResName = rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_ASCII_US ); - RTL_LOGFILE_CONTEXT_TRACE1( aLog, "framework (cd100003) Element %s", aResName.getStr() ); + WriteGuard aWriteLock( m_aLock ); - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + if ( m_xContainerWindow.is() ) { - WriteGuard aWriteLock( m_aLock ); + m_bMenuVisible = sal_False; - if ( m_xContainerWindow.is() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); - - m_bMenuVisible = sal_False; - if ( pWindow ) - { - MenuBar* pMenuBar = ((SystemWindow *)pWindow)->GetMenuBar(); - if ( pMenuBar ) - { - pMenuBar->SetDisplayable( sal_False ); - bResult = sal_True; - bNotify = sal_True; - } - } - } - } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == aName )) - { - WriteGuard aWriteLock( m_aLock ); - if ( m_aStatusBarElement.m_xUIElement.is() && - !m_aStatusBarElement.m_bMasterHide ) + vos::OGuard aGuard( Application::GetSolarMutex() ); + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) { - if ( implts_hideStatusBar( sal_True )) + MenuBar* pMenuBar = pSysWindow->GetMenuBar(); + if ( pMenuBar ) { - implts_writeWindowStateData( m_aStatusBarAlias, m_aStatusBarElement ); - doLayout(); - bNotify = sal_True; - bResult = sal_True; + pMenuBar->SetDisplayable( sal_False ); + bResult = true; + bNotify = true; } } } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + } + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) + { + WriteGuard aWriteLock( m_aLock ); + if ( m_aStatusBarElement.m_xUIElement.is() && !m_aStatusBarElement.m_bMasterHide && + implts_hideStatusBar( sal_True )) { - bResult = bNotify = implts_hideProgressBar(); + implts_writeWindowStateData( m_aStatusBarAlias, m_aStatusBarElement ); + bMustLayout = sal_True; + bNotify = sal_True; + bResult = sal_True; } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - { - UIElementVector::iterator pIter; - - WriteGuard aWriteLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - - if ( xDockWindow.is() ) - { - pIter->m_bVisible = sal_False; - aWriteLock.unlock(); - - xWindow->setVisible( sal_False ); - implts_writeNewStateData( aName, xWindow ); - - if ( xDockWindow.is() && !xDockWindow->isFloating() ) - doLayout(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) + { + bResult = bNotify = implts_hideProgressBar(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) + { + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - bResult = sal_True; - bNotify = sal_True; - } // if ( xDockWindow.is() ) - break; - } - } - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) - { - ReadGuard aReadGuard( m_aLock ); - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR( m_xSMGR ); - aReadGuard.unlock(); + bNotify = pToolbarManager->hideToolbar( aName ); + bMustLayout = pToolbarManager->isLayoutDirty(); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + { + ReadGuard aReadGuard( m_aLock ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< lang::XMultiServiceFactory > xSMGR( m_xSMGR ); + aReadGuard.unlock(); - impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, false ); - } + impl_setDockingWindowVisibility( xSMGR, xFrame, aElementName, false ); } + if ( bMustLayout ) + doLayout(); + if ( bNotify ) - { - // UI element is visible - provide information to listeners - implts_notifyListeners( css::frame::LayoutManagerEvents::UIELEMENT_INVISIBLE, uno::makeAny( aName ) ); - } + implts_notifyListeners( frame::LayoutManagerEvents::UIELEMENT_INVISIBLE, uno::makeAny( aName ) ); return sal_False; } -sal_Bool SAL_CALL LayoutManager::dockWindow( const ::rtl::OUString& aName, DockingArea DockingArea, const css::awt::Point& Pos ) +sal_Bool SAL_CALL LayoutManager::dockWindow( const ::rtl::OUString& aName, DockingArea DockingArea, const awt::Point& Pos ) throw (RuntimeException) { - UIElement aUIElement; + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; - if ( implts_findElement( aName, aUIElement ) && aUIElement.m_xUIElement.is() ) + parseResourceURL( aName, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow.is() ) - { - if ( DockingArea != DockingArea_DOCKINGAREA_DEFAULT ) - aUIElement.m_aDockedData.m_nDockedArea = sal_Int16( DockingArea ); - - if (( Pos.X != SAL_MAX_INT32 ) && ( Pos.Y != SAL_MAX_INT32 )) - aUIElement.m_aDockedData.m_aPos = ::Point( Pos.X, Pos.Y ); - - if ( !xDockWindow->isFloating() ) - { - Window* pWindow( 0 ); - ToolBox* pToolBox( 0 ); - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - { - pToolBox = (ToolBox *)pWindow; - - // We have to set the alignment of the toolbox. It's possible that the toolbox is moved from a - // horizontal to a vertical docking area! - pToolBox->SetAlign( ImplConvertAlignment( aUIElement.m_aDockedData.m_nDockedArea )); - } - } - - if (( aUIElement.m_aDockedData.m_aPos.X() == SAL_MAX_INT32 ) || - ( aUIElement.m_aDockedData.m_aPos.Y() == SAL_MAX_INT32 )) - { - // Docking on its default position without a preset position - - // we have to find a good place for it. - ::Size aSize; - - vos::OGuard aGuard( Application::GetSolarMutex() ); - { - if ( pToolBox ) - aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( aUIElement.m_aDockedData.m_nDockedArea ) ); - else - aSize = pWindow->GetSizePixel(); - } - - ::Point aPixelPos; - ::Point aDockPos; - implts_findNextDockingPos( (::com::sun::star::ui::DockingArea)aUIElement.m_aDockedData.m_nDockedArea, - aSize, - aDockPos, - aPixelPos ); - aUIElement.m_aDockedData.m_aPos = aDockPos; - } - } - - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIElement.m_aName ); - if ( rUIElement.m_aName == aName ) - { - rUIElement.m_aDockedData.m_nDockedArea = aUIElement.m_aDockedData.m_nDockedArea; - rUIElement.m_aDockedData.m_aPos = aUIElement.m_aDockedData.m_aPos; - } - aWriteLock.unlock(); - - if ( xDockWindow->isFloating() ) - { - // Will call toggle floating mode which will do the rest! - xWindow->setVisible( sal_False ); - xDockWindow->setFloatingMode( sal_False ); - xWindow->setVisible( sal_True ); - } - else - { - implts_writeWindowStateData( aName, aUIElement ); - implts_sortUIElements(); - - if ( aUIElement.m_bVisible ) - doLayout(); - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - return sal_True; - } - } - catch ( DisposedException& ) + if ( pToolbarManager ) { + pToolbarManager->dockToolbar( aName, DockingArea, Pos ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } - return sal_False; } -::sal_Bool SAL_CALL LayoutManager::dockAllWindows( ::sal_Int16 nElementType ) throw (::com::sun::star::uno::RuntimeException) +::sal_Bool SAL_CALL LayoutManager::dockAllWindows( ::sal_Int16 /*nElementType*/ ) throw (uno::RuntimeException) { - if ( nElementType == UIElementType::TOOLBAR ) - { - std::vector< rtl::OUString > aToolBarNameVector; - - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - - { - ReadGuard aReadLock( m_aLock ); - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_aType.equalsAscii( "toolbar" ) && - pIter->m_xUIElement.is() && - pIter->m_bFloating && - pIter->m_bVisible ) - aToolBarNameVector.push_back( pIter->m_aName ); - } - } + ReadGuard aReadLock( m_aLock ); + bool bResult( false ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - const sal_uInt32 nCount = aToolBarNameVector.size(); - for ( sal_uInt32 i = 0; i < nCount; ++i ) - { - ::com::sun::star::awt::Point aPoint; - aPoint.X = aPoint.Y = SAL_MAX_INT32; - dockWindow( aToolBarNameVector[i], DockingArea_DOCKINGAREA_DEFAULT, aPoint ); - } + if ( pToolbarManager ) + { + bResult = pToolbarManager->dockAllToolbars(); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } - - return sal_False; + return bResult; } sal_Bool SAL_CALL LayoutManager::floatWindow( const ::rtl::OUString& aName ) throw (RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( aName, aUIElement )) + bool bResult( false ); + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( aUIElement.m_xUIElement.is() ) + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xWindow.is() && xDockWindow.is() ) - { - if ( !xDockWindow->isFloating() ) - { - xDockWindow->setFloatingMode( sal_True ); - return sal_True; - } - } - } - catch ( DisposedException& ) - { - } + bResult = pToolbarManager->floatToolbar( aName ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } - - return sal_False; + return bResult; } -::sal_Bool SAL_CALL LayoutManager::lockWindow( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::uno::RuntimeException) +::sal_Bool SAL_CALL LayoutManager::lockWindow( const ::rtl::OUString& aName ) +throw (uno::RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( ResourceURL, aUIElement )) + bool bResult( false ); + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( aUIElement.m_xUIElement.is() ) + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && - pWindow->IsVisible() && - xDockWindow.is() && - !xDockWindow->isFloating() ) - { - aUIElement.m_aDockedData.m_bLocked = sal_True; - implts_writeWindowStateData( ResourceURL, aUIElement ); - xDockWindow->lock(); - - // Write back lock state - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIElement.m_aName ); - if ( rUIElement.m_aName == aUIElement.m_aName ) - rUIElement.m_aDockedData.m_bLocked = aUIElement.m_aDockedData.m_bLocked; - aWriteLock.unlock(); - - doLayout(); - return sal_True; - } - } - catch ( DisposedException& ) - { - } + bResult = pToolbarManager->lockToolbar( aName ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } - - return sal_False; + return bResult; } -::sal_Bool SAL_CALL LayoutManager::unlockWindow( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::uno::RuntimeException) +::sal_Bool SAL_CALL LayoutManager::unlockWindow( const ::rtl::OUString& aName ) +throw (uno::RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( ResourceURL, aUIElement )) + bool bResult( false ); + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( aUIElement.m_xUIElement.is() ) + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && - pWindow->IsVisible() && - xDockWindow.is() && - !xDockWindow->isFloating() ) - { - aUIElement.m_aDockedData.m_bLocked = sal_False; - implts_writeWindowStateData( ResourceURL, aUIElement ); - xDockWindow->unlock(); - - // Write back lock state - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIElement.m_aName ); - if ( rUIElement.m_aName == aUIElement.m_aName ) - rUIElement.m_aDockedData.m_bLocked = aUIElement.m_aDockedData.m_bLocked; - aWriteLock.unlock(); - - doLayout(); - return sal_True; - } - } - catch ( DisposedException& ) - { - } + bResult = pToolbarManager->unlockToolbar( aName ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } - - return sal_False; + return bResult; } -void SAL_CALL LayoutManager::setElementSize( const ::rtl::OUString& aName, const css::awt::Size& aSize ) +void SAL_CALL LayoutManager::setElementSize( const ::rtl::OUString& aName, const awt::Size& aSize ) throw (RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( aName, aUIElement )) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( aUIElement.m_xUIElement.is() ) - { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XWindow2 > xWindow2( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xThis( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - if ( xWindow.is() && xWindow2.is() && xDockWindow.is() ) - { - if ( aUIElement.m_bFloating ) - { - xWindow2->setOutputSize( aSize ); - implts_writeNewStateData( aName, xWindow ); - } - } - } - catch ( DisposedException& ) - { - } + if ( pToolbarManager ) + { + pToolbarManager->setToolbarSize( aName, aSize ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } } -void SAL_CALL LayoutManager::setElementPos( const ::rtl::OUString& aName, const css::awt::Point& aPos ) +void SAL_CALL LayoutManager::setElementPos( const ::rtl::OUString& aName, const awt::Point& aPos ) throw (RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( aName, aUIElement ) && aUIElement.m_xUIElement.is() ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); + ReadGuard aReadLock( m_aLock ); + uno::Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aReadLock.unlock(); - if ( xWindow.is() && xDockWindow.is() ) - { - if ( aUIElement.m_bFloating ) - { - xWindow->setPosSize( aPos.X, aPos.Y, 0, 0, css::awt::PosSize::POS ); - implts_writeNewStateData( aName, xWindow ); - } - else - { - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIElement.m_aName ); - if ( rUIElement.m_aName == aName ) - rUIElement.m_aDockedData.m_aPos = ::Point( aPos.X, aPos.Y ); - aWriteLock.unlock(); - - aUIElement.m_aDockedData.m_aPos = ::Point( aPos.X, aPos.Y ); - implts_writeWindowStateData( aName, aUIElement ); - implts_sortUIElements(); - - if ( aUIElement.m_bVisible ) - doLayout(); - } - } - } - catch ( DisposedException& ) + if ( pToolbarManager ) { + pToolbarManager->setToolbarPos( aName, aPos ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } } -void SAL_CALL LayoutManager::setElementPosSize( const ::rtl::OUString& aName, const css::awt::Point& aPos, const css::awt::Size& aSize ) +void SAL_CALL LayoutManager::setElementPosSize( const ::rtl::OUString& aName, const awt::Point& aPos, const awt::Size& aSize ) throw (RuntimeException) { - UIElement aUIElement; - - if ( implts_findElement( aName, aUIElement )) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( aUIElement.m_xUIElement.is() ) - { - try - { - Reference< css::awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XWindow2 > xWindow2( aUIElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - - if ( xWindow.is() && xWindow2.is() && xDockWindow.is() ) - { - if ( aUIElement.m_bFloating ) - { - xWindow2->setPosSize( aPos.X, aPos.Y, 0, 0, css::awt::PosSize::POS ); - xWindow2->setOutputSize( aSize ); - implts_writeNewStateData( aName, xWindow ); - } - else - { - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIElement.m_aName ); - if ( rUIElement.m_aName == aName ) - rUIElement.m_aDockedData.m_aPos = ::Point( aPos.X, aPos.Y ); - aWriteLock.unlock(); - - aUIElement.m_aDockedData.m_aPos = ::Point( aPos.X, aPos.Y ); - implts_writeWindowStateData( aName, rUIElement ); - implts_sortUIElements(); + ReadGuard aReadLock( m_aLock ); + uno::Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager( m_pToolbarManager ); + aReadLock.unlock(); - if ( aUIElement.m_bVisible ) - doLayout(); - } - } - } - catch ( DisposedException& ) - { - } + if ( pToolbarManager ) + { + pToolbarManager->setToolbarPosSize( aName, aPos, aSize ); + if ( pToolbarManager->isLayoutDirty() ) + doLayout(); } } } @@ -5214,84 +2121,66 @@ throw (RuntimeException) ::rtl::OUString aElementType; ::rtl::OUString aElementName; - if ( impl_parseResourceURL( aName, aElementType, aElementName )) + parseResourceURL( aName, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + ReadGuard aReadLock( m_aLock ); + if ( m_xContainerWindow.is() ) { - ReadGuard aReadLock( m_aLock ); - if ( m_xContainerWindow.is() ) - { - aReadLock.unlock(); - - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); + aReadLock.unlock(); - if ( pWindow ) - { - MenuBar* pMenuBar = ((SystemWindow *)pWindow)->GetMenuBar(); - if ( pMenuBar && pMenuBar->IsDisplayable() ) - return sal_True; - } - else - { - aReadLock.lock(); - return m_bMenuVisible; - } + vos::OGuard aGuard( Application::GetSolarMutex() ); + SystemWindow* pSysWindow = getTopSystemWindow( m_xContainerWindow ); + if ( pSysWindow ) + { + MenuBar* pMenuBar = pSysWindow->GetMenuBar(); + if ( pMenuBar && pMenuBar->IsDisplayable() ) + return sal_True; } - } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || - ( m_aStatusBarElement.m_aName == aName )) - { - if ( m_aStatusBarElement.m_xUIElement.is() ) + else { - Reference< css::awt::XWindow > xWindow( - m_aStatusBarElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - if ( xWindow.is() ) - { - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->IsVisible() ) - return sal_True; - else - return sal_False; - } + aReadLock.lock(); + return m_bMenuVisible; } } - else if (( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ))) - { - if ( m_aProgressBarElement.m_xUIElement.is() ) - return m_aProgressBarElement.m_bVisible; - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) + } + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) + { + if ( m_aStatusBarElement.m_xUIElement.is() ) { - UIElementVector::const_iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + Reference< awt::XWindow > xWindow( m_aStatusBarElement.m_xUIElement->getRealInterface(), UNO_QUERY ); + if ( xWindow.is() ) { - if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - if ( xWindow.is() ) - { - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - return pWindow && pWindow->IsVisible(); - } - } + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->IsVisible() ) + return sal_True; + else + return sal_False; } } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) - { - ReadGuard aReadGuard( m_aLock ); - css::uno::Reference< css::frame::XFrame > xFrame( m_xFrame ); - aReadGuard.unlock(); + } + else if (( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" ))) + { + if ( m_aProgressBarElement.m_xUIElement.is() ) + return m_aProgressBarElement.m_bVisible; + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) + { + ReadGuard aReadLock( m_aLock ); + uno::Reference< frame::XLayoutManager > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - return IsDockingWindowVisible( xFrame, aElementName ); - } + if ( pToolbarManager ) + return pToolbarManager->isToolbarVisible( aName ); + } + else if ( aElementType.equalsIgnoreAsciiCaseAscii( "dockingwindow" )) + { + ReadGuard aReadGuard( m_aLock ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + aReadGuard.unlock(); + + return IsDockingWindowVisible( xFrame, aElementName ); } return sal_False; @@ -5300,16 +2189,15 @@ throw (RuntimeException) sal_Bool SAL_CALL LayoutManager::isElementFloating( const ::rtl::OUString& aName ) throw (RuntimeException) { - UIElementVector::const_iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - return xDockWindow.is() && xDockWindow->isFloating(); - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) + return pToolbarManager->isToolbarFloating( aName ); } return sal_False; @@ -5318,93 +2206,69 @@ throw (RuntimeException) sal_Bool SAL_CALL LayoutManager::isElementDocked( const ::rtl::OUString& aName ) throw (RuntimeException) { - UIElementVector::const_iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) - { - Reference< css::awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - return xDockWindow.is() && !xDockWindow->isFloating(); - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) + return pToolbarManager->isToolbarDocked( aName ); } return sal_False; } -::sal_Bool SAL_CALL LayoutManager::isElementLocked( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::uno::RuntimeException) +::sal_Bool SAL_CALL LayoutManager::isElementLocked( const ::rtl::OUString& aName ) +throw (uno::RuntimeException) { - UIElementVector::const_iterator pIter; - - ReadGuard aReadLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - if (( pIter->m_aName == ResourceURL ) && ( pIter->m_xUIElement.is() )) - { - Reference< css::awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), UNO_QUERY ); - return xDockWindow.is() && !xDockWindow->isLocked(); - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) + return pToolbarManager->isToolbarLocked( aName ); } return sal_False; } -css::awt::Size SAL_CALL LayoutManager::getElementSize( const ::rtl::OUString& aName ) +awt::Size SAL_CALL LayoutManager::getElementSize( const ::rtl::OUString& aName ) throw (RuntimeException) { - ReadGuard aReadLock( m_aLock ); - UIElement aElementData; - if ( implts_findElement( aName,aElementData ) && aElementData.m_xUIElement.is() ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - Reference< css::awt::XWindow > xWindow( aElementData.m_xUIElement->getRealInterface(), UNO_QUERY ); - if ( xWindow.is() ) - { - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - { - ::Size aSize = pWindow->GetSizePixel(); - css::awt::Size aElementSize; - aElementSize.Width = aSize.Width(); - aElementSize.Height = aSize.Height(); - return aElementSize; - } // if ( pWindow ) - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); + + if ( pToolbarManager ) + return pToolbarManager->getToolbarSize( aName ); } - return css::awt::Size(); + + return awt::Size(); } -css::awt::Point SAL_CALL LayoutManager::getElementPos( const ::rtl::OUString& aName ) +awt::Point SAL_CALL LayoutManager::getElementPos( const ::rtl::OUString& aName ) throw (RuntimeException) { - ReadGuard aReadLock( m_aLock ); - UIElement aElementData; - if ( implts_findElement( aName,aElementData ) && aElementData.m_xUIElement.is() ) + if ( getElementTypeFromResourceURL( aName ).equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - Reference< css::awt::XWindow > xWindow( aElementData.m_xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow.is() ) - { - css::awt::Point aPos; - if ( aElementData.m_bFloating ) - { - css::awt::Rectangle aRect = xWindow->getPosSize(); - aPos.X = aRect.X; - aPos.Y = aRect.Y; - } - else - { - ::Point aVirtualPos = aElementData.m_aDockedData.m_aPos; - aPos.X = aVirtualPos.X(); - aPos.Y = aVirtualPos.Y(); - } + ReadGuard aReadLock( m_aLock ); + uno::Reference< uno::XInterface > xToolbarManager( m_xToolbarManager, uno::UNO_QUERY ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - return aPos; - } + if ( pToolbarManager ) + return pToolbarManager->getToolbarPos( aName ); } - return css::awt::Point(); + return awt::Point(); } void SAL_CALL LayoutManager::lock() @@ -5426,7 +2290,7 @@ throw (RuntimeException) #endif Any a( nLockCount ); - implts_notifyListeners( css::frame::LayoutManagerEvents::LOCK, a ); + implts_notifyListeners( frame::LayoutManagerEvents::LOCK, a ); } void SAL_CALL LayoutManager::unlock() @@ -5449,15 +2313,15 @@ throw (RuntimeException) // conform to documentation: unlock with lock count == 0 means force a layout WriteGuard aWriteLock( m_aLock ); - if ( bDoLayout ) - m_aAsyncLayoutTimer.Stop(); - aWriteLock.unlock(); + if ( bDoLayout ) + m_aAsyncLayoutTimer.Stop(); + aWriteLock.unlock(); Any a( nLockCount ); - implts_notifyListeners( css::frame::LayoutManagerEvents::UNLOCK, a ); + implts_notifyListeners( frame::LayoutManagerEvents::UNLOCK, a ); if ( bDoLayout ) - implts_doLayout_notify( sal_True ); + implts_doLayout_notify( sal_True ); } void SAL_CALL LayoutManager::doLayout() @@ -5466,62 +2330,61 @@ throw (RuntimeException) implts_doLayout_notify( sal_True ); } +//--------------------------------------------------------------------------------------------------------- +// ILayoutNotifications +//--------------------------------------------------------------------------------------------------------- +void LayoutManager::requestLayout( Hint eHint ) +{ + if ( eHint == HINT_TOOLBARSPACE_HAS_CHANGED ) + doLayout(); +} + void LayoutManager::implts_doLayout_notify( sal_Bool bOuterResize ) { - sal_Bool bLayouted = implts_doLayout( sal_False, bOuterResize ); + bool bLayouted = implts_doLayout( false, bOuterResize ); if ( bLayouted ) - implts_notifyListeners( css::frame::LayoutManagerEvents::LAYOUT, Any() ); + implts_notifyListeners( frame::LayoutManagerEvents::LAYOUT, Any() ); } sal_Bool LayoutManager::implts_doLayout( sal_Bool bForceRequestBorderSpace, sal_Bool bOuterResize ) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::implts_doLayout" ); - sal_Bool bNoLock( sal_False ); - css::awt::Rectangle aCurrBorderSpace; - Reference< css::awt::XWindow > xContainerWindow; - Reference< css::awt::XTopWindow2 > xContainerTopWindow; - Reference< css::awt::XWindow > xComponentWindow; - Reference< XDockingAreaAcceptor > xDockingAreaAcceptor; - bool bPreserveContentSize( false ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); - sal_Bool bMustDoLayout( m_bMustDoLayout ); - if ( !m_bParentWindowVisible ) + if ( !m_xFrame.is() || !m_bParentWindowVisible ) return sal_False; - bNoLock = ( m_nLockCount == 0 ); - xContainerWindow = m_xContainerWindow; - xContainerTopWindow = m_xContainerTopWindow; - xComponentWindow = m_xFrame->getComponentWindow(); - xDockingAreaAcceptor = m_xDockingAreaAcceptor; - aCurrBorderSpace = m_aDockingArea; - bPreserveContentSize = m_bPreserveContentSize; + bool bPreserveContentSize( m_bPreserveContentSize ); + bool bMustDoLayout( m_bMustDoLayout ); + bool bNoLock = ( m_nLockCount == 0 ); + awt::Rectangle aCurrBorderSpace( m_aDockingArea ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< awt::XTopWindow2 > xContainerTopWindow( m_xContainerTopWindow ); + Reference< awt::XWindow > xComponentWindow( m_xFrame->getComponentWindow() ); + Reference< XDockingAreaAcceptor > xDockingAreaAcceptor( m_xDockingAreaAcceptor ); aReadLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ sal_Bool bLayouted( sal_False ); - if ( bNoLock && - xDockingAreaAcceptor.is() && - xContainerWindow.is() && - xComponentWindow.is() ) + if ( bNoLock && xDockingAreaAcceptor.is() && xContainerWindow.is() && xComponentWindow.is() ) { bLayouted = sal_True; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteGuard( m_aLock ); m_bDoLayout = sal_True; aWriteGuard.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - css::awt::Rectangle aBorderSpace = implts_calcDockingAreaSizes(); - sal_Bool bGotRequestedBorderSpace( sal_True ); - sal_Bool bEqual = implts_compareRectangles( aBorderSpace, aCurrBorderSpace ); + awt::Rectangle aDockSpace( implts_calcDockingAreaSizes() ); + awt::Rectangle aBorderSpace( aDockSpace ); + sal_Bool bGotRequestedBorderSpace( sal_True ); + + // We have to add the height of a possible status bar + aBorderSpace.Height += implts_getStatusBarSize().Height(); - if ( !bEqual || bForceRequestBorderSpace || bMustDoLayout ) + if ( !equalRectangles( aBorderSpace, aCurrBorderSpace ) || bForceRequestBorderSpace || bMustDoLayout ) { // we always resize the content window (instead of the complete container window) if we're not set up // to (attempt to) preserve the content window's size @@ -5534,7 +2397,7 @@ sal_Bool LayoutManager::implts_doLayout( sal_Bool bForceRequestBorderSpace, sal_ // if the component window does not have a size (yet), then we can't use it to calc the container // window size - css::awt::Rectangle aComponentRect = xComponentWindow->getPosSize(); + awt::Rectangle aComponentRect = xComponentWindow->getPosSize(); if ( bOuterResize && ( aComponentRect.Width == 0 ) && ( aComponentRect.Height == 0 ) ) bOuterResize = sal_False; @@ -5553,52 +2416,34 @@ sal_Bool LayoutManager::implts_doLayout( sal_Bool bForceRequestBorderSpace, sal_ // if we did not do an container window resize, or it failed, then use the DockingAcceptor as usual if ( !bGotRequestedBorderSpace ) - { bGotRequestedBorderSpace = xDockingAreaAcceptor->requestDockingAreaSpace( aBorderSpace ); - if ( bGotRequestedBorderSpace ) - xDockingAreaAcceptor->setDockingAreaSpace( aBorderSpace ); - } if ( bGotRequestedBorderSpace ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ aWriteGuard.lock(); m_aDockingArea = aBorderSpace; m_bMustDoLayout = sal_False; aWriteGuard.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } } if ( bGotRequestedBorderSpace ) { - ::Size aContainerSize; - ::Size aStatusBarSize; + ::Size aContainerSize; + ::Size aStatusBarSize; - aStatusBarSize = implts_getStatusBarSize(); - aBorderSpace.Height -= aStatusBarSize.Height(); - implts_setDockingAreaWindowSizes( aBorderSpace ); + // Interim solution to let the layout method within the + // toolbar layout manager. + implts_setOffset( implts_getStatusBarSize().Height() ); + m_pToolbarManager->setDockingArea( aDockSpace ); // Subtract status bar size from our container output size. Docking area windows // don't contain the status bar! + aStatusBarSize = implts_getStatusBarSize(); aContainerSize = implts_getContainerWindowOutputSize(); aContainerSize.Height() -= aStatusBarSize.Height(); - // Retrieve row/column dependent data from all docked user-interface elements - for ( sal_Int32 i = 0; i < DOCKINGAREAS_COUNT; i++ ) - { - std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; - - implts_getDockingAreaElementInfos( (DockingArea)i, aRowColumnsWindowData ); - - sal_Int32 nOffset( 0 ); - const sal_uInt32 nCount = aRowColumnsWindowData.size(); - for ( sal_uInt32 j = 0; j < nCount; ++j ) - { - implts_calcWindowPosSizeOnSingleRowColumn( i, nOffset, aRowColumnsWindowData[j], aContainerSize ); - nOffset += aRowColumnsWindowData[j].nStaticSize; - } - } + m_pToolbarManager->doLayout(aContainerSize); // Position the status bar if ( aStatusBarSize.Height() > 0 ) @@ -5607,37 +2452,26 @@ sal_Bool LayoutManager::implts_doLayout( sal_Bool bForceRequestBorderSpace, sal_ ::Size( aContainerSize.Width(),aStatusBarSize.Height() )); } - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + xDockingAreaAcceptor->setDockingAreaSpace( aBorderSpace ); + aWriteGuard.lock(); m_bDoLayout = sal_False; aWriteGuard.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ } } return bLayouted; } -sal_Bool LayoutManager::implts_compareRectangles( const css::awt::Rectangle& rRect1, - const css::awt::Rectangle& rRect2 ) -{ - return (( rRect1.X == rRect2.X ) && - ( rRect1.Y == rRect2.Y ) && - ( rRect1.Width == rRect2.Width ) && - ( rRect1.Height == rRect2.Height )); -} - sal_Bool LayoutManager::implts_resizeContainerWindow( const awt::Size& rContainerSize, const awt::Point& rComponentPos ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); Reference< awt::XWindow > xContainerWindow = m_xContainerWindow; Reference< awt::XTopWindow2 > xContainerTopWindow = m_xContainerTopWindow; Reference< awt::XWindow > xComponentWindow = m_xFrame->getComponentWindow(); Reference< container::XIndexAccess > xDisplayAccess = m_xDisplayAccess; aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ // calculate the maximum size we have for the container window awt::Rectangle aWorkArea; @@ -5652,34 +2486,30 @@ sal_Bool LayoutManager::implts_resizeContainerWindow( const awt::Size& rContaine DBG_UNHANDLED_EXCEPTION(); } - if ( ( aWorkArea.Width > 0 ) && ( aWorkArea.Height > 0 ) ) + if (( aWorkArea.Width > 0 ) && ( aWorkArea.Height > 0 )) { - if ( ( rContainerSize.Width > aWorkArea.Width ) - || ( rContainerSize.Height > aWorkArea.Height ) - ) + if (( rContainerSize.Width > aWorkArea.Width ) || ( rContainerSize.Height > aWorkArea.Height )) return sal_False; // Strictly, this is not correct. If we have a multi-screen display (css.awt.DisplayAccess.MultiDisplay == true), // the the "effective work area" would be much larger than the work area of a single display, since we could in theory // position the container window across multiple screens. - // However, this should suffice as a heuristics here ... (nobody really wants to check whethere the different screens are + // However, this should suffice as a heuristics here ... (nobody really wants to check whether the different screens are // stacked horizontally or vertically, whether their work areas can really be combined, or are separated by non-work-areas, // and the like ... right?) } // resize our container window - xContainerWindow->setPosSize( 0, 0, rContainerSize.Width, rContainerSize.Height, css::awt::PosSize::SIZE ); + xContainerWindow->setPosSize( 0, 0, rContainerSize.Width, rContainerSize.Height, awt::PosSize::SIZE ); // position the component window - xComponentWindow->setPosSize( rComponentPos.X, rComponentPos.Y, 0, 0, css::awt::PosSize::POS ); + xComponentWindow->setPosSize( rComponentPos.X, rComponentPos.Y, 0, 0, awt::PosSize::POS ); return sal_True; } void SAL_CALL LayoutManager::setVisible( sal_Bool bVisible ) -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { - sal_Bool bWasVisible( sal_True ); - WriteGuard aWriteLock( m_aLock ); - bWasVisible = m_bVisible; + sal_Bool bWasVisible( m_bVisible ); m_bVisible = bVisible; aWriteLock.unlock(); @@ -5688,226 +2518,24 @@ throw (::com::sun::star::uno::RuntimeException) } sal_Bool SAL_CALL LayoutManager::isVisible() -throw (::com::sun::star::uno::RuntimeException) +throw (uno::RuntimeException) { ReadGuard aReadLock( m_aLock ); return m_bVisible; } -void LayoutManager::implts_calcWindowPosSizeOnSingleRowColumn( sal_Int32 nDockingArea, - sal_Int32 nOffset, - SingleRowColumnWindowData& rRowColumnWindowData, - const ::Size& rContainerSize ) -{ - sal_Int32 nDiff( 0 ); - sal_Int32 nRCSpace( rRowColumnWindowData.nSpace ); - sal_Int32 nTopDockingAreaSize; - sal_Int32 nBottomDockingAreaSize; - sal_Int32 nContainerClientSize; - - if ( rRowColumnWindowData.aRowColumnWindows.empty() ) - return; - - if (( nDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - nContainerClientSize = rContainerSize.Width(); - nDiff = nContainerClientSize - rRowColumnWindowData.nVarSize; - } - else - { - nTopDockingAreaSize = implts_getTopBottomDockingAreaSizes().Width(); - nBottomDockingAreaSize = implts_getTopBottomDockingAreaSizes().Height(); - nContainerClientSize = ( rContainerSize.Height() - nTopDockingAreaSize - nBottomDockingAreaSize ); - nDiff = nContainerClientSize - rRowColumnWindowData.nVarSize; - } - - const sal_uInt32 nCount = rRowColumnWindowData.aRowColumnWindowSizes.size(); - if (( nDiff < 0 ) && ( nRCSpace > 0 )) - { - // First we try to reduce the size of blank space before/behind docked windows - sal_Int32 i = nCount - 1; - while ( i >= 0 ) - { - sal_Int32 nSpace = rRowColumnWindowData.aRowColumnSpace[i]; - if ( nSpace >= -nDiff ) - { - - if (( nDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount ; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].X += nDiff; - } - else - { - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount ; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].Y += nDiff; - } - nDiff = 0; - - break; - } - else if ( nSpace > 0 ) - { - if (( nDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].X -= nSpace; - } - else - { - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].Y -= nSpace; - } - nDiff += nSpace; - } - --i; - } - } - - // Check if we have to reduce further - if ( nDiff < 0 ) - { - // Now we have to reduce the size of certain docked windows - sal_Int32 i = sal_Int32( nCount - 1 ); - while ( i >= 0 ) - { - css::awt::Rectangle& rWinRect = rRowColumnWindowData.aRowColumnWindowSizes[i]; - ::Size aMinSize; - - vos::OGuard aGuard( Application::GetSolarMutex() ); - { - Reference< css::awt::XWindow > xWindow = rRowColumnWindowData.aRowColumnWindows[i]; - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - aMinSize = ((ToolBox *)pWindow)->CalcMinimumWindowSizePixel(); - } - - if (( aMinSize.Width() > 0 ) && ( aMinSize.Height() > 0 )) - { - if (( nDockingArea == DockingArea_DOCKINGAREA_TOP ) || - ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - sal_Int32 nMaxReducation = ( rWinRect.Width - aMinSize.Width() ); - if ( nMaxReducation >= -nDiff ) - { - rWinRect.Width = rWinRect.Width + nDiff; - nDiff = 0; - } - else - { - rWinRect.Width = aMinSize.Width(); - nDiff += nMaxReducation; - } - - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].X += nDiff; - } - else - { - sal_Int32 nMaxReducation = ( rWinRect.Height - aMinSize.Height() ); - if ( nMaxReducation >= -nDiff ) - { - rWinRect.Height = rWinRect.Height + nDiff; - nDiff = 0; - } - else - { - rWinRect.Height = aMinSize.Height(); - nDiff += nMaxReducation; - } - - // Try to move this and all user elements behind with the calculated difference - for ( sal_uInt32 j = i; j < nCount; j++ ) - rRowColumnWindowData.aRowColumnWindowSizes[j].Y += nDiff; - } - } - - if ( nDiff >= 0 ) - break; - - --i; - } - } - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - ReadGuard aReadLock( m_aLock ); - Window* pDockAreaWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[nDockingArea] ); - aReadLock.unlock(); - - sal_Int32 nCurrPos( 0 ); - sal_Int32 nStartOffset( 0 ); - - if ( nDockingArea == DockingArea_DOCKINGAREA_RIGHT ) - nStartOffset = pDockAreaWindow->GetSizePixel().Width() - rRowColumnWindowData.nStaticSize; - else if ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM ) - nStartOffset = pDockAreaWindow->GetSizePixel().Height() - rRowColumnWindowData.nStaticSize; - - vos::OGuard aGuard( Application::GetSolarMutex() ); - for ( sal_uInt32 i = 0; i < nCount; i++ ) - { - Reference< css::awt::XWindow > xWindow = rRowColumnWindowData.aRowColumnWindows[i]; - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - Window* pOldParentWindow = pWindow->GetParent(); - - if ( pDockAreaWindow != pOldParentWindow ) - pWindow->SetParent( pDockAreaWindow ); - - css::awt::Rectangle aWinRect = rRowColumnWindowData.aRowColumnWindowSizes[i]; - if ( nDockingArea == DockingArea_DOCKINGAREA_TOP ) - { - if ( aWinRect.X < nCurrPos ) - aWinRect.X = nCurrPos; - pWindow->SetPosSizePixel( ::Point( aWinRect.X, nOffset ), - ::Size( aWinRect.Width, rRowColumnWindowData.nStaticSize )); - nCurrPos += ( aWinRect.X - nCurrPos ) + aWinRect.Width; - } - else if ( nDockingArea == DockingArea_DOCKINGAREA_BOTTOM ) - { - if ( aWinRect.X < nCurrPos ) - aWinRect.X = nCurrPos; - pWindow->SetPosSizePixel( ::Point( aWinRect.X, nStartOffset - nOffset ), - ::Size( aWinRect.Width, rRowColumnWindowData.nStaticSize )); - nCurrPos += ( aWinRect.X - nCurrPos ) + aWinRect.Width; - } - else if ( nDockingArea == DockingArea_DOCKINGAREA_LEFT ) - { - if ( aWinRect.Y < nCurrPos ) - aWinRect.Y = nCurrPos; - pWindow->SetPosSizePixel( ::Point( nOffset, aWinRect.Y ), - ::Size( rRowColumnWindowData.nStaticSize, aWinRect.Height )); - nCurrPos += ( aWinRect.Y - nCurrPos ) + aWinRect.Height; - } - else if ( nDockingArea == DockingArea_DOCKINGAREA_RIGHT ) - { - if ( aWinRect.Y < nCurrPos ) - aWinRect.Y = nCurrPos; - pWindow->SetPosSizePixel( ::Point( nStartOffset - nOffset, aWinRect.Y ), - ::Size( rRowColumnWindowData.nStaticSize, aWinRect.Height )); - nCurrPos += ( aWinRect.Y - nCurrPos ) + aWinRect.Height; - } - } -} - ::Size LayoutManager::implts_getStatusBarSize() { ReadGuard aReadLock( m_aLock ); - sal_Bool bStatusBarVisible( isElementVisible( m_aStatusBarAlias )); - sal_Bool bProgressBarVisible( isElementVisible( m_aProgressBarAlias )); - sal_Bool bVisible = m_bVisible; - Reference< XUIElement > xStatusBar = m_aStatusBarElement.m_xUIElement; - Reference< XUIElement > xProgressBar = m_aProgressBarElement.m_xUIElement; + bool bStatusBarVisible( isElementVisible( m_aStatusBarAlias )); + bool bProgressBarVisible( isElementVisible( m_aProgressBarAlias )); + bool bVisible( m_bVisible ); + Reference< XUIElement > xStatusBar( m_aStatusBarElement.m_xUIElement ); + Reference< XUIElement > xProgressBar( m_aProgressBarElement.m_xUIElement ); - Reference< css::awt::XWindow > xWindow; + Reference< awt::XWindow > xWindow; if ( bStatusBarVisible && bVisible && xStatusBar.is() ) - xWindow = Reference< css::awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); + xWindow = Reference< awt::XWindow >( xStatusBar->getRealInterface(), UNO_QUERY ); else if ( xProgressBar.is() && !xStatusBar.is() && bProgressBarVisible ) { ProgressBarWrapper* pWrapper = (ProgressBarWrapper*)xProgressBar.get(); @@ -5918,194 +2546,40 @@ void LayoutManager::implts_calcWindowPosSizeOnSingleRowColumn( sal_Int32 nDockin if ( xWindow.is() ) { - css::awt::Rectangle aPosSize = xWindow->getPosSize(); + awt::Rectangle aPosSize = xWindow->getPosSize(); return ::Size( aPosSize.Width, aPosSize.Height ); } else return ::Size(); } -css::awt::Rectangle LayoutManager::implts_calcDockingAreaSizes() +awt::Rectangle LayoutManager::implts_calcDockingAreaSizes() { - Reference< css::awt::XWindow > xContainerWindow; - Reference< XDockingAreaAcceptor > xDockingAreaAcceptor; - ReadGuard aReadLock( m_aLock ); - xContainerWindow = m_xContainerWindow; - xDockingAreaAcceptor = m_xDockingAreaAcceptor; - UIElementVector aWindowVector( m_aUIElements ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< XDockingAreaAcceptor > xDockingAreaAcceptor( m_xDockingAreaAcceptor ); aReadLock.unlock(); - css::awt::Rectangle aBorderSpace; + awt::Rectangle aBorderSpace; if ( xDockingAreaAcceptor.is() && xContainerWindow.is() ) - { - sal_Int32 nCurrRowColumn( 0 ); - sal_Int32 nCurrPos( 0 ); - sal_Int32 nCurrDockingArea( DockingArea_DOCKINGAREA_TOP ); - std::vector< sal_Int32 > aRowColumnSizes[DOCKINGAREAS_COUNT]; - UIElementVector::const_iterator pConstIter; - - aRowColumnSizes[nCurrDockingArea].clear(); - aRowColumnSizes[nCurrDockingArea].push_back( 0 ); - - for ( pConstIter = aWindowVector.begin(); pConstIter != aWindowVector.end(); pConstIter++ ) - { - Reference< XUIElement > xUIElement( pConstIter->m_xUIElement, UNO_QUERY ); - if ( xUIElement.is() ) - { - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xWindow.is() && xDockWindow.is() ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->IsVisible() && !xDockWindow->isFloating() ) - { - css::awt::Rectangle aPosSize = xWindow->getPosSize(); - if ( pConstIter->m_aDockedData.m_nDockedArea != nCurrDockingArea ) - { - nCurrDockingArea = pConstIter->m_aDockedData.m_nDockedArea; - nCurrRowColumn = 0; - nCurrPos = 0; - aRowColumnSizes[nCurrDockingArea].clear(); - aRowColumnSizes[nCurrDockingArea].push_back( 0 ); - } - - if ( pConstIter->m_aDockedData.m_nDockedArea == nCurrDockingArea ) - { - if (( pConstIter->m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_TOP ) || - ( pConstIter->m_aDockedData.m_nDockedArea == DockingArea_DOCKINGAREA_BOTTOM )) - { - if ( pConstIter->m_aDockedData.m_aPos.Y() > nCurrPos ) - { - ++nCurrRowColumn; - nCurrPos = pConstIter->m_aDockedData.m_aPos.Y(); - aRowColumnSizes[nCurrDockingArea].push_back( 0 ); - } - - if ( aPosSize.Height > aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] ) - aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] = aPosSize.Height; - } - else - { - if ( pConstIter->m_aDockedData.m_aPos.X() > nCurrPos ) - { - ++nCurrRowColumn; - nCurrPos = pConstIter->m_aDockedData.m_aPos.X(); - aRowColumnSizes[nCurrDockingArea].push_back( 0 ); - } - - if ( aPosSize.Width > aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] ) - aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] = aPosSize.Width; - } - } - } - } - } - } - - // Sum up max heights from every row/column - if ( !aWindowVector.empty() ) - { - for ( sal_Int32 i = 0; i <= DockingArea_DOCKINGAREA_RIGHT; i++ ) - { - sal_Int32 nSize( 0 ); - const sal_uInt32 nCount = aRowColumnSizes[i].size(); - for ( sal_uInt32 j = 0; j < nCount; j++ ) - nSize += aRowColumnSizes[i][j]; - - if ( i == DockingArea_DOCKINGAREA_TOP ) - aBorderSpace.Y = nSize; - else if ( i == DockingArea_DOCKINGAREA_BOTTOM ) - aBorderSpace.Height = nSize; - else if ( i == DockingArea_DOCKINGAREA_LEFT ) - aBorderSpace.X = nSize; - else - aBorderSpace.Width = nSize; - } - } - - // We have to add the height of a possible status bar - aBorderSpace.Height += implts_getStatusBarSize().Height(); - } + aBorderSpace = m_pToolbarManager->getDockingArea(); return aBorderSpace; } -void LayoutManager::implts_setDockingAreaWindowSizes( const css::awt::Rectangle& rBorderSpace ) +void LayoutManager::implts_setDockingAreaWindowSizes( const awt::Rectangle& /*rBorderSpace*/ ) { - Reference< css::awt::XWindow > xContainerWindow; - ReadGuard aReadLock( m_aLock ); - xContainerWindow = m_xContainerWindow; + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); aReadLock.unlock(); - css::uno::Reference< css::awt::XDevice > xDevice( xContainerWindow, css::uno::UNO_QUERY ); + uno::Reference< awt::XDevice > xDevice( xContainerWindow, uno::UNO_QUERY ); // Convert relativ size to output size. - css::awt::Rectangle aRectangle = xContainerWindow->getPosSize(); - css::awt::DeviceInfo aInfo = xDevice->getInfo(); - css::awt::Size aContainerClientSize = css::awt::Size( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , - aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); - ::Size aStatusBarSize = implts_getStatusBarSize(); - - sal_Int32 nLeftRightDockingAreaHeight( aContainerClientSize.Height ); - if ( rBorderSpace.Y >= 0 ) - { - // Top docking area window - aReadLock.lock(); - Reference< css::awt::XWindow > xDockAreaWindow( m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP] ); - aReadLock.unlock(); - - xDockAreaWindow->setPosSize( 0, 0, aContainerClientSize.Width, rBorderSpace.Y, css::awt::PosSize::POSSIZE ); - xDockAreaWindow->setVisible( sal_True ); - nLeftRightDockingAreaHeight -= rBorderSpace.Y; - } - - if ( rBorderSpace.Height >= 0 ) - { - // Bottom docking area window - sal_Int32 nBottomPos = std::max( sal_Int32( aContainerClientSize.Height - rBorderSpace.Height - aStatusBarSize.Height() ), sal_Int32( 0 )); - sal_Int32 nHeight = ( nBottomPos == 0 ) ? 0 : rBorderSpace.Height; - - aReadLock.lock(); - Reference< css::awt::XWindow > xDockAreaWindow( m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM] ); - aReadLock.unlock(); - - xDockAreaWindow->setPosSize( 0, nBottomPos, aContainerClientSize.Width, nHeight, css::awt::PosSize::POSSIZE ); - xDockAreaWindow->setVisible( sal_True ); - nLeftRightDockingAreaHeight -= nHeight; - } - - nLeftRightDockingAreaHeight -= aStatusBarSize.Height(); - if ( rBorderSpace.X >= 0 || nLeftRightDockingAreaHeight > 0 ) - { - // Left docking area window - aReadLock.lock(); - Reference< css::awt::XWindow > xDockAreaWindow( m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT] ); - aReadLock.unlock(); - - // We also have to change our right docking area window if the top or bottom area has changed. They have a higher priority! - sal_Int32 nHeight = std::max( sal_Int32( 0 ), sal_Int32( nLeftRightDockingAreaHeight )); - - xDockAreaWindow->setPosSize( 0, rBorderSpace.Y, rBorderSpace.X, nHeight, css::awt::PosSize::POSSIZE ); - xDockAreaWindow->setVisible( sal_True ); - } - if ( rBorderSpace.Width >= 0 || nLeftRightDockingAreaHeight > 0 ) - { - // Right docking area window - aReadLock.lock(); - Reference< css::awt::XWindow > xDockAreaWindow( m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT] ); - aReadLock.unlock(); - - // We also have to change our right docking area window if the top or bottom area has changed. They have a higher priority! - sal_Int32 nLeftPos = std::max( sal_Int32( 0 ), sal_Int32( aContainerClientSize.Width - rBorderSpace.Width )); - sal_Int32 nHeight = std::max( sal_Int32( 0 ), sal_Int32( nLeftRightDockingAreaHeight )); - sal_Int32 nWidth = ( nLeftPos == 0 ) ? 0 : rBorderSpace.Width; - - xDockAreaWindow->setPosSize( nLeftPos, rBorderSpace.Y, nWidth, nHeight, css::awt::PosSize::POSSIZE ); - xDockAreaWindow->setVisible( sal_True ); - } + awt::Rectangle aRectangle = xContainerWindow->getPosSize(); + awt::DeviceInfo aInfo = xDevice->getInfo(); + awt::Size aContainerClientSize = awt::Size( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset, + aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + ::Size aStatusBarSize = implts_getStatusBarSize(); // Position the status bar if ( aStatusBarSize.Height() > 0 ) @@ -6116,41 +2590,28 @@ void LayoutManager::implts_setDockingAreaWindowSizes( const css::awt::Rectangle& } //--------------------------------------------------------------------------------------------------------- -// XMenuCloser +// XMenuCloser //--------------------------------------------------------------------------------------------------------- void LayoutManager::implts_updateMenuBarClose() { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); - sal_Bool bShowCloser = m_bMenuBarCloser; - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); + bool bShowCloser( m_bMenuBarCloser ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); aWriteLock.unlock(); if ( xContainerWindow.is() ) { - vos::OGuard aGuard( Application::GetSolarMutex() ); - - Window* pWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); + vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pWindow ) + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow ) { - SystemWindow* pSysWindow = (SystemWindow *)pWindow; MenuBar* pMenuBar = pSysWindow->GetMenuBar(); if ( pMenuBar ) { // TODO remove link on FALSE ?! - if ( bShowCloser ) - { - pMenuBar->ShowCloser( TRUE ); - pMenuBar->SetCloserHdl( LINK( this, LayoutManager, MenuBarClose )); - } - else - { - pMenuBar->ShowCloser( FALSE ); - pMenuBar->SetCloserHdl( LINK( this, LayoutManager, MenuBarClose )); - } + pMenuBar->ShowCloser( bShowCloser ); + pMenuBar->SetCloserHdl( LINK( this, LayoutManager, MenuBarClose )); } } } @@ -6161,14 +2622,14 @@ sal_Bool LayoutManager::implts_resetMenuBar() /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); sal_Bool bMenuVisible( m_bMenuVisible ); - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); MenuBar* pSetMenuBar = 0; if ( m_xInplaceMenuBar.is() ) pSetMenuBar = (MenuBar *)m_pInplaceMenuBar->GetMenuBar(); else { - MenuBarWrapper* pMenuBarWrapper = SAL_STATIC_CAST( MenuBarWrapper*, m_xMenuBar.get() ); + MenuBarWrapper* pMenuBarWrapper = static_cast< MenuBarWrapper* >( m_xMenuBar.get() ); if ( pMenuBarWrapper ) pSetMenuBar = (MenuBar *)pMenuBarWrapper->GetMenuBarManager()->GetMenuBar(); } @@ -6176,13 +2637,10 @@ sal_Bool LayoutManager::implts_resetMenuBar() /* SAFE AREA ----------------------------------------------------------------------------------------------- */ vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); - - if ( pWindow && bMenuVisible && pSetMenuBar ) + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow && bMenuVisible && pSetMenuBar ) { - ((SystemWindow *)pWindow)->SetMenuBar( pSetMenuBar ); + pSysWindow->SetMenuBar( pSetMenuBar ); pSetMenuBar->SetDisplayable( sal_True ); return sal_True; } @@ -6190,726 +2648,62 @@ sal_Bool LayoutManager::implts_resetMenuBar() return sal_False; } -sal_Int16 LayoutManager::implts_getCurrentSymbolsSize() -{ - sal_Int16 eOptSymbolsSize( 0 ); - - { - ReadGuard aReadLock( m_aLock ); - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( m_pMiscOptions ) - eOptSymbolsSize = m_pMiscOptions->GetCurrentSymbolsSize(); - } - - return eOptSymbolsSize; -} - -sal_Int16 LayoutManager::implts_getCurrentSymbolsStyle() +void LayoutManager::implts_setMenuBarCloser(sal_Bool bCloserState) { - sal_Int16 eOptSymbolsStyle( 0 ); - - { - ReadGuard aReadLock( m_aLock ); - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( m_pMiscOptions ) - eOptSymbolsStyle = m_pMiscOptions->GetCurrentSymbolsStyle(); - } + WriteGuard aWriteLock( m_aLock ); + m_bMenuBarCloser = bCloserState; + aWriteLock.unlock(); - return eOptSymbolsStyle; + implts_updateMenuBarClose(); } IMPL_LINK( LayoutManager, MenuBarClose, MenuBar *, EMPTYARG ) { ReadGuard aReadLock( m_aLock ); - css::uno::Reference< css::frame::XDispatchProvider > xProvider(m_xFrame, css::uno::UNO_QUERY); - css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = m_xSMGR; + uno::Reference< frame::XDispatchProvider > xProvider(m_xFrame, uno::UNO_QUERY); + uno::Reference< lang::XMultiServiceFactory > xSMGR = m_xSMGR; aReadLock.unlock(); - if (! xProvider.is()) + if ( !xProvider.is()) return 0; - css::uno::Reference< css::frame::XDispatchHelper > xDispatcher( - xSMGR->createInstance(SERVICENAME_DISPATCHHELPER), css::uno::UNO_QUERY_THROW); + uno::Reference< frame::XDispatchHelper > xDispatcher( + xSMGR->createInstance(SERVICENAME_DISPATCHHELPER), uno::UNO_QUERY_THROW); xDispatcher->executeDispatch( xProvider, ::rtl::OUString::createFromAscii(".uno:CloseWin"), ::rtl::OUString::createFromAscii("_self"), 0, - css::uno::Sequence< css::beans::PropertyValue >()); + uno::Sequence< beans::PropertyValue >()); return 0; } -IMPL_LINK( LayoutManager, OptionsChanged, void*, EMPTYARG ) -{ - sal_Int16 eSymbolsSize( implts_getCurrentSymbolsSize() ); - sal_Int16 eSymbolsStyle( implts_getCurrentSymbolsStyle() ); - - ReadGuard aReadLock( m_aLock ); - sal_Int16 eOldSymbolsSize = m_eSymbolsSize; - sal_Int16 eOldSymbolsStyle = m_eSymbolsStyle; - aReadLock.unlock(); - - if ( eSymbolsSize != eOldSymbolsSize || eSymbolsStyle != eOldSymbolsStyle ) - { - WriteGuard aWriteLock( m_aLock ); - m_eSymbolsSize = eSymbolsSize; - m_eSymbolsStyle = eSymbolsStyle; - aWriteLock.unlock(); - - std::vector< Reference< XUpdatable > > aToolBarVector; - - aReadLock.lock(); - { - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - if ( pIter->m_xUIElement.is() ) - aToolBarVector.push_back( Reference< XUpdatable >( pIter->m_xUIElement, UNO_QUERY )); - } - } - aReadLock.unlock(); - - lock(); - { - std::vector< Reference< XUpdatable > >::iterator pIter; - for ( pIter = aToolBarVector.begin(); pIter != aToolBarVector.end(); pIter++ ) - { - if ( (*pIter).is() ) - (*pIter)->update(); - } - } - unlock(); - doLayout(); - } - - return 1; -} - IMPL_LINK( LayoutManager, SettingsChanged, void*, EMPTYARG ) { return 1; } //--------------------------------------------------------------------------------------------------------- -// XDockableWindowListener -//--------------------------------------------------------------------------------------------------------- -void SAL_CALL LayoutManager::startDocking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException) -{ - sal_Bool bWinFound( sal_False ); - UIElement aUIElement; - - ReadGuard aReadGuard( m_aLock ); - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); - Reference< css::awt::XWindow2 > xWindow( e.Source, UNO_QUERY ); - aReadGuard.unlock(); - - Window* pContainerWindow( 0 ); - Window* pWindow( 0 ); - ::Point aMousePos; - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); - aMousePos = pContainerWindow->ScreenToOutputPixel( ::Point( e.MousePos.X, e.MousePos.Y )); - } - - bWinFound = implts_findElement( e.Source, aUIElement ); - - if ( bWinFound && xWindow.is() ) - { - css::awt::Rectangle aRect; - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow->isFloating() ) - { - css::awt::Rectangle aPos = xWindow->getPosSize(); - css::awt::Size aSize = xWindow->getOutputSize(); - - aUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); - aUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); - - vos::OGuard aGuard( Application::GetSolarMutex() ); - pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - { - ToolBox* pToolBox = (ToolBox *)pWindow; - aUIElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); - aUIElement.m_aFloatingData.m_bIsHorizontal = (( pToolBox->GetAlign() == WINDOWALIGN_TOP ) || - ( pToolBox->GetAlign() == WINDOWALIGN_BOTTOM )); - } - } - } - - WriteGuard aWriteLock( m_aLock ); - m_bDockingInProgress = bWinFound; - m_aDockUIElement = aUIElement; - m_aDockUIElement.m_bUserActive = sal_True; - m_aStartDockMousePos = aMousePos; - aWriteLock.unlock(); -} - -::Rectangle LayoutManager::implts_calcHotZoneRect( const ::Rectangle& rRect, sal_Int32 nHotZoneOffset ) -{ - ::Rectangle aRect( rRect ); - - aRect.Left() -= nHotZoneOffset; - aRect.Top() -= nHotZoneOffset; - aRect.Right() += nHotZoneOffset; - aRect.Bottom() += nHotZoneOffset; - return aRect; -} - -css::awt::DockingData SAL_CALL LayoutManager::docking( const ::com::sun::star::awt::DockingEvent& e ) -throw (::com::sun::star::uno::RuntimeException) -{ - const sal_Int32 MAGNETIC_DISTANCE_UNDOCK = 25; - const sal_Int32 MAGNETIC_DISTANCE_DOCK = 20; - - css::awt::DockingData aDockingData; - Reference< css::awt::XDockableWindow > xDockWindow( e.Source, UNO_QUERY ); - Reference< css::awt::XWindow > xWindow( e.Source, UNO_QUERY ); - Reference< css::awt::XWindow > xTopDockingWindow; - Reference< css::awt::XWindow > xLeftDockingWindow; - Reference< css::awt::XWindow > xRightDockingWindow; - Reference< css::awt::XWindow > xBottomDockingWindow; - Reference< css::awt::XWindow > xContainerWindow; - UIElement aUIDockingElement; - DockingOperation eDockingOperation( DOCKOP_ON_COLROW ); - ::Size aStatusBarSize; - - aDockingData.TrackingRectangle = e.TrackingRectangle; - sal_Bool bDockingInProgress; - - { - ReadGuard aReadLock( m_aLock ); - bDockingInProgress = m_bDockingInProgress; - if ( bDockingInProgress ) - { - xContainerWindow = m_xContainerWindow; - xTopDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_TOP]; - xLeftDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_LEFT]; - xRightDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_RIGHT]; - xBottomDockingWindow = m_xDockAreaWindows[DockingArea_DOCKINGAREA_BOTTOM]; - aUIDockingElement = m_aDockUIElement; - aStatusBarSize = implts_getStatusBarSize(); - } - } - - if ( bDockingInProgress && - xDockWindow.is() && - xWindow.is() ) - { - try - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - - sal_Int16 eDockingArea( -1 ); // none - sal_Int32 nMagneticZone( aUIDockingElement.m_bFloating ? MAGNETIC_DISTANCE_DOCK : MAGNETIC_DISTANCE_UNDOCK ); - css::awt::Rectangle aNewTrackingRect; - ::Rectangle aTrackingRect( e.TrackingRectangle.X, - e.TrackingRectangle.Y, - ( e.TrackingRectangle.X + e.TrackingRectangle.Width ), - ( e.TrackingRectangle.Y + e.TrackingRectangle.Height )); - - css::awt::Rectangle aTmpRect = xTopDockingWindow->getPosSize(); - ::Rectangle aTopDockRect( aTmpRect.X, aTmpRect.Y, aTmpRect.Width, aTmpRect.Height ); - ::Rectangle aHotZoneTopDockRect( implts_calcHotZoneRect( aTopDockRect, nMagneticZone )); - - aTmpRect = xBottomDockingWindow->getPosSize(); - ::Rectangle aBottomDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width), ( aTmpRect.Y + aTmpRect.Height )); - ::Rectangle aHotZoneBottomDockRect( implts_calcHotZoneRect( aBottomDockRect, nMagneticZone )); - - aTmpRect = xLeftDockingWindow->getPosSize(); - ::Rectangle aLeftDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width ), ( aTmpRect.Y + aTmpRect.Height )); - ::Rectangle aHotZoneLeftDockRect( implts_calcHotZoneRect( aLeftDockRect, nMagneticZone )); - - aTmpRect = xRightDockingWindow->getPosSize(); - ::Rectangle aRightDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width ), ( aTmpRect.Y + aTmpRect.Height )); - ::Rectangle aHotZoneRightDockRect( implts_calcHotZoneRect( aRightDockRect, nMagneticZone )); - - Window* pContainerWindow( VCLUnoHelper::GetWindow( xContainerWindow ) ); - Window* pDockingAreaWindow( 0 ); - ::Point aMousePos( pContainerWindow->ScreenToOutputPixel( ::Point( e.MousePos.X, e.MousePos.Y ))); - - if ( aHotZoneTopDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_TOP; - else if ( aHotZoneBottomDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_BOTTOM; - else if ( aHotZoneLeftDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_LEFT; - else if ( aHotZoneRightDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_RIGHT; - - // Higher priority for movements inside the real docking area - if ( aTopDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_TOP; - else if ( aBottomDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_BOTTOM; - else if ( aLeftDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_LEFT; - else if ( aRightDockRect.IsInside( aMousePos )) - eDockingArea = DockingArea_DOCKINGAREA_RIGHT; - - // Determine if we have a toolbar and set alignment according to the docking area! - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - ToolBox* pToolBox = 0; - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - pToolBox = (ToolBox *)pWindow; - - if ( eDockingArea != -1 ) - { - if ( eDockingArea == DockingArea_DOCKINGAREA_TOP ) - { - aUIDockingElement.m_aDockedData.m_nDockedArea = DockingArea_DOCKINGAREA_TOP; - aUIDockingElement.m_bFloating = sal_False; - pDockingAreaWindow = VCLUnoHelper::GetWindow( xTopDockingWindow ); - } - else if ( eDockingArea == DockingArea_DOCKINGAREA_BOTTOM ) - { - aUIDockingElement.m_aDockedData.m_nDockedArea = DockingArea_DOCKINGAREA_BOTTOM; - aUIDockingElement.m_bFloating = sal_False; - pDockingAreaWindow = VCLUnoHelper::GetWindow( xBottomDockingWindow ); - } - else if ( eDockingArea == DockingArea_DOCKINGAREA_LEFT ) - { - aUIDockingElement.m_aDockedData.m_nDockedArea = DockingArea_DOCKINGAREA_LEFT; - aUIDockingElement.m_bFloating = sal_False; - pDockingAreaWindow = VCLUnoHelper::GetWindow( xLeftDockingWindow ); - } - else if ( eDockingArea == DockingArea_DOCKINGAREA_RIGHT ) - { - aUIDockingElement.m_aDockedData.m_nDockedArea = DockingArea_DOCKINGAREA_RIGHT; - aUIDockingElement.m_bFloating = sal_False; - pDockingAreaWindow = VCLUnoHelper::GetWindow( xRightDockingWindow ); - } - - ::Point aOutputPos = pContainerWindow->ScreenToOutputPixel( aTrackingRect.TopLeft() ); - aTrackingRect.SetPos( aOutputPos ); - - ::Rectangle aNewDockingRect( aTrackingRect ); - implts_calcDockingPosSize( aUIDockingElement, eDockingOperation, aNewDockingRect, aMousePos ); - - ::Point aScreenPos = pContainerWindow->OutputToScreenPixel( aNewDockingRect.TopLeft() ); - aNewTrackingRect = css::awt::Rectangle( aScreenPos.X(), - aScreenPos.Y(), - aNewDockingRect.getWidth(), - aNewDockingRect.getHeight() ); - aDockingData.TrackingRectangle = aNewTrackingRect; - } - else if ( pToolBox && bDockingInProgress ) - { - sal_Bool bIsHorizontal = (( pToolBox->GetAlign() == WINDOWALIGN_TOP ) || - ( pToolBox->GetAlign() == WINDOWALIGN_BOTTOM )); - ::Size aFloatSize = aUIDockingElement.m_aFloatingData.m_aSize; - if ( aFloatSize.Width() > 0 && aFloatSize.Height() > 0 ) - { - aUIDockingElement.m_aFloatingData.m_aPos = pContainerWindow->ScreenToOutputPixel( - ::Point( e.MousePos.X, e.MousePos.Y )); - aDockingData.TrackingRectangle.Height = aFloatSize.Height(); - aDockingData.TrackingRectangle.Width = aFloatSize.Width(); - } - else - { - aFloatSize = pToolBox->CalcWindowSizePixel(); - if ( !bIsHorizontal ) - { - // Floating toolbars are always horizontal aligned! We have to swap - // width/height if we have a vertical aligned toolbar. - sal_Int32 nTemp = aFloatSize.Height(); - aFloatSize.Height() = aFloatSize.Width(); - aFloatSize.Width() = nTemp; - } - - aDockingData.TrackingRectangle.Height = aFloatSize.Height(); - aDockingData.TrackingRectangle.Width = aFloatSize.Width(); - - // For the first time we don't have any data about the floating size of a toolbar. - // We calculate it and store it for later use. - aUIDockingElement.m_aFloatingData.m_aPos = pContainerWindow->ScreenToOutputPixel( - ::Point( e.MousePos.X, e.MousePos.Y )); - aUIDockingElement.m_aFloatingData.m_aSize = aFloatSize; - aUIDockingElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); - aUIDockingElement.m_aFloatingData.m_bIsHorizontal = (( pToolBox->GetAlign() == WINDOWALIGN_TOP ) || - ( pToolBox->GetAlign() == WINDOWALIGN_BOTTOM )); - } - aDockingData.TrackingRectangle.X = e.MousePos.X; - aDockingData.TrackingRectangle.Y = e.MousePos.Y; - } - - aDockingData.bFloating = ( eDockingArea == -1 ); - - // Write current data to the member docking progress data - WriteGuard aWriteLock( m_aLock ); - m_aDockUIElement.m_bFloating = aDockingData.bFloating; - if ( !aDockingData.bFloating ) - { - m_aDockUIElement.m_aDockedData = aUIDockingElement.m_aDockedData; - m_eDockOperation = eDockingOperation; - } - else - m_aDockUIElement.m_aFloatingData = aUIDockingElement.m_aFloatingData; - aWriteLock.unlock(); - } - catch ( Exception& ) - { - } - } - - return aDockingData; -} - -void SAL_CALL LayoutManager::endDocking( const ::com::sun::star::awt::EndDockingEvent& e ) -throw (::com::sun::star::uno::RuntimeException) -{ - sal_Bool bDockingInProgress( sal_False ); - sal_Bool bStartDockFloated( sal_False ); - sal_Bool bFloating( sal_False ); - UIElement aUIDockingElement; - - WriteGuard aWriteLock( m_aLock ); - bDockingInProgress = m_bDockingInProgress; - aUIDockingElement = m_aDockUIElement; - bFloating = aUIDockingElement.m_bFloating; - - UIElement& rUIElement = impl_findElement( aUIDockingElement.m_aName ); - if ( rUIElement.m_aName == aUIDockingElement.m_aName ) - { - if ( aUIDockingElement.m_bFloating ) - { - // Write last position into position data - Reference< css::awt::XWindow > xWindow( aUIDockingElement.m_xUIElement->getRealInterface(), UNO_QUERY ); - rUIElement.m_aFloatingData = aUIDockingElement.m_aFloatingData; - css::awt::Rectangle aTmpRect = xWindow->getPosSize(); - rUIElement.m_aFloatingData.m_aPos = ::Point( aTmpRect.X, aTmpRect.Y ); - // make changes also for our local data as we use it to make data persistent - aUIDockingElement.m_aFloatingData = rUIElement.m_aFloatingData; - } - else - { - rUIElement.m_aDockedData = aUIDockingElement.m_aDockedData; - rUIElement.m_aFloatingData.m_aSize = aUIDockingElement.m_aFloatingData.m_aSize; - - if ( m_eDockOperation != DOCKOP_ON_COLROW ) - { - // we have to renumber our row/column data to insert a new row/column - implts_renumberRowColumnData( (::com::sun::star::ui::DockingArea)aUIDockingElement.m_aDockedData.m_nDockedArea, - m_eDockOperation, - aUIDockingElement ); - } - } - - bStartDockFloated = rUIElement.m_bFloating; - rUIElement.m_bFloating = m_aDockUIElement.m_bFloating; - rUIElement.m_bUserActive = sal_True; - } - - // reset member for next docking operation - m_aDockUIElement.m_xUIElement.clear(); - m_eDockOperation = DOCKOP_ON_COLROW; - aWriteLock.unlock(); - - implts_writeWindowStateData( aUIDockingElement.m_aName, aUIDockingElement ); - - if ( bDockingInProgress ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( Reference< css::awt::XWindow >( e.Source, UNO_QUERY )); - ToolBox* pToolBox = 0; - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - pToolBox = (ToolBox *)pWindow; - - if ( pToolBox ) - { - if( e.bFloating ) - { - if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) - pToolBox->SetAlign( WINDOWALIGN_TOP ); - else - pToolBox->SetAlign( WINDOWALIGN_LEFT ); - } - else - { - ::Size aSize; - - pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); - - // Docked toolbars have always one line - aSize = pToolBox->CalcWindowSizePixel( 1 ); - - // Lock layouting updates as our listener would be called due to SetSizePixel - pToolBox->SetOutputSizePixel( aSize ); - } - } - } - - aWriteLock.lock(); - m_bDockingInProgress = sal_False; - aWriteLock.unlock(); - - implts_sortUIElements(); - if ( !bStartDockFloated || !bFloating ) - { - // Optimization: Don't layout if we started floating and now floating again. - // This would not change anything for the docked user-interface elements. - doLayout(); - } -} - -sal_Bool SAL_CALL LayoutManager::prepareToggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) -throw (::com::sun::star::uno::RuntimeException) -{ - sal_Bool bDockingInProgress( sal_False ); - - ReadGuard aReadLock( m_aLock ); - bDockingInProgress = m_bDockingInProgress; - aReadLock.unlock(); - - UIElement aUIDockingElement; - sal_Bool bWinFound( implts_findElement( e.Source, aUIDockingElement ) ); - Reference< css::awt::XWindow > xWindow( e.Source, UNO_QUERY ); - - if ( bWinFound && xWindow.is() ) - { - if ( !bDockingInProgress ) - { - css::awt::Rectangle aRect; - Reference< css::awt::XDockableWindow > xDockWindow( xWindow, UNO_QUERY ); - if ( xDockWindow->isFloating() ) - { - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - { - if ( pWindow->GetType() == WINDOW_TOOLBOX ) - { - ToolBox* pToolBox = (ToolBox *)pWindow; - aUIDockingElement.m_aFloatingData.m_aPos = pToolBox->GetPosPixel(); - aUIDockingElement.m_aFloatingData.m_aSize = pToolBox->GetOutputSizePixel(); - aUIDockingElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); - aUIDockingElement.m_aFloatingData.m_bIsHorizontal = (( pToolBox->GetAlign() == WINDOWALIGN_TOP ) || - ( pToolBox->GetAlign() == WINDOWALIGN_BOTTOM )); - } - } - } - - WriteGuard aWriteLock( m_aLock ); - UIElement& rUIElement = LayoutManager::impl_findElement( aUIDockingElement.m_aName ); - if ( rUIElement.m_aName == aUIDockingElement.m_aName ) - rUIElement = aUIDockingElement; - aWriteLock.unlock(); - } - } - } - - return sal_True; -} - -void SAL_CALL LayoutManager::toggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) -throw (::com::sun::star::uno::RuntimeException) -{ - sal_Bool bDockingInProgress( sal_False ); - UIElement aUIDockingElement; - - ReadGuard aReadLock( m_aLock ); - bDockingInProgress = m_bDockingInProgress; - if ( bDockingInProgress ) - aUIDockingElement = m_aDockUIElement; - aReadLock.unlock(); - - Window* pWindow( 0 ); - ToolBox* pToolBox( 0 ); - Reference< css::awt::XWindow2 > xWindow; - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - xWindow = Reference< css::awt::XWindow2 >( e.Source, UNO_QUERY ); - pWindow = VCLUnoHelper::GetWindow( xWindow ); - - if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) - pToolBox = (ToolBox *)pWindow; - } - - if ( !bDockingInProgress ) - { - sal_Bool bWinFound( implts_findElement( e.Source, aUIDockingElement ) ); - if ( bWinFound && xWindow.is() ) - { - aUIDockingElement.m_bFloating = !aUIDockingElement.m_bFloating; - aUIDockingElement.m_bUserActive = sal_True; - - WriteGuard aWriteLock( m_aLock ); - m_bDoLayout = sal_True; - aWriteLock.unlock(); - - if ( aUIDockingElement.m_bFloating ) - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pToolBox ) - { - pToolBox->SetLineCount( aUIDockingElement.m_aFloatingData.m_nLines ); - if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) - pToolBox->SetAlign( WINDOWALIGN_TOP ); - else - pToolBox->SetAlign( WINDOWALIGN_LEFT ); - } - - sal_Bool bUndefPos = ( aUIDockingElement.m_aFloatingData.m_aPos.X() == SAL_MAX_INT32 || - aUIDockingElement.m_aFloatingData.m_aPos.Y() == SAL_MAX_INT32 ); - sal_Bool bSetSize = ( aUIDockingElement.m_aFloatingData.m_aSize.Width() != 0 && - aUIDockingElement.m_aFloatingData.m_aSize.Height() != 0 ); - - if ( bUndefPos ) - aUIDockingElement.m_aFloatingData.m_aPos = implts_findNextCascadeFloatingPos(); - - if ( !bSetSize ) - { - if ( pToolBox ) - aUIDockingElement.m_aFloatingData.m_aSize = pToolBox->CalcFloatingWindowSizePixel(); - else - aUIDockingElement.m_aFloatingData.m_aSize = pWindow->GetOutputSizePixel(); - } - - xWindow->setPosSize( aUIDockingElement.m_aFloatingData.m_aPos.X(), - aUIDockingElement.m_aFloatingData.m_aPos.Y(), - 0, 0, css::awt::PosSize::POS ); - xWindow->setOutputSize( AWTSize( aUIDockingElement.m_aFloatingData.m_aSize ) ); - } - else - { - if (( aUIDockingElement.m_aDockedData.m_aPos.X() == SAL_MAX_INT32 ) && - ( aUIDockingElement.m_aDockedData.m_aPos.Y() == SAL_MAX_INT32 )) - { - // Docking on its default position without a preset position - - // we have to find a good place for it. - ::Point aPixelPos; - ::Point aDockPos; - ::Size aSize; - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pToolBox ) - aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea ) ); - else - aSize = pWindow->GetSizePixel(); - } - - implts_findNextDockingPos( (::com::sun::star::ui::DockingArea)aUIDockingElement.m_aDockedData.m_nDockedArea, - aSize, - aDockPos, - aPixelPos ); - aUIDockingElement.m_aDockedData.m_aPos = aDockPos; - } - - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pToolBox ) - { - pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); - ::Size aSize = pToolBox->CalcWindowSizePixel( 1 ); - css::awt::Rectangle aRect = xWindow->getPosSize(); - xWindow->setPosSize( aRect.X, aRect.Y, 0, 0, css::awt::PosSize::POS ); - xWindow->setOutputSize( AWTSize( aSize ) ); - } - } - - aWriteLock.lock(); - m_bDoLayout = sal_False; - UIElement& rUIElement = LayoutManager::impl_findElement( aUIDockingElement.m_aName ); - if ( rUIElement.m_aName == aUIDockingElement.m_aName ) - rUIElement = aUIDockingElement; - aWriteLock.unlock(); - - implts_writeWindowStateData( aUIDockingElement.m_aName, aUIDockingElement ); - - implts_sortUIElements(); - doLayout(); - } - } - else - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - if ( pToolBox ) - { - if ( aUIDockingElement.m_bFloating ) - { - if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) - pToolBox->SetAlign( WINDOWALIGN_TOP ); - else - pToolBox->SetAlign( WINDOWALIGN_LEFT ); - } - else - { - pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); - } - } - } -} - -void SAL_CALL LayoutManager::closed( const ::com::sun::star::lang::EventObject& e ) -throw (::com::sun::star::uno::RuntimeException) -{ - rtl::OUString aName; - UIElement aUIElement; - UIElementVector::iterator pIter; - - WriteGuard aWriteLock( m_aLock ); - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - { - Reference< XUIElement > xUIElement( pIter->m_xUIElement ); - if ( xUIElement.is() ) - { - Reference< XInterface > xIfac( xUIElement->getRealInterface(), UNO_QUERY ); - if ( xIfac == e.Source ) - { - aName = pIter->m_aName; - - // user closes a toolbar => - // context sensitive toolbar: only destroy toolbar and store state. - // context sensitive toolbar: make it invisible, store state and destroy it. - if ( !pIter->m_bContextSensitive ) - pIter->m_bVisible = sal_False; - - aUIElement = *pIter; - break; - } - } - } - aWriteLock.unlock(); - - - // destroy element - if ( aName.getLength() > 0 ) - { - implts_writeWindowStateData( aName, aUIElement ); - destroyElement( aName ); - } -} - -void SAL_CALL LayoutManager::endPopupMode( const ::com::sun::star::awt::EndPopupModeEvent& ) -throw (::com::sun::star::uno::RuntimeException) -{ - -} - -//--------------------------------------------------------------------------------------------------------- // XLayoutManagerEventBroadcaster //--------------------------------------------------------------------------------------------------------- -void SAL_CALL LayoutManager::addLayoutManagerEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManagerListener >& xListener ) -throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL LayoutManager::addLayoutManagerEventListener( const uno::Reference< frame::XLayoutManagerListener >& xListener ) +throw (uno::RuntimeException) { - m_aListenerContainer.addInterface( ::getCppuType( (const css::uno::Reference< css::frame::XLayoutManagerListener >*)NULL ), xListener ); + m_aListenerContainer.addInterface( ::getCppuType( (const uno::Reference< frame::XLayoutManagerListener >*)NULL ), xListener ); } -void SAL_CALL LayoutManager::removeLayoutManagerEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManagerListener >& xListener ) -throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL LayoutManager::removeLayoutManagerEventListener( const uno::Reference< frame::XLayoutManagerListener >& xListener ) +throw (uno::RuntimeException) { - m_aListenerContainer.removeInterface( ::getCppuType( (const css::uno::Reference< css::frame::XLayoutManagerListener >*)NULL ), xListener ); + m_aListenerContainer.removeInterface( ::getCppuType( (const uno::Reference< frame::XLayoutManagerListener >*)NULL ), xListener ); } -void LayoutManager::implts_notifyListeners( short nEvent, ::com::sun::star::uno::Any aInfoParam ) +void LayoutManager::implts_notifyListeners( short nEvent, uno::Any aInfoParam ) { - css::lang::EventObject aSource (static_cast< ::cppu::OWeakObject*>(this)); - ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( ::getCppuType( ( const css::uno::Reference< css::frame::XLayoutManagerListener >*) NULL ) ); + lang::EventObject aSource( static_cast< ::cppu::OWeakObject*>(this) ); + ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( ::getCppuType( ( const uno::Reference< frame::XLayoutManagerListener >*) NULL ) ); if (pContainer!=NULL) { ::cppu::OInterfaceIteratorHelper pIterator(*pContainer); @@ -6917,9 +2711,9 @@ void LayoutManager::implts_notifyListeners( short nEvent, ::com::sun::star::uno: { try { - ((css::frame::XLayoutManagerListener*)pIterator.next())->layoutEvent( aSource, nEvent, aInfoParam ); + ((frame::XLayoutManagerListener*)pIterator.next())->layoutEvent( aSource, nEvent, aInfoParam ); } - catch( css::uno::RuntimeException& ) + catch( uno::RuntimeException& ) { pIterator.remove(); } @@ -6928,10 +2722,10 @@ void LayoutManager::implts_notifyListeners( short nEvent, ::com::sun::star::uno: } //--------------------------------------------------------------------------------------------------------- -// XWindowListener +// XWindowListener //--------------------------------------------------------------------------------------------------------- -void SAL_CALL LayoutManager::windowResized( const css::awt::WindowEvent& aEvent ) -throw( css::uno::RuntimeException ) +void SAL_CALL LayoutManager::windowResized( const awt::WindowEvent& aEvent ) +throw( uno::RuntimeException ) { /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); @@ -6940,9 +2734,9 @@ throw( css::uno::RuntimeException ) return; // Request to set docking area space again. - css::awt::Rectangle aDockingArea( m_aDockingArea ); + awt::Rectangle aDockingArea( m_aDockingArea ); Reference< XDockingAreaAcceptor > xDockingAreaAcceptor( m_xDockingAreaAcceptor ); - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); Reference< XInterface > xIfac( xContainerWindow, UNO_QUERY ); if ( xIfac == aEvent.Source && m_bVisible ) @@ -6964,105 +2758,65 @@ throw( css::uno::RuntimeException ) { // the container window of my DockingAreaAcceptor is not the same as of my frame // I still have to resize my frames' window as nobody else will do it - Reference< css::awt::XWindow > xComponentWindow( m_xFrame->getComponentWindow() ); + Reference< awt::XWindow > xComponentWindow( m_xFrame->getComponentWindow() ); if( xComponentWindow.is() == sal_True ) { - css::uno::Reference< css::awt::XDevice > xDevice( m_xFrame->getContainerWindow(), css::uno::UNO_QUERY ); + uno::Reference< awt::XDevice > xDevice( m_xFrame->getContainerWindow(), uno::UNO_QUERY ); // Convert relativ size to output size. - css::awt::Rectangle aRectangle = m_xFrame->getContainerWindow()->getPosSize(); - css::awt::DeviceInfo aInfo = xDevice->getInfo(); - css::awt::Size aSize ( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , - aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + awt::Rectangle aRectangle = m_xFrame->getContainerWindow()->getPosSize(); + awt::DeviceInfo aInfo = xDevice->getInfo(); + awt::Size aSize( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , + aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); // Resize our component window. - xComponentWindow->setPosSize( 0, 0, aSize.Width, aSize.Height, css::awt::PosSize::POSSIZE ); - } - } - else - { - // resize event for one of the UIElements - sal_Bool bLocked( m_bDockingInProgress ); - sal_Bool bDoLayout( m_bDoLayout ); - aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - - if ( !bLocked && !bDoLayout ) - { - // Do not do anything if we are in the middle of a docking process. This would interfere all other - // operations. We will store the new position and size in the docking handlers. - // Do not do anything if we are in the middle of our layouting process. We will adapt the position - // and size of the user interface elements. - UIElement aUIElement; - if ( implts_findElement( aEvent.Source, aUIElement )) - { - if ( aUIElement.m_bFloating ) - implts_writeNewStateData( aUIElement.m_aName, - Reference< css::awt::XWindow >( aEvent.Source, UNO_QUERY )); - else - doLayout(); - } + xComponentWindow->setPosSize( 0, 0, aSize.Width, aSize.Height, awt::PosSize::POSSIZE ); } } } -void SAL_CALL LayoutManager::windowMoved( const css::awt::WindowEvent& ) throw( css::uno::RuntimeException ) +void SAL_CALL LayoutManager::windowMoved( const awt::WindowEvent& ) throw( uno::RuntimeException ) { } -void SAL_CALL LayoutManager::windowShown( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ) +void SAL_CALL LayoutManager::windowShown( const lang::EventObject& aEvent ) throw( uno::RuntimeException ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); - - // Request to set docking area space again. - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); - bool bParentWindowVisible( m_bParentWindowVisible ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + bool bParentWindowVisible( m_bParentWindowVisible ); aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ Reference< XInterface > xIfac( xContainerWindow, UNO_QUERY ); if ( xIfac == aEvent.Source ) { bool bSetVisible = false; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_bParentWindowVisible = true; bSetVisible = ( m_bParentWindowVisible != bParentWindowVisible ); aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( bSetVisible ) - { implts_updateUIElementsVisibleState( sal_True ); - //implts_doLayout( sal_False ); - } } } -void SAL_CALL LayoutManager::windowHidden( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ) +void SAL_CALL LayoutManager::windowHidden( const lang::EventObject& aEvent ) throw( uno::RuntimeException ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); - - // Request to set docking area space again. - Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow ); - bool bParentWindowVisible( m_bParentWindowVisible ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + bool bParentWindowVisible( m_bParentWindowVisible ); aReadLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ Reference< XInterface > xIfac( xContainerWindow, UNO_QUERY ); if ( xIfac == aEvent.Source ) { bool bSetInvisible = false; - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_bParentWindowVisible = false; bSetInvisible = ( m_bParentWindowVisible != bParentWindowVisible ); aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ if ( bSetInvisible ) implts_updateUIElementsVisibleState( sal_False ); @@ -7071,17 +2825,14 @@ void SAL_CALL LayoutManager::windowHidden( const css::lang::EventObject& aEvent IMPL_LINK( LayoutManager, AsyncLayoutHdl, Timer *, EMPTYARG ) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ ReadGuard aReadLock( m_aLock ); - - // Request to set docking area space again. m_aAsyncLayoutTimer.Stop(); if( !m_xContainerWindow.is() ) return 0; - css::awt::Rectangle aDockingArea( m_aDockingArea ); - ::Size aStatusBarSize( implts_getStatusBarSize() ); + awt::Rectangle aDockingArea( m_aDockingArea ); + ::Size aStatusBarSize( implts_getStatusBarSize() ); // Subtract status bar height aDockingArea.Height -= aStatusBarSize.Height(); @@ -7093,78 +2844,42 @@ IMPL_LINK( LayoutManager, AsyncLayoutHdl, Timer *, EMPTYARG ) return 0; } -#ifdef DBG_UTIL -void LayoutManager::implts_checkElementContainer() -{ -#ifdef DBG_UTIL - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - ReadGuard aReadLock( m_aLock ); - - BaseHash< sal_Int32 > aUIElementHash; - - UIElementVector::iterator pIter; - for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) - aUIElementHash[pIter->m_aName]++; - - - BaseHash< sal_Int32 >::const_iterator pCheckIter = aUIElementHash.begin(); - for ( ; pCheckIter != aUIElementHash.end(); pCheckIter++ ) - { - if ( pCheckIter->second > 1 ) - { - ::rtl::OString aName = ::rtl::OUStringToOString( pCheckIter->first, RTL_TEXTENCODING_ASCII_US ); - DBG_ASSERT( "More than one element (%s) with the same name found!", aName.getStr() ); - } - } // for ( ; pCheckIter != aUIElementHash.end(); pCheckIter++ ) -#endif -} -#endif - //--------------------------------------------------------------------------------------------------------- -// XFrameActionListener +// XFrameActionListener //--------------------------------------------------------------------------------------------------------- void SAL_CALL LayoutManager::frameAction( const FrameActionEvent& aEvent ) throw ( RuntimeException ) { - if (( aEvent.Action == FrameAction_COMPONENT_ATTACHED ) || - ( aEvent.Action == FrameAction_COMPONENT_REATTACHED )) + if (( aEvent.Action == FrameAction_COMPONENT_ATTACHED ) || ( aEvent.Action == FrameAction_COMPONENT_REATTACHED )) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::frameAction (COMPONENT_ATTACHED|REATTACHED)" ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_bComponentAttached = sal_True; m_bMustDoLayout = sal_True; aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ implts_reset( sal_True ); implts_doLayout( sal_True, sal_False ); implts_doLayout( sal_True, sal_True ); } - else if (( aEvent.Action == FrameAction_FRAME_UI_ACTIVATED ) || - ( aEvent.Action == FrameAction_FRAME_UI_DEACTIVATING )) + else if (( aEvent.Action == FrameAction_FRAME_UI_ACTIVATED ) || ( aEvent.Action == FrameAction_FRAME_UI_DEACTIVATING )) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::frameAction (FRAME_UI_ACTIVATED|DEACTIVATING)" ); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ WriteGuard aWriteLock( m_aLock ); m_bActive = ( aEvent.Action == FrameAction_FRAME_UI_ACTIVATED ); aWriteLock.unlock(); - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ implts_toggleFloatingUIElementsVisibility( aEvent.Action == FrameAction_FRAME_UI_ACTIVATED ); -// doLayout(); } else if ( aEvent.Action == FrameAction_COMPONENT_DETACHING ) { RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::LayoutManager::frameAction (COMPONENT_DETACHING)" ); - // SAFE AREA ----------------------------------------------------------------------------------------------- WriteGuard aWriteLock( m_aLock ); m_bComponentAttached = sal_False; aWriteLock.unlock(); - // SAFE AREA ----------------------------------------------------------------------------------------------- implts_reset( sal_False ); } @@ -7172,7 +2887,7 @@ throw ( RuntimeException ) // ______________________________________________ -void SAL_CALL LayoutManager::disposing( const css::lang::EventObject& rEvent ) +void SAL_CALL LayoutManager::disposing( const lang::EventObject& rEvent ) throw( RuntimeException ) { sal_Bool bDisposeAndClear( sal_False ); @@ -7182,23 +2897,11 @@ throw( RuntimeException ) if ( rEvent.Source == Reference< XInterface >( m_xFrame, UNO_QUERY )) { - // Our frame gets disposed, release all our references that depends on a working - // frame reference. + // Our frame gets disposed, release all our references that depends on a working frame reference. Application::RemoveEventListener( LINK( this, LayoutManager, SettingsChanged ) ); - if ( m_pMiscOptions ) - { - m_pMiscOptions->RemoveListenerLink( LINK( this, LayoutManager, OptionsChanged ) ); - delete m_pMiscOptions; - m_pMiscOptions = 0; - } - - delete m_pAddonOptions; - m_pAddonOptions = 0; // destroy all elements, it's possible that dettaching is NOT called! implts_destroyElements(); - - m_aUIElements.clear(); impl_clearUpMenuBar(); m_xMenuBar.clear(); if ( m_xInplaceMenuBar.is() ) @@ -7209,7 +2912,10 @@ throw( RuntimeException ) m_xInplaceMenuBar.clear(); m_xContainerWindow.clear(); m_xContainerTopWindow.clear(); - implts_destroyDockingAreaWindows(); + + // forward disposing call to toolbar manager + if ( m_pToolbarManager != NULL ) + m_pToolbarManager->disposing(rEvent); if ( m_xModuleCfgMgr.is() ) { @@ -7219,9 +2925,7 @@ throw( RuntimeException ) xModuleCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } if ( m_xDocCfgMgr.is() ) @@ -7232,9 +2936,7 @@ throw( RuntimeException ) xDocCfgMgr->removeConfigurationListener( Reference< XUIConfigurationListener >( static_cast< OWeakObject* >( this ), UNO_QUERY )); } - catch ( Exception& ) - { - } + catch ( Exception& ) {} } m_xDocCfgMgr.clear(); @@ -7242,14 +2944,20 @@ throw( RuntimeException ) m_xFrame.clear(); delete m_pGlobalSettings; m_pGlobalSettings = 0; - m_xDockingAreaAcceptor = Reference< ::com::sun::star::ui::XDockingAreaAcceptor >(); + m_xDockingAreaAcceptor = Reference< ui::XDockingAreaAcceptor >(); bDisposeAndClear = sal_True; } else if ( rEvent.Source == Reference< XInterface >( m_xContainerWindow, UNO_QUERY )) { // Our container window gets disposed. Remove all user interface elements. - m_aUIElements.clear(); + uno::Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + if ( pToolbarManager ) + { + uno::Reference< awt::XWindowPeer > aEmptyWindowPeer; + pToolbarManager->setParentWindow( aEmptyWindowPeer ); + } impl_clearUpMenuBar(); m_xMenuBar.clear(); if ( m_xInplaceMenuBar.is() ) @@ -7262,13 +2970,9 @@ throw( RuntimeException ) m_xContainerTopWindow.clear(); } else if ( rEvent.Source == Reference< XInterface >( m_xDocCfgMgr, UNO_QUERY )) - { m_xDocCfgMgr.clear(); - } else if ( rEvent.Source == Reference< XInterface >( m_xModuleCfgMgr , UNO_QUERY )) - { m_xModuleCfgMgr.clear(); - } aWriteLock.unlock(); /* SAFE AREA ----------------------------------------------------------------------------------------------- */ @@ -7277,208 +2981,207 @@ throw( RuntimeException ) if ( bDisposeAndClear ) { // Send message to all listener and forget her references. - css::uno::Reference< css::frame::XLayoutManager > xThis( static_cast< ::cppu::OWeakObject* >(this), css::uno::UNO_QUERY ); - css::lang::EventObject aEvent( xThis ); + uno::Reference< frame::XLayoutManager > xThis( static_cast< ::cppu::OWeakObject* >(this), uno::UNO_QUERY ); + lang::EventObject aEvent( xThis ); m_aListenerContainer.disposeAndClear( aEvent ); } } -void SAL_CALL LayoutManager::elementInserted( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL LayoutManager::elementInserted( const ui::ConfigurationEvent& Event ) throw (uno::RuntimeException) { ReadGuard aReadLock( m_aLock ); + Reference< XFrame > xFrame( m_xFrame ); + Reference< ui::XUIConfigurationListener > xUICfgListener( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - Reference< XUIElement > xElement; - Reference< XFrame > xFrame( m_xFrame ); - - if ( m_xFrame.is() ) + if ( xFrame.is() ) { - implts_findElement( Event.ResourceURL, aElementType, aElementName, xElement ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + bool bRefreshLayout(false); - Reference< XUIElementSettings > xElementSettings( xElement, UNO_QUERY ); - if ( xElementSettings.is() ) + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); - Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); - if ( xPropSet.is() ) + if ( xUICfgListener.is() ) { - if ( Event.Source == Reference< XInterface >( m_xDocCfgMgr, UNO_QUERY )) - xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xDocCfgMgr )); + xUICfgListener->elementInserted( Event ); + bRefreshLayout = pToolbarManager->isLayoutDirty(); } - xElementSettings->updateSettings(); } - else + else if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_MENUBAR )) { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" ) && - ( aElementName.indexOf( m_aCustomTbxPrefix ) != -1 )) + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) { - // custom toolbar must be directly created, shown and layouted! - createElement( Event.ResourceURL ); - Reference< XUIElement > xUIElement = getElement( Event.ResourceURL ); - if ( xUIElement.is() ) + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + uno::Reference< XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + if ( xPropSet.is() ) { - Reference< XUIConfigurationManager > xCfgMgr; - Reference< XPropertySet > xPropSet; - ::rtl::OUString aUIName; - - try - { - xCfgMgr = Reference< XUIConfigurationManager >( Event.Source, UNO_QUERY ); - xPropSet = Reference< XPropertySet >( xCfgMgr->getSettings( Event.ResourceURL, sal_False ), UNO_QUERY ); - - if ( xPropSet.is() ) - xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UIName" ))) >>= aUIName; - } - catch ( com::sun::star::container::NoSuchElementException& ) - { - } - catch ( com::sun::star::beans::UnknownPropertyException& ) - { - } - catch ( com::sun::star::lang::WrappedTargetException& ) - { - } - - { - vos::OGuard aGuard( Application::GetSolarMutex() ); - Reference< css::awt::XWindow > xWindow( xUIElement->getRealInterface(), UNO_QUERY ); - Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); - if ( pWindow ) - pWindow->SetText( aUIName ); - } - - showElement( Event.ResourceURL ); + if ( Event.Source == uno::Reference< uno::XInterface >( m_xDocCfgMgr, uno::UNO_QUERY )) + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xDocCfgMgr )); } + xElementSettings->updateSettings(); } } + + if ( bRefreshLayout ) + doLayout(); } } -void SAL_CALL LayoutManager::elementRemoved( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL LayoutManager::elementRemoved( const ui::ConfigurationEvent& Event ) throw (uno::RuntimeException) { - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - WriteGuard aWriteLock( m_aLock ); - - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - Reference< XUIElement > xUIElement; - Reference< XFrame > xFrame( m_xFrame ); + ReadGuard aReadLock( m_aLock ); + Reference< frame::XFrame > xFrame( m_xFrame ); + Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + Reference< awt::XWindow > xContainerWindow( m_xContainerWindow ); + Reference< ui::XUIElement > xMenuBar( m_xMenuBar ); + Reference< ui::XUIConfigurationManager > xModuleCfgMgr( m_xModuleCfgMgr ); + Reference< ui::XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - if ( m_xFrame.is() ) + if ( xFrame.is() ) { - implts_findElement( Event.ResourceURL, aElementType, aElementName, xUIElement ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + bool bRefreshLayout(false); - Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); - if ( xElementSettings.is() ) + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - bool bNoSettings( false ); - ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); - Reference< XInterface > xElementCfgMgr; - Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); + if ( xToolbarManager.is() ) + { + xToolbarManager->elementRemoved( Event ); + bRefreshLayout = pToolbarManager->isLayoutDirty(); + } + } + else + { + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) + { + bool bNoSettings( false ); + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + Reference< XInterface > xElementCfgMgr; + Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); - if ( xPropSet.is() ) - xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; - if ( !xElementCfgMgr.is() ) - return; + if ( !xElementCfgMgr.is() ) + return; - // Check if the same UI configuration manager has changed => check further - if ( Event.Source == xElementCfgMgr ) - { - // Same UI configuration manager where our element has its settings - if ( Event.Source == Reference< XInterface >( m_xDocCfgMgr, UNO_QUERY )) + // Check if the same UI configuration manager has changed => check further + if ( Event.Source == xElementCfgMgr ) { - // document settings removed - if ( m_xModuleCfgMgr->hasSettings( Event.ResourceURL )) + // Same UI configuration manager where our element has its settings + if ( Event.Source == Reference< XInterface >( xDocCfgMgr, UNO_QUERY )) { - xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xModuleCfgMgr )); - xElementSettings->updateSettings(); - return; + // document settings removed + if ( xModuleCfgMgr->hasSettings( Event.ResourceURL )) + { + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xModuleCfgMgr )); + xElementSettings->updateSettings(); + return; + } } - } - bNoSettings = true; - } + bNoSettings = true; + } - // No settings anymore, element must be destroyed - if ( m_xContainerWindow.is() && bNoSettings ) - { - if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && - aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + // No settings anymore, element must be destroyed + if ( xContainerWindow.is() && bNoSettings ) { - Window* pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); - while ( pWindow && !pWindow->IsSystemWindow() ) - pWindow = pWindow->GetParent(); + if ( aElementType.equalsIgnoreAsciiCaseAscii( "menubar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "menubar" )) + { + SystemWindow* pSysWindow = getTopSystemWindow( xContainerWindow ); + if ( pSysWindow && !m_bInplaceMenuSet ) + pSysWindow->SetMenuBar( 0 ); - if ( pWindow && !m_bInplaceMenuSet ) - ((SystemWindow *)pWindow)->SetMenuBar( 0 ); + Reference< XComponent > xComp( xMenuBar, UNO_QUERY ); + if ( xComp.is() ) + xComp->dispose(); - Reference< XComponent > xComp( m_xMenuBar, UNO_QUERY ); - if ( xComp.is() ) - xComp->dispose(); - m_xMenuBar.clear(); - } - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - { - destroyElement( Event.ResourceURL ); + WriteGuard aWriteLock( m_aLock ); + m_xMenuBar.clear(); + } } } } + + if ( bRefreshLayout ) + doLayout(); } } -void SAL_CALL LayoutManager::elementReplaced( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException) +void SAL_CALL LayoutManager::elementReplaced( const ui::ConfigurationEvent& Event ) throw (uno::RuntimeException) { ReadGuard aReadLock( m_aLock ); + Reference< XFrame > xFrame( m_xFrame ); + Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + aReadLock.unlock(); - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - Reference< XUIElement > xUIElement; - Reference< XFrame > xFrame( m_xFrame ); - - if ( m_xFrame.is() ) + if ( xFrame.is() ) { - implts_findElement( Event.ResourceURL, aElementType, aElementName, xUIElement ); + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + bool bRefreshLayout(false); - Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); - if ( xElementSettings.is() ) + parseResourceURL( Event.ResourceURL, aElementType, aElementName ); + if ( aElementType.equalsIgnoreAsciiCaseAscii( UIRESOURCETYPE_TOOLBAR )) { - ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); - Reference< XInterface > xElementCfgMgr; - Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); + if ( xToolbarManager.is() ) + { + xToolbarManager->elementReplaced( Event ); + bRefreshLayout = pToolbarManager->isLayoutDirty(); + } + } + else + { + Reference< XUIElement > xUIElement = implts_findElement( Event.ResourceURL ); + Reference< XUIElementSettings > xElementSettings( xUIElement, UNO_QUERY ); + if ( xElementSettings.is() ) + { + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + Reference< XInterface > xElementCfgMgr; + Reference< XPropertySet > xPropSet( xElementSettings, UNO_QUERY ); - if ( xPropSet.is() ) - xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; - if ( !xElementCfgMgr.is() ) - return; + if ( !xElementCfgMgr.is() ) + return; - // Check if the same UI configuration manager has changed => update settings - if ( Event.Source == xElementCfgMgr ) - { - xElementSettings->updateSettings(); - if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" )) - doLayout(); + // Check if the same UI configuration manager has changed => update settings + if ( Event.Source == xElementCfgMgr ) + xElementSettings->updateSettings(); } } + + if ( bRefreshLayout ) + doLayout(); } } //--------------------------------------------------------------------------------------------------------- -// OPropertySetHelper +// OPropertySetHelper //--------------------------------------------------------------------------------------------------------- -// XPropertySet helper -sal_Bool SAL_CALL LayoutManager::convertFastPropertyValue( Any& aConvertedValue , - Any& aOldValue , - sal_Int32 nHandle , - const Any& aValue ) throw( com::sun::star::lang::IllegalArgumentException ) +sal_Bool SAL_CALL LayoutManager::convertFastPropertyValue( Any& aConvertedValue, + Any& aOldValue, + sal_Int32 nHandle, + const Any& aValue ) throw( lang::IllegalArgumentException ) { return LayoutManager_PBase::convertFastPropertyValue( aConvertedValue, aOldValue, nHandle, aValue ); } -void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle , - const com::sun::star::uno::Any& aValue ) throw( com::sun::star::uno::Exception ) +void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, + const uno::Any& aValue ) throw( uno::Exception ) { if ( nHandle != LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY ) LayoutManager_PBase::setFastPropertyValue_NoBroadcast( nHandle, aValue ); @@ -7491,40 +3194,43 @@ void SAL_CALL LayoutManager::setFastPropertyValue_NoBroadcast( sal_Int32 case LAYOUTMANAGER_PROPHANDLE_REFRESHVISIBILITY: { - sal_Bool bValue = sal_Bool(); + sal_Bool bValue(sal_False); if (( aValue >>= bValue ) && bValue ) - implts_refreshContextToolbarsVisibility(); + { + ReadGuard aReadLock( m_aLock ); + Reference< ui::XUIConfigurationListener > xToolbarManager( m_xToolbarManager ); + ToolbarLayoutManager* pToolbarManager = m_pToolbarManager; + bool bAutomaticToolbars( m_bAutomaticToolbars ); + aReadLock.unlock(); + + if ( pToolbarManager ) + pToolbarManager->refreshToolbarsVisibility( bAutomaticToolbars ); + } break; } case LAYOUTMANAGER_PROPHANDLE_HIDECURRENTUI: implts_setCurrentUIVisibility( !m_bHideCurrentUI ); break; + default: break; } } -void SAL_CALL LayoutManager::getFastPropertyValue( com::sun::star::uno::Any& aValue , - sal_Int32 nHandle ) const +void SAL_CALL LayoutManager::getFastPropertyValue( uno::Any& aValue, sal_Int32 nHandle ) const { LayoutManager_PBase::getFastPropertyValue( aValue, nHandle ); } ::cppu::IPropertyArrayHelper& SAL_CALL LayoutManager::getInfoHelper() { - // Optimize this method ! - // We initialize a static variable only one time. And we don't must use a mutex at every call! - // For the first call; pInfoHelper is NULL - for the second call pInfoHelper is different from NULL! static ::cppu::OPropertyArrayHelper* pInfoHelper = NULL; if( pInfoHelper == NULL ) { - // Ready for multithreading osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - // Control this pointer again, another instance can be faster then these! if( pInfoHelper == NULL ) { - // Define static member to give structure of properties to baseclass "OPropertySetHelper". uno::Sequence< beans::Property > aProperties; describeProperties( aProperties ); static ::cppu::OPropertyArrayHelper aInfoHelper( aProperties, sal_True ); @@ -7535,23 +3241,17 @@ void SAL_CALL LayoutManager::getFastPropertyValue( com::sun::star::uno::Any& aVa return(*pInfoHelper); } -com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo > SAL_CALL LayoutManager::getPropertySetInfo() throw (::com::sun::star::uno::RuntimeException) +uno::Reference< beans::XPropertySetInfo > SAL_CALL LayoutManager::getPropertySetInfo() throw (uno::RuntimeException) { - // Optimize this method ! - // We initialize a static variable only one time. And we don't must use a mutex at every call! - // For the first call; pInfo is NULL - for the second call pInfo is different from NULL! - static com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >* pInfo = NULL; + static uno::Reference< beans::XPropertySetInfo >* pInfo = NULL; if( pInfo == NULL ) { - // Ready for multithreading osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - // Control this pointer again, another instance can be faster then these! + if( pInfo == NULL ) { - // Create structure of propertysetinfo for baseclass "OPropertySetHelper". - // (Use method "getInfoHelper()".) - static com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); + static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); pInfo = &xInfo; } } @@ -7560,4 +3260,3 @@ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo > SAL_CA } } // namespace framework - diff --git a/framework/source/layoutmanager/makefile.mk b/framework/source/layoutmanager/makefile.mk index 70215a36578d..7ce19a71f2f9 100644 --- a/framework/source/layoutmanager/makefile.mk +++ b/framework/source/layoutmanager/makefile.mk @@ -2,10 +2,14 @@ # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # -# Copyright 2000, 2010 Oracle and/or its affiliates. +# Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite # +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.5 $ +# # This file is part of OpenOffice.org. # # OpenOffice.org is free software: you can redistribute it and/or modify @@ -35,12 +39,15 @@ ENABLE_EXCEPTIONS= TRUE .INCLUDE : settings.mk -VISIBILITY_HIDDEN = TRUE - # --- Generate ----------------------------------------------------- SLOFILES= \ - $(SLO)$/layoutmanager.obj + $(SLO)$/panelmanager.obj \ + $(SLO)$/layoutmanager.obj \ + $(SLO)$/panel.obj \ + $(SLO)$/helpers.obj \ + $(SLO)$/uielement.obj \ + $(SLO)$/toolbarlayoutmanager.obj # --- Targets ------------------------------------------------------ diff --git a/framework/source/layoutmanager/panel.cxx b/framework/source/layoutmanager/panel.cxx new file mode 100755 index 000000000000..69f6ad0f51d9 --- /dev/null +++ b/framework/source/layoutmanager/panel.cxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include "panel.hxx" +#include "helpers.hxx" + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <vos/mutex.hxx> +#include <vcl/svapp.hxx> +#include <toolkit/unohlp.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +using namespace ::com::sun::star; + +namespace framework +{ + +Panel::Panel( + const uno::Reference< lang::XMultiServiceFactory >& rSMGR, + const uno::Reference< awt::XWindow >& rParent, + PanelPosition nPanel ) : + m_xSMGR(rSMGR), m_nPanelPosition(nPanel) +{ + uno::Reference< awt::XWindowPeer > xWindowPeer( rParent, uno::UNO_QUERY ); + m_xPanelWindow = uno::Reference< awt::XWindow >( createToolkitWindow( rSMGR, xWindowPeer, "splitwindow" ), uno::UNO_QUERY ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + SplitWindow* pSplitWindow = dynamic_cast< SplitWindow* >( VCLUnoHelper::GetWindow( m_xPanelWindow )); + + if ( pSplitWindow ) + { + // Set alignment + if (nPanel == PANEL_TOP) + pSplitWindow->SetAlign( WINDOWALIGN_TOP ); + else if (nPanel == PANEL_BOTTOM) + pSplitWindow->SetAlign( WINDOWALIGN_BOTTOM ); + else if (nPanel == PANEL_LEFT) + pSplitWindow->SetAlign( WINDOWALIGN_LEFT ); + else + pSplitWindow->SetAlign( WINDOWALIGN_RIGHT ); + } +} + +Panel::~Panel() +{ +} + +} // namespace framework diff --git a/framework/source/layoutmanager/panel.hxx b/framework/source/layoutmanager/panel.hxx new file mode 100755 index 000000000000..e183c97ed5da --- /dev/null +++ b/framework/source/layoutmanager/panel.hxx @@ -0,0 +1,88 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_PANEL_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_PANEL_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <macros/generic.hxx> +#include <stdtypes.h> +#include <properties.h> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <vcl/window.hxx> +#include <vcl/splitwin.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework +{ + +enum PanelPosition +{ + PANEL_TOP, + PANEL_LEFT, + PANEL_RIGHT, + PANEL_BOTTOM, + PANEL_COUNT +}; + +class Panel +{ + public: + Panel( const css::uno::Reference< css::lang::XMultiServiceFactory >& rSMGR, + const css::uno::Reference< css::awt::XWindow >& rParent, + PanelPosition nPanel ); + virtual ~Panel(); + + private: + css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; + css::uno::Reference< css::awt::XWindow > m_xPanelWindow; + PanelPosition m_nPanelPosition; +}; + +} + +#endif // __FRAMEWORK_LAYOUTMANAGER_PANEL_HXX_ diff --git a/framework/source/layoutmanager/panelmanager.cxx b/framework/source/layoutmanager/panelmanager.cxx new file mode 100755 index 000000000000..4fd0a733b5a7 --- /dev/null +++ b/framework/source/layoutmanager/panelmanager.cxx @@ -0,0 +1,183 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include "panelmanager.hxx" +#include "services.h" +#include "services/modelwinservice.hxx" + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <vcl/svapp.hxx> +#include <toolkit/unohlp.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +using namespace ::com::sun::star; + +namespace framework +{ + +//_________________________________________________________________________________________________________________ +// non exported definitions +//_________________________________________________________________________________________________________________ + +//_________________________________________________________________________________________________________________ +// declarations +//_________________________________________________________________________________________________________________ + + +PanelManager::PanelManager( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rSMGR, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ) : + m_xSMGR( rSMGR ), + m_xFrame( rFrame ) +{ + m_aPanels[PANEL_TOP] = 0; + m_aPanels[PANEL_BOTTOM] = 0; + m_aPanels[PANEL_LEFT] = 0; + m_aPanels[PANEL_RIGHT] = 0; +} + +PanelManager::~PanelManager() +{ +} + +//--------------------------------------------------------------------------------------------------------- +// Creation and layouting +//--------------------------------------------------------------------------------------------------------- +bool PanelManager::createPanels() +{ + if ( m_xFrame.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + uno::Reference< awt::XWindow > xWindow( m_xFrame->getContainerWindow(), uno::UNO_QUERY ); + if ( xWindow.is() ) + { + // destroy old panel windows + delete m_aPanels[PANEL_TOP ]; + delete m_aPanels[PANEL_BOTTOM]; + delete m_aPanels[PANEL_LEFT ]; + delete m_aPanels[PANEL_RIGHT ]; + + m_aPanels[PANEL_TOP ] = new Panel( m_xSMGR, xWindow, PANEL_TOP ); + m_aPanels[PANEL_BOTTOM] = new Panel( m_xSMGR, xWindow, PANEL_BOTTOM ); + m_aPanels[PANEL_LEFT ] = new Panel( m_xSMGR, xWindow, PANEL_LEFT ); + m_aPanels[PANEL_RIGHT ] = new Panel( m_xSMGR, xWindow, PANEL_RIGHT ); + return true; + } + } + + return false; +} + +awt::Rectangle PanelManager::getPreferredSize() const +{ + return awt::Rectangle(); +} + +void PanelManager::layoutPanels( const awt::Rectangle /*newSize*/ ) +{ +} + +//--------------------------------------------------------------------------------------------------------- +// Panel functions +//--------------------------------------------------------------------------------------------------------- +UIElement* PanelManager::findDockingWindow( const ::rtl::OUString& /*rResourceName*/ ) +{ + return NULL; +} + +bool PanelManager::addDockingWindow( const ::rtl::OUString& /*rResourceName*/, const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& /*xUIElement*/ ) +{ + return false; +} + +bool PanelManager::destroyDockingWindow( const ::rtl::OUString& /*rResourceName*/ ) +{ + return false; +} + +//--------------------------------------------------------------------------------------------------------- +// XDockableWindowListener +//--------------------------------------------------------------------------------------------------------- +void SAL_CALL PanelManager::startDocking( const awt::DockingEvent& ) +throw (uno::RuntimeException) +{ +} + +awt::DockingData SAL_CALL PanelManager::docking( const awt::DockingEvent& ) +throw (uno::RuntimeException) +{ + return awt::DockingData(); +} + +void SAL_CALL PanelManager::endDocking( const awt::EndDockingEvent& ) +throw (uno::RuntimeException) +{ +} + +sal_Bool SAL_CALL PanelManager::prepareToggleFloatingMode( const lang::EventObject& ) +throw (uno::RuntimeException) +{ + return false; +} + +void SAL_CALL PanelManager::toggleFloatingMode( const lang::EventObject& ) +throw (uno::RuntimeException) +{ +} + +void SAL_CALL PanelManager::closed( const lang::EventObject& ) +throw (uno::RuntimeException) +{ +} + +void SAL_CALL PanelManager::endPopupMode( const awt::EndPopupModeEvent& ) +throw (uno::RuntimeException) +{ +} + +} // namespace framework diff --git a/framework/source/layoutmanager/panelmanager.hxx b/framework/source/layoutmanager/panelmanager.hxx new file mode 100755 index 000000000000..fd3e892414fa --- /dev/null +++ b/framework/source/layoutmanager/panelmanager.hxx @@ -0,0 +1,109 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <threadhelp/threadhelpbase.hxx> +#include <macros/generic.hxx> +#include <macros/debug.hxx> +#include <macros/xinterface.hxx> +#include <macros/xtypeprovider.hxx> +#include <macros/xserviceinfo.hxx> +#include <general.h> +#include <stdtypes.h> +#include "panel.hxx" +#include <uielement/uielement.hxx> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/awt/XDockableWindowListener.hpp> +#include <com/sun/star/frame/XFrame.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <cppuhelper/weak.hxx> +#include <vcl/window.hxx> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework +{ + +class PanelManager : private ThreadHelpBase // Struct for right initalization of mutex member! Must be first of baseclasses. +{ + public: + PanelManager( + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rSMGR, + const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + virtual ~PanelManager(); + + bool createPanels(); + ::com::sun::star::awt::Rectangle getPreferredSize() const; + void layoutPanels( const ::com::sun::star::awt::Rectangle newSize ); + + UIElement* findDockingWindow( const ::rtl::OUString& rResourceName ); + bool addDockingWindow( const ::rtl::OUString& rResourceName, const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& xUIElement ); + bool destroyDockingWindow( const ::rtl::OUString& rResourceName ); + + //--------------------------------------------------------------------------------------------------------- + // XDockableWindowListener + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL startDocking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::DockingData SAL_CALL docking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL endDocking( const ::com::sun::star::awt::EndDockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL prepareToggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL toggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL closed( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL endPopupMode( const ::com::sun::star::awt::EndPopupModeEvent& e ) throw (::com::sun::star::uno::RuntimeException); + + private: + Panel* m_aPanels[PANEL_COUNT]; + css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; + css::uno::Reference< css::frame::XFrame > m_xFrame; +}; + +} // namespace framework + +#endif // __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx new file mode 100755 index 000000000000..559e7707ac36 --- /dev/null +++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx @@ -0,0 +1,4305 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.cxx,v $ + * $Revision: 1.72 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +// my own includes +#include <toolbarlayoutmanager.hxx> +#include <helpers.hxx> +#include <services.h> +#include <classes/resource.hrc> +#include <classes/fwkresid.hxx> +#include <uiconfiguration/windowstateconfiguration.hxx> + +// interface includes +#include <com/sun/star/awt/PosSize.hpp> +#include <com/sun/star/ui/UIElementType.hpp> +#include <com/sun/star/container/XNameReplace.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/ui/XUIElementSettings.hpp> +#include <com/sun/star/ui/XUIFunctionListener.hpp> + +// other includes +#include <unotools/cmdoptions.hxx> +#include <toolkit/unohlp.hxx> +#include <toolkit/helper/convert.hxx> +#include <toolkit/awt/vclxwindow.hxx> +#include <vcl/i18nhelp.hxx> +#include <vcl/dockingarea.hxx> +#include <boost/bind.hpp> + +using namespace ::com::sun::star; + +namespace framework +{ + +ToolbarLayoutManager::ToolbarLayoutManager( + const uno::Reference< lang::XMultiServiceFactory >& xSMGR, + const uno::Reference< ui::XUIElementFactory >& xUIElementFactory, + ILayoutNotifications* pParentLayouter ) + : ThreadHelpBase( &Application::GetSolarMutex() ), + m_xSMGR( xSMGR ), + m_xUIElementFactoryManager( xUIElementFactory ), + m_pParentLayouter( pParentLayouter ), + m_eDockOperation( DOCKOP_ON_COLROW ), + m_pAddonOptions( 0 ), + m_pGlobalSettings( 0 ), + m_bComponentAttached( false ), + m_bMustLayout( false ), + m_bLayoutDirty( false ), + m_bStoreWindowState( false ), + m_bGlobalSettings( false ), + m_bDockingInProgress( false ), + m_bVisible( true ), + m_bLayoutInProgress( false ), + m_bToolbarCreation( false ), + m_aFullAddonTbxPrefix( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/addon_" )), + m_aCustomTbxPrefix( RTL_CONSTASCII_USTRINGPARAM( "custom_" )), + m_aCustomizeCmd( RTL_CONSTASCII_USTRINGPARAM( "ConfigureDialog" )), + m_aToolbarTypeString( RTL_CONSTASCII_USTRINGPARAM( UIRESOURCETYPE_TOOLBAR )) +{ + // initialize rectangles to zero values + setZeroRectangle( m_aDockingAreaOffsets ); + setZeroRectangle( m_aDockingArea ); + + // create toolkit object + m_xToolkit = uno::Reference< awt::XToolkit >( m_xSMGR->createInstance( SERVICENAME_VCLTOOLKIT ), uno::UNO_QUERY ); +} + +ToolbarLayoutManager::~ToolbarLayoutManager() +{ +} + +//--------------------------------------------------------------------------------------------------------- +// XInterface +//--------------------------------------------------------------------------------------------------------- +void SAL_CALL ToolbarLayoutManager::acquire() throw() +{ + OWeakObject::acquire(); +} + +void SAL_CALL ToolbarLayoutManager::release() throw() +{ + OWeakObject::release(); +} + +uno::Any SAL_CALL ToolbarLayoutManager::queryInterface( const uno::Type & rType ) throw( uno::RuntimeException ) +{ + uno::Any a = ::cppu::queryInterface( rType, + SAL_STATIC_CAST( awt::XDockableWindowListener*, this ), + SAL_STATIC_CAST( ui::XUIConfigurationListener*, this ), + SAL_STATIC_CAST( awt::XWindowListener*, this )); + + if ( a.hasValue() ) + return a; + + return OWeakObject::queryInterface( rType ); +} + +void SAL_CALL ToolbarLayoutManager::disposing( const lang::EventObject& aEvent ) throw( uno::RuntimeException ) +{ + if ( aEvent.Source == m_xFrame ) + { + // Reset all internal references + reset(); + implts_destroyDockingAreaWindows(); + } +} + +awt::Rectangle ToolbarLayoutManager::getDockingArea() +{ + WriteGuard aWriteLock( m_aLock ); + Rectangle aNewDockingArea( m_aDockingArea ); + aWriteLock.unlock(); + + if ( isLayoutDirty() ) + aNewDockingArea = implts_calcDockingArea(); + + aWriteLock.lock(); + m_aDockingArea = aNewDockingArea; + aWriteLock.unlock(); + + return putRectangleValueToAWT(aNewDockingArea); +} + +void ToolbarLayoutManager::setDockingArea( const awt::Rectangle& rDockingArea ) +{ + WriteGuard aWriteLock( m_aLock ); + m_aDockingArea = putAWTToRectangle( rDockingArea ); + m_bLayoutDirty = true; + aWriteLock.unlock(); +} + +void ToolbarLayoutManager::implts_setDockingAreaWindowSizes( const awt::Rectangle& rBorderSpace ) +{ + ReadGuard aReadLock( m_aLock ); + Rectangle aDockOffsets = m_aDockingAreaOffsets; + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + uno::Reference< awt::XWindow > xTopDockAreaWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + uno::Reference< awt::XWindow > xBottomDockAreaWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] ); + uno::Reference< awt::XWindow > xLeftDockAreaWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + uno::Reference< awt::XWindow > xRightDockAreaWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] ); + aReadLock.unlock(); + + uno::Reference< awt::XDevice > xDevice( xContainerWindow, uno::UNO_QUERY ); + + // Convert relativ size to output size. + awt::Rectangle aRectangle = xContainerWindow->getPosSize(); + awt::DeviceInfo aInfo = xDevice->getInfo(); + awt::Size aContainerClientSize = awt::Size( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset , + aRectangle.Height - aInfo.TopInset - aInfo.BottomInset ); + long aStatusBarHeight = aDockOffsets.GetHeight(); + + sal_Int32 nLeftRightDockingAreaHeight( aContainerClientSize.Height ); + if ( rBorderSpace.Y >= 0 ) + { + // Top docking area window + xTopDockAreaWindow->setPosSize( 0, 0, aContainerClientSize.Width, rBorderSpace.Y, awt::PosSize::POSSIZE ); + xTopDockAreaWindow->setVisible( sal_True ); + nLeftRightDockingAreaHeight -= rBorderSpace.Y; + } + + if ( rBorderSpace.Height >= 0 ) + { + // Bottom docking area window + sal_Int32 nBottomPos = std::max( sal_Int32( aContainerClientSize.Height - rBorderSpace.Height - aStatusBarHeight ), sal_Int32( 0 )); + sal_Int32 nHeight = ( nBottomPos == 0 ) ? 0 : rBorderSpace.Height; + + xBottomDockAreaWindow->setPosSize( 0, nBottomPos, aContainerClientSize.Width, nHeight, awt::PosSize::POSSIZE ); + xBottomDockAreaWindow->setVisible( sal_True ); + nLeftRightDockingAreaHeight -= nHeight; + } + + nLeftRightDockingAreaHeight -= aStatusBarHeight; + if ( rBorderSpace.X >= 0 || nLeftRightDockingAreaHeight > 0 ) + { + // Left docking area window + // We also have to change our right docking area window if the top or bottom area has changed. They have a higher priority! + sal_Int32 nHeight = std::max( sal_Int32( 0 ), sal_Int32( nLeftRightDockingAreaHeight )); + + xLeftDockAreaWindow->setPosSize( 0, rBorderSpace.Y, rBorderSpace.X, nHeight, awt::PosSize::POSSIZE ); + xLeftDockAreaWindow->setVisible( sal_True ); + } + if ( rBorderSpace.Width >= 0 || nLeftRightDockingAreaHeight > 0 ) + { + // Right docking area window + // We also have to change our right docking area window if the top or bottom area has changed. They have a higher priority! + sal_Int32 nLeftPos = std::max( sal_Int32( 0 ), sal_Int32( aContainerClientSize.Width - rBorderSpace.Width )); + sal_Int32 nHeight = std::max( sal_Int32( 0 ), sal_Int32( nLeftRightDockingAreaHeight )); + sal_Int32 nWidth = ( nLeftPos == 0 ) ? 0 : rBorderSpace.Width; + + xRightDockAreaWindow->setPosSize( nLeftPos, rBorderSpace.Y, nWidth, nHeight, awt::PosSize::POSSIZE ); + xRightDockAreaWindow->setVisible( sal_True ); + } +} + +bool ToolbarLayoutManager::isLayoutDirty() +{ + return m_bLayoutDirty; +} + +void ToolbarLayoutManager::doLayout(const ::Size& aContainerSize) +{ + WriteGuard aWriteLock( m_aLock ); + bool bLayoutInProgress( m_bLayoutInProgress ); + m_bLayoutInProgress = true; + awt::Rectangle aDockingArea = putRectangleValueToAWT( m_aDockingArea ); + aWriteLock.unlock(); + + if ( bLayoutInProgress ) + return; + + // Retrieve row/column dependent data from all docked user-interface elements + for ( sal_Int32 i = 0; i < DOCKINGAREAS_COUNT; i++ ) + { + bool bReverse( isReverseOrderDockingArea( i )); + std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; + + implts_getDockingAreaElementInfos( (ui::DockingArea)i, aRowColumnsWindowData ); + + sal_Int32 nOffset( 0 ); + const sal_uInt32 nCount = aRowColumnsWindowData.size(); + for ( sal_uInt32 j = 0; j < nCount; ++j ) + { + sal_uInt32 nIndex = bReverse ? nCount-j-1 : j; + implts_calcWindowPosSizeOnSingleRowColumn( i, nOffset, aRowColumnsWindowData[nIndex], aContainerSize ); + nOffset += aRowColumnsWindowData[j].nStaticSize; + } + } + + implts_setDockingAreaWindowSizes( aDockingArea ); + + aWriteLock.lock(); + m_bLayoutDirty = false; + m_bLayoutInProgress = false; + aWriteLock.unlock(); +} + +bool ToolbarLayoutManager::implts_isParentWindowVisible() const +{ + ReadGuard aReadLock( m_aLock ); + bool bVisible( false ); + if ( m_xContainerWindow.is() ) + bVisible = m_xContainerWindow->isVisible(); + + return bVisible; +} + +Rectangle ToolbarLayoutManager::implts_calcDockingArea() +{ + ReadGuard aReadLock( m_aLock ); + UIElementVector aWindowVector( m_aUIElements ); + aReadLock.unlock(); + + Rectangle aBorderSpace; + sal_Int32 nCurrRowColumn( 0 ); + sal_Int32 nCurrPos( 0 ); + sal_Int32 nCurrDockingArea( ui::DockingArea_DOCKINGAREA_TOP ); + std::vector< sal_Int32 > aRowColumnSizes[DOCKINGAREAS_COUNT]; + UIElementVector::const_iterator pConstIter; + + // initialize rectangle with zero values! + aBorderSpace.setWidth(0); + aBorderSpace.setHeight(0); + + aRowColumnSizes[nCurrDockingArea].clear(); + aRowColumnSizes[nCurrDockingArea].push_back( 0 ); + + for ( pConstIter = aWindowVector.begin(); pConstIter != aWindowVector.end(); pConstIter++ ) + { + uno::Reference< ui::XUIElement > xUIElement( pConstIter->m_xUIElement, uno::UNO_QUERY ); + if ( xUIElement.is() ) + { + uno::Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xWindow.is() && xDockWindow.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && !xDockWindow->isFloating() && pConstIter->m_bVisible ) + { + awt::Rectangle aPosSize = xWindow->getPosSize(); + if ( pConstIter->m_aDockedData.m_nDockedArea != nCurrDockingArea ) + { + nCurrDockingArea = pConstIter->m_aDockedData.m_nDockedArea; + nCurrRowColumn = 0; + nCurrPos = 0; + aRowColumnSizes[nCurrDockingArea].clear(); + aRowColumnSizes[nCurrDockingArea].push_back( 0 ); + } + + if ( pConstIter->m_aDockedData.m_nDockedArea == nCurrDockingArea ) + { + if ( isHorizontalDockingArea( pConstIter->m_aDockedData.m_nDockedArea )) + { + if ( pConstIter->m_aDockedData.m_aPos.Y() > nCurrPos ) + { + ++nCurrRowColumn; + nCurrPos = pConstIter->m_aDockedData.m_aPos.Y(); + aRowColumnSizes[nCurrDockingArea].push_back( 0 ); + } + + if ( aPosSize.Height > aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] ) + aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] = aPosSize.Height; + } + else + { + if ( pConstIter->m_aDockedData.m_aPos.X() > nCurrPos ) + { + ++nCurrRowColumn; + nCurrPos = pConstIter->m_aDockedData.m_aPos.X(); + aRowColumnSizes[nCurrDockingArea].push_back( 0 ); + } + + if ( aPosSize.Width > aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] ) + aRowColumnSizes[nCurrDockingArea][nCurrRowColumn] = aPosSize.Width; + } + } + } + } + } + } + + // Sum up max heights from every row/column + if ( !aWindowVector.empty() ) + { + for ( sal_Int32 i = 0; i <= ui::DockingArea_DOCKINGAREA_RIGHT; i++ ) + { + sal_Int32 nSize( 0 ); + const sal_uInt32 nCount = aRowColumnSizes[i].size(); + for ( sal_uInt32 j = 0; j < nCount; j++ ) + nSize += aRowColumnSizes[i][j]; + + if ( i == ui::DockingArea_DOCKINGAREA_TOP ) + aBorderSpace.Top() = nSize; + else if ( i == ui::DockingArea_DOCKINGAREA_BOTTOM ) + aBorderSpace.Bottom() = nSize; + else if ( i == ui::DockingArea_DOCKINGAREA_LEFT ) + aBorderSpace.Left() = nSize; + else + aBorderSpace.Right() = nSize; + } + } + + return aBorderSpace; +} + +void ToolbarLayoutManager::reset() +{ + WriteGuard aWriteLock( m_aLock ); + uno::Reference< ui::XUIConfigurationManager > xModuleCfgMgr( m_xModuleCfgMgr ); + uno::Reference< ui::XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr ); + m_xModuleCfgMgr.clear(); + m_xDocCfgMgr.clear(); + m_bComponentAttached = false; + aWriteLock.unlock(); + + destroyToolbars(); + resetDockingArea(); +} + +void ToolbarLayoutManager::attach( + const uno::Reference< frame::XFrame >& xFrame, + const uno::Reference< ui::XUIConfigurationManager >& xModuleCfgMgr, + const uno::Reference< ui::XUIConfigurationManager >& xDocCfgMgr, + const uno::Reference< container::XNameAccess >& xPersistentWindowState ) +{ + // reset toolbar manager if we lose our current frame + if ( m_xFrame.is() && m_xFrame != xFrame ) + reset(); + + WriteGuard aWriteLock( m_aLock ); + m_xFrame = xFrame; + m_xModuleCfgMgr = xModuleCfgMgr; + m_xDocCfgMgr = xDocCfgMgr; + m_xPersistentWindowState = xPersistentWindowState; + m_bComponentAttached = true; +} + +void ToolbarLayoutManager::createStaticToolbars() +{ + resetDockingArea(); + implts_createCustomToolBars(); + implts_createAddonsToolBars(); + implts_createNonContextSensitiveToolBars(); + implts_sortUIElements(); +} + +bool ToolbarLayoutManager::requestToolbar( const ::rtl::OUString& rResourceURL ) +{ + bool bNotify( false ); + bool bMustCallCreate( false ); + uno::Reference< ui::XUIElement > xUIElement; + + UIElement aRequestedToolbar = impl_findToolbar( rResourceURL ); + if ( aRequestedToolbar.m_aName != rResourceURL ) + { + bMustCallCreate = true; + aRequestedToolbar.m_aName = rResourceURL; + aRequestedToolbar.m_aType = m_aToolbarTypeString; + aRequestedToolbar.m_xUIElement = xUIElement; + implts_readWindowStateData( rResourceURL, aRequestedToolbar ); + } + + xUIElement = aRequestedToolbar.m_xUIElement; + if ( !xUIElement.is() ) + bMustCallCreate = true; + + bool bCreateOrShowToolbar( aRequestedToolbar.m_bVisible & !aRequestedToolbar.m_bMasterHide ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow, uno::UNO_QUERY ); + if ( xContainerWindow.is() && aRequestedToolbar.m_bFloating ) + bCreateOrShowToolbar &= bool( xContainerWindow->isActive()); + + if ( bCreateOrShowToolbar ) + bNotify = ( bMustCallCreate ) ? createToolbar( rResourceURL ) : showToolbar( rResourceURL ); + + return bNotify; +} + +bool ToolbarLayoutManager::createToolbar( const ::rtl::OUString& rResourceURL ) +{ + bool bNotify( false ); + uno::Reference< ui::XUIElement > xUITempElement; + + implts_createToolBar( rResourceURL, bNotify, xUITempElement ); + return bNotify; +} + +bool ToolbarLayoutManager::destroyToolbar( const ::rtl::OUString& rResourceURL ) +{ + const rtl::OUString aAddonTbResourceName( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/addon_" )); + + UIElementVector::iterator pIter; + uno::Reference< lang::XComponent > xComponent; + + bool bNotify( false ); + bool bMustBeSorted( false ); + bool bMustLayouted( false ); + bool bMustBeDestroyed( rResourceURL.indexOf( aAddonTbResourceName ) != 0 ); + + WriteGuard aWriteLock( m_aLock ); + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_aName == rResourceURL ) + { + xComponent.set( pIter->m_xUIElement, uno::UNO_QUERY ); + if ( bMustBeDestroyed ) + pIter->m_xUIElement.clear(); + else + pIter->m_bVisible = false; + break; + } + } + aWriteLock.unlock(); + + uno::Reference< ui::XUIElement > xUIElement( xComponent, uno::UNO_QUERY ); + if ( xUIElement.is() ) + { + uno::Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + + if ( bMustBeDestroyed ) + { + try + { + if ( xWindow.is() ) + xWindow->removeWindowListener( uno::Reference< awt::XWindowListener >( + static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + } + catch( uno::Exception& ) {} + + try + { + if ( xDockWindow.is() ) + xDockWindow->removeDockableWindowListener( uno::Reference< awt::XDockableWindowListener >( + static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + } + catch ( uno::Exception& ) {} + } + else + { + if ( xWindow.is() ) + xWindow->setVisible( sal_False ); + bNotify = true; + } + + if ( !xDockWindow->isFloating() ) + bMustLayouted = true; + bMustBeSorted = true; + } + + if ( bMustBeDestroyed ) + { + if ( xComponent.is() ) + xComponent->dispose(); + bNotify = true; + } + + if ( bMustLayouted ) + implts_setLayoutDirty(); + + if ( bMustBeSorted ) + implts_sortUIElements(); + + return bNotify; +} + +void ToolbarLayoutManager::destroyToolbars() +{ + UIElementVector aUIElementVector; + implts_getUIElementVectorCopy( aUIElementVector ); + + WriteGuard aWriteLock( m_aLock ); + m_aUIElements.clear(); + m_bLayoutDirty = true; + aWriteLock.unlock(); + + UIElementVector::iterator pIter; + for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) + { + uno::Reference< lang::XComponent > xComponent( pIter->m_xUIElement, uno::UNO_QUERY ); + if ( xComponent.is() ) + xComponent->dispose(); + } +} + +bool ToolbarLayoutManager::showToolbar( const ::rtl::OUString& rResourceURL ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = getWindowFromXUIElement( aUIElement.m_xUIElement ); + if ( pWindow ) + { + if ( !aUIElement.m_bFloating ) + implts_setLayoutDirty(); + else + pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + + aUIElement.m_bVisible = true; + implts_writeWindowStateData( aUIElement ); + implts_setToolbar( aUIElement ); + return true; + } + + return false; +} + +bool ToolbarLayoutManager::hideToolbar( const ::rtl::OUString& rResourceURL ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = getWindowFromXUIElement( aUIElement.m_xUIElement ); + if ( pWindow ) + { + pWindow->Show( FALSE ); + if ( !aUIElement.m_bFloating ) + implts_setLayoutDirty(); + + aUIElement.m_bVisible = false; + implts_writeWindowStateData( aUIElement ); + implts_setToolbar( aUIElement ); + return true; + } + + return false; +} + +void ToolbarLayoutManager::refreshToolbarsVisibility( bool bAutomaticToolbars ) +{ + UIElementVector aUIElementVector; + + ReadGuard aReadLock( m_aLock ); + bool bVisible( m_bVisible ); + aReadLock.unlock(); + + if ( !bVisible || !bAutomaticToolbars ) + return; + + implts_getUIElementVectorCopy( aUIElementVector ); + + UIElement aUIElement; + vos::OGuard aGuard( Application::GetSolarMutex() ); + UIElementVector::iterator pIter; + for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) + { + if ( implts_readWindowStateData( pIter->m_aName, aUIElement ) && + ( pIter->m_bVisible != aUIElement.m_bVisible ) && !pIter->m_bMasterHide ) + { + WriteGuard aWriteLock( m_aLock ); + UIElement& rUIElement = impl_findToolbar( pIter->m_aName ); + if ( rUIElement.m_aName == pIter->m_aName ) + { + rUIElement.m_bVisible = aUIElement.m_bVisible; + implts_setLayoutDirty(); + } + } + } +} + +void ToolbarLayoutManager::setFloatingToolbarsVisibility( bool bVisible ) +{ + UIElementVector aUIElementVector; + implts_getUIElementVectorCopy( aUIElementVector ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + UIElementVector::iterator pIter; + for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) + { + Window* pWindow = getWindowFromXUIElement( pIter->m_xUIElement ); + if ( pWindow && pIter->m_bFloating ) + { + if ( bVisible ) + { + if ( pIter->m_bVisible && !pIter->m_bMasterHide ) + pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + } + else + pWindow->Show( FALSE ); + } + } +} + +void ToolbarLayoutManager::setVisible( bool bVisible ) +{ + UIElementVector aUIElementVector; + implts_getUIElementVectorCopy( aUIElementVector ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + UIElementVector::iterator pIter; + for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) + { + pIter->m_bMasterHide = !bVisible; + Window* pWindow = getWindowFromXUIElement( pIter->m_xUIElement ); + if ( pWindow ) + { + bool bSetVisible( pIter->m_bVisible & bVisible ); + if ( !bSetVisible ) + pWindow->Hide(); + else + { + if ( pIter->m_bFloating ) + pWindow->Show(true, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + else + implts_setLayoutDirty(); + } + } + } + + if ( !bVisible ) + resetDockingArea(); +} + +bool ToolbarLayoutManager::dockToolbar( const ::rtl::OUString& rResourceURL, ui::DockingArea eDockingArea, const awt::Point& aPos ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + if ( aUIElement.m_xUIElement.is() ) + { + try + { + uno::Reference< awt::XWindow > xWindow( aUIElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow.is() ) + { + if ( eDockingArea != ui::DockingArea_DOCKINGAREA_DEFAULT ) + aUIElement.m_aDockedData.m_nDockedArea = sal_Int16( eDockingArea ); + + if ( !isDefaultPos( aPos )) + aUIElement.m_aDockedData.m_aPos = ::Point( aPos.X, aPos.Y ); + + if ( !xDockWindow->isFloating() ) + { + Window* pWindow( 0 ); + ToolBox* pToolBox( 0 ); + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + { + pToolBox = (ToolBox *)pWindow; + + // We have to set the alignment of the toolbox. It's possible that the toolbox is moved from a + // horizontal to a vertical docking area! + pToolBox->SetAlign( ImplConvertAlignment( aUIElement.m_aDockedData.m_nDockedArea )); + } + } + + if ( hasDefaultPosValue( aUIElement.m_aDockedData.m_aPos )) + { + // Docking on its default position without a preset position - + // we have to find a good place for it. + ::Size aSize; + + vos::OGuard aGuard( Application::GetSolarMutex() ); + { + if ( pToolBox ) + aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( aUIElement.m_aDockedData.m_nDockedArea ) ); + else + aSize = pWindow->GetSizePixel(); + } + + ::Point aPixelPos; + ::Point aDockPos; + implts_findNextDockingPos((ui::DockingArea)aUIElement.m_aDockedData.m_nDockedArea, aSize, aDockPos, aPixelPos ); + aUIElement.m_aDockedData.m_aPos = aDockPos; + } + } + + implts_setToolbar( aUIElement ); + + if ( xDockWindow->isFloating() ) + { + // ATTENTION: This will call toggleFloatingMode() via notifications which + // sets the floating member of the UIElement correctly! + xDockWindow->setFloatingMode( sal_False ); + } + else + { + implts_writeWindowStateData( aUIElement ); + implts_sortUIElements(); + + if ( aUIElement.m_bVisible ) + implts_setLayoutDirty(); + } + return true; + } + } + catch ( lang::DisposedException& ) {} + } + + return false; +} + +bool ToolbarLayoutManager::dockAllToolbars() +{ + std::vector< ::rtl::OUString > aToolBarNameVector; + + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + + ReadGuard aReadLock( m_aLock ); + UIElementVector::iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_aType.equalsAscii( "toolbar" ) && pIter->m_xUIElement.is() && + pIter->m_bFloating && pIter->m_bVisible ) + aToolBarNameVector.push_back( pIter->m_aName ); + } + aReadLock.unlock(); + + bool bResult(true); + const sal_uInt32 nCount = aToolBarNameVector.size(); + for ( sal_uInt32 i = 0; i < nCount; ++i ) + { + awt::Point aPoint; + aPoint.X = aPoint.Y = SAL_MAX_INT32; + bResult &= dockToolbar( aToolBarNameVector[i], ui::DockingArea_DOCKINGAREA_DEFAULT, aPoint ); + } + + return bResult; +} + +long ToolbarLayoutManager::childWindowEvent( VclSimpleEvent* pEvent ) +{ + // To enable toolbar controllers to change their image when a sub-toolbar function + // is activated, we need this mechanism. We have NO connection between these toolbars + // anymore! + if ( pEvent && pEvent->ISA( VclWindowEvent )) + { + if ( pEvent->GetId() == VCLEVENT_TOOLBOX_SELECT ) + { + ::rtl::OUString aToolbarName; + ::rtl::OUString aCommand; + ToolBox* pToolBox = getToolboxPtr( ((VclWindowEvent*)pEvent)->GetWindow() ); + + if ( pToolBox ) + { + aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); + USHORT nId = pToolBox->GetCurItemId(); + if ( nId > 0 ) + aCommand = pToolBox->GetItemCommand( nId ); + } + + if (( aToolbarName.getLength() > 0 ) && ( aCommand.getLength() > 0 )) + { + ReadGuard aReadLock( m_aLock ); + ::std::vector< uno::Reference< ui::XUIFunctionListener > > aListenerArray; + UIElementVector::iterator pIter; + + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_xUIElement.is() ) + { + uno::Reference< ui::XUIFunctionListener > xListener( pIter->m_xUIElement, uno::UNO_QUERY ); + if ( xListener.is() ) + aListenerArray.push_back( xListener ); + } + } + aReadLock.unlock(); + + const sal_uInt32 nCount = aListenerArray.size(); + for ( sal_uInt32 i = 0; i < nCount; ++i ) + { + try { aListenerArray[i]->functionExecute( aToolbarName, aCommand ); } + catch ( uno::RuntimeException& ) { throw; } + catch ( uno::Exception& ) {} + } + } + } + else if ( pEvent->GetId() == VCLEVENT_TOOLBOX_FORMATCHANGED ) + { + if ( !implts_isToolbarCreationActive() ) + { + ToolBox* pToolBox = getToolboxPtr( ((VclWindowEvent*)pEvent)->GetWindow() ); + if ( pToolBox ) + { + ::rtl::OUString aToolbarName = retrieveToolbarNameFromHelpURL( pToolBox ); + if ( aToolbarName.getLength() > 0 ) + { + ::rtl::OUStringBuffer aBuf(100); + aBuf.appendAscii( "private:resource/toolbar/" ); + aBuf.append( aToolbarName ); + + UIElement aToolbar = implts_findToolbar( aBuf.makeStringAndClear() ); + if ( aToolbar.m_xUIElement.is() && !aToolbar.m_bFloating ) + { + implts_setLayoutDirty(); + m_pParentLayouter->requestLayout( ILayoutNotifications::HINT_TOOLBARSPACE_HAS_CHANGED ); + } + } + } + } + } + } + + return 1; +} + +void ToolbarLayoutManager::resetDockingArea() +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindow > xTopDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + uno::Reference< awt::XWindow > xLeftDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + uno::Reference< awt::XWindow > xRightDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] ); + uno::Reference< awt::XWindow > xBottomDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] ); + aReadLock.unlock(); + + if ( xTopDockingWindow.is() ) + xTopDockingWindow->setPosSize( 0, 0, 0, 0, awt::PosSize::POSSIZE ); + if ( xLeftDockingWindow.is() ) + xLeftDockingWindow->setPosSize( 0, 0, 0, 0, awt::PosSize::POSSIZE ); + if ( xRightDockingWindow.is() ) + xRightDockingWindow->setPosSize( 0, 0, 0, 0, awt::PosSize::POSSIZE ); + if ( xBottomDockingWindow.is() ) + xBottomDockingWindow->setPosSize( 0, 0, 0, 0, awt::PosSize::POSSIZE ); +} + +void ToolbarLayoutManager::setParentWindow( + const uno::Reference< awt::XWindowPeer >& xParentWindow ) +{ + static const char DOCKINGAREASTRING[] = "dockingarea"; + + uno::Reference< awt::XWindow > xTopDockWindow = uno::Reference< awt::XWindow >( createToolkitWindow( m_xSMGR, xParentWindow, DOCKINGAREASTRING ), uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xLeftDockWindow = uno::Reference< awt::XWindow >( createToolkitWindow( m_xSMGR, xParentWindow, DOCKINGAREASTRING ), uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xRightDockWindow = uno::Reference< awt::XWindow >( createToolkitWindow( m_xSMGR, xParentWindow, DOCKINGAREASTRING ), uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xBottomDockWindow = uno::Reference< awt::XWindow >( createToolkitWindow( m_xSMGR, xParentWindow, DOCKINGAREASTRING ), uno::UNO_QUERY ); + + WriteGuard aWriteLock( m_aLock ); + m_xContainerWindow = uno::Reference< awt::XWindow2 >( xParentWindow, uno::UNO_QUERY ); + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] = xTopDockWindow; + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] = xLeftDockWindow; + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] = xRightDockWindow; + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] = xBottomDockWindow; + aWriteLock.unlock(); + + if ( xParentWindow.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + ::DockingAreaWindow* pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xTopDockWindow ) ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_TOP ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xBottomDockWindow ) ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_BOTTOM ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xLeftDockWindow ) ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_LEFT ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xRightDockWindow ) ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_RIGHT ); + implts_reparentToolbars(); + } + else + { + destroyToolbars(); + resetDockingArea(); + } +} + +void ToolbarLayoutManager::setDockingAreaOffsets( const ::Rectangle aOffsets ) +{ + WriteGuard aWriteLock( m_aLock ); + m_aDockingAreaOffsets = aOffsets; + m_bLayoutDirty = true; +} + +rtl::OUString ToolbarLayoutManager::implts_generateGenericAddonToolbarTitle( sal_Int32 nNumber ) const +{ + String aAddonGenericTitle; + + aAddonGenericTitle = String( FwkResId( STR_TOOLBAR_TITLE_ADDON )); + const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper(); + + String aNumStr = rI18nHelper.GetNum( nNumber, 0, FALSE, FALSE ); + aAddonGenericTitle.SearchAndReplaceAscii( "%num%", aNumStr ); + + return rtl::OUString( aAddonGenericTitle ); +} + +void ToolbarLayoutManager::implts_createAddonsToolBars() +{ + WriteGuard aWriteLock( m_aLock ); + if ( !m_pAddonOptions ) + m_pAddonOptions = new AddonsOptions; + + uno::Reference< ui::XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + aWriteLock.unlock(); + + uno::Reference< frame::XModel > xModel( impl_getModelFromFrame( xFrame )); + if ( implts_isPreviewModel( xModel )) + return; // no addon toolbars for preview frame! + + UIElementVector aUIElementVector; + uno::Sequence< uno::Sequence< beans::PropertyValue > > aAddonToolBarData; + uno::Reference< ui::XUIElement > xUIElement; + + sal_uInt32 nCount = m_pAddonOptions->GetAddonsToolBarCount(); + ::rtl::OUString aAddonsToolBarStaticName( m_aFullAddonTbxPrefix ); + ::rtl::OUString aElementType( RTL_CONSTASCII_USTRINGPARAM( "toolbar" )); + + uno::Sequence< beans::PropertyValue > aPropSeq( 2 ); + aPropSeq[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" )); + aPropSeq[0].Value <<= xFrame; + aPropSeq[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationData" )); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + ::rtl::OUString aAddonToolBarName( aAddonsToolBarStaticName + m_pAddonOptions->GetAddonsToolbarResourceName(i) ); + aAddonToolBarData = m_pAddonOptions->GetAddonsToolBarPart( i ); + aPropSeq[1].Value <<= aAddonToolBarData; + + UIElement aElement = implts_findToolbar( aAddonToolBarName ); + + // #i79828 + // It's now possible that we are called more than once. Be sure to not create + // add-on toolbars more than once! + if ( aElement.m_xUIElement.is() ) + continue; + + try + { + xUIElement = xUIElementFactory->createUIElement( aAddonToolBarName, aPropSeq ); + if ( xUIElement.is() ) + { + uno::Reference< awt::XDockableWindow > xDockWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xDockWindow.is() ) + { + try + { + xDockWindow->addDockableWindowListener( uno::Reference< awt::XDockableWindowListener >( static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + xDockWindow->enableDocking( sal_True ); + uno::Reference< awt::XWindow > xWindow( xDockWindow, uno::UNO_QUERY ); + if ( xWindow.is() ) + xWindow->addWindowListener( uno::Reference< awt::XWindowListener >( static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + } + catch ( uno::Exception& ) {} + } + + ::rtl::OUString aGenericAddonTitle = implts_generateGenericAddonToolbarTitle( i+1 ); + + if ( aElement.m_aName.getLength() > 0 ) + { + // Reuse a local entry so we are able to use the latest + // UI changes for this document. + implts_setElementData( aElement, xDockWindow ); + aElement.m_xUIElement = xUIElement; + if ( aElement.m_aUIName.getLength() == 0 ) + { + aElement.m_aUIName = aGenericAddonTitle; + implts_writeWindowStateData( aElement ); + } + } + else + { + // Create new UI element and try to read its state data + UIElement aNewToolbar( aAddonToolBarName, aElementType, xUIElement ); + aNewToolbar.m_bFloating = true; + implts_readWindowStateData( aAddonToolBarName, aNewToolbar ); + implts_setElementData( aNewToolbar, xDockWindow ); + if ( aNewToolbar.m_aUIName.getLength() == 0 ) + { + aNewToolbar.m_aUIName = aGenericAddonTitle; + implts_writeWindowStateData( aNewToolbar ); + } + implts_insertToolbar( aNewToolbar ); + } + + uno::Reference< awt::XWindow > xWindow( xDockWindow, uno::UNO_QUERY ); + if ( xWindow.is() ) + { + // Set generic title for add-on toolbar + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow->GetText().Len() == 0 ) + pWindow->SetText( aGenericAddonTitle ); + if ( pWindow->GetType() == WINDOW_TOOLBOX ) + { + ToolBox* pToolbar = (ToolBox *)pWindow; + pToolbar->SetMenuType(); + } + } + } + } + catch ( container::NoSuchElementException& ) {} + catch ( lang::IllegalArgumentException& ) {} + } +} + +void ToolbarLayoutManager::implts_createCustomToolBars() +{ + ReadGuard aReadLock( m_aLock ); + if ( !m_bComponentAttached ) + return; + + uno::Reference< ui::XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< frame::XModel > xModel; + uno::Reference< ui::XUIConfigurationManager > xModuleCfgMgr( m_xModuleCfgMgr, uno::UNO_QUERY ); + uno::Reference< ui::XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr, uno::UNO_QUERY ); + aReadLock.unlock(); + + if ( xFrame.is() ) + { + xModel = impl_getModelFromFrame( xFrame ); + if ( implts_isPreviewModel( xModel )) + return; // no custom toolbars for preview frame! + + uno::Sequence< uno::Sequence< beans::PropertyValue > > aTbxSeq; + if ( xDocCfgMgr.is() ) + { + aTbxSeq = xDocCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); + implts_createCustomToolBars( aTbxSeq ); // first create all document based toolbars + } + if ( xModuleCfgMgr.is() ) + { + aTbxSeq = xModuleCfgMgr->getUIElementsInfo( ui::UIElementType::TOOLBAR ); + implts_createCustomToolBars( aTbxSeq ); // second create module based toolbars + } + } +} + +void ToolbarLayoutManager::implts_createNonContextSensitiveToolBars() +{ + ReadGuard aReadLock( m_aLock ); + + if ( !m_xPersistentWindowState.is() || !m_xFrame.is() || !m_bComponentAttached ) + return; + + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< ui::XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); + uno::Reference< container::XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); + aReadLock.unlock(); + + if ( implts_isPreviewModel( impl_getModelFromFrame( xFrame ))) + return; + + std::vector< rtl::OUString > aMakeVisibleToolbars; + + try + { + uno::Sequence< ::rtl::OUString > aToolbarNames = xPersistentWindowState->getElementNames(); + + if ( aToolbarNames.getLength() > 0 ) + { + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + ::rtl::OUString aName; + + uno::Reference< ui::XUIElement > xUIElement; + aMakeVisibleToolbars.reserve(aToolbarNames.getLength()); + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + WriteGuard aWriteLock( m_aLock ); + + const rtl::OUString* pTbNames = aToolbarNames.getConstArray(); + for ( sal_Int32 i = 0; i < aToolbarNames.getLength(); i++ ) + { + aName = pTbNames[i]; + parseResourceURL( aName, aElementType, aElementName ); + + // Check that we only create: + // - Toolbars (the statusbar is also member of the persistent window state) + // - Not custom toolbars, there are created with their own method (implts_createCustomToolbars) + if ( aElementType.equalsIgnoreAsciiCaseAscii( "toolbar" ) && aElementName.indexOf( m_aCustomTbxPrefix ) == -1 ) + { + UIElement aNewToolbar = implts_findToolbar( aName ); + bool bFound = ( aNewToolbar.m_aName == aName ); + if ( !bFound ) + implts_readWindowStateData( aName, aNewToolbar ); + + if ( aNewToolbar.m_bVisible && !aNewToolbar.m_bContextSensitive ) + { + if ( !bFound ) + implts_insertToolbar( aNewToolbar ); + aMakeVisibleToolbars.push_back( aName ); + } + } + } + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + } + } + catch ( uno::RuntimeException& ) { throw; } + catch ( uno::Exception& ) {} + + if ( !aMakeVisibleToolbars.empty() ) + ::std::for_each( aMakeVisibleToolbars.begin(), aMakeVisibleToolbars.end(),::boost::bind( &ToolbarLayoutManager::requestToolbar, this,_1 )); +} + +void ToolbarLayoutManager::implts_createCustomToolBars( const uno::Sequence< uno::Sequence< beans::PropertyValue > >& aTbxSeqSeq ) +{ + const uno::Sequence< beans::PropertyValue >* pTbxSeq = aTbxSeqSeq.getConstArray(); + for ( sal_Int32 i = 0; i < aTbxSeqSeq.getLength(); i++ ) + { + const uno::Sequence< beans::PropertyValue >& rTbxSeq = pTbxSeq[i]; + ::rtl::OUString aTbxResName; + ::rtl::OUString aTbxTitle; + for ( sal_Int32 j = 0; j < rTbxSeq.getLength(); j++ ) + { + if ( rTbxSeq[j].Name.equalsAscii( "ResourceURL" )) + rTbxSeq[j].Value >>= aTbxResName; + else if ( rTbxSeq[j].Name.equalsAscii( "UIName" )) + rTbxSeq[j].Value >>= aTbxTitle; + } + + // Only create custom toolbars. Their name have to start with "custom_"! + if ( aTbxResName.getLength() > 0 && aTbxResName.indexOf( m_aCustomTbxPrefix ) != -1 ) + implts_createCustomToolBar( aTbxResName, aTbxTitle ); + } +} + +void ToolbarLayoutManager::implts_createCustomToolBar( const rtl::OUString& aTbxResName, const rtl::OUString& aTitle ) +{ + if ( aTbxResName.getLength() > 0 ) + { + bool bNotify( false ); + uno::Reference< ui::XUIElement > xUIElement; + implts_createToolBar( aTbxResName, bNotify, xUIElement ); + + if ( aTitle && xUIElement.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + + Window* pWindow = getWindowFromXUIElement( xUIElement ); + if ( pWindow ) + pWindow->SetText( aTitle ); + } + } +} + +void ToolbarLayoutManager::implts_reparentToolbars() +{ + WriteGuard aWriteLock( m_aLock ); + UIElementVector aUIElementVector = m_aUIElements; + Window* pContainerWindow = VCLUnoHelper::GetWindow( m_xContainerWindow ); + Window* pTopDockWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + Window* pBottomDockWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] ); + Window* pLeftDockWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + Window* pRightDockWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] ); + aWriteLock.unlock(); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pContainerWindow ) + { + UIElementVector::iterator pIter; + for ( pIter = aUIElementVector.begin(); pIter != aUIElementVector.end(); pIter++ ) + { + uno::Reference< ui::XUIElement > xUIElement( pIter->m_xUIElement ); + if ( xUIElement.is() ) + { + uno::Reference< awt::XWindow > xWindow; + try + { + // We have to retreive the window reference with try/catch as it is + // possible that all elements have been disposed! + xWindow = uno::Reference< awt::XWindow >( xUIElement->getRealInterface(), uno::UNO_QUERY ); + } + catch ( uno::RuntimeException& ) { throw; } + catch ( uno::Exception& ) {} + + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow ) + { + // Reparent our child windows acording to their current state. + if ( pIter->m_bFloating ) + pWindow->SetParent( pContainerWindow ); + else + { + if ( pIter->m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) + pWindow->SetParent( pTopDockWindow ); + else if ( pIter->m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + pWindow->SetParent( pBottomDockWindow ); + else if ( pIter->m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) + pWindow->SetParent( pLeftDockWindow ); + else + pWindow->SetParent( pRightDockWindow ); + } + } + } + } + } +} + +void ToolbarLayoutManager::implts_setToolbarCreation( bool bStart ) +{ + WriteGuard aWriteLock( m_aLock ); + m_bToolbarCreation = bStart; +} + +bool ToolbarLayoutManager::implts_isToolbarCreationActive() +{ + ReadGuard aReadLock( m_aLock ); + return m_bToolbarCreation; +} + +void ToolbarLayoutManager::implts_createToolBar( const ::rtl::OUString& aName, bool& bNotify, uno::Reference< ui::XUIElement >& rUIElement ) +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< frame::XFrame > xFrame( m_xFrame ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + aReadLock.unlock(); + + bNotify = false; + + if ( !xFrame.is() || !xContainerWindow.is() ) + return; + + UIElement aToolbarElement = implts_findToolbar( aName ); + if ( !aToolbarElement.m_xUIElement.is() ) + { + uno::Reference< ui::XUIElement > xUIElement = implts_createElement( aName ); + + bool bVisible( false ); + bool bFloating( false ); + if ( xUIElement.is() ) + { + rUIElement = xUIElement; + + uno::Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow.is() && xWindow.is() ) + { + try + { + xDockWindow->addDockableWindowListener( uno::Reference< awt::XDockableWindowListener >( + static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + xWindow->addWindowListener( uno::Reference< awt::XWindowListener >( + static_cast< OWeakObject * >( this ), uno::UNO_QUERY )); + xDockWindow->enableDocking( sal_True ); + } + catch ( uno::Exception& ) {} + } + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + WriteGuard aWriteLock( m_aLock ); + + UIElement& rElement = impl_findToolbar( aName ); + if ( rElement.m_aName.getLength() > 0 ) + { + // Reuse a local entry so we are able to use the latest + // UI changes for this document. + implts_setElementData( rElement, xDockWindow ); + rElement.m_xUIElement = xUIElement; + bVisible = rElement.m_bVisible; + bFloating = rElement.m_bFloating; + } + else + { + // Create new UI element and try to read its state data + UIElement aNewToolbar( aName, m_aToolbarTypeString, xUIElement ); + implts_readWindowStateData( aName, aNewToolbar ); + implts_setElementData( aNewToolbar, xDockWindow ); + implts_insertToolbar( aNewToolbar ); + bVisible = aNewToolbar.m_bVisible; + bFloating = rElement.m_bFloating; + } + aWriteLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + // set toolbar menu style according to customize command state + SvtCommandOptions aCmdOptions; + + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + { + ToolBox* pToolbar = (ToolBox *)pWindow; + USHORT nMenuType = pToolbar->GetMenuType(); + if ( aCmdOptions.Lookup( SvtCommandOptions::CMDOPTION_DISABLED, m_aCustomizeCmd )) + pToolbar->SetMenuType( nMenuType & ~TOOLBOX_MENUTYPE_CUSTOMIZE ); + else + pToolbar->SetMenuType( nMenuType | TOOLBOX_MENUTYPE_CUSTOMIZE ); + } + bNotify = true; + + implts_sortUIElements(); + + if ( bVisible && !bFloating ) + implts_setLayoutDirty(); + } + } +} + +uno::Reference< ui::XUIElement > ToolbarLayoutManager::implts_createElement( const ::rtl::OUString& aName ) +{ + uno::Reference< ui::XUIElement > xUIElement; + + ReadGuard aReadLock( m_aLock ); + uno::Sequence< beans::PropertyValue > aPropSeq( 2 ); + aPropSeq[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Frame" )); + aPropSeq[0].Value <<= m_xFrame; + aPropSeq[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Persistent" )); + aPropSeq[1].Value <<= true; + uno::Reference< ui::XUIElementFactory > xUIElementFactory( m_xUIElementFactoryManager ); + aReadLock.unlock(); + + implts_setToolbarCreation( true ); + try + { + if ( xUIElementFactory.is() ) + xUIElement = xUIElementFactory->createUIElement( aName, aPropSeq ); + } + catch ( container::NoSuchElementException& ) {} + catch ( lang::IllegalArgumentException& ) {} + implts_setToolbarCreation( false ); + + return xUIElement; +} + +void ToolbarLayoutManager::implts_setElementData( UIElement& rElement, const uno::Reference< awt::XDockableWindow >& rDockWindow ) +{ + ReadGuard aReadLock( m_aLock ); + bool bShowElement( rElement.m_bVisible && !rElement.m_bMasterHide && implts_isParentWindowVisible() ); + aReadLock.unlock(); + + uno::Reference< awt::XDockableWindow > xDockWindow( rDockWindow ); + uno::Reference< awt::XWindow2 > xWindow( xDockWindow, uno::UNO_QUERY ); + + Window* pWindow( 0 ); + ToolBox* pToolBox( 0 ); + + if ( xDockWindow.is() && xWindow.is() ) + { + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow ) + { + String aText = pWindow->GetText(); + if ( aText.Len() == 0 ) + pWindow->SetText( rElement.m_aUIName ); + if ( rElement.m_bNoClose ) + pWindow->SetStyle( pWindow->GetStyle() & ~WB_CLOSEABLE ); + if ( pWindow->GetType() == WINDOW_TOOLBOX ) + pToolBox = (ToolBox *)pWindow; + } + if ( pToolBox ) + { + if (( rElement.m_nStyle < 0 ) || ( rElement.m_nStyle > BUTTON_SYMBOLTEXT )) + rElement.m_nStyle = BUTTON_SYMBOL; + pToolBox->SetButtonType( (ButtonType)rElement.m_nStyle ); + if ( rElement.m_bNoClose ) + pToolBox->SetFloatStyle( pToolBox->GetFloatStyle() & ~WB_CLOSEABLE ); + } + } + + if ( rElement.m_bFloating ) + { + if ( pWindow ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + String aText = pWindow->GetText(); + if ( aText.Len() == 0 ) + pWindow->SetText( rElement.m_aUIName ); + } + + ::Point aPos( rElement.m_aFloatingData.m_aPos.X(), + rElement.m_aFloatingData.m_aPos.Y() ); + bool bWriteData( false ); + bool bUndefPos = hasDefaultPosValue( rElement.m_aFloatingData.m_aPos ); + bool bSetSize = ( rElement.m_aFloatingData.m_aSize.Width() != 0 && + rElement.m_aFloatingData.m_aSize.Height() != 0 ); + xDockWindow->setFloatingMode( sal_True ); + if ( bUndefPos ) + { + aPos = implts_findNextCascadeFloatingPos(); + rElement.m_aFloatingData.m_aPos = aPos; // set new cascaded position + bWriteData = true; + } + + if( bSetSize ) + xWindow->setOutputSize( AWTSize( rElement.m_aFloatingData.m_aSize ) ); + else + { + if( pToolBox ) + { + // set an optimal initial floating size + vos::OGuard aGuard( Application::GetSolarMutex() ); + ::Size aSize( pToolBox->CalcFloatingWindowSizePixel() ); + pToolBox->SetOutputSizePixel( aSize ); + } + } + + // #i60882# IMPORTANT: Set position after size as it is + // possible that we position some part of the toolbar + // outside of the desktop. A default constructed toolbar + // always has one line. Now VCL automatically + // position the toolbar back into the desktop. Therefore + // we resize the toolbar with the new (wrong) position. + // To fix this problem we have to set the size BEFORE the + // position. + xWindow->setPosSize( aPos.X(), aPos.Y(), 0, 0, awt::PosSize::POS ); + + if ( bWriteData ) + implts_writeWindowStateData( rElement ); + if ( bShowElement && pWindow ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pWindow->Show( sal_True, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + } + } + else + { + bool bSetSize( false ); + ::Point aDockPos; + ::Point aPixelPos; + ::Size aSize; + + if ( pToolBox ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pToolBox->SetAlign( ImplConvertAlignment(rElement.m_aDockedData.m_nDockedArea ) ); + pToolBox->SetLineCount( 1 ); + xDockWindow->setFloatingMode( sal_False ); + if ( rElement.m_aDockedData.m_bLocked ) + xDockWindow->lock(); + aSize = pToolBox->CalcWindowSizePixel(); + bSetSize = true; + + if ( isDefaultPos( rElement.m_aDockedData.m_aPos )) + { + implts_findNextDockingPos( (ui::DockingArea)rElement.m_aDockedData.m_nDockedArea, aSize, aDockPos, aPixelPos ); + rElement.m_aDockedData.m_aPos = aDockPos; + } + } + + xWindow->setPosSize( aPixelPos.X(), aPixelPos.Y(), 0, 0, awt::PosSize::POS ); + if( bSetSize ) + xWindow->setOutputSize( AWTSize( aSize) ); + + if ( pWindow ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( !bShowElement ) + pWindow->Hide(); + } + } + } +} + +void ToolbarLayoutManager::implts_destroyDockingAreaWindows() +{ + WriteGuard aWriteLock( m_aLock ); + uno::Reference< awt::XWindow > xTopDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + uno::Reference< awt::XWindow > xLeftDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + uno::Reference< awt::XWindow > xRightDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] ); + uno::Reference< awt::XWindow > xBottomDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] ); + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP].clear(); + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT].clear(); + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT].clear(); + m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM].clear(); + aWriteLock.unlock(); + + // destroy windows + xTopDockingWindow->dispose(); + xLeftDockingWindow->dispose(); + xRightDockingWindow->dispose(); + xBottomDockingWindow->dispose(); +} + +//--------------------------------------------------------------------------------------------------------- +// persistence methods +//--------------------------------------------------------------------------------------------------------- + +sal_Bool ToolbarLayoutManager::implts_readWindowStateData( const rtl::OUString& aName, UIElement& rElementData ) +{ + WriteGuard aWriteLock( m_aLock ); + uno::Reference< container::XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); + bool bGetSettingsState( false ); + aWriteLock.unlock(); + + if ( xPersistentWindowState.is() ) + { + aWriteLock.lock(); + bool bGlobalSettings( m_bGlobalSettings ); + GlobalSettings* pGlobalSettings( 0 ); + if ( m_pGlobalSettings == 0 ) + { + m_pGlobalSettings = new GlobalSettings( m_xSMGR ); + bGetSettingsState = true; + } + pGlobalSettings = m_pGlobalSettings; + aWriteLock.unlock(); + + try + { + uno::Sequence< beans::PropertyValue > aWindowState; + if ( xPersistentWindowState->getByName( aName ) >>= aWindowState ) + { + sal_Bool bValue( sal_False ); + for ( sal_Int32 n = 0; n < aWindowState.getLength(); n++ ) + { + if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_DOCKED )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bFloating = !bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_VISIBLE )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bVisible = bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_DOCKINGAREA )) + { + ui::DockingArea eDockingArea; + if ( aWindowState[n].Value >>= eDockingArea ) + rElementData.m_aDockedData.m_nDockedArea = sal_Int16( eDockingArea ); + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_DOCKPOS )) + { + awt::Point aPoint; + if ( aWindowState[n].Value >>= aPoint ) + { + rElementData.m_aDockedData.m_aPos.X() = aPoint.X; + rElementData.m_aDockedData.m_aPos.Y() = aPoint.Y; + } + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_POS )) + { + awt::Point aPoint; + if ( aWindowState[n].Value >>= aPoint ) + { + rElementData.m_aFloatingData.m_aPos.X() = aPoint.X; + rElementData.m_aFloatingData.m_aPos.Y() = aPoint.Y; + } + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_SIZE )) + { + awt::Size aSize; + if ( aWindowState[n].Value >>= aSize ) + { + rElementData.m_aFloatingData.m_aSize.Width() = aSize.Width; + rElementData.m_aFloatingData.m_aSize.Height() = aSize.Height; + } + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_UINAME )) + aWindowState[n].Value >>= rElementData.m_aUIName; + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_STYLE )) + { + sal_Int32 nStyle = 0; + if ( aWindowState[n].Value >>= nStyle ) + rElementData.m_nStyle = sal_Int16( nStyle ); + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_LOCKED )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_aDockedData.m_bLocked = bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_CONTEXT )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bContextSensitive = bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_NOCLOSE )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bNoClose = bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_CONTEXTACTIVE )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bContextActive = bValue; + } + else if ( aWindowState[n].Name.equalsAscii( WINDOWSTATE_PROPERTY_SOFTCLOSE )) + { + if ( aWindowState[n].Value >>= bValue ) + rElementData.m_bSoftClose = bValue; + } + } + } + + // oversteer values with global settings + if ( pGlobalSettings && ( bGetSettingsState || bGlobalSettings )) + { + if ( pGlobalSettings->HasStatesInfo( GlobalSettings::UIELEMENT_TYPE_TOOLBAR )) + { + WriteGuard aWriteLock2( m_aLock ); + m_bGlobalSettings = true; + aWriteLock2.unlock(); + + uno::Any aValue; + sal_Bool bValue = sal_Bool(); + if ( pGlobalSettings->GetStateInfo( GlobalSettings::UIELEMENT_TYPE_TOOLBAR, + GlobalSettings::STATEINFO_LOCKED, + aValue )) + aValue >>= rElementData.m_aDockedData.m_bLocked; + if ( pGlobalSettings->GetStateInfo( GlobalSettings::UIELEMENT_TYPE_TOOLBAR, + GlobalSettings::STATEINFO_DOCKED, + aValue )) + { + if ( aValue >>= bValue ) + rElementData.m_bFloating = !bValue; + } + } + } + + return sal_True; + } + catch ( container::NoSuchElementException& ) {} + } + + return sal_False; +} + +void ToolbarLayoutManager::implts_writeWindowStateData( const UIElement& rElementData ) +{ + WriteGuard aWriteLock( m_aLock ); + uno::Reference< container::XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); + m_bStoreWindowState = true; // set flag to determine that we triggered the notification + aWriteLock.unlock(); + + bool bPersistent( sal_False ); + uno::Reference< beans::XPropertySet > xPropSet( rElementData.m_xUIElement, uno::UNO_QUERY ); + if ( xPropSet.is() ) + { + try + { + // Check persistent flag of the user interface element + xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Persistent" ))) >>= bPersistent; + } + catch ( beans::UnknownPropertyException ) + { + bPersistent = true; // Non-configurable elements should at least store their dimension/position + } + catch ( lang::WrappedTargetException ) {} + } + + if ( bPersistent && xPersistentWindowState.is() ) + { + try + { + uno::Sequence< beans::PropertyValue > aWindowState( 8 ); + + aWindowState[0].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_DOCKED ); + aWindowState[0].Value = ::uno::makeAny( sal_Bool( !rElementData.m_bFloating )); + aWindowState[1].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_VISIBLE ); + aWindowState[1].Value = uno::makeAny( sal_Bool( rElementData.m_bVisible )); + aWindowState[2].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_DOCKINGAREA ); + aWindowState[2].Value = uno::makeAny( static_cast< ui::DockingArea >( rElementData.m_aDockedData.m_nDockedArea ) ); + + awt::Point aPos; + aPos.X = rElementData.m_aDockedData.m_aPos.X(); + aPos.Y = rElementData.m_aDockedData.m_aPos.Y(); + aWindowState[3].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_DOCKPOS ); + aWindowState[3].Value <<= aPos; + + aPos.X = rElementData.m_aFloatingData.m_aPos.X(); + aPos.Y = rElementData.m_aFloatingData.m_aPos.Y(); + aWindowState[4].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_POS ); + aWindowState[4].Value <<= aPos; + + awt::Size aSize; + aSize.Width = rElementData.m_aFloatingData.m_aSize.Width(); + aSize.Height = rElementData.m_aFloatingData.m_aSize.Height(); + aWindowState[5].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_SIZE ); + aWindowState[5].Value <<= aSize; + aWindowState[6].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_UINAME ); + aWindowState[6].Value = uno::makeAny( rElementData.m_aUIName ); + aWindowState[7].Name = ::rtl::OUString::createFromAscii( WINDOWSTATE_PROPERTY_LOCKED ); + aWindowState[7].Value = uno::makeAny( rElementData.m_aDockedData.m_bLocked ); + + ::rtl::OUString aName = rElementData.m_aName; + if ( xPersistentWindowState->hasByName( aName )) + { + uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); + xReplace->replaceByName( aName, uno::makeAny( aWindowState )); + } + else + { + uno::Reference< container::XNameContainer > xInsert( xPersistentWindowState, uno::UNO_QUERY ); + xInsert->insertByName( aName, uno::makeAny( aWindowState )); + } + } + catch ( uno::Exception& ) {} + } + + // Reset flag + aWriteLock.lock(); + m_bStoreWindowState = false; + aWriteLock.unlock(); +} + +void ToolbarLayoutManager::implts_writeNewWindowStateData( const rtl::OUString aName, const uno::Reference< awt::XWindow >& xWindow ) +{ + bool bVisible( false ); + bool bFloating( true ); + awt::Rectangle aPos; + awt::Size aSize; + + if ( xWindow.is() ) + { + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow.is() ) + bFloating = xDockWindow->isFloating(); + + uno::Reference< awt::XWindow2 > xWindow2( xWindow, uno::UNO_QUERY ); + if( xWindow2.is() ) + { + aPos = xWindow2->getPosSize(); + aSize = xWindow2->getOutputSize(); // always use output size for consistency + bVisible = xWindow2->isVisible(); + } + + WriteGuard aWriteLock( m_aLock ); + UIElement& rUIElement = impl_findToolbar( aName ); + if ( rUIElement.m_xUIElement.is() ) + { + rUIElement.m_bVisible = bVisible; + rUIElement.m_bFloating = bFloating; + if ( bFloating ) + { + rUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); + rUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); + } + } + implts_writeWindowStateData( rUIElement ); + aWriteLock.unlock(); + } +} + +/****************************************************************************** + LOOKUP PART FOR TOOLBARS +******************************************************************************/ + +UIElement& ToolbarLayoutManager::impl_findToolbar( const rtl::OUString& aName ) +{ + static UIElement aEmptyElement; + UIElementVector::iterator pIter; + + ReadGuard aReadLock( m_aLock ); + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_aName == aName ) + return *pIter; + } + + return aEmptyElement; +} + +UIElement ToolbarLayoutManager::implts_findToolbar( const rtl::OUString& aName ) +{ + ReadGuard aReadLock( m_aLock ); + UIElement aElement = impl_findToolbar( aName ); + aReadLock.unlock(); + + return aElement; +} + +UIElement ToolbarLayoutManager::implts_findToolbar( const uno::Reference< uno::XInterface >& xToolbar ) +{ + UIElement aToolbar; + UIElementVector::const_iterator pIter; + + ReadGuard aReadLock( m_aLock ); + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_xUIElement.is() ) + { + uno::Reference< uno::XInterface > xIfac( pIter->m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xIfac == xToolbar ) + { + aToolbar = *pIter; + break; + } + } + } + + return aToolbar; +} + +uno::Reference< awt::XWindow > ToolbarLayoutManager::implts_getXWindow( const ::rtl::OUString& aName ) +{ + UIElementVector::iterator pIter; + uno::Reference< awt::XWindow > xWindow; + + ReadGuard aReadLock( m_aLock ); + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_aName == aName && pIter->m_xUIElement.is() ) + { + xWindow = uno::Reference< awt::XWindow >( pIter->m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + break; + } + } + + return xWindow; +} + +Window* ToolbarLayoutManager::implts_getWindow( const ::rtl::OUString& aName ) +{ + uno::Reference< awt::XWindow > xWindow = implts_getXWindow( aName ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + + return pWindow; +} + +bool ToolbarLayoutManager::implts_insertToolbar( const UIElement& rUIElement ) +{ + UIElement aTempData; + bool bFound( false ); + bool bResult( false ); + + aTempData = implts_findToolbar( rUIElement.m_aName ); + if ( aTempData.m_aName == rUIElement.m_aName ) + bFound = true; + + if ( !bFound ) + { + WriteGuard aWriteLock( m_aLock ); + m_aUIElements.push_back( rUIElement ); + bResult = true; + } + + return bResult; +} + +void ToolbarLayoutManager::implts_setToolbar( const UIElement& rUIElement ) +{ + WriteGuard aWriteLock( m_aLock ); + UIElement& rData = impl_findToolbar( rUIElement.m_aName ); + if ( rData.m_aName == rUIElement.m_aName ) + rData = rUIElement; + else + m_aUIElements.push_back( rUIElement ); +} + +/****************************************************************************** + LAYOUT CODE PART FOR TOOLBARS +******************************************************************************/ + +::Point ToolbarLayoutManager::implts_findNextCascadeFloatingPos() +{ + const sal_Int32 nHotZoneX = 50; + const sal_Int32 nHotZoneY = 50; + const sal_Int32 nCascadeIndentX = 15; + const sal_Int32 nCascadeIndentY = 15; + + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + uno::Reference< awt::XWindow > xTopDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + uno::Reference< awt::XWindow > xLeftDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + aReadLock.unlock(); + + ::Point aStartPos( nCascadeIndentX, nCascadeIndentY ); + ::Point aCurrPos( aStartPos ); + awt::Rectangle aRect; + + Window* pContainerWindow( 0 ); + if ( xContainerWindow.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + if ( pContainerWindow ) + aStartPos = pContainerWindow->OutputToScreenPixel( aStartPos ); + } + + // Determine size of top and left docking area + awt::Rectangle aTopRect( xTopDockingWindow->getPosSize() ); + awt::Rectangle aLeftRect( xLeftDockingWindow->getPosSize() ); + + aStartPos.X() += aLeftRect.Width + nCascadeIndentX; + aStartPos.Y() += aTopRect.Height + nCascadeIndentY; + aCurrPos = aStartPos; + + // Try to find a cascaded position for the new floating window + UIElementVector::const_iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_xUIElement.is() ) + { + uno::Reference< awt::XDockableWindow > xDockWindow( pIter->m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xWindow( xDockWindow, uno::UNO_QUERY ); + if ( xDockWindow.is() && xDockWindow->isFloating() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->IsVisible() ) + { + awt::Rectangle aFloatRect = xWindow->getPosSize(); + if ((( aFloatRect.X - nHotZoneX ) <= aCurrPos.X() ) && + ( aFloatRect.X >= aCurrPos.X() ) && + (( aFloatRect.Y - nHotZoneY ) <= aCurrPos.Y() ) && + ( aFloatRect.Y >= aCurrPos.Y() )) + { + aCurrPos.X() = aFloatRect.X + nCascadeIndentX; + aCurrPos.Y() = aFloatRect.Y + nCascadeIndentY; + } + } + } + } + } + + return aCurrPos; +} + +void ToolbarLayoutManager::implts_sortUIElements() +{ + WriteGuard aWriteLock( m_aLock ); + UIElementVector::iterator pIterStart = m_aUIElements.begin(); + UIElementVector::iterator pIterEnd = m_aUIElements.end(); + + std::stable_sort( pIterStart, pIterEnd ); // first created element should first + + // We have to reset our temporary flags. + UIElementVector::iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + pIter->m_bUserActive = sal_False; + aWriteLock.unlock(); +} + +void ToolbarLayoutManager::implts_getUIElementVectorCopy( UIElementVector& rCopy ) +{ + ReadGuard aReadLock( m_aLock ); + rCopy = m_aUIElements; +} + +::Size ToolbarLayoutManager::implts_getTopBottomDockingAreaSizes() +{ + ::Size aSize; + uno::Reference< awt::XWindow > xTopDockingAreaWindow; + uno::Reference< awt::XWindow > xBottomDockingAreaWindow; + + ReadGuard aReadLock( m_aLock ); + xTopDockingAreaWindow = m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP]; + xBottomDockingAreaWindow = m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM]; + aReadLock.unlock(); + + if ( xTopDockingAreaWindow.is() ) + aSize.Width() = xTopDockingAreaWindow->getPosSize().Height; + if ( xBottomDockingAreaWindow.is() ) + aSize.Height() = xBottomDockingAreaWindow->getPosSize().Height; + + return aSize; +} + +void ToolbarLayoutManager::implts_getDockingAreaElementInfos( ui::DockingArea eDockingArea, std::vector< SingleRowColumnWindowData >& rRowColumnsWindowData ) +{ + std::vector< UIElement > aWindowVector; + + if (( eDockingArea < ui::DockingArea_DOCKINGAREA_TOP ) || ( eDockingArea > ui::DockingArea_DOCKINGAREA_RIGHT )) + eDockingArea = ui::DockingArea_DOCKINGAREA_TOP; + + uno::Reference< awt::XWindow > xDockAreaWindow; + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + ReadGuard aReadLock( m_aLock ); + aWindowVector.reserve(m_aUIElements.size()); + xDockAreaWindow = m_xDockAreaWindows[eDockingArea]; + UIElementVector::iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_aDockedData.m_nDockedArea == eDockingArea && pIter->m_bVisible && !pIter->m_bFloating ) + { + uno::Reference< ui::XUIElement > xUIElement( pIter->m_xUIElement ); + if ( xUIElement.is() ) + { + uno::Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow.is() ) + { + // docked windows + aWindowVector.push_back( *pIter ); + } + } + } + } + aReadLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + rRowColumnsWindowData.clear(); + + // Collect data from windows that are on the same row/column + sal_Int32 j; + sal_Int32 nIndex( 0 ); + sal_Int32 nLastPos( 0 ); + sal_Int32 nCurrPos( -1 ); + sal_Int32 nLastRowColPixelPos( 0 ); + awt::Rectangle aDockAreaRect; + + if ( xDockAreaWindow.is() ) + aDockAreaRect = xDockAreaWindow->getPosSize(); + + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + nLastRowColPixelPos = 0; + else if ( eDockingArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + nLastRowColPixelPos = aDockAreaRect.Height; + else if ( eDockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + nLastRowColPixelPos = 0; + else + nLastRowColPixelPos = aDockAreaRect.Width; + + const sal_uInt32 nCount = aWindowVector.size(); + for ( j = 0; j < sal_Int32( nCount); j++ ) + { + const UIElement& rElement = aWindowVector[j]; + uno::Reference< awt::XWindow > xWindow; + uno::Reference< ui::XUIElement > xUIElement( rElement.m_xUIElement ); + awt::Rectangle aPosSize; + + if ( !lcl_checkUIElement(xUIElement,aPosSize,xWindow) ) + continue; + if ( isHorizontalDockingArea( eDockingArea )) + { + if ( nCurrPos == -1 ) + { + nCurrPos = rElement.m_aDockedData.m_aPos.Y(); + nLastPos = 0; + + SingleRowColumnWindowData aRowColumnWindowData; + aRowColumnWindowData.nRowColumn = nCurrPos; + rRowColumnsWindowData.push_back( aRowColumnWindowData ); + } + + sal_Int32 nSpace( 0 ); + if ( rElement.m_aDockedData.m_aPos.Y() != nCurrPos ) + { + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + nLastRowColPixelPos += rRowColumnsWindowData[nIndex].nStaticSize; + else + nLastRowColPixelPos -= rRowColumnsWindowData[nIndex].nStaticSize; + ++nIndex; + nLastPos = 0; + nCurrPos = rElement.m_aDockedData.m_aPos.Y(); + SingleRowColumnWindowData aRowColumnWindowData; + aRowColumnWindowData.nRowColumn = nCurrPos; + rRowColumnsWindowData.push_back( aRowColumnWindowData ); + } + + // Calc space before an element and store it + nSpace = ( rElement.m_aDockedData.m_aPos.X() - nLastPos ); + if ( rElement.m_aDockedData.m_aPos.X() >= nLastPos ) + { + rRowColumnsWindowData[nIndex].nSpace += nSpace; + nLastPos = rElement.m_aDockedData.m_aPos.X() + aPosSize.Width; + } + else + { + nSpace = 0; + nLastPos += aPosSize.Width; + } + rRowColumnsWindowData[nIndex].aRowColumnSpace.push_back( nSpace ); + + rRowColumnsWindowData[nIndex].aRowColumnWindows.push_back( xWindow ); + rRowColumnsWindowData[nIndex].aUIElementNames.push_back( rElement.m_aName ); + rRowColumnsWindowData[nIndex].aRowColumnWindowSizes.push_back( + awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), + rElement.m_aDockedData.m_aPos.Y(), + aPosSize.Width, + aPosSize.Height )); + if ( rRowColumnsWindowData[nIndex].nStaticSize < aPosSize.Height ) + rRowColumnsWindowData[nIndex].nStaticSize = aPosSize.Height; + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + rRowColumnsWindowData[nIndex].aRowColumnRect = awt::Rectangle( 0, nLastRowColPixelPos, + aDockAreaRect.Width, aPosSize.Height ); + else + rRowColumnsWindowData[nIndex].aRowColumnRect = awt::Rectangle( 0, ( nLastRowColPixelPos - aPosSize.Height ), + aDockAreaRect.Width, aPosSize.Height ); + rRowColumnsWindowData[nIndex].nVarSize += aPosSize.Width + nSpace; + } + else + { + if ( nCurrPos == -1 ) + { + nCurrPos = rElement.m_aDockedData.m_aPos.X(); + nLastPos = 0; + + SingleRowColumnWindowData aRowColumnWindowData; + aRowColumnWindowData.nRowColumn = nCurrPos; + rRowColumnsWindowData.push_back( aRowColumnWindowData ); + } + + sal_Int32 nSpace( 0 ); + if ( rElement.m_aDockedData.m_aPos.X() != nCurrPos ) + { + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + nLastRowColPixelPos += rRowColumnsWindowData[nIndex].nStaticSize; + else + nLastRowColPixelPos -= rRowColumnsWindowData[nIndex].nStaticSize; + ++nIndex; + nLastPos = 0; + nCurrPos = rElement.m_aDockedData.m_aPos.X(); + SingleRowColumnWindowData aRowColumnWindowData; + aRowColumnWindowData.nRowColumn = nCurrPos; + rRowColumnsWindowData.push_back( aRowColumnWindowData ); + } + + // Calc space before an element and store it + nSpace = ( rElement.m_aDockedData.m_aPos.Y() - nLastPos ); + if ( rElement.m_aDockedData.m_aPos.Y() > nLastPos ) + { + rRowColumnsWindowData[nIndex].nSpace += nSpace; + nLastPos = rElement.m_aDockedData.m_aPos.Y() + aPosSize.Height; + } + else + { + nSpace = 0; + nLastPos += aPosSize.Height; + } + rRowColumnsWindowData[nIndex].aRowColumnSpace.push_back( nSpace ); + + rRowColumnsWindowData[nIndex].aRowColumnWindows.push_back( xWindow ); + rRowColumnsWindowData[nIndex].aUIElementNames.push_back( rElement.m_aName ); + rRowColumnsWindowData[nIndex].aRowColumnWindowSizes.push_back( + awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), + rElement.m_aDockedData.m_aPos.Y(), + aPosSize.Width, + aPosSize.Height )); + if ( rRowColumnsWindowData[nIndex].nStaticSize < aPosSize.Width ) + rRowColumnsWindowData[nIndex].nStaticSize = aPosSize.Width; + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rRowColumnsWindowData[nIndex].aRowColumnRect = awt::Rectangle( nLastRowColPixelPos, 0, + aPosSize.Width, aDockAreaRect.Height ); + else + rRowColumnsWindowData[nIndex].aRowColumnRect = awt::Rectangle( ( nLastRowColPixelPos - aPosSize.Width ), 0, + aPosSize.Width, aDockAreaRect.Height ); + rRowColumnsWindowData[nIndex].nVarSize += aPosSize.Height + nSpace; + } + } +} + +void ToolbarLayoutManager::implts_getDockingAreaElementInfoOnSingleRowCol( ui::DockingArea eDockingArea, sal_Int32 nRowCol, SingleRowColumnWindowData& rRowColumnWindowData ) +{ + std::vector< UIElement > aWindowVector; + + if (( eDockingArea < ui::DockingArea_DOCKINGAREA_TOP ) || ( eDockingArea > ui::DockingArea_DOCKINGAREA_RIGHT )) + eDockingArea = ui::DockingArea_DOCKINGAREA_TOP; + + bool bHorzDockArea = isHorizontalDockingArea( eDockingArea ); + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + ReadGuard aReadLock( m_aLock ); + UIElementVector::iterator pIter; + UIElementVector::iterator pEnd = m_aUIElements.end(); + for ( pIter = m_aUIElements.begin(); pIter != pEnd; pIter++ ) + { + if ( pIter->m_aDockedData.m_nDockedArea == eDockingArea ) + { + bool bSameRowCol = bHorzDockArea ? ( pIter->m_aDockedData.m_aPos.Y() == nRowCol ) : ( pIter->m_aDockedData.m_aPos.X() == nRowCol ); + uno::Reference< ui::XUIElement > xUIElement( pIter->m_xUIElement ); + + if ( bSameRowCol && xUIElement.is() ) + { + uno::Reference< awt::XWindow > xWindow( xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xWindow.is() ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( pWindow && pIter->m_bVisible && xDockWindow.is() && !pIter->m_bFloating ) + aWindowVector.push_back( *pIter ); // docked windows + } + } + } + } + aReadLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + // Initialize structure + rRowColumnWindowData.aUIElementNames.clear(); + rRowColumnWindowData.aRowColumnWindows.clear(); + rRowColumnWindowData.aRowColumnWindowSizes.clear(); + rRowColumnWindowData.aRowColumnSpace.clear(); + rRowColumnWindowData.nVarSize = 0; + rRowColumnWindowData.nStaticSize = 0; + rRowColumnWindowData.nSpace = 0; + rRowColumnWindowData.nRowColumn = nRowCol; + + // Collect data from windows that are on the same row/column + sal_Int32 j; + sal_Int32 nLastPos( 0 ); + + const sal_uInt32 nCount = aWindowVector.size(); + for ( j = 0; j < sal_Int32( nCount); j++ ) + { + const UIElement& rElement = aWindowVector[j]; + uno::Reference< awt::XWindow > xWindow; + uno::Reference< ui::XUIElement > xUIElement( rElement.m_xUIElement ); + awt::Rectangle aPosSize; + if ( !lcl_checkUIElement(xUIElement,aPosSize,xWindow) ) + continue; + + sal_Int32 nSpace; + if ( isHorizontalDockingArea( eDockingArea )) + { + nSpace = ( rElement.m_aDockedData.m_aPos.X() - nLastPos ); + + // Calc space before an element and store it + if ( rElement.m_aDockedData.m_aPos.X() > nLastPos ) + rRowColumnWindowData.nSpace += nSpace; + else + nSpace = 0; + + nLastPos = rElement.m_aDockedData.m_aPos.X() + aPosSize.Width; + + + rRowColumnWindowData.aRowColumnWindowSizes.push_back( + awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), rElement.m_aDockedData.m_aPos.Y(), + aPosSize.Width, aPosSize.Height )); + if ( rRowColumnWindowData.nStaticSize < aPosSize.Height ) + rRowColumnWindowData.nStaticSize = aPosSize.Height; + rRowColumnWindowData.nVarSize += aPosSize.Width; + } + else + { + // Calc space before an element and store it + nSpace = ( rElement.m_aDockedData.m_aPos.Y() - nLastPos ); + if ( rElement.m_aDockedData.m_aPos.Y() > nLastPos ) + rRowColumnWindowData.nSpace += nSpace; + else + nSpace = 0; + + nLastPos = rElement.m_aDockedData.m_aPos.Y() + aPosSize.Height; + + rRowColumnWindowData.aRowColumnWindowSizes.push_back( + awt::Rectangle( rElement.m_aDockedData.m_aPos.X(), rElement.m_aDockedData.m_aPos.Y(), + aPosSize.Width, aPosSize.Height )); + if ( rRowColumnWindowData.nStaticSize < aPosSize.Width ) + rRowColumnWindowData.nStaticSize = aPosSize.Width; + rRowColumnWindowData.nVarSize += aPosSize.Height; + } + + rRowColumnWindowData.aUIElementNames.push_back( rElement.m_aName ); + rRowColumnWindowData.aRowColumnWindows.push_back( xWindow ); + rRowColumnWindowData.aRowColumnSpace.push_back( nSpace ); + rRowColumnWindowData.nVarSize += nSpace; + } +} + +::Rectangle ToolbarLayoutManager::implts_getWindowRectFromRowColumn( + ui::DockingArea DockingArea, + const SingleRowColumnWindowData& rRowColumnWindowData, + const ::Point& rMousePos, + const rtl::OUString& rExcludeElementName ) +{ + ::Rectangle aWinRect; + + if (( DockingArea < ui::DockingArea_DOCKINGAREA_TOP ) || ( DockingArea > ui::DockingArea_DOCKINGAREA_RIGHT )) + DockingArea = ui::DockingArea_DOCKINGAREA_TOP; + + if ( rRowColumnWindowData.aRowColumnWindows.empty() ) + return aWinRect; + else + { + ReadGuard aReadLock( m_aLock ); + Window* pContainerWindow( VCLUnoHelper::GetWindow( m_xContainerWindow )); + Window* pDockingAreaWindow( VCLUnoHelper::GetWindow( m_xDockAreaWindows[DockingArea] )); + aReadLock.unlock(); + + // Calc correct position of the column/row rectangle to be able to compare it with mouse pos/tracking rect + vos::OGuard aGuard( Application::GetSolarMutex() ); + + // Retrieve output size from container Window + if ( pDockingAreaWindow && pContainerWindow ) + { + const sal_uInt32 nCount = rRowColumnWindowData.aRowColumnWindows.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + awt::Rectangle aWindowRect = rRowColumnWindowData.aRowColumnWindows[i]->getPosSize(); + ::Rectangle aRect( aWindowRect.X, aWindowRect.Y, aWindowRect.X+aWindowRect.Width, aWindowRect.Y+aWindowRect.Height ); + aRect.SetPos( pContainerWindow->ScreenToOutputPixel( pDockingAreaWindow->OutputToScreenPixel( aRect.TopLeft() ))); + if ( aRect.IsInside( rMousePos )) + { + // Check if we have found the excluded element. If yes, we have to provide an empty rectangle. + // We prevent that a toolbar cannot be moved when the mouse pointer is inside its own rectangle! + if ( rExcludeElementName != rRowColumnWindowData.aUIElementNames[i] ) + return aRect; + else + break; + } + } + } + } + + return aWinRect; +} + +::Rectangle ToolbarLayoutManager::implts_determineFrontDockingRect( + ui::DockingArea eDockingArea, + sal_Int32 nRowCol, + const ::Rectangle& rDockedElementRect, + const ::rtl::OUString& rMovedElementName, + const ::Rectangle& rMovedElementRect ) +{ + SingleRowColumnWindowData aRowColumnWindowData; + + sal_Bool bHorzDockArea( isHorizontalDockingArea( eDockingArea )); + implts_getDockingAreaElementInfoOnSingleRowCol( eDockingArea, nRowCol, aRowColumnWindowData ); + if ( aRowColumnWindowData.aRowColumnWindows.empty() ) + return rMovedElementRect; + else + { + sal_Int32 nSpace( 0 ); + ::Rectangle aFrontDockingRect( rMovedElementRect ); + const sal_uInt32 nCount = aRowColumnWindowData.aRowColumnWindows.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + if ( bHorzDockArea ) + { + if ( aRowColumnWindowData.aRowColumnWindowSizes[i].X >= rDockedElementRect.Left() ) + { + nSpace += aRowColumnWindowData.aRowColumnSpace[i]; + break; + } + else if ( aRowColumnWindowData.aUIElementNames[i] == rMovedElementName ) + nSpace += aRowColumnWindowData.aRowColumnWindowSizes[i].Width + + aRowColumnWindowData.aRowColumnSpace[i]; + else + nSpace = 0; + } + else + { + if ( aRowColumnWindowData.aRowColumnWindowSizes[i].Y >= rDockedElementRect.Top() ) + { + nSpace += aRowColumnWindowData.aRowColumnSpace[i]; + break; + } + else if ( aRowColumnWindowData.aUIElementNames[i] == rMovedElementName ) + nSpace += aRowColumnWindowData.aRowColumnWindowSizes[i].Height + + aRowColumnWindowData.aRowColumnSpace[i]; + else + nSpace = 0; + } + } + + if ( nSpace > 0 ) + { + sal_Int32 nMove = std::min( nSpace, static_cast<sal_Int32>(aFrontDockingRect.getWidth()) ); + if ( bHorzDockArea ) + aFrontDockingRect.Move( -nMove, 0 ); + else + aFrontDockingRect.Move( 0, -nMove ); + } + + return aFrontDockingRect; + } +} + +void ToolbarLayoutManager::implts_findNextDockingPos( ui::DockingArea DockingArea, const ::Size& aUIElementSize, ::Point& rVirtualPos, ::Point& rPixelPos ) +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindow > xDockingWindow( m_xDockAreaWindows[DockingArea] ); + ::Size aDockingWinSize; + Window* pDockingWindow( 0 ); + aReadLock.unlock(); + + if (( DockingArea < ui::DockingArea_DOCKINGAREA_TOP ) || ( DockingArea > ui::DockingArea_DOCKINGAREA_RIGHT )) + DockingArea = ui::DockingArea_DOCKINGAREA_TOP; + + { + // Retrieve output size from container Window + vos::OGuard aGuard( Application::GetSolarMutex() ); + pDockingWindow = VCLUnoHelper::GetWindow( xDockingWindow ); + if ( pDockingWindow ) + aDockingWinSize = pDockingWindow->GetOutputSizePixel(); + } + + sal_Int32 nFreeRowColPixelPos( 0 ); + sal_Int32 nMaxSpace( 0 ); + sal_Int32 nNeededSpace( 0 ); + sal_Int32 nTopDockingAreaSize( 0 ); + + if ( isHorizontalDockingArea( DockingArea )) + { + nMaxSpace = aDockingWinSize.Width(); + nNeededSpace = aUIElementSize.Width(); + } + else + { + nMaxSpace = aDockingWinSize.Height(); + nNeededSpace = aUIElementSize.Height(); + nTopDockingAreaSize = implts_getTopBottomDockingAreaSizes().Width(); + } + + std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; + + implts_getDockingAreaElementInfos( DockingArea, aRowColumnsWindowData ); + sal_Int32 nPixelPos( 0 ); + const sal_uInt32 nCount = aRowColumnsWindowData.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + SingleRowColumnWindowData& rRowColumnWindowData = aRowColumnsWindowData[i]; + + if (( DockingArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) || + ( DockingArea == ui::DockingArea_DOCKINGAREA_RIGHT )) + nPixelPos += rRowColumnWindowData.nStaticSize; + + if ((( nMaxSpace - rRowColumnWindowData.nVarSize ) >= nNeededSpace ) || + ( rRowColumnWindowData.nSpace >= nNeededSpace )) + { + // Check current row where we can find the needed space + sal_Int32 nCurrPos( 0 ); + const sal_uInt32 nWindowSizesCount = rRowColumnWindowData.aRowColumnWindowSizes.size(); + for ( sal_uInt32 j = 0; j < nWindowSizesCount; j++ ) + { + awt::Rectangle rRect = rRowColumnWindowData.aRowColumnWindowSizes[j]; + sal_Int32& rSpace = rRowColumnWindowData.aRowColumnSpace[j]; + if ( isHorizontalDockingArea( DockingArea )) + { + if ( rSpace >= nNeededSpace ) + { + rVirtualPos = ::Point( nCurrPos, rRowColumnWindowData.nRowColumn ); + if ( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + rPixelPos = ::Point( nCurrPos, nPixelPos ); + else + rPixelPos = ::Point( nCurrPos, aDockingWinSize.Height() - nPixelPos ); + return; + } + nCurrPos = rRect.X + rRect.Width; + } + else + { + if ( rSpace >= nNeededSpace ) + { + rVirtualPos = ::Point( rRowColumnWindowData.nRowColumn, nCurrPos ); + if ( DockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rPixelPos = ::Point( nPixelPos, nTopDockingAreaSize + nCurrPos ); + else + rPixelPos = ::Point( aDockingWinSize.Width() - nPixelPos , nTopDockingAreaSize + nCurrPos ); + return; + } + nCurrPos = rRect.Y + rRect.Height; + } + } + + if (( nCurrPos + nNeededSpace ) <= nMaxSpace ) + { + if ( isHorizontalDockingArea( DockingArea )) + { + rVirtualPos = ::Point( nCurrPos, rRowColumnWindowData.nRowColumn ); + if ( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + rPixelPos = ::Point( nCurrPos, nPixelPos ); + else + rPixelPos = ::Point( nCurrPos, aDockingWinSize.Height() - nPixelPos ); + return; + } + else + { + rVirtualPos = ::Point( rRowColumnWindowData.nRowColumn, nCurrPos ); + if ( DockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rPixelPos = ::Point( nPixelPos, nTopDockingAreaSize + nCurrPos ); + else + rPixelPos = ::Point( aDockingWinSize.Width() - nPixelPos , nTopDockingAreaSize + nCurrPos ); + return; + } + } + } + + if (( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) || ( DockingArea == ui::DockingArea_DOCKINGAREA_LEFT )) + nPixelPos += rRowColumnWindowData.nStaticSize; + } + + sal_Int32 nNextFreeRowCol( 0 ); + sal_Int32 nRowColumnsCount = aRowColumnsWindowData.size(); + if ( nRowColumnsCount > 0 ) + nNextFreeRowCol = aRowColumnsWindowData[nRowColumnsCount-1].nRowColumn+1; + else + nNextFreeRowCol = 0; + + if ( nNextFreeRowCol == 0 ) + { + if ( DockingArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + nFreeRowColPixelPos = aDockingWinSize.Height() - aUIElementSize.Height(); + else if ( DockingArea == ui::DockingArea_DOCKINGAREA_RIGHT ) + nFreeRowColPixelPos = aDockingWinSize.Width() - aUIElementSize.Width(); + } + + if ( isHorizontalDockingArea( DockingArea )) + { + rVirtualPos = ::Point( 0, nNextFreeRowCol ); + if ( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + rPixelPos = ::Point( 0, nFreeRowColPixelPos ); + else + rPixelPos = ::Point( 0, aDockingWinSize.Height() - nFreeRowColPixelPos ); + } + else + { + rVirtualPos = ::Point( nNextFreeRowCol, 0 ); + rPixelPos = ::Point( aDockingWinSize.Width() - nFreeRowColPixelPos, 0 ); + } +} + +void ToolbarLayoutManager::implts_calcWindowPosSizeOnSingleRowColumn( + sal_Int32 nDockingArea, + sal_Int32 nOffset, + SingleRowColumnWindowData& rRowColumnWindowData, + const ::Size& rContainerSize ) +{ + sal_Int32 nDiff(0); + sal_Int32 nRCSpace( rRowColumnWindowData.nSpace ); + sal_Int32 nTopDockingAreaSize(0); + sal_Int32 nBottomDockingAreaSize(0); + sal_Int32 nContainerClientSize(0); + + if ( rRowColumnWindowData.aRowColumnWindows.empty() ) + return; + + if ( isHorizontalDockingArea( nDockingArea )) + { + nContainerClientSize = rContainerSize.Width(); + nDiff = nContainerClientSize - rRowColumnWindowData.nVarSize; + } + else + { + nTopDockingAreaSize = implts_getTopBottomDockingAreaSizes().Width(); + nBottomDockingAreaSize = implts_getTopBottomDockingAreaSizes().Height(); + nContainerClientSize = ( rContainerSize.Height() - nTopDockingAreaSize - nBottomDockingAreaSize ); + nDiff = nContainerClientSize - rRowColumnWindowData.nVarSize; + } + + const sal_uInt32 nCount = rRowColumnWindowData.aRowColumnWindowSizes.size(); + if (( nDiff < 0 ) && ( nRCSpace > 0 )) + { + // First we try to reduce the size of blank space before/behind docked windows + sal_Int32 i = nCount - 1; + while ( i >= 0 ) + { + sal_Int32 nSpace = rRowColumnWindowData.aRowColumnSpace[i]; + if ( nSpace >= -nDiff ) + { + if ( isHorizontalDockingArea( nDockingArea )) + { + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount ; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].X += nDiff; + } + else + { + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount ; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].Y += nDiff; + } + nDiff = 0; + + break; + } + else if ( nSpace > 0 ) + { + if ( isHorizontalDockingArea( nDockingArea )) + { + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].X -= nSpace; + } + else + { + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].Y -= nSpace; + } + nDiff += nSpace; + } + --i; + } + } + + // Check if we have to reduce further + if ( nDiff < 0 ) + { + // Now we have to reduce the size of certain docked windows + sal_Int32 i = sal_Int32( nCount - 1 ); + while ( i >= 0 ) + { + awt::Rectangle& rWinRect = rRowColumnWindowData.aRowColumnWindowSizes[i]; + ::Size aMinSize; + + vos::OGuard aGuard( Application::GetSolarMutex() ); + { + uno::Reference< awt::XWindow > xWindow = rRowColumnWindowData.aRowColumnWindows[i]; + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + aMinSize = ((ToolBox *)pWindow)->CalcMinimumWindowSizePixel(); + } + + if (( aMinSize.Width() > 0 ) && ( aMinSize.Height() > 0 )) + { + if ( isHorizontalDockingArea( nDockingArea )) + { + sal_Int32 nMaxReducation = ( rWinRect.Width - aMinSize.Width() ); + if ( nMaxReducation >= -nDiff ) + { + rWinRect.Width = rWinRect.Width + nDiff; + nDiff = 0; + } + else + { + rWinRect.Width = aMinSize.Width(); + nDiff += nMaxReducation; + } + + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].X += nDiff; + } + else + { + sal_Int32 nMaxReducation = ( rWinRect.Height - aMinSize.Height() ); + if ( nMaxReducation >= -nDiff ) + { + rWinRect.Height = rWinRect.Height + nDiff; + nDiff = 0; + } + else + { + rWinRect.Height = aMinSize.Height(); + nDiff += nMaxReducation; + } + + // Try to move this and all user elements behind with the calculated difference + for ( sal_uInt32 j = i; j < nCount; j++ ) + rRowColumnWindowData.aRowColumnWindowSizes[j].Y += nDiff; + } + } + + if ( nDiff >= 0 ) + break; + + --i; + } + } + + ReadGuard aReadLock( m_aLock ); + Window* pDockAreaWindow = VCLUnoHelper::GetWindow( m_xDockAreaWindows[nDockingArea] ); + aReadLock.unlock(); + + sal_Int32 nCurrPos( 0 ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + uno::Reference< awt::XWindow > xWindow = rRowColumnWindowData.aRowColumnWindows[i]; + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + Window* pOldParentWindow = pWindow->GetParent(); + + if ( pDockAreaWindow != pOldParentWindow ) + pWindow->SetParent( pDockAreaWindow ); + + awt::Rectangle aWinRect = rRowColumnWindowData.aRowColumnWindowSizes[i]; + if ( isHorizontalDockingArea( nDockingArea )) + { + if ( aWinRect.X < nCurrPos ) + aWinRect.X = nCurrPos; + pWindow->SetPosSizePixel( ::Point( aWinRect.X, nOffset ), ::Size( aWinRect.Width, rRowColumnWindowData.nStaticSize )); + pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + nCurrPos += ( aWinRect.X - nCurrPos ) + aWinRect.Width; + } + else + { + if ( aWinRect.Y < nCurrPos ) + aWinRect.Y = nCurrPos; + pWindow->SetPosSizePixel( ::Point( nOffset, aWinRect.Y ), ::Size( rRowColumnWindowData.nStaticSize, aWinRect.Height )); + pWindow->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + nCurrPos += ( aWinRect.Y - nCurrPos ) + aWinRect.Height; + } + } +} + +void ToolbarLayoutManager::implts_setLayoutDirty() +{ + WriteGuard aWriteLock( m_aLock ); + m_bLayoutDirty = true; +} + +void ToolbarLayoutManager::implts_setLayoutInProgress( bool bInProgress ) +{ + WriteGuard aWriteLock( m_aLock ); + m_bLayoutInProgress = bInProgress; +} + +::Rectangle ToolbarLayoutManager::implts_calcHotZoneRect( const ::Rectangle& rRect, sal_Int32 nHotZoneOffset ) +{ + ::Rectangle aRect( rRect ); + + aRect.Left() -= nHotZoneOffset; + aRect.Top() -= nHotZoneOffset; + aRect.Right() += nHotZoneOffset; + aRect.Bottom() += nHotZoneOffset; + + return aRect; +} + +void ToolbarLayoutManager::implts_calcDockingPosSize( + UIElement& rUIElement, + DockingOperation& rDockingOperation, + ::Rectangle& rTrackingRect, + const Point& rMousePos ) +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + ::Size aContainerWinSize; + Window* pContainerWindow( 0 ); + ::Rectangle aDockingAreaOffsets( m_aDockingAreaOffsets ); + aReadLock.unlock(); + + if ( !rUIElement.m_xUIElement.is() ) + { + rTrackingRect = ::Rectangle(); + return; + } + + { + // Retrieve output size from container Window + vos::OGuard aGuard( Application::GetSolarMutex() ); + pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + aContainerWinSize = pContainerWindow->GetOutputSizePixel(); + } + + Window* pDockWindow( 0 ); + Window* pDockingAreaWindow( 0 ); + ToolBox* pToolBox( 0 ); + uno::Reference< awt::XWindow > xWindow( rUIElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xDockingAreaWindow; + ::Rectangle aTrackingRect( rTrackingRect ); + ui::DockingArea eDockedArea( (ui::DockingArea)rUIElement.m_aDockedData.m_nDockedArea ); + sal_Int32 nTopDockingAreaSize( implts_getTopBottomDockingAreaSizes().Width() ); + sal_Int32 nBottomDockingAreaSize( implts_getTopBottomDockingAreaSizes().Height() ); + bool bHorizontalDockArea(( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) || + ( eDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM )); + sal_Int32 nMaxLeftRightDockAreaSize = aContainerWinSize.Height() - + nTopDockingAreaSize - + nBottomDockingAreaSize - + aDockingAreaOffsets.Top() - + aDockingAreaOffsets.Bottom(); + ::Rectangle aDockingAreaRect; + + aReadLock.lock(); + xDockingAreaWindow = m_xDockAreaWindows[eDockedArea]; + aReadLock.unlock(); + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pDockingAreaWindow = VCLUnoHelper::GetWindow( xDockingAreaWindow ); + pDockWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pDockWindow && pDockWindow->GetType() == WINDOW_TOOLBOX ) + pToolBox = (ToolBox *)pDockWindow; + + aDockingAreaRect = ::Rectangle( pDockingAreaWindow->GetPosPixel(), pDockingAreaWindow->GetSizePixel() ); + if ( pToolBox ) + { + // docked toolbars always have one line + ::Size aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( sal_Int16( eDockedArea )) ); + aTrackingRect.SetSize( ::Size( aSize.Width(), aSize.Height() )); + } + } + + // default docking operation, dock on the given row/column + bool bOpOutsideOfDockingArea( !aDockingAreaRect.IsInside( rMousePos )); + std::vector< SingleRowColumnWindowData > aRowColumnsWindowData; + + rDockingOperation = DOCKOP_ON_COLROW; + implts_getDockingAreaElementInfos( eDockedArea, aRowColumnsWindowData ); + + // determine current first row/column and last row/column + sal_Int32 nMaxRowCol( -1 ); + sal_Int32 nMinRowCol( SAL_MAX_INT32 ); + const sal_uInt32 nCount = aRowColumnsWindowData.size(); + for ( sal_uInt32 i = 0; i < nCount; i++ ) + { + if ( aRowColumnsWindowData[i].nRowColumn > nMaxRowCol ) + nMaxRowCol = aRowColumnsWindowData[i].nRowColumn; + if ( aRowColumnsWindowData[i].nRowColumn < nMinRowCol ) + nMinRowCol = aRowColumnsWindowData[i].nRowColumn; + } + + if ( !bOpOutsideOfDockingArea ) + { + // docking inside our docking area + sal_Int32 nIndex( -1 ); + sal_Int32 nRowCol( -1 ); + ::Rectangle aWindowRect; + ::Rectangle aRowColumnRect; + + const sal_uInt32 nWindowDataCount = aRowColumnsWindowData.size(); + for ( sal_uInt32 i = 0; i < nWindowDataCount; i++ ) + { + ::Rectangle aRect( aRowColumnsWindowData[i].aRowColumnRect.X, + aRowColumnsWindowData[i].aRowColumnRect.Y, + aRowColumnsWindowData[i].aRowColumnRect.X + aRowColumnsWindowData[i].aRowColumnRect.Width, + aRowColumnsWindowData[i].aRowColumnRect.Y + aRowColumnsWindowData[i].aRowColumnRect.Height ); + + { + // Calc correct position of the column/row rectangle to be able to compare it with mouse pos/tracking rect + vos::OGuard aGuard( Application::GetSolarMutex() ); + aRect.SetPos( pContainerWindow->ScreenToOutputPixel( pDockingAreaWindow->OutputToScreenPixel( aRect.TopLeft() ))); + } + + bool bIsInsideRowCol( aRect.IsInside( rMousePos ) ); + if ( bIsInsideRowCol ) + { + nIndex = i; + nRowCol = aRowColumnsWindowData[i].nRowColumn; + rDockingOperation = implts_determineDockingOperation( eDockedArea, aRect, rMousePos ); + aWindowRect = implts_getWindowRectFromRowColumn( eDockedArea, aRowColumnsWindowData[i], rMousePos, rUIElement.m_aName ); + aRowColumnRect = aRect; + break; + } + } + + OSL_ENSURE( ( nIndex >= 0 ) && ( nRowCol >= 0 ), "Impossible case - no row/column found but mouse pointer is inside our docking area" ); + if (( nIndex >= 0 ) && ( nRowCol >= 0 )) + { + if ( rDockingOperation == DOCKOP_ON_COLROW ) + { + if ( !aWindowRect.IsEmpty()) + { + // Tracking rect is on a row/column and mouse is over a docked toolbar. + // Determine if the tracking rect must be located before/after the docked toolbar. + + ::Rectangle aUIElementRect( aWindowRect ); + sal_Int32 nMiddle( bHorizontalDockArea ? ( aWindowRect.Left() + aWindowRect.getWidth() / 2 ) : + ( aWindowRect.Top() + aWindowRect.getHeight() / 2 )); + sal_Bool bInsertBefore( bHorizontalDockArea ? ( rMousePos.X() < nMiddle ) : ( rMousePos.Y() < nMiddle )); + if ( bInsertBefore ) + { + if ( bHorizontalDockArea ) + { + sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( aContainerWinSize.Width() - aWindowRect.Left() ), + sal_Int32( aTrackingRect.getWidth() ))); + if ( nSize == 0 ) + nSize = aWindowRect.getWidth(); + + aUIElementRect.SetSize( ::Size( nSize, aWindowRect.getHeight() )); + aWindowRect = implts_determineFrontDockingRect( eDockedArea, nRowCol, aWindowRect,rUIElement.m_aName, aUIElementRect ); + + // Set virtual position + rUIElement.m_aDockedData.m_aPos.X() = aWindowRect.Left(); + rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; + } + else + { + sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( + nTopDockingAreaSize + nMaxLeftRightDockAreaSize - aWindowRect.Top() ), + sal_Int32( aTrackingRect.getHeight() ))); + if ( nSize == 0 ) + nSize = aWindowRect.getHeight(); + + aUIElementRect.SetSize( ::Size( aWindowRect.getWidth(), nSize )); + aWindowRect = implts_determineFrontDockingRect( eDockedArea, nRowCol, aWindowRect, rUIElement.m_aName, aUIElementRect ); + + // Set virtual position + sal_Int32 nPosY = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( aWindowRect.TopLeft() )).Y(); + rUIElement.m_aDockedData.m_aPos.X() = nRowCol; + rUIElement.m_aDockedData.m_aPos.Y() = nPosY; + } + + rTrackingRect = aWindowRect; + return; + } + else + { + if ( bHorizontalDockArea ) + { + sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32(( aContainerWinSize.Width() ) - aWindowRect.Right() ), + sal_Int32( aTrackingRect.getWidth() ))); + if ( nSize == 0 ) + { + aUIElementRect.SetPos( ::Point( aContainerWinSize.Width() - aTrackingRect.getWidth(), aWindowRect.Top() )); + aUIElementRect.SetSize( ::Size( aTrackingRect.getWidth(), aWindowRect.getHeight() )); + rUIElement.m_aDockedData.m_aPos.X() = aUIElementRect.Left(); + } + else + { + aUIElementRect.SetPos( ::Point( aWindowRect.Right(), aWindowRect.Top() )); + aUIElementRect.SetSize( ::Size( nSize, aWindowRect.getHeight() )); + rUIElement.m_aDockedData.m_aPos.X() = aWindowRect.Right(); + } + + // Set virtual position + rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; + } + else + { + sal_Int32 nSize = ::std::max( sal_Int32( 0 ), std::min( sal_Int32( nTopDockingAreaSize + nMaxLeftRightDockAreaSize - aWindowRect.Bottom() ), + sal_Int32( aTrackingRect.getHeight() ))); + aUIElementRect.SetPos( ::Point( aWindowRect.Left(), aWindowRect.Bottom() )); + aUIElementRect.SetSize( ::Size( aWindowRect.getWidth(), nSize )); + + // Set virtual position + sal_Int32 nPosY( 0 ); + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + nPosY = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( aWindowRect.BottomRight() )).Y(); + } + rUIElement.m_aDockedData.m_aPos.X() = nRowCol; + rUIElement.m_aDockedData.m_aPos.Y() = nPosY; + } + + rTrackingRect = aUIElementRect; + return; + } + } + else + { + implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); + rTrackingRect = implts_calcTrackingAndElementRect( + eDockedArea, nRowCol, rUIElement, + aTrackingRect, aRowColumnRect, aContainerWinSize ); + return; + } + } + else + { + if ((( nRowCol == nMinRowCol ) && ( rDockingOperation == DOCKOP_BEFORE_COLROW )) || + (( nRowCol == nMaxRowCol ) && ( rDockingOperation == DOCKOP_AFTER_COLROW ))) + bOpOutsideOfDockingArea = true; + else + { + // handle docking before/after a row + implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); + rTrackingRect = implts_calcTrackingAndElementRect( + eDockedArea, nRowCol, rUIElement, + aTrackingRect, aRowColumnRect, aContainerWinSize ); + + sal_Int32 nOffsetX( 0 ); + sal_Int32 nOffsetY( 0 ); + if ( bHorizontalDockArea ) + nOffsetY = sal_Int32( floor( aRowColumnRect.getHeight() / 2 + 0.5 )); + else + nOffsetX = sal_Int32( floor( aRowColumnRect.getWidth() / 2 + 0.5 )); + + if ( rDockingOperation == DOCKOP_BEFORE_COLROW ) + { + if (( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) || ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT )) + { + // Docking before/after means move track rectangle half column/row. + // As left and top are ordered 0...n instead of right and bottom + // which uses n...0, we have to use negative values for top/left. + nOffsetX *= -1; + nOffsetY *= -1; + } + } + else + { + if (( eDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) || ( eDockedArea == ui::DockingArea_DOCKINGAREA_RIGHT )) + { + // Docking before/after means move track rectangle half column/row. + // As left and top are ordered 0...n instead of right and bottom + // which uses n...0, we have to use negative values for top/left. + nOffsetX *= -1; + nOffsetY *= -1; + } + nRowCol++; + } + + if ( bHorizontalDockArea ) + rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; + else + rUIElement.m_aDockedData.m_aPos.X() = nRowCol; + + rTrackingRect.Move( nOffsetX, nOffsetY ); + rTrackingRect.SetSize( aTrackingRect.GetSize() ); + } + } + } + } + + // Docking outside of our docking window area => + // Users want to dock before/after first/last docked element or to an empty docking area + if ( bOpOutsideOfDockingArea ) + { + // set correct size for docking + implts_setTrackingRect( eDockedArea, rMousePos, aTrackingRect ); + rTrackingRect = aTrackingRect; + + if ( bHorizontalDockArea ) + { + sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); + if (( nPosX + rTrackingRect.getWidth()) > aContainerWinSize.Width() ) + nPosX = std::min( nPosX, + std::max( sal_Int32( aContainerWinSize.Width() - rTrackingRect.getWidth() ), + sal_Int32( 0 ))); + + sal_Int32 nSize = std::min( aContainerWinSize.Width(), rTrackingRect.getWidth() ); + sal_Int32 nDockHeight = std::max( static_cast<sal_Int32>(aDockingAreaRect.getHeight()), sal_Int32( 0 )); + if ( nDockHeight == 0 ) + { + sal_Int32 nPosY( std::max( aDockingAreaRect.Top(), aDockingAreaRect.Bottom() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + nPosY -= rTrackingRect.getHeight(); + rTrackingRect.SetPos( Point( nPosX, nPosY )); + rUIElement.m_aDockedData.m_aPos.Y() = 0; + } + else if ( rMousePos.Y() < ( aDockingAreaRect.Top() + ( nDockHeight / 2 ))) + { + rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Top() - rTrackingRect.getHeight() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) + rUIElement.m_aDockedData.m_aPos.Y() = 0; + else + rUIElement.m_aDockedData.m_aPos.Y() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + rDockingOperation = DOCKOP_BEFORE_COLROW; + } + else + { + rTrackingRect.SetPos( Point( nPosX, aDockingAreaRect.Bottom() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_TOP ) + rUIElement.m_aDockedData.m_aPos.Y() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + else + rUIElement.m_aDockedData.m_aPos.Y() = 0; + rDockingOperation = DOCKOP_AFTER_COLROW; + } + rTrackingRect.setWidth( nSize ); + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + nPosX = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).X(); + } + rUIElement.m_aDockedData.m_aPos.X() = nPosX; + } + else + { + sal_Int32 nMaxDockingAreaHeight = std::max( sal_Int32( 0 ), sal_Int32( nMaxLeftRightDockAreaSize )); + sal_Int32 nPosY( std::max( sal_Int32( aTrackingRect.Top()), sal_Int32( nTopDockingAreaSize ))); + if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) + nPosY = std::min( nPosY, + std::max( sal_Int32( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() )), + sal_Int32( nTopDockingAreaSize ))); + + sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); + sal_Int32 nDockWidth = std::max( static_cast<sal_Int32>(aDockingAreaRect.getWidth()), sal_Int32( 0 )); + if ( nDockWidth == 0 ) + { + sal_Int32 nPosX( std::max( aDockingAreaRect.Left(), aDockingAreaRect.Right() )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_RIGHT ) + nPosX -= rTrackingRect.getWidth(); + rTrackingRect.SetPos( Point( nPosX, nPosY )); + rUIElement.m_aDockedData.m_aPos.X() = 0; + } + else if ( rMousePos.X() < ( aDockingAreaRect.Left() + ( nDockWidth / 2 ))) + { + rTrackingRect.SetPos( Point( aDockingAreaRect.Left() - rTrackingRect.getWidth(), nPosY )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rUIElement.m_aDockedData.m_aPos.X() = 0; + else + rUIElement.m_aDockedData.m_aPos.X() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + rDockingOperation = DOCKOP_BEFORE_COLROW; + } + else + { + rTrackingRect.SetPos( Point( aDockingAreaRect.Right(), nPosY )); + if ( eDockedArea == ui::DockingArea_DOCKINGAREA_LEFT ) + rUIElement.m_aDockedData.m_aPos.X() = ( nMaxRowCol >= 0 ) ? nMaxRowCol+1 : 0; + else + rUIElement.m_aDockedData.m_aPos.X() = 0; + rDockingOperation = DOCKOP_AFTER_COLROW; + } + rTrackingRect.setHeight( nSize ); + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + nPosY = pDockingAreaWindow->ScreenToOutputPixel( + pContainerWindow->OutputToScreenPixel( rTrackingRect.TopLeft() )).Y(); + } + rUIElement.m_aDockedData.m_aPos.Y() = nPosY; + } + } +} + +framework::ToolbarLayoutManager::DockingOperation ToolbarLayoutManager::implts_determineDockingOperation( + ui::DockingArea DockingArea, + const ::Rectangle& rRowColRect, + const Point& rMousePos ) +{ + const sal_Int32 nHorzVerticalRegionSize = 6; + const sal_Int32 nHorzVerticalMoveRegion = 4; + + if ( rRowColRect.IsInside( rMousePos )) + { + if ( isHorizontalDockingArea( DockingArea )) + { + sal_Int32 nRegion = rRowColRect.getHeight() / nHorzVerticalRegionSize; + sal_Int32 nPosY = rRowColRect.Top() + nRegion; + + if ( rMousePos.Y() < nPosY ) + return ( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) ? DOCKOP_BEFORE_COLROW : DOCKOP_AFTER_COLROW; + else if ( rMousePos.Y() < ( nPosY + nRegion*nHorzVerticalMoveRegion )) + return DOCKOP_ON_COLROW; + else + return ( DockingArea == ui::DockingArea_DOCKINGAREA_TOP ) ? DOCKOP_AFTER_COLROW : DOCKOP_BEFORE_COLROW; + } + else + { + sal_Int32 nRegion = rRowColRect.getWidth() / nHorzVerticalRegionSize; + sal_Int32 nPosX = rRowColRect.Left() + nRegion; + + if ( rMousePos.X() < nPosX ) + return ( DockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) ? DOCKOP_BEFORE_COLROW : DOCKOP_AFTER_COLROW; + else if ( rMousePos.X() < ( nPosX + nRegion*nHorzVerticalMoveRegion )) + return DOCKOP_ON_COLROW; + else + return ( DockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) ? DOCKOP_AFTER_COLROW : DOCKOP_BEFORE_COLROW; + } + } + else + return DOCKOP_ON_COLROW; +} + +::Rectangle ToolbarLayoutManager::implts_calcTrackingAndElementRect( + ui::DockingArea eDockingArea, + sal_Int32 nRowCol, + UIElement& rUIElement, + const ::Rectangle& rTrackingRect, + const ::Rectangle& rRowColumnRect, + const ::Size& rContainerWinSize ) +{ + ReadGuard aReadGuard( m_aLock ); + ::Rectangle aDockingAreaOffsets( m_aDockingAreaOffsets ); + aReadGuard.unlock(); + + bool bHorizontalDockArea( isHorizontalDockingArea( eDockingArea )); + sal_Int32 nTopDockingAreaSize( implts_getTopBottomDockingAreaSizes().Width() ); + sal_Int32 nBottomDockingAreaSize( implts_getTopBottomDockingAreaSizes().Height() ); + + sal_Int32 nMaxLeftRightDockAreaSize = rContainerWinSize.Height() - + nTopDockingAreaSize - + nBottomDockingAreaSize - + aDockingAreaOffsets.Top() - + aDockingAreaOffsets.Bottom(); + + ::Rectangle aTrackingRect( rTrackingRect ); + if ( bHorizontalDockArea ) + { + sal_Int32 nPosX( std::max( sal_Int32( rTrackingRect.Left()), sal_Int32( 0 ))); + if (( nPosX + rTrackingRect.getWidth()) > rContainerWinSize.Width() ) + nPosX = std::min( nPosX, + std::max( sal_Int32( rContainerWinSize.Width() - rTrackingRect.getWidth() ), + sal_Int32( 0 ))); + + sal_Int32 nSize = std::min( rContainerWinSize.Width(), rTrackingRect.getWidth() ); + + aTrackingRect.SetPos( ::Point( nPosX, rRowColumnRect.Top() )); + aTrackingRect.setWidth( nSize ); + aTrackingRect.setHeight( rRowColumnRect.getHeight() ); + + // Set virtual position + rUIElement.m_aDockedData.m_aPos.X() = nPosX; + rUIElement.m_aDockedData.m_aPos.Y() = nRowCol; + } + else + { + sal_Int32 nMaxDockingAreaHeight = std::max( sal_Int32( 0 ), + sal_Int32( nMaxLeftRightDockAreaSize )); + + sal_Int32 nPosY( std::max( sal_Int32( aTrackingRect.Top()), sal_Int32( nTopDockingAreaSize ))); + if (( nPosY + aTrackingRect.getHeight()) > ( nTopDockingAreaSize + nMaxDockingAreaHeight )) + nPosY = std::min( nPosY, + std::max( sal_Int32( nTopDockingAreaSize + ( nMaxDockingAreaHeight - aTrackingRect.getHeight() )), + sal_Int32( nTopDockingAreaSize ))); + + sal_Int32 nSize = std::min( nMaxDockingAreaHeight, static_cast<sal_Int32>(aTrackingRect.getHeight()) ); + + aTrackingRect.SetPos( ::Point( rRowColumnRect.Left(), nPosY )); + aTrackingRect.setWidth( rRowColumnRect.getWidth() ); + aTrackingRect.setHeight( nSize ); + + aReadGuard.lock(); + uno::Reference< awt::XWindow > xDockingAreaWindow( m_xDockAreaWindows[eDockingArea] ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + aReadGuard.unlock(); + + sal_Int32 nDockPosY( 0 ); + Window* pDockingAreaWindow( 0 ); + Window* pContainerWindow( 0 ); + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pDockingAreaWindow = VCLUnoHelper::GetWindow( xDockingAreaWindow ); + pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + nDockPosY = pDockingAreaWindow->ScreenToOutputPixel( pContainerWindow->OutputToScreenPixel( ::Point( 0, nPosY ))).Y(); + } + + // Set virtual position + rUIElement.m_aDockedData.m_aPos.X() = nRowCol; + rUIElement.m_aDockedData.m_aPos.Y() = nDockPosY; + } + + return aTrackingRect; +} + +void ToolbarLayoutManager::implts_setTrackingRect( ui::DockingArea eDockingArea, const ::Point& rMousePos, ::Rectangle& rTrackingRect ) +{ + ::Point aPoint( rTrackingRect.TopLeft()); + if ( isHorizontalDockingArea( eDockingArea )) + aPoint.X() = rMousePos.X(); + else + aPoint.Y() = rMousePos.Y(); + rTrackingRect.SetPos( aPoint ); +} + +void ToolbarLayoutManager::implts_renumberRowColumnData( + ui::DockingArea eDockingArea, + DockingOperation /*eDockingOperation*/, + const UIElement& rUIElement ) +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< container::XNameAccess > xPersistentWindowState( m_xPersistentWindowState ); + aReadLock.unlock(); + + bool bHorzDockingArea( isHorizontalDockingArea( eDockingArea )); + sal_Int32 nRowCol( bHorzDockingArea ? rUIElement.m_aDockedData.m_aPos.Y() : rUIElement.m_aDockedData.m_aPos.X() ); + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + WriteGuard aWriteLock( m_aLock ); + UIElementVector::iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if (( pIter->m_aDockedData.m_nDockedArea == sal_Int16( eDockingArea )) && ( pIter->m_aName != rUIElement.m_aName )) + { + // Don't change toolbars without a valid docking position! + if ( isDefaultPos( pIter->m_aDockedData.m_aPos )) + continue; + + sal_Int32 nWindowRowCol = ( bHorzDockingArea ) ? pIter->m_aDockedData.m_aPos.Y() : pIter->m_aDockedData.m_aPos.X(); + if ( nWindowRowCol >= nRowCol ) + { + if ( bHorzDockingArea ) + pIter->m_aDockedData.m_aPos.Y() += 1; + else + pIter->m_aDockedData.m_aPos.X() += 1; + } + } + } + aWriteLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + // We have to change the persistent window state part + if ( xPersistentWindowState.is() ) + { + try + { + uno::Sequence< ::rtl::OUString > aWindowElements = xPersistentWindowState->getElementNames(); + for ( sal_Int32 i = 0; i < aWindowElements.getLength(); i++ ) + { + if ( rUIElement.m_aName != aWindowElements[i] ) + { + try + { + uno::Sequence< beans::PropertyValue > aPropValueSeq; + awt::Point aDockedPos; + ui::DockingArea nDockedArea( ui::DockingArea_DOCKINGAREA_DEFAULT ); + + xPersistentWindowState->getByName( aWindowElements[i] ) >>= aPropValueSeq; + for ( sal_Int32 j = 0; j < aPropValueSeq.getLength(); j++ ) + { + if ( aPropValueSeq[j].Name.equalsAscii( WINDOWSTATE_PROPERTY_DOCKINGAREA )) + aPropValueSeq[j].Value >>= nDockedArea; + else if ( aPropValueSeq[j].Name.equalsAscii( WINDOWSTATE_PROPERTY_DOCKPOS )) + aPropValueSeq[j].Value >>= aDockedPos; + } + + // Don't change toolbars without a valid docking position! + if ( isDefaultPos( aDockedPos )) + continue; + + sal_Int32 nWindowRowCol = ( bHorzDockingArea ) ? aDockedPos.Y : aDockedPos.X; + if (( nDockedArea == eDockingArea ) && ( nWindowRowCol >= nRowCol )) + { + if ( bHorzDockingArea ) + aDockedPos.Y += 1; + else + aDockedPos.X += 1; + + uno::Reference< container::XNameReplace > xReplace( xPersistentWindowState, uno::UNO_QUERY ); + xReplace->replaceByName( aWindowElements[i], makeAny( aPropValueSeq )); + } + } + catch ( uno::Exception& ) {} + } + } + } + catch ( uno::Exception& ) {} + } +} + +//--------------------------------------------------------------------------------------------------------- +// XWindowListener +//--------------------------------------------------------------------------------------------------------- +void SAL_CALL ToolbarLayoutManager::windowResized( const awt::WindowEvent& aEvent ) +throw( uno::RuntimeException ) +{ + WriteGuard aWriteLock( m_aLock ); + bool bLocked( m_bDockingInProgress ); + bool bLayoutInProgress( m_bLayoutInProgress ); + aWriteLock.unlock(); + + // Do not do anything if we are in the middle of a docking process. This would interfere all other + // operations. We will store the new position and size in the docking handlers. + // Do not do anything if we are in the middle of our layouting process. We will adapt the position + // and size of the user interface elements. + if ( !bLocked && !bLayoutInProgress ) + { + bool bNotify( false ); + uno::Reference< awt::XWindow > xWindow( aEvent.Source, uno::UNO_QUERY ); + + UIElement aUIElement = implts_findToolbar( aEvent.Source ); + if ( aUIElement.m_xUIElement.is() ) + { + if ( aUIElement.m_bFloating ) + { + uno::Reference< awt::XWindow2 > xWindow2( xWindow, uno::UNO_QUERY ); + + if( xWindow2.is() ) + { + awt::Rectangle aPos = xWindow2->getPosSize(); + awt::Size aSize = xWindow2->getOutputSize(); // always use output size for consistency + bool bVisible = xWindow2->isVisible(); + + // update element data + aUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); + aUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); + aUIElement.m_bVisible = bVisible; + } + + implts_writeWindowStateData( aUIElement ); + } + else + { + implts_setLayoutDirty(); + bNotify = true; + } + } + + if ( bNotify ) + m_pParentLayouter->requestLayout( ILayoutNotifications::HINT_TOOLBARSPACE_HAS_CHANGED ); + } +} + +void SAL_CALL ToolbarLayoutManager::windowMoved( const awt::WindowEvent& /*aEvent*/ ) +throw( uno::RuntimeException ) +{ +} + +void SAL_CALL ToolbarLayoutManager::windowShown( const lang::EventObject& /*aEvent*/ ) +throw( uno::RuntimeException ) +{ +} + +void SAL_CALL ToolbarLayoutManager::windowHidden( const lang::EventObject& /*aEvent*/ ) +throw( uno::RuntimeException ) +{ +} + +//--------------------------------------------------------------------------------------------------------- +// XDockableWindowListener +//--------------------------------------------------------------------------------------------------------- +void SAL_CALL ToolbarLayoutManager::startDocking( const awt::DockingEvent& e ) +throw (uno::RuntimeException) +{ + bool bWinFound( false ); + + ReadGuard aReadGuard( m_aLock ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + uno::Reference< awt::XWindow2 > xWindow( e.Source, uno::UNO_QUERY ); + aReadGuard.unlock(); + + Window* pContainerWindow( 0 ); + Window* pWindow( 0 ); + ::Point aMousePos; + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + pContainerWindow = VCLUnoHelper::GetWindow( xContainerWindow ); + aMousePos = pContainerWindow->ScreenToOutputPixel( ::Point( e.MousePos.X, e.MousePos.Y )); + } + + UIElement aUIElement = implts_findToolbar( e.Source ); + + if ( aUIElement.m_xUIElement.is() && xWindow.is() ) + { + awt::Rectangle aRect; + + bWinFound = true; + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow->isFloating() ) + { + awt::Rectangle aPos = xWindow->getPosSize(); + awt::Size aSize = xWindow->getOutputSize(); + + aUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); + aUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + { + ToolBox* pToolBox = (ToolBox *)pWindow; + aUIElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); + aUIElement.m_aFloatingData.m_bIsHorizontal = isToolboxHorizontalAligned( pToolBox ); + } + } + } + + WriteGuard aWriteLock( m_aLock ); + m_bDockingInProgress = bWinFound; + m_aDockUIElement = aUIElement; + m_aDockUIElement.m_bUserActive = true; + m_aStartDockMousePos = aMousePos; + aWriteLock.unlock(); +} + +awt::DockingData SAL_CALL ToolbarLayoutManager::docking( const awt::DockingEvent& e ) +throw (uno::RuntimeException) +{ + const sal_Int32 MAGNETIC_DISTANCE_UNDOCK = 25; + const sal_Int32 MAGNETIC_DISTANCE_DOCK = 20; + + ReadGuard aReadLock( m_aLock ); + awt::DockingData aDockingData; + uno::Reference< awt::XDockableWindow > xDockWindow( e.Source, uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xWindow( e.Source, uno::UNO_QUERY ); + uno::Reference< awt::XWindow > xTopDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_TOP] ); + uno::Reference< awt::XWindow > xLeftDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_LEFT] ); + uno::Reference< awt::XWindow > xRightDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_RIGHT] ); + uno::Reference< awt::XWindow > xBottomDockingWindow( m_xDockAreaWindows[ui::DockingArea_DOCKINGAREA_BOTTOM] ); + uno::Reference< awt::XWindow2 > xContainerWindow( m_xContainerWindow ); + UIElement aUIDockingElement( m_aDockUIElement ); + DockingOperation eDockingOperation( DOCKOP_ON_COLROW ); + bool bDockingInProgress( m_bDockingInProgress ); + aReadLock.unlock(); + + if ( bDockingInProgress ) + aDockingData.TrackingRectangle = e.TrackingRectangle; + + if ( bDockingInProgress && xDockWindow.is() && xWindow.is() ) + { + try + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + + sal_Int16 eDockingArea( -1 ); // none + sal_Int32 nMagneticZone( aUIDockingElement.m_bFloating ? MAGNETIC_DISTANCE_DOCK : MAGNETIC_DISTANCE_UNDOCK ); + awt::Rectangle aNewTrackingRect; + ::Rectangle aTrackingRect( e.TrackingRectangle.X, e.TrackingRectangle.Y, + ( e.TrackingRectangle.X + e.TrackingRectangle.Width ), + ( e.TrackingRectangle.Y + e.TrackingRectangle.Height )); + + awt::Rectangle aTmpRect = xTopDockingWindow->getPosSize(); + ::Rectangle aTopDockRect( aTmpRect.X, aTmpRect.Y, aTmpRect.Width, aTmpRect.Height ); + ::Rectangle aHotZoneTopDockRect( implts_calcHotZoneRect( aTopDockRect, nMagneticZone )); + + aTmpRect = xBottomDockingWindow->getPosSize(); + ::Rectangle aBottomDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width), ( aTmpRect.Y + aTmpRect.Height )); + ::Rectangle aHotZoneBottomDockRect( implts_calcHotZoneRect( aBottomDockRect, nMagneticZone )); + + aTmpRect = xLeftDockingWindow->getPosSize(); + ::Rectangle aLeftDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width ), ( aTmpRect.Y + aTmpRect.Height )); + ::Rectangle aHotZoneLeftDockRect( implts_calcHotZoneRect( aLeftDockRect, nMagneticZone )); + + aTmpRect = xRightDockingWindow->getPosSize(); + ::Rectangle aRightDockRect( aTmpRect.X, aTmpRect.Y, ( aTmpRect.X + aTmpRect.Width ), ( aTmpRect.Y + aTmpRect.Height )); + ::Rectangle aHotZoneRightDockRect( implts_calcHotZoneRect( aRightDockRect, nMagneticZone )); + + Window* pContainerWindow( VCLUnoHelper::GetWindow( xContainerWindow ) ); + Window* pDockingAreaWindow( 0 ); + ::Point aMousePos( pContainerWindow->ScreenToOutputPixel( ::Point( e.MousePos.X, e.MousePos.Y ))); + + if ( aHotZoneTopDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_TOP; + else if ( aHotZoneBottomDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_BOTTOM; + else if ( aHotZoneLeftDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_LEFT; + else if ( aHotZoneRightDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_RIGHT; + + // Higher priority for movements inside the real docking area + if ( aTopDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_TOP; + else if ( aBottomDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_BOTTOM; + else if ( aLeftDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_LEFT; + else if ( aRightDockRect.IsInside( aMousePos )) + eDockingArea = ui::DockingArea_DOCKINGAREA_RIGHT; + + // Determine if we have a toolbar and set alignment according to the docking area! + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + ToolBox* pToolBox = 0; + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + pToolBox = (ToolBox *)pWindow; + + if ( eDockingArea != -1 ) + { + if ( eDockingArea == ui::DockingArea_DOCKINGAREA_TOP ) + { + aUIDockingElement.m_aDockedData.m_nDockedArea = ui::DockingArea_DOCKINGAREA_TOP; + aUIDockingElement.m_bFloating = false; + pDockingAreaWindow = VCLUnoHelper::GetWindow( xTopDockingWindow ); + } + else if ( eDockingArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + { + aUIDockingElement.m_aDockedData.m_nDockedArea = ui::DockingArea_DOCKINGAREA_BOTTOM; + aUIDockingElement.m_bFloating = false; + pDockingAreaWindow = VCLUnoHelper::GetWindow( xBottomDockingWindow ); + } + else if ( eDockingArea == ui::DockingArea_DOCKINGAREA_LEFT ) + { + aUIDockingElement.m_aDockedData.m_nDockedArea = ui::DockingArea_DOCKINGAREA_LEFT; + aUIDockingElement.m_bFloating = false; + pDockingAreaWindow = VCLUnoHelper::GetWindow( xLeftDockingWindow ); + } + else if ( eDockingArea == ui::DockingArea_DOCKINGAREA_RIGHT ) + { + aUIDockingElement.m_aDockedData.m_nDockedArea = ui::DockingArea_DOCKINGAREA_RIGHT; + aUIDockingElement.m_bFloating = false; + pDockingAreaWindow = VCLUnoHelper::GetWindow( xRightDockingWindow ); + } + + ::Point aOutputPos = pContainerWindow->ScreenToOutputPixel( aTrackingRect.TopLeft() ); + aTrackingRect.SetPos( aOutputPos ); + + ::Rectangle aNewDockingRect( aTrackingRect ); + implts_calcDockingPosSize( aUIDockingElement, eDockingOperation, aNewDockingRect, aMousePos ); + + ::Point aScreenPos = pContainerWindow->OutputToScreenPixel( aNewDockingRect.TopLeft() ); + aNewTrackingRect = awt::Rectangle( aScreenPos.X(), aScreenPos.Y(), + aNewDockingRect.getWidth(), aNewDockingRect.getHeight() ); + aDockingData.TrackingRectangle = aNewTrackingRect; + } + else if ( pToolBox && bDockingInProgress ) + { + bool bIsHorizontal = isToolboxHorizontalAligned( pToolBox ); + ::Size aFloatSize = aUIDockingElement.m_aFloatingData.m_aSize; + if ( aFloatSize.Width() > 0 && aFloatSize.Height() > 0 ) + { + aUIDockingElement.m_aFloatingData.m_aPos = pContainerWindow->ScreenToOutputPixel( + ::Point( e.MousePos.X, e.MousePos.Y )); + aDockingData.TrackingRectangle.Height = aFloatSize.Height(); + aDockingData.TrackingRectangle.Width = aFloatSize.Width(); + } + else + { + aFloatSize = pToolBox->CalcWindowSizePixel(); + if ( !bIsHorizontal ) + { + // Floating toolbars are always horizontal aligned! We have to swap + // width/height if we have a vertical aligned toolbar. + sal_Int32 nTemp = aFloatSize.Height(); + aFloatSize.Height() = aFloatSize.Width(); + aFloatSize.Width() = nTemp; + } + + aDockingData.TrackingRectangle.Height = aFloatSize.Height(); + aDockingData.TrackingRectangle.Width = aFloatSize.Width(); + + // For the first time we don't have any data about the floating size of a toolbar. + // We calculate it and store it for later use. + aUIDockingElement.m_aFloatingData.m_aPos = pContainerWindow->ScreenToOutputPixel(::Point( e.MousePos.X, e.MousePos.Y )); + aUIDockingElement.m_aFloatingData.m_aSize = aFloatSize; + aUIDockingElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); + aUIDockingElement.m_aFloatingData.m_bIsHorizontal = isToolboxHorizontalAligned( pToolBox ); + } + aDockingData.TrackingRectangle.X = e.MousePos.X; + aDockingData.TrackingRectangle.Y = e.MousePos.Y; + } + + aDockingData.bFloating = ( eDockingArea == -1 ); + + // Write current data to the member docking progress data + WriteGuard aWriteLock( m_aLock ); + m_aDockUIElement.m_bFloating = aDockingData.bFloating; + if ( !aDockingData.bFloating ) + { + m_aDockUIElement.m_aDockedData = aUIDockingElement.m_aDockedData; + m_eDockOperation = eDockingOperation; + } + else + m_aDockUIElement.m_aFloatingData = aUIDockingElement.m_aFloatingData; + aWriteLock.unlock(); + } + catch ( uno::Exception& ) {} + } + + return aDockingData; +} + +void SAL_CALL ToolbarLayoutManager::endDocking( const awt::EndDockingEvent& e ) +throw (uno::RuntimeException) +{ + bool bDockingInProgress( false ); + bool bStartDockFloated( false ); + bool bFloating( false ); + UIElement aUIDockingElement; + + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + WriteGuard aWriteLock( m_aLock ); + bDockingInProgress = m_bDockingInProgress; + aUIDockingElement = m_aDockUIElement; + bFloating = aUIDockingElement.m_bFloating; + + UIElement& rUIElement = impl_findToolbar( aUIDockingElement.m_aName ); + if ( rUIElement.m_aName == aUIDockingElement.m_aName ) + { + if ( aUIDockingElement.m_bFloating ) + { + // Write last position into position data + uno::Reference< awt::XWindow > xWindow( aUIDockingElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + rUIElement.m_aFloatingData = aUIDockingElement.m_aFloatingData; + awt::Rectangle aTmpRect = xWindow->getPosSize(); + rUIElement.m_aFloatingData.m_aPos = ::Point( aTmpRect.X, aTmpRect.Y ); + // make changes also for our local data as we use it to make data persistent + aUIDockingElement.m_aFloatingData = rUIElement.m_aFloatingData; + } + else + { + rUIElement.m_aDockedData = aUIDockingElement.m_aDockedData; + rUIElement.m_aFloatingData.m_aSize = aUIDockingElement.m_aFloatingData.m_aSize; + + if ( m_eDockOperation != DOCKOP_ON_COLROW ) + { + // we have to renumber our row/column data to insert a new row/column + implts_renumberRowColumnData((ui::DockingArea)aUIDockingElement.m_aDockedData.m_nDockedArea, m_eDockOperation, aUIDockingElement ); + } + } + + bStartDockFloated = rUIElement.m_bFloating; + rUIElement.m_bFloating = m_aDockUIElement.m_bFloating; + rUIElement.m_bUserActive = true; + } + + // reset member for next docking operation + m_aDockUIElement.m_xUIElement.clear(); + m_eDockOperation = DOCKOP_ON_COLROW; + aWriteLock.unlock(); + /* SAFE AREA ----------------------------------------------------------------------------------------------- */ + + implts_writeWindowStateData( aUIDockingElement ); + + if ( bDockingInProgress ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( uno::Reference< awt::XWindow >( e.Source, uno::UNO_QUERY )); + ToolBox* pToolBox = 0; + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + pToolBox = (ToolBox *)pWindow; + + if ( pToolBox ) + { + if( e.bFloating ) + { + if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) + pToolBox->SetAlign( WINDOWALIGN_TOP ); + else + pToolBox->SetAlign( WINDOWALIGN_LEFT ); + } + else + { + ::Size aSize; + + pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); + + // Docked toolbars have always one line + aSize = pToolBox->CalcWindowSizePixel( 1 ); + + // Lock layouting updates as our listener would be called due to SetSizePixel + pToolBox->SetOutputSizePixel( aSize ); + } + } + } + + implts_sortUIElements(); + + aWriteLock.lock(); + m_bDockingInProgress = sal_False; + m_bLayoutDirty = !bStartDockFloated || !bFloating; + bool bNotify = m_bLayoutDirty; + aWriteLock.unlock(); + + if ( bNotify ) + m_pParentLayouter->requestLayout( ILayoutNotifications::HINT_TOOLBARSPACE_HAS_CHANGED ); +} + +sal_Bool SAL_CALL ToolbarLayoutManager::prepareToggleFloatingMode( const lang::EventObject& e ) +throw (uno::RuntimeException) +{ + ReadGuard aReadLock( m_aLock ); + bool bDockingInProgress = m_bDockingInProgress; + aReadLock.unlock(); + + UIElement aUIDockingElement = implts_findToolbar( e.Source ); + bool bWinFound( aUIDockingElement.m_aName.getLength() > 0 ); + uno::Reference< awt::XWindow > xWindow( e.Source, uno::UNO_QUERY ); + + if ( bWinFound && xWindow.is() ) + { + if ( !bDockingInProgress ) + { + awt::Rectangle aRect; + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + if ( xDockWindow->isFloating() ) + { + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xWindow ); + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + { + ToolBox* pToolBox = static_cast< ToolBox *>( pWindow ); + aUIDockingElement.m_aFloatingData.m_aPos = pToolBox->GetPosPixel(); + aUIDockingElement.m_aFloatingData.m_aSize = pToolBox->GetOutputSizePixel(); + aUIDockingElement.m_aFloatingData.m_nLines = pToolBox->GetFloatingLines(); + aUIDockingElement.m_aFloatingData.m_bIsHorizontal = isToolboxHorizontalAligned( pToolBox ); + } + } + + UIElement aUIElement = implts_findToolbar( aUIDockingElement.m_aName ); + if ( aUIElement.m_aName == aUIDockingElement.m_aName ) + implts_setToolbar( aUIDockingElement ); + } + } + } + + return sal_True; +} + +void SAL_CALL ToolbarLayoutManager::toggleFloatingMode( const lang::EventObject& e ) +throw (uno::RuntimeException) +{ + UIElement aUIDockingElement; + + ReadGuard aReadLock( m_aLock ); + bool bDockingInProgress( m_bDockingInProgress ); + if ( bDockingInProgress ) + aUIDockingElement = m_aDockUIElement; + aReadLock.unlock(); + + Window* pWindow( 0 ); + ToolBox* pToolBox( 0 ); + uno::Reference< awt::XWindow2 > xWindow; + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + xWindow = uno::Reference< awt::XWindow2 >( e.Source, uno::UNO_QUERY ); + pWindow = VCLUnoHelper::GetWindow( xWindow ); + + if ( pWindow && pWindow->GetType() == WINDOW_TOOLBOX ) + pToolBox = (ToolBox *)pWindow; + } + + if ( !bDockingInProgress ) + { + aUIDockingElement = implts_findToolbar( e.Source ); + bool bWinFound = ( aUIDockingElement.m_aName.getLength() > 0 ); + + if ( bWinFound && xWindow.is() ) + { + aUIDockingElement.m_bFloating = !aUIDockingElement.m_bFloating; + aUIDockingElement.m_bUserActive = true; + + implts_setLayoutInProgress( true ); + if ( aUIDockingElement.m_bFloating ) + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pToolBox ) + { + pToolBox->SetLineCount( aUIDockingElement.m_aFloatingData.m_nLines ); + if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) + pToolBox->SetAlign( WINDOWALIGN_TOP ); + else + pToolBox->SetAlign( WINDOWALIGN_LEFT ); + } + + bool bUndefPos = hasDefaultPosValue( aUIDockingElement.m_aFloatingData.m_aPos ); + bool bSetSize = !hasEmptySize( aUIDockingElement.m_aFloatingData.m_aSize ); + + if ( bUndefPos ) + aUIDockingElement.m_aFloatingData.m_aPos = implts_findNextCascadeFloatingPos(); + + if ( !bSetSize ) + { + if ( pToolBox ) + aUIDockingElement.m_aFloatingData.m_aSize = pToolBox->CalcFloatingWindowSizePixel(); + else + aUIDockingElement.m_aFloatingData.m_aSize = pWindow->GetOutputSizePixel(); + } + + xWindow->setPosSize( aUIDockingElement.m_aFloatingData.m_aPos.X(), + aUIDockingElement.m_aFloatingData.m_aPos.Y(), + 0, 0, awt::PosSize::POS ); + xWindow->setOutputSize( AWTSize( aUIDockingElement.m_aFloatingData.m_aSize ) ); + } + else + { + if ( isDefaultPos( aUIDockingElement.m_aDockedData.m_aPos )) + { + // Docking on its default position without a preset position - + // we have to find a good place for it. + ::Point aPixelPos; + ::Point aDockPos; + ::Size aSize; + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pToolBox ) + aSize = pToolBox->CalcWindowSizePixel( 1, ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea ) ); + else + aSize = pWindow->GetSizePixel(); + } + + implts_findNextDockingPos((ui::DockingArea)aUIDockingElement.m_aDockedData.m_nDockedArea, aSize, aDockPos, aPixelPos ); + aUIDockingElement.m_aDockedData.m_aPos = aDockPos; + } + + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pToolBox ) + { + pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); + ::Size aSize = pToolBox->CalcWindowSizePixel( 1 ); + awt::Rectangle aRect = xWindow->getPosSize(); + xWindow->setPosSize( aRect.X, aRect.Y, 0, 0, awt::PosSize::POS ); + xWindow->setOutputSize( AWTSize( aSize ) ); + } + } + + implts_setLayoutInProgress( false ); + implts_setToolbar( aUIDockingElement ); + implts_writeWindowStateData( aUIDockingElement ); + implts_sortUIElements(); + implts_setLayoutDirty(); + + aReadLock.lock(); + ILayoutNotifications* pParentLayouter( m_pParentLayouter ); + aReadLock.unlock(); + + if ( pParentLayouter ) + pParentLayouter->requestLayout( ILayoutNotifications::HINT_TOOLBARSPACE_HAS_CHANGED ); + } + } + else + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pToolBox ) + { + if ( aUIDockingElement.m_bFloating ) + { + if ( aUIDockingElement.m_aFloatingData.m_bIsHorizontal ) + pToolBox->SetAlign( WINDOWALIGN_TOP ); + else + pToolBox->SetAlign( WINDOWALIGN_LEFT ); + } + else + pToolBox->SetAlign( ImplConvertAlignment( aUIDockingElement.m_aDockedData.m_nDockedArea) ); + } + } +} + +void SAL_CALL ToolbarLayoutManager::closed( const lang::EventObject& e ) +throw (uno::RuntimeException) +{ + rtl::OUString aName; + UIElement aUIElement; + UIElementVector::iterator pIter; + + WriteGuard aWriteLock( m_aLock ); + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + uno::Reference< ui::XUIElement > xUIElement( pIter->m_xUIElement ); + if ( xUIElement.is() ) + { + uno::Reference< uno::XInterface > xIfac( xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xIfac == e.Source ) + { + aName = pIter->m_aName; + + // user closes a toolbar => + // context sensitive toolbar: only destroy toolbar and store state. + // context sensitive toolbar: make it invisible, store state and destroy it. + if ( !pIter->m_bContextSensitive ) + pIter->m_bVisible = sal_False; + + aUIElement = *pIter; + break; + } + } + } + aWriteLock.unlock(); + + // destroy element + if ( aName.getLength() > 0 ) + { + implts_writeWindowStateData( aUIElement ); + destroyToolbar( aName ); + } +} + +void SAL_CALL ToolbarLayoutManager::endPopupMode( const awt::EndPopupModeEvent& /*e*/ ) +throw (uno::RuntimeException) +{ +} + +//--------------------------------------------------------------------------------------------------------- +// XUIConfigurationListener +//--------------------------------------------------------------------------------------------------------- +void SAL_CALL ToolbarLayoutManager::elementInserted( const ui::ConfigurationEvent& rEvent ) +throw (uno::RuntimeException) +{ + UIElement aUIElement = implts_findToolbar( rEvent.ResourceURL ); + + uno::Reference< ui::XUIElementSettings > xElementSettings( aUIElement.m_xUIElement, uno::UNO_QUERY ); + if ( xElementSettings.is() ) + { + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + if ( xPropSet.is() ) + { + if ( rEvent.Source == uno::Reference< uno::XInterface >( m_xDocCfgMgr, uno::UNO_QUERY )) + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( m_xDocCfgMgr )); + } + xElementSettings->updateSettings(); + } + else + { + ::rtl::OUString aElementType; + ::rtl::OUString aElementName; + parseResourceURL( rEvent.ResourceURL, aElementType, aElementName ); + if ( aElementName.indexOf( m_aCustomTbxPrefix ) != -1 ) + { + // custom toolbar must be directly created, shown and layouted! + createToolbar( rEvent.ResourceURL ); + uno::Reference< ui::XUIElement > xUIElement = getToolbar( rEvent.ResourceURL ); + if ( xUIElement.is() ) + { + ::rtl::OUString aUIName; + uno::Reference< ui::XUIConfigurationManager > xCfgMgr; + uno::Reference< beans::XPropertySet > xPropSet; + + try + { + xCfgMgr = uno::Reference< ui::XUIConfigurationManager >( rEvent.Source, uno::UNO_QUERY ); + xPropSet = uno::Reference< beans::XPropertySet >( xCfgMgr->getSettings( rEvent.ResourceURL, sal_False ), uno::UNO_QUERY ); + + if ( xPropSet.is() ) + xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UIName" ))) >>= aUIName; + } + catch ( container::NoSuchElementException& ) {} + catch ( beans::UnknownPropertyException& ) {} + catch ( lang::WrappedTargetException& ) {} + + { + vos::OGuard aGuard( Application::GetSolarMutex() ); + Window* pWindow = getWindowFromXUIElement( xUIElement ); + if ( pWindow ) + pWindow->SetText( aUIName ); + } + + showToolbar( rEvent.ResourceURL ); + } + } + } +} + +void SAL_CALL ToolbarLayoutManager::elementRemoved( const ui::ConfigurationEvent& rEvent ) +throw (uno::RuntimeException) +{ + ReadGuard aReadLock( m_aLock ); + uno::Reference< awt::XWindow > xContainerWindow( m_xContainerWindow, uno::UNO_QUERY ); + uno::Reference< ui::XUIConfigurationManager > xModuleCfgMgr( m_xModuleCfgMgr ); + uno::Reference< ui::XUIConfigurationManager > xDocCfgMgr( m_xDocCfgMgr ); + aReadLock.unlock(); + + UIElement aUIElement = implts_findToolbar( rEvent.ResourceURL ); + uno::Reference< ui::XUIElementSettings > xElementSettings( aUIElement.m_xUIElement, uno::UNO_QUERY ); + if ( xElementSettings.is() ) + { + bool bNoSettings( false ); + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + uno::Reference< uno::XInterface > xElementCfgMgr; + uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + + if ( !xElementCfgMgr.is() ) + return; + + // Check if the same UI configuration manager has changed => check further + if ( rEvent.Source == xElementCfgMgr ) + { + // Same UI configuration manager where our element has its settings + if ( rEvent.Source == uno::Reference< uno::XInterface >( xDocCfgMgr, uno::UNO_QUERY )) + { + // document settings removed + if ( xModuleCfgMgr->hasSettings( rEvent.ResourceURL )) + { + xPropSet->setPropertyValue( aConfigSourcePropName, makeAny( xModuleCfgMgr )); + xElementSettings->updateSettings(); + return; + } + } + + bNoSettings = true; + } + + // No settings anymore, element must be destroyed + if ( xContainerWindow.is() && bNoSettings ) + destroyToolbar( rEvent.ResourceURL ); + } +} + +void SAL_CALL ToolbarLayoutManager::elementReplaced( const ui::ConfigurationEvent& rEvent ) +throw (uno::RuntimeException) +{ + UIElement aUIElement = implts_findToolbar( rEvent.ResourceURL ); + + uno::Reference< ui::XUIElementSettings > xElementSettings( aUIElement.m_xUIElement, uno::UNO_QUERY ); + if ( xElementSettings.is() ) + { + ::rtl::OUString aConfigSourcePropName( RTL_CONSTASCII_USTRINGPARAM( "ConfigurationSource" )); + uno::Reference< uno::XInterface > xElementCfgMgr; + uno::Reference< beans::XPropertySet > xPropSet( xElementSettings, uno::UNO_QUERY ); + + if ( xPropSet.is() ) + xPropSet->getPropertyValue( aConfigSourcePropName ) >>= xElementCfgMgr; + + if ( !xElementCfgMgr.is() ) + return; + + // Check if the same UI configuration manager has changed => update settings + if ( rEvent.Source == xElementCfgMgr ) + { + xElementSettings->updateSettings(); + + WriteGuard aWriteLock( m_aLock ); + bool bNotify = !aUIElement.m_bFloating; + m_bLayoutDirty = bNotify; + ILayoutNotifications* pParentLayouter( m_pParentLayouter ); + aWriteLock.unlock(); + + if ( bNotify && pParentLayouter ) + pParentLayouter->requestLayout( ILayoutNotifications::HINT_TOOLBARSPACE_HAS_CHANGED ); + } + } +} + +uno::Reference< ui::XUIElement > ToolbarLayoutManager::getToolbar( const ::rtl::OUString& aName ) +{ + return implts_findToolbar( aName ).m_xUIElement; +} + +uno::Sequence< uno::Reference< ui::XUIElement > > ToolbarLayoutManager::getToolbars() +{ + uno::Sequence< uno::Reference< ui::XUIElement > > aSeq; + + ReadGuard aReadLock( m_aLock ); + if ( m_aUIElements.size() > 0 ) + { + sal_uInt32 nCount(0); + UIElementVector::iterator pIter; + for ( pIter = m_aUIElements.begin(); pIter != m_aUIElements.end(); pIter++ ) + { + if ( pIter->m_xUIElement.is() ) + { + ++nCount; + aSeq.realloc( nCount ); + aSeq[nCount-1] = pIter->m_xUIElement; + } + } + } + + return aSeq; +} + +bool ToolbarLayoutManager::floatToolbar( const ::rtl::OUString& rResourceURL ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + if ( aUIElement.m_xUIElement.is() ) + { + try + { + uno::Reference< awt::XDockableWindow > xDockWindow( aUIElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xDockWindow.is() && !xDockWindow->isFloating() ) + { + aUIElement.m_bFloating = true; + implts_writeWindowStateData( aUIElement ); + xDockWindow->setFloatingMode( true ); + + implts_setLayoutDirty(); + implts_setToolbar( aUIElement ); + return true; + } + } + catch ( lang::DisposedException& ) {} + } + + return false; +} + +bool ToolbarLayoutManager::lockToolbar( const ::rtl::OUString& rResourceURL ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + if ( aUIElement.m_xUIElement.is() ) + { + try + { + uno::Reference< awt::XDockableWindow > xDockWindow( aUIElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xDockWindow.is() && !xDockWindow->isFloating() && !xDockWindow->isLocked() ) + { + aUIElement.m_aDockedData.m_bLocked = true; + implts_writeWindowStateData( aUIElement ); + xDockWindow->lock(); + + implts_setLayoutDirty(); + implts_setToolbar( aUIElement ); + return true; + } + } + catch ( lang::DisposedException& ) {} + } + + return false; +} + +bool ToolbarLayoutManager::unlockToolbar( const ::rtl::OUString& rResourceURL ) +{ + UIElement aUIElement = implts_findToolbar( rResourceURL ); + if ( aUIElement.m_xUIElement.is() ) + { + try + { + uno::Reference< awt::XDockableWindow > xDockWindow( aUIElement.m_xUIElement->getRealInterface(), uno::UNO_QUERY ); + if ( xDockWindow.is() && !xDockWindow->isFloating() && xDockWindow->isLocked() ) + { + aUIElement.m_aDockedData.m_bLocked = false; + implts_writeWindowStateData( aUIElement ); + xDockWindow->unlock(); + + implts_setLayoutDirty(); + implts_setToolbar( aUIElement ); + return true; + } + } + catch ( lang::DisposedException& ) {} + } + + return false; +} + +bool ToolbarLayoutManager::isToolbarVisible( const ::rtl::OUString& rResourceURL ) +{ + uno::Reference< awt::XWindow2 > xWindow2( implts_getXWindow( rResourceURL ), uno::UNO_QUERY ); + return ( xWindow2.is() && xWindow2->isVisible() ); +} + +bool ToolbarLayoutManager::isToolbarFloating( const ::rtl::OUString& rResourceURL ) +{ + uno::Reference< awt::XDockableWindow > xDockWindow( implts_getXWindow( rResourceURL ), uno::UNO_QUERY ); + return ( xDockWindow.is() && xDockWindow->isFloating() ); +} + +bool ToolbarLayoutManager::isToolbarDocked( const ::rtl::OUString& rResourceURL ) +{ + return !isToolbarFloating( rResourceURL ); +} + +bool ToolbarLayoutManager::isToolbarLocked( const ::rtl::OUString& rResourceURL ) +{ + uno::Reference< awt::XDockableWindow > xDockWindow( implts_getXWindow( rResourceURL ), uno::UNO_QUERY ); + return ( xDockWindow.is() && xDockWindow->isLocked() ); +} + +awt::Size ToolbarLayoutManager::getToolbarSize( const ::rtl::OUString& rResourceURL ) +{ + Window* pWindow = implts_getWindow( rResourceURL ); + + vos::OGuard aGuard( Application::GetSolarMutex() ); + if ( pWindow ) + { + ::Size aSize = pWindow->GetSizePixel(); + awt::Size aWinSize; + aWinSize.Width = aSize.Width(); + aWinSize.Height = aSize.Height(); + return aWinSize; + } + + return awt::Size(); +} + +awt::Point ToolbarLayoutManager::getToolbarPos( const ::rtl::OUString& rResourceURL ) +{ + awt::Point aPos; + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + uno::Reference< awt::XWindow > xWindow( implts_getXWindow( rResourceURL )); + if ( xWindow.is() ) + { + if ( aUIElement.m_bFloating ) + { + awt::Rectangle aRect = xWindow->getPosSize(); + aPos.X = aRect.X; + aPos.Y = aRect.Y; + } + else + { + ::Point aVirtualPos = aUIElement.m_aDockedData.m_aPos; + aPos.X = aVirtualPos.X(); + aPos.Y = aVirtualPos.Y(); + } + } + + return aPos; +} + +void ToolbarLayoutManager::setToolbarSize( const ::rtl::OUString& rResourceURL, const awt::Size& aSize ) +{ + uno::Reference< awt::XWindow2 > xWindow( implts_getXWindow( rResourceURL ), uno::UNO_QUERY ); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + if ( xWindow.is() && xDockWindow.is() && xDockWindow->isFloating() ) + { + xWindow->setOutputSize( aSize ); + aUIElement.m_aFloatingData.m_aSize = ::Size( aSize.Width, aSize.Height ); + implts_setToolbar( aUIElement ); + implts_writeWindowStateData( aUIElement ); + implts_sortUIElements(); + } +} + +void ToolbarLayoutManager::setToolbarPos( const ::rtl::OUString& rResourceURL, const awt::Point& aPos ) +{ + uno::Reference< awt::XWindow > xWindow( implts_getXWindow( rResourceURL )); + uno::Reference< awt::XDockableWindow > xDockWindow( xWindow, uno::UNO_QUERY ); + UIElement aUIElement = implts_findToolbar( rResourceURL ); + + if ( xWindow.is() && xDockWindow.is() && xDockWindow->isFloating() ) + { + xWindow->setPosSize( aPos.X, aPos.Y, 0, 0, awt::PosSize::POS ); + aUIElement.m_aFloatingData.m_aPos = ::Point( aPos.X, aPos.Y ); + implts_setToolbar( aUIElement ); + implts_writeWindowStateData( aUIElement ); + implts_sortUIElements(); + } +} + +void ToolbarLayoutManager::setToolbarPosSize( const ::rtl::OUString& rResourceURL, const awt::Point& aPos, const awt::Size& aSize ) +{ + setToolbarPos( rResourceURL, aPos ); + setToolbarSize( rResourceURL, aSize ); +} + +} // namespace framework diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.hxx b/framework/source/layoutmanager/toolbarlayoutmanager.hxx new file mode 100755 index 000000000000..baf6f088cc2e --- /dev/null +++ b/framework/source/layoutmanager/toolbarlayoutmanager.hxx @@ -0,0 +1,344 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef __FRAMEWORK_LAYOUTMANAGER_TOOLBARLAYOUTMANAGER_HXX_ +#define __FRAMEWORK_LAYOUTMANAGER_TOOLBARLAYOUTMANAGER_HXX_ + +/** Attention: stl headers must(!) be included at first. Otherwhise it can make trouble + with solaris headers ... +*/ +#include <vector> + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ +#include <threadhelp/threadhelpbase.hxx> +#include <threadhelp/resetableguard.hxx> +#include <threadhelp/writeguard.hxx> +#include <threadhelp/readguard.hxx> +#include <macros/generic.hxx> +#include <macros/xinterface.hxx> +#include <macros/xtypeprovider.hxx> +#include <macros/xserviceinfo.hxx> +#include <stdtypes.h> +#include <properties.h> +#include <stdtypes.h> +#include <uiconfiguration/globalsettings.hxx> +#include <uiconfiguration/windowstateconfiguration.hxx> +#include <classes/addonsoptions.hxx> +#include <uielement/uielement.hxx> +#include <helper/ilayoutnotifications.hxx> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XTypeProvider.hpp> +#include <com/sun/star/frame/XLayoutManager.hpp> +#include <com/sun/star/ui/XUIConfigurationManager.hpp> +#include <com/sun/star/ui/XUIConfiguration.hpp> +#include <com/sun/star/frame/XModuleManager.hpp> +#include <com/sun/star/frame/XFrameActionListener.hpp> +#include <com/sun/star/awt/XWindowListener.hpp> +#include <com/sun/star/util/XURLTransformer.hpp> +#include <com/sun/star/ui/XUIElementFactory.hpp> +#include <com/sun/star/ui/DockingArea.hpp> +#include <com/sun/star/awt/XTopWindow2.hpp> +#include <com/sun/star/awt/XWindow2.hpp> +#include <com/sun/star/awt/XDockableWindow.hpp> +#include <com/sun/star/awt/XDockableWindowListener.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <cppuhelper/implbase3.hxx> + + +namespace framework +{ + +class ToolbarLayoutManager : public ::cppu::WeakImplHelper3< ::com::sun::star::awt::XDockableWindowListener, + ::com::sun::star::ui::XUIConfigurationListener, + ::com::sun::star::awt::XWindowListener >, + private ThreadHelpBase // Struct for right initalization of mutex member! Must be first of baseclasses. +{ + public: + enum { DOCKINGAREAS_COUNT = 4 }; + + ToolbarLayoutManager( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xSMGR, + const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElementFactory >& xUIElementFactory, + ILayoutNotifications* pParentLayouter ); + virtual ~ToolbarLayoutManager(); + + void reset(); + void attach( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame, + const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager >& xModuleCfgMgr, + const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager >& xDocCfgMgr, + const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& xPersistentWindowState ); + + void setParentWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >& xParentWindow ); + void setDockingAreaOffsets( const ::Rectangle aOffsets ); + + void resetDockingArea(); + + ::com::sun::star::awt::Rectangle getDockingArea(); + void setDockingArea( const ::com::sun::star::awt::Rectangle& rDockingArea ); + + // layouting + bool isLayoutDirty(); + void doLayout(const ::Size& aContainerSize); + + // creation/destruction + void createStaticToolbars(); + void destroyToolbars(); + + bool requestToolbar( const ::rtl::OUString& rResourceURL ); + bool createToolbar( const ::rtl::OUString& rResourceURL ); + bool destroyToolbar( const ::rtl::OUString& rResourceURL ); + + // visibility + bool showToolbar( const ::rtl::OUString& rResourceURL ); + bool hideToolbar( const ::rtl::OUString& rResourceURL ); + + void refreshToolbarsVisibility( bool bAutomaticToolbars ); + void setFloatingToolbarsVisibility( bool bVisible ); + void setVisible(bool bVisible); + bool isVisible() { return m_bVisible; } + + // docking and further functions + bool dockToolbar( const ::rtl::OUString& rResourceURL, ::com::sun::star::ui::DockingArea eDockingArea, const ::com::sun::star::awt::Point& aPos ); + bool dockAllToolbars(); + bool floatToolbar( const ::rtl::OUString& rResoureURL ); + bool lockToolbar( const ::rtl::OUString& rResourceURL ); + bool unlockToolbar( const ::rtl::OUString& rResourceURL ); + void setToolbarPos( const ::rtl::OUString& rResourceURL, const ::com::sun::star::awt::Point& aPos ); + void setToolbarSize( const ::rtl::OUString& rResourceURL, const ::com::sun::star::awt::Size& aSize ); + void setToolbarPosSize( const ::rtl::OUString& rResourceURL, const ::com::sun::star::awt::Point& aPos, const ::com::sun::star::awt::Size& aSize ); + bool isToolbarVisible( const ::rtl::OUString& rResourceURL ); + bool isToolbarFloating( const ::rtl::OUString& rResourceURL ); + bool isToolbarDocked( const ::rtl::OUString& rResourceURL ); + bool isToolbarLocked( const ::rtl::OUString& rResourceURL ); + ::com::sun::star::awt::Point getToolbarPos( const ::rtl::OUString& rResourceURL ); + ::com::sun::star::awt::Size getToolbarSize( const ::rtl::OUString& rResourceURL ); + ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > getToolbar( const ::rtl::OUString& aName ); + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > > getToolbars(); + + // child window notifications + long childWindowEvent( VclSimpleEvent* pEvent ); + + //--------------------------------------------------------------------------------------------------------- + // XInterface + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL acquire() throw(); + virtual void SAL_CALL release() throw(); + virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw( ::com::sun::star::uno::RuntimeException ); + + //--------------------------------------------------------------------------------------------------------- + // XEventListener + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); + + //--------------------------------------------------------------------------------------------------------- + // XWindowListener + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL windowResized( const css::awt::WindowEvent& aEvent ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL windowMoved( const css::awt::WindowEvent& aEvent ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL windowShown( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); + virtual void SAL_CALL windowHidden( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); + + //--------------------------------------------------------------------------------------------------------- + // XDockableWindowListener + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL startDocking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::awt::DockingData SAL_CALL docking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL endDocking( const ::com::sun::star::awt::EndDockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL prepareToggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL toggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL closed( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL endPopupMode( const ::com::sun::star::awt::EndPopupModeEvent& e ) throw (::com::sun::star::uno::RuntimeException); + + //--------------------------------------------------------------------------------------------------------- + // XUIConfigurationListener + //--------------------------------------------------------------------------------------------------------- + virtual void SAL_CALL elementInserted( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL elementRemoved( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException); + virtual void SAL_CALL elementReplaced( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException); + + private: + enum DockingOperation + { + DOCKOP_BEFORE_COLROW, + DOCKOP_ON_COLROW, + DOCKOP_AFTER_COLROW + }; + + typedef std::vector< UIElement > UIElementVector; + struct SingleRowColumnWindowData + { + SingleRowColumnWindowData() : nVarSize( 0 ), nStaticSize( 0 ), nSpace( 0 ) {} + + std::vector< rtl::OUString > aUIElementNames; + std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > > aRowColumnWindows; + std::vector< ::com::sun::star::awt::Rectangle > aRowColumnWindowSizes; + std::vector< sal_Int32 > aRowColumnSpace; + ::com::sun::star::awt::Rectangle aRowColumnRect; + sal_Int32 nVarSize; + sal_Int32 nStaticSize; + sal_Int32 nSpace; + sal_Int32 nRowColumn; + }; + + //--------------------------------------------------------------------------------------------------------- + // internal helper methods + //--------------------------------------------------------------------------------------------------------- + bool implts_isParentWindowVisible() const; + ::Rectangle implts_calcDockingArea(); + void implts_sortUIElements(); + void implts_reparentToolbars(); + rtl::OUString implts_generateGenericAddonToolbarTitle( sal_Int32 nNumber ) const; + void implts_setElementData( UIElement& rUIElement, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDockableWindow >& rDockWindow ); + void implts_destroyDockingAreaWindows(); + + //--------------------------------------------------------------------------------------------------------- + // layout methods + //--------------------------------------------------------------------------------------------------------- + void implts_setDockingAreaWindowSizes( const ::com::sun::star::awt::Rectangle& rBorderSpace ); + ::Point implts_findNextCascadeFloatingPos(); + void implts_renumberRowColumnData( ::com::sun::star::ui::DockingArea eDockingArea, DockingOperation eDockingOperation, const UIElement& rUIElement ); + void implts_calcWindowPosSizeOnSingleRowColumn( sal_Int32 nDockingArea, + sal_Int32 nOffset, + SingleRowColumnWindowData& rRowColumnWindowData, + const ::Size& rContainerSize ); + void implts_setLayoutDirty(); + void implts_setLayoutInProgress( bool bInProgress = true ); + bool implts_isLayoutInProgress() const { return m_bLayoutInProgress; } + + //--------------------------------------------------------------------------------------------------------- + // lookup/container methods + //--------------------------------------------------------------------------------------------------------- + UIElement implts_findToolbar( const rtl::OUString& aName ); + UIElement implts_findToolbar( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xToolbar ); + UIElement& impl_findToolbar( const rtl::OUString& aName ); + ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > implts_getXWindow( const ::rtl::OUString& aName ); + Window* implts_getWindow( const ::rtl::OUString& aName ); + bool implts_insertToolbar( const UIElement& rUIElement ); + void implts_setToolbar( const UIElement& rUIElement ); + ::Size implts_getTopBottomDockingAreaSizes(); + void implts_getUIElementVectorCopy( UIElementVector& rCopy ); + + //--------------------------------------------------------------------------------------------------------- + // internal docking methods + //--------------------------------------------------------------------------------------------------------- + ::Rectangle implts_calcHotZoneRect( const ::Rectangle& rRect, sal_Int32 nHotZoneOffset ); + void implts_calcDockingPosSize( UIElement& aUIElement, DockingOperation& eDockOperation, ::Rectangle& rTrackingRect, const Point& rMousePos ); + DockingOperation implts_determineDockingOperation( ::com::sun::star::ui::DockingArea DockingArea, const ::Rectangle& rRowColRect, const Point& rMousePos ); + ::Rectangle implts_getWindowRectFromRowColumn( ::com::sun::star::ui::DockingArea DockingArea, const SingleRowColumnWindowData& rRowColumnWindowData, const ::Point& rMousePos, const rtl::OUString& rExcludeElementName ); + ::Rectangle implts_determineFrontDockingRect( ::com::sun::star::ui::DockingArea eDockingArea, + sal_Int32 nRowCol, + const ::Rectangle& rDockedElementRect, + const ::rtl::OUString& rMovedElementName, + const ::Rectangle& rMovedElementRect ); + ::Rectangle implts_calcTrackingAndElementRect( ::com::sun::star::ui::DockingArea eDockingArea, + sal_Int32 nRowCol, + UIElement& rUIElement, + const ::Rectangle& rTrackingRect, + const ::Rectangle& rRowColumnRect, + const ::Size& rContainerWinSize ); + + void implts_getDockingAreaElementInfos( ::com::sun::star::ui::DockingArea DockingArea, std::vector< SingleRowColumnWindowData >& rRowColumnsWindowData ); + void implts_getDockingAreaElementInfoOnSingleRowCol( ::com::sun::star::ui::DockingArea, sal_Int32 nRowCol, SingleRowColumnWindowData& rRowColumnWindowData ); + void implts_findNextDockingPos( ::com::sun::star::ui::DockingArea DockingArea, const ::Size& aUIElementSize, ::Point& rVirtualPos, ::Point& rPixelPos ); + void implts_setTrackingRect( ::com::sun::star::ui::DockingArea eDockingArea, const ::Point& rMousePos, ::Rectangle& rTrackingRect ); + + //--------------------------------------------------------------------------------------------------------- + // creation methods + //--------------------------------------------------------------------------------------------------------- + void implts_createAddonsToolBars(); + void implts_createCustomToolBars(); + void implts_createNonContextSensitiveToolBars(); + void implts_createCustomToolBars( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& aCustomTbxSeq ); + void implts_createCustomToolBar( const rtl::OUString& aTbxResName, const rtl::OUString& aTitle ); + void implts_createToolBar( const ::rtl::OUString& aName, bool& bNotify, ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& rUIElement ); + css::uno::Reference< css::ui::XUIElement > implts_createElement( const ::rtl::OUString& aName ); + void implts_setToolbarCreation( bool bStart = true ); + bool implts_isToolbarCreationActive(); + + //--------------------------------------------------------------------------------------------------------- + // persistence methods + //--------------------------------------------------------------------------------------------------------- + sal_Bool implts_readWindowStateData( const rtl::OUString& aName, UIElement& rElementData ); + void implts_writeWindowStateData( const UIElement& rElementData ); + void implts_writeNewWindowStateData( const rtl::OUString aName, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& xWindow ); + + //--------------------------------------------------------------------------------------------------------- + // members + //--------------------------------------------------------------------------------------------------------- + css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; + css::uno::Reference< css::frame::XFrame > m_xFrame; + css::uno::Reference< css::awt::XWindow2 > m_xContainerWindow; + css::uno::Reference< css::awt::XWindow > m_xDockAreaWindows[DOCKINGAREAS_COUNT]; + css::uno::Reference< ::com::sun::star::ui::XUIElementFactory > m_xUIElementFactoryManager; + css::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager > m_xModuleCfgMgr; + css::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager > m_xDocCfgMgr; + css::uno::Reference< ::com::sun::star::awt::XToolkit > m_xToolkit; + css::uno::Reference< ::com::sun::star::container::XNameAccess > m_xPersistentWindowState; + ILayoutNotifications* m_pParentLayouter; + + UIElementVector m_aUIElements; + UIElement m_aDockUIElement; + Point m_aStartDockMousePos; + Rectangle m_aDockingArea; + Rectangle m_aDockingAreaOffsets; + DockingOperation m_eDockOperation; + + AddonsOptions* m_pAddonOptions; + GlobalSettings* m_pGlobalSettings; + + bool m_bComponentAttached; + bool m_bMustLayout; + bool m_bLayoutDirty; + bool m_bStoreWindowState; + bool m_bGlobalSettings; + bool m_bDockingInProgress; + bool m_bVisible; + bool m_bLayoutInProgress; + bool m_bToolbarCreation; + + ::rtl::OUString m_aFullAddonTbxPrefix; + ::rtl::OUString m_aCustomTbxPrefix; + ::rtl::OUString m_aCustomizeCmd; + ::rtl::OUString m_aToolbarTypeString; + ::rtl::OUString m_aModuleIdentifier; +}; + +} // namespace framework + +#endif // __FRAMEWORK_LAYOUTMANAGER_TOOLBARLAYOUTMANAGER_HXX_ diff --git a/framework/source/layoutmanager/uielement.cxx b/framework/source/layoutmanager/uielement.cxx new file mode 100755 index 000000000000..dda5aa352a08 --- /dev/null +++ b/framework/source/layoutmanager/uielement.cxx @@ -0,0 +1,156 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: layoutmanager.hxx,v $ + * $Revision: 1.34 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <uielement/uielement.hxx> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/ui/DockingArea.hpp> + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +using namespace ::com::sun::star; + +namespace framework +{ + + bool UIElement::operator< ( const ::framework::UIElement& aUIElement ) const +{ + if ( !m_xUIElement.is() && aUIElement.m_xUIElement.is() ) + return false; + else if ( m_xUIElement.is() && !aUIElement.m_xUIElement.is() ) + return true; + else if ( !m_bVisible && aUIElement.m_bVisible ) + return false; + else if ( m_bVisible && !aUIElement.m_bVisible ) + return true; + else if ( !m_bFloating && aUIElement.m_bFloating ) + return true; + else if ( m_bFloating && !aUIElement.m_bFloating ) + return false; + else + { + if ( m_bFloating ) + { + bool bEqual = ( m_aFloatingData.m_aPos.Y() == aUIElement.m_aFloatingData.m_aPos.Y() ); + if ( bEqual ) + return ( m_aFloatingData.m_aPos.X() < aUIElement.m_aFloatingData.m_aPos.X() ); + else + return ( m_aFloatingData.m_aPos.Y() < aUIElement.m_aFloatingData.m_aPos.Y() ); + } + else + { + if ( m_aDockedData.m_nDockedArea < aUIElement.m_aDockedData.m_nDockedArea ) + return true; + else if ( m_aDockedData.m_nDockedArea > aUIElement.m_aDockedData.m_nDockedArea ) + return false; + else + { + if ( m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_TOP || + m_aDockedData.m_nDockedArea == ui::DockingArea_DOCKINGAREA_BOTTOM ) + { + if ( !( m_aDockedData.m_aPos.Y() == aUIElement.m_aDockedData.m_aPos.Y() ) ) + return ( m_aDockedData.m_aPos.Y() < aUIElement.m_aDockedData.m_aPos.Y() ); + else + { + bool bEqual = ( m_aDockedData.m_aPos.X() == aUIElement.m_aDockedData.m_aPos.X() ); + if ( bEqual ) + { + if ( m_bUserActive && !aUIElement.m_bUserActive ) + return sal_True; + else if ( !m_bUserActive && aUIElement.m_bUserActive ) + return sal_False; + else + return sal_False; + } + else + return ( m_aDockedData.m_aPos.X() <= aUIElement.m_aDockedData.m_aPos.X() ); + } + } + else + { + if ( !( m_aDockedData.m_aPos.X() == aUIElement.m_aDockedData.m_aPos.X() ) ) + return ( m_aDockedData.m_aPos.X() < aUIElement.m_aDockedData.m_aPos.X() ); + else + { + bool bEqual = ( m_aDockedData.m_aPos.Y() == aUIElement.m_aDockedData.m_aPos.Y() ); + if ( bEqual ) + { + if ( m_bUserActive && !aUIElement.m_bUserActive ) + return sal_True; + else if ( !m_bUserActive && aUIElement.m_bUserActive ) + return sal_False; + else + return sal_False; + } + else + return ( m_aDockedData.m_aPos.Y() <= aUIElement.m_aDockedData.m_aPos.Y() ); + } + } + } + } + } +} + +UIElement& UIElement::operator= ( const UIElement& rUIElement ) +{ + m_aType = rUIElement.m_aType; + m_aName = rUIElement.m_aName; + m_aUIName = rUIElement.m_aUIName; + m_xUIElement = rUIElement.m_xUIElement; + m_bFloating = rUIElement.m_bFloating; + m_bVisible = rUIElement.m_bVisible; + m_bUserActive = rUIElement.m_bUserActive; + m_bCreateNewRowCol0 = rUIElement.m_bCreateNewRowCol0; + m_bDeactiveHide = rUIElement.m_bDeactiveHide; + m_bMasterHide = rUIElement.m_bMasterHide; + m_bContextSensitive = rUIElement.m_bContextSensitive; + m_bContextActive = rUIElement.m_bContextActive; + m_bNoClose = rUIElement.m_bNoClose; + m_bSoftClose = rUIElement.m_bSoftClose; + m_bStateRead = rUIElement.m_bStateRead; + m_nStyle = rUIElement.m_nStyle; + m_aDockedData = rUIElement.m_aDockedData; + m_aFloatingData = rUIElement.m_aFloatingData; + return *this; +} + +} // namespace framework diff --git a/framework/source/services/backingwindow.cxx b/framework/source/services/backingwindow.cxx index 17def8e1c684..8c477a78892f 100644 --- a/framework/source/services/backingwindow.cxx +++ b/framework/source/services/backingwindow.cxx @@ -29,6 +29,7 @@ #include "precompiled_framework.hxx" #include "backingwindow.hxx" +#include "classes/resource.hrc" #include "framework.hrc" #include "classes/fwkresid.hxx" #include <services.h> @@ -231,15 +232,15 @@ BackingWindow::BackingWindow( Window* i_pParent ) : if( mxDesktop.is() ) mxDesktopDispatchProvider = Reference< XDispatchProvider >( mxDesktop, UNO_QUERY ); - maWriterButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:WriterButton" ) ) ) ); - maCalcButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:CalcButton" ) ) ) ); - maImpressButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:ImpressButton" ) ) ) ); - maDrawButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:DrawButton" ) ) ) ); - maDBButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:DBButton" ) ) ) ); - maMathButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:MathButton" ) ) ) ); - maTemplateButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:TemplateButton" ) ) ) ); - maOpenButton.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:OpenButton" ) ) ) ); - maToolbox.SetSmartHelpId( SmartId( String( RTL_CONSTASCII_USTRINGPARAM( ".HelpId:StartCenter:Toolbox" ) ) ) ); + maWriterButton.SetHelpId( ".HelpId:StartCenter:WriterButton" ); + maCalcButton.SetHelpId( ".HelpId:StartCenter:CalcButton" ); + maImpressButton.SetHelpId( ".HelpId:StartCenter:ImpressButton" ); + maDrawButton.SetHelpId( ".HelpId:StartCenter:DrawButton" ); + maDBButton.SetHelpId( ".HelpId:StartCenter:DBButton" ); + maMathButton.SetHelpId( ".HelpId:StartCenter:MathButton" ); + maTemplateButton.SetHelpId( ".HelpId:StartCenter:TemplateButton" ); + maOpenButton.SetHelpId( ".HelpId:StartCenter:OpenButton" ); + maToolbox.SetHelpId( ".HelpId:StartCenter:Toolbox" ); // init background initBackground(); @@ -388,8 +389,13 @@ void BackingWindow::prepareRecentFileMenu() aBuf.append( aMenuTitle ); mpRecentMenu->InsertItem( static_cast<USHORT>(i+1), aBuf.makeStringAndClear() ); } - maOpenButton.SetPopupMenu( mpRecentMenu ); } + else + { + String aNoDoc( FwkResId( STR_NODOCUMENT ) ); + mpRecentMenu->InsertItem( 0xffff, aNoDoc ); + } + maOpenButton.SetPopupMenu( mpRecentMenu ); } void BackingWindow::initBackground() diff --git a/framework/source/services/makefile.mk b/framework/source/services/makefile.mk index 2978d9aacf5e..eaeaae1f8a82 100644 --- a/framework/source/services/makefile.mk +++ b/framework/source/services/makefile.mk @@ -53,7 +53,8 @@ SLOFILES=\ $(SLO)$/sessionlistener.obj \ $(SLO)$/taskcreatorsrv.obj \ $(SLO)$/uriabbreviation.obj \ - $(SLO)$/tabwindowservice.obj + $(SLO)$/tabwindowservice.obj \ + $(SLO)$/modelwinservice.obj SRS1NAME=$(TARGET) SRC1FILES= fwk_services.src diff --git a/framework/source/services/menudocumenthandler.cxx b/framework/source/services/menudocumenthandler.cxx deleted file mode 100644 index 8741fff39320..000000000000 --- a/framework/source/services/menudocumenthandler.cxx +++ /dev/null @@ -1,903 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" - -#include <stdio.h> -#include <services/menudocumenthandler.hxx> -#include <classes/menuconfiguration.hxx> -#include <classes/addonmenu.hxx> - -#ifndef __FRAMEWORK_SERVICES_ATTRIBUTELIST_HXX_ -#include <services/attributelist.hxx> -#endif - -#ifndef __COM_SUN_STAR_XML_SAX_XEXTENDEDDOCUMENTHANDLER_HPP_ -#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp> -#endif - - -using namespace ::rtl; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::xml::sax; - -const int ITEMID_START_VALUE = 1000; - -#define XMLNS_MENU "http://openoffice.org/2001/menu" -#define XMLNS_PREFIX "menu:" - -#define ELEMENT_MENUBAR "http://openoffice.org/2001/menu^menubar" -#define ELEMENT_MENU "http://openoffice.org/2001/menu^menu" -#define ELEMENT_MENUPOPUP "http://openoffice.org/2001/menu^menupopup" -#define ELEMENT_MENUITEM "http://openoffice.org/2001/menu^menuitem" -#define ELEMENT_MENUSEPARATOR "http://openoffice.org/2001/menu^menuseparator" - -#define ELEMENT_NS_MENUBAR "menu:menubar" -#define ELEMENT_NS_MENU "menu:menu" -#define ELEMENT_NS_MENUPOPUP "menu:menupopup" -#define ELEMENT_NS_MENUITEM "menu:menuitem" -#define ELEMENT_NS_MENUSEPARATOR "menu:menuseparator" - -#define ATTRIBUTE_ID "http://openoffice.org/2001/menu^id" -#define ATTRIBUTE_LABEL "http://openoffice.org/2001/menu^label" -#define ATTRIBUTE_HELPID "http://openoffice.org/2001/menu^helpid" -#define ATTRIBUTE_LINEBREAK "http://openoffice.org/2001/menu^linebreak" - -#define ATTRIBUTE_NS_ID "menu:id" -#define ATTRIBUTE_NS_LABEL "menu:label" -#define ATTRIBUTE_NS_HELPID "menu:helpid" -#define ATTRIBUTE_NS_LINEBREAK "menu:linebreak" - -#define ATTRIBUTE_XMLNS_MENU "xmlns:menu" - -#define ATTRIBUTE_TYPE_CDATA "CDATA" - -#define MENUBAR_DOCTYPE "<!DOCTYPE menu:menubar PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"menubar.dtd\">" - - -// special popup menus (filled during runtime) must be saved as a menuitem!!! -// same as in menumanager.cxx - you have to change both files!!! -#define SID_SFX_START 5000 -#define SID_NEWDOCDIRECT (SID_SFX_START + 537) -#define SID_AUTOPILOTMENU (SID_SFX_START + 1381) -#define SID_FORMATMENU (SID_SFX_START + 780) - -const ::rtl::OUString aSlotProtocol( RTL_CONSTASCII_USTRINGPARAM( "slot:" )); -const ::rtl::OUString aSlotNewDocDirect( RTL_CONSTASCII_USTRINGPARAM( "slot:5537" )); -const ::rtl::OUString aSlotAutoPilot( RTL_CONSTASCII_USTRINGPARAM( "slot:6381" )); - -const ::rtl::OUString aSpecialFileMenu( RTL_CONSTASCII_USTRINGPARAM( "file" )); -const ::rtl::OUString aSpecialWindowMenu( RTL_CONSTASCII_USTRINGPARAM( "window" )); - -const ULONG MENU_SAVE_LABEL = 0x00000001; - -namespace framework -{ - -// ----------------------------------------------------------------------------- -// Base class implementation - -ReadMenuDocumentHandlerBase::ReadMenuDocumentHandlerBase() : - m_xLocator( 0 ), - m_xReader( 0 ) -{ -} - -ReadMenuDocumentHandlerBase::~ReadMenuDocumentHandlerBase() -{ -} - -Any SAL_CALL ReadMenuDocumentHandlerBase::queryInterface( - const Type & rType ) -throw( RuntimeException ) -{ - Any a = ::cppu::queryInterface( - rType , - SAL_STATIC_CAST( XDocumentHandler*, this )); - if ( a.hasValue() ) - return a; - - return OWeakObject::queryInterface( rType ); -} - -void SAL_CALL ReadMenuDocumentHandlerBase::ignorableWhitespace( - const OUString& aWhitespaces ) -throw( SAXException, RuntimeException ) -{ -} - -void SAL_CALL ReadMenuDocumentHandlerBase::processingInstruction( - const OUString& aTarget, const OUString& aData ) -throw( SAXException, RuntimeException ) -{ -} - -void SAL_CALL ReadMenuDocumentHandlerBase::setDocumentLocator( - const Reference< XLocator > &xLocator) -throw( SAXException, RuntimeException ) -{ - m_xLocator = xLocator; -} - -::rtl::OUString ReadMenuDocumentHandlerBase::getErrorLineString() -{ - char buffer[32]; - - if ( m_xLocator.is() ) - { - snprintf( buffer, sizeof(buffer), "Line: %ld - ", static_cast<long>( m_xLocator->getLineNumber() )); - return OUString::createFromAscii( buffer ); - } - else - return OUString(); -} - -// ----------------------------------------------------------------------------- - -// #110897# -OReadMenuDocumentHandler::OReadMenuDocumentHandler( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, - MenuBar* pMenuBar ) -: // #110897# - mxServiceFactory(xServiceFactory), - m_pMenuBar( pMenuBar ), - m_nElementDepth( 0 ), - m_bMenuBarMode( sal_False ), - m_nItemId( ITEMID_START_VALUE ) -{ -} - -// #110897# -const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& OReadMenuDocumentHandler::getServiceFactory() -{ - // #110897# - return mxServiceFactory; -} - -OReadMenuDocumentHandler::~OReadMenuDocumentHandler() -{ -} - - -void SAL_CALL OReadMenuDocumentHandler::startDocument(void) - throw ( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuDocumentHandler::endDocument(void) - throw( SAXException, RuntimeException ) -{ - if ( m_nElementDepth > 0 ) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "A closing element is missing!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadMenuDocumentHandler::startElement( - const OUString& aName, const Reference< XAttributeList > &xAttrList ) -throw( SAXException, RuntimeException ) -{ - if ( m_bMenuBarMode ) - { - ++m_nElementDepth; - m_xReader->startElement( aName, xAttrList ); - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUBAR ))) - { - ++m_nElementDepth; - m_bMenuBarMode = sal_True; - - // #110897# m_xReader = Reference< XDocumentHandler >( new OReadMenuBarHandler( m_pMenuBar, &m_nItemId )); - m_xReader = Reference< XDocumentHandler >( new OReadMenuBarHandler( getServiceFactory(), m_pMenuBar, &m_nItemId )); - - m_xReader->startDocument(); - } -} - - -void SAL_CALL OReadMenuDocumentHandler::characters(const rtl::OUString& aChars) -throw( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuDocumentHandler::endElement( const OUString& aName ) - throw( SAXException, RuntimeException ) -{ - if ( m_bMenuBarMode ) - { - --m_nElementDepth; - m_xReader->endElement( aName ); - if ( 0 == m_nElementDepth ) - { - m_xReader->endDocument(); - m_xReader = Reference< XDocumentHandler >(); - m_bMenuBarMode = sal_False; - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUBAR ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menubar expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - } -} - - -// ----------------------------------------------------------------------------- - - -// #110897# -OReadMenuBarHandler::OReadMenuBarHandler( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, - MenuBar* pMenuBar, USHORT* pItemId ) -: // #110897# - mxServiceFactory( xServiceFactory ), - m_pMenuBar( pMenuBar ), - m_nElementDepth( 0 ), - m_bMenuMode( sal_False ), - m_pItemId( pItemId ) -{ -} - -// #110897# -const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& OReadMenuBarHandler::getServiceFactory() -{ - // #110897# - return mxServiceFactory; -} - -OReadMenuBarHandler::~OReadMenuBarHandler() -{ -} - - -void SAL_CALL OReadMenuBarHandler::startDocument(void) - throw ( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuBarHandler::endDocument(void) - throw( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuBarHandler::startElement( - const OUString& aName, const Reference< XAttributeList > &xAttrList ) -throw( SAXException, RuntimeException ) -{ - if ( m_bMenuMode ) - { - ++m_nElementDepth; - m_xReader->startElement( aName, xAttrList ); - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENU ))) - { - ++m_nElementDepth; - - ULONG nHelpId = 0; - OUString aCommandId; - OUString aLabel; - - m_bMenuMode = sal_True; - PopupMenu* pMenu = new PopupMenu(); - - // read attributes for menu - for ( int i=0; i< xAttrList->getLength(); i++ ) - { - OUString aName = xAttrList->getNameByIndex( i ); - OUString aValue = xAttrList->getValueByIndex( i ); - if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ID ))) - aCommandId = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_LABEL ))) - aLabel = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_HELPID ))) - nHelpId = aValue.toInt32(); - } - - if ( aCommandId.getLength() > 0 ) - { - USHORT nItemId; - if ( aCommandId.compareTo( aSlotProtocol, aSlotProtocol.getLength() ) == 0 ) - nItemId = (USHORT) aCommandId.copy( aSlotProtocol.getLength() ).toInt32(); - else - nItemId = ++(*m_pItemId); - - m_pMenuBar->InsertItem( nItemId, String() ); - m_pMenuBar->SetPopupMenu( nItemId, pMenu ); - m_pMenuBar->SetItemCommand( nItemId, aCommandId ); - if ( nHelpId > 0 ) - m_pMenuBar->SetHelpId( nItemId, nHelpId ); - if ( aLabel.getLength() > 0 ) - { - m_pMenuBar->SetItemText( nItemId, aLabel ); - m_pMenuBar->SetUserValue( nItemId, MENU_SAVE_LABEL ); - } - else - { - m_pMenuBar->SetUserValue( nItemId, 0 ); - } - } - else - { - delete pMenu; - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "attribute id for element menu required!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_xReader = Reference< XDocumentHandler >( new OReadMenuHandler( pMenu, m_pItemId )); - m_xReader->startDocument(); - } - else - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "element menu expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadMenuBarHandler::characters(const rtl::OUString& aChars) -throw( SAXException, RuntimeException ) -{ -} - - -void OReadMenuBarHandler::endElement( const OUString& aName ) - throw( SAXException, RuntimeException ) -{ - if ( m_bMenuMode ) - { - --m_nElementDepth; - if ( 0 == m_nElementDepth ) - { - m_xReader->endDocument(); - m_xReader = Reference< XDocumentHandler >(); - m_bMenuMode = sal_False; - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENU ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menu expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else - m_xReader->endElement( aName ); - } -} - - -// ----------------------------------------------------------------------------- - - -OReadMenuHandler::OReadMenuHandler( Menu* pMenu, USHORT* pItemId ) : - m_pMenu( pMenu ), - m_nElementDepth( 0 ), - m_bMenuPopupMode( sal_False ), - m_pItemId( pItemId ) -{ -} - - -OReadMenuHandler::~OReadMenuHandler() -{ -} - - -void SAL_CALL OReadMenuHandler::startDocument(void) - throw ( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuHandler::endDocument(void) - throw( SAXException, RuntimeException) -{ -} - - -void SAL_CALL OReadMenuHandler::startElement( - const OUString& aName, const Reference< XAttributeList > &xAttrList ) -throw( SAXException, RuntimeException ) -{ - if ( m_bMenuPopupMode ) - { - ++m_nElementDepth; - m_xReader->startElement( aName, xAttrList ); - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUPOPUP ))) - { - ++m_nElementDepth; - m_bMenuPopupMode = sal_True; - m_xReader = Reference< XDocumentHandler >( new OReadMenuPopupHandler( m_pMenu, m_pItemId )); - m_xReader->startDocument(); - } - else - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "unknown element found!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadMenuHandler::characters(const rtl::OUString& aChars) -throw( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuHandler::endElement( const OUString& aName ) - throw( SAXException, RuntimeException ) -{ - if ( m_bMenuPopupMode ) - { - --m_nElementDepth; - if ( 0 == m_nElementDepth ) - { - m_xReader->endDocument(); - m_xReader = Reference< XDocumentHandler >(); - m_bMenuPopupMode = sal_False; - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUPOPUP ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menupopup expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else - m_xReader->endElement( aName ); - } -} - - -// ----------------------------------------------------------------------------- - - -OReadMenuPopupHandler::OReadMenuPopupHandler( Menu* pMenu, USHORT* pItemId ) : - m_pMenu( pMenu ), - m_nElementDepth( 0 ), - m_bMenuMode( sal_False ), - m_pItemId( pItemId ), - m_nNextElementExpected( ELEM_CLOSE_NONE ) -{ -} - - -OReadMenuPopupHandler::~OReadMenuPopupHandler() -{ -} - - -void SAL_CALL OReadMenuPopupHandler::startDocument(void) - throw ( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuPopupHandler::endDocument(void) - throw( SAXException, RuntimeException) -{ -} - - -void SAL_CALL OReadMenuPopupHandler::startElement( - const OUString& aName, const Reference< XAttributeList > &xAttrList ) -throw( SAXException, RuntimeException ) -{ - ++m_nElementDepth; - - if ( m_bMenuMode ) - m_xReader->startElement( aName, xAttrList ); - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENU ))) - { - ULONG nHelpId = 0; - OUString aCommandId; - OUString aLabel; - - m_bMenuMode = sal_True; - PopupMenu* pMenu = new PopupMenu(); - - // read attributes for menu - for ( int i=0; i< xAttrList->getLength(); i++ ) - { - OUString aName = xAttrList->getNameByIndex( i ); - OUString aValue = xAttrList->getValueByIndex( i ); - if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ID ))) - aCommandId = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_LABEL ))) - aLabel = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_HELPID ))) - nHelpId = aValue.toInt32(); - } - - if ( aCommandId.getLength() > 0 ) - { - USHORT nItemId; - if ( aCommandId.compareTo( aSlotProtocol, aSlotProtocol.getLength() ) == 0 ) - nItemId = (USHORT) aCommandId.copy( aSlotProtocol.getLength() ).toInt32(); - else - nItemId = ++(*m_pItemId); - - m_pMenu->InsertItem( nItemId, String() ); - m_pMenu->SetPopupMenu( nItemId, pMenu ); - m_pMenu->SetItemCommand( nItemId, aCommandId ); - if ( nHelpId > 0 ) - m_pMenu->SetHelpId( nItemId, nHelpId ); - if ( aLabel.getLength() > 0 ) - { - m_pMenu->SetItemText( nItemId, aLabel ); - m_pMenu->SetUserValue( nItemId, MENU_SAVE_LABEL ); - } - else - { - m_pMenu->SetUserValue( nItemId, 0 ); - } - } - else - { - delete pMenu; - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "attribute id for element menu required!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - - m_xReader = Reference< XDocumentHandler >( new OReadMenuHandler( pMenu, m_pItemId )); - m_xReader->startDocument(); - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUITEM ))) - { - ULONG nHelpId = 0; - OUString aCommandId; - OUString aLabel; - - // read attributes for menu item - for ( int i=0; i< xAttrList->getLength(); i++ ) - { - OUString aName = xAttrList->getNameByIndex( i ); - OUString aValue = xAttrList->getValueByIndex( i ); - if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_ID ))) - aCommandId = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_LABEL ))) - aLabel = aValue; - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ATTRIBUTE_HELPID ))) - nHelpId = aValue.toInt32(); - } - - if ( aCommandId.getLength() > 0 ) - { - USHORT nItemId; - if ( aCommandId.compareTo( aSlotProtocol, aSlotProtocol.getLength() ) == 0 ) - nItemId = (USHORT) aCommandId.copy( aSlotProtocol.getLength() ).toInt32(); - else - nItemId = ++(*m_pItemId); - - m_pMenu->InsertItem( nItemId, String() ); - m_pMenu->SetItemCommand( nItemId, aCommandId ); - if ( nHelpId > 0 ) - m_pMenu->SetHelpId( nItemId, nHelpId ); - if ( aLabel.getLength() > 0 ) - { - m_pMenu->SetItemText( nItemId, aLabel ); - m_pMenu->SetUserValue( nItemId, MENU_SAVE_LABEL ); - } - else - { - m_pMenu->SetUserValue( nItemId, 0 ); - } - } - - m_nNextElementExpected = ELEM_CLOSE_MENUITEM; - } - else if ( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUSEPARATOR ))) - { - m_pMenu->InsertSeparator(); - m_nNextElementExpected = ELEM_CLOSE_MENUSEPARATOR; - } - else - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "unknown element found!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } -} - - -void SAL_CALL OReadMenuPopupHandler::characters(const rtl::OUString& aChars) -throw( SAXException, RuntimeException ) -{ -} - - -void SAL_CALL OReadMenuPopupHandler::endElement( const OUString& aName ) - throw( SAXException, RuntimeException ) -{ - --m_nElementDepth; - if ( m_bMenuMode ) - { - if ( 0 == m_nElementDepth ) - { - m_xReader->endDocument(); - m_xReader = Reference< XDocumentHandler >(); - m_bMenuMode = sal_False; - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENU ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menu expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else - m_xReader->endElement( aName ); - } - else - { - if ( m_nNextElementExpected == ELEM_CLOSE_MENUITEM ) - { - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUITEM ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menuitem expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - else if ( m_nNextElementExpected == ELEM_CLOSE_MENUSEPARATOR ) - { - if ( !aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ELEMENT_MENUSEPARATOR ))) - { - OUString aErrorMessage = getErrorLineString(); - aErrorMessage += OUString( RTL_CONSTASCII_USTRINGPARAM( "closing element menuseparator expected!" )); - throw SAXException( aErrorMessage, Reference< XInterface >(), Any() ); - } - } - - m_nNextElementExpected = ELEM_CLOSE_NONE; - } -} - - -// --------------------------------- Write XML --------------------------------- - - -OWriteMenuDocumentHandler::OWriteMenuDocumentHandler( MenuBar* pMenu, Reference< XDocumentHandler > rxWriteDocumentHandler ) : - m_pMenuBar( pMenu ), - m_xWriteDocumentHandler( rxWriteDocumentHandler ) -{ - m_xEmptyList = Reference< XAttributeList >( (XAttributeList *)new AttributeListImpl, UNO_QUERY ); - m_aAttributeType = OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_TYPE_CDATA )); -} - - -OWriteMenuDocumentHandler::~OWriteMenuDocumentHandler() -{ -} - - -void OWriteMenuDocumentHandler::WriteMenuDocument() -throw ( SAXException, RuntimeException ) -{ - AttributeListImpl* pList = new AttributeListImpl; - Reference< XAttributeList > rList( (XAttributeList *) pList , UNO_QUERY ); - - m_xWriteDocumentHandler->startDocument(); - - // write DOCTYPE line! - Reference< XExtendedDocumentHandler > xExtendedDocHandler( m_xWriteDocumentHandler, UNO_QUERY ); - if ( xExtendedDocHandler.is() ) - { - xExtendedDocHandler->unknown( OUString( RTL_CONSTASCII_USTRINGPARAM( MENUBAR_DOCTYPE )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - } - - pList->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_XMLNS_MENU )), - m_aAttributeType, - OUString( RTL_CONSTASCII_USTRINGPARAM( XMLNS_MENU )) ); - - pList->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_ID )), - m_aAttributeType, - OUString( RTL_CONSTASCII_USTRINGPARAM( "menubar" )) ); - - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUBAR )), pList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - - WriteMenu( m_pMenuBar ); - - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUBAR )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endDocument(); -} - - -void OWriteMenuDocumentHandler::WriteMenu( Menu* pMenu ) -throw ( SAXException, RuntimeException ) -{ - USHORT nItemCount = pMenu->GetItemCount(); - BOOL bSeparator = FALSE; - - for ( USHORT nItemPos = 0; nItemPos < nItemCount; nItemPos++ ) - { - USHORT nItemId = pMenu->GetItemId( nItemPos ); - - PopupMenu* pPopupMenu = pMenu->GetPopupMenu( nItemId ); - if ( pPopupMenu ) - { - OUString aItemCommand = pMenu->GetItemCommand( nItemId ); - - if ( nItemId == SID_NEWDOCDIRECT || - nItemId == SID_AUTOPILOTMENU ) - { - // special popup menus (filled during runtime) must be saved as a menuitem!!! - WriteMenuItem( pMenu, nItemId ); - bSeparator = FALSE; - } - else if ( nItemId == SID_FORMATMENU ) - { - // special popup menu - must be written as empty popup! - AttributeListImpl* pListMenu = new AttributeListImpl; - Reference< XAttributeList > xListMenu( (XAttributeList *)pListMenu , UNO_QUERY ); - - String aCommand( pMenu->GetItemCommand( nItemId ) ); - if ( !aCommand.Len() ) - { - aCommand = String::CreateFromAscii("slot:"); - aCommand += String::CreateFromInt32( nItemId ); - } - - pListMenu->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_ID )), - m_aAttributeType, - aCommand ); - -// if ( pMenu->GetUserValue( nItemId ) & MENU_SAVE_LABEL ) - pListMenu->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_LABEL )), - m_aAttributeType, - pMenu->GetItemText( nItemId ) ); - - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENU )), xListMenu ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUPOPUP )), m_xEmptyList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUPOPUP )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENU )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - bSeparator = FALSE; - } - else if ( !AddonPopupMenu::IsCommandURLPrefix ( aItemCommand )) - { - AttributeListImpl* pListMenu = new AttributeListImpl; - Reference< XAttributeList > xListMenu( (XAttributeList *)pListMenu , UNO_QUERY ); - - String aCommand( pMenu->GetItemCommand( nItemId ) ); - if ( !aCommand.Len() ) - { - aCommand = String::CreateFromAscii("slot:"); - aCommand += String::CreateFromInt32( nItemId ); - } - - pListMenu->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_ID )), - m_aAttributeType, - aCommand ); - -// if ( pMenu->GetUserValue( nItemId ) & MENU_SAVE_LABEL ) - pListMenu->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_LABEL )), - m_aAttributeType, - pMenu->GetItemText( nItemId ) ); - - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENU )), xListMenu ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUPOPUP )), m_xEmptyList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - - WriteMenu( pPopupMenu ); - - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUPOPUP )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENU )) ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - bSeparator = FALSE; - } - } - else - { - if ( pMenu->GetItemType( nItemPos ) != MENUITEM_SEPARATOR ) - { - // don't save special menu items for (window list and pickup list, add-ons ) - if ( !MenuConfiguration::IsPickListItemId( nItemId ) && - !MenuConfiguration::IsWindowListItemId( nItemId ) && - !AddonMenuManager::IsAddonMenuId( nItemId )) - { - bSeparator = FALSE; - WriteMenuItem( pMenu, nItemId ); - } - } - else if ( !bSeparator ) - { - // Don't write two separators together - WriteMenuSeparator(); - bSeparator = TRUE; - } - } - } -} - - -void OWriteMenuDocumentHandler::WriteMenuItem( Menu* pMenu, USHORT nItemId ) -{ - AttributeListImpl* pList = new AttributeListImpl; - Reference< XAttributeList > xList( (XAttributeList *) pList , UNO_QUERY ); - - String aCommand( pMenu->GetItemCommand( nItemId ) ); - if ( !aCommand.Len() ) - { - aCommand = String::CreateFromAscii("slot:"); - aCommand += String::CreateFromInt32( nItemId ); - } - - pList->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_ID )), - m_aAttributeType, - aCommand ); - - ULONG nHelpId = pMenu->GetHelpId( nItemId ); - if ( nHelpId > 0 ) - { - pList->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_HELPID )), - m_aAttributeType, - OUString::valueOf( sal_Int64( nHelpId )) ); - } - -// if ( pMenu->GetUserValue( nItemId ) & MENU_SAVE_LABEL ) - pList->addAttribute( OUString( RTL_CONSTASCII_USTRINGPARAM( ATTRIBUTE_NS_LABEL )), - m_aAttributeType, - pMenu->GetItemText( nItemId )); - - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUITEM )), xList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUITEM )) ); -} - - -void OWriteMenuDocumentHandler::WriteMenuSeparator() -{ - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUSEPARATOR )), m_xEmptyList ); - m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->endElement( OUString( RTL_CONSTASCII_USTRINGPARAM( ELEMENT_NS_MENUSEPARATOR )) ); -} - -} // namespace framework diff --git a/framework/source/services/modelwinservice.cxx b/framework/source/services/modelwinservice.cxx new file mode 100755 index 000000000000..d50fe7dcc653 --- /dev/null +++ b/framework/source/services/modelwinservice.cxx @@ -0,0 +1,279 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: urltransformer.cxx,v $ + * $Revision: 1.17 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include "services.h" +#include "services/modelwinservice.hxx" + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/awt/XControlModel.hpp> + +using namespace ::com::sun::star; + +//_________________________________________________________________________________________________________________ +// namespace +//_________________________________________________________________________________________________________________ + +namespace framework{ + +//_________________________________________________________________________________________________________________ +// non exported definitions +//_________________________________________________________________________________________________________________ + +//_________________________________________________________________________________________________________________ +// declarations +//_________________________________________________________________________________________________________________ + +class Impl_ModelWinService +{ + public: + ~Impl_ModelWinService(); + + static Impl_ModelWinService* getSingleInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); + + uno::Any getByName( const ::rtl::OUString& sName ) + throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ); + + uno::Sequence< ::rtl::OUString > getElementNames() + throw( uno::RuntimeException ); + + sal_Bool hasByName( const ::rtl::OUString& sName ) + throw( uno::RuntimeException ); + + uno::Type getElementType() + throw( css::uno::RuntimeException ); + + sal_Bool hasElements() + throw( css::uno::RuntimeException ); + + void registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ); + + void deregisterModelForXWindow( const uno::Reference< awt::XWindow >& rWindow ); + + private: + typedef BaseHash< uno::WeakReference< awt::XControlModel > > ModelWinMap; + + Impl_ModelWinService(); + Impl_ModelWinService( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); + + static Impl_ModelWinService* m_pModelWinService; + + ::com::sun::star::uno::WeakReference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceManager; + ModelWinMap m_aModelMap; +}; + +Impl_ModelWinService* Impl_ModelWinService::m_pModelWinService = 0; + +Impl_ModelWinService* Impl_ModelWinService::getSingleInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ) +{ + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + if ( !m_pModelWinService ) + m_pModelWinService = new Impl_ModelWinService( rServiceManager ); + return m_pModelWinService; +} + +Impl_ModelWinService::Impl_ModelWinService( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ) : + m_xServiceManager( rServiceManager ) +{ +} + +Impl_ModelWinService::Impl_ModelWinService() +{ +} + +Impl_ModelWinService::~Impl_ModelWinService() +{ +} + +void Impl_ModelWinService::registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ) +{ + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + + ::rtl::OUString sName = rtl::OUString::valueOf( reinterpret_cast< sal_Int64 >((void*)rWindow.get())); + ModelWinMap::iterator pIter = m_aModelMap.find( sName ); + if ( pIter != m_aModelMap.end() ) + pIter->second = rModel; + else + m_aModelMap[sName] = rModel; +} + +void Impl_ModelWinService::deregisterModelForXWindow( const uno::Reference< awt::XWindow >& /*rWindow*/ ) +{ +} + +uno::Any Impl_ModelWinService::getByName( const ::rtl::OUString& sName ) +throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) +{ + uno::Any aAny; + + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + ModelWinMap::iterator pIter = m_aModelMap.find( sName ); + if ( pIter != m_aModelMap.end()) + { + uno::Reference< awt::XControlModel > xModel( pIter->second ); + aAny = uno::makeAny(xModel); + } + + return aAny; +} + +uno::Sequence< ::rtl::OUString > Impl_ModelWinService::getElementNames() +throw( uno::RuntimeException ) +{ + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + uno::Sequence< ::rtl::OUString > aResult( m_aModelMap.size() ); + + sal_Int32 i = 0; + ModelWinMap::const_iterator pIter = m_aModelMap.begin(); + while ( pIter != m_aModelMap.end()) + aResult[i++] = pIter->first; + + return aResult; +} + +sal_Bool Impl_ModelWinService::hasByName( const ::rtl::OUString& sName ) +throw( uno::RuntimeException ) +{ + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + ModelWinMap::iterator pIter = m_aModelMap.find( sName ); + if ( pIter != m_aModelMap.end()) + return true; + else + return false; +} + +uno::Type Impl_ModelWinService::getElementType() +throw( css::uno::RuntimeException ) +{ + return ::getCppuType(( const uno::Reference< awt::XControlModel >*)NULL ); +} + +sal_Bool Impl_ModelWinService::hasElements() +throw( css::uno::RuntimeException ) +{ + osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; + return (m_aModelMap.size() > 0); +} + +//***************************************************************************************************************** +// css::uno::XInterface, XTypeProvider, XServiceInfo +//***************************************************************************************************************** + +DEFINE_XINTERFACE_4 ( ModelWinService , + OWeakObject , + DIRECT_INTERFACE(css::lang::XTypeProvider ), + DIRECT_INTERFACE(css::lang::XServiceInfo ), + DIRECT_INTERFACE(css::container::XNameAccess ), + DIRECT_INTERFACE(css::container::XElementAccess ) + ) + +DEFINE_XTYPEPROVIDER_4 ( ModelWinService , + css::lang::XTypeProvider , + css::lang::XServiceInfo , + css::container::XNameAccess , + css::container::XElementAccess + ) + +DEFINE_XSERVICEINFO_MULTISERVICE ( ModelWinService , + OWeakObject , + SERVICENAME_MODELWINSERVICE , + IMPLEMENTATIONNAME_MODELWINSERVICE + ) + +DEFINE_INIT_SERVICE ( ModelWinService, + { + } + ) + +//***************************************************************************************************************** +// constructor +//***************************************************************************************************************** +ModelWinService::ModelWinService(const uno::Reference< lang::XMultiServiceFactory >& rServiceManager ) : + m_xServiceManager( rServiceManager ) +{ +} + +ModelWinService::~ModelWinService() +{ +} + +void ModelWinService::registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ) +{ + Impl_ModelWinService::getSingleInstance(m_xServiceManager)->registerModelForXWindow( rWindow, rModel ); +} + +void ModelWinService::deregisterModelForXWindow( const uno::Reference< awt::XWindow >& rWindow ) +{ + Impl_ModelWinService::getSingleInstance(m_xServiceManager)->deregisterModelForXWindow( rWindow ); +} + +uno::Any SAL_CALL ModelWinService::getByName( const ::rtl::OUString& sName ) +throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) +{ + return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->getByName( sName ); +} + +uno::Sequence< ::rtl::OUString > SAL_CALL ModelWinService::getElementNames() +throw( uno::RuntimeException ) +{ + return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->getElementNames( ); +} + +sal_Bool SAL_CALL ModelWinService::hasByName( const ::rtl::OUString& sName ) +throw( uno::RuntimeException ) +{ + return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->hasByName( sName ); +} + +//--------------------------------------------------------------------------------------------------------- +// XElementAccess +//--------------------------------------------------------------------------------------------------------- +uno::Type SAL_CALL ModelWinService::getElementType() +throw( uno::RuntimeException ) +{ + return ::getCppuType( (const uno::Reference< awt::XControlModel > *)NULL ); +} + +sal_Bool SAL_CALL ModelWinService::hasElements() +throw( uno::RuntimeException ) +{ + return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->hasElements(); +} + +} diff --git a/framework/source/uielement/comboboxtoolbarcontroller.cxx b/framework/source/uielement/comboboxtoolbarcontroller.cxx index 058005ffdc40..d17ffcb78f9d 100644 --- a/framework/source/uielement/comboboxtoolbarcontroller.cxx +++ b/framework/source/uielement/comboboxtoolbarcontroller.cxx @@ -261,19 +261,30 @@ void ComboboxToolbarController::LoseFocus() long ComboboxToolbarController::PreNotify( NotifyEvent& rNEvt ) { - if( rNEvt.GetType() == EVENT_KEYINPUT ) + switch ( rNEvt.GetType() ) { - const ::KeyEvent* pKeyEvent = rNEvt.GetKeyEvent(); - const KeyCode& rKeyCode = pKeyEvent->GetKeyCode(); - if(( rKeyCode.GetModifier() | rKeyCode.GetCode()) == KEY_RETURN ) - { - // Call execute only with non-empty text - if ( m_pComboBox->GetText().Len() > 0 ) - execute( rKeyCode.GetModifier() ); - return 1; - } + case EVENT_KEYINPUT : + { + const ::KeyEvent* pKeyEvent = rNEvt.GetKeyEvent(); + const KeyCode& rKeyCode = pKeyEvent->GetKeyCode(); + if(( rKeyCode.GetModifier() | rKeyCode.GetCode()) == KEY_RETURN ) + { + // Call execute only with non-empty text + if ( m_pComboBox->GetText().Len() > 0 ) + execute( rKeyCode.GetModifier() ); + return 1; + } + } + break; + case EVENT_GETFOCUS : + notifyFocusGet(); + break; + case EVENT_LOSEFOCUS : + notifyFocusLost(); + break; + default : + break; } - return 0; } diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx index 30b0fe5fec1c..afe2e7173086 100644 --- a/framework/source/uielement/macrosmenucontroller.cxx +++ b/framework/source/uielement/macrosmenucontroller.cxx @@ -48,6 +48,7 @@ #include <rtl/ustrbuf.hxx> #include <dispatch/uieventloghelper.hxx> #include "helper/mischelper.hxx" +#include "helpid.hrc" #include <vos/mutex.hxx> using namespace com::sun::star::uno; @@ -101,8 +102,6 @@ void MacrosMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPo String aDisplayName = RetrieveLabelFromCommand( aCommand ); pPopupMenu->InsertItem( 2, aDisplayName ); pPopupMenu->SetItemCommand( 2, aCommand ); - //pPopupMenu->SetHelpId( 2, HID_SVX_BASIC_MACRO_ORGANIZER ); - pPopupMenu->SetHelpId( 2, 40012 ); // insert providers but not basic or java addScriptItems( pPopupMenu, 4); @@ -222,8 +221,6 @@ void MacrosMenuController::addScriptItems( PopupMenu* pPopupMenu, USHORT startIt aDisplayName.Append( ellipsis ); pPopupMenu->InsertItem( itemId, aDisplayName ); pPopupMenu->SetItemCommand( itemId, aCommand ); - //pPopupMenu->SetHelpId( itemId, HID_SVX_COMMON_MACRO_ORGANIZER ); - pPopupMenu->SetHelpId( itemId, 40014 ); itemId++; break; } diff --git a/framework/source/uielement/makefile.mk b/framework/source/uielement/makefile.mk index b74adb1e176f..0acfa6b662a5 100644 --- a/framework/source/uielement/makefile.mk +++ b/framework/source/uielement/makefile.mk @@ -81,6 +81,8 @@ SLOFILES= \ $(SLO)$/toolbarwrapper.obj \ $(SLO)$/popupmenucontroller.obj \ $(SLO)$/uicommanddescription.obj \ + $(SLO)$/panelwrapper.obj \ + $(SLO)$/panelwindow.obj # --- Targets ------------------------------------------------------ diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 9d8aa9205c90..b5be6da817fb 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -1798,9 +1798,6 @@ void MenuBarManager::FillMenu( pMenu->InsertItem( nId, aLabel ); pMenu->SetItemCommand( nId, aCommandURL ); - sal_Int32 nHelpId = aHelpURL.toInt32(); - if ( nHelpId > 0 ) - pMenu->SetHelpId( nId, (USHORT)nHelpId ); if ( nStyle ) { MenuItemBits nBits = pMenu->GetItemBits( nId ); diff --git a/framework/source/uielement/panelwindow.cxx b/framework/source/uielement/panelwindow.cxx new file mode 100755 index 000000000000..c8729dbb028d --- /dev/null +++ b/framework/source/uielement/panelwindow.cxx @@ -0,0 +1,77 @@ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" + +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <uielement/panelwindow.hxx> + +namespace framework +{ + +PanelWindow::PanelWindow( Window* pParent, WinBits nWinBits ) : + DockingWindow( pParent, nWinBits ) +{ +} + +PanelWindow::~PanelWindow() +{ +} + +const ::rtl::OUString& PanelWindow::getResourceURL() const +{ + return m_aResourceURL; +} + +void PanelWindow::setResourceURL(const ::rtl::OUString& rResourceURL) +{ + m_aResourceURL = rResourceURL; +} + +Window* PanelWindow::getContentWindow() const +{ + return m_pContentWindow; +} + +void PanelWindow::setContentWindow( Window* pContentWindow ) +{ + m_pContentWindow = pContentWindow; + if ( m_pContentWindow != NULL ) + { + m_pContentWindow->SetParent(this); + m_pContentWindow->SetSizePixel( GetOutputSizePixel() ); + m_pContentWindow->Show(); + } +} + +void PanelWindow::Command( const CommandEvent& rCEvt ) +{ + if ( m_aCommandHandler.IsSet() ) + m_aCommandHandler.Call( (void *)( &rCEvt )); + DockingWindow::Command( rCEvt ); +} + +void PanelWindow::StateChanged( StateChangedType nType ) +{ + DockingWindow::StateChanged( nType ); + if ( m_aStateChangedHandler.IsSet() ) + m_aStateChangedHandler.Call( &nType ); +} + +void PanelWindow::DataChanged( const DataChangedEvent& rDCEvt ) +{ + DockingWindow::DataChanged( rDCEvt ); + if ( m_aDataChangedHandler.IsSet() ) + m_aDataChangedHandler.Call( (void*)&rDCEvt ); +} + +void PanelWindow::Resize() +{ + DockingWindow::Resize(); + if ( m_pContentWindow ) + m_pContentWindow->SetSizePixel( GetOutputSizePixel() ); +} + +} diff --git a/framework/source/uielement/panelwrapper.cxx b/framework/source/uielement/panelwrapper.cxx new file mode 100755 index 000000000000..91bc6fa9dac8 --- /dev/null +++ b/framework/source/uielement/panelwrapper.cxx @@ -0,0 +1,227 @@ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_framework.hxx" +//_________________________________________________________________________________________________________________ +// my own includes +//_________________________________________________________________________________________________________________ + +#include <services.h> +#include <uielement/panelwrapper.hxx> +#include <threadhelp/resetableguard.hxx> +#include <helper/actiontriggerhelper.hxx> +#include <uielement/constitemcontainer.hxx> +#include <uielement/rootitemcontainer.hxx> +#include <uielement/panelwindow.hxx> +#include <services/modelwinservice.hxx> + +//_________________________________________________________________________________________________________________ +// interface includes +//_________________________________________________________________________________________________________________ + +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/awt/XSystemDependentMenuPeer.hpp> +#include <com/sun/star/awt/XMenuBar.hpp> +#include <com/sun/star/container/XIndexContainer.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/ui/UIElementType.hpp> + +//_________________________________________________________________________________________________________________ +// other includes +//_________________________________________________________________________________________________________________ + +#include <toolkit/unohlp.hxx> +#include <toolkit/awt/vclxwindow.hxx> +#include <comphelper/processfactory.hxx> +#include <svtools/miscopt.hxx> +#include <vcl/svapp.hxx> +#include <rtl/logfile.hxx> + +using namespace com::sun::star; +using namespace com::sun::star::uno; +using namespace com::sun::star::beans; +using namespace com::sun::star::frame; +using namespace com::sun::star::lang; +using namespace com::sun::star::container; +using namespace com::sun::star::awt; +using namespace ::com::sun::star::ui; + +namespace framework +{ + +PanelWrapper::PanelWrapper( const Reference< XMultiServiceFactory >& xServiceManager ) : + UIElementWrapperBase( UIElementType::DOCKINGWINDOW ), + m_xServiceManager( xServiceManager ), + m_bNoClose(false) +{ +} + +PanelWrapper::~PanelWrapper() +{ +} + +// XInterface +void SAL_CALL PanelWrapper::acquire() throw() +{ + UIElementWrapperBase::acquire(); +} + +void SAL_CALL PanelWrapper::release() throw() +{ + UIElementWrapperBase::release(); +} + +uno::Any SAL_CALL PanelWrapper::queryInterface( const uno::Type & rType ) +throw( ::com::sun::star::uno::RuntimeException ) +{ + return UIElementWrapperBase::queryInterface( rType ); +} + +// XComponent +void SAL_CALL PanelWrapper::dispose() throw ( RuntimeException ) +{ + Reference< XComponent > xThis( static_cast< OWeakObject* >(this), UNO_QUERY ); + Reference< XMultiServiceFactory > xSMGR( m_xServiceManager ); + Reference< XWindow > xWindow; + + { + ResetableGuard aLock( m_aLock ); + if ( m_bDisposed ) + return; + xSMGR = m_xServiceManager; + } + + com::sun::star::lang::EventObject aEvent( xThis ); + m_aListenerContainer.disposeAndClear( aEvent ); + + rtl::OUString aModelWinService( SERVICENAME_MODELWINSERVICE ); + Reference< XNameAccess > xNameAccess( xSMGR->createInstance( aModelWinService ), UNO_QUERY ); + if ( xNameAccess.is() ) + { + ModelWinService* pService = dynamic_cast< ModelWinService* >( xNameAccess.get() ); + if ( pService != 0 ) + { + vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() ); + PanelWindow* pPanelWindow = dynamic_cast< PanelWindow* >( m_xPanelWindow.get() ); + if ( pPanelWindow != NULL ) + { + xWindow = VCLUnoHelper::GetInterface( pPanelWindow->getContentWindow() ); + pService->deregisterModelForXWindow( xWindow ); + } + } + } + + ResetableGuard aLock( m_aLock ); + m_xPanelWindow.clear(); + m_bDisposed = sal_True; +} + +// XInitialization +void SAL_CALL PanelWrapper::initialize( const Sequence< Any >& aArguments ) throw ( Exception, RuntimeException ) +{ + ResetableGuard aLock( m_aLock ); + + if ( m_bDisposed ) + throw DisposedException(); + + if ( !m_bInitialized ) + { + UIElementWrapperBase::initialize( aArguments ); + + sal_Bool bPopupMode( sal_False ); + Reference< XWindow > xContentWindow; + for ( sal_Int32 i = 0; i < aArguments.getLength(); i++ ) + { + PropertyValue aPropValue; + if ( aArguments[i] >>= aPropValue ) + { + if ( aPropValue.Name.equalsAsciiL( "PopupMode", 9 )) + aPropValue.Value >>= bPopupMode; + else if ( aPropValue.Name.equalsAsciiL( "ContentWindow", 13 )) + aPropValue.Value >>= xContentWindow; + } + } + + Reference< XFrame > xFrame( m_xWeakFrame ); + if ( xFrame.is() ) + { + PanelWindow* pPanelWindow(0); + Window* pContentWindow(0); + { + vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() ); + Window* pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); + pContentWindow = VCLUnoHelper::GetWindow( xContentWindow ); + if ( pWindow ) + { + ULONG nStyles = WB_LINESPACING | WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; + + pPanelWindow = new PanelWindow( pWindow, nStyles ); + m_xPanelWindow = VCLUnoHelper::GetInterface( pPanelWindow ); + pPanelWindow->setResourceURL( m_aResourceURL ); + pPanelWindow->setContentWindow( pContentWindow ); + } + } + + try + { + } + catch ( NoSuchElementException& ) + { + } + } + } +} + +// XEventListener +void SAL_CALL PanelWrapper::disposing( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException) +{ + // nothing todo +} + +// XUpdatable +void SAL_CALL PanelWrapper::update() throw (::com::sun::star::uno::RuntimeException) +{ + ResetableGuard aLock( m_aLock ); + + if ( m_bDisposed ) + throw DisposedException(); +} + +// XUIElement interface +Reference< XInterface > SAL_CALL PanelWrapper::getRealInterface( ) throw (::com::sun::star::uno::RuntimeException) +{ + ResetableGuard aLock( m_aLock ); + return m_xPanelWindow; +} + +void SAL_CALL PanelWrapper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const com::sun::star::uno::Any& aValue ) throw( com::sun::star::uno::Exception ) +{ + ResetableGuard aLock( m_aLock ); + sal_Bool bNoClose( m_bNoClose ); + aLock.unlock(); + + UIElementWrapperBase::setFastPropertyValue_NoBroadcast( nHandle, aValue ); + + aLock.lock(); + + sal_Bool bNewNoClose( m_bNoClose ); + if ( m_xPanelWindow.is() && !m_bDisposed && ( bNewNoClose != bNoClose )) + { + PanelWindow* pPanelWindow = dynamic_cast< PanelWindow* >( VCLUnoHelper::GetWindow( m_xPanelWindow ) ); + if ( pPanelWindow ) + { + if ( bNewNoClose ) + { + pPanelWindow->SetStyle( pPanelWindow->GetStyle() & ~WB_CLOSEABLE ); + pPanelWindow->SetFloatStyle( pPanelWindow->GetFloatStyle() & ~WB_CLOSEABLE ); + } + else + { + pPanelWindow->SetStyle( pPanelWindow->GetStyle() | WB_CLOSEABLE ); + pPanelWindow->SetFloatStyle( pPanelWindow->GetFloatStyle() | WB_CLOSEABLE ); + } + } + } +} + +} // namespace framework diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx index 0bbdbc339a34..6521a83d5a2d 100644 --- a/framework/source/uielement/statusbarmanager.cxx +++ b/framework/source/uielement/statusbarmanager.cxx @@ -531,16 +531,6 @@ void StatusBarManager::FillStatusBar( const uno::Reference< container::XIndexAcc m_pStatusBar->InsertItem( nId, nWidth, nItemBits, nOffset ); m_pStatusBar->SetItemCommand( nId, aCommandURL ); m_pStatusBar->SetAccessibleName( nId, aString ); -// m_pStatusBar->SetHelpText( nId, aString ); - - if ( aHelpURL.indexOf( aHelpIdPrefix ) == 0 ) - { - rtl::OUString aId( aHelpURL.copy( HELPID_PREFIX_LENGTH )); - sal_uInt16 nHelpId = (sal_uInt16)(aId.toInt32()); - if ( nHelpId > 0 ) - m_pStatusBar->SetHelpId( nId, nHelpId ); - } - ++nId; } } diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index f965d38f6b46..ebaf097bb79f 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -310,10 +310,10 @@ ToolBarManager::ToolBarManager( const Reference< XMultiServiceFactory >& rServic // set name for testtool, the useful part is after the last '/' sal_Int32 idx = rResourceName.lastIndexOf('/'); idx++; // will become 0 if '/' not found: use full string - ::rtl::OUString aHelpIdAsString( RTL_CONSTASCII_USTRINGPARAM( HELPID_PREFIX_TESTTOOL )); + ::rtl::OString aHelpIdAsString( HELPID_PREFIX_TESTTOOL ); ::rtl::OUString aToolbarName = rResourceName.copy( idx ); - aHelpIdAsString += aToolbarName; - m_pToolBar->SetSmartHelpId( SmartId( aHelpIdAsString ) ); + aHelpIdAsString += rtl::OUStringToOString( aToolbarName, RTL_TEXTENCODING_UTF8 );; + m_pToolBar->SetHelpId( aHelpIdAsString ); m_aAsyncUpdateControllersTimer.SetTimeout( 50 ); m_aAsyncUpdateControllersTimer.SetTimeoutHdl( LINK( this, ToolBarManager, AsyncUpdateControllersHdl ) ); @@ -947,16 +947,16 @@ void ToolBarManager::CreateControllers() if ( nId == 0 ) continue; - sal_Int16 nWidth( sal_Int16( m_pToolBar->GetHelpId( nId ))); rtl::OUString aLoadURL( RTL_CONSTASCII_USTRINGPARAM( ".uno:OpenUrl" )); rtl::OUString aCommandURL( m_pToolBar->GetItemCommand( nId )); sal_Bool bInit( sal_True ); sal_Bool bCreate( sal_True ); Reference< XStatusListener > xController; + CommandToInfoMap::iterator pCommandIter = m_aCommandMap.find( aCommandURL ); + sal_Int16 nWidth = ( pCommandIter != m_aCommandMap.end() ? pCommandIter->second.nWidth : 0 ); svt::ToolboxController* pController( 0 ); - m_pToolBar->SetHelpId( nId, 0 ); // reset value again if ( bHasDisabledEntries ) { aURL.Complete = aCommandURL; @@ -1405,6 +1405,7 @@ void ToolBarManager::FillToolbar( const Reference< XIndexAccess >& rItemContaine if ( pIter == m_aCommandMap.end()) { aCmdInfo.nId = nId; + aCmdInfo.nWidth = nWidth; m_aCommandMap.insert( CommandToInfoMap::value_type( aCommandURL, aCmdInfo )); } else @@ -1412,9 +1413,6 @@ void ToolBarManager::FillToolbar( const Reference< XIndexAccess >& rItemContaine pIter->second.aIds.push_back( nId ); } - // Add additional information for the controller to the obsolete help id - m_pToolBar->SetHelpId( ULONG( nWidth )); - if ( !bIsVisible ) m_pToolBar->HideItem( nId ); diff --git a/framework/source/uielement/toolbarmerger.cxx b/framework/source/uielement/toolbarmerger.cxx index 83f280cb46a7..aca62a8b44ef 100644 --- a/framework/source/uielement/toolbarmerger.cxx +++ b/framework/source/uielement/toolbarmerger.cxx @@ -512,7 +512,6 @@ bool ToolBarMerger::MergeItems( pToolbar->InsertSeparator( sal_uInt16( nInsPos )); else { - ToolBarMerger::CreateToolbarItem( pToolbar, sal_uInt16( nInsPos ), rItemId, rItem ); CommandToInfoMap::iterator pIter = rCommandMap.find( rItem.aCommandURL ); if ( pIter == rCommandMap.end()) { @@ -524,6 +523,8 @@ bool ToolBarMerger::MergeItems( { pIter->second.aIds.push_back( rItemId ); } + + ToolBarMerger::CreateToolbarItem( pToolbar, rCommandMap, sal_uInt16( nInsPos ), rItemId, rItem ); } ++nIndex; @@ -691,7 +692,7 @@ bool ToolBarMerger::RemoveItems( return pResult; } -void ToolBarMerger::CreateToolbarItem( ToolBox* pToolbar, sal_uInt16 nPos, sal_uInt16 nItemId, const AddonToolbarItem& rItem ) +void ToolBarMerger::CreateToolbarItem( ToolBox* pToolbar, CommandToInfoMap& rCommandMap, sal_uInt16 nPos, sal_uInt16 nItemId, const AddonToolbarItem& rItem ) { pToolbar->InsertItem( nItemId, rItem.aLabel, 0, nPos ); pToolbar->SetItemCommand( nItemId, rItem.aCommandURL ); @@ -700,8 +701,9 @@ void ToolBarMerger::CreateToolbarItem( ToolBox* pToolbar, sal_uInt16 nPos, sal_u pToolbar->EnableItem( nItemId, sal_True ); pToolbar->SetItemState( nItemId, STATE_NOCHECK ); - // Use obsolete help id to transport the width of the item - pToolbar->SetHelpId( nItemId, rItem.nWidth ); + CommandToInfoMap::iterator pIter = rCommandMap.find( rItem.aCommandURL ); + if ( pIter != rCommandMap.end() ) + pIter->second.nWidth = rItem.nWidth; // Use the user data to store add-on specific data with the toolbar item AddonsParams* pAddonParams = new AddonsParams; diff --git a/framework/source/uielement/toolbarsmenucontroller.cxx b/framework/source/uielement/toolbarsmenucontroller.cxx index d0ddeccfab20..fffaac0b42df 100644 --- a/framework/source/uielement/toolbarsmenucontroller.cxx +++ b/framework/source/uielement/toolbarsmenucontroller.cxx @@ -180,7 +180,7 @@ ToolbarsMenuController::~ToolbarsMenuController() } void ToolbarsMenuController::addCommand( - Reference< css::awt::XPopupMenu >& rPopupMenu, const rtl::OUString& rCommandURL, USHORT nHelpId, const rtl::OUString& rLabel ) + Reference< css::awt::XPopupMenu >& rPopupMenu, const rtl::OUString& rCommandURL, const rtl::OUString& rLabel ) { USHORT nItemId = m_xPopupMenu->getItemCount()+1; @@ -215,7 +215,6 @@ void ToolbarsMenuController::addCommand( PopupMenu* pVCLPopupMenu = (PopupMenu *)pPopupMenu->GetMenu(); if ( !!aImage ) pVCLPopupMenu->SetItemImage( nItemId, aImage ); - pVCLPopupMenu->SetHelpId( nItemId, nHelpId ); } m_aCommandVector.push_back( rCommandURL ); @@ -507,14 +506,14 @@ void ToolbarsMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r m_aModuleIdentifier.equalsAscii( "com.sun.star.presentation.PresentationDocument" ) || m_aModuleIdentifier.equalsAscii( "com.sun.star.sheet.SpreadsheetDocument" )) { - addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_HYPERLINKBAR )), 10360, aEmptyString ); + addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_HYPERLINKBAR )), aEmptyString ); if ( m_aModuleIdentifier.equalsAscii( "com.sun.star.drawing.DrawingDocument" ) || m_aModuleIdentifier.equalsAscii( "com.sun.star.presentation.PresentationDocument" )) - addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_COLORBAR )), 10417, aEmptyString ); + addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_COLORBAR )), aEmptyString ); else if ( m_aModuleIdentifier.equalsAscii( "com.sun.star.sheet.SpreadsheetDocument" )) - addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_INPUTLINEBAR )), 26241, aEmptyString ); + addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_INPUTLINEBAR )), aEmptyString ); else - addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_FORMULABAR )), 20128, aEmptyString ); + addCommand( m_xPopupMenu, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CMD_FORMULABAR )), aEmptyString ); } sal_Bool bAddCommand( sal_True ); @@ -537,7 +536,7 @@ void ToolbarsMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r m_xPopupMenu->insertSeparator( nItemCount+1 ); } - addCommand( m_xPopupMenu, aConfigureToolbar, 5904, aEmptyString ); + addCommand( m_xPopupMenu, aConfigureToolbar, aEmptyString ); } // Add separator if no configure has been added @@ -553,7 +552,7 @@ void ToolbarsMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r String aLabelStr = String( FwkResId( STR_RESTORE_TOOLBARS )); rtl::OUString aRestoreCmd( RTL_CONSTASCII_USTRINGPARAM( CMD_RESTOREVISIBILITY )); - addCommand( m_xPopupMenu, aRestoreCmd, 9999, aLabelStr ); + addCommand( m_xPopupMenu, aRestoreCmd, aLabelStr ); } } diff --git a/framework/util/makefile.mk b/framework/util/makefile.mk index a3f14341d3f3..698ba37d5d3d 100644 --- a/framework/util/makefile.mk +++ b/framework/util/makefile.mk @@ -336,8 +336,14 @@ SHL4OBJS= \ $(SLO)$/windowcommanddispatch.obj \ $(SLO)$/windowstateconfiguration.obj \ $(SLO)$/windowcontentfactorymanager.obj \ - $(SLO)$/startmoduledispatcher.obj - + $(SLO)$/startmoduledispatcher.obj \ + $(SLO)$/modelwinservice.obj \ + $(SLO)$/panelmanager.obj \ + $(SLO)$/panel.obj \ + $(SLO)$/helpers.obj \ + $(SLO)$/uielement.obj \ + $(SLO)$/toolbarlayoutmanager.obj + SHL4STDLIBS= \ $(FWILIB) \ $(FWELIB) \ diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu index 479827565775..ed1c8d587762 100755 --- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu @@ -5197,7 +5197,12 @@ <value xml:lang="en-US">Delete All Comments by This Author</value> </prop> </node> - <node oor:name=".uno:DeleteNote" oor:op="replace"> + <node oor:name=".uno:ReplyComment" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Reply Comment</value> + </prop> + </node> + <node oor:name=".uno:DeleteComment" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Delete Comment</value> </prop> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu index 4fa236666b6b..465c6b37c0cd 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu @@ -166,6 +166,16 @@ <value xml:lang="en-US">~Protect Records...</value> </prop> </node> + <node oor:name=".uno:RejectTracedChange" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Reject Change</value> + </prop> + </node> + <node oor:name=".uno:AcceptTracedChange" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Accept Change</value> + </prop> + </node> <node oor:name=".uno:UpdateAllLinks" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Links</value> diff --git a/officecfg/registry/data/org/openoffice/VCL.xcu b/officecfg/registry/data/org/openoffice/VCL.xcu index 575c0aba053b..3c9f0c6af44c 100644 --- a/officecfg/registry/data/org/openoffice/VCL.xcu +++ b/officecfg/registry/data/org/openoffice/VCL.xcu @@ -60,6 +60,11 @@ <value>Default</value> </prop> </node> + <node oor:name="WM" oor:op="replace"> + <prop oor:name="ShouldSwitchWorkspace" oor:op="replace" oor:type="xs:string"> + <value></value> + </prop> + </node> </node> <node oor:name="DefaultFonts"> <node oor:name="en" oor:op="replace"> @@ -1423,9 +1428,8 @@ </node> <node oor:name="arial" oor:op="replace"> <prop oor:name="SubstFonts"> - <value>liberationsans;albany;albanyamt;nimbussansl;helvetica;lucidasans;lucida;geneva;helmet;nimbussans;andalesansui;arialunicodems;lucidaunicode</value> + <value>liberationsans;albany;albanyamt;arimo;nimbussansl;helvetica;lucidasans;lucida;geneva;helmet;nimbussans;andalesansui;arialunicodems;lucidaunicode</value> </prop> - <prop oor:name="SubstFontsMS"><value></value></prop> <prop oor:name="SubstFontsPS"><value>Helvetica</value></prop> <prop oor:name="SubstFontsHTML"><value>sans-serif</value></prop> <prop oor:name="FontWeight"><value>Normal</value></prop> @@ -1436,24 +1440,9 @@ <prop oor:name="SubstFonts"> <value>arialnarrowmt;liberationsansnarrow;helveticanarrow;helmetcondensed;dejavusanscondensed;nimbussanslcondensed;nimbussanscondensed</value> </prop> - <prop oor:name="SubstFontsMS"> - <value></value> - </prop> - <prop oor:name="SubstFontsPS"> - <value></value> - </prop> - <prop oor:name="SubstFontsHTML"> - <value></value> - </prop> - <prop oor:name="FontWeight"> - <value>Normal</value> - </prop> - <prop oor:name="FontWidth"> - <value>Condensed</value> - </prop> - <prop oor:name="FontType"> - <value>Normal,SansSerif</value> - </prop> + <prop oor:name="FontWeight"><value>Normal</value></prop> + <prop oor:name="FontWidth"><value>Condensed</value></prop> + <prop oor:name="FontType"><value>Normal,SansSerif</value></prop> </node> <node oor:name="arialunicode" oor:op="replace"> <prop oor:name="SubstFonts"> @@ -1478,6 +1467,17 @@ <value>Normal,SansSerif,Full</value> </prop> </node> + <node oor:name="arimo" oor:op="replace"> + <prop oor:name="SubstFonts"> + <value>arial;liberationsans;albany;albanyamt;helvetica;</value> + </prop> + <prop oor:name="SubstFontsMS"><value>arial</value></prop> + <prop oor:name="SubstFontsPS"><value>helvetica</value></prop> + <prop oor:name="SubstFontsHTML"><value>sans-serif</value></prop> + <prop oor:name="FontWeight"><value>Normal</value></prop> + <prop oor:name="FontWidth"><value>Normal</value></prop> + <prop oor:name="FontType"><value>Standard,Normal,SansSerif</value></prop> + </node> <node oor:name="arioso" oor:op="replace"> <prop oor:name="SubstFonts"> <value>palacescript;palacescriptmt;arioso;shelley;zapfchancery;itczapfchancery;monotypecorsiva;corsiva;chancery;chanceryl;lucidacalligraphy;lucidahandwriting;andymt;comicsansms;andy;kidprint;</value> @@ -2394,7 +2394,7 @@ </node> <node oor:name="courier" oor:op="replace"> <prop oor:name="SubstFonts"> - <value>cumberland;cumberlandamt;liberationmono;couriernew;nimbusmonol;lucidatypewriter;lucidasanstypewriter;monaco;monospaced;nimbusmono;nimbusmonol</value> + <value>cumberland;cumberlandamt;cousine;liberationmono;couriernew;nimbusmonol;lucidatypewriter;lucidasanstypewriter;monaco;monospaced;nimbusmono;nimbusmonol</value> </prop> <prop oor:name="SubstFontsMS"><value>Courier New</value></prop> <prop oor:name="SubstFontsPS"><value></value></prop> @@ -2405,9 +2405,19 @@ </node> <node oor:name="couriernew" oor:op="replace"> <prop oor:name="SubstFonts"> - <value>cumberland;cumberlandamt;liberationmono;dejavusansmono;nimbusmonol;courier;lucidatypewriter;lucidasanstypewriter;monaco;monospaced;nimbusmono;nimbusmonol</value> + <value>cumberland;cumberlandamt;cousine;liberationmono;dejavusansmono;nimbusmonol;courier;lucidatypewriter;lucidasanstypewriter;monaco;monospaced;nimbusmono;nimbusmonol</value> + </prop> + <prop oor:name="SubstFontsPS"><value>Courier</value></prop> + <prop oor:name="SubstFontsHTML"><value>monospace</value></prop> + <prop oor:name="FontWeight"><value>Normal</value></prop> + <prop oor:name="FontWidth"><value>Normal</value></prop> + <prop oor:name="FontType"><value>Standard,Normal,Fixed,Typewriter</value></prop> + </node> + <node oor:name="cousine" oor:op="replace"> + <prop oor:name="SubstFonts"> + <value>couriernew;cumberland;cumberlandamt;liberationmono;courier</value> </prop> - <prop oor:name="SubstFontsMS"><value></value></prop> + <prop oor:name="SubstFontsMS"><value>Courier New</value></prop> <prop oor:name="SubstFontsPS"><value>Courier</value></prop> <prop oor:name="SubstFontsHTML"><value>monospace</value></prop> <prop oor:name="FontWeight"><value>Normal</value></prop> @@ -7287,7 +7297,6 @@ <prop oor:name="SubstFonts"> <value>thorndale;thorndaleamt;liberationserif;nimbusromanno9l;times;timesroman;newyork;timmons;lucidaserif;lucidabright;roman;nimbusromanno9;bookman;itcbookman;garamond;garamondmt;palatino</value> </prop> - <prop oor:name="SubstFontsMS"><value></value></prop> <prop oor:name="SubstFontsPS"><value>Times</value></prop> <prop oor:name="SubstFontsHTML"><value>serif</value></prop> <prop oor:name="FontWeight"><value>Normal</value></prop> @@ -7316,6 +7325,17 @@ <prop oor:name="FontWidth"><value>Normal</value></prop> <prop oor:name="FontType"><value>Normal,Serif</value></prop> </node> + <node oor:name="timos" oor:op="replace"> + <prop oor:name="SubstFonts"> + <value>timesnewroman;thorndale;thorndaleamt;liberationserif;nimbusromanno9l;times;timesroman;newyork;timmons</value> + </prop> + <prop oor:name="SubstFontsMS"><value>Times New Roman</value></prop> + <prop oor:name="SubstFontsPS"><value>Times</value></prop> + <prop oor:name="SubstFontsHTML"><value>serif</value></prop> + <prop oor:name="FontWeight"><value>Normal</value></prop> + <prop oor:name="FontWidth"><value>Normal</value></prop> + <prop oor:name="FontType"><value>Standard,Normal,Serif</value></prop> + </node> <node oor:name="tmsrmn" oor:op="replace"> <prop oor:name="SubstFonts"> <value>thorndaleamt;thorndale;timesnewroman;liberationserif;nimbusromanno9l;times;timesroman;newyork;timmons;serif;lucidaserif;lucidabright;roman;nimbusromanno9;bookman;itcbookman;garamond;garamondmt;palatino</value> diff --git a/officecfg/registry/schema/org/openoffice/Office/Writer.xcs b/officecfg/registry/schema/org/openoffice/Office/Writer.xcs index 4a3c2c02c396..ea806e58f320 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Writer.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Writer.xcs @@ -1512,6 +1512,15 @@ <info> <desc>Contains miscellaneous settings.</desc> </info> + <prop oor:name="IsAlignMathObjectsToBaseline" oor:type="xs:boolean"> + <!-- UIHints: none yet --> + <info> + <author>TL</author> + <desc>Automatically align the baseline of Math objects with the baseline of the surrounding text.</desc> + <label>Align Math objects</label> + </info> + <value>true</value> + </prop> <prop oor:name="MeasureUnit" oor:type="xs:int"> <!-- OldPath: Writer/Layout --> <!-- OldLocation: Soffice.cfg --> diff --git a/officecfg/registry/schema/org/openoffice/Office/WriterWeb.xcs b/officecfg/registry/schema/org/openoffice/Office/WriterWeb.xcs index 8738d9db2112..b92e4684c842 100644 --- a/officecfg/registry/schema/org/openoffice/Office/WriterWeb.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/WriterWeb.xcs @@ -418,6 +418,15 @@ <info> <desc>Contains miscellaneous settings.</desc> </info> + <prop oor:name="IsAlignMathObjectsToBaseline" oor:type="xs:boolean"> + <!-- UIHints: none yet --> + <info> + <author>TL</author> + <desc>Automatically align the baseline of Math objects with the baseline of the surrounding text.</desc> + <label>Align Math objects</label> + </info> + <value>true</value> + </prop> <prop oor:name="MeasureUnit" oor:type="xs:int"> <!-- OldPath: HTML_Editor/Layout/Window --> <!-- OldLocation: Soffice.cfg --> diff --git a/scripting/source/basprov/basscript.cxx b/scripting/source/basprov/basscript.cxx index c6de155e3ed0..24bba1e7bff6 100644 --- a/scripting/source/basprov/basscript.cxx +++ b/scripting/source/basprov/basscript.cxx @@ -80,11 +80,33 @@ namespace basprov ,m_documentBasicManager( &documentBasicManager ) ,m_xDocumentScriptContext( documentScriptContext ) { + StartListening( *m_documentBasicManager ); } // ----------------------------------------------------------------------------- BasicScriptImpl::~BasicScriptImpl() { + if ( m_documentBasicManager ) + EndListening( *m_documentBasicManager ); + } + + // ----------------------------------------------------------------------------- + // SfxListener + // ----------------------------------------------------------------------------- + void BasicScriptImpl::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) + { + if ( &rBC != m_documentBasicManager ) + { + OSL_ENSURE( false, "BasicScriptImpl::Notify: where does this come from?" ); + // not interested in + return; + } + const SfxSimpleHint* pSimpleHint = PTR_CAST( SfxSimpleHint, &rHint ); + if ( pSimpleHint && ( pSimpleHint->GetId() == SFX_HINT_DYING ) ) + { + m_documentBasicManager = NULL; + EndListening( rBC ); // prevent multiple notifications + } } // ----------------------------------------------------------------------------- diff --git a/scripting/source/basprov/basscript.hxx b/scripting/source/basprov/basscript.hxx index 4a3d6f1ab61d..772a9166cde3 100644 --- a/scripting/source/basprov/basscript.hxx +++ b/scripting/source/basprov/basscript.hxx @@ -32,6 +32,7 @@ #include <com/sun/star/document/XScriptInvocationContext.hpp> #include <cppuhelper/implbase1.hxx> #include <basic/sbmeth.hxx> +#include <svl/lstner.hxx> class BasicManager; @@ -49,7 +50,7 @@ namespace basprov ::com::sun::star::script::provider::XScript > BasicScriptImpl_BASE; - class BasicScriptImpl : public BasicScriptImpl_BASE + class BasicScriptImpl : public BasicScriptImpl_BASE, public SfxListener { private: SbMethodRef m_xMethod; @@ -80,6 +81,9 @@ namespace basprov ::com::sun::star::script::provider::ScriptFrameworkErrorException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException ); + + // SfxListener + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); }; //......................................................................... diff --git a/scripting/source/basprov/makefile.mk b/scripting/source/basprov/makefile.mk index c98f961e6bd3..bde15f95d5a4 100644 --- a/scripting/source/basprov/makefile.mk +++ b/scripting/source/basprov/makefile.mk @@ -58,6 +58,7 @@ SHL1STDLIBS= \ $(SFX2LIB) \ $(BASICLIB) \ $(VCLLIB) \ + $(SVLLIB) \ $(TOOLSLIB) \ $(UCBHELPERLIB) \ $(COMPHELPERLIB) \ diff --git a/sfx2/inc/pch/precompiled_sfx2.hxx b/sfx2/inc/pch/precompiled_sfx2.hxx index b43dba7d6673..1d4003fa44e6 100644 --- a/sfx2/inc/pch/precompiled_sfx2.hxx +++ b/sfx2/inc/pch/precompiled_sfx2.hxx @@ -543,7 +543,6 @@ #include "svl/ownlist.hxx" #include "svtools/parhtml.hxx" #include "unotools/pathoptions.hxx" -#include "svl/pickerhelper.hxx" #include "svl/poolitem.hxx" #include "svtools/printoptions.hxx" #include "unotools/printwarningoptions.hxx" diff --git a/sfx2/inc/sfx2/basedlgs.hxx b/sfx2/inc/sfx2/basedlgs.hxx index 3508ea026637..fc7b318965b0 100644 --- a/sfx2/inc/sfx2/basedlgs.hxx +++ b/sfx2/inc/sfx2/basedlgs.hxx @@ -69,7 +69,6 @@ class SFX2_DLLPUBLIC SfxModalDialog: public ModalDialog { sal_uInt32 nUniqId; String aExtraData; - Timer aTimer; const SfxItemSet* pInputSet; SfxItemSet* pOutputSet; @@ -77,8 +76,6 @@ private: SAL_DLLPRIVATE SfxModalDialog(SfxModalDialog &); // not defined SAL_DLLPRIVATE void operator =(SfxModalDialog &); // not defined - DECL_DLLPRIVATE_LINK( TimerHdl_Impl, Timer* ); - SAL_DLLPRIVATE void SetDialogData_Impl(); SAL_DLLPRIVATE void GetDialogData_Impl(); SAL_DLLPRIVATE void init(); diff --git a/sfx2/inc/sfx2/dispatch.hxx b/sfx2/inc/sfx2/dispatch.hxx index f0dd2248c456..8d99d6efd9f4 100644 --- a/sfx2/inc/sfx2/dispatch.hxx +++ b/sfx2/inc/sfx2/dispatch.hxx @@ -122,7 +122,7 @@ friend class SfxViewFrame; DECL_DLLPRIVATE_LINK( PostMsgHandler, SfxRequest * ); SAL_DLLPRIVATE int Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest &rReq, BOOL bRecord ); - SAL_DLLPRIVATE sal_uInt32 _Update_Impl( BOOL,BOOL,BOOL,SfxWorkWindow*); + SAL_DLLPRIVATE void _Update_Impl( BOOL,BOOL,BOOL,SfxWorkWindow*); SAL_DLLPRIVATE void CollectTools_Impl(SfxWorkWindow*); protected: @@ -237,7 +237,7 @@ public: //#if 0 // _SOLAR__PRIVATE SAL_DLLPRIVATE BOOL HasSlot_Impl( USHORT ); SAL_DLLPRIVATE void SetMenu_Impl(); - SAL_DLLPRIVATE long Update_Impl( BOOL bForce = FALSE ); // ObjectBars etc. + SAL_DLLPRIVATE void Update_Impl( BOOL bForce = FALSE ); // ObjectBars etc. SAL_DLLPRIVATE BOOL IsUpdated_Impl() const; SAL_DLLPRIVATE void DebugOutput_Impl() const; SAL_DLLPRIVATE void ResetObjectBars_Impl(); diff --git a/sfx2/inc/sfx2/filedlghelper.hxx b/sfx2/inc/sfx2/filedlghelper.hxx index 9b775f8e827d..619358f077ac 100644 --- a/sfx2/inc/sfx2/filedlghelper.hxx +++ b/sfx2/inc/sfx2/filedlghelper.hxx @@ -281,8 +281,7 @@ public: Pointer to an array of help ids. For each element in _pControlId, there must be a corresponding element herein. */ - void SetControlHelpIds( const sal_Int16* _pControlId, const sal_Int32* _pHelpId ); - void SetDialogHelpId( const sal_Int32 _nHelpId ); + void SetControlHelpIds( const sal_Int16* _pControlId, const char** _pHelpId ); void CreateMatcher( const String& rName ); /** sets the context of the dialog and trigger necessary actions e.g. loading config, setting help id diff --git a/sfx2/inc/sfx2/ipclient.hxx b/sfx2/inc/sfx2/ipclient.hxx index e0708f1f061d..960c6629b8d2 100644 --- a/sfx2/inc/sfx2/ipclient.hxx +++ b/sfx2/inc/sfx2/ipclient.hxx @@ -101,6 +101,7 @@ public: // used in Writer // Rectangle PixelObjVisAreaToLogic( const Rectangle & rObjRect ) const; // Rectangle LogicObjAreaToPixel( const Rectangle & rRect ) const; + virtual void FormatChanged(); // object format was changed (used for StarMath formulas aligning) }; #endif diff --git a/sfx2/inc/sfx2/mgetempl.hxx b/sfx2/inc/sfx2/mgetempl.hxx index ba6a9b844b7a..a63f665c1071 100644 --- a/sfx2/inc/sfx2/mgetempl.hxx +++ b/sfx2/inc/sfx2/mgetempl.hxx @@ -37,6 +37,9 @@ #include <sfx2/tabdlg.hxx> +#include <svtools/svmedit2.hxx> +#include <svtools/svmedit.hxx> + /* erwartet: SID_TEMPLATE_NAME : In: StringItem, Name der Vorlage SID_TEMPLATE_FAMILY : In: Familie der Vorlage @@ -54,6 +57,8 @@ class SfxManageStyleSheetPage : public SfxTabPage { FixedText aNameFt; Edit aNameEd; + ExtMultiLineEdit aNameMLE; + CheckBox aAutoCB; FixedText aFollowFt; diff --git a/sfx2/inc/sfx2/mnumgr.hxx b/sfx2/inc/sfx2/mnumgr.hxx index 9c9b566d9d9d..f1df0f0aa547 100644 --- a/sfx2/inc/sfx2/mnumgr.hxx +++ b/sfx2/inc/sfx2/mnumgr.hxx @@ -134,7 +134,7 @@ public: void EndInsert(); void CheckItem( USHORT, BOOL ); void RemoveItem( USHORT ); - void InsertItem( USHORT, const String&, MenuItemBits, + void InsertItem( USHORT, const String&, MenuItemBits, const rtl::OString& rHelpId, USHORT nPos = MENU_APPEND ); void InsertSeparator( USHORT nPos = MENU_APPEND ); // @deprecated (end) diff --git a/sfx2/inc/sfx2/msg.hxx b/sfx2/inc/sfx2/msg.hxx index efbc2d2c75af..10fbd222a2ed 100644 --- a/sfx2/inc/sfx2/msg.hxx +++ b/sfx2/inc/sfx2/msg.hxx @@ -29,6 +29,9 @@ #include <tools/rtti.hxx> #include <sfx2/shell.hxx> +#include <rtl/string.hxx> +#include <rtl/ustring.hxx> +#include <sfx2/dllapi.h> //-------------------------------------------------------------------- @@ -287,6 +290,8 @@ public: USHORT GetValue() const { return nValue; } const SfxType* GetType() const { return pType; } const char* GetUnoName() const { return pUnoName; } + SFX2_DLLPUBLIC rtl::OString GetCommand() const; + SFX2_DLLPUBLIC rtl::OUString GetCommandString() const; USHORT GetFormalArgumentCount() const { return nArgDefCount; } const SfxFormalArgument& GetFormalArgument( USHORT nNo ) const diff --git a/sfx2/inc/sfx2/opengrf.hxx b/sfx2/inc/sfx2/opengrf.hxx index 0d11462685d5..df8ae09f90a3 100644 --- a/sfx2/inc/sfx2/opengrf.hxx +++ b/sfx2/inc/sfx2/opengrf.hxx @@ -54,10 +54,7 @@ public: String GetCurrentFilter() const; void SetCurrentFilter(const String&); - /// Set dialog help id at FileDlgHelper - void SetControlHelpIds( const INT16* _pControlId, const INT32* _pHelpId ); - /// Set control help ids at FileDlgHelper - void SetDialogHelpId( const INT32 _nHelpId ); + void SetControlHelpIds( const INT16* _pControlId, const char** _pHelpId ); private: // disable copy and assignment SFX2_DLLPRIVATE SvxOpenGraphicDialog (const SvxOpenGraphicDialog&); diff --git a/sfx2/inc/sfx2/passwd.hxx b/sfx2/inc/sfx2/passwd.hxx index 4f4a04834257..b0105553cd40 100644 --- a/sfx2/inc/sfx2/passwd.hxx +++ b/sfx2/inc/sfx2/passwd.hxx @@ -78,7 +78,7 @@ public: void SetMinLen( USHORT Len ); void SetMaxLen( USHORT Len ); - void SetEditHelpId( ULONG nId ) { maPasswordED.SetHelpId( nId ); } + void SetEditHelpId( const rtl::OString& rId ) { maPasswordED.SetHelpId( rId ); } void ShowExtras( USHORT nExtras ) { mnExtras = nExtras; } void AllowAsciiOnly( bool i_bAsciiOnly = true ) { mbAsciiOnly = i_bAsciiOnly; } diff --git a/sfx2/inc/sfx2/sfxbasemodel.hxx b/sfx2/inc/sfx2/sfxbasemodel.hxx index 578dd1fd33bb..00ee49a18004 100644 --- a/sfx2/inc/sfx2/sfxbasemodel.hxx +++ b/sfx2/inc/sfx2/sfxbasemodel.hxx @@ -1484,8 +1484,8 @@ public: */ SAL_DLLPRIVATE sal_Bool impl_isDisposed() const ; - sal_Bool IsDisposed() const ; sal_Bool IsInitialized() const; + void MethodEntryCheck( const bool i_mustBeInitialized ) const; ::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess > SAL_CALL getViewData() throw (::com::sun::star::uno::RuntimeException); void SAL_CALL setViewData( const ::com::sun::star::uno::Reference < ::com::sun::star::container::XIndexAccess >& aData ) throw (::com::sun::star::uno::RuntimeException); @@ -1573,10 +1573,7 @@ public: SfxModelGuard( SfxBaseModel& i_rModel, const AllowedModelState i_eState = E_FULLY_ALIVE ) :m_aGuard( Application::GetSolarMutex() ) { - if ( i_rModel.IsDisposed() ) - throw ::com::sun::star::lang::DisposedException( ::rtl::OUString(), *&i_rModel ); - if ( ( i_eState != E_INITIALIZING ) && !i_rModel.IsInitialized() ) - throw ::com::sun::star::lang::NotInitializedException( ::rtl::OUString(), *&i_rModel ); + i_rModel.MethodEntryCheck( i_eState != E_INITIALIZING ); } ~SfxModelGuard() { diff --git a/sfx2/inc/sfx2/sfxcommands.h b/sfx2/inc/sfx2/sfxcommands.h new file mode 100644 index 000000000000..bdf27baac7b3 --- /dev/null +++ b/sfx2/inc/sfx2/sfxcommands.h @@ -0,0 +1,345 @@ +/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SFX2_SFXCOMMANDS_HRC
+#define SFX2_SFXCOMMANDS_HRC
+
+#define CMD_SID_VIEWSHELL0 ".uno:_SwitchViewShell0"
+#define CMD_SID_VIEWSHELL1 ".uno:_SwitchViewShell1"
+#define CMD_SID_VIEWSHELL2 ".uno:_SwitchViewShell2"
+#define CMD_SID_VIEWSHELL3 ".uno:_SwitchViewShell3"
+#define CMD_SID_VIEWSHELL4 ".uno:_SwitchViewShell4"
+#define CMD_SID_ABOUT ".uno:About"
+#define CMD_SID_ACTIVATE ".uno:Activate"
+#define CMD_SID_HELPBALLOONS ".uno:ActiveHelp"
+#define CMD_SID_STYLE_FAMILY ".uno:ActualStyleFamily"
+#define CMD_SID_NEWDOC ".uno:NewDoc"
+#define CMD_SID_CREATELINK ".uno:AddBookmark"
+#define CMD_SID_NEWDOCDIRECT ".uno:AddDirect"
+#define CMD_SID_TEMPLATE_ADDRESSBOKSOURCE ".uno:AddressBookSource"
+#define CMD_SID_BASICIDE_ADDWATCH ".uno:AddWatch"
+#define CMD_SID_DOCINFO_AUTHOR ".uno:Author"
+#define CMD_SID_AUTOHIDE ".uno:AutoHide"
+#define CMD_SID_AUTOPILOTMENU ".uno:AutoPilotMenu"
+#define CMD_SID_GALLERY_BG_BRUSH ".uno:BackgroundImage"
+#define CMD_SID_BACKSPACE ".uno:Backspace"
+#define CMD_SID_BASICBREAK ".uno:BasicBreak"
+#define CMD_SID_BASICIDE_APPEAR ".uno:BasicIDEAppear"
+#define CMD_SID_BASICSTEPINTO ".uno:BasicStepInto"
+#define CMD_SID_BASICSTEPOUT ".uno:BasicStepOut"
+#define CMD_SID_BASICSTEPOVER ".uno:BasicStepOver"
+#define CMD_SID_BASICSTOP ".uno:BasicStop"
+#define CMD_SID_BROWSER ".uno:Beamer"
+#define CMD_SID_BASICIDE_BRKPNTSCHANGED ".uno:BreakPointsChanged"
+#define CMD_SID_BROWSE_BACKWARD ".uno:BrowseBackward"
+#define CMD_SID_BROWSE_FORWARD ".uno:BrowseForward"
+#define CMD_SID_BROWSER_MODE ".uno:BrowseView"
+#define CMD_SID_BUILD_VERSION ".uno:BuildVersion"
+#define CMD_SID_CAPTION ".uno:Caption"
+#define CMD_SID_STYLE_FAMILY1 ".uno:CharStyle"
+#define CMD_SID_CHECK_KEY ".uno:CheckKey"
+#define CMD_SID_BASICIDE_CHOOSEMACRO ".uno:ChooseMacro"
+#define CMD_SID_CLEARHISTORY ".uno:ClearHistory"
+#define CMD_SID_CLOSEWINS ".uno:CloseWins"
+#define CMD_SID_CLOSEDOCS ".uno:CloseDocs"
+#define CMD_SID_CLOSEDOC ".uno:CloseDoc"
+#define CMD_SID_CLOSEWIN ".uno:CloseWin"
+#define CMD_SID_CLOSING ".uno:Closing"
+#define CMD_SID_DOCINFO_COMMENTS ".uno:Comments"
+#define CMD_SID_OFFICE_COMMERCIAL_USE ".uno:CommercialUse"
+#define CMD_SID_DOCUMENT_COMPARE ".uno:CompareDocuments"
+#define CMD_SID_BASICCOMPILE ".uno:CompileBasic"
+#define CMD_SID_CONFIG ".uno:ConfigureDialog"
+#define CMD_SID_CONTEXT ".uno:Context"
+#define CMD_SID_COPY ".uno:Copy"
+#define CMD_SID_CRASH ".uno:Crash"
+#define CMD_SID_BASICIDE_CREATEMACRO ".uno:CreateMacro"
+#define CMD_SID_CURRENT_URL ".uno:CurrentURL"
+#define CMD_SID_CURSORENDOFSCREEN ".uno:CursorEndOfScreen"
+#define CMD_SID_CURSORTOPOFSCREEN ".uno:CursorTopOfScreen"
+#define CMD_SID_OFFICE_CUSTOMERNUMBER ".uno:CustomerNumber"
+#define CMD_SID_CUT ".uno:Cut"
+#define CMD_SID_DEFAULTFILEPATH ".uno:DefaultFilePath"
+#define CMD_SID_DEFAULTFILENAME ".uno:DefaultFileName"
+#define CMD_SID_DELETE ".uno:Delete"
+#define CMD_SID_BASICIDE_DELETECURRENT ".uno:DeleteCurrent"
+#define CMD_SID_STYLE_DELETE ".uno:DeleteStyle"
+#define CMD_SID_STYLE_DESIGNER ".uno:DesignerDialog"
+#define CMD_SID_STYLE_DRAGHIERARCHIE ".uno:DragHierarchy"
+#define CMD_SID_EDITDOC ".uno:EditDoc"
+#define CMD_SID_BASICIDE_EDITMACRO ".uno:EditMacro"
+#define CMD_SID_STYLE_EDIT ".uno:EditStyle"
+#define CMD_FID_SEARCH_NOW ".uno:ExecuteSearch"
+#define CMD_SID_EXTENDEDHELP ".uno:ExtendedHelp"
+#define CMD_SID_FILE_NAME ".uno:FileName"
+#define CMD_SID_FOCUSURLBOX ".uno:FocusUrlBox"
+#define CMD_SID_FORMATMENU ".uno:FormatMenu"
+#define CMD_SID_STYLE_FAMILY3 ".uno:FrameStyle"
+#define CMD_SID_FRAMETITLE ".uno:FrameTitle"
+#define CMD_SID_PROGFILENAME ".uno:FullName"
+#define CMD_SID_DOCFULLNAME ".uno:FullName"
+#define CMD_SID_WIN_FULLSCREEN ".uno:FullScreen"
+#define CMD_SID_FILLFRAME ".uno:GetFrameWindow"
+#define CMD_SID_CURSORDOWN ".uno:GoDown"
+#define CMD_SID_CURSORPAGEDOWN ".uno:GoDownBlock"
+#define CMD_SID_CURSORPAGEDOWN_SEL ".uno:GoDownBlockSel"
+#define CMD_SID_CURSORDOWN_SEL ".uno:GoDownSel"
+#define CMD_SID_CURSORLEFT ".uno:GoLeft"
+#define CMD_SID_CURSORPAGELEFT ".uno:GoLeftBlock"
+#define CMD_SID_CURSORPAGELEFT_SEL ".uno:GoLeftBlockSel"
+#define CMD_SID_CURSORLEFT_SEL ".uno:GoLeftSel"
+#define CMD_SID_CURSORRIGHT ".uno:GoRight"
+#define CMD_SID_CURSORRIGHT_SEL ".uno:GoRightSel"
+#define CMD_SID_CURSORENDOFFILE ".uno:GoToEndOfData"
+#define CMD_SID_CURSORENDOFFILE_SEL ".uno:GoToEndOfDataSel"
+#define CMD_SID_CURSOREND ".uno:GoToEndOfRow"
+#define CMD_SID_CURSOREND_SEL ".uno:GoToEndOfRowSel"
+#define CMD_SID_CURSORTOPOFFILE ".uno:GoToStart"
+#define CMD_SID_CURSORHOME ".uno:GoToStartOfRow"
+#define CMD_SID_CURSORHOME_SEL ".uno:GoToStartOfRowSel"
+#define CMD_SID_CURSORTOPOFFILE_SEL ".uno:GoToStartSel"
+#define CMD_SID_CURSORUP ".uno:GoUp"
+#define CMD_SID_CURSORPAGEUP ".uno:GoUpBlock"
+#define CMD_SID_CURSORPAGEUP_SEL ".uno:GoUpBlockSel"
+#define CMD_SID_CURSORUP_SEL ".uno:GoUpSel"
+#define CMD_SID_HELP_ANNOTATE ".uno:HelpAnnotate"
+#define CMD_SID_HELP_BOOKMARK ".uno:HelpBookmark"
+#define CMD_SID_HELP_HELPFILEBOX ".uno:HelpChooseFile"
+#define CMD_SID_HELP_DOWNLOAD ".uno:HelpDownload"
+#define CMD_SID_HELP_PI ".uno:HelperDialog"
+#define CMD_SID_HELPINDEX ".uno:HelpIndex"
+#define CMD_SID_HELPMENU ".uno:HelpMenu"
+#define CMD_SID_HELPONHELP ".uno:HelpOnHelp"
+#define CMD_SID_HELP_SEARCH ".uno:HelpSearch"
+#define CMD_SID_HELPTIPS ".uno:HelpTip"
+#define CMD_SID_HELP_ZOOMIN ".uno:HelpZoomIn"
+#define CMD_SID_HELP_ZOOMOUT ".uno:HelpZoomOut"
+#define CMD_SID_BASICIDE_HIDECURPAGE ".uno:HideCurPage"
+#define CMD_SID_HYPERLINK_DIALOG ".uno:HyperlinkDialog"
+#define CMD_SID_INSERTDOC ".uno:InsertDoc"
+#define CMD_SID_HYPERLINK_INSERT ".uno:InsertHyperlink"
+#define CMD_SID_INSERT_FLOATINGFRAME ".uno:InsertObjectFloatingFrame"
+#define CMD_SID_INTERNET_ONLINE ".uno:InternetOnline"
+#define CMD_SID_INTERNET_SEARCH ".uno:InternetSearch"
+#define CMD_SID_DOC_LOADING ".uno:IsLoading"
+#define CMD_SID_IMG_LOADING ".uno:IsLoadingImages"
+#define CMD_SID_PRINTOUT ".uno:IsPrinting"
+#define CMD_SID_JUMPTOMARK ".uno:JumpToMark"
+#define CMD_SID_DOCINFO_KEYWORDS ".uno:Keywords"
+#define CMD_SID_BASICIDE_LIBLOADED ".uno:LibLoaded"
+#define CMD_SID_BASICIDE_LIBREMOVED ".uno:LibRemoved"
+#define CMD_SID_BASICIDE_LIBSELECTED ".uno:LibSelect"
+#define CMD_SID_BASICIDE_LIBSELECTOR ".uno:LibSelector"
+#define CMD_SID_OFFICE_PLK ".uno:LicenceKey"
+#define CMD_SID_CONFIGACCEL ".uno:LoadAccel"
+#define CMD_SID_BASICLOAD ".uno:LoadBasic"
+#define CMD_SID_LOADCONFIG ".uno:LoadConfiguration"
+#define CMD_SID_CONFIGEVENT ".uno:LoadEvents"
+#define CMD_SID_CONFIGMENU ".uno:LoadMenu"
+#define CMD_SID_CONFIGSTATUSBAR ".uno:LoadStatusBar"
+#define CMD_SID_TOOLBOXOPTIONS ".uno:LoadToolBox"
+#define CMD_SID_LOGOUT ".uno:Logout"
+#define CMD_SID_SCRIPTORGANIZER ".uno:ScriptOrganizer"
+#define CMD_SID_MACROORGANIZER ".uno:MacroOrganizer"
+#define CMD_SID_RUNMACRO ".uno:RunMacro"
+#define CMD_SID_BASICCHOOSER ".uno:MacroDialog"
+#define CMD_SID_MAIL_NOTIFY ".uno:MailReceipt"
+#define CMD_SID_MAIL_CHILDWIN ".uno:MailWindow"
+#define CMD_SID_BASICIDE_MATCHGROUP ".uno:MatchGroup"
+#define CMD_SID_TOGGLE_MENUBAR ".uno:MenuBarVisible"
+#define CMD_SID_DOCUMENT_MERGE ".uno:MergeDocuments"
+#define CMD_SID_ATTR_METRIC ".uno:MetricUnit"
+#define CMD_SID_MODIFIED ".uno:Modified"
+#define CMD_SID_DOC_MODIFIED ".uno:ModifiedStatus"
+#define CMD_SID_BASICIDE_MODULEDLG ".uno:ModuleDialog"
+#define CMD_SID_BASICIDE_NAMECHANGEDONTAB ".uno:NameChangedOnTab"
+#define CMD_SID_NAVIGATOR ".uno:Navigator"
+#define CMD_SID_RESTORE_EDITING_VIEW ".uno:RestoreEditingView"
+#define CMD_SID_BASICIDE_NEWDIALOG ".uno:NewDialog"
+#define CMD_SID_BASICIDE_NEWMODULE ".uno:NewModule"
+#define CMD_SID_CREATE_BASICOBJECT ".uno:NewObject"
+#define CMD_SID_STYLE_NEW ".uno:NewStyle"
+#define CMD_SID_NEWWINDOW ".uno:NewWindow"
+#define CMD_SID_BASICIDE_OBJCAT ".uno:ObjectCatalog"
+#define CMD_SID_OBJECT ".uno:ObjectMenue"
+#define CMD_SID_OLD_PALK ".uno:OldPALK"
+#define CMD_SID_OPENDOC ".uno:Open"
+#define CMD_SID_WEBHTML ".uno:WebHtml"
+#define CMD_SID_OPENHYPERLINK ".uno:OpenHyperlink"
+#define CMD_SID_DOCINFO_TITLE ".uno:DocInfoTitle"
+#define CMD_SID_OPENTEMPLATE ".uno:OpenTemplate"
+#define CMD_SID_OPENURL ".uno:OpenUrl"
+#define CMD_SID_OPTIONS ".uno:Options"
+#define CMD_SID_ORGANIZER ".uno:Organizer"
+#define CMD_SID_STYLE_FAMILY4 ".uno:PageStyle"
+#define CMD_SID_STYLE_FAMILY2 ".uno:ParaStyle"
+#define CMD_SID_PARTWIN ".uno:PartWindow"
+#define CMD_SID_PASTE ".uno:Paste"
+#define CMD_SID_CLIPBOARD_FORMAT_ITEMS ".uno:ClipboardFormatItems"
+#define CMD_SID_PASTE_SPECIAL ".uno:PasteSpecial"
+#define CMD_SID_DOCPATH ".uno:DocPath"
+#define CMD_SID_PICKLIST ".uno:PickList"
+#define CMD_SID_PLAYMACRO ".uno:PlayMacro"
+#define CMD_SID_PLUGINS_ACTIVE ".uno:PlugInsActive"
+#define CMD_SID_PRINTDOC ".uno:Print"
+#define CMD_SID_PRINTDOCDIRECT ".uno:PrintDefault"
+#define CMD_SID_PRINTER_NAME ".uno:Printer"
+#define CMD_SID_SETUPPRINTER ".uno:PrinterSetup"
+#define CMD_SID_PRINTPREVIEW ".uno:PrintPreview"
+#define CMD_SID_OFFICE_PRIVATE_USE ".uno:PrivateUse"
+#define CMD_SID_DOCINFO ".uno:SetDocumentProperties"
+#define CMD_SID_QUITAPP ".uno:Quit"
+#define CMD_SID_DOC_READONLY ".uno:ReadOnly"
+#define CMD_SID_RECORDMACRO ".uno:MacroRecorder"
+#define CMD_SID_STOP_RECORDING ".uno:StopRecording"
+#define CMD_SID_RECORDING_FLOATWINDOW ".uno:MacroRecordingFloat"
+#define CMD_SID_REDO ".uno:Redo"
+#define CMD_SID_DELETE_BASICOBJECT ".uno:ReleaseObject"
+#define CMD_SID_RELOAD ".uno:Reload"
+#define CMD_SID_BASICIDE_REMOVEWATCH ".uno:RemoveWatch"
+#define CMD_SID_BASICIDE_RENAMECURRENT ".uno:RenameCurrent"
+#define CMD_SID_REPAINT ".uno:Repaint"
+#define CMD_SID_REPEAT ".uno:RepeatAction"
+#define CMD_SID_RUBY_DIALOG ".uno:RubyDialog"
+#define CMD_SID_BASICRUN ".uno:RunBasic"
+#define CMD_SID_STARTSW ".uno:RunStarWriter"
+#define CMD_SID_SAVEDOC ".uno:Save"
+#define CMD_SID_SAVEDOCS ".uno:SaveAll"
+#define CMD_SID_SAVEASDOC ".uno:SaveAs"
+#define CMD_SID_DOCTEMPLATE ".uno:SaveAsTemplate"
+#define CMD_SID_BASICSAVEAS ".uno:SaveBasicAs"
+#define CMD_SID_EXPORT_DIALOG ".uno:ExportDialog"
+#define CMD_SID_IMPORT_DIALOG ".uno:ImportDialog"
+#define CMD_SID_SAVECONFIG ".uno:SaveConfiguration"
+#define CMD_SID_DOC_SAVED ".uno:Saved"
+#define CMD_SID_BASICIDE_SBXDELETED ".uno:SbxDeleted"
+#define CMD_SID_BASICIDE_SBXINSERTED ".uno:SbxInserted"
+#define CMD_SID_BASICIDE_SBXRENAMED ".uno:SbxRenamed"
+#define CMD_SID_MAIL_SCROLLBODY_PAGEDOWN ".uno:ScrollBodyPageDown"
+#define CMD_SID_SEARCH_DLG ".uno:SearchDialog"
+#define CMD_SID_SEARCH_OPTIONS ".uno:SearchOptions"
+#define CMD_SID_SEARCH_ITEM ".uno:SearchProperties"
+#define CMD_SID_SELECTALL ".uno:SelectAll"
+#define CMD_FN_FAX ".uno:SendFax"
+#define CMD_SID_MAIL_SENDDOC ".uno:SendMail"
+#define CMD_SID_MAIL_SENDDOCASPDF ".uno:SendMailDocAsPDF"
+#define CMD_SID_MAIL_SENDDOCASFORMAT ".uno:SendMailDocAsFormat"
+#define CMD_SID_MAIL_SENDDOCASMS ".uno:SendMailDocAsMS"
+#define CMD_SID_MAIL_SENDDOCASOOO ".uno:SendMailDocAsOOo"
+#define CMD_SID_SETOPTIONS ".uno:SetOptions"
+#define CMD_SID_OFFICE_PALK ".uno:SetPALK"
+#define CMD_SID_SHOW_BROWSER ".uno:ShowBrowser"
+#define CMD_SID_SHOWPOPUPS ".uno:ShowPopups"
+#define CMD_SID_BASICIDE_SHOWSBX ".uno:ShowSbx"
+#define CMD_SID_SOURCEVIEW ".uno:SourceView"
+#define CMD_SID_ONLINE_REGISTRATION_DLG ".uno:StartRegistrationDialog"
+#define CMD_SID_STATUSBARTEXT ".uno:StatusBar"
+#define CMD_SID_TOGGLESTATUSBAR ".uno:StatusBarVisible"
+#define CMD_SID_BASICIDE_STAT_DATE ".uno:StatusGetDate"
+#define CMD_SID_BASICIDE_STAT_POS ".uno:StatusGetPosition"
+#define CMD_SID_BASICIDE_STAT_TITLE ".uno:StatusGetTitle"
+#define CMD_SID_BASICIDE_STOREALLMODULESOURCES ".uno:StoreAllModuleSources"
+#define CMD_SID_BASICIDE_STOREMODULESOURCE ".uno:StoreModuleSource"
+#define CMD_SID_STYLE_APPLY ".uno:StyleApplyState"
+#define CMD_SID_STYLE_CATALOG ".uno:StyleCatalog"
+#define CMD_SID_STYLE_NEW_BY_EXAMPLE ".uno:StyleNewByExample"
+#define CMD_SID_STYLE_UPDATE_BY_EXAMPLE ".uno:StyleUpdateByExample"
+#define CMD_SID_STYLE_WATERCAN ".uno:StyleWatercanMode"
+#define CMD_SID_VIEWSHELL ".uno:SwitchViewShell"
+#define CMD_SID_TASKBAR ".uno:TaskBarVisible"
+#define CMD_SID_STYLE_FAMILY5 ".uno:ListStyle"
+#define CMD_SID_TIPWINDOW ".uno:TipsDialog"
+#define CMD_SID_DOCTITLE ".uno:Title"
+#define CMD_SID_TITLE ".uno:Title"
+#define CMD_SID_BASICIDE_TOGGLEBRKPNT ".uno:ToggleBreakPoint"
+#define CMD_SID_BASICIDE_SHOWWINDOW ".uno:BasicIDEShowWindow"
+#define CMD_SID_EDITMACRO ".uno:ToolsMacroEdit"
+#define CMD_SID_UNDO ".uno:Undo"
+#define CMD_SID_FORMATPAINTBRUSH ".uno:FormatPaintbrush"
+#define CMD_SID_ATTR_UNDO_COUNT ".uno:UndoCount"
+#define CMD_SID_BASICIDE_UPDATEALLMODULESOURCES ".uno:UpdateAllModuleSources"
+#define CMD_SID_BASICIDE_UPDATEMODULESOURCE ".uno:UpdateModuleSource"
+#define CMD_SID_BASICIDE_MANAGEBRKPNTS ".uno:ManageBreakPoints"
+#define CMD_SID_BASICIDE_TOGGLEBRKPNTENABLED ".uno:ToggleBreakPointEnabled"
+#define CMD_SID_UPDATE_VERSION ".uno:UpdateVersion"
+#define CMD_SID_VERSION ".uno:VersionDialog"
+#define CMD_SID_SIGNATURE ".uno:Signature"
+#define CMD_SID_MACRO_SIGNATURE ".uno:MacroSignature"
+#define CMD_SID_VERSION_VISIBLE ".uno:VersionVisible"
+#define CMD_SID_VIEW_DATA_SOURCE_BROWSER ".uno:ViewDataSourceBrowser"
+#define CMD_SID_WIN_VISIBLE ".uno:WinVisible"
+#define CMD_SID_MDIWINDOWLIST ".uno:WindowList"
+#define CMD_SID_ZOOM_IN ".uno:ZoomMinus"
+#define CMD_SID_ZOOM ".uno:Zooming"
+#define CMD_SID_ZOOM_NEXT ".uno:ZoomNext"
+#define CMD_SID_ZOOM_OUT ".uno:ZoomPlus"
+#define CMD_SID_ZOOM_PREV ".uno:ZoomPrevious"
+#define CMD_SID_ZOOM_TOOLBOX ".uno:ZoomToolBox"
+#define CMD_SID_EXPORTDOC ".uno:ExportTo"
+#define CMD_SID_EXPORTDOCASPDF ".uno:ExportToPDF"
+#define CMD_SID_DIRECTEXPORTDOCASPDF ".uno:ExportDirectToPDF"
+#define CMD_SID_IMAGE_ORIENTATION ".uno:ImageOrientation"
+#define CMD_SID_SAVE_VERSION_ON_CLOSE ".uno:SaveVersionOnClose"
+#define CMD_SID_ADDONS ".uno:Addons"
+#define CMD_SID_SHOW_IME_STATUS_WINDOW ".uno:ShowImeStatusWindow"
+#define CMD_SID_UPDATE_CONFIG ".uno:UpdateConfiguration"
+#define CMD_SID_HELP_SUPPORTPAGE ".uno:HelpSupport"
+#define CMD_SID_HELP_TUTORIALS ".uno:HelpTutorials"
+#define CMD_SID_ADDONHELP ".uno:AddonHelp"
+#define CMD_SID_FORMATMENUSTATE ".uno:FormatMenuState"
+#define CMD_SID_INET_DLG ".uno:InternetDialog"
+#define CMD_SID_ONLINE_REGISTRATION ".uno:OnlineRegistrationDlg"
+#define CMD_SID_OFFICE_CHECK_PLZ ".uno:CheckPLZ"
+#define CMD_SID_ADDRESS_DATA_SOURCE ".uno:AutoPilotAddressDataSource"
+#define CMD_FN_BUSINESS_CARD ".uno:InsertBusinessCard"
+#define CMD_FN_LABEL ".uno:InsertLabels"
+#define CMD_FN_XFORMS_INIT ".uno:NewXForms"
+#define CMD_SID_SD_AUTOPILOT ".uno:AutoPilotPresentations"
+#define CMD_SID_NEWSD ".uno:NewPresentation"
+#define CMD_SID_COMP_BIBLIOGRAPHY ".uno:BibliographyComponent"
+#define CMD_SID_MINIMIZED ".uno:Minimized"
+#define CMD_SID_AUTO_CORRECT_DLG ".uno:AutoCorrectDlg"
+#define CMD_SID_OPTIONS_TREEDIALOG ".uno:OptionsTreeDialog"
+#define CMD_SID_TERMINATE_INPLACEACTIVATION ".uno:TerminateInplaceActivation"
+#define CMD_SID_RECENTFILELIST ".uno:RecentFileList"
+#define CMD_SID_AVAILABLE_TOOLBARS ".uno:AvailableToolbars"
+#define CMD_SID_AVMEDIA_PLAYER ".uno:AVMediaPlayer"
+#define CMD_SID_INSERT_AVMEDIA ".uno:InsertAVMedia"
+#define CMD_SID_MORE_DICTIONARIES ".uno:MoreDictionaries"
+#define CMD_SID_ACTIVATE_STYLE_APPLY ".uno:ActivateStyleApply"
+#define CMD_SID_DOCKWIN_0 ".uno:DockingWindow0"
+#define CMD_SID_DOCKWIN_1 ".uno:DockingWindow1"
+#define CMD_SID_DOCKWIN_2 ".uno:DockingWindow2"
+#define CMD_SID_DOCKWIN_3 ".uno:DockingWindow3"
+#define CMD_SID_DOCKWIN_4 ".uno:DockingWindow4"
+#define CMD_SID_DOCKWIN_5 ".uno:DockingWindow5"
+#define CMD_SID_DOCKWIN_6 ".uno:DockingWindow6"
+#define CMD_SID_DOCKWIN_7 ".uno:DockingWindow7"
+#define CMD_SID_DOCKWIN_8 ".uno:DockingWindow8"
+#define CMD_SID_DOCKWIN_9 ".uno:DockingWindow9"
+#define CMD_SID_PASTE_UNFORMATTED ".uno:PasteUnformatted"
+
+#endif
diff --git a/sfx2/inc/sfx2/sfxdlg.hxx b/sfx2/inc/sfx2/sfxdlg.hxx index d82abeefe8bc..f3d773f98afc 100644 --- a/sfx2/inc/sfx2/sfxdlg.hxx +++ b/sfx2/inc/sfx2/sfxdlg.hxx @@ -133,10 +133,10 @@ public: const String *pUserButtonText=0 ) = 0; virtual CreateTabPage GetTabPageCreatorFunc( USHORT nId ) = 0; virtual GetTabPageRanges GetTabPageRangesFunc( USHORT nId ) = 0; - virtual SfxAbstractInsertObjectDialog* CreateInsertObjectDialog( Window* pParent, USHORT nSlotId, + virtual SfxAbstractInsertObjectDialog* CreateInsertObjectDialog( Window* pParent, const rtl::OUString& rCommand, const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& xStor, const SvObjectServerList* pList = 0 )=0; - virtual VclAbstractDialog* CreateEditObjectDialog( Window* pParent, USHORT nSlotId, + virtual VclAbstractDialog* CreateEditObjectDialog( Window* pParent, const rtl::OUString& rCommand, const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject >& xObj )=0; virtual SfxAbstractPasteDialog* CreatePasteDialog( Window* pParent )=0; virtual SfxAbstractLinksDialog* CreateLinksDialog( Window* pParent, sfx2::LinkManager* pMgr, BOOL bHTML=FALSE, sfx2::SvBaseLink* p=0 )=0; diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc index 26e1991c24b8..b5dd2623ae35 100644 --- a/sfx2/inc/sfx2/sfxsids.hrc +++ b/sfx2/inc/sfx2/sfxsids.hrc @@ -93,6 +93,8 @@ #define SID_MAIL_PRIORITY (SID_SFX_START + 337) #define SID_MAIL_ATTACH_FILE (SID_SFX_START + 375) +#define SID_MAIL_PREPAREEXPORT (SID_SFX_START + 385) +#define SID_MAIL_NEEDS_PREPAREEXPORT (SID_SFX_START + 386) #define SID_MAIL_EXPORT_FINISHED (SID_SFX_START + 388) #define SID_WEBHTML (SID_SFX_START + 393) @@ -191,7 +193,7 @@ #define SID_EXPLORER_FILEPROPS_END (SID_SFX_START + 1399) #define ID_FILETP_START SID_EXPLORER_FILEPROPS_START -#define ID_FILETP_READONLY (ID_FILETP_START + 0) +#define ID_FILETP_READONLY (ID_FILETP_START + 0) #define ID_FILETP_TITLE (ID_FILETP_START + 1) #define SID_EXPLORER_PROPS_START (SID_SFX_START + 1410) @@ -225,9 +227,9 @@ #define SID_OFFICE_PLK (SID_SFX_START + 1601) #define SID_OFFICE_PALK (SID_SFX_START + 1604) #define SID_CHECK_KEY (SID_SFX_START + 1605) -#define SID_OFFICE_PRIVATE_USE (SID_SFX_START + 1606) -#define SID_OFFICE_COMMERCIAL_USE (SID_SFX_START + 1607) -#define SID_OFFICE_CUSTOMERNUMBER (SID_SFX_START + 1608) +#define SID_OFFICE_PRIVATE_USE (SID_SFX_START + 1606) +#define SID_OFFICE_COMMERCIAL_USE (SID_SFX_START + 1607) +#define SID_OFFICE_CUSTOMERNUMBER (SID_SFX_START + 1608) #define SID_OFFICE_INVALIDATE_TITLE (SID_SFX_START + 1609) #define SID_OFFICE_CHECK_PLZ (SID_SFX_START + 1610) #define SID_INTERNET_SEARCH (SID_SFX_START + 1611) @@ -240,11 +242,11 @@ #define SID_NEW_MSG_PARENT (SID_SFX_START + 1622) -#define SID_PGP_ENCODE (SID_SFX_START + 1625) -#define SID_PGP_DECODE (SID_SFX_START + 1626) -#define SID_TIPWINDOW (SID_SFX_START + 1632) +#define SID_PGP_ENCODE (SID_SFX_START + 1625) +#define SID_PGP_DECODE (SID_SFX_START + 1626) +#define SID_TIPWINDOW (SID_SFX_START + 1632) #define SID_CHARSET (SID_SFX_START + 1633) -#define SID_OVERWRITE (SID_SFX_START + 1634) +#define SID_OVERWRITE (SID_SFX_START + 1634) #define SID_RENAME (SID_SFX_START + 1653) #define SID_PARTWIN (SID_SFX_START + 1640) #define SID_CRASH (SID_SFX_START + 1645) @@ -275,7 +277,7 @@ #define SID_SHOW_IME_STATUS_WINDOW (SID_SFX_START + 1680) #define SID_UPDATE_CONFIG (SID_SFX_START + 1681) #define SID_VIEWONLY (SID_SFX_START + 1682) -#define SID_REPAIRPACKAGE (SID_SFX_START + 1683) +#define SID_REPAIRPACKAGE (SID_SFX_START + 1683) #define SID_ADDONHELP (SID_SFX_START + 1684) #define SID_OBJECTSHELL (SID_SFX_START + 1685) #define SID_MINIMIZED (SID_SFX_START + 1687) @@ -309,7 +311,9 @@ #define SID_DEFAULTFILENAME (SID_SFX_START + 1717) #define SID_MODIFYPASSWORDINFO (SID_SFX_START + 1718) #define SID_RECOMMENDREADONLY (SID_SFX_START + 1719) -#define SID_SFX_free_START (SID_SFX_START + 1720) +#define SID_SUGGESTEDSAVEASDIR (SID_SFX_START + 1720) +#define SID_SUGGESTEDSAVEASNAME (SID_SFX_START + 1721) +#define SID_SFX_free_START (SID_SFX_START + 1722) #define SID_SFX_free_END (SID_SFX_START + 3999) #define SID_OPEN_NEW_VIEW (SID_SFX_START + 520) @@ -421,7 +425,6 @@ #define SID_INSERT_PLUGIN (SID_SFX_START + 672) #define SID_INSERT_SOUND (SID_SFX_START + 676) #define SID_INSERT_VIDEO (SID_SFX_START + 677) -#define SID_INSERT_APPLET (SID_SFX_START + 673) #define SID_HYPERLINK_DIALOG (SID_SFX_START + 678) @@ -493,7 +496,7 @@ #define SID_PASTE (SID_SFX_START + 712) // steht unter diesem Wert in chaos/cntids.hrc!!! -//#define SID_DELETE (SID_SFX_START + 713) +//#define SID_DELETE (SID_SFX_START + 713) #define SID_BACKSPACE (SID_SFX_START + 714) #define SID_FORMATPAINTBRUSH (SID_SFX_START + 715) @@ -657,7 +660,7 @@ #define SID_OPT_HELP_PATH (SID_SFX_START + 1560) #define SID_OPT_BOOKMARKS_PATH (SID_SFX_START + 1561) #define SID_OPT_GALLERY_PATH (SID_SFX_START + 1562) -#define SID_OPT_NEWDOC_PATH (SID_SFX_START + 1563) +#define SID_OPT_NEWDOC_PATH (SID_SFX_START + 1563) #define SID_OPT_AGENTS_PATH (SID_SFX_START + 1564) #define SID_OPT_AUTOPILOT_PATH (SID_SFX_START + 1565) #define SID_OPT_EXPLORER_PATH (SID_SFX_START + 1566) @@ -751,9 +754,9 @@ #define SID_ATTR_AUTOHELPAGENT (SID_OPTIONS_START + 67) #define SID_AUTOHELPAGENT_RESET (SID_OPTIONS_START + 68) #define SID_HELPAGENT_TIMEOUT (SID_OPTIONS_START + 93) -#define SID_ATTR_WELCOMESCREEN (SID_OPTIONS_START + 81) +#define SID_ATTR_WELCOMESCREEN (SID_OPTIONS_START + 81) #define SID_WELCOMESCREEN_RESET (SID_OPTIONS_START + 82) -#define SID_RESTORE_EXPAND_STATE (SID_OPTIONS_START + 83) +#define SID_RESTORE_EXPAND_STATE (SID_OPTIONS_START + 83) #define SID_ATTR_QUICKLAUNCHER (SID_OPTIONS_START + 74) #define SID_ATTR_YEAR2000 (SID_OPTIONS_START + 87) #define SID_ATTR_ALLOWFOLDERWEBVIEW (SID_OPTIONS_START + 92) @@ -825,7 +828,7 @@ #define SID_INET_CHANNELS_ONOFF (SID_OPTIONS_START + 64) -#define SID_INET_COOKIESHANDLE (SID_OPTIONS_START + 69) +#define SID_INET_COOKIESHANDLE (SID_OPTIONS_START + 69) #define SID_INET_CACHEJS (SID_OPTIONS_START + 70) #define SID_INET_CACHEEXPIRED (SID_OPTIONS_START + 71) diff --git a/sfx2/inc/sfx2/titledockwin.hxx b/sfx2/inc/sfx2/titledockwin.hxx index 2728cc621138..b6925ad332ad 100644 --- a/sfx2/inc/sfx2/titledockwin.hxx +++ b/sfx2/inc/sfx2/titledockwin.hxx @@ -76,7 +76,7 @@ namespace sfx2 @return the ID of the newly created toolbox item */ - USHORT AddDropDownToolBoxItem( const String& i_rItemText, ULONG i_nHelpId, const Link& i_rCallback ) + USHORT AddDropDownToolBoxItem( const String& i_rItemText, const rtl::OString& i_nHelpId, const Link& i_rCallback ) { return impl_addDropDownToolBoxItem( i_rItemText, i_nHelpId, i_rCallback ); } @@ -126,7 +126,7 @@ namespace sfx2 /** internal version of AddDropDownToolBoxItem */ - USHORT impl_addDropDownToolBoxItem( const String& i_rItemText, ULONG i_nHelpId, const Link& i_rCallback ); + USHORT impl_addDropDownToolBoxItem( const String& i_rItemText, const rtl::OString& i_nHelpId, const Link& i_rCallback ); /** returns the current title. diff --git a/sfx2/inc/sfxhelp.hxx b/sfx2/inc/sfxhelp.hxx index 60ad04b2e9ab..17589c7cd399 100644 --- a/sfx2/inc/sfxhelp.hxx +++ b/sfx2/inc/sfxhelp.hxx @@ -45,12 +45,11 @@ class SFX2_DLLPUBLIC SfxHelp : public Help SfxHelp_Impl* pImp; private: - SAL_DLLPRIVATE virtual BOOL Start( ULONG nHelpId, const Window* pWindow ); + SAL_DLLPRIVATE BOOL Start_Impl( const String& rURL, const Window* pWindow, const String& rKeyword ); + SAL_DLLPRIVATE virtual BOOL SearchKeyword( const XubString& rKeyWord ); SAL_DLLPRIVATE virtual BOOL Start( const String& rURL, const Window* pWindow ); - SAL_DLLPRIVATE virtual void OpenHelpAgent( ULONG nHelpId ); - + SAL_DLLPRIVATE virtual void OpenHelpAgent( const rtl::OString& sHelpId ); SAL_DLLPRIVATE String GetHelpModuleName_Impl(); - SAL_DLLPRIVATE String CreateHelpURL_Impl( ULONG nHelpId, const String& rModuleName ); SAL_DLLPRIVATE String CreateHelpURL_Impl( const String& aCommandURL, const String& rModuleName ); public: @@ -60,12 +59,11 @@ public: inline void SetTicket( const String& rTicket ) { aTicket = rTicket; } inline void SetUser( const String& rUser ) { aUser = rUser; } - virtual XubString GetHelpText( ULONG nHelpId, const Window* pWindow ); virtual XubString GetHelpText( const String&, const Window* pWindow ); - static String CreateHelpURL( ULONG nHelpId, const String& rModuleName ); static String CreateHelpURL( const String& aCommandURL, const String& rModuleName ); - static void OpenHelpAgent( SfxFrame* pFrame, ULONG nHelpId ); + using Help::OpenHelpAgent; + static void OpenHelpAgent( SfxFrame* pFrame, const rtl::OString& sHelpId ); static String GetDefaultHelpModule(); static ::rtl::OUString GetCurrentModuleIdentifier(); }; diff --git a/sfx2/qa/cppunit/makefile.mk b/sfx2/qa/cppunit/makefile.mk index dce0b86a0619..b53a04ec43f9 100644 --- a/sfx2/qa/cppunit/makefile.mk +++ b/sfx2/qa/cppunit/makefile.mk @@ -25,6 +25,10 @@ # #************************************************************************* +.IF "$(OOO_SUBSEQUENT_TESTS)" == "" +nothing .PHONY: +.ELSE + PRJ=../.. PRJNAME=sfx2 TARGET=qa_cppunit @@ -79,3 +83,4 @@ SLOFILES= \ .INCLUDE : target.mk .INCLUDE : _cppunit.mk +.END diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi index 8ca8645a05ff..40d35ab4d702 100755..100644 --- a/sfx2/sdi/sfx.sdi +++ b/sfx2/sdi/sfx.sdi @@ -6411,7 +6411,7 @@ SfxBoolItem TaskBarVisible SID_TASKBAR ] //-------------------------------------------------------------------------- -SfxTemplateItem TemplateFamily5 SID_STYLE_FAMILY5 +SfxTemplateItem ListStyle SID_STYLE_FAMILY5 [ /* flags: */ diff --git a/sfx2/source/appl/app.src b/sfx2/source/appl/app.src index 0858e66e7347..47750cd73f78 100644 --- a/sfx2/source/appl/app.src +++ b/sfx2/source/appl/app.src @@ -626,169 +626,6 @@ String RID_ENVTOOLBOX Text [ en-US ] = "Function Bar" ; }; -ToolBox RID_ENVTOOLBOX -{ - HelpId = RID_ENVTOOLBOX ; - ButtonType = BUTTON_SYMBOL ; - LineSpacing = TRUE ; - Border = TRUE ; - Scroll = TRUE ; - SVLook = TRUE ; - Dockable = TRUE ; - Moveable = TRUE ; - Sizeable = TRUE ; - Closeable = TRUE ; - Zoomable = TRUE ; - Customize = TRUE ; - FloatingMode = FALSE ; - Hide = TRUE ; - HideWhenDeactivate = TRUE ; - Align = BOXALIGN_TOP ; - ItemList = - { - ToolBoxItem - { - Identifier = SID_OPENURL ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_NEWDOCDIRECT ; - DropDown = TRUE; - }; - ToolBoxItem - { - Identifier = SID_NEWDOC ; - Hide = TRUE; - }; - ToolBoxItem - { - Identifier = SID_OPENDOC ; - }; - ToolBoxItem - { - Identifier = SID_SAVEDOC ; - }; - ToolBoxItem - { - Identifier = SID_SAVEASDOC ; - Hide = TRUE; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_EDITDOC ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_DIRECTEXPORTDOCASPDF ; - }; - ToolBoxItem - { - Identifier = SID_PRINTDOCDIRECT ; - }; - ToolBoxItem - { - Identifier = FN_FAX ; - Hide = TRUE; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_CUT ; - }; - ToolBoxItem - { - Identifier = SID_COPY ; - }; - ToolBoxItem - { - Identifier = SID_PASTE ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_UNDO ; - }; - ToolBoxItem - { - Identifier = SID_REDO ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_NAVIGATOR ; - }; - ToolBoxItem - { - Identifier = SID_STYLE_DESIGNER ; - }; - ToolBoxItem - { - Identifier = SID_HYPERLINK_DIALOG ; - }; - ToolBoxItem - { - Identifier = SID_HYPERLINK_INSERT ; - Hide = TRUE; - }; - ToolBoxItem - { - Identifier = SID_WIN_FULLSCREEN ; - Hide = TRUE; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_RECORDMACRO; - Hide = TRUE; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_GALLERY ; - }; - ToolBoxItem - { - Identifier = SID_AVMEDIA_PLAYER ; - }; - ToolBoxItem - { - Type = TOOLBOXITEM_SEPARATOR ; - }; - ToolBoxItem - { - Identifier = SID_CLOSEDOC; - Hide = TRUE; - }; - }; -}; - String RID_SPECIALCONFIG_ERROR { Text [ en-US ] = "An error has occurred in the special configuration.\nPlease contact your administrator." ; diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx index 6afa8c68ed83..0b5e94ea24f0 100644 --- a/sfx2/source/appl/appcfg.cxx +++ b/sfx2/source/appl/appcfg.cxx @@ -58,8 +58,6 @@ #include <sfx2/sfxsids.hrc> #include <sot/exchange.hxx> -//#include <svtools/agprop.hxx> -//#include <sj2/sjapplet.hxx> #include <svl/isethint.hxx> #include <unotools/configmgr.hxx> @@ -828,22 +826,6 @@ void SfxApplication::SetOptions_Impl( const SfxItemSet& rSet ) #endif } - // INet Session neu aufsetzen - if ( bResetSession ) - { - // no more sj2 - #if 0 - try - { - SjApplet2::settingsChanged(); - } - catch ( ... ) - { - DBG_ERRORFILE( "SjApplet2::settingsChanged() throws an exception" ); - } - #endif - } - // geaenderte Daten speichern aInetOptions.flush(); } diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index bd9efc9bca1e..439396d2ffa7 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -346,11 +346,10 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) Help* pHelp = Application::GetHelp(); if ( pHelp ) { - ULONG nHelpId = ( rReq.GetSlot() == SID_HELP_SUPPORTPAGE ) ? 66056 : 0; - if ( 66056 == nHelpId ) + if ( rReq.GetSlot() == SID_HELP_SUPPORTPAGE ) { // show Support page with new URL - String sHelpURL = SfxHelp::CreateHelpURL( nHelpId, String() ); + String sHelpURL = SfxHelp::CreateHelpURL( String::CreateFromAscii(".uno:HelpSupport"), String() ); String sParams = sHelpURL.Copy( sHelpURL.Search( '?' ) ); sHelpURL = String::CreateFromAscii("vnd.sun.star.help://shared/text/shared/05/00000001.xhp"); sHelpURL += sParams; @@ -358,7 +357,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) pHelp->Start( sHelpURL, NULL ); } else - pHelp->Start( nHelpId, NULL ); // show start page + pHelp->Start( String::CreateFromAscii(".uno:HelpIndex"), NULL ); // show start page bDone = TRUE; } break; diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx index b0aae115aa9b..5347aec0e99f 100644 --- a/sfx2/source/appl/appuno.cxx +++ b/sfx2/source/appl/appuno.cxx @@ -134,7 +134,6 @@ using namespace ::com::sun::star::io; #include "brokenpackageint.hxx" #include "eventsupplier.hxx" #include "xpackcreator.hxx" -// #include "applet.hxx" #include "plugin.hxx" #include "iframe.hxx" #include <ownsubfilterservice.hxx> @@ -166,7 +165,7 @@ static char const sDontEdit[] = "DontEdit"; static char const sSilent[] = "Silent"; static char const sJumpMark[] = "JumpMark"; static char const sFileName[] = "FileName"; -static char const sSalvageURL[] = "SalvagedFile"; +static char const sSalvagedFile[] = "SalvagedFile"; static char const sStatusInd[] = "StatusIndicator"; static char const sModel[] = "Model"; static char const sFrame[] = "Frame"; @@ -192,6 +191,8 @@ static char const sUseSystemDialog[] = "UseSystemDialog"; static char const sStandardDir[] = "StandardDir"; static char const sBlackList[] = "BlackList"; static char const sModifyPasswordInfo[] = "ModifyPasswordInfo"; +static char const sSuggestedSaveAsDir[] = "SuggestedSaveAsDir"; +static char const sSuggestedSaveAsName[] = "SuggestedSaveAsName"; void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& rArgs, SfxAllItemSet& rSet, const SfxSlot* pSlot ) { @@ -686,7 +687,7 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque { ::rtl::OUString sVal; sal_Bool bOK = ((rProp.Value >>= sVal) && sVal.getLength()); - DBG_ASSERT( bOK, "invalid type or value for StanadardDir" ); + DBG_ASSERT( bOK, "invalid type or value for StandardDir" ); if (bOK) rSet.Put( SfxStringItem( SID_STANDARD_DIR, sVal ) ); } @@ -710,11 +711,11 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque if (bOK) rSet.Put( SfxStringItem( SID_FILE_NAME, sVal ) ); } - else if ( aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sSalvageURL)) ) + else if ( aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sSalvagedFile)) ) { ::rtl::OUString sVal; sal_Bool bOK = (rProp.Value >>= sVal); - DBG_ASSERT( bOK, "invalid type or value for SalvageURL" ); + DBG_ASSERT( bOK, "invalid type or value for SalvagedFile" ); if (bOK) rSet.Put( SfxStringItem( SID_DOC_SALVAGE, sVal ) ); } @@ -722,7 +723,7 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque { ::rtl::OUString sVal; sal_Bool bOK = (rProp.Value >>= sVal); - DBG_ASSERT( bOK, "invalid type or value for SalvageURL" ); + DBG_ASSERT( bOK, "invalid type or value for FolderName" ); if (bOK) rSet.Put( SfxStringItem( SID_PATH, sVal ) ); } @@ -851,6 +852,22 @@ void TransformParameters( sal_uInt16 nSlotId, const ::com::sun::star::uno::Seque { rSet.Put( SfxUnoAnyItem( SID_MODIFYPASSWORDINFO, rProp.Value ) ); } + else if ( aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sSuggestedSaveAsDir)) ) + { + ::rtl::OUString sVal; + sal_Bool bOK = ((rProp.Value >>= sVal) && sVal.getLength()); + DBG_ASSERT( bOK, "invalid type or value for SuggestedSaveAsDir" ); + if (bOK) + rSet.Put( SfxStringItem( SID_SUGGESTEDSAVEASDIR, sVal ) ); + } + else if ( aName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(sSuggestedSaveAsName)) ) + { + ::rtl::OUString sVal; + sal_Bool bOK = ((rProp.Value >>= sVal) && sVal.getLength()); + DBG_ASSERT( bOK, "invalid type or value for SuggestedSaveAsName" ); + if (bOK) + rSet.Put( SfxStringItem( SID_SUGGESTEDSAVEASNAME, sVal ) ); + } #ifdef DBG_UTIL else --nFoundArgs; @@ -1065,6 +1082,10 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta nAdditional++; if ( rSet.GetItemState( SID_MODIFYPASSWORDINFO ) == SFX_ITEM_SET ) nAdditional++; + if ( rSet.GetItemState( SID_SUGGESTEDSAVEASDIR ) == SFX_ITEM_SET ) + nAdditional++; + if ( rSet.GetItemState( SID_SUGGESTEDSAVEASNAME ) == SFX_ITEM_SET ) + nAdditional++; // consider additional arguments nProps += nAdditional; @@ -1206,6 +1227,10 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta continue; if ( nId == SID_MODIFYPASSWORDINFO ) continue; + if ( nId == SID_SUGGESTEDSAVEASDIR ) + continue; + if ( nId == SID_SUGGESTEDSAVEASNAME ) + continue; } ByteString aDbg( "Unknown item detected: "); @@ -1490,7 +1515,7 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta } if ( rSet.GetItemState( SID_DOC_SALVAGE, sal_False, &pItem ) == SFX_ITEM_SET ) { - pValue[nActProp].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sSalvageURL)); + pValue[nActProp].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sSalvagedFile)); pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) ); } if ( rSet.GetItemState( SID_PATH, sal_False, &pItem ) == SFX_ITEM_SET ) @@ -1569,6 +1594,16 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, ::com::sun::sta pValue[nActProp].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sModifyPasswordInfo)); pValue[nActProp++].Value = ( ((SfxUnoAnyItem*)pItem)->GetValue() ); } + if ( rSet.GetItemState( SID_SUGGESTEDSAVEASDIR, sal_False, &pItem ) == SFX_ITEM_SET ) + { + pValue[nActProp].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sSuggestedSaveAsDir)); + pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) ); + } + if ( rSet.GetItemState( SID_SUGGESTEDSAVEASNAME, sal_False, &pItem ) == SFX_ITEM_SET ) + { + pValue[nActProp].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(sSuggestedSaveAsName)); + pValue[nActProp++].Value <<= ( ::rtl::OUString(((SfxStringItem*)pItem)->GetValue()) ); + } } } @@ -1874,8 +1909,8 @@ ErrCode SfxMacroLoader::loadMacro( const ::rtl::OUString& rURL, com::sun::star:: } if ( pSh && pSh->GetModel().is() ) - // remove flag for modal mode - pSh->SetMacroMode_Impl( FALSE ); + // remove flag for modal mode + pSh->SetMacroMode_Impl( FALSE ); } else nErr = ERRCODE_BASIC_PROC_UNDEFINED; @@ -2217,18 +2252,18 @@ RequestFilterOptions::RequestFilterOptions( ::com::sun::star::uno::Reference< :: ::rtl::OUString temp; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2; ::com::sun::star::document::FilterOptionsRequest aOptionsRequest( temp, - temp2, + temp2, rModel, rProperties ); - m_aRequest <<= aOptionsRequest; + m_aRequest <<= aOptionsRequest; - m_pAbort = new ContinuationAbort; - m_pOptions = new FilterOptionsContinuation; + m_pAbort = new ContinuationAbort; + m_pOptions = new FilterOptionsContinuation; - m_lContinuations.realloc( 2 ); - m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort ); - m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pOptions ); + m_lContinuations.realloc( 2 ); + m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort ); + m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pOptions ); } ::com::sun::star::uno::Any SAL_CALL RequestFilterOptions::getRequest() @@ -2251,17 +2286,17 @@ RequestPackageReparation::RequestPackageReparation( ::rtl::OUString aName ) ::rtl::OUString temp; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2; ::com::sun::star::document::BrokenPackageRequest aBrokenPackageRequest( temp, - temp2, - aName ); + temp2, + aName ); - m_aRequest <<= aBrokenPackageRequest; + m_aRequest <<= aBrokenPackageRequest; - m_pApprove = new ContinuationApprove; - m_pDisapprove = new ContinuationDisapprove; + m_pApprove = new ContinuationApprove; + m_pDisapprove = new ContinuationDisapprove; - m_lContinuations.realloc( 2 ); - m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pApprove ); - m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pDisapprove ); + m_lContinuations.realloc( 2 ); + m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pApprove ); + m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pDisapprove ); } /*uno::*/Any SAL_CALL RequestPackageReparation::queryInterface( const /*uno::*/Type& rType ) throw (RuntimeException) @@ -2304,15 +2339,15 @@ NotifyBrokenPackage::NotifyBrokenPackage( ::rtl::OUString aName ) ::rtl::OUString temp; ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2; ::com::sun::star::document::BrokenPackageRequest aBrokenPackageRequest( temp, - temp2, - aName ); + temp2, + aName ); - m_aRequest <<= aBrokenPackageRequest; + m_aRequest <<= aBrokenPackageRequest; - m_pAbort = new ContinuationAbort; + m_pAbort = new ContinuationAbort; - m_lContinuations.realloc( 1 ); - m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort ); + m_lContinuations.realloc( 1 ); + m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort ); } /*uno::*/Any SAL_CALL NotifyBrokenPackage::queryInterface( const /*uno::*/Type& rType ) throw (RuntimeException) diff --git a/sfx2/source/appl/dde.src b/sfx2/source/appl/dde.src index 22df8eff16ba..18f6517f181c 100644 --- a/sfx2/source/appl/dde.src +++ b/sfx2/source/appl/dde.src @@ -29,6 +29,7 @@ ModalDialog MD_DDE_LINKEDIT { + HelpID = "sfx2:ModalDialog:MD_DDE_LINKEDIT"; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 223 , 74 ) ; @@ -42,6 +43,7 @@ ModalDialog MD_DDE_LINKEDIT }; Edit ED_DDE_APP { + HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_APP"; Border = TRUE ; Pos = MAP_APPFONT ( 55 , 14 ) ; Size = MAP_APPFONT ( 100 , 12 ) ; @@ -54,6 +56,7 @@ ModalDialog MD_DDE_LINKEDIT }; Edit ED_DDE_TOPIC { + HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_TOPIC"; Border = TRUE ; Pos = MAP_APPFONT ( 55 , 32 ) ; Size = MAP_APPFONT ( 100 , 12 ) ; @@ -66,6 +69,7 @@ ModalDialog MD_DDE_LINKEDIT }; Edit ED_DDE_ITEM { + HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_ITEM"; Border = TRUE ; Pos = MAP_APPFONT ( 55 , 50 ) ; Size = MAP_APPFONT ( 100 , 12 ) ; diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx index 597509cf34bd..1d79b89a776d 100644 --- a/sfx2/source/appl/newhelp.cxx +++ b/sfx2/source/appl/newhelp.cxx @@ -300,7 +300,7 @@ ContentListBox_Impl::ContentListBox_Impl( Window* pParent, const ResId& rResId ) aDocumentImage = Image( SfxResId( IMG_HELP_CONTENT_DOC_HC ) ); } - SetWindowBits( WB_HIDESELECTION | WB_HSCROLL ); + SetStyle( GetStyle() | WB_HIDESELECTION | WB_HSCROLL ); SetEntryHeight( 16 ); SetSelectionMode( SINGLE_SELECTION ); @@ -2138,7 +2138,7 @@ SfxHelpTextWindow_Impl::SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ) : SvtMiscOptions().AddListenerLink( LINK( this, SfxHelpTextWindow_Impl, NotifyHdl ) ); - if ( aOnStartupCB.GetHelpId() == 0 ) + if ( !aOnStartupCB.GetHelpId().getLength() ) aOnStartupCB.SetHelpId( HID_HELP_ONSTARTUP_BOX ); } @@ -2640,7 +2640,7 @@ long SfxHelpTextWindow_Impl::PreNotify( NotifyEvent& rNEvt ) aMenu.InsertSeparator(); aMenu.InsertItem( TBI_COPY, String( SfxResId( STR_HELP_MENU_TEXT_COPY ) ), Image( SfxResId( bHiContrast ? IMG_HELP_TOOLBOX_HC_COPY : IMG_HELP_TOOLBOX_COPY ) ) ); - aMenu.SetHelpId( TBI_COPY, SID_COPY ); + aMenu.SetHelpId( TBI_COPY, ".uno:Copy" ); aMenu.EnableItem( TBI_COPY, HasSelection() ); if ( bIsDebug ) @@ -3180,7 +3180,7 @@ void SfxHelpWindow_Impl::openDone(const ::rtl::OUString& sURL , xViewProps->setPropertyValue( DEFINE_CONST_OUSTRING("PreventHelpTips"), aBoolAny ); xViewProps->setPropertyValue( DEFINE_CONST_OUSTRING("ShowGraphics"), aBoolAny ); xViewProps->setPropertyValue( DEFINE_CONST_OUSTRING("ShowTables"), aBoolAny ); - xViewProps->setPropertyValue( DEFINE_CONST_OUSTRING("HelpURL"), makeAny( DEFINE_CONST_OUSTRING("HID:68245") ) ); + xViewProps->setPropertyValue( DEFINE_CONST_OUSTRING("HelpURL"), makeAny( DEFINE_CONST_OUSTRING("HID:SFX2_HID_HELP_ONHELP") ) ); ::rtl::OUString sProperty( DEFINE_CONST_OUSTRING("IsExecuteHyperlinks") ); if ( xInfo->hasPropertyByName( sProperty ) ) xViewProps->setPropertyValue( sProperty, aBoolAny ); diff --git a/sfx2/source/appl/newhelp.src b/sfx2/source/appl/newhelp.src index 8a2b4f760f7e..88dfed8ad71e 100644 --- a/sfx2/source/appl/newhelp.src +++ b/sfx2/source/appl/newhelp.src @@ -93,12 +93,14 @@ TabPage TP_HELP_INDEX }; ComboBox CB_INDEX { + HelpID = "sfx2:ComboBox:TP_HELP_INDEX:CB_INDEX"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 17 ) ; Size = MAP_APPFONT ( 108 , 97 ) ; }; PushButton PB_OPEN_INDEX { + HelpID = "sfx2:PushButton:TP_HELP_INDEX:PB_OPEN_INDEX"; Pos = MAP_APPFONT ( 64 , 115 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Display" ; @@ -119,6 +121,7 @@ TabPage TP_HELP_SEARCH }; ComboBox ED_SEARCH { + HelpID = "sfx2:ComboBox:TP_HELP_SEARCH:ED_SEARCH"; Border = TRUE ; DropDown = TRUE; Pos = MAP_APPFONT ( 6 , 17 ) ; @@ -126,30 +129,35 @@ TabPage TP_HELP_SEARCH }; PushButton PB_SEARCH { + HelpID = "sfx2:PushButton:TP_HELP_SEARCH:PB_SEARCH"; Pos = MAP_APPFONT ( 101 , 17 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Find"; }; CheckBox CB_FULLWORDS { + HelpID = "sfx2:CheckBox:TP_HELP_SEARCH:CB_FULLWORDS"; Pos = MAP_APPFONT ( 6, 34 ) ; Size = MAP_APPFONT ( 128 , 10 ) ; Text [ en-US ] = "~Complete words only"; }; CheckBox CB_SCOPE { + HelpID = "sfx2:CheckBox:TP_HELP_SEARCH:CB_SCOPE"; Pos = MAP_APPFONT ( 6, 47 ) ; Size = MAP_APPFONT ( 128 , 10 ) ; Text [ en-US ] = "Find in ~headings only"; }; ListBox LB_RESULT { + HelpID = "sfx2:ListBox:TP_HELP_SEARCH:LB_RESULT"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 60 ) ; Size = MAP_APPFONT ( 128 , 30 ) ; }; PushButton PB_OPEN_SEARCH { + HelpID = "sfx2:PushButton:TP_HELP_SEARCH:PB_OPEN_SEARCH"; Pos = MAP_APPFONT ( 84 , 182 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Display" ; @@ -170,6 +178,7 @@ TabPage TP_HELP_BOOKMARKS }; ListBox LB_BOOKMARKS { + HelpID = "sfx2:ListBox:TP_HELP_BOOKMARKS:LB_BOOKMARKS"; Border = TRUE ; Sort = TRUE; Pos = MAP_APPFONT ( 6 , 19 ) ; @@ -177,6 +186,7 @@ TabPage TP_HELP_BOOKMARKS }; PushButton PB_BOOKMARKS { + HelpID = "sfx2:PushButton:TP_HELP_BOOKMARKS:PB_BOOKMARKS"; Pos = MAP_APPFONT ( 64 , 119 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Display" ; @@ -337,6 +347,7 @@ String STR_HELP_MENU_TEXT_COPY }; ModalDialog DLG_HELP_ADDBOOKMARK { + HelpID = "sfx2:ModalDialog:DLG_HELP_ADDBOOKMARK"; Size = MAP_APPFONT ( 208 , 43 ) ; Text [ en-US ] = "Add to Bookmarks"; MOVEABLE = TRUE ; @@ -353,6 +364,7 @@ ModalDialog DLG_HELP_ADDBOOKMARK }; Edit ED_BOOKMARK_TITLE { + HelpID = "sfx2:Edit:DLG_HELP_ADDBOOKMARK:ED_BOOKMARK_TITLE"; PosSize = MAP_APPFONT ( 6 , 19 , 140 , 12 ) ; TABSTOP = TRUE ; BORDER = TRUE ; diff --git a/sfx2/source/appl/opengrf.cxx b/sfx2/source/appl/opengrf.cxx index a4d134df27fa..fd2043a9a431 100644 --- a/sfx2/source/appl/opengrf.cxx +++ b/sfx2/source/appl/opengrf.cxx @@ -284,12 +284,9 @@ void SvxOpenGraphicDialog::SetCurrentFilter(const String& rStr) mpImpl->aFileDlg.SetCurrentFilter(rStr); } -void SvxOpenGraphicDialog::SetControlHelpIds( const INT16* _pControlId, const INT32* _pHelpId ) +void SvxOpenGraphicDialog::SetControlHelpIds( const INT16* _pControlId, const char** _pHelpId ) { mpImpl->aFileDlg.SetControlHelpIds( _pControlId, _pHelpId ); } -void SvxOpenGraphicDialog::SetDialogHelpId( const INT32 _nHelpId ) -{ - mpImpl->aFileDlg.SetDialogHelpId( _nHelpId ); -} + diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx index b9ff344a1513..a12ced237f55 100644 --- a/sfx2/source/appl/sfxhelp.cxx +++ b/sfx2/source/appl/sfxhelp.cxx @@ -29,7 +29,7 @@ #include "precompiled_sfx2.hxx" #include "sfxhelp.hxx" - +#include <set> #include <algorithm> #include <com/sun/star/uno/Reference.h> #include <com/sun/star/frame/XFrame.hpp> @@ -76,6 +76,7 @@ #include <sfx2/sfxuno.hxx> #include <vcl/svapp.hxx> #include <sfx2/frame.hxx> +#include <rtl/string.hxx> using namespace ::com::sun::star::beans; using namespace ::com::sun::star::frame; @@ -221,13 +222,13 @@ sal_Bool GetHelpAnchor_Impl( const String& _rURL, String& _rAnchor ) class SfxHelpOptions_Impl : public utl::ConfigItem { private: - SvULongsSort* m_pIds; + std::set < rtl::OString > m_aIds; public: SfxHelpOptions_Impl(); ~SfxHelpOptions_Impl(); - BOOL HasId( ULONG nId ) { USHORT nDummy; return m_pIds ? m_pIds->Seek_Entry( nId, &nDummy ) : FALSE; } + bool HasId( const rtl::OString& rId ) { return m_aIds.size() ? m_aIds.find( rId ) != m_aIds.end() : false; } virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); virtual void Commit(); }; @@ -254,7 +255,6 @@ static Sequence< ::rtl::OUString > GetPropertyNames() SfxHelpOptions_Impl::SfxHelpOptions_Impl() : ConfigItem( ::rtl::OUString::createFromAscii("Office.SFX/Help") ) - , m_pIds( NULL ) { Sequence< ::rtl::OUString > aNames = GetPropertyNames(); Sequence< Any > aValues = GetProperties( aNames ); @@ -275,11 +275,15 @@ SfxHelpOptions_Impl::SfxHelpOptions_Impl() ::rtl::OUString aCodedList; if ( pValues[nProp] >>= aCodedList ) { - String aTmp( aCodedList ); - USHORT nCount = aTmp.GetTokenCount( ',' ); - m_pIds = new SvULongsSort(); - for ( USHORT n=0; n<nCount; n++ ) - m_pIds->Insert( (ULONG) aTmp.GetToken( n, ',' ).ToInt64() ); + rtl::OString aTmp( aCodedList, aCodedList.getLength(), RTL_TEXTENCODING_UTF8 ); + sal_Int32 nIndex = 0; + do + { + rtl::OString aToken = aTmp.getToken( 0, ',', nIndex ); + if ( aToken.getLength() ) + m_aIds.insert( aToken ); + } + while ( nIndex >= 0 ); } else { DBG_ERRORFILE( "Wrong property type!" ); @@ -299,7 +303,6 @@ SfxHelpOptions_Impl::SfxHelpOptions_Impl() SfxHelpOptions_Impl::~SfxHelpOptions_Impl() { - delete m_pIds; } @@ -326,8 +329,7 @@ public: ~SfxHelp_Impl(); SfxHelpOptions_Impl* GetOptions(); - String GetHelpText( ULONG nHelpId, const String& rModule ); // get "Active Help" - String GetHelpText( const rtl::OUString& aCommandURL, const String& rModule ); + static String GetHelpText( const rtl::OUString& aCommandURL, const String& rModule ); sal_Bool HasModule( const ::rtl::OUString& rModule ); // module installed sal_Bool IsHelpInstalled(); // module list not empty }; @@ -370,16 +372,6 @@ void SfxHelp_Impl::Load() } } -String SfxHelp_Impl::GetHelpText( ULONG nHelpId, const String& rModule ) -{ - // create help url - String aHelpURL = SfxHelp::CreateHelpURL( nHelpId, rModule ); - // added 'active' parameter - aHelpURL.Insert( String( DEFINE_CONST_UNICODE("&Active=true") ), aHelpURL.SearchBackward( '#' ) ); - // load help string - return SfxContentHelper::GetActiveHelpString( aHelpURL ); -} - String SfxHelp_Impl::GetHelpText( const rtl::OUString& aCommandURL, const String& rModule ) { // create help url @@ -413,6 +405,199 @@ sal_Bool SfxHelp_Impl::IsHelpInstalled() } // class SfxHelp --------------------------------------------------------- +/* some test code for HID conversion - please don't remove + +#include <tools/stream.hxx> +void TestHids() +{ + static const char* aModules[] = + { + "swriter", + "scalc", + "simpress", + "sdraw", + "sdatabase", + "smath", + "schart", + "sbasic" + }; + + SvFileStream* pOut[] = + { + 0,0,0,0,0,0,0,0,0 + }; + + String aIn = String::CreateFromAscii("/data/OOo/replacer/hidsin.lst"); + String aOut = String::CreateFromAscii("/data/OOo/replacer/"); + SvFileStream aInStrm( aIn, STREAM_READ ); + ByteString aBuffer; + while ( aInStrm.ReadLine( aBuffer ) ) + { + ByteString aHid = aBuffer.GetToken(0, ' '); + ByteString aNr = aBuffer.GetToken(1, ' '); + bool bFound=false; + for (sal_Int32 n= 0; n<8; n++) + { + bFound = false; + String aHelpURL = SfxHelp::CreateHelpURL( String( aNr, RTL_TEXTENCODING_UTF8 ), String( aModules[n], RTL_TEXTENCODING_UTF8 ) ); + if ( !SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) + { + if (!pOut[n]) + { + String aTmp( aOut ); + aTmp += String( aModules[n], RTL_TEXTENCODING_UTF8 ); + aTmp += String::CreateFromAscii(".lst"); + pOut[n] = new SvFileStream( aTmp, STREAM_WRITE | STREAM_TRUNC ); + } + pOut[n]->WriteLine( aHid ); + bFound = true; + break; + } + } + + if (!bFound) + { + if (!pOut[8]) + { + String aTmp( aOut ); + aTmp += String( "notfound", RTL_TEXTENCODING_UTF8 ); + aTmp += String::CreateFromAscii(".lst"); + pOut[8] = new SvFileStream( aTmp, STREAM_WRITE | STREAM_TRUNC ); + } + pOut[8]->WriteLine( aHid ); + } + } + + for (sal_Int32 n= 0; n<9; n++) + DELETEZ( pOut[n] ); +} + +void TestHids2() +{ + static const char* aModules[] = + { + "swriter", + "scalc", + "simpress", + "smath", + "sbasic" + }; + + String aOut = String::CreateFromAscii("/data/OOo/replacer/"); + aOut += String::CreateFromAscii("lost.lst"); + SvFileStream aOutStrm( aOut, STREAM_WRITE | STREAM_TRUNC ); + for (sal_Int32 n= 0; n<5; n++) + { + String aIn = String::CreateFromAscii("/data/OOo/replacer/help/"); + aIn += String::CreateFromAscii( aModules[n] ); + aIn += String::CreateFromAscii(".lst"); + SvFileStream aInStrm( aIn, STREAM_READ ); + ByteString aBuffer; + while ( aInStrm.ReadLine( aBuffer ) ) + { + String aHelpURL = SfxHelp::CreateHelpURL( String( aBuffer, RTL_TEXTENCODING_UTF8 ), String( aModules[n], RTL_TEXTENCODING_UTF8 ) ); + if ( SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) + aOutStrm.WriteLine( aBuffer ); + } + } +} + +#include <tools/stream.hxx> +void TestHids3() +{ + static const char* aModules[] = + { + "swriter", + "scalc", + "simpress", + "sdraw", + "sdatabase", + "smath", + "schart", + "sbasic" + }; + + SvFileStream* pOut[] = + { + 0,0,0,0,0,0,0,0,0 + }; + + String aIn = String::CreateFromAscii("/data/OOo/replacer/hidsin.lst"); + String aOut = String::CreateFromAscii("/data/OOo/replacer/quickhelp/"); + SvFileStream aInStrm( aIn, STREAM_READ ); + ByteString aBuffer; + while ( aInStrm.ReadLine( aBuffer ) ) + { + ByteString aHid = aBuffer.GetToken(0, ' '); + ByteString aNr = aBuffer.GetToken(1, ' '); + bool bFound=false; + for (sal_Int32 n= 0; n<8; n++) + { + bFound = false; + String aHelpURL = SfxHelp::CreateHelpURL( String( aNr, RTL_TEXTENCODING_UTF8 ), String( aModules[n], RTL_TEXTENCODING_UTF8 ) ); + if ( SfxContentHelper::GetActiveHelpString( aHelpURL ).Len() ) +// if ( SfxHelp_Impl::GetHelpText( String( aNr, RTL_TEXTENCODING_UTF8 ), String( aModules[n], RTL_TEXTENCODING_UTF8 ) ).Len() ) + { + if (!pOut[n]) + { + String aTmp( aOut ); + aTmp += String( aModules[n], RTL_TEXTENCODING_UTF8 ); + aTmp += String::CreateFromAscii(".lst"); + pOut[n] = new SvFileStream( aTmp, STREAM_WRITE | STREAM_TRUNC ); + } + pOut[n]->WriteLine( aHid ); + bFound = true; + break; + } + } + + if (!bFound) + { + if (!pOut[8]) + { + String aTmp( aOut ); + aTmp += String( "notfound", RTL_TEXTENCODING_UTF8 ); + aTmp += String::CreateFromAscii(".lst"); + pOut[8] = new SvFileStream( aTmp, STREAM_WRITE | STREAM_TRUNC ); + } + pOut[8]->WriteLine( aHid ); + } + } + + for (sal_Int32 n= 0; n<9; n++) + DELETEZ( pOut[n] ); +} + +void TestHids4() +{ + static const char* aModules[] = + { + "swriter", + "scalc", + "simpress", + "smath", + "sbasic" + }; + + String aOut = String::CreateFromAscii("/data/OOo/replacer/quickhelp/"); + aOut += String::CreateFromAscii("lost.lst"); + SvFileStream aOutStrm( aOut, STREAM_WRITE | STREAM_TRUNC ); + for (sal_Int32 n= 0; n<5; n++) + { + String aIn = String::CreateFromAscii("/data/OOo/replacer/quickhelp/"); + aIn += String::CreateFromAscii( aModules[n] ); + aIn += String::CreateFromAscii(".lst"); + SvFileStream aInStrm( aIn, STREAM_READ ); + ByteString aBuffer; + while ( aInStrm.ReadLine( aBuffer ) ) + { + String aHelpURL = SfxHelp::CreateHelpURL( String( aBuffer, RTL_TEXTENCODING_UTF8 ), String( aModules[n], RTL_TEXTENCODING_UTF8 ) ); + if ( !SfxContentHelper::GetActiveHelpString( aHelpURL ).Len() ) + aOutStrm.WriteLine( aBuffer ); + } + } +} +*/ SfxHelp::SfxHelp() : @@ -581,76 +766,6 @@ String SfxHelp::GetHelpModuleName_Impl() return sModuleName; } -String SfxHelp::CreateHelpURL_Impl( ULONG nHelpId, const String& rModuleName ) -{ - String aModuleName( rModuleName ); - if ( aModuleName.Len() == 0 ) - aModuleName = getDefaultModule_Impl(); - - // build up the help URL - String aHelpURL; - if ( aTicket.Len() ) - { - // if there is a ticket, we are inside a plugin, so a special Help URL must be sent - aHelpURL = DEFINE_CONST_UNICODE("vnd.sun.star.cmd:help?"); - aHelpURL += DEFINE_CONST_UNICODE("HELP_Request_Mode=contextIndex&HELP_Session_Mode=context&HELP_CallMode=portal&HELP_Device=html"); - - if ( !nHelpId ) - { - // no help id -> start page - aHelpURL += DEFINE_CONST_UNICODE("&HELP_ContextID=start"); - } - else - { - aHelpURL += DEFINE_CONST_UNICODE("&HELP_ContextID="); - aHelpURL += String::CreateFromInt64( nHelpId ); - } - - aHelpURL += DEFINE_CONST_UNICODE("&HELP_ProgramID="); - aHelpURL += aModuleName; - aHelpURL += DEFINE_CONST_UNICODE("&HELP_User="); - aHelpURL += aUser; - aHelpURL += DEFINE_CONST_UNICODE("&HELP_Ticket="); - aHelpURL += aTicket; - aHelpURL += DEFINE_CONST_UNICODE("&HELP_Language="); - aHelpURL += aLanguageStr; - if ( aCountryStr.Len() ) - { - aHelpURL += DEFINE_CONST_UNICODE("&HELP_Country="); - aHelpURL += aCountryStr; - } - } - else - { - sal_Bool bHasAnchor = sal_False; - String aAnchor; - aHelpURL = String::CreateFromAscii("vnd.sun.star.help://"); - aHelpURL += aModuleName; - - if ( !nHelpId ) - aHelpURL += String::CreateFromAscii("/start"); - else - { - aHelpURL += '/'; - aHelpURL += String::CreateFromInt64( nHelpId ); - - String aTempURL = aHelpURL; - AppendConfigToken_Impl( aTempURL, sal_True ); - bHasAnchor = GetHelpAnchor_Impl( aTempURL, aAnchor ); - } - - AppendConfigToken_Impl( aHelpURL, sal_True ); - - if ( bHasAnchor ) - { - aHelpURL += '#'; - aHelpURL += aAnchor; - } - } - - return aHelpURL; -} - String SfxHelp::CreateHelpURL_Impl( const String& aCommandURL, const String& rModuleName ) { // build up the help URL @@ -660,28 +775,7 @@ String SfxHelp::CreateHelpURL_Impl( const String& aCommandURL, const String& rM String aModuleName( rModuleName ); if ( aModuleName.Len() == 0 ) - { - // no active module (quicklaunch?) -> detect default module - SvtModuleOptions aModOpt; - if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SWRITER ) ) - aModuleName = DEFINE_CONST_UNICODE("swriter"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SCALC ) ) - aModuleName = DEFINE_CONST_UNICODE("scalc"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) ) - aModuleName = DEFINE_CONST_UNICODE("simpress"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) ) - aModuleName = DEFINE_CONST_UNICODE("sdraw"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SMATH ) ) - aModuleName = DEFINE_CONST_UNICODE("smath"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SCHART ) ) - aModuleName = DEFINE_CONST_UNICODE("schart"); - else if ( aModOpt.IsModuleInstalled( SvtModuleOptions::E_SBASIC ) ) - aModuleName = DEFINE_CONST_UNICODE("sbasic"); - else - { - DBG_ERRORFILE( "no installed module found" ); - } - } + aModuleName = getDefaultModule_Impl(); aHelpURL = String::CreateFromAscii("vnd.sun.star.help://"); aHelpURL += aModuleName; @@ -694,7 +788,7 @@ String SfxHelp::CreateHelpURL_Impl( const String& aCommandURL, const String& rM aHelpURL += String( rtl::Uri::encode( aCommandURL, rtl_UriCharClassRelSegment, rtl_UriEncodeKeepEscapes, - RTL_TEXTENCODING_ASCII_US )); + RTL_TEXTENCODING_UTF8 )); String aTempURL = aHelpURL; AppendConfigToken_Impl( aTempURL, sal_True ); @@ -762,8 +856,60 @@ SfxHelpWindow_Impl* impl_createHelp(Reference< XFrame >& rHelpTask , return pHelpWindow; } +XubString SfxHelp::GetHelpText( const String& aCommandURL, const Window* pWindow ) +{ + String sModuleName = GetHelpModuleName_Impl(); + String sHelpText = pImp->GetHelpText( aCommandURL, sModuleName ); + + ByteString aNewHelpId; + + if ( pWindow && !sHelpText.Len() ) + { + // no help text found -> try with parent help id. + Window* pParent = pWindow->GetParent(); + while ( pParent ) + { + aNewHelpId = pParent->GetHelpId(); + sHelpText = pImp->GetHelpText( String( aNewHelpId, RTL_TEXTENCODING_UTF8 ), sModuleName ); + if ( sHelpText.Len() > 0 ) + pParent = NULL; + else + pParent = pParent->GetParent(); + } + + if ( bIsDebug && !sHelpText.Len() ) + aNewHelpId.Erase(); + } + + // add some debug information? + if ( bIsDebug ) + { + sHelpText += DEFINE_CONST_UNICODE("\n-------------\n"); + sHelpText += String( sModuleName ); + sHelpText += DEFINE_CONST_UNICODE(": "); + sHelpText += aCommandURL; + if ( aNewHelpId.Len() ) + { + sHelpText += DEFINE_CONST_UNICODE(" - "); + sHelpText += String( aNewHelpId, RTL_TEXTENCODING_UTF8 ); + } + } + + return sHelpText; +} + +BOOL SfxHelp::SearchKeyword( const XubString& rKeyword ) +{ + return Start_Impl( String(), NULL, rKeyword ); +} + BOOL SfxHelp::Start( const String& rURL, const Window* pWindow ) { + return Start_Impl( rURL, pWindow, String() ); +} + +BOOL SfxHelp::Start_Impl( const String& rURL, const Window* pWindow, const String& rKeyword ) +{ // check if help is available String aHelpRootURL( DEFINE_CONST_OUSTRING("vnd.sun.star.help://") ); AppendConfigToken_Impl( aHelpRootURL, sal_True ); @@ -776,54 +922,60 @@ BOOL SfxHelp::Start( const String& rURL, const Window* pWindow ) return FALSE; } - // check if it's an URL or a jump mark! - String aHelpURL(rURL ); - INetURLObject aParser (aHelpURL); - ::rtl::OUString sKeyword; + /* rURL may be + - a "real" URL + - a HelpID (formerly a long, now a string) + If rURL is a URL, CreateHelpURL should be called for this URL + If rURL is an arbitrary string, the same should happen, but the URL should be tried out + if it delivers real help content. In case only the Help Error Document is returned, the + parent of the window for that help was called, is asked for its HelpID. + For compatibility reasons this upward search is not implemented for "real" URLs. + Help keyword search now is implemented as own method; in former versions it + was done via Help::Start, but this implementation conflicted with the upward search. + */ + String aHelpURL; + INetURLObject aParser( rURL ); INetProtocol nProtocol = aParser.GetProtocol(); - if ( nProtocol != INET_PROT_VND_SUN_STAR_HELP ) + String aHelpModuleName( GetHelpModuleName_Impl() ); + switch ( nProtocol ) { - // #i90162 Accept anything that is not invalid as help id, as both - // uno: URLs used as commands/help ids in the Office and the scheme - // used in extension help ids (e.g. com.foocorp.foo-ext:FooDialogButton) - // are accepted as INET_PROT_UNO respectively INET_PROT_GENERIC - bool bAcceptAsURL = ( nProtocol != INET_PROT_NOT_VALID ); - - // #i94891 As in some extensions help ids like foo.bar.dummy without - // any : have been used that worked before the fix of #i90162 (see - // above) strings containing . will be also accepted to avoid brea- - // king the help of existing extensions. - if( !bAcceptAsURL ) - bAcceptAsURL = ( rURL.Search( '.' ) != STRING_NOTFOUND ); - - if ( bAcceptAsURL ) + case INET_PROT_VND_SUN_STAR_HELP: + // already a vnd.sun.star.help URL -> nothing to do + aHelpURL = rURL; + break; + default: { - aHelpURL = CreateHelpURL_Impl( rURL, GetHelpModuleName_Impl( ) ); - } - else - { - aHelpURL = CreateHelpURL_Impl( 0, GetHelpModuleName_Impl( ) ); - - // pb i91715: strings begin with ".HelpId:" are not words of the basic ide - // they are helpid-strings used by the testtool -> so we ignore them - static const String sHelpIdScheme( DEFINE_CONST_OUSTRING(".HelpId:") ); - if ( rURL.Search( sHelpIdScheme ) != 0 ) - sKeyword = ::rtl::OUString( rURL ); + // no URL, just a HelpID (maybe empty in case of keyword search) + aHelpURL = CreateHelpURL_Impl( rURL, aHelpModuleName ); + if ( pWindow && SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) + { + // no help found -> try with parent help id. + Window* pParent = pWindow->GetParent(); + while ( pParent ) + { + ByteString aHelpId = pParent->GetHelpId(); + aHelpURL = CreateHelpURL( String( aHelpId, RTL_TEXTENCODING_UTF8 ), aHelpModuleName ); + if ( !SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) + break; + else + { + pParent = pParent->GetParent(); + if ( !pParent ) + // create help url of start page ( helpid == 0 -> start page) + aHelpURL = CreateHelpURL( String(), aHelpModuleName ); + } + } + } + break; } } Reference < XFrame > xDesktop( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY ); - // check if help is still open - // If not - create new one and return acces directly - // to the internal sub frame, which shows the help content. - - // Note further: We search for this sub frame here directly instead of - // the real top level help task ... It's needed to have the same - // sub frame available - so we can use it for loading (which is done - // in both cases)! - + // check if help window is still open + // If not, create a new one and return access directly to the internal sub frame showing the help content + // search must be done here; search one desktop level could return an arbitraty frame Reference< XFrame > xHelp = xDesktop->findFrame( ::rtl::OUString(DEFINE_CONST_UNICODE("OFFICE_HELP_TASK")), FrameSearchFlag::CHILDREN); @@ -839,10 +991,16 @@ BOOL SfxHelp::Start( const String& rURL, const Window* pWindow ) if (!xHelp.is() || !xHelpContent.is() || !pHelpWindow) return FALSE; +#ifdef DBG_UTIL + ByteString aTmp("SfxHelp: HelpId = "); + aTmp += ByteString( aHelpURL, RTL_TEXTENCODING_UTF8 ); + DBG_TRACE( aTmp.GetBuffer() ); +#endif + pHelpWindow->SetHelpURL( aHelpURL ); pHelpWindow->loadHelpContent(aHelpURL); - if ( sKeyword.getLength() > 0 ) - pHelpWindow->OpenKeyword( sKeyword ); + if ( rKeyword.Len() ) + pHelpWindow->OpenKeyword( rKeyword ); Reference < ::com::sun::star::awt::XTopWindow > xTopWindow( xHelp->getContainerWindow(), UNO_QUERY ); if ( xTopWindow.is() ) @@ -851,101 +1009,6 @@ BOOL SfxHelp::Start( const String& rURL, const Window* pWindow ) return TRUE; } -BOOL SfxHelp::Start( ULONG nHelpId, const Window* pWindow ) -{ - String aHelpModuleName( GetHelpModuleName_Impl() ); - String aHelpURL = CreateHelpURL( nHelpId, aHelpModuleName ); - if ( pWindow && SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) - { - // no help found -> try with parent help id. - Window* pParent = pWindow->GetParent(); - while ( pParent ) - { - nHelpId = pParent->GetSmartUniqueOrHelpId().GetNum(); - aHelpURL = CreateHelpURL( nHelpId, aHelpModuleName ); - - if ( !SfxContentHelper::IsHelpErrorDocument( aHelpURL ) ) - break; - else - { - pParent = pParent->GetParent(); - if ( !pParent ) - // create help url of start page ( helpid == 0 -> start page) - aHelpURL = CreateHelpURL( 0, aHelpModuleName ); - } - } - } - - return Start( aHelpURL, pWindow ); -} - -XubString SfxHelp::GetHelpText( ULONG nHelpId, const Window* pWindow ) -{ - String aModuleName = GetHelpModuleName_Impl(); - String aHelpText = pImp->GetHelpText( nHelpId, aModuleName ); - ULONG nNewHelpId = 0; - - if ( pWindow && aHelpText.Len() == 0 ) - { - // no help text found -> try with parent help id. - Window* pParent = pWindow->GetParent(); - while ( pParent ) - { - nNewHelpId = pParent->GetHelpId(); - aHelpText = pImp->GetHelpText( nNewHelpId, aModuleName ); - - if ( aHelpText.Len() > 0 ) - pParent = NULL; - else - pParent = pParent->GetParent(); - } - - if ( bIsDebug && aHelpText.Len() == 0 ) - nNewHelpId = 0; - } - - if ( bIsDebug ) - { - aHelpText += DEFINE_CONST_UNICODE("\n\n"); - aHelpText += aModuleName; - aHelpText += DEFINE_CONST_UNICODE(" - "); - aHelpText += String::CreateFromInt64( nHelpId ); - if ( nNewHelpId ) - { - aHelpText += DEFINE_CONST_UNICODE(" - "); - aHelpText += String::CreateFromInt64( nNewHelpId ); - } - } - - return aHelpText; -} - -XubString SfxHelp::GetHelpText( const String& aCommandURL, const Window* ) -{ - String sModuleName = GetHelpModuleName_Impl(); - String sHelpText = pImp->GetHelpText( aCommandURL, sModuleName ); - - // add some debug information? - if ( bIsDebug ) - { - sHelpText += DEFINE_CONST_UNICODE("\n-------------\n"); - sHelpText += String( sModuleName ); - sHelpText += DEFINE_CONST_UNICODE(": "); - sHelpText += aCommandURL; - } - - return sHelpText; -} - -String SfxHelp::CreateHelpURL( ULONG nHelpId, const String& rModuleName ) -{ - String aURL; - SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); - if ( pHelp ) - aURL = pHelp->CreateHelpURL_Impl( nHelpId, rModuleName ); - return aURL; -} - String SfxHelp::CreateHelpURL( const String& aCommandURL, const String& rModuleName ) { String aURL; @@ -955,28 +1018,25 @@ String SfxHelp::CreateHelpURL( const String& aCommandURL, const String& rModuleN return aURL; } -void SfxHelp::OpenHelpAgent( SfxFrame*, ULONG nHelpId ) +void SfxHelp::OpenHelpAgent( SfxFrame*, const rtl::OString& sHelpId ) { - SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); - if ( pHelp ) - pHelp->OpenHelpAgent( nHelpId ); + SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); + if ( pHelp ) + pHelp->OpenHelpAgent( sHelpId ); } -void SfxHelp::OpenHelpAgent( ULONG nHelpId ) +void SfxHelp::OpenHelpAgent( const rtl::OString& sHelpId ) { if ( SvtHelpOptions().IsHelpAgentAutoStartMode() ) { -// SfxHelp* pHelp = SAL_STATIC_CAST( SfxHelp*, Application::GetHelp() ); -// if ( pHelp ) -// { SfxHelpOptions_Impl *pOpt = pImp->GetOptions(); - if ( !pOpt->HasId( nHelpId ) ) + if ( !pOpt->HasId( sHelpId ) ) return; try { URL aURL; - aURL.Complete = CreateHelpURL_Impl( nHelpId, GetHelpModuleName_Impl() ); + aURL.Complete = CreateHelpURL_Impl( String( ByteString(sHelpId), RTL_TEXTENCODING_UTF8 ), GetHelpModuleName_Impl() ); Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" ) ), UNO_QUERY ); xTrans->parseStrict(aURL); @@ -1002,7 +1062,6 @@ void SfxHelp::OpenHelpAgent( ULONG nHelpId ) { DBG_ERRORFILE( "OpenHelpAgent: caught an exception while executing the dispatch!" ); } -// } } } diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index e66dd2c56eaf..444be02127b3 100644..100755 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -281,7 +281,11 @@ int SfxDispatcher::Call_Impl( SfxShell& rShell, const SfxSlot &rSlot, SfxRequest if ( !pView ) pView = SfxViewFrame::Current(); if ( pView ) - SfxHelp::OpenHelpAgent( &pView->GetFrame(), rReq.GetSlot() ); + { + rtl::OString aCmd(".uno:"); + aCmd += rSlot.GetUnoName(); + SfxHelp::OpenHelpAgent( &pView->GetFrame(), aCmd ); + } SfxExecFunc pFunc = rSlot.GetExecFnc(); rShell.CallExec( pFunc, rReq ); @@ -1675,14 +1679,14 @@ void SfxDispatcher::SetMenu_Impl() } //-------------------------------------------------------------------- -long SfxDispatcher::Update_Impl( sal_Bool bForce ) +void SfxDispatcher::Update_Impl( sal_Bool bForce ) { SFX_STACK(SfxDispatcher::Update_Impl); Flush(); if ( !pImp->pFrame || pImp->bUILocked ) - return 0; + return; SFX_APP(); // -Wall is this required??? SfxDispatcher *pDisp = this; @@ -1704,7 +1708,7 @@ long SfxDispatcher::Update_Impl( sal_Bool bForce ) } if ( !bUpdate || pImp->pFrame->GetFrame().IsClosing_Impl() ) - return 0; + return; SfxViewFrame* pTop = pImp->pFrame ? pImp->pFrame->GetTopViewFrame() : NULL; sal_Bool bUIActive = pTop && pTop->GetBindings().GetDispatcher() == this; @@ -1778,12 +1782,11 @@ long SfxDispatcher::Update_Impl( sal_Bool bForce ) if ( xLayoutManager.is() ) xLayoutManager->unlock(); - return 1; + return; } -sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, sal_Bool bIsIPOwner, SfxWorkWindow *pTaskWin ) +void SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, sal_Bool bIsIPOwner, SfxWorkWindow *pTaskWin ) { - sal_uInt32 nHelpId = 0; SFX_APP(); SfxWorkWindow *pWorkWin = pImp->pFrame->GetFrame().GetWorkWindow_Impl(); sal_Bool bIsActive = sal_False; @@ -1798,7 +1801,7 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, } if ( pImp->pParent && !pImp->bQuiet /* && bUIActive */ ) - nHelpId = pImp->pParent->_Update_Impl( bUIActive, bIsMDIApp, bIsIPOwner, pTaskWin ); + pImp->pParent->_Update_Impl( bUIActive, bIsMDIApp, bIsIPOwner, pTaskWin ); for (sal_uInt16 n=0; n<SFX_OBJECTBAR_MAX; n++) pImp->aObjBars[n].nResId = 0; @@ -1807,7 +1810,7 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, // bQuiet : own shells aren't considered for UI and SlotServer // bNoUI: own Shells aren't considered fors UI if ( pImp->bQuiet || pImp->bNoUI || (pImp->pFrame && pImp->pFrame->GetObjectShell()->IsPreview()) ) - return nHelpId; + return; sal_uInt32 nStatBarId=0; SfxShell *pStatusBarShell = NULL; @@ -1818,8 +1821,6 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, { SfxShell *pShell = GetShell( nShell-1 ); SfxInterface *pIFace = pShell->GetInterface(); - if (pShell->GetHelpId()) - nHelpId = pShell->GetHelpId(); // don't consider shells if "Hidden" oder "Quiet" sal_Bool bReadOnlyShell = IsReadOnlyShell_Impl( nShell-1 ); @@ -1950,8 +1951,6 @@ sal_uInt32 SfxDispatcher::_Update_Impl( sal_Bool bUIActive, sal_Bool bIsMDIApp, pImp->pFrame->GetFrame().GetWorkWindow_Impl()->SetStatusBar_Impl( nStatBarId, pStatusBarShell, rBindings ); } } - - return nHelpId; } //-------------------------------------------------------------------- diff --git a/sfx2/source/control/msg.cxx b/sfx2/source/control/msg.cxx index 0aa4df6902ee..6b05c03160ff 100644 --- a/sfx2/source/control/msg.cxx +++ b/sfx2/source/control/msg.cxx @@ -29,9 +29,6 @@ #include "precompiled_sfx2.hxx" #include <svl/itempool.hxx> #include <svl/eitem.hxx> -#ifndef GCC -#endif - #include <sfx2/msg.hxx> //==================================================================== @@ -63,4 +60,16 @@ USHORT SfxSlot::GetWhich( const SfxItemPool &rPool ) const return nMasterSlotId; } +::rtl::OString SfxSlot::GetCommand() const +{ + rtl::OString sRet(".uno:"); + sRet += pUnoName; + return sRet; +} + +::rtl::OUString SfxSlot::GetCommandString() const +{ + rtl::OString aCmd(GetCommand()); + return rtl::OUString( aCmd, aCmd.getLength(), RTL_TEXTENCODING_UTF8 ); +} diff --git a/sfx2/source/dialog/about.cxx b/sfx2/source/dialog/about.cxx index fab379f9f215..7d868eb97362 100644 --- a/sfx2/source/dialog/about.cxx +++ b/sfx2/source/dialog/about.cxx @@ -55,7 +55,7 @@ #include "sfxresid.hxx" #include <sfx2/sfxdefs.hxx> #include <sfx2/app.hxx> - +#include <sfx2/sfxcommands.h> #include "dialog.hrc" // defines --------------------------------------------------------------- @@ -283,8 +283,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId, const String& rVerS FreeResource(); - // explizite Help-Id - SetHelpId( SID_ABOUT ); + SetHelpId( CMD_SID_ABOUT ); } // ----------------------------------------------------------------------- diff --git a/sfx2/source/dialog/alienwarn.src b/sfx2/source/dialog/alienwarn.src index 7aa6f3230778..ae07b28a4f4d 100644 --- a/sfx2/source/dialog/alienwarn.src +++ b/sfx2/source/dialog/alienwarn.src @@ -81,6 +81,7 @@ ModalDialog RID_DLG_ALIEN_WARNING }; CheckBox CB_WARNING_OFF { + HelpID = "sfx2:CheckBox:RID_DLG_ALIEN_WARNING:CB_WARNING_OFF"; Pos = MAP_APPFONT( AW_COL_2, AW_ROW_4 ); Size = MAP_APPFONT( DIALOG_WIDTH-AW_COL_2-RSC_SP_DLG_INNERBORDER_RIGHT, RSC_CD_CHECKBOX_HEIGHT ); WordBreak = TRUE ; diff --git a/sfx2/source/dialog/basedlgs.cxx b/sfx2/source/dialog/basedlgs.cxx index 2ea5ef5fe4b1..df1f13155513 100644 --- a/sfx2/source/dialog/basedlgs.cxx +++ b/sfx2/source/dialog/basedlgs.cxx @@ -160,9 +160,6 @@ void SfxModalDialog::GetDialogData_Impl() void SfxModalDialog::init() { GetDialogData_Impl(); - aTimer.SetTimeout( 100 ); - aTimer.SetTimeoutHdl( LINK( this, SfxModalDialog, TimerHdl_Impl ) ); - aTimer.Start(); } // ----------------------------------------------------------------------- @@ -214,13 +211,7 @@ SfxModalDialog::~SfxModalDialog() */ { -/* - SfxHelpPI *pHelpPI = SFX_APP()->GetHelpPI(); - if ( pHelpPI ) - pHelpPI->ResetTopic(); -*/ SetDialogData_Impl(); - aTimer.Stop(); delete pOutputSet; } @@ -233,16 +224,6 @@ void SfxModalDialog::CreateOutputItemSet( SfxItemPool& rPool ) // ----------------------------------------------------------------------- -IMPL_LINK( SfxModalDialog, TimerHdl_Impl, Timer*, EMPTYARG ) -{ -/* - SfxHelpPI *pHelpPI = SFX_APP()->GetHelpPI(); - if ( pHelpPI ) - pHelpPI->LoadTopic( GetHelpId() ); - */ - return 0L; -} - void SfxModalDialog::CreateOutputItemSet( const SfxItemSet& rSet ) { DBG_ASSERT( !pOutputSet, "Double creation of OutputSet!" ); @@ -373,9 +354,8 @@ SfxModelessDialog::SfxModelessDialog( SfxBindings *pBindinx, { pImp->pMgr = pCW; pImp->bConstructed = FALSE; - sal_uInt32 nId = GetHelpId(); - SetHelpId(0); - SetUniqueId( nId ); + SetUniqueId( GetHelpId() ); + SetHelpId(""); if ( pBindinx ) pImp->StartListening( *pBindinx ); pImp->aMoveTimer.SetTimeout(50); @@ -393,9 +373,8 @@ SfxModelessDialog::SfxModelessDialog( SfxBindings *pBindinx, { pImp->pMgr = pCW; pImp->bConstructed = FALSE; - sal_uInt32 nId = GetHelpId(); - SetHelpId(0); - SetUniqueId( nId ); + SetUniqueId( GetHelpId() ); + SetHelpId(""); if ( pBindinx ) pImp->StartListening( *pBindinx ); pImp->aMoveTimer.SetTimeout(50); @@ -418,15 +397,15 @@ long SfxModelessDialog::Notify( NotifyEvent& rEvt ) pBindings->SetActiveFrame( pImp->pMgr->GetFrame() ); pImp->pMgr->Activate_Impl(); Window* pWindow = rEvt.GetWindow(); - ULONG nHelpId = 0; - while ( !nHelpId && pWindow ) + rtl::OString sHelpId; + while ( !sHelpId.getLength() && pWindow ) { - nHelpId = pWindow->GetHelpId(); + sHelpId = pWindow->GetHelpId(); pWindow = pWindow->GetParent(); } - if ( nHelpId ) - SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId ); + if ( sHelpId.getLength() ) + SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), sHelpId ); } else if ( rEvt.GetType() == EVENT_LOSEFOCUS && !HasChildPathFocus() ) { @@ -520,15 +499,15 @@ long SfxFloatingWindow::Notify( NotifyEvent& rEvt ) pBindings->SetActiveFrame( pImp->pMgr->GetFrame() ); pImp->pMgr->Activate_Impl(); Window* pWindow = rEvt.GetWindow(); - ULONG nHelpId = 0; - while ( !nHelpId && pWindow ) + rtl::OString sHelpId; + while ( !sHelpId.getLength() && pWindow ) { - nHelpId = pWindow->GetHelpId(); + sHelpId = pWindow->GetHelpId(); pWindow = pWindow->GetParent(); } - if ( nHelpId ) - SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId ); + if ( sHelpId.getLength() ) + SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), sHelpId ); } else if ( rEvt.GetType() == EVENT_LOSEFOCUS ) { @@ -561,9 +540,8 @@ SfxFloatingWindow::SfxFloatingWindow( SfxBindings *pBindinx, { pImp->pMgr = pCW; pImp->bConstructed = FALSE; - sal_uInt32 nId = GetHelpId(); - SetHelpId(0); - SetUniqueId( nId ); + SetUniqueId( GetHelpId() ); + SetHelpId(""); if ( pBindinx ) pImp->StartListening( *pBindinx ); pImp->aMoveTimer.SetTimeout(50); @@ -582,9 +560,8 @@ SfxFloatingWindow::SfxFloatingWindow( SfxBindings *pBindinx, { pImp->pMgr = pCW; pImp->bConstructed = FALSE; - sal_uInt32 nId = GetHelpId(); - SetHelpId(0); - SetUniqueId( nId ); + SetUniqueId( GetHelpId() ); + SetHelpId(""); if ( pBindinx ) pImp->StartListening( *pBindinx ); pImp->aMoveTimer.SetTimeout(50); diff --git a/sfx2/source/dialog/dinfdlg.src b/sfx2/source/dialog/dinfdlg.src index 53b0f35685cb..c78347e3dba3 100755..100644 --- a/sfx2/source/dialog/dinfdlg.src +++ b/sfx2/source/dialog/dinfdlg.src @@ -53,6 +53,7 @@ TabPage TP_DOCINFODESC }; Edit ED_TITLE { + HelpID = "sfx2:Edit:TP_DOCINFODESC:ED_TITLE"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 6 ) ; Size = MAP_APPFONT ( 184 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -68,6 +69,7 @@ TabPage TP_DOCINFODESC }; Edit ED_THEMA { + HelpID = "sfx2:Edit:TP_DOCINFODESC:ED_THEMA"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 21 ) ; Size = MAP_APPFONT ( 184 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -83,6 +85,7 @@ TabPage TP_DOCINFODESC }; Edit ED_KEYWORDS { + HelpID = "sfx2:Edit:TP_DOCINFODESC:ED_KEYWORDS"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 36 ) ; Size = MAP_APPFONT ( 184 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -98,6 +101,7 @@ TabPage TP_DOCINFODESC }; MultiLineEdit ED_COMMENT { + HelpID = "sfx2:MultiLineEdit:TP_DOCINFODESC:ED_COMMENT"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 51 ) ; Size = MAP_APPFONT ( 184 , 128 ) ; @@ -121,6 +125,7 @@ TabPage TP_DOCINFODOC }; Edit ED_FILE_NAME { + HelpID = "sfx2:Edit:TP_DOCINFODOC:ED_FILE_NAME"; Pos = MAP_APPFONT ( 54 , 12 ) ; Size = MAP_APPFONT ( 200 , RSC_CD_TEXTBOX_HEIGHT ) ; Border = TRUE ; @@ -138,11 +143,13 @@ TabPage TP_DOCINFODOC }; Edit FT_FILE_SHOW_TYP { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_FILE_SHOW_TYP"; Pos = MAP_APPFONT ( 78 , 37 ) ; Size = MAP_APPFONT ( 106 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; CheckBox CB_FILE_READONLY { + HelpID = "sfx2:CheckBox:TP_DOCINFODOC:CB_FILE_READONLY"; Pos = MAP_APPFONT ( 163 , 37 ) ; Size = MAP_APPFONT ( 91 , RSC_CD_CHECKBOX_HEIGHT ) ; Text [ en-US ] = "~Read-only" ; @@ -155,6 +162,7 @@ TabPage TP_DOCINFODOC }; Edit FT_FILE_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_FILE_VAL"; Pos = MAP_APPFONT ( 78 , 49 ) ; Size = MAP_APPFONT ( 176 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -166,6 +174,7 @@ TabPage TP_DOCINFODOC }; Edit FT_FILE_SHOW_SIZE { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_FILE_SHOW_SIZE"; Pos = MAP_APPFONT ( 78 , 61 ) ; Size = MAP_APPFONT ( 176 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -182,6 +191,7 @@ TabPage TP_DOCINFODOC }; Edit FT_CREATE_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_CREATE_VAL"; Pos = MAP_APPFONT ( 78 , 80 ) ; Size = MAP_APPFONT ( 176 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -193,6 +203,7 @@ TabPage TP_DOCINFODOC }; Edit FT_CHANGE_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_CHANGE_VAL"; Pos = MAP_APPFONT ( 78 , 92 ) ; Size = MAP_APPFONT ( 176 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -204,11 +215,13 @@ TabPage TP_DOCINFODOC }; Edit FT_SIGNED_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_SIGNED_VAL"; Pos = MAP_APPFONT ( 78 , 104 ) ; Size = MAP_APPFONT ( 123 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; PushButton BTN_SIGNATURE { + HelpID = "sfx2:PushButton:TP_DOCINFODOC:BTN_SIGNATURE"; Pos = MAP_APPFONT ( 204 , 101 ) ; Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ; Text [ en-US ] = "Digital Signature..."; @@ -225,6 +238,7 @@ TabPage TP_DOCINFODOC }; Edit FT_PRINT_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_PRINT_VAL"; Pos = MAP_APPFONT ( 78 , 116 ) ; Size = MAP_APPFONT ( 176 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -236,6 +250,7 @@ TabPage TP_DOCINFODOC }; Edit FT_TIMELOG_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_TIMELOG_VAL"; Pos = MAP_APPFONT ( 78 , 128 ) ; Size = MAP_APPFONT ( 30 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -247,11 +262,13 @@ TabPage TP_DOCINFODOC }; Edit FT_DOCNO_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_DOCNO_VAL"; Pos = MAP_APPFONT ( 78 , 140 ) ; Size = MAP_APPFONT ( 30 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; PushButton BTN_DELETE { + HelpID = "sfx2:PushButton:TP_DOCINFODOC:BTN_DELETE"; Pos = MAP_APPFONT ( 204 , 150 ) ; Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ; Hide = TRUE; @@ -259,6 +276,7 @@ TabPage TP_DOCINFODOC }; CheckBox CB_USE_USERDATA { + HelpID = "sfx2:CheckBox:TP_DOCINFODOC:CB_USE_USERDATA"; Pos = MAP_APPFONT ( 6 , 152 ) ; Size = MAP_APPFONT ( 192 , RSC_CD_CHECKBOX_HEIGHT ) ; Hide = TRUE; @@ -277,6 +295,7 @@ TabPage TP_DOCINFODOC }; Edit FT_TEMPL_VAL { + HelpID = "sfx2:Edit:TP_DOCINFODOC:FT_TEMPL_VAL"; Pos = MAP_APPFONT ( 78 , 172 ) ; Size = MAP_APPFONT ( 180 , RSC_CD_FIXEDTEXT_HEIGHT ) ; }; @@ -301,6 +320,7 @@ TabPage TP_DOCINFOUSER }; Edit ED_INFO1 { + HelpID = "sfx2:Edit:TP_DOCINFOUSER:ED_INFO1"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 17 ) ; Size = MAP_APPFONT ( 248 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -314,6 +334,7 @@ TabPage TP_DOCINFOUSER }; Edit ED_INFO2 { + HelpID = "sfx2:Edit:TP_DOCINFOUSER:ED_INFO2"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 43 ) ; Size = MAP_APPFONT ( 248 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -327,6 +348,7 @@ TabPage TP_DOCINFOUSER }; Edit ED_INFO3 { + HelpID = "sfx2:Edit:TP_DOCINFOUSER:ED_INFO3"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 69 ) ; Size = MAP_APPFONT ( 248 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -340,6 +362,7 @@ TabPage TP_DOCINFOUSER }; Edit ED_INFO4 { + HelpID = "sfx2:Edit:TP_DOCINFOUSER:ED_INFO4"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 95 ) ; Size = MAP_APPFONT ( 248 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -347,6 +370,7 @@ TabPage TP_DOCINFOUSER }; PushButton BTN_EDITLABEL { + HelpID = "sfx2:PushButton:TP_DOCINFOUSER:BTN_EDITLABEL"; Pos = MAP_APPFONT ( 194 , 165 ) ; Size = MAP_APPFONT ( 60 , RSC_CD_PUSHBUTTON_HEIGHT ) ; Text [ en-US ] = "~Info fields..." ; @@ -362,6 +386,7 @@ TabPage TP_DOCINFORELOAD Size = MAP_APPFONT ( 260 , 185 ) ; RadioButton RB_NOAUTOUPDATE { + HelpID = "sfx2:RadioButton:TP_DOCINFORELOAD:RB_NOAUTOUPDATE"; TabStop = TRUE ; Pos = MAP_APPFONT( COL_0 , ROW_0 ) ; Size = MAP_APPFONT( COL_7 - COL_1 , RSC_CD_RADIOBUTTON_HEIGHT ) ; @@ -370,6 +395,7 @@ TabPage TP_DOCINFORELOAD RadioButton RB_RELOADUPDATE { + HelpID = "sfx2:RadioButton:TP_DOCINFORELOAD:RB_RELOADUPDATE"; TabStop = TRUE ; Pos = MAP_APPFONT( COL_0, ROW_1 ) ; Size = MAP_APPFONT( COL_7 - COL_1, RSC_CD_RADIOBUTTON_HEIGHT ) ; @@ -383,6 +409,7 @@ TabPage TP_DOCINFORELOAD }; NumericField ED_RELOAD { + HelpID = "sfx2:NumericField:TP_DOCINFORELOAD:ED_RELOAD"; Border = TRUE ; Pos = MAP_APPFONT ( COL_2 , ROW_2 - ROWDIFF_FT_EDTFLD ) ; Size = MAP_APPFONT ( WIDTH_2 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -403,6 +430,7 @@ TabPage TP_DOCINFORELOAD RadioButton RB_FORWARDUPDATE { + HelpID = "sfx2:RadioButton:TP_DOCINFORELOAD:RB_FORWARDUPDATE"; TabStop = TRUE ; Pos = MAP_APPFONT( COL_0, ROW_3 ) ; Size = MAP_APPFONT( COL_7 - COL_1, RSC_CD_RADIOBUTTON_HEIGHT ) ; @@ -416,6 +444,7 @@ TabPage TP_DOCINFORELOAD }; NumericField ED_FORWARD { + HelpID = "sfx2:NumericField:TP_DOCINFORELOAD:ED_FORWARD"; Border = TRUE ; Pos = MAP_APPFONT ( COL_2 , ROW_4 - ROWDIFF_FT_EDTFLD ) ; Size = MAP_APPFONT ( WIDTH_2 , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -441,12 +470,14 @@ TabPage TP_DOCINFORELOAD }; Edit ED_URL { + HelpID = "sfx2:Edit:TP_DOCINFORELOAD:ED_URL"; Border = TRUE ; Pos = MAP_APPFONT ( COL_2 , ROW_5 - ROWDIFF_FT_EDTFLD ) ; Size = MAP_APPFONT ( COL_5 - COL_2 , RSC_CD_TEXTBOX_HEIGHT ) ; }; PushButton PB_BROWSEURL { + HelpID = "sfx2:PushButton:TP_DOCINFORELOAD:PB_BROWSEURL"; Pos = MAP_APPFONT ( COL_6 , ROW_5 - ROWDIFF_FT_EDTFLD ) ; Size = MAP_APPFONT ( COL_7 - COL_6 , RSC_CD_PUSHBUTTON_HEIGHT ) ; Text = "..." ; @@ -459,6 +490,7 @@ TabPage TP_DOCINFORELOAD }; ComboBox CB_FRAME { + HelpID = "sfx2:ComboBox:TP_DOCINFORELOAD:CB_FRAME"; Pos = MAP_APPFONT ( COL_2 , ROW_6 - ROWDIFF_FT_EDTFLD ) ; Size = MAP_APPFONT ( COL_7 - COL_2 , RSC_CD_DROPDOWN_HEIGHT * 10 ) ; DropDown = TRUE ; @@ -524,6 +556,7 @@ TabPage TP_CUSTOMPROPERTIES }; PushButton BTN_ADD { + HelpID = "sfx2:PushButton:TP_CUSTOMPROPERTIES:BTN_ADD"; Pos = MAP_APPFONT( 204 , 165 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text [ en-US ] = "~Add"; @@ -756,6 +789,7 @@ ModalDialog RID_EDIT_DURATIONS }; CheckBox CB_NEGATIVE { + HelpID = "sfx2:CheckBox:RID_EDIT_DURATIONS:CB_NEGATIVE"; Pos = MAP_APPFONT ( 6 , 21 ) ; Size = MAP_APPFONT ( 60 , RSC_CD_FIXEDTEXT_HEIGHT ) ; Text [ en-US ] = "~Negative" ; @@ -769,6 +803,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_YEAR { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_YEAR"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 36 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -789,6 +824,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_MONTH { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_MONTH"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 50 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -809,6 +845,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_DAY { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_DAY"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 64 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -829,6 +866,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_HOUR { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_HOUR"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 78 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -849,6 +887,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_MINUTE { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_MINUTE"; Border = TRUE ; Pos = MAP_APPFONT ( 70, 92) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -869,6 +908,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_SECOND { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_SECOND"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 106 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; @@ -889,6 +929,7 @@ ModalDialog RID_EDIT_DURATIONS }; NumericField ED_MSECOND { + HelpID = "sfx2:NumericField:RID_EDIT_DURATIONS:ED_MSECOND"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 120 ) ; Size = MAP_APPFONT ( 40, RSC_CD_TEXTBOX_HEIGHT ) ; diff --git a/sfx2/source/dialog/dinfedt.src b/sfx2/source/dialog/dinfedt.src index 7f4875487536..110dccf11c40 100644 --- a/sfx2/source/dialog/dinfedt.src +++ b/sfx2/source/dialog/dinfedt.src @@ -45,24 +45,28 @@ ModalDialog DLG_DOCINFO_EDT }; Edit ED_INFO1 { + HelpID = "sfx2:Edit:DLG_DOCINFO_EDT:ED_INFO1"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 86 , 12 ) ; }; Edit ED_INFO2 { + HelpID = "sfx2:Edit:DLG_DOCINFO_EDT:ED_INFO2"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 29 ) ; Size = MAP_APPFONT ( 86 , 12 ) ; }; Edit ED_INFO3 { + HelpID = "sfx2:Edit:DLG_DOCINFO_EDT:ED_INFO3"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 44 ) ; Size = MAP_APPFONT ( 86 , 12 ) ; }; Edit ED_INFO4 { + HelpID = "sfx2:Edit:DLG_DOCINFO_EDT:ED_INFO4"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 59 ) ; Size = MAP_APPFONT ( 86 , 12 ) ; diff --git a/sfx2/source/dialog/dockwin.cxx b/sfx2/source/dialog/dockwin.cxx index 7b4e4289a49c..0864b0e18c2b 100644 --- a/sfx2/source/dialog/dockwin.cxx +++ b/sfx2/source/dialog/dockwin.cxx @@ -46,6 +46,7 @@ #include <sfx2/viewsh.hxx> #include "sfxhelp.hxx" #include <sfx2/objsh.hxx> +#include <sfx2/msgpool.hxx> #include <com/sun/star/frame/XController.hpp> #include <com/sun/star/lang/XUnoTunnel.hpp> @@ -918,11 +919,23 @@ SfxDockingWindow::SfxDockingWindow( SfxBindings *pBindinx, SfxChildWindow *pCW, */ { - ULONG nId = GetHelpId(); - if ( !nId && pCW ) - nId = pCW->GetType(); - SetHelpId( 0 ); - SetUniqueId( nId ); + if ( GetHelpId().getLength() ) + { + SetUniqueId( GetHelpId() ); + SetHelpId(""); + } + else + { + SfxViewFrame* pViewFrame = pBindings->GetDispatcher()->GetFrame(); + SfxSlotPool* pSlotPool = pViewFrame->GetObjectShell()->GetModule()->GetSlotPool(); + const SfxSlot* pSlot = pSlotPool->GetSlot( pCW->GetType() ); + if ( pSlot ) + { + rtl::OString aCmd("SFXDOCKINGWINDOW_"); + aCmd += pSlot->GetUnoName(); + SetUniqueId( aCmd ); + } + } pImp = new SfxDockingWindow_Impl; pImp->bConstructed = FALSE; @@ -960,9 +973,23 @@ SfxDockingWindow::SfxDockingWindow( SfxBindings *pBindinx, SfxChildWindow *pCW, */ { - ULONG nId = GetHelpId(); - SetHelpId(0); - SetUniqueId( nId ); + if ( GetHelpId().getLength() ) + { + SetUniqueId( GetHelpId() ); + SetHelpId(""); + } + else + { + SfxViewFrame* pViewFrame = pBindings->GetDispatcher()->GetFrame(); + SfxSlotPool* pSlotPool = pViewFrame->GetObjectShell()->GetModule()->GetSlotPool(); + const SfxSlot* pSlot = pSlotPool->GetSlot( pCW->GetType() ); + if ( pSlot ) + { + rtl::OString aCmd("SFXDOCKINGWINDOW_"); + aCmd += pSlot->GetUnoName(); + SetUniqueId( aCmd ); + } + } pImp = new SfxDockingWindow_Impl; pImp->bConstructed = FALSE; @@ -1844,15 +1871,15 @@ long SfxDockingWindow::Notify( NotifyEvent& rEvt ) pMgr->Activate_Impl(); Window* pWindow = rEvt.GetWindow(); - ULONG nHelpId = 0; - while ( !nHelpId && pWindow ) + rtl::OString sHelpId; + while ( !sHelpId.getLength() && pWindow ) { - nHelpId = pWindow->GetHelpId(); + sHelpId = pWindow->GetHelpId(); pWindow = pWindow->GetParent(); } - if ( nHelpId ) - SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), nHelpId ); + if ( sHelpId.getLength() ) + SfxHelp::OpenHelpAgent( &pBindings->GetDispatcher_Impl()->GetFrame()->GetFrame(), sHelpId ); // In VCL geht Notify zun"achst an das Fenster selbst, // also base class rufen, sonst erf"ahrt der parent nichts diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx index 7198c84b7127..02b9003f59d2 100644 --- a/sfx2/source/dialog/filedlghelper.cxx +++ b/sfx2/source/dialog/filedlghelper.cxx @@ -79,7 +79,6 @@ #include <unotools/viewoptions.hxx> #include <unotools/moduleoptions.hxx> #include <svtools/helpid.hrc> -#include <svl/pickerhelper.hxx> #include <comphelper/docpasswordrequest.hxx> #include <comphelper/docpasswordhelper.hxx> #include <ucbhelper/content.hxx> @@ -98,7 +97,7 @@ #include "filtergrouping.hxx" #include <sfx2/request.hxx> #include "filedlgimpl.hxx" - +#include <helpid.hrc> #include <sfxlocal.hrc> //----------------------------------------------------------------------------- @@ -221,55 +220,55 @@ OUString FileDialogHelper_Impl::handleHelpRequested( const FilePickerEvent& aEve { //!!! todo: cache the help strings (here or TRA) - ULONG nHelpId = 0; + rtl::OString sHelpId; // mapping from element id -> help id switch ( aEvent.ElementId ) { case ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION : - nHelpId = HID_FILESAVE_AUTOEXTENSION; + sHelpId = HID_FILESAVE_AUTOEXTENSION; break; case ExtendedFilePickerElementIds::CHECKBOX_PASSWORD : - nHelpId = HID_FILESAVE_SAVEWITHPASSWORD; + sHelpId = HID_FILESAVE_SAVEWITHPASSWORD; break; case ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS : - nHelpId = HID_FILESAVE_CUSTOMIZEFILTER; + sHelpId = HID_FILESAVE_CUSTOMIZEFILTER; break; case ExtendedFilePickerElementIds::CHECKBOX_READONLY : - nHelpId = HID_FILEOPEN_READONLY; + sHelpId = HID_FILEOPEN_READONLY; break; case ExtendedFilePickerElementIds::CHECKBOX_LINK : - nHelpId = HID_FILEDLG_LINK_CB; + sHelpId = HID_FILEDLG_LINK_CB; break; case ExtendedFilePickerElementIds::CHECKBOX_PREVIEW : - nHelpId = HID_FILEDLG_PREVIEW_CB; + sHelpId = HID_FILEDLG_PREVIEW_CB; break; case ExtendedFilePickerElementIds::PUSHBUTTON_PLAY : - nHelpId = HID_FILESAVE_DOPLAY; + sHelpId = HID_FILESAVE_DOPLAY; break; case ExtendedFilePickerElementIds::LISTBOX_VERSION_LABEL : case ExtendedFilePickerElementIds::LISTBOX_VERSION : - nHelpId = HID_FILEOPEN_VERSION; + sHelpId = HID_FILEOPEN_VERSION; break; case ExtendedFilePickerElementIds::LISTBOX_TEMPLATE_LABEL : case ExtendedFilePickerElementIds::LISTBOX_TEMPLATE : - nHelpId = HID_FILESAVE_TEMPLATE; + sHelpId = HID_FILESAVE_TEMPLATE; break; case ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE_LABEL : case ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE : - nHelpId = HID_FILEOPEN_IMAGE_TEMPLATE; + sHelpId = HID_FILEOPEN_IMAGE_TEMPLATE; break; case ExtendedFilePickerElementIds::CHECKBOX_SELECTION : - nHelpId = HID_FILESAVE_SELECTION; + sHelpId = HID_FILESAVE_SELECTION; break; default: @@ -279,7 +278,7 @@ OUString FileDialogHelper_Impl::handleHelpRequested( const FilePickerEvent& aEve OUString aHelpText; Help* pHelp = Application::GetHelp(); if ( pHelp ) - aHelpText = String( pHelp->GetHelpText( nHelpId, NULL ) ); + aHelpText = String( pHelp->GetHelpText( String( ByteString(sHelpId), RTL_TEXTENCODING_UTF8), NULL ) ); return aHelpText; } @@ -1204,7 +1203,7 @@ void SAL_CALL PickerThread_Impl::run() } // ------------------------------------------------------------------------ -void FileDialogHelper_Impl::setControlHelpIds( const sal_Int16* _pControlId, const sal_Int32* _pHelpId ) +void FileDialogHelper_Impl::setControlHelpIds( const sal_Int16* _pControlId, const char** _pHelpId ) { DBG_ASSERT( _pControlId && _pHelpId, "FileDialogHelper_Impl::setControlHelpIds: invalid array pointers!" ); if ( !_pControlId || !_pHelpId ) @@ -1213,17 +1212,16 @@ void FileDialogHelper_Impl::setControlHelpIds( const sal_Int16* _pControlId, con // forward these ids to the file picker try { - const ::rtl::OUString sHelpIdPrefix( RTL_CONSTASCII_USTRINGPARAM( "HID:" ) ); + const ::rtl::OUString sHelpIdPrefix( RTL_CONSTASCII_USTRINGPARAM( INET_HID_SCHEME ) ); // the ids for the single controls uno::Reference< XFilePickerControlAccess > xControlAccess( mxFileDlg, UNO_QUERY ); if ( xControlAccess.is() ) { while ( *_pControlId ) { - // calc the help id of the element + DBG_ASSERT( INetURLObject( rtl::OStringToOUString( *_pHelpId, RTL_TEXTENCODING_UTF8 ) ).GetProtocol() == INET_PROT_NOT_VALID, "Wrong HelpId!" ); ::rtl::OUString sId( sHelpIdPrefix ); - sId += ::rtl::OUString::valueOf( *_pHelpId ); - // set the help id + sId += ::rtl::OUString( *_pHelpId, strlen( *_pHelpId ), RTL_TEXTENCODING_UTF8 ); xControlAccess->setValue( *_pControlId, ControlActions::SET_HELP_URL, makeAny( sId ) ); ++_pControlId; ++_pHelpId; @@ -1237,12 +1235,6 @@ void FileDialogHelper_Impl::setControlHelpIds( const sal_Int16* _pControlId, con } // ------------------------------------------------------------------------ -void FileDialogHelper_Impl::setDialogHelpId( const sal_Int32 _nHelpId ) -{ - svt::SetDialogHelpId( mxFileDlg, _nHelpId ); -} - -// ------------------------------------------------------------------------ IMPL_LINK( FileDialogHelper_Impl, InitControls, void*, NOTINTERESTEDIN ) { (void)NOTINTERESTEDIN; @@ -2346,9 +2338,6 @@ void FileDialogHelper_Impl::SetContext( FileDialogHelper::Context _eNewContext ) const OUString* pConfigId = GetLastFilterConfigId( _eNewContext ); if( pConfigId ) LoadLastUsedFilter( *pConfigId ); - -// if( nNewHelpId ) -// this->setDialogHelpId( nNewHelpId ); } // ------------------------------------------------------------------------ @@ -2494,17 +2483,11 @@ void FileDialogHelper::CreateMatcher( const String& rFactory ) } // ------------------------------------------------------------------------ -void FileDialogHelper::SetControlHelpIds( const sal_Int16* _pControlId, const sal_Int32* _pHelpId ) +void FileDialogHelper::SetControlHelpIds( const sal_Int16* _pControlId, const char** _pHelpId ) { mpImp->setControlHelpIds( _pControlId, _pHelpId ); } -// ------------------------------------------------------------------------ -void FileDialogHelper::SetDialogHelpId( const sal_Int32 _nHelpId ) -{ - mpImp->setDialogHelpId( _nHelpId ); -} - void FileDialogHelper::SetContext( Context _eNewContext ) { mpImp->SetContext( _eNewContext ); diff --git a/sfx2/source/dialog/filedlgimpl.hxx b/sfx2/source/dialog/filedlgimpl.hxx index 6965e14ae84d..91190b575e1c 100644 --- a/sfx2/source/dialog/filedlgimpl.hxx +++ b/sfx2/source/dialog/filedlgimpl.hxx @@ -142,8 +142,7 @@ namespace sfx2 void correctVirtualDialogType(); - void setControlHelpIds( const sal_Int16* _pControlId, const sal_Int32* _pHelpId ); - void setDialogHelpId( const sal_Int32 _nHelpId ); + void setControlHelpIds( const sal_Int16* _pControlId, const char** _pHelpId ); sal_Bool CheckFilterOptionsCapability( const SfxFilter* _pFilter ); diff --git a/sfx2/source/dialog/mailmodel.cxx b/sfx2/source/dialog/mailmodel.cxx index 0e0c6ec22ee1..dfd099f6cf45 100644 --- a/sfx2/source/dialog/mailmodel.cxx +++ b/sfx2/source/dialog/mailmodel.cxx @@ -53,13 +53,11 @@ #include <com/sun/star/security/XDocumentDigitalSignatures.hpp> #include <com/sun/star/frame/XDispatchProvider.hpp> #include <com/sun/star/frame/XDispatch.hpp> +#include <com/sun/star/frame/XStatusListener.hpp> #include <com/sun/star/ucb/InsertCommandArgument.hpp> #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> #include <com/sun/star/document/XExporter.hpp> -#ifndef _RTL_TEXTENC_H -#include <rtl/textench.h> -#endif #include <rtl/uri.h> #include <rtl/uri.hxx> #include <rtl/ustrbuf.hxx> @@ -84,6 +82,7 @@ #include <comphelper/mediadescriptor.hxx> #include <toolkit/helper/vclunohelper.hxx> #include <vcl/svapp.hxx> +#include <cppuhelper/implbase1.hxx> // -------------------------------------------------------------- using namespace ::com::sun::star; @@ -98,6 +97,54 @@ using namespace ::com::sun::star::system; using namespace ::rtl; namespace css = ::com::sun::star; +// - class PrepareListener_Impl ------------------------------------------ +class PrepareListener_Impl : public ::cppu::WeakImplHelper1< css::frame::XStatusListener > +{ + bool m_bState; +public: + PrepareListener_Impl(); + virtual ~PrepareListener_Impl(); + + // css.frame.XStatusListener + virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& aEvent) + throw(css::uno::RuntimeException); + + // css.lang.XEventListener + virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent) + throw(css::uno::RuntimeException); + + bool IsSet() const {return m_bState;} +}; + +/*-- 25.08.2010 14:32:49--------------------------------------------------- + + -----------------------------------------------------------------------*/ +PrepareListener_Impl::PrepareListener_Impl() : + m_bState( false ) +{ +} +/*-- 25.08.2010 14:32:51--------------------------------------------------- + + -----------------------------------------------------------------------*/ +PrepareListener_Impl::~PrepareListener_Impl() +{ +} +/*-- 25.08.2010 14:32:51--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void PrepareListener_Impl::statusChanged(const css::frame::FeatureStateEvent& rEvent) throw(css::uno::RuntimeException) +{ + if( rEvent.IsEnabled ) + rEvent.State >>= m_bState; + else + m_bState = sal_False; +} +/*-- 25.08.2010 14:32:52--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void PrepareListener_Impl::disposing(const css::lang::EventObject& /*rEvent*/) throw(css::uno::RuntimeException) +{ +} // class AddressList_Impl ------------------------------------------------ @@ -547,46 +594,68 @@ SfxMailModel::SaveResult SfxMailModel::SaveDocumentAsFormat( aArgs[nNumArgs-1].Value = css::uno::makeAny( aPassword ); } - if ( bModified || !bHasLocation || bStoreTo ) + bool bNeedsPreparation = false; + css::util::URL aPrepareURL; + css::uno::Reference< css::frame::XDispatch > xPrepareDispatch; + css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider( xFrame, css::uno::UNO_QUERY ); + css::uno::Reference< css::util::XURLTransformer > xURLTransformer( + xSMGR->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ))), + css::uno::UNO_QUERY ); + if( !bSendAsPDF ) { - // Document is modified, is newly created or should be stored in a special format try { - css::uno::Reference< css::util::XURLTransformer > xURLTransformer( - xSMGR->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ))), - css::uno::UNO_QUERY ); - - css::uno::Reference< css::frame::XDispatchProvider > xDispatchProvider( xFrame, css::uno::UNO_QUERY ); - css::uno::Reference< css::frame::XDispatch > xDispatch; + // check if the document needs to be prepared for sending as mail (embedding of links, removal of invisible content) - css::util::URL aURL; - css::uno::Sequence< css::beans::PropertyValue > aDispatchArgs; + if ( xURLTransformer.is() ) + { + aPrepareURL.Complete = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:PrepareMailExport" )); + xURLTransformer->parseStrict( aPrepareURL ); + } - if( !bSendAsPDF ) + if ( xDispatchProvider.is() ) { - if ( xURLTransformer.is() ) + xPrepareDispatch = css::uno::Reference< css::frame::XDispatch >( + xDispatchProvider->queryDispatch( aPrepareURL, ::rtl::OUString(), 0 )); + if ( xPrepareDispatch.is() ) { - aURL.Complete = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:PrepareMailExport" )); - xURLTransformer->parseStrict( aURL ); + PrepareListener_Impl* pPrepareListener; + uno::Reference< css::frame::XStatusListener > xStatusListener = pPrepareListener = new PrepareListener_Impl; + xPrepareDispatch->addStatusListener( xStatusListener, aPrepareURL ); + bNeedsPreparation = pPrepareListener->IsSet(); + xPrepareDispatch->removeStatusListener( xStatusListener, aPrepareURL ); } + } + } + catch ( css::uno::RuntimeException& ) + { + throw; + } + catch ( css::uno::Exception& ) + { + } + } - if ( xDispatchProvider.is() ) + if ( bModified || !bHasLocation || bStoreTo || bNeedsPreparation ) + { + // Document is modified, is newly created or should be stored in a special format + try + { + if( bNeedsPreparation && xPrepareDispatch.is() ) + { + if ( xPrepareDispatch.is() ) { - xDispatch = css::uno::Reference< css::frame::XDispatch >( - xDispatchProvider->queryDispatch( aURL, ::rtl::OUString(), 0 )); - if ( xDispatch.is() ) + try + { + css::uno::Sequence< css::beans::PropertyValue > aDispatchArgs; + xPrepareDispatch->dispatch( aPrepareURL, aDispatchArgs ); + } + catch ( css::uno::RuntimeException& ) + { + throw; + } + catch ( css::uno::Exception& ) { - try - { - xDispatch->dispatch( aURL, aDispatchArgs ); - } - catch ( css::uno::RuntimeException& ) - { - throw; - } - catch ( css::uno::Exception& ) - { - } } } } @@ -608,6 +677,7 @@ SfxMailModel::SaveResult SfxMailModel::SaveDocumentAsFormat( if( !bSendAsPDF ) { + css::util::URL aURL; // #i30432# notify that export is finished - the Writer may want to restore removed content if ( xURLTransformer.is() ) { @@ -617,12 +687,13 @@ SfxMailModel::SaveResult SfxMailModel::SaveDocumentAsFormat( if ( xDispatchProvider.is() ) { - xDispatch = css::uno::Reference< css::frame::XDispatch >( + css::uno::Reference< css::frame::XDispatch > xDispatch = css::uno::Reference< css::frame::XDispatch >( xDispatchProvider->queryDispatch( aURL, ::rtl::OUString(), 0 )); if ( xDispatch.is() ) { try { + css::uno::Sequence< css::beans::PropertyValue > aDispatchArgs; xDispatch->dispatch( aURL, aDispatchArgs ); } catch ( css::uno::RuntimeException& ) diff --git a/sfx2/source/dialog/mgetempl.cxx b/sfx2/source/dialog/mgetempl.cxx index 1f5472cf2052..1666916b0c0b 100644 --- a/sfx2/source/dialog/mgetempl.cxx +++ b/sfx2/source/dialog/mgetempl.cxx @@ -65,6 +65,7 @@ SfxManageStyleSheetPage::SfxManageStyleSheetPage( Window* pParent, const SfxItem aNameFt ( this, SfxResId( FT_NAME ) ), aNameEd ( this, SfxResId( ED_NAME ) ), + aNameMLE ( this, SfxResId( MLE_NAME ) ), aAutoCB ( this, SfxResId( CB_AUTO ) ), aFollowFt ( this, SfxResId( FT_NEXT ) ), @@ -147,8 +148,17 @@ SfxManageStyleSheetPage::SfxManageStyleSheetPage( Window* pParent, const SfxItem } aNameEd.SetText(pStyle->GetName()); - if ( !pStyle->IsUserDefined() ) + // Set the field read-only if it is NOT an user-defined style + // but allow selecting and copying + if ( !pStyle->IsUserDefined() ) { aNameEd.SetReadOnly(); + aNameEd.Hide(); + + aNameMLE.SetControlBackground( GetSettings().GetStyleSettings().GetDialogColor() ); + aNameMLE.SetText( pStyle->GetName() ); + aNameMLE.EnableCursor( FALSE ); + aNameMLE.Show(); + } if ( pStyle->HasFollowSupport() && pPool ) { diff --git a/sfx2/source/dialog/mgetempl.hrc b/sfx2/source/dialog/mgetempl.hrc index e998baba939d..a34700846f9c 100644 --- a/sfx2/source/dialog/mgetempl.hrc +++ b/sfx2/source/dialog/mgetempl.hrc @@ -25,6 +25,7 @@ * ************************************************************************/ #define ED_NAME 2 +#define MLE_NAME 13 #define LB_NEXT 4 #define FT_BASE 5 #define LB_BASE 6 diff --git a/sfx2/source/dialog/mgetempl.src b/sfx2/source/dialog/mgetempl.src index f07d0873e454..c478ed715646 100644 --- a/sfx2/source/dialog/mgetempl.src +++ b/sfx2/source/dialog/mgetempl.src @@ -44,12 +44,22 @@ TabPage TP_MANAGE_STYLES }; Edit ED_NAME { + HelpID = "sfx2:Edit:TP_MANAGE_STYLES:ED_NAME"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 6 ) ; Size = MAP_APPFONT ( 184 , 12 ) ; }; + MultiLineEdit MLE_NAME + { + Pos = MAP_APPFONT ( 70 , 8 ) ; + Size = MAP_APPFONT ( 80 , 12 ) ; + Border = FALSE; + ReadOnly = TRUE; + Hide = TRUE; + }; CheckBox CB_AUTO { + HelpID = "sfx2:CheckBox:TP_MANAGE_STYLES:CB_AUTO"; Pos = MAP_APPFONT ( 164 , 8 ) ; Size = MAP_APPFONT ( 90 , 10 ) ; Hide = TRUE ; @@ -63,6 +73,7 @@ TabPage TP_MANAGE_STYLES }; ListBox LB_NEXT { + HelpID = "sfx2:ListBox:TP_MANAGE_STYLES:LB_NEXT"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 24 ) ; Size = MAP_APPFONT ( 184 , 65 ) ; @@ -79,6 +90,7 @@ TabPage TP_MANAGE_STYLES }; ListBox LB_BASE { + HelpID = "sfx2:ListBox:TP_MANAGE_STYLES:LB_BASE"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 42 ) ; Size = MAP_APPFONT ( 184 , 65 ) ; @@ -93,6 +105,7 @@ TabPage TP_MANAGE_STYLES }; ListBox LB_REGION { + HelpID = "sfx2:ListBox:TP_MANAGE_STYLES:LB_REGION"; Border = TRUE ; Pos = MAP_APPFONT ( 70 , 60 ) ; Size = MAP_APPFONT ( 184 , 64 ) ; @@ -107,6 +120,7 @@ TabPage TP_MANAGE_STYLES }; MultiLineEdit ED_DESC { + HelpID = "sfx2:MultiLineEdit:TP_MANAGE_STYLES:ED_DESC"; Pos = MAP_APPFONT ( 12 , 88 ) ; Size = MAP_APPFONT ( 236 , 85 ) ; ReadOnly = TRUE ; diff --git a/sfx2/source/dialog/newstyle.src b/sfx2/source/dialog/newstyle.src index fa5fa62a2ee4..b5954028779b 100644 --- a/sfx2/source/dialog/newstyle.src +++ b/sfx2/source/dialog/newstyle.src @@ -28,10 +28,11 @@ #include <sfx2/sfx.hrc> #include "dialog.hrc" #include "newstyle.hrc" +#include "sfx2/sfxcommands.h" ModalDialog DLG_NEW_STYLE_BY_EXAMPLE { - HelpId = SID_STYLE_NEW_BY_EXAMPLE ; + HelpId = CMD_SID_STYLE_NEW_BY_EXAMPLE ; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 177 , 112 ) ; @@ -45,6 +46,7 @@ ModalDialog DLG_NEW_STYLE_BY_EXAMPLE }; ComboBox LB_COL { + HelpID = "sfx2:ComboBox:DLG_NEW_STYLE_BY_EXAMPLE:LB_COL"; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 94 , 92 ) ; TabStop = TRUE ; diff --git a/sfx2/source/dialog/passwd.src b/sfx2/source/dialog/passwd.src index fc58ecfda219..79cbb382ad36 100644 --- a/sfx2/source/dialog/passwd.src +++ b/sfx2/source/dialog/passwd.src @@ -47,6 +47,7 @@ ModalDialog DLG_PASSWD }; Edit ED_PASSWD_USER { + HelpID = "sfx2:Edit:DLG_PASSWD:ED_PASSWD_USER"; Border = TRUE; Pos = MAP_APPFONT( 57, 14 ); Size = MAP_APPFONT( 75, 12 ); @@ -59,6 +60,7 @@ ModalDialog DLG_PASSWD }; Edit ED_PASSWD_PASSWORD { + HelpID = "sfx2:Edit:DLG_PASSWD:ED_PASSWD_PASSWORD"; Border = TRUE; PassWord = TRUE; Pos = MAP_APPFONT( 57, 29 ); @@ -72,6 +74,7 @@ ModalDialog DLG_PASSWD }; Edit ED_PASSWD_CONFIRM { + HelpID = "sfx2:Edit:DLG_PASSWD:ED_PASSWD_CONFIRM"; Border = TRUE; PassWord = TRUE; Pos = MAP_APPFONT( 57, 44 ); diff --git a/sfx2/source/dialog/printopt.src b/sfx2/source/dialog/printopt.src index 4217539a3af8..01650f3e9275 100644 --- a/sfx2/source/dialog/printopt.src +++ b/sfx2/source/dialog/printopt.src @@ -60,6 +60,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_PRINTEROUTPUT { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_PRINTEROUTPUT"; TabStop = TRUE; Pos = MAP_APPFONT ( 81, 14 ) ; Size = MAP_APPFONT ( 60, 10 ) ; @@ -67,6 +68,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_PRINTFILEOUTPUT { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_PRINTFILEOUTPUT"; TabStop = TRUE; Pos = MAP_APPFONT ( 142, 14 ) ; Size = MAP_APPFONT ( 100, 10 ) ; @@ -83,6 +85,7 @@ TabPage TP_COMMONPRINTOPTIONS CheckBox CB_REDUCETRANSPARENCY { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_REDUCETRANSPARENCY"; TabStop = TRUE; Pos = MAP_APPFONT ( 18, 38 ) ; Size = MAP_APPFONT ( 115, 10 ) ; @@ -90,6 +93,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCETRANSPARENCY_AUTO { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCETRANSPARENCY_AUTO"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 51 ) ; Size = MAP_APPFONT ( 105, 10 ) ; @@ -97,6 +101,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCETRANSPARENCY_NONE { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCETRANSPARENCY_NONE"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 64 ) ; Size = MAP_APPFONT ( 105, 10 ) ; @@ -107,6 +112,7 @@ TabPage TP_COMMONPRINTOPTIONS CheckBox CB_REDUCEGRADIENTS { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_REDUCEGRADIENTS"; TabStop = TRUE; Pos = MAP_APPFONT ( 136, 38 ) ; Size = MAP_APPFONT ( 121, 10 ) ; @@ -114,6 +120,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCEGRADIENTS_STRIPES { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCEGRADIENTS_STRIPES"; TabStop = TRUE; Pos = MAP_APPFONT ( 146, 51 ) ; Size = MAP_APPFONT ( 77, 10 ) ; @@ -121,6 +128,7 @@ TabPage TP_COMMONPRINTOPTIONS }; NumericField NF_REDUCEGRADIENTS_STEPCOUNT { + HelpID = "sfx2:NumericField:TP_COMMONPRINTOPTIONS:NF_REDUCEGRADIENTS_STEPCOUNT"; TabStop = TRUE; Border = TRUE ; Pos = MAP_APPFONT ( 224, 49 ) ; @@ -132,6 +140,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCEGRADIENTS_COLOR { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCEGRADIENTS_COLOR"; TabStop = TRUE; Pos = MAP_APPFONT ( 146, 64 ) ; Size = MAP_APPFONT ( 108, 10 ) ; @@ -142,6 +151,7 @@ TabPage TP_COMMONPRINTOPTIONS CheckBox CB_REDUCEBITMAPS { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_REDUCEBITMAPS"; TabStop = TRUE; Pos = MAP_APPFONT ( 18, 80 ) ; Size = MAP_APPFONT ( 115, 10 ) ; @@ -149,6 +159,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCEBITMAPS_OPTIMAL { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCEBITMAPS_OPTIMAL"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 93 ) ; Size = MAP_APPFONT ( 226, 10 ) ; @@ -156,6 +167,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCEBITMAPS_NORMAL { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCEBITMAPS_NORMAL"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 106 ) ; Size = MAP_APPFONT ( 226, 10 ) ; @@ -163,6 +175,7 @@ TabPage TP_COMMONPRINTOPTIONS }; RadioButton RB_REDUCEBITMAPS_RESOLUTION { + HelpID = "sfx2:RadioButton:TP_COMMONPRINTOPTIONS:RB_REDUCEBITMAPS_RESOLUTION"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 119 ) ; Size = MAP_APPFONT ( 52, 10 ) ; @@ -170,6 +183,7 @@ TabPage TP_COMMONPRINTOPTIONS }; ListBox LB_REDUCEBITMAPS_RESOLUTION { + HelpID = "sfx2:ListBox:TP_COMMONPRINTOPTIONS:LB_REDUCEBITMAPS_RESOLUTION"; TabStop = TRUE; Border = TRUE ; Pos = MAP_APPFONT ( 81, 117 ) ; @@ -188,6 +202,7 @@ TabPage TP_COMMONPRINTOPTIONS }; CheckBox CB_REDUCEBITMAPS_TRANSPARENCY { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_REDUCEBITMAPS_TRANSPARENCY"; TabStop = TRUE; Pos = MAP_APPFONT ( 28, 132 ) ; Size = MAP_APPFONT ( 226, 10 ) ; @@ -198,6 +213,7 @@ TabPage TP_COMMONPRINTOPTIONS CheckBox CB_CONVERTTOGREYSCALES { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_CONVERTTOGREYSCALES"; TabStop = TRUE; Pos = MAP_APPFONT ( 136, 80 ) ; Size = MAP_APPFONT ( 123, 10 ) ; @@ -214,6 +230,7 @@ TabPage TP_COMMONPRINTOPTIONS }; CheckBox CB_PAPERSIZE { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_PAPERSIZE"; TabStop = TRUE; Pos = MAP_APPFONT ( 12, 159 ) ; Size = MAP_APPFONT ( 123, 10 ) ; @@ -221,6 +238,7 @@ TabPage TP_COMMONPRINTOPTIONS }; CheckBox CB_PAPERORIENTATION { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_PAPERORIENTATION"; TabStop = TRUE; Pos = MAP_APPFONT ( 12, 172 ) ; Size = MAP_APPFONT ( 123 , 10 ) ; @@ -228,6 +246,7 @@ TabPage TP_COMMONPRINTOPTIONS }; CheckBox CB_TRANSPARENCY { + HelpID = "sfx2:CheckBox:TP_COMMONPRINTOPTIONS:CB_TRANSPARENCY"; TabStop = TRUE; Pos = MAP_APPFONT ( 136, 159 ) ; Size = MAP_APPFONT ( 123, 10 ) ; @@ -241,6 +260,7 @@ TabPage TP_COMMONPRINTOPTIONS ModalDialog RID_WARN_PRINTTRANSPARENCY { + HelpID = "sfx2:ModalDialog:RID_WARN_PRINTTRANSPARENCY"; OutputSize = TRUE ; Size = MAP_APPFONT ( 195 , 85 ) ; Text [ en-US ] = "Warning" ; @@ -266,6 +286,7 @@ ModalDialog RID_WARN_PRINTTRANSPARENCY }; PushButton BTN_PRINTTRANS_NO { + HelpID = "sfx2:PushButton:RID_WARN_PRINTTRANSPARENCY:BTN_PRINTTRANS_NO"; Pos = MAP_APPFONT ( 68 , 48 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~No" ; @@ -278,6 +299,7 @@ ModalDialog RID_WARN_PRINTTRANSPARENCY }; CheckBox CBX_NOPRINTTRANSWARN { + HelpID = "sfx2:CheckBox:RID_WARN_PRINTTRANSPARENCY:CBX_NOPRINTTRANSWARN"; Pos = MAP_APPFONT ( 6 , 68 ) ; Size = MAP_APPFONT ( 183 , 10 ) ; Text [ en-US ] = "~Do not show warning again" ; diff --git a/sfx2/source/dialog/recfloat.src b/sfx2/source/dialog/recfloat.src index 5bdde1f57ab6..d71270d1e312 100644 --- a/sfx2/source/dialog/recfloat.src +++ b/sfx2/source/dialog/recfloat.src @@ -34,6 +34,7 @@ FloatingWindow SID_RECORDING_FLOATWINDOW { + HelpID = "sfx2:FloatingWindow:SID_RECORDING_FLOATWINDOW"; Moveable = TRUE ; Closeable = TRUE ; Hide = TRUE ; diff --git a/sfx2/source/dialog/srchdlg.src b/sfx2/source/dialog/srchdlg.src index 0947f3932981..d1cee69e9157 100644 --- a/sfx2/source/dialog/srchdlg.src +++ b/sfx2/source/dialog/srchdlg.src @@ -52,6 +52,7 @@ ModelessDialog RID_DLG_SEARCH }; ComboBox ED_SEARCH { + HelpID = "sfx2:ComboBox:RID_DLG_SEARCH:ED_SEARCH"; Border = TRUE; Pos = MAP_APPFONT( 6, 14 ); Size = MAP_APPFONT( 150, 50 ); @@ -60,6 +61,7 @@ ModelessDialog RID_DLG_SEARCH }; CheckBox CB_WHOLEWORDS { + HelpID = "sfx2:CheckBox:RID_DLG_SEARCH:CB_WHOLEWORDS"; Pos = MAP_APPFONT( 6, 29 ); Size = MAP_APPFONT( 150, 10 ); Text [ en-US ] = "~Whole words only" ; @@ -67,6 +69,7 @@ ModelessDialog RID_DLG_SEARCH }; CheckBox CB_MATCHCASE { + HelpID = "sfx2:CheckBox:RID_DLG_SEARCH:CB_MATCHCASE"; Pos = MAP_APPFONT( 6, 42 ); Size = MAP_APPFONT( 150, 10 ); Text[ en-US ] = "~Match case"; @@ -74,6 +77,7 @@ ModelessDialog RID_DLG_SEARCH }; CheckBox CB_WRAPAROUND { + HelpID = "sfx2:CheckBox:RID_DLG_SEARCH:CB_WRAPAROUND"; Pos = MAP_APPFONT( 6, 55 ); Size = MAP_APPFONT( 150, 10 ); Text [ en-US ] = "Wrap ~around" ; @@ -81,6 +85,7 @@ ModelessDialog RID_DLG_SEARCH }; CheckBox CB_BACKWARDS { + HelpID = "sfx2:CheckBox:RID_DLG_SEARCH:CB_BACKWARDS"; Pos = MAP_APPFONT( 6, 68 ); Size = MAP_APPFONT( 150, 10 ); Text [ en-US ] = "~Backwards" ; @@ -88,6 +93,7 @@ ModelessDialog RID_DLG_SEARCH }; PushButton PB_FIND { + HelpID = "sfx2:PushButton:RID_DLG_SEARCH:PB_FIND"; Pos = MAP_APPFONT( 162, 6 ); Size = MAP_APPFONT( 50, 14 ); Text [ en-US ] = "~Find" ; diff --git a/sfx2/source/dialog/tabdlg.cxx b/sfx2/source/dialog/tabdlg.cxx index 93c2e0e09595..3c7a58cd09f9 100644 --- a/sfx2/source/dialog/tabdlg.cxx +++ b/sfx2/source/dialog/tabdlg.cxx @@ -1780,15 +1780,15 @@ long SfxTabDialog::Notify( NotifyEvent& rNEvt ) if ( pViewFrame ) { Window* pWindow = rNEvt.GetWindow(); - ULONG nHelpId = 0; - while ( !nHelpId && pWindow ) + rtl::OString sHelpId; + while ( !sHelpId.getLength() && pWindow ) { - nHelpId = pWindow->GetHelpId(); + sHelpId = pWindow->GetHelpId(); pWindow = pWindow->GetParent(); } - if ( nHelpId ) - SfxHelp::OpenHelpAgent( &pViewFrame->GetFrame(), nHelpId ); + if ( sHelpId.getLength() ) + SfxHelp::OpenHelpAgent( &pViewFrame->GetFrame(), sHelpId ); } } diff --git a/sfx2/source/dialog/taskpane.cxx b/sfx2/source/dialog/taskpane.cxx index 30fe2460d512..1c2faac4e8a3 100644 --- a/sfx2/source/dialog/taskpane.cxx +++ b/sfx2/source/dialog/taskpane.cxx @@ -60,7 +60,7 @@ #include <vcl/menu.hxx> #include <vcl/svapp.hxx> #include <toolkit/helper/vclunohelper.hxx> - +#include <tools/urlobj.hxx> #include <boost/noncopyable.hpp> //...................................................................................................................... @@ -310,7 +310,7 @@ namespace sfx2 virtual ::rtl::OUString GetDisplayName() const; virtual Image GetImage() const; - virtual SmartId GetHelpID() const; + virtual rtl::OString GetHelpID() const; virtual void Activate( Window& i_rParentWindow ); virtual void Deactivate(); virtual void SetSizePixel( const Size& i_rPanelWindowSize ); @@ -409,10 +409,19 @@ namespace sfx2 return m_aPanelImage; } + static rtl::OString lcl_getHelpId( const ::rtl::OUString& _rHelpURL ) + { + INetURLObject aHID( _rHelpURL ); + if ( aHID.GetProtocol() == INET_PROT_HID ) + return rtl::OUStringToOString( aHID.GetURLPath(), RTL_TEXTENCODING_UTF8 ); + else + return rtl::OUStringToOString( _rHelpURL, RTL_TEXTENCODING_UTF8 ); + } + //------------------------------------------------------------------------------------------------------------------ - SmartId CustomToolPanel::GetHelpID() const + rtl::OString CustomToolPanel::GetHelpID() const { - return SmartId( m_aPanelHelpURL ); + return lcl_getHelpId( m_aPanelHelpURL ); } //------------------------------------------------------------------------------------------------------------------ diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx index 9edeb05b43ac..88801d95f0d5 100644 --- a/sfx2/source/dialog/templdlg.cxx +++ b/sfx2/source/dialog/templdlg.cxx @@ -756,7 +756,7 @@ SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Sfx DEFINE_CONST_UNICODE("com.sun.star.frame.ModuleManager") ), UNO_QUERY ), pbDeleted ( NULL ), - aFmtLb ( this, WB_BORDER | WB_TABSTOP | WB_SORT ), + aFmtLb ( this, WB_BORDER | WB_TABSTOP | WB_SORT | WB_QUICK_SEARCH ), aFilterLb ( pW, WB_BORDER | WB_DROPDOWN | WB_TABSTOP ), nActFamily ( 0xffff ), @@ -780,7 +780,7 @@ SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Sfx { aFmtLb.SetHelpId( HID_TEMPLATE_FMT ); aFilterLb.SetHelpId( HID_TEMPLATE_FILTER ); - aFmtLb.SetWindowBits( WB_SORT | WB_HIDESELECTION ); + aFmtLb.SetStyle( aFmtLb.GetStyle() | WB_SORT | WB_HIDESELECTION ); Font aFont = aFmtLb.GetFont(); aFont.SetWeight( WEIGHT_NORMAL ); aFmtLb.SetFont( aFont ); @@ -823,7 +823,7 @@ SfxCommonTemplateDialog_Impl::SfxCommonTemplateDialog_Impl( SfxBindings* pB, Mod bBindingUpdate ( TRUE ) { - aFmtLb.SetWindowBits( WB_SORT ); + aFmtLb.SetStyle( aFmtLb.GetStyle() | WB_SORT ); } //------------------------------------------------------------------------- @@ -1776,7 +1776,7 @@ IMPL_LINK( SfxCommonTemplateDialog_Impl, FilterSelectHdl, ListBox *, pBox ) pTreeBox = new StyleTreeListBox_Impl( this, WB_HASBUTTONS | WB_HASLINES | WB_BORDER | WB_TABSTOP | WB_HASLINESATROOT | - WB_HASBUTTONSATROOT | WB_HIDESELECTION ); + WB_HASBUTTONSATROOT | WB_HIDESELECTION | WB_QUICK_SEARCH ); pTreeBox->SetFont( aFmtLb.GetFont() ); pTreeBox->SetPosSizePixel(aFmtLb.GetPosPixel(), aFmtLb.GetSizePixel()); @@ -2208,32 +2208,6 @@ IMPL_LINK( SfxCommonTemplateDialog_Impl, FmtSelectHdl, SvTreeListBox *, pListBox // HilfePI antriggern, wenn von Call als Handler und Bereich erlaubt ist if( !pListBox || pListBox->IsSelected( pListBox->GetHdlEntry() ) ) { -#ifdef WIR_KOENNEN_WIEDER_HILFE_FUER_STYLESHEETS - SfxHelpPI* pHelpPI = SFX_APP()->GetHelpPI(); - if ( pHelpPI && pListBox && IsInitialized() && - GetSelectedEntry().Len() ) - { - const SfxStyleFamilyItem *pItem = GetFamilyItem_Impl(); - const SfxStyleFamily eFam = pItem->GetFamily(); - DBG_ASSERT(pStyleSheetPool, "Kein Pool"); - // SfxStyleSheetBase* pStyle = pStyleSheetPool - // ? pStyleSheetPool->Find( GetSelectedEntry(), eFam ) : 0; - SfxStyleSheetBase *pStyle; - if ( pStyleSheetPool ) - pStyle = pStyleSheetPool->Find ( GetSelectedEntry(), eFam ); - else - pStyle = 0; - - if ( pStyle ) - { - String aHelpFile; - ULONG nHelpId=pStyle->GetHelpId(aHelpFile); - if ( nHelpId ) - pHelpPI->LoadTopic( nHelpId ); - } - } -#endif - // nur, wenn Giesskanne an ist if ( IsInitialized() && IsCheckedItem(SID_STYLE_WATERCAN) && @@ -2373,18 +2347,18 @@ void SfxTemplateDialog_Impl::EnableFamilyItem( USHORT nId, BOOL bEnable ) void SfxTemplateDialog_Impl::InsertFamilyItem(USHORT nId,const SfxStyleFamilyItem *pItem) { - USHORT nHelpId = 0; + rtl::OString sHelpId; switch( (USHORT) pItem->GetFamily() ) { - case SFX_STYLE_FAMILY_CHAR: nHelpId = SID_STYLE_FAMILY1; break; - case SFX_STYLE_FAMILY_PARA: nHelpId = SID_STYLE_FAMILY2; break; - case SFX_STYLE_FAMILY_FRAME:nHelpId = SID_STYLE_FAMILY3; break; - case SFX_STYLE_FAMILY_PAGE: nHelpId = SID_STYLE_FAMILY4; break; - case SFX_STYLE_FAMILY_PSEUDO: nHelpId = SID_STYLE_FAMILY5; break; - default: DBG_ERROR("unbekannte StyleFamily"); break; + case SFX_STYLE_FAMILY_CHAR: sHelpId = ".uno:CharStyle"; break; + case SFX_STYLE_FAMILY_PARA: sHelpId = ".uno:ParaStyle"; break; + case SFX_STYLE_FAMILY_FRAME: sHelpId = ".uno:FrameStyle"; break; + case SFX_STYLE_FAMILY_PAGE: sHelpId = ".uno:PageStyle"; break; + case SFX_STYLE_FAMILY_PSEUDO: sHelpId = ".uno:ListStyle"; break; + default: DBG_ERROR("unknown StyleFamily"); break; } m_aActionTbL.InsertItem( nId, pItem->GetImage(), pItem->GetText(), 0, 0); - m_aActionTbL.SetHelpId( nId, nHelpId ); + m_aActionTbL.SetHelpId( nId, sHelpId ); } // ------------------------------------------------------------------------ @@ -2694,7 +2668,7 @@ IMPL_LINK( SfxTemplateDialog_Impl, ToolBoxRClick, ToolBox *, pBox ) aCommand = xUICommands->getByName(::rtl::OUString::createFromAscii(".uno:LoadStyles")); sLabel = lcl_GetLabel( aCommand ); pMenu->InsertItem( SID_TEMPLATE_LOAD, sLabel ); - pMenu->SetHelpId(SID_TEMPLATE_LOAD, SID_TEMPLATE_LOAD); + pMenu->SetHelpId(SID_TEMPLATE_LOAD, ".uno:LoadStyles"); pMenu->SetSelectHdl(LINK(this, SfxTemplateDialog_Impl, MenuSelectHdl)); pMenu->Execute( pBox, diff --git a/sfx2/source/dialog/templdlg.src b/sfx2/source/dialog/templdlg.src index a4adcd77b6d3..60979450d9f6 100644 --- a/sfx2/source/dialog/templdlg.src +++ b/sfx2/source/dialog/templdlg.src @@ -57,7 +57,7 @@ ImageList IMG_LST_STYLE_DESIGNER_HC // RID_STYLECATALOG ------------------------------------------------------ ModalDialog RID_STYLECATALOG { - HelpId = SID_STYLE_CATALOG ; + HelpId = CMD_SID_STYLE_CATALOG ; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 181 , 134 ) ; @@ -78,6 +78,7 @@ ModalDialog RID_STYLECATALOG }; PushButton BT_ORG { + HelpID = "sfx2:PushButton:RID_STYLECATALOG:BT_ORG"; Pos = MAP_APPFONT ( 123 , 97 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Organizer..." ; @@ -85,6 +86,7 @@ ModalDialog RID_STYLECATALOG }; PushButton BT_DEL { + HelpID = "sfx2:PushButton:RID_STYLECATALOG:BT_DEL"; Pos = MAP_APPFONT ( 123 , 78 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Delete..." ; @@ -92,6 +94,7 @@ ModalDialog RID_STYLECATALOG }; PushButton BT_EDIT { + HelpID = "sfx2:PushButton:RID_STYLECATALOG:BT_EDIT"; Pos = MAP_APPFONT ( 123 , 60 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Modify..." ; @@ -99,6 +102,7 @@ ModalDialog RID_STYLECATALOG }; PushButton BT_NEW { + HelpID = "sfx2:PushButton:RID_STYLECATALOG:BT_NEW"; Pos = MAP_APPFONT ( 123 , 43 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~New..." ; @@ -112,6 +116,7 @@ ModalDialog RID_STYLECATALOG }; ListBox BT_TOOL { + HelpID = "sfx2:ListBox:RID_STYLECATALOG:BT_TOOL"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 6 ) ; Size = MAP_APPFONT ( 110 , 55 ) ; @@ -128,6 +133,7 @@ ModalDialog RID_STYLECATALOG }; ListBox BT_FLIST { + HelpID = "sfx2:ListBox:RID_STYLECATALOG:BT_FLIST"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 114 ) ; Size = MAP_APPFONT ( 110 , 77 ) ; @@ -146,7 +152,7 @@ DockingWindow DLG_STYLE_DESIGNER { Text [ en-US ] = "Styles and Formatting" ; - HelpId = SID_STYLE_DESIGNER ; + HelpId = CMD_SID_STYLE_DESIGNER ; OutputSize = TRUE ; Hide = TRUE ; SVLook = TRUE ; diff --git a/sfx2/source/dialog/titledockwin.cxx b/sfx2/source/dialog/titledockwin.cxx index 4be0948d8047..680880229324 100644 --- a/sfx2/source/dialog/titledockwin.cxx +++ b/sfx2/source/dialog/titledockwin.cxx @@ -256,7 +256,7 @@ namespace sfx2 } //------------------------------------------------------------------------------------------------------------------ - USHORT TitledDockingWindow::impl_addDropDownToolBoxItem( const String& i_rItemText, ULONG i_nHelpId, const Link& i_rCallback ) + USHORT TitledDockingWindow::impl_addDropDownToolBoxItem( const String& i_rItemText, const rtl::OString& i_nHelpId, const Link& i_rCallback ) { // Add the menu before the closer button. const USHORT nItemCount( m_aToolbox.GetItemCount() ); diff --git a/sfx2/source/dialog/versdlg.cxx b/sfx2/source/dialog/versdlg.cxx index beb43c192810..8e440de0757c 100644 --- a/sfx2/source/dialog/versdlg.cxx +++ b/sfx2/source/dialog/versdlg.cxx @@ -239,7 +239,7 @@ SfxVersionDialog::SfxVersionDialog ( SfxViewFrame* pVwFrame, BOOL bIsSaveVersion aVersionBox.SetDoubleClickHdl( LINK( this, SfxVersionDialog, DClickHdl_Impl ) ); aVersionBox.GrabFocus(); - aVersionBox.SetWindowBits( WB_HSCROLL | WB_CLIPCHILDREN ); + aVersionBox.SetStyle( aVersionBox.GetStyle() | WB_HSCROLL | WB_CLIPCHILDREN ); aVersionBox.SetSelectionMode( SINGLE_SELECTION ); aVersionBox.SetTabs( &nTabs_Impl[0], MAP_APPFONT ); aVersionBox.Resize(); // OS: Hack fuer richtige Selektion diff --git a/sfx2/source/dialog/versdlg.src b/sfx2/source/dialog/versdlg.src index 60aeb2777542..927c940e6506 100644 --- a/sfx2/source/dialog/versdlg.src +++ b/sfx2/source/dialog/versdlg.src @@ -28,6 +28,7 @@ #include "versdlg.hrc" ModalDialog DLG_VERSIONS { + HelpID = "sfx2:ModalDialog:DLG_VERSIONS"; OutputSize = TRUE ; Size = MAP_APPFONT ( 340 , 184 ) ; SvLook = TRUE ; @@ -41,6 +42,7 @@ ModalDialog DLG_VERSIONS }; PushButton PB_SAVE { + HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_SAVE"; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 90 , 14 ) ; TabStop = TRUE ; @@ -48,6 +50,7 @@ ModalDialog DLG_VERSIONS }; CheckBox CB_SAVEONCLOSE { + HelpID = "sfx2:CheckBox:DLG_VERSIONS:CB_SAVEONCLOSE"; Pos = MAP_APPFONT ( 108 , 16 ) ; Size = MAP_APPFONT ( 164 , 10 ) ; TabStop = TRUE ; @@ -93,6 +96,7 @@ ModalDialog DLG_VERSIONS }; PushButton PB_OPEN { + HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_OPEN"; Pos = MAP_APPFONT ( 284 , 26 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -100,6 +104,7 @@ ModalDialog DLG_VERSIONS }; PushButton PB_VIEW { + HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_VIEW"; Pos = MAP_APPFONT ( 284 , 43 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -108,6 +113,7 @@ ModalDialog DLG_VERSIONS }; PushButton PB_DELETE { + HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_DELETE"; Pos = MAP_APPFONT ( 284 , 60 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -115,6 +121,7 @@ ModalDialog DLG_VERSIONS }; PushButton PB_COMPARE { + HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_COMPARE"; Pos = MAP_APPFONT ( 284 , 77 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -130,6 +137,7 @@ ModalDialog DLG_VERSIONS }; ModalDialog DLG_COMMENTS { + HelpID = "sfx2:ModalDialog:DLG_COMMENTS"; OutputSize = TRUE ; Size = MAP_APPFONT ( 180 , 118 ) ; SvLook = TRUE ; @@ -148,6 +156,7 @@ ModalDialog DLG_COMMENTS }; MultiLineEdit ME_VERSIONS { + HelpID = "sfx2:MultiLineEdit:DLG_COMMENTS:ME_VERSIONS"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 32 ) ; Size = MAP_APPFONT ( 168 , 60 ) ; @@ -168,6 +177,7 @@ ModalDialog DLG_COMMENTS }; PushButton PB_CLOSE { + HelpID = "sfx2:PushButton:DLG_COMMENTS:PB_CLOSE"; Pos = MAP_APPFONT ( 68 , 98 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; diff --git a/sfx2/source/doc/applet.cxx b/sfx2/source/doc/applet.cxx deleted file mode 100644 index 844eb5726b1a..000000000000 --- a/sfx2/source/doc/applet.cxx +++ /dev/null @@ -1,383 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sfx2.hxx" - -#include "applet.hxx" -#include <sfx2/sfxdlg.hxx> -#include <sfx2/sfxsids.hrc> - -#include "com/sun/star/uno/XComponentContext.hpp" -#include "cppuhelper/factory.hxx" -#include <tools/urlobj.hxx> -#include <tools/debug.hxx> -#include <sj2/sjapplet.hxx> -#include <vcl/syschild.hxx> -#include <rtl/ustring.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <unotools/javaoptions.hxx> -#include <svtools/miscopt.hxx> -#include <comphelper/TypeGeneration.hxx> - -using namespace ::com::sun::star; -using namespace ::comphelper; - -namespace sfx2 -{ -class AppletWindow_Impl : public SystemChildWindow -{ -public: - SjApplet2* pApplet; - AppletWindow_Impl( Window* pParent, SjApplet2* pApp ) - : SystemChildWindow( pParent, WB_CLIPCHILDREN ) - , pApplet(pApp) - {} - - virtual void Resize(); -}; - -void AppletWindow_Impl::Resize() -{ - Size aSize( GetOutputSizePixel() ); - if ( pApplet ) - pApplet->setSizePixel( aSize ); -} - -class AppletWrapper_Impl : public SjApplet2 -{ - virtual void appletResize( const Size & ); - virtual void showDocument( const INetURLObject &, const XubString & ); - virtual void showStatus( const XubString & ); -}; - -void AppletWrapper_Impl::appletResize( const Size & ) {} -void AppletWrapper_Impl::showDocument( const INetURLObject &, const XubString & ) {} -void AppletWrapper_Impl::showStatus( const XubString & ) {} - -#define PROPERTY_UNBOUND 0 -#define PROPERTY_MAYBEVOID ::com::sun::star::beans::PropertyAttribute::MAYBEVOID - -#define WID_APPLET_CODE 1 -#define WID_APPLET_CODEBASE 2 -#define WID_APPLET_COMMANDS 3 -#define WID_APPLET_DOCBASE 4 -#define WID_APPLET_ISSCRIPT 5 -#define WID_APPLET_NAME 6 -const SfxItemPropertyMapEntry* lcl_GetAppletPropertyMap_Impl() -{ - static SfxItemPropertyMapEntry aAppletPropertyMap_Impl[] = - { - { MAP_CHAR_LEN("AppletCode") , WID_APPLET_CODE , CPPU_E2T(CPPUTYPE_OUSTRING), PROPERTY_UNBOUND, 0 }, - { MAP_CHAR_LEN("AppletCodeBase"), WID_APPLET_CODEBASE , CPPU_E2T(CPPUTYPE_OUSTRING), PROPERTY_UNBOUND, 0 }, - { MAP_CHAR_LEN("AppletCommands"), WID_APPLET_COMMANDS , CPPU_E2T(CPPUTYPE_PROPERTYVALUE), PROPERTY_UNBOUND, 0 }, - { MAP_CHAR_LEN("AppletDocBase"), WID_APPLET_DOCBASE , CPPU_E2T(CPPUTYPE_OUSTRING), PROPERTY_UNBOUND, 0 }, - { MAP_CHAR_LEN("AppletIsScript"), WID_APPLET_ISSCRIPT , CPPU_E2T(CPPUTYPE_BOOLEAN), PROPERTY_UNBOUND, 0 }, - { MAP_CHAR_LEN("AppletName") , WID_APPLET_NAME , CPPU_E2T(CPPUTYPE_OUSTRING), PROPERTY_UNBOUND, 0 }, - {0,0,0,0,0,0} - }; -return aAppletPropertyMap_Impl; -} - -::rtl::OUString AppletObject::getImplementationName() - throw( ::com::sun::star::uno::RuntimeException ) -{ - return impl_getStaticImplementationName(); -} - -::sal_Bool AppletObject::supportsService( const ::rtl::OUString& sServiceName ) - throw( ::com::sun::star::uno::RuntimeException ) -{ - ::com::sun::star::uno::Sequence< ::rtl::OUString > seqServiceNames = - getSupportedServiceNames(); - const ::rtl::OUString* pArray = seqServiceNames.getConstArray(); - for ( ::sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); - nCounter++ ) - { - if ( pArray[nCounter] == sServiceName ) - { - return sal_True ; - } - } - return sal_False ; -} - -::com::sun::star::uno::Sequence< ::rtl::OUString > -AppletObject::getSupportedServiceNames() - throw( ::com::sun::star::uno::RuntimeException ) -{ - return impl_getStaticSupportedServiceNames(); -} - -::com::sun::star::uno::Sequence< ::rtl::OUString > -AppletObject::impl_getStaticSupportedServiceNames() -{ - ::com::sun::star::uno::Sequence< ::rtl::OUString > seqServiceNames( 1 ); - seqServiceNames.getArray() [0] = ::rtl::OUString::createFromAscii( - "com.sun.star.embed.SpecialEmbeddedObject" ); - return seqServiceNames ; -} - -::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > -AppletObject::impl_createInstance( - const ::com::sun::star::uno::Reference< - ::com::sun::star::uno::XComponentContext >& xContext ) - throw( ::com::sun::star::uno::Exception ) -{ - return static_cast< ::cppu::OWeakObject * >( new AppletObject( xContext ) ); -} - -::rtl::OUString AppletObject::impl_getStaticImplementationName() -{ - return ::rtl::OUString::createFromAscii( - "com.sun.star.comp.sfx2.AppletObject" ); -} - -::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > -AppletObject::impl_createFactory() -{ - return uno::Reference< uno::XInterface >( - cppu::createSingleComponentFactory( - impl_createInstance, impl_getStaticImplementationName(), - impl_getStaticSupportedServiceNames() ), - uno::UNO_QUERY_THROW ); -} - -AppletObject::AppletObject( - const uno::Reference < uno::XComponentContext >& rContext ) - : mxContext( rContext ) - , maPropMap( lcl_GetAppletPropertyMap_Impl() ) - , mpApplet( NULL ) - , mbMayScript( FALSE ) -{ -} - -AppletObject::~AppletObject() -{ -} - -void SAL_CALL AppletObject::initialize( const uno::Sequence< uno::Any >& aArguments ) throw ( uno::Exception, uno::RuntimeException ) -{ - if ( aArguments.getLength() ) - aArguments[0] >>= mxObj; -} - -sal_Bool SAL_CALL AppletObject::load( - const uno::Sequence < com::sun::star::beans::PropertyValue >& /*lDescriptor*/, - const uno::Reference < frame::XFrame >& xFrame ) -throw( uno::RuntimeException ) -{ - if ( SvtJavaOptions().IsExecuteApplets() && SvtMiscOptions().IsPluginsEnabled() ) - { - mpApplet = new AppletWrapper_Impl; - - Window* pParent = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); - Window* pWin = new AppletWindow_Impl( pParent, mpApplet ); - pWin->SetBackground(); - pWin->Show(); - - // aCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "width" ) ), String( aPosSize.GetWidth() ) ); - // aCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "height" ) ), String( aPosSize.GetHeight() ) ); - - if( maName.getLength() ) - maCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "name" ) ), maName ); - - if( maCodeBase.getLength() ) - { - for ( sal_uInt32 nParams=0; nParams<maCmdList.Count(); nParams++ ) - { - if ( maCmdList[nParams].GetCommand().EqualsAscii("codebase") ) - { - maCmdList.Remove(nParams); - break; - } - } - - maCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "codebase" ) ), maCodeBase ); - } - - if( maClass.getLength() ) - maCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "code" ) ), maClass ); - - if( mbMayScript ) - maCmdList.Append( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "mayscript" ) ), String() ); - - INetURLObject aDocBase( maDocBase ); - mpApplet->Init( mxContext, pWin, aDocBase, maCmdList ); - uno::Reference < awt::XWindow > xWindow( pWin->GetComponentInterface(), uno::UNO_QUERY ); - - // we must destroy the applet before the parent is destroyed - xWindow->addEventListener( this ); - - xFrame->setComponent( xWindow, uno::Reference < frame::XController >() ); - return TRUE; - } - - return FALSE; -} - -void SAL_CALL AppletObject::cancel() throw( com::sun::star::uno::RuntimeException ) -{ - if ( mpApplet ) - { - mpApplet->appletClose(); // reparenting window - DELETEZ( mpApplet ); - } -} - -void SAL_CALL AppletObject::close( sal_Bool /*bDeliverOwnership*/ ) throw( com::sun::star::util::CloseVetoException, com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::addCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& ) throw( com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::removeCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& ) throw( com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::disposing( const com::sun::star::lang::EventObject& ) throw (com::sun::star::uno::RuntimeException) -{ - cancel(); -} - -uno::Reference< beans::XPropertySetInfo > SAL_CALL AppletObject::getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException ) -{ - static uno::Reference< beans::XPropertySetInfo > xInfo = new SfxItemPropertySetInfo( &maPropMap ); - return xInfo; -} - -void SAL_CALL AppletObject::setPropertyValue(const ::rtl::OUString& aPropertyName, const uno::Any& aAny) - throw ( beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - - const SfxItemPropertySimpleEntry* pEntry = maPropMap.getByName( aPropertyName ); - if( !pEntry ) - throw beans::UnknownPropertyException(); - switch( pEntry->nWID ) - { - case WID_APPLET_CODE : - aAny >>= maClass; - break; - case WID_APPLET_CODEBASE : - //pImpl->aCodeBase = rURL.GetMainURL( INetURLObject::NO_DECODE ); - //if( rURL.GetProtocol() == INET_PROT_FILE - // && pImpl->aCodeBase.GetChar( 9 ) == INET_ENC_DELIM_TOKEN ) - // // Laufwerksbuchstabe auf ':' patchen - // pImpl->aCodeBase.SetChar( 9, INET_DELIM_TOKEN ); - - aAny >>= maCodeBase; - break; - case WID_APPLET_COMMANDS : - { - maCmdList.Clear(); - uno::Sequence < beans::PropertyValue > aCommandSequence; - if( aAny >>= aCommandSequence ) - maCmdList.FillFromSequence( aCommandSequence ); - } - break; - case WID_APPLET_DOCBASE : - aAny >>= maDocBase; - break; - case WID_APPLET_ISSCRIPT : - aAny >>= mbMayScript; - break; - case WID_APPLET_NAME : - aAny >>= maName; - break; - default:; - - } -} - -uno::Any SAL_CALL AppletObject::getPropertyValue(const ::rtl::OUString& aPropertyName) throw ( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - uno::Any aAny; - const SfxItemPropertySimpleEntry* pEntry = maPropMap.getByName( aPropertyName ); - if( !pEntry ) - throw beans::UnknownPropertyException(); - switch( pEntry->nWID ) - { - case WID_APPLET_CODE : - aAny <<= maClass; - break; - case WID_APPLET_CODEBASE : - aAny <<= maCodeBase; - break; - case WID_APPLET_COMMANDS : - { - uno::Sequence< beans::PropertyValue > aCommandSequence; - maCmdList.FillSequence( aCommandSequence ); - aAny <<= aCommandSequence; - } - break; - case WID_APPLET_DOCBASE : - break; - case WID_APPLET_ISSCRIPT : - aAny <<= mbMayScript; - break; - case WID_APPLET_NAME : - aAny <<= maName; - break; - default:; - - } - return aAny; -} - -void SAL_CALL AppletObject::addPropertyChangeListener(const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & ) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::removePropertyChangeListener(const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & ) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::addVetoableChangeListener(const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & ) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL AppletObject::removeVetoableChangeListener(const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & ) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -::sal_Int16 SAL_CALL AppletObject::execute() throw (::com::sun::star::uno::RuntimeException) -{ - SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); - uno::Reference < beans::XPropertySet > xSet( this ); - VclAbstractDialog* pDlg = pFact->CreateEditObjectDialog( NULL, SID_INSERT_APPLET, mxObj ); - if ( pDlg ) - pDlg->Execute(); - return 0; -} - -void SAL_CALL AppletObject::setTitle( const ::rtl::OUString& ) throw (::com::sun::star::uno::RuntimeException) -{ -} - -} diff --git a/sfx2/source/doc/doc.hrc b/sfx2/source/doc/doc.hrc index 838168e64526..7e8fd688af52 100644 --- a/sfx2/source/doc/doc.hrc +++ b/sfx2/source/doc/doc.hrc @@ -44,7 +44,6 @@ #define STR_NOSTARTPRINTER (RID_SFX_DOC_START+ 8) #define MSG_CONFIRM_FILTER (RID_SFX_DOC_START+11) #define MSG_CONFIRM_OVERWRITE_TEMPLATE (RID_SFX_DOC_START+12) -#define MSG_QUERY_LOAD_TEMPLATE (RID_SFX_DOC_START+13) #define STR_DELETE_REGION (RID_SFX_DOC_START+14) #define STR_DELETE_TEMPLATE (RID_SFX_DOC_START+15) diff --git a/sfx2/source/doc/doc.src b/sfx2/source/doc/doc.src index d17b62c9b52a..497d4ccd7c97 100644 --- a/sfx2/source/doc/doc.src +++ b/sfx2/source/doc/doc.src @@ -43,14 +43,6 @@ QueryBox MSG_CONFIRM_OVERWRITE_TEMPLATE DefButton = WB_DEF_NO ; Message [ en-US ] = "Name already in use.\nDo you want to overwrite document template?" ; }; -QueryBox MSG_QUERY_LOAD_TEMPLATE -{ - BUTTONS = WB_YES_NO ; - DEFBUTTON = WB_DEF_NO ; - HelpId = MSG_QUERY_LOAD_TEMPLATE; - - Message [ en-US ] = "The Styles in this document do not match your current Styles. Should your current Styles be applied to this document?"; -}; String STR_DELETE_REGION { Text [ en-US ] = "Are you sure you want to delete the region \"$1\"?" ; diff --git a/sfx2/source/doc/doctdlg.src b/sfx2/source/doc/doctdlg.src index 91d966fbd2d5..1b50fd56c55e 100644 --- a/sfx2/source/doc/doctdlg.src +++ b/sfx2/source/doc/doctdlg.src @@ -28,10 +28,11 @@ #include <sfx2/sfx.hrc> #include "doc.hrc" #include "doctdlg.hrc" +#include <sfx2/sfxcommands.h> ModalDialog DLG_DOC_TEMPLATE { - HelpId = SID_DOCTEMPLATE ; + HelpId = CMD_SID_DOCTEMPLATE ; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 280 , 128 ) ; @@ -45,6 +46,7 @@ ModalDialog DLG_DOC_TEMPLATE }; Edit ED_NAME { + HelpID = "sfx2:Edit:DLG_DOC_TEMPLATE:ED_NAME"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 200 , 12 ) ; @@ -63,6 +65,7 @@ ModalDialog DLG_DOC_TEMPLATE }; ListBox LB_SECTION { + HelpID = "sfx2:ListBox:DLG_DOC_TEMPLATE:LB_SECTION"; Border = TRUE ; Pos = MAP_APPFONT ( 12 , 56 ) ; Size = MAP_APPFONT ( 97 , 66 ) ; @@ -75,6 +78,7 @@ ModalDialog DLG_DOC_TEMPLATE }; ListBox LB_STYLESHEETS { + HelpID = "sfx2:ListBox:DLG_DOC_TEMPLATE:LB_STYLESHEETS"; Border = TRUE ; Pos = MAP_APPFONT ( 115 , 56 ) ; Size = MAP_APPFONT ( 97 , 66 ) ; @@ -98,12 +102,14 @@ ModalDialog DLG_DOC_TEMPLATE }; PushButton BT_EDIT { + HelpID = "sfx2:PushButton:DLG_DOC_TEMPLATE:BT_EDIT"; Pos = MAP_APPFONT ( 224 , 62 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Edit" ; }; PushButton BT_ORGANIZE { + HelpID = "sfx2:PushButton:DLG_DOC_TEMPLATE:BT_ORGANIZE"; Pos = MAP_APPFONT ( 224 , 79 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Organizer..." ; diff --git a/sfx2/source/doc/docvor.src b/sfx2/source/doc/docvor.src index 2c9975de9bb8..80ebed8b1708 100644 --- a/sfx2/source/doc/docvor.src +++ b/sfx2/source/doc/docvor.src @@ -37,7 +37,7 @@ ModalDialog DLG_ORGANIZE { - HelpId = SID_ORGANIZER ; + HelpId = CMD_SID_ORGANIZER ; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 271 , 162 ) ; @@ -61,6 +61,7 @@ ModalDialog DLG_ORGANIZE }; PushButton BTN_FILES { + HelpID = "sfx2:PushButton:DLG_ORGANIZE:BTN_FILES"; Pos = MAP_APPFONT ( 205 , 143 ) ; Size = MAP_APPFONT ( 60 , 14 ) ; Text [ en-US ] = "~File..." ; @@ -68,12 +69,14 @@ ModalDialog DLG_ORGANIZE }; PushButton BTN_ADDRESSTEMPLATE { + HelpID = "sfx2:PushButton:DLG_ORGANIZE:BTN_ADDRESSTEMPLATE"; Pos = MAP_APPFONT ( 205 , 124 ) ; Size = MAP_APPFONT ( 60 , 14 ) ; Text [ en-US ] = "~Address Book..." ; }; ListBox LB_LEFT_TYP { + HelpID = "sfx2:ListBox:DLG_ORGANIZE:LB_LEFT_TYP"; Border = TRUE ; Pos = MAP_APPFONT ( 3 , 144 ) ; Size = MAP_APPFONT ( 94 , 55 ) ; @@ -88,6 +91,7 @@ ModalDialog DLG_ORGANIZE }; ListBox LB_RIGHT_TYP { + HelpID = "sfx2:ListBox:DLG_ORGANIZE:LB_RIGHT_TYP"; Border = TRUE ; Pos = MAP_APPFONT ( 103 , 144 ) ; Size = MAP_APPFONT ( 94 , 55 ) ; @@ -142,6 +146,7 @@ ModalDialog DLG_ORGANIZE }; MenuButton BTN_EDIT { + HelpID = "sfx2:MenuButton:DLG_ORGANIZE:BTN_EDIT"; Pos = MAP_APPFONT ( 205 , 23 ) ; Size = MAP_APPFONT ( 60 , 14 ) ; Text [ en-US ] = "Commands" ; diff --git a/sfx2/source/doc/iframe.cxx b/sfx2/source/doc/iframe.cxx index 3ad0cc51a923..f7df58ffd397 100644 --- a/sfx2/source/doc/iframe.cxx +++ b/sfx2/source/doc/iframe.cxx @@ -384,7 +384,7 @@ void SAL_CALL IFrameObject::removeVetoableChangeListener(const ::rtl::OUString&, ::sal_Int16 SAL_CALL IFrameObject::execute() throw (::com::sun::star::uno::RuntimeException) { SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create(); - VclAbstractDialog* pDlg = pFact->CreateEditObjectDialog( NULL, SID_INSERT_FLOATINGFRAME, mxObj ); + VclAbstractDialog* pDlg = pFact->CreateEditObjectDialog( NULL, rtl::OUString::createFromAscii(".uno:InsertObjectFloatingFrame"), mxObj ); if ( pDlg ) pDlg->Execute(); return 0; diff --git a/sfx2/source/doc/makefile.mk b/sfx2/source/doc/makefile.mk index b1bddf82e428..d663d34cf5ba 100644 --- a/sfx2/source/doc/makefile.mk +++ b/sfx2/source/doc/makefile.mk @@ -87,8 +87,6 @@ SLOFILES = \ $(SLO)$/syspath.obj \ $(SLO)$/syspathw32.obj -# $(SLO)$/applet.obj \ - .IF "$(GUI)" == "WNT" #HACK TO DISABLE PCH diff --git a/sfx2/source/doc/new.src b/sfx2/source/doc/new.src index 146f9f630570..6737128cce43 100644 --- a/sfx2/source/doc/new.src +++ b/sfx2/source/doc/new.src @@ -28,12 +28,14 @@ #include <sfx2/sfx.hrc> #include "doc.hrc" #include "new.hrc" +#include <sfx2/sfxcommands.h> + // pragma ---------------------------------------------------------------- // DLG_NEW_FILE ---------------------------------------------------------- ModalDialog DLG_NEW_FILE { - HelpId = SID_NEWDOC ; + HelpId = CMD_SID_NEWDOC ; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 336 , 96 ) ; @@ -57,6 +59,7 @@ ModalDialog DLG_NEW_FILE }; ListBox LB_REGION { + HelpID = "sfx2:ListBox:DLG_NEW_FILE:LB_REGION"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 18 ) ; Size = MAP_APPFONT ( 127 , 72 ) ; @@ -78,6 +81,7 @@ ModalDialog DLG_NEW_FILE }; ListBox LB_TEMPLATE { + HelpID = "sfx2:ListBox:DLG_NEW_FILE:LB_TEMPLATE"; Border = TRUE ; Pos = MAP_APPFONT ( 139 , 18 ) ; Size = MAP_APPFONT ( 127 , 72 ) ; @@ -85,6 +89,7 @@ ModalDialog DLG_NEW_FILE }; MoreButton BT_MORE { + HelpID = "sfx2:MoreButton:DLG_NEW_FILE:BT_MORE"; Pos = MAP_APPFONT ( 274 , 70 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~More" ; @@ -101,6 +106,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox BTN_PREVIEW { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:BTN_PREVIEW"; Pos = MAP_APPFONT ( 6 , 96 ) ; Size = MAP_APPFONT ( 97 , 10 ) ; Text [ en-US ] = "Pre~view" ; @@ -115,6 +121,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox CB_TEXT_STYLE { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:CB_TEXT_STYLE"; Pos = MAP_APPFONT ( 6 , 94 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; Hide = TRUE; @@ -122,6 +129,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox CB_FRAME_STYLE { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:CB_FRAME_STYLE"; Pos = MAP_APPFONT ( 60 , 94 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; Hide = TRUE; @@ -129,6 +137,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox CB_PAGE_STYLE { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:CB_PAGE_STYLE"; Pos = MAP_APPFONT ( 114 , 94 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; Hide = TRUE; @@ -136,6 +145,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox CB_NUM_STYLE { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:CB_NUM_STYLE"; Pos = MAP_APPFONT ( 168 , 94 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; Hide = TRUE; @@ -143,6 +153,7 @@ ModalDialog DLG_NEW_FILE }; CheckBox CB_MERGE_STYLE { + HelpID = "sfx2:CheckBox:DLG_NEW_FILE:CB_MERGE_STYLE"; Pos = MAP_APPFONT ( 222 , 94 ) ; Size = MAP_APPFONT ( 50 , 10 ) ; Hide = TRUE; @@ -150,6 +161,7 @@ ModalDialog DLG_NEW_FILE }; PushButton PB_LOAD_FILE { + HelpID = "sfx2:PushButton:DLG_NEW_FILE:PB_LOAD_FILE"; Pos = MAP_APPFONT ( 274 , 92 ) ; Size = MAP_APPFONT ( 56 , 14 ) ; Hide = TRUE; @@ -168,6 +180,7 @@ ModalDialog DLG_NEW_FILE }; Edit ED_TITLE { + HelpID = "sfx2:Edit:DLG_NEW_FILE:ED_TITLE"; Border = TRUE ; Pos = MAP_APPFONT ( 145 , 121 ) ; Size = MAP_APPFONT ( 175 , 12 ) ; @@ -183,6 +196,7 @@ ModalDialog DLG_NEW_FILE }; Edit ED_THEMA { + HelpID = "sfx2:Edit:DLG_NEW_FILE:ED_THEMA"; Border = TRUE ; Pos = MAP_APPFONT ( 145 , 148 ) ; Size = MAP_APPFONT ( 175 , 12 ) ; @@ -198,6 +212,7 @@ ModalDialog DLG_NEW_FILE }; Edit ED_KEYWORDS { + HelpID = "sfx2:Edit:DLG_NEW_FILE:ED_KEYWORDS"; Border = TRUE ; Pos = MAP_APPFONT ( 145 , 175 ) ; Size = MAP_APPFONT ( 175 , 12 ) ; @@ -213,6 +228,7 @@ ModalDialog DLG_NEW_FILE }; MultiLineEdit ED_DESC { + HelpID = "sfx2:MultiLineEdit:DLG_NEW_FILE:ED_DESC"; Border = TRUE ; Pos = MAP_APPFONT ( 144 , 202 ) ; Size = MAP_APPFONT ( 175 , 32 ) ; diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx index 451e33084c07..e0e63da04bb8 100644 --- a/sfx2/source/doc/objcont.cxx +++ b/sfx2/source/doc/objcont.cxx @@ -365,17 +365,6 @@ void SfxObjectShell::TriggerHelpPI(USHORT nIdx1, USHORT nIdx2, USHORT) { SfxStyleSheetBasePool *pStylePool = GetStyleSheetPool(); SetOrganizerSearchMask(pStylePool); -#ifdef WIR_KOENNEN_WIEDER_HILFE_FUER_STYLESHEETS - SfxStyleSheetBase *pStyle = (*pStylePool)[nIdx2]; - if(pStyle) - { - String aHelpFile; - ULONG nHelpId=pStyle->GetHelpId(aHelpFile); - SfxHelpPI* pHelpPI = SFX_APP()->GetHelpPI(); - if ( pHelpPI && nHelpId ) - pHelpPI->LoadTopic( nHelpId ); - } -#endif } } diff --git a/sfx2/source/doc/querytemplate.cxx b/sfx2/source/doc/querytemplate.cxx index 8e006721351a..3e6a529bc67e 100644 --- a/sfx2/source/doc/querytemplate.cxx +++ b/sfx2/source/doc/querytemplate.cxx @@ -31,7 +31,7 @@ #include "querytemplate.hxx" #include "sfxresid.hxx" #include "doc.hrc" - +#include "helpid.hrc" #include <vcl/svapp.hxx> namespace sfx2 @@ -41,7 +41,7 @@ QueryTemplateBox::QueryTemplateBox( Window* pParent, const String& rMessage ) : MessBox ( pParent, 0, Application::GetDisplayName(), rMessage ) { SetImage( QueryBox::GetStandardImage() ); - SetHelpId( MSG_QUERY_LOAD_TEMPLATE ); + SetHelpId( HID_QUERY_LOAD_TEMPLATE ); AddButton( String( SfxResId( STR_QRYTEMPL_UPDATE_BTN ) ), RET_YES, BUTTONDIALOG_DEFBUTTON | BUTTONDIALOG_OKBUTTON | BUTTONDIALOG_FOCUSBUTTON ); diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index 846cc669b9a7..ee449d15b419 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -2599,11 +2599,6 @@ SfxObjectShell* SfxBaseModel::impl_getObjectShell() const // public impl. //________________________________________________________________________________________________________ -sal_Bool SfxBaseModel::IsDisposed() const -{ - return ( m_pData == NULL ) ; -} - sal_Bool SfxBaseModel::IsInitialized() const { if ( !m_pData || !m_pData->m_pObjectShell ) @@ -2615,6 +2610,14 @@ sal_Bool SfxBaseModel::IsInitialized() const return m_pData->m_pObjectShell->GetMedium() != NULL; } +void SfxBaseModel::MethodEntryCheck( const bool i_mustBeInitialized ) const +{ + if ( impl_isDisposed() ) + throw ::com::sun::star::lang::DisposedException( ::rtl::OUString(), *const_cast< SfxBaseModel* >( this ) ); + if ( i_mustBeInitialized && !IsInitialized() ) + throw ::com::sun::star::lang::NotInitializedException( ::rtl::OUString(), *const_cast< SfxBaseModel* >( this ) ); +} + sal_Bool SfxBaseModel::impl_isDisposed() const { return ( m_pData == NULL ) ; diff --git a/sfx2/source/inc/applet.hxx b/sfx2/source/inc/applet.hxx deleted file mode 100644 index 5b7d61ebe314..000000000000 --- a/sfx2/source/inc/applet.hxx +++ /dev/null @@ -1,122 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SFX_APPLET_HXX -#define _SFX_APPLET_HXX - -#include <com/sun/star/uno/Reference.hxx> -#include <com/sun/star/uno/Sequence.hxx> -#include <com/sun/star/util/XCloseable.hpp> -#include <com/sun/star/lang/XEventListener.hpp> -#include <com/sun/star/frame/XSynchronousFrameLoader.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/embed/XEmbeddedObject.hpp> -#include <cppuhelper/implbase6.hxx> - -#include <rtl/ustring.hxx> -#include <svl/ownlist.hxx> -#include <svl/itemprop.hxx> - -namespace com { namespace sun { namespace star { namespace uno { - class XComponentContext; - class XInterface; -} } } } - -class SjApplet2; -namespace sfx2 -{ - -class AppletObject : public ::cppu::WeakImplHelper6 < - com::sun::star::util::XCloseable, - com::sun::star::lang::XEventListener, - com::sun::star::frame::XSynchronousFrameLoader, - com::sun::star::ui::dialogs::XExecutableDialog, - com::sun::star::lang::XInitialization, - com::sun::star::beans::XPropertySet > -{ - com::sun::star::uno::Reference < com::sun::star::uno::XComponentContext > - mxContext; - com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > mxObj; - SfxItemPropertyMap maPropMap; - SvCommandList maCmdList; - ::rtl::OUString maClass; - ::rtl::OUString maName; - ::rtl::OUString maCodeBase; - ::rtl::OUString maDocBase; - SjApplet2* mpApplet; - sal_Bool mbMayScript; - - AppletObject( AppletObject & ); // not defined - void operator =( AppletObject & ); // not defined - - AppletObject( const com::sun::star::uno::Reference < com::sun::star::uno::XComponentContext >& rContext ); - ~AppletObject(); - - virtual sal_Bool SAL_CALL load( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& lDescriptor, - const com::sun::star::uno::Reference < com::sun::star::frame::XFrame >& xFrame ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL cancel() throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) throw( com::sun::star::util::CloseVetoException, com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& xListener ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removeCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& xListener ) throw( com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL disposing( const com::sun::star::lang::EventObject& aEvent ) throw (com::sun::star::uno::RuntimeException) ; - virtual void SAL_CALL setTitle( const ::rtl::OUString& aTitle ) throw (::com::sun::star::uno::RuntimeException); - virtual ::sal_Int16 SAL_CALL execute( ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addPropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removePropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addVetoableChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removeVetoableChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - - virtual ::rtl::OUString SAL_CALL getImplementationName() - throw( ::com::sun::star::uno::RuntimeException ); - virtual ::sal_Bool SAL_CALL supportsService( - const ::rtl::OUString& sServiceName ) - throw( ::com::sun::star::uno::RuntimeException ); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL - getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException ); - - static ::com::sun::star::uno::Sequence< ::rtl::OUString > - impl_getStaticSupportedServiceNames(); - static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - SAL_CALL impl_createInstance( - const ::com::sun::star::uno::Reference< - ::com::sun::star::uno::XComponentContext >& xContext ) - throw( ::com::sun::star::uno::Exception ); - -public: - static ::rtl::OUString impl_getStaticImplementationName(); - static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - impl_createFactory(); -}; - -} -#endif diff --git a/sfx2/source/inc/helpid.hrc b/sfx2/source/inc/helpid.hrc index 79dba3208729..ef5c168c36f0 100755..100644 --- a/sfx2/source/inc/helpid.hrc +++ b/sfx2/source/inc/helpid.hrc @@ -29,341 +29,312 @@ // include ------------------------------------------------------------------ -#include <svl/solar.hrc> +#include <sfx2/sfxcommands.h> // Help-Ids ----------------------------------------------------------------- -#define HID_GLOBAL_FALLBACK 0xFFFFFFFF +#define HID_FILTER_SELECT "SFX2_HID_FILTER_SELECT" +#define HID_USERDEFBMP "SFX2_HID_USERDEFBMP" +#define HID_DOCINFO_EDT "SFX2_HID_DOCINFO_EDT" +#define HID_PASSWD "SFX2_HID_PASSWD" +#define HID_PRINTMONITOR "SFX2_HID_PRINTMONITOR" +#define HID_CONFIG_OBJECTBAR "SFX2_HID_CONFIG_OBJECTBAR" +#define HID_MANAGE_STYLES "SFX2_HID_MANAGE_STYLES" +#define HID_CONFIG_EVENT "SFX2_HID_CONFIG_EVENT" +#define HID_DOCINFODESC "SFX2_HID_DOCINFODESC" +#define HID_DOCINFODOC "SFX2_HID_DOCINFODOC" +#define HID_DOCINFOUSER "SFX2_HID_DOCINFOUSER" +#define HID_BOOKMARKPROPS "SFX2_HID_BOOKMARKPROPS" +#define HID_BOOKGROUPPROPS "SFX2_HID_BOOKGROUPPROPS" +#define HID_BOOKFILEPROPS "SFX2_HID_BOOKFILEPROPS" +#define HID_NEWS_SERVERPROPS "SFX2_HID_NEWS_SERVERPROPS" +#define HID_NEWS_RULEPAGE "SFX2_HID_NEWS_RULEPAGE" +#define HID_MAILINTRAYPROPS "SFX2_HID_MAILINTRAYPROPS" +#define HID_DOCINFORELOAD "SFX2_HID_DOCINFORELOAD" +#define HID_NEWS_GROUPPAGE "SFX2_HID_NEWS_GROUPPAGE" +#define HID_NEWS_SERVERPAGE "SFX2_HID_NEWS_SERVERPAGE" +#define HID_EXPLORERCONTROL "SFX2_HID_EXPLORERCONTROL" +#define HID_BROWSERCONTROL "SFX2_HID_BROWSERCONTROL" +#define HID_CTL_ORGANIZER_LEFT "SFX2_HID_CTL_ORGANIZER_LEFT" +#define HID_CTL_ORGANIZER_RIGHT "SFX2_HID_CTL_ORGANIZER_RIGHT" +#define HID_EXPLMAILSRV_GENERAL_PAGE "SFX2_HID_EXPLMAILSRV_GENERAL_PAGE" +#define HID_EXPLMAILSRV_PROTOCOL_PAGE "SFX2_HID_EXPLMAILSRV_PROTOCOL_PAGE" +#define HID_EXPLMAILSRV_DATAMATCH_PAGE "SFX2_HID_EXPLMAILSRV_DATAMATCH_PAGE" +#define HID_EXPLMAILSRV_SENDJOURNAL_PAGE "SFX2_HID_EXPLMAILSRV_SENDJOURNAL_PAGE" +#define HID_EXPLMAIL_GENERAL_PAGE "SFX2_HID_EXPLMAIL_GENERAL_PAGE" +#define HID_NEWS_CTL_RULES "SFX2_HID_NEWS_CTL_RULES" +#define HID_NEWS_CTL_GROUPS "SFX2_HID_NEWS_CTL_GROUPS" +#define HID_CONFIG_OBJECTBAR_CTL "SFX2_HID_CONFIG_OBJECTBAR_CTL" +#define HID_NEWS_QUICKSEARCH "SFX2_HID_NEWS_QUICKSEARCH" +#define HID_NEWS_SERVERVIEWPROPS "SFX2_HID_NEWS_SERVERVIEWPROPS" +#define HID_NEWS_SHOWARTICLEPROPS "SFX2_HID_NEWS_SHOWARTICLEPROPS" +#define HID_NEWS_SHOWGROUPPROPS "SFX2_HID_NEWS_SHOWGROUPPROPS" +#define HID_NEWS_USER "SFX2_HID_NEWS_USER" +#define HID_MULTISELECTION_GENERAL_PAGE "SFX2_HID_MULTISELECTION_GENERAL_PAGE" +#define HID_LINK_GENERAL_PAGE "SFX2_HID_LINK_GENERAL_PAGE" +#define HID_LINK_ADDRESS_PAGE "SFX2_HID_LINK_ADDRESS_PAGE" +#define HID_FOLDER_GENERAL_PAGE "SFX2_HID_FOLDER_GENERAL_PAGE" +#define HID_FILE_GENERAL_PAGE "SFX2_HID_FILE_GENERAL_PAGE" +#define HID_FTP_GENERAL_PAGE "SFX2_HID_FTP_GENERAL_PAGE" +#define HID_PRINT_OPTIONS "SFX2_HID_PRINT_OPTIONS" +#define HID_PREVIEW_FRAME "SFX2_HID_PREVIEW_FRAME" +#define HID_DOCINFO_FRAME "SFX2_HID_DOCINFO_FRAME" +#define HID_EXPLORER_FRAME "SFX2_HID_EXPLORER_FRAME" +#define HID_APP_WIN "SFX2_HID_APP_WIN" +#define HID_TEMPLATE_FMT "SFX2_HID_TEMPLATE_FMT" +#define HID_TEMPLATE_FILTER "SFX2_HID_TEMPLATE_FILTER" +#define HID_FTPSERVER_PAGE "SFX2_HID_FTPSERVER_PAGE" +#define HID_DLG_SFX_EXP_SEARCH "SFX2_HID_DLG_SFX_EXP_SEARCH" +#define HID_TP_SFX_EXP_SEARCH_CRITERIA "SFX2_HID_TP_SFX_EXP_SEARCH_CRITERIA" +#define HID_TP_SFX_EXP_SEARCH_PLACE "SFX2_HID_TP_SFX_EXP_SEARCH_PLACE" +#define HID_SEARCH_DLG_TABLB "SFX2_HID_SEARCH_DLG_TABLB" +#define HID_TEMPLDLG_NEWBYEXAMPLE "SFX2_HID_TEMPLDLG_NEWBYEXAMPLE" +#define HID_TEMPLDLG_UPDATEBYEXAMPLE "SFX2_HID_TEMPLDLG_UPDATEBYEXAMPLE" +#define HID_TEMPLDLG_WATERCAN "SFX2_HID_TEMPLDLG_WATERCAN" +#define HID_DESKTOP "SFX2_HID_DESKTOP" +#define HID_EXPLORERTOOLSTOOLBOX "SFX2_HID_EXPLORERTOOLSTOOLBOX" +#define HID_EXPLOREROBJECTTOOLBOX "SFX2_HID_EXPLOREROBJECTTOOLBOX" +#define HID_RECORDINGTOOLBOX "SFX2_HID_RECORDINGTOOLBOX" +#define HID_FULLSCREENTOOLBOX "SFX2_HID_FULLSCREENTOOLBOX" +#define HID_HELPBAR "SFX2_HID_HELPBAR" +#define HID_ENVTOOLBOX "SFX2_HID_ENVTOOLBOX" +#define HID_FRAMESETEDIT_TOOLBOX "SFX2_HID_FRAMESETEDIT_TOOLBOX" +#define HID_NAVIGATOR_WINDOW "SFX2_HID_NAVIGATOR_WINDOW" +#define HID_TABDLG_RESET_BTN "SFX2_HID_TABDLG_RESET_BTN" +#define HID_TABDLG_STANDARD_BTN "SFX2_HID_TABDLG_STANDARD_BTN" +#define HID_HELPAGENT_TIP_BOX "SFX2_HID_HELPAGENT_TIP_BOX" +#define HID_TEMPLDLG_TOOLBOX_LEFT "SFX2_HID_TEMPLDLG_TOOLBOX_LEFT" +#define HID_TEMPLDLG_TOOLBOX_RIGHT "SFX2_HID_TEMPLDLG_TOOLBOX_RIGHT" +#define HID_EXPLORER_SRCH_COUNT "SFX2_HID_EXPLORER_SRCH_COUNT" +#define HID_BEAMER_SORT_ASCENDING "SFX2_HID_BEAMER_SORT_ASCENDING" +#define HID_BEAMER_SORT_DESCENDING "SFX2_HID_BEAMER_SORT_DESCENDING" +#define HID_EXPLORER_SRCH_LATEST_COUNT "SFX2_HID_EXPLORER_SRCH_LATEST_COUNT" +#define HID_CONFIG_EVENT_OFFICE_BASED "SFX2_HID_CONFIG_EVENT_OFFICE_BASED" +#define HID_CONFIG_EVENT_DOCUMENT_BASED "SFX2_HID_CONFIG_EVENT_DOCUMENT_BASED" +#define HID_ORGANIZE_NEW "SFX2_HID_ORGANIZE_NEW" +#define HID_ORGANIZE_DELETE "SFX2_HID_ORGANIZE_DELETE" +#define HID_ORGANIZE_EDIT "SFX2_HID_ORGANIZE_EDIT" +#define HID_ORGANIZE_COPY_FROM "SFX2_HID_ORGANIZE_COPY_FROM" +#define HID_ORGANIZE_COPY_TO "SFX2_HID_ORGANIZE_COPY_TO" +#define HID_ORGANIZE_PRINT "SFX2_HID_ORGANIZE_PRINT" +#define HID_ORGANIZE_PRINTER_SETUP "SFX2_HID_ORGANIZE_PRINTER_SETUP" +#define HID_ORGANIZE_RESCAN "SFX2_HID_ORGANIZE_RESCAN" +#define HID_STYLIST_NEW "SFX2_HID_STYLIST_NEW" +#define HID_STYLIST_EDIT "SFX2_HID_STYLIST_EDIT" +#define HID_STYLIST_DELETE "SFX2_HID_STYLIST_DELETE" +#define HID_EXPLORERMENU_ARRANGEICONS "SFX2_HID_EXPLORERMENU_ARRANGEICONS" +#define HID_EXPLORERMENU_ARRANGEICONS_ONGRID "SFX2_HID_EXPLORERMENU_ARRANGEICONS_ONGRID" +#define HID_EXPLORERMENU_FIXEDICONPOS "SFX2_HID_EXPLORERMENU_FIXEDICONPOS" +#define HID_EXPLORERMENU_OPEN "SFX2_HID_EXPLORERMENU_OPEN" +#define HID_EXPLORERMENU_PRINT "SFX2_HID_EXPLORERMENU_PRINT" +#define HID_EXPLORERMENU_SEARCH "SFX2_HID_EXPLORERMENU_SEARCH" +#define HID_EXPLORERMENU_COPY "SFX2_HID_EXPLORERMENU_COPY" +#define HID_EXPLORERMENU_DELETE "SFX2_HID_EXPLORERMENU_DELETE" +#define HID_EXPLORERMENU_CREATELINK "SFX2_HID_EXPLORERMENU_CREATELINK" +#define HID_EXPLORERMENU_EDITPROPERTIES "SFX2_HID_EXPLORERMENU_EDITPROPERTIES" +#define HID_EXPLORERMENU_DOWNLOAD "SFX2_HID_EXPLORERMENU_DOWNLOAD" +#define HID_EXPLORERMENU_STDTEMPLATE "SFX2_HID_EXPLORERMENU_STDTEMPLATE" +#define HID_EXPLORERDLG_FILELIST "SFX2_HID_EXPLORERDLG_FILELIST" +#define HID_PDFOLDERS_WORKPLACE "SFX2_HID_PDFOLDERS_WORKPLACE" +#define HID_PDFOLDERS_EXPLORER "SFX2_HID_PDFOLDERS_EXPLORER" +#define HID_PDFOLDERS_STANDARD "SFX2_HID_PDFOLDERS_STANDARD" +#define HID_PDFOLDERS_ROOT "SFX2_HID_PDFOLDERS_ROOT" +#define HID_PDFOLDERS_DESKTOP "SFX2_HID_PDFOLDERS_DESKTOP" +#define HID_CNTMENU_REMOVE_GROUP "SFX2_HID_CNTMENU_REMOVE_GROUP" +#define HID_CNTMENU_CLEAR_CACHE "SFX2_HID_CNTMENU_CLEAR_CACHE" +#define HID_CNT_SYNC_INFO_DLG "SFX2_HID_CNT_SYNC_INFO_DLG" +#define HID_CNT_REMOVE_REMOVEDLIST "SFX2_HID_CNT_REMOVE_REMOVEDLIST" +#define HID_CNT_ABORT_DIALOG "SFX2_HID_CNT_ABORT_DIALOG" +#define HID_CNT_PAGE_PRJ_DATAEXCHANGE "SFX2_HID_CNT_PAGE_PRJ_DATAEXCHANGE" +#define HID_CHAOSDOC_OBJECTBAR_FILE "SFX2_HID_CHAOSDOC_OBJECTBAR_FILE" +#define HID_CHAOSDOC_OBJECTBAR_MESSAGE "SFX2_HID_CHAOSDOC_OBJECTBAR_MESSAGE" +#define HID_CHAOSDOC_MN_PART_OPEN "SFX2_HID_CHAOSDOC_MN_PART_OPEN" +#define HID_CHAOSDOC_MN_PART_DELETE "SFX2_HID_CHAOSDOC_MN_PART_DELETE" +#define HID_CHAOSDOC_MN_PART_RENAME "SFX2_HID_CHAOSDOC_MN_PART_RENAME" +#define HID_CHAOSDOC_MN_PART_SAVEAS "SFX2_HID_CHAOSDOC_MN_PART_SAVEAS" +#define HID_EXPLORER_DOCVIEW_ICON "SFX2_HID_EXPLORER_DOCVIEW_ICON" +#define HID_EXPLORER_DOCVIEW_DETAILS "SFX2_HID_EXPLORER_DOCVIEW_DETAILS" +#define HID_CHAOSDOC_WIN "SFX2_HID_CHAOSDOC_WIN" +#define HID_CHAOSDOC_WIN_HEADER "SFX2_HID_CHAOSDOC_WIN_HEADER" +#define HID_CHAOSDOC_WIN_PARTS "SFX2_HID_CHAOSDOC_WIN_PARTS" +#define HID_CHAOSDOC_WIN_BODY "SFX2_HID_CHAOSDOC_WIN_BODY" +#define HID_CNT_INSERT_COLUMN "SFX2_HID_CNT_INSERT_COLUMN" +#define HID_CNT_REMOVE_COLUMN "SFX2_HID_CNT_REMOVE_COLUMN" +#define HID_CNT_OPT_WIDTH "SFX2_HID_CNT_OPT_WIDTH" +#define HID_CNT_SORT_ASC "SFX2_HID_CNT_SORT_ASC" +#define HID_CNT_SORT_DESC "SFX2_HID_CNT_SORT_DESC" +#define HID_CNT_RULEPG_OPEN_DIR "SFX2_HID_CNT_RULEPG_OPEN_DIR" +#define HID_CHAOSDOC_MN_HEADER_ADDRESSBOOK "SFX2_HID_CHAOSDOC_MN_HEADER_ADDRESSBOOK" +#define HID_CHAOSDOC_MN_HEADER_COPYLINK "SFX2_HID_CHAOSDOC_MN_HEADER_COPYLINK" +#define HID_CLEAN_CACHE "SFX2_HID_CLEAN_CACHE" +#define HID_SBOX_LOCATION "SFX2_HID_SBOX_LOCATION" +#define HID_SBOX_SUBSCRIBTION "SFX2_HID_SBOX_SUBSCRIBTION" +#define HID_SBOX_CDF_SUBSCRIBTION "SFX2_HID_SBOX_CDF_SUBSCRIBTION" +#define HID_SBOX_SCHEDULE "SFX2_HID_SBOX_SCHEDULE" +#define HID_SBOX_NOTIFICATION "SFX2_HID_SBOX_NOTIFICATION" +#define HID_SBOX_SDC_GENERAL "SFX2_HID_SBOX_SDC_GENERAL" +#define HID_BRWBOX_HEADERBAR "SFX2_HID_BRWBOX_HEADERBAR" +#define HID_CANNOT_CREATE_BMK_HERE "SFX2_HID_CANNOT_CREATE_BMK_HERE" +#define HID_CREATE_BOOKMARK "SFX2_HID_CREATE_BOOKMARK" +#define HID_TASKBAR "SFX2_HID_TASKBAR" +#define HID_TASKBUTTONBAR "SFX2_HID_TASKBUTTONBAR" +#define HID_TASKTOOLBAR "SFX2_HID_TASKTOOLBAR" +#define HID_CHAOSDOC_SHOW_FSYS_EXTENSION "SFX2_HID_CHAOSDOC_SHOW_FSYS_EXTENSION" +#define HID_CNT_FILE "SFX2_HID_CNT_FILE" +#define HID_CHAOSDOC_MN_BODY_OPENLINK "SFX2_HID_CHAOSDOC_MN_BODY_OPENLINK" +#define HID_CHAOSDOC_MN_BODY_OPENLINK_BLANK "SFX2_HID_CHAOSDOC_MN_BODY_OPENLINK_BLANK" +#define HID_CHAOSDOC_MN_BODY_DOWNLOAD "SFX2_HID_CHAOSDOC_MN_BODY_DOWNLOAD" +#define HID_CHAOSDOC_MN_BODY_ADDBOOKMARK "SFX2_HID_CHAOSDOC_MN_BODY_ADDBOOKMARK" +#define HID_OPEN_MENU_CNT "SFX2_HID_OPEN_MENU_CNT" +#define HID_CNT_OPEN_AS_TEMPLATE "SFX2_HID_CNT_OPEN_AS_TEMPLATE" +#define HID_CNT_OPEN_AS_DOC "SFX2_HID_CNT_OPEN_AS_DOC" +#define HID_PDFOLDERS_TEMPLATE "SFX2_HID_PDFOLDERS_TEMPLATE" +#define HID_EXPLORER_ROOT "SFX2_HID_EXPLORER_ROOT" +#define HID_RESET_URL "SFX2_HID_RESET_URL" +#define HID_PHONE_DIALOG "SFX2_HID_PHONE_DIALOG" +#define HID_QB_RESOLVE_LINK "SFX2_HID_QB_RESOLVE_LINK" +#define HID_CHAOSDOC_MN_HEADER_FLAG_BOLD "SFX2_HID_CHAOSDOC_MN_HEADER_FLAG_BOLD" +#define HID_CHAOSDOC_MN_HEADER_FLAG_ITALIC "SFX2_HID_CHAOSDOC_MN_HEADER_FLAG_ITALIC" +#define HID_CHAOSDOC_MN_HEADER_BIG_HEADER "SFX2_HID_CHAOSDOC_MN_HEADER_BIG_HEADER" +#define HID_CHAOSDOC_MN_HEADER_TEMPLATE_HEADER "SFX2_HID_CHAOSDOC_MN_HEADER_TEMPLATE_HEADER" +#define HID_CNT_MARK_THREAD_MARKED "SFX2_HID_CNT_MARK_THREAD_MARKED" +#define HID_CNT_MARK_THREAD_UNMARKED "SFX2_HID_CNT_MARK_THREAD_UNMARKED" +#define HID_CNT_DLG_SEARCH_BT_SHOW "SFX2_HID_CNT_DLG_SEARCH_BT_SHOW" +#define HID_CNT_DLG_SEARCH_BT_UPDATE "SFX2_HID_CNT_DLG_SEARCH_BT_UPDATE" +#define HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE "SFX2_HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE" +#define HID_CNT_DLG_SEARCH_BT_STOP "SFX2_HID_CNT_DLG_SEARCH_BT_STOP" +#define HID_CNT_PAGE_HEADER "SFX2_HID_CNT_PAGE_HEADER" +#define HID_CNT_DLG_ADDRESS "SFX2_HID_CNT_DLG_ADDRESS" +#define HID_EXPLORERMENU_AUTO_ARRANGEICONS "SFX2_HID_EXPLORERMENU_AUTO_ARRANGEICONS" +#define HID_EXPLORERMENU_AUTO_ADJUSTICONS "SFX2_HID_EXPLORERMENU_AUTO_ADJUSTICONS" +#define HID_EXPLORERMENU_FREE_POSITIONING "SFX2_HID_EXPLORERMENU_FREE_POSITIONING" +#define HID_CNT_TARGET_MENU "SFX2_HID_CNT_TARGET_MENU" +#define HID_CNT_PAGE_DESCRIPTION "SFX2_HID_CNT_PAGE_DESCRIPTION" +#define HID_CNT_LB_HEADER "SFX2_HID_CNT_LB_HEADER" +#define HID_CNT_LB_DESCRIPTION "SFX2_HID_CNT_LB_DESCRIPTION" +#define HID_GROUPVIEW_BIG_SYMBOLS "SFX2_HID_GROUPVIEW_BIG_SYMBOLS" +#define HID_GROUPVIEW_SMALL_SYMBOLS "SFX2_HID_GROUPVIEW_SMALL_SYMBOLS" +#define HID_GROUPVIEW_ADD_GROUP "SFX2_HID_GROUPVIEW_ADD_GROUP" +#define HID_GROUPVIEW_REMOVE_GROUP "SFX2_HID_GROUPVIEW_REMOVE_GROUP" +#define HID_GROUPVIEW_RENAME_GROUP "SFX2_HID_GROUPVIEW_RENAME_GROUP" +#define HID_GROUPVIEW_ADD_BOOKMARK "SFX2_HID_GROUPVIEW_ADD_BOOKMARK" +#define HID_GROUPVIEW_TREE "SFX2_HID_GROUPVIEW_TREE" +#define HID_GROUPVIEW_ADD_AS_FOLDER "SFX2_HID_GROUPVIEW_ADD_AS_FOLDER" +#define HID_GROUPVIEW_ADD_AS_BMK "SFX2_HID_GROUPVIEW_ADD_AS_BMK" +#define HID_GROUPVIEW_REMOVE_BMK "SFX2_HID_GROUPVIEW_REMOVE_BMK" +#define HID_GROUPVIEW_CONTENT_BIG "SFX2_HID_GROUPVIEW_CONTENT_BIG" +#define HID_GROUPVIEW_CONTENT_SMALL "SFX2_HID_GROUPVIEW_CONTENT_SMALL" +#define HID_GROUPVIEW_CONTENT_TREE "SFX2_HID_GROUPVIEW_CONTENT_TREE" +#define HID_GROUPVIEW_SHOW_DOCS "SFX2_HID_GROUPVIEW_SHOW_DOCS" +#define HID_EDIT_TEMPLATE "SFX2_HID_EDIT_TEMPLATE" +#define HID_PDFOLDERS_GRAPHICS "SFX2_HID_PDFOLDERS_GRAPHICS" +#define HID_PDFOLDERS_GROUPS "SFX2_HID_PDFOLDERS_GROUPS" +#define HID_OPEN_CHOOSE_FILTER "SFX2_HID_OPEN_CHOOSE_FILTER" +#define HID_PDFOLDERS_BOOKMARKS "SFX2_HID_PDFOLDERS_BOOKMARKS" +#define HID_PDFOLDERS_FAVORITES_ADD "SFX2_HID_PDFOLDERS_FAVORITES_ADD" +#define HID_PDFOLDERS_FAVORITES_REMOVE "SFX2_HID_PDFOLDERS_FAVORITES_REMOVE" +#define HID_PDFOLDERS_HISTORY "SFX2_HID_PDFOLDERS_HISTORY" +#define HID_CNT_CB_FORCE_BODY_EXPORT "SFX2_HID_CNT_CB_FORCE_BODY_EXPORT" +#define HID_CNT_PAGE_REPSTATE_CONTROL "SFX2_HID_CNT_PAGE_REPSTATE_CONTROL" +#define HID_TASKSTATUSBAR "SFX2_HID_TASKSTATUSBAR" +#define HID_CNT_PAGE_HEADER_TABBAR "SFX2_HID_CNT_PAGE_HEADER_TABBAR" +#define HID_CNT_PAGE_SUBSCR_TABBAR "SFX2_HID_CNT_PAGE_SUBSCR_TABBAR" +#define HID_CHAOSDOC_MN_PART_PRINT "SFX2_HID_CHAOSDOC_MN_PART_PRINT" +#define HID_STATUSINDICATOR_TEXT "SFX2_HID_STATUSINDICATOR_TEXT" +#define HID_STATUSINDICATOR_PROGRESS "SFX2_HID_STATUSINDICATOR_PROGRESS" +#define HID_CNT_VALUE_ADDED_NONE "SFX2_HID_CNT_VALUE_ADDED_NONE" +#define HID_CNT_VALUE_ADDED_DOCINFO "SFX2_HID_CNT_VALUE_ADDED_DOCINFO" +#define HID_CNT_VALUE_ADDED_FULL "SFX2_HID_CNT_VALUE_ADDED_FULL" +#define HID_CNT_MESSAGE_STOREMODE_REMOTE "SFX2_HID_CNT_MESSAGE_STOREMODE_REMOTE" +#define HID_CNT_MESSAGE_STOREMODE_LOCAL "SFX2_HID_CNT_MESSAGE_STOREMODE_LOCAL" +#define HID_CNT_VIEW_ALL_ARTICLES "SFX2_HID_CNT_VIEW_ALL_ARTICLES" +#define HID_CNT_VIEW_UNREAD_ARTICLES "SFX2_HID_CNT_VIEW_UNREAD_ARTICLES" +#define HID_CNT_VIEW_READ_ARTICLES "SFX2_HID_CNT_VIEW_READ_ARTICLES" +#define HID_CNT_VIEW_MARKED_ARTICLES "SFX2_HID_CNT_VIEW_MARKED_ARTICLES" +#define HID_CNT_VIEW_MARKED_AND_UNREAD_ARTICLES "SFX2_HID_CNT_VIEW_MARKED_AND_UNREAD_ARTICLES" +#define HID_CNT_VIEW_ALL_FOLDERS "SFX2_HID_CNT_VIEW_ALL_FOLDERS" +#define HID_CNT_VIEW_SUBSCRIBED_FOLDERS "SFX2_HID_CNT_VIEW_SUBSCRIBED_FOLDERS" +#define HID_CNT_VIEW_ACTIVE_FOLDERS "SFX2_HID_CNT_VIEW_ACTIVE_FOLDERS" +#define HID_CNT_SENT_VIEW_ALL_ARTICLES "SFX2_HID_CNT_SENT_VIEW_ALL_ARTICLES" +#define HID_CNT_SENT_VIEW_SENT_ARTICLES "SFX2_HID_CNT_SENT_VIEW_SENT_ARTICLES" +#define HID_CNT_SENT_VIEW_UNSENT_ARTICLES "SFX2_HID_CNT_SENT_VIEW_UNSENT_ARTICLES" +#define HID_CNT_SENT_VIEW_MARKED_ARTICLES "SFX2_HID_CNT_SENT_VIEW_MARKED_ARTICLES" +#define HID_MAILWIN_SEND_BUTTON "SFX2_HID_MAILWIN_SEND_BUTTON" +#define HID_MAILWIN_CLOSE_BUTTON "SFX2_HID_MAILWIN_CLOSE_BUTTON" +#define HID_MAILWIN_ROLE_BOX "SFX2_HID_MAILWIN_ROLE_BOX" +#define HID_MAILWIN_ADDRESS_EDIT "SFX2_HID_MAILWIN_ADDRESS_EDIT" +#define HID_MAILWIN_ADDRESS_BOX "SFX2_HID_MAILWIN_ADDRESS_BOX" +#define HID_MAILWIN_SUBJECT_EDIT "SFX2_HID_MAILWIN_SUBJECT_EDIT" +#define HID_MAILWIN_FROM_EDIT "SFX2_HID_MAILWIN_FROM_EDIT" +#define HID_MAILWIN_PRIO_BOX "SFX2_HID_MAILWIN_PRIO_BOX" +#define HID_TABDLG_APPLY_BTN "SFX2_HID_TABDLG_APPLY_BTN" +#define HID_TP_COMMONPRINTOPTIONS "SFX2_HID_TP_COMMONPRINTOPTIONS" +#define HID_HELP_WINDOW "SFX2_HID_HELP_WINDOW" +#define HID_HELP_LISTBOX "SFX2_HID_HELP_LISTBOX" +#define HID_HELP_TABCONTROL "SFX2_HID_HELP_TABCONTROL" +#define HID_HELP_TOOLBOX "SFX2_HID_HELP_TOOLBOX" +#define HID_HELP_TOOLBOXITEM_INDEX "SFX2_HID_HELP_TOOLBOXITEM_INDEX" +#define HID_HELP_TOOLBOXITEM_START "SFX2_HID_HELP_TOOLBOXITEM_START" +#define HID_HELP_TOOLBOXITEM_BACKWARD "SFX2_HID_HELP_TOOLBOXITEM_BACKWARD" +#define HID_HELP_TOOLBOXITEM_FORWARD "SFX2_HID_HELP_TOOLBOXITEM_FORWARD" +#define HID_HELP_TOOLBOXITEM_PRINT "SFX2_HID_HELP_TOOLBOXITEM_PRINT" +#define HID_HELP_TOOLBOXITEM_BOOKMARKS "SFX2_HID_HELP_TOOLBOXITEM_BOOKMARKS" +#define HID_HELP_TABPAGE_CONTENTS "SFX2_HID_HELP_TABPAGE_CONTENTS" +#define HID_HELP_TABPAGE_INDEX "SFX2_HID_HELP_TABPAGE_INDEX" +#define HID_HELP_TABPAGE_SEARCH "SFX2_HID_HELP_TABPAGE_SEARCH" +#define HID_HELP_TABPAGE_BOOKMARKS "SFX2_HID_HELP_TABPAGE_BOOKMARKS" +#define HID_TBXCONTROL_FILENEW "SFX2_HID_TBXCONTROL_FILENEW" +#define HID_ORGANIZE_STDTEMPLATE_ADD "SFX2_HID_ORGANIZE_STDTEMPLATE_ADD" +#define HID_ORGANIZE_STDTEMPLATE_DEL "SFX2_HID_ORGANIZE_STDTEMPLATE_DEL" +#define HID_HELP_TOOLBOXITEM_SEARCHDIALOG "SFX2_HID_HELP_TOOLBOXITEM_SEARCHDIALOG" +#define HID_HELP_BOOKMARKS_OPEN "SFX2_HID_HELP_BOOKMARKS_OPEN" +#define HID_HELP_BOOKMARKS_RENAME "SFX2_HID_HELP_BOOKMARKS_RENAME" +#define HID_HELP_BOOKMARKS_DELETE "SFX2_HID_HELP_BOOKMARKS_DELETE" +#define HID_CLOSE_WARNING "SFX2_HID_CLOSE_WARNING" +#define HID_DID_SAVE_PACKED_XML "SFX2_HID_DID_SAVE_PACKED_XML" +#define HID_HELP_TREELISTBOX_CONTENTS "SFX2_HID_HELP_TREELISTBOX_CONTENTS" +#define HID_CUSTOMIZETOOLBOX "SFX2_HID_CUSTOMIZETOOLBOX" +#define HID_CUSTOMIZETOOLBOX_FUNCTIONS "SFX2_HID_CUSTOMIZETOOLBOX_FUNCTIONS" +#define HID_CUSTOMIZETOOLBOX_TOOLBOX "SFX2_HID_CUSTOMIZETOOLBOX_TOOLBOX" +#define HID_HELP_TEXT_SELECTION_MODE "SFX2_HID_HELP_TEXT_SELECTION_MODE" -#define HID_FILTER_SELECT (HID_SFX_START + 0) -#define HID_USERDEFBMP (HID_SFX_START + 1) -#define HID_DOCINFO_EDT (HID_SFX_START + 2) -#define HID_PASSWD (HID_SFX_START + 3) -#define HID_PRINTMONITOR (HID_SFX_START + 4) -#define HID_CONFIG_OBJECTBAR (HID_SFX_START + 5) -#define HID_MANAGE_STYLES (HID_SFX_START + 6) -#define HID_CONFIG_EVENT (HID_SFX_START + 7) -#define HID_DOCINFODESC (HID_SFX_START + 8) -#define HID_DOCINFODOC (HID_SFX_START + 9) -#define HID_DOCINFOUSER (HID_SFX_START + 10) -#define HID_DOCINFOSECURITY (HID_SFX_START + 11) -#define HID_BOOKMARKPROPS (HID_SFX_START + 14) -#define HID_BOOKGROUPPROPS (HID_SFX_START + 15) -#define HID_BOOKFILEPROPS (HID_SFX_START + 16) -#define HID_NEWS_SERVERPROPS (HID_SFX_START + 20) -#define HID_NEWS_RULEPAGE (HID_SFX_START + 21) -#define HID_MAILINTRAYPROPS (HID_SFX_START + 23) -#define HID_DOCINFORELOAD (HID_SFX_START + 24) -#define HID_NEWS_GROUPPAGE (HID_SFX_START + 25) -#define HID_NEWS_SERVERPAGE (HID_SFX_START + 26) -#define HID_FILEDLG_STANDARD (HID_SFX_START + 27) -#define HID_FILEDLG_MANAGER (HID_SFX_START + 28) -#define HID_FILEDLG_URL (HID_SFX_START + 29) -#define HID_FILEDLG_FILE (HID_SFX_START + 30) -#define HID_FILEDLG_USE_PASSWD (HID_SFX_START + 31) -#define HID_FILEDLG_READ_ONLY (HID_SFX_START + 32) -#define HID_EXPLORERCONTROL (HID_SFX_START + 33) -#define HID_BROWSERCONTROL (HID_SFX_START + 34) -#define HID_CTL_ORGANIZER_LEFT (HID_SFX_START + 35) -#define HID_CTL_ORGANIZER_RIGHT (HID_SFX_START + 36) -#define HID_EXPLMAILSRV_GENERAL_PAGE (HID_SFX_START + 37) -#define HID_EXPLMAILSRV_PROTOCOL_PAGE (HID_SFX_START + 38) -#define HID_EXPLMAILSRV_DATAMATCH_PAGE (HID_SFX_START + 39) -#define HID_EXPLMAILSRV_SENDJOURNAL_PAGE (HID_SFX_START + 40) -#define HID_EXPLMAIL_GENERAL_PAGE (HID_SFX_START + 41) -#define HID_NEWS_CTL_RULES (HID_SFX_START + 42) -#define HID_NEWS_CTL_GROUPS (HID_SFX_START + 43) -#define HID_CONFIG_OBJECTBAR_CTL (HID_SFX_START + 44) -#define HID_NEWS_QUICKSEARCH (HID_SFX_START + 45) -#define HID_NEWS_SERVERVIEWPROPS (HID_SFX_START + 46) -#define HID_NEWS_SHOWARTICLEPROPS (HID_SFX_START + 47) -#define HID_NEWS_SHOWGROUPPROPS (HID_SFX_START + 48) -#define HID_NEWS_USER (HID_SFX_START + 49) -#define HID_MULTISELECTION_GENERAL_PAGE (HID_SFX_START + 50) -#define HID_LINK_GENERAL_PAGE (HID_SFX_START + 51) -#define HID_LINK_ADDRESS_PAGE (HID_SFX_START + 52) -#define HID_FOLDER_GENERAL_PAGE (HID_SFX_START + 53) -#define HID_FILE_GENERAL_PAGE (HID_SFX_START + 54) -#define HID_FTP_GENERAL_PAGE (HID_SFX_START + 55) -#define HID_PRINT_OPTIONS (HID_SFX_START + 56) -#define HID_PREVIEW_FRAME (HID_SFX_START + 57) -#define HID_DOCINFO_FRAME (HID_SFX_START + 58) -#define HID_EXPLORER_FRAME (HID_SFX_START + 59) -#define HID_APP_WIN (HID_SFX_START + 60) -#define HID_TEMPLATE_FMT (HID_SFX_START + 61) -#define HID_TEMPLATE_FILTER (HID_SFX_START + 62) -#define HID_FTPSERVER_PAGE (HID_SFX_START + 63) -#define HID_DLG_SFX_EXP_SEARCH (HID_SFX_START + 65) -#define HID_TP_SFX_EXP_SEARCH_CRITERIA (HID_SFX_START + 66) -#define HID_TP_SFX_EXP_SEARCH_PLACE (HID_SFX_START + 67) -#define HID_SEARCH_DLG_TABLB (HID_SFX_START + 68) -#define HID_TEMPLDLG_NEWBYEXAMPLE (HID_SFX_START + 69) -#define HID_TEMPLDLG_UPDATEBYEXAMPLE (HID_SFX_START + 70) -#define HID_TEMPLDLG_WATERCAN (HID_SFX_START + 71) -#define HID_DESKTOP (HID_SFX_START + 78) -#define HID_EXPLORERTOOLSTOOLBOX (HID_SFX_START + 79) -#define HID_EXPLOREROBJECTTOOLBOX (HID_SFX_START + 80) -#define HID_RECORDINGTOOLBOX (HID_SFX_START + 81) -#define HID_FULLSCREENTOOLBOX (HID_SFX_START + 82) -#define HID_HELPBAR (HID_SFX_START + 83) -#define HID_ENVTOOLBOX (HID_SFX_START + 84) -#define HID_FRAMESETEDIT_TOOLBOX (HID_SFX_START + 85) -#define HID_NAVIGATOR_WINDOW (HID_SFX_START + 86) -#define HID_TABDLG_RESET_BTN (HID_SFX_START + 89) -#define HID_TABDLG_STANDARD_BTN (HID_SFX_START + 90) -#define HID_HELPAGENT_TIP_BOX (HID_SFX_START + 91) -#define HID_TEMPLDLG_TOOLBOX_LEFT (HID_SFX_START + 92) -#define HID_TEMPLDLG_TOOLBOX_RIGHT (HID_SFX_START + 93) -#define HID_EXPLORER_SRCH_COUNT (HID_SFX_START + 94) -#define HID_BEAMER_SORT_ASCENDING (HID_SFX_START + 95) -#define HID_BEAMER_SORT_DESCENDING (HID_SFX_START + 96) -#define HID_EXPLORER_SRCH_LATEST_COUNT (HID_SFX_START + 97) -#define HID_CONFIG_EVENT_OFFICE_BASED (HID_SFX_START + 98) -#define HID_CONFIG_EVENT_DOCUMENT_BASED (HID_SFX_START + 99) -#define HID_ORGANIZE_NEW (HID_SFX_START + 100) -#define HID_ORGANIZE_DELETE (HID_SFX_START + 101) -#define HID_ORGANIZE_EDIT (HID_SFX_START + 102) -#define HID_ORGANIZE_COPY_FROM (HID_SFX_START + 103) -#define HID_ORGANIZE_COPY_TO (HID_SFX_START + 104) -#define HID_ORGANIZE_PRINT (HID_SFX_START + 105) -#define HID_ORGANIZE_PRINTER_SETUP (HID_SFX_START + 106) -#define HID_ORGANIZE_RESCAN (HID_SFX_START + 107) -#define HID_STYLIST_NEW (HID_SFX_START + 108) -#define HID_STYLIST_EDIT (HID_SFX_START + 109) -#define HID_STYLIST_DELETE (HID_SFX_START + 110) -#define HID_EXPLORERMENU_ARRANGEICONS (HID_SFX_START + 111) -#define HID_EXPLORERMENU_ARRANGEICONS_ONGRID (HID_SFX_START + 112) -#define HID_EXPLORERMENU_FIXEDICONPOS (HID_SFX_START + 113) -#define HID_EXPLORERMENU_OPEN (HID_SFX_START + 114) -#define HID_EXPLORERMENU_PRINT (HID_SFX_START + 115) -#define HID_EXPLORERMENU_SEARCH (HID_SFX_START + 116) -#define HID_EXPLORERMENU_COPY (HID_SFX_START + 117) -#define HID_EXPLORERMENU_DELETE (HID_SFX_START + 118) -#define HID_EXPLORERMENU_CREATELINK (HID_SFX_START + 119) -#define HID_EXPLORERMENU_EDITPROPERTIES (HID_SFX_START + 120) -#define HID_EXPLORERMENU_DOWNLOAD (HID_SFX_START + 121) -#define HID_EXPLORERMENU_STDTEMPLATE (HID_SFX_START + 122) -#define HID_EXPLORERDLG_FILELIST (HID_SFX_START + 124) -#define HID_PDFOLDERS_WORKPLACE (HID_SFX_START + 125) -#define HID_PDFOLDERS_EXPLORER (HID_SFX_START + 126) -#define HID_PDFOLDERS_STANDARD (HID_SFX_START + 127) -#define HID_PDFOLDERS_ROOT (HID_SFX_START + 128) -#define HID_PDFOLDERS_DESKTOP (HID_SFX_START + 129) -#define HID_CNTMENU_REMOVE_GROUP (HID_SFX_START + 130) -#define HID_CNTMENU_CLEAR_CACHE (HID_SFX_START + 131) -#define HID_CNT_SYNC_INFO_DLG (HID_SFX_START + 132) -#define HID_CNT_REMOVE_REMOVEDLIST (HID_SFX_START + 133) -#define HID_CNT_ABORT_DIALOG (HID_SFX_START + 134) -#define HID_CNT_PAGE_PRJ_DATAEXCHANGE (HID_SFX_START + 135) -#define HID_CHAOSDOC_OBJECTBAR_FILE (HID_SFX_START + 136) -#define HID_CHAOSDOC_OBJECTBAR_MESSAGE (HID_SFX_START + 137) -#define HID_CHAOSDOC_MN_PART_OPEN (HID_SFX_START + 138) -#define HID_CHAOSDOC_MN_PART_DELETE (HID_SFX_START + 139) -#define HID_CHAOSDOC_MN_PART_RENAME (HID_SFX_START + 140) -#define HID_CHAOSDOC_MN_PART_SAVEAS (HID_SFX_START + 141) -#define HID_EXPLORER_DOCVIEW_ICON (HID_SFX_START + 142) -#define HID_EXPLORER_DOCVIEW_DETAILS (HID_SFX_START + 143) -#define HID_CHAOSDOC_WIN (HID_SFX_START + 144) -#define HID_CHAOSDOC_WIN_HEADER (HID_SFX_START + 145) -#define HID_CHAOSDOC_WIN_PARTS (HID_SFX_START + 146) -#define HID_CHAOSDOC_WIN_BODY (HID_SFX_START + 147) -#define HID_CNT_INSERT_COLUMN (HID_SFX_START + 148) -#define HID_CNT_REMOVE_COLUMN (HID_SFX_START + 149) -#define HID_CNT_OPT_WIDTH (HID_SFX_START + 150) -#define HID_CNT_SORT_ASC (HID_SFX_START + 151) -#define HID_CNT_SORT_DESC (HID_SFX_START + 152) -#define HID_CNT_RULEPG_OPEN_DIR (HID_SFX_START + 153) -#define HID_CHAOSDOC_MN_HEADER_ADDRESSBOOK (HID_SFX_START + 154) -#define HID_CHAOSDOC_MN_HEADER_COPYLINK (HID_SFX_START + 155) -#define HID_CLEAN_CACHE (HID_SFX_START + 156) -#define HID_SBOX_LOCATION (HID_SFX_START + 157) -#define HID_SBOX_SUBSCRIBTION (HID_SFX_START + 158) -#define HID_SBOX_CDF_SUBSCRIBTION (HID_SFX_START + 159) -#define HID_SBOX_SCHEDULE (HID_SFX_START + 160) -#define HID_SBOX_NOTIFICATION (HID_SFX_START + 161) -#define HID_SBOX_SDC_GENERAL (HID_SFX_START + 162) -#define HID_BRWBOX_HEADERBAR (HID_SFX_START + 163) -#define HID_CANNOT_CREATE_BMK_HERE (HID_SFX_START + 164) -#define HID_CREATE_BOOKMARK (HID_SFX_START + 165) -#define HID_TASKBAR (HID_SFX_START + 166) -#define HID_TASKBUTTONBAR (HID_SFX_START + 167) -#define HID_TASKTOOLBAR (HID_SFX_START + 168) -#define HID_CHAOSDOC_SHOW_FSYS_EXTENSION (HID_SFX_START + 169) -#define HID_CNT_FILE (HID_SFX_START + 170) -#define HID_CHAOSDOC_MN_BODY_OPENLINK (HID_SFX_START + 171) -#define HID_CHAOSDOC_MN_BODY_OPENLINK_BLANK (HID_SFX_START + 172) -#define HID_CHAOSDOC_MN_BODY_DOWNLOAD (HID_SFX_START + 173) -#define HID_CHAOSDOC_MN_BODY_ADDBOOKMARK (HID_SFX_START + 174) -#define HID_OPEN_MENU_CNT (HID_SFX_START + 175) -#define HID_CNT_OPEN_AS_TEMPLATE (HID_SFX_START + 176) -#define HID_CNT_OPEN_AS_DOC (HID_SFX_START + 177) -#define HID_PDFOLDERS_TEMPLATE (HID_SFX_START + 178) -#define HID_EXPLORER_ROOT (HID_SFX_START + 179) -#define HID_RESET_URL (HID_SFX_START + 180) -#define HID_PHONE_DIALOG (HID_SFX_START + 181) -#define HID_QB_RESOLVE_LINK (HID_SFX_START + 182) -#define HID_CHAOSDOC_MN_HEADER_FLAG_BOLD (HID_SFX_START + 183) -#define HID_CHAOSDOC_MN_HEADER_FLAG_ITALIC (HID_SFX_START + 184) -#define HID_CHAOSDOC_MN_HEADER_BIG_HEADER (HID_SFX_START + 185) -#define HID_CHAOSDOC_MN_HEADER_TEMPLATE_HEADER (HID_SFX_START + 186) -#define HID_CNT_MARK_THREAD_MARKED (HID_SFX_START + 187) -#define HID_CNT_MARK_THREAD_UNMARKED (HID_SFX_START + 188) -#define HID_CNT_DLG_SEARCH_BT_SHOW (HID_SFX_START + 189) -#define HID_CNT_DLG_SEARCH_BT_UPDATE (HID_SFX_START + 190) -#define HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE (HID_SFX_START + 191) -#define HID_CNT_DLG_SEARCH_BT_STOP (HID_SFX_START + 192) -#define HID_CNT_PAGE_HEADER (HID_SFX_START + 193) -#define HID_CNT_DLG_ADDRESS (HID_SFX_START + 194) -#define HID_EXPLORERMENU_AUTO_ARRANGEICONS (HID_SFX_START + 195) -#define HID_EXPLORERMENU_AUTO_ADJUSTICONS (HID_SFX_START + 196) -#define HID_EXPLORERMENU_FREE_POSITIONING (HID_SFX_START + 197) -#define HID_CNT_TARGET_MENU (HID_SFX_START + 198) -#define HID_CNT_PAGE_DESCRIPTION (HID_SFX_START + 199) -#define HID_CNT_LB_HEADER (HID_SFX_START + 200) -#define HID_CNT_LB_DESCRIPTION (HID_SFX_START + 201) -#define HID_GROUPVIEW_BIG_SYMBOLS (HID_SFX_START + 202) -#define HID_GROUPVIEW_SMALL_SYMBOLS (HID_SFX_START + 203) -#define HID_GROUPVIEW_ADD_GROUP (HID_SFX_START + 204) -#define HID_GROUPVIEW_REMOVE_GROUP (HID_SFX_START + 205) -#define HID_GROUPVIEW_RENAME_GROUP (HID_SFX_START + 206) -#define HID_GROUPVIEW_ADD_BOOKMARK (HID_SFX_START + 207) -#define HID_GROUPVIEW_TREE (HID_SFX_START + 208) -#define HID_GROUPVIEW_ADD_AS_FOLDER (HID_SFX_START + 209) -#define HID_GROUPVIEW_ADD_AS_BMK (HID_SFX_START + 210) -#define HID_GROUPVIEW_REMOVE_BMK (HID_SFX_START + 211) -#define HID_GROUPVIEW_CONTENT_BIG (HID_SFX_START + 212) -#define HID_GROUPVIEW_CONTENT_SMALL (HID_SFX_START + 213) -#define HID_GROUPVIEW_CONTENT_TREE (HID_SFX_START + 214) -#define HID_GROUPVIEW_SHOW_DOCS (HID_SFX_START + 215) -#define HID_EDIT_TEMPLATE (HID_SFX_START + 216) -#define HID_PDFOLDERS_GRAPHICS (HID_SFX_START + 217) -#define HID_FILEDLG_AUTOCOMPLETEBOX (HID_SFX_START + 218) -#define HID_FILEDLG_SAVE_BTN (HID_SFX_START + 219) -#define HID_FILEDLG_SAVE_FILENAME (HID_SFX_START + 220) -#define HID_FILEDLG_SAVE_FILETYPE (HID_SFX_START + 221) -#define HID_FILEDLG_INSERT_BTN (HID_SFX_START + 222) -#define HID_FILEDLG_PATH_BTN (HID_SFX_START + 223) -#define HID_FILEDLG_PATH_FILENAME (HID_SFX_START + 224) -#define HID_FILEDLG_FOLDER_BTN (HID_SFX_START + 225) -#define HID_FILEDLG_FOLDER_FILENAME (HID_SFX_START + 226) -#define HID_FILEDLG_SRCHFOLDER_BTN (HID_SFX_START + 227) -#define HID_PDFOLDERS_GROUPS (HID_SFX_START + 228) -#define HID_OPEN_CHOOSE_FILTER (HID_SFX_START + 229) -#define HID_PDFOLDERS_BOOKMARKS (HID_SFX_START + 230) -#define HID_PDFOLDERS_FAVORITES_ADD (HID_SFX_START + 231) -#define HID_PDFOLDERS_FAVORITES_REMOVE (HID_SFX_START + 232) -#define HID_PDFOLDERS_HISTORY (HID_SFX_START + 233) -#define HID_FILEDLG_EDIT_FAVORITES (HID_SFX_START + 234) -#define HID_FILEDLG_NEW_FAVORITE (HID_SFX_START + 235) -#define HID_FILEDLG_EDIT_FAVORITES_LISTBOX (HID_SFX_START + 236) -#define HID_FILEDLG_EDIT_FAVORITES_HEADERBAR (HID_SFX_START + 237) -#define HID_CNT_CB_FORCE_BODY_EXPORT (HID_SFX_START + 240) -#define HID_CNT_PAGE_REPSTATE_CONTROL (HID_SFX_START + 241) -#define HID_TASKSTATUSBAR (HID_SFX_START + 242) -#define HID_CNT_PAGE_HEADER_TABBAR (HID_SFX_START + 244) -#define HID_CNT_PAGE_SUBSCR_TABBAR (HID_SFX_START + 245) -#define HID_CHAOSDOC_MN_PART_PRINT (HID_SFX_START + 246) -#define HID_STATUSINDICATOR_TEXT (HID_SFX_START + 247) -#define HID_STATUSINDICATOR_PROGRESS (HID_SFX_START + 248) -#define HID_CNT_VALUE_ADDED_NONE (HID_SFX_START + 249) -#define HID_CNT_VALUE_ADDED_DOCINFO (HID_SFX_START + 250) -#define HID_CNT_VALUE_ADDED_FULL (HID_SFX_START + 251) -#define HID_CNT_MESSAGE_STOREMODE_REMOTE (HID_SFX_START + 252) -#define HID_CNT_MESSAGE_STOREMODE_LOCAL (HID_SFX_START + 253) -#define HID_CNT_VIEW_ALL_ARTICLES (HID_SFX_START + 254) -#define HID_CNT_VIEW_UNREAD_ARTICLES (HID_SFX_START + 255) -#define HID_CNT_VIEW_READ_ARTICLES (HID_SFX_START + 256) -#define HID_CNT_VIEW_MARKED_ARTICLES (HID_SFX_START + 257) -#define HID_CNT_VIEW_MARKED_AND_UNREAD_ARTICLES (HID_SFX_START + 258) -#define HID_CNT_VIEW_ALL_FOLDERS (HID_SFX_START + 259) -#define HID_CNT_VIEW_SUBSCRIBED_FOLDERS (HID_SFX_START + 260) -#define HID_CNT_VIEW_ACTIVE_FOLDERS (HID_SFX_START + 261) -#define HID_CNT_SENT_VIEW_ALL_ARTICLES (HID_SFX_START + 262) -#define HID_CNT_SENT_VIEW_SENT_ARTICLES (HID_SFX_START + 263) -#define HID_CNT_SENT_VIEW_UNSENT_ARTICLES (HID_SFX_START + 264) -#define HID_CNT_SENT_VIEW_MARKED_ARTICLES (HID_SFX_START + 265) -#define HID_MAILWIN_SEND_BUTTON (HID_SFX_START + 266) -#define HID_MAILWIN_CLOSE_BUTTON (HID_SFX_START + 267) -#define HID_MAILWIN_ROLE_BOX (HID_SFX_START + 268) -#define HID_MAILWIN_ADDRESS_EDIT (HID_SFX_START + 269) -#define HID_MAILWIN_ADDRESS_BOX (HID_SFX_START + 270) -#define HID_MAILWIN_SUBJECT_EDIT (HID_SFX_START + 271) -#define HID_MAILWIN_FROM_EDIT (HID_SFX_START + 272) -#define HID_MAILWIN_PRIO_BOX (HID_SFX_START + 273) -#define HID_TABDLG_APPLY_BTN (HID_SFX_START + 274) -#define HID_TP_COMMONPRINTOPTIONS (HID_SFX_START + 275) -#define HID_FILEDLG_LINK_CB (HID_SFX_START + 276) -#define HID_FILEDLG_PREVIEW_CB (HID_SFX_START + 277) -#define HID_HELP_WINDOW (HID_SFX_START + 278) -#define HID_HELP_LISTBOX (HID_SFX_START + 279) -#define HID_HELP_TABCONTROL (HID_SFX_START + 280) -#define HID_HELP_TOOLBOX (HID_SFX_START + 281) -#define HID_HELP_TOOLBOXITEM_INDEX (HID_SFX_START + 282) -#define HID_HELP_TOOLBOXITEM_START (HID_SFX_START + 283) -#define HID_HELP_TOOLBOXITEM_BACKWARD (HID_SFX_START + 284) -#define HID_HELP_TOOLBOXITEM_FORWARD (HID_SFX_START + 285) -#define HID_HELP_TOOLBOXITEM_PRINT (HID_SFX_START + 286) -#define HID_HELP_TOOLBOXITEM_BOOKMARKS (HID_SFX_START + 287) -#define HID_HELP_TABPAGE_CONTENTS (HID_SFX_START + 288) -#define HID_HELP_TABPAGE_INDEX (HID_SFX_START + 289) -#define HID_HELP_TABPAGE_SEARCH (HID_SFX_START + 290) -#define HID_HELP_TABPAGE_BOOKMARKS (HID_SFX_START + 291) -#define HID_TBXCONTROL_FILENEW (HID_SFX_START + 292) -#define HID_ORGANIZE_STDTEMPLATE_ADD (HID_SFX_START + 293) -#define HID_ORGANIZE_STDTEMPLATE_DEL (HID_SFX_START + 294) -#define HID_HELP_TOOLBOXITEM_SEARCHDIALOG (HID_SFX_START + 295) -#define HID_HELP_BOOKMARKS_OPEN (HID_SFX_START + 296) -#define HID_HELP_BOOKMARKS_RENAME (HID_SFX_START + 297) -#define HID_HELP_BOOKMARKS_DELETE (HID_SFX_START + 298) -#define HID_CLOSE_WARNING (HID_SFX_START + 299) -#define HID_DID_SAVE_PACKED_XML (HID_SFX_START + 300) -#define HID_HELP_TREELISTBOX_CONTENTS (HID_SFX_START + 301) -#define HID_CUSTOMIZETOOLBOX (HID_SFX_START + 302) -#define HID_CUSTOMIZETOOLBOX_FUNCTIONS (HID_SFX_START + 303) -#define HID_CUSTOMIZETOOLBOX_TOOLBOX (HID_SFX_START + 304) -#define HID_HELP_TEXT_SELECTION_MODE (HID_SFX_START + 305) +#define HID_WARNING_SECURITY_HYPERLINK "SFX2_HID_WARNING_SECURITY_HYPERLINK" +#define HID_USERDEFBMP_TOOLBOX "SFX2_HID_USERDEFBMP_TOOLBOX" -#define HID_WARNING_SECURITY_HYPERLINK (HID_SFX_START + 306) -#define HID_FILEDLG_EXPORTASPDF (HID_SFX_START + 307) -#define HID_USERDEFBMP_TOOLBOX (HID_SFX_START + 308) +#define HID_CONFIG_LOAD "SFX2_HID_CONFIG_LOAD" +#define HID_CONFIG_SAVE "SFX2_HID_CONFIG_SAVE" -#define HID_CONFIG_LOAD (HID_SFX_START + 309) -#define HID_CONFIG_SAVE (HID_SFX_START + 310) +#define HID_SEARCHDIALOG "SFX2_HID_SEARCHDIALOG" -#define HID_SEARCHDIALOG (HID_SFX_START + 311) -#define HID_TASKPANE_WINDOW (HID_SFX_START + 312) -#define HID_TASKPANE_VIEW_MENU (HID_SFX_START + 313) -#define HID_XMLSEC_WARNING_BROKENSIGNATURE (HID_SFX_START + 314) -#define HID_XMLSEC_QUERY_LOSINGSIGNATURE (HID_SFX_START + 315) -#define HID_XMLSEC_QUERY_SAVEBEFORESIGN (HID_SFX_START + 316) -#define HID_XMLSECDLG_MACROWARN (HID_SFX_START + 317) -#define HID_XMLSEC_INFO_WRONGDOCFORMAT (HID_SFX_START + 318) -#define HID_WARNING_MACROSDISABLED (HID_SFX_START + 319) -#define HID_WARNING_ALIENFORMAT (HID_SFX_START + 320) -#define HID_HELP_ONSTARTUP_BOX (HID_SFX_START + 321) -#define HID_DLG_CHECKFORONLINEUPDATE (HID_SFX_START + 322) -#define HID_TP_CUSTOMPROPERTIES (HID_SFX_START + 324) -#define HID_CTRL_CUSTOMPROPERTIES (HID_SFX_START + 325) -#define HID_CTRL_CUSTOMPROPS_YES_NO (HID_SFX_START + 326) -#define HID_DLG_CUSTOMPROPS_DURATION (HID_SFX_START + 327) +#define HID_XMLSEC_WARNING_BROKENSIGNATURE "SFX2_HID_XMLSEC_WARNING_BROKENSIGNATURE" +#define HID_XMLSEC_QUERY_LOSINGSIGNATURE "SFX2_HID_XMLSEC_QUERY_LOSINGSIGNATURE" +#define HID_XMLSEC_QUERY_SAVEBEFORESIGN "SFX2_HID_XMLSEC_QUERY_SAVEBEFORESIGN" +#define HID_XMLSECDLG_MACROWARN "SFX2_HID_XMLSECDLG_MACROWARN" +#define HID_XMLSEC_INFO_WRONGDOCFORMAT "SFX2_HID_XMLSEC_INFO_WRONGDOCFORMAT" +#define HID_WARNING_MACROSDISABLED "SFX2_HID_WARNING_MACROSDISABLED" +#define HID_WARNING_ALIENFORMAT "SFX2_HID_WARNING_ALIENFORMAT" +#define HID_HELP_ONSTARTUP_BOX "SFX2_HID_HELP_ONSTARTUP_BOX" +#define HID_DLG_CHECKFORONLINEUPDATE "SFX2_HID_DLG_CHECKFORONLINEUPDATE" +#define HID_TP_CUSTOMPROPERTIES "SFX2_HID_TP_CUSTOMPROPERTIES" +#define HID_CTRL_CUSTOMPROPERTIES "SFX2_HID_CTRL_CUSTOMPROPERTIES" +#define HID_CTRL_CUSTOMPROPS_YES_NO "SFX2_HID_CTRL_CUSTOMPROPS_YES_NO" +#define HID_DLG_CUSTOMPROPS_DURATION "SFX2_HID_DLG_CUSTOMPROPS_DURATION" -#define HID_SECURITYTAB_PASSWORD_TO_OPEN (HID_SFX_START + 328) -#define HID_SECURITYTAB_CONFIRM_PASSWORD_TO_OPEN (HID_SFX_START + 329) -#define HID_SECURITYTAB_PASSWORD_TO_MODIFY (HID_SFX_START + 330) -#define HID_SECURITYTAB_CONFIRM_PASSWORD_TO_MODIFY (HID_SFX_START + 331) -#define HID_SECURITYTAB_OPEN_FILE_READONLY (HID_SFX_START + 332) -#define HID_SECURITYTAB_RECORD_CHANGES (HID_SFX_START + 333) -#define HID_SECURITYTAB_PROTECTION (HID_SFX_START + 334) +#define HID_HELP_ONHELP "SFX2_HID_HELP_ONHELP" -#define ACT_SFX_HID_END HID_SECURITYTAB_PROTECTION +#define HID_QUERY_LOAD_TEMPLATE "SFX2_HID_QUERY_LOAD_TEMPLATE" -// "Uberlaufpr"ufung -------------------------------------------------------- +#define HID_SECURITYTAB_PASSWORD_TO_OPEN "SFX2_HID_SECURITYTAB_PASSWORD_TO_OPEN" +#define HID_SECURITYTAB_CONFIRM_PASSWORD_TO_OPEN "SFX2_HID_SECURITYTAB_CONFIRM_PASSWORD_TO_OPEN" +#define HID_SECURITYTAB_PASSWORD_TO_MODIFY "SFX2_HID_SECURITYTAB_PASSWORD_TO_MODIFY" +#define HID_SECURITYTAB_CONFIRM_PASSWORD_TO_MODIFY "SFX2_HID_SECURITYTAB_CONFIRM_PASSWORD_TO_MODIFY" +#define HID_SECURITYTAB_OPEN_FILE_READONLY "SFX2_HID_SECURITYTAB_OPEN_FILE_READONLY" +#define HID_SECURITYTAB_RECORD_CHANGES "SFX2_HID_SECURITYTAB_RECORD_CHANGES" +#define HID_SECURITYTAB_PROTECTION "SFX2_HID_SECURITYTAB_PROTECTION" -#if ACT_SFX_HID_END > HID_SFX_END -#error Resource-Ueberlauf in #line, #file -#endif - -#define HID_HELP_ONHELP 68245 +#define HID_TASKPANE_WINDOW "SFX2_HID_TASKPANE_WINDOW" +#define HID_TASKPANE_VIEW_MENU "SFX2_HID_TASKPANE_VIEW_MENU" +#define HID_DOCINFOSECURITY "SFX2_HID_DOCINFOSECURITY" #endif // #ifndef _SFX_HELPID_HRC diff --git a/sfx2/source/inc/workwin.hxx b/sfx2/source/inc/workwin.hxx index a82b72bc2947..0e263a58b90e 100644 --- a/sfx2/source/inc/workwin.hxx +++ b/sfx2/source/inc/workwin.hxx @@ -28,6 +28,7 @@ #define _SFXWORKWIN_HXX #include <vector> +#include <deque> #include <com/sun/star/frame/XDispatch.hpp> #include <com/sun/star/frame/XFrame.hpp> #ifndef _COM_SUN_STAR_UI_XUILEMENT_HPP_ @@ -175,11 +176,10 @@ enum SfxDockingConfig DECL_PTRARRAY( SfxChildList_Impl, SfxChild_Impl*, 2, 2 ) DECL_PTRARRAY( SfxChildWindows_Impl, SfxChildWin_Impl*, 2, 2 ) -SV_DECL_OBJARR( SfxObjectBarArr_Impl, SfxObjectBar_Impl, 1, 2 ) struct SfxObjectBarList_Impl { - SfxObjectBarArr_Impl aArr; + std::deque<SfxObjectBar_Impl> aArr; USHORT nAct; SfxObjectBar_Impl operator[] ( USHORT n ) diff --git a/sfx2/source/menu/menu.src b/sfx2/source/menu/menu.src index a2e07a3348b0..5e3d8296bb59 100644 --- a/sfx2/source/menu/menu.src +++ b/sfx2/source/menu/menu.src @@ -26,6 +26,7 @@ ************************************************************************/ #include "menu.hrc" +#include <sfx2/sfxcommands.h> String STR_MENU_CFGITEM { @@ -44,19 +45,19 @@ Menu MN_CLIPBOARDFUNCS MenuItem { Identifier = SID_CUT ; - HelpID = SID_CUT ; + HelpID = CMD_SID_CUT ; Text [ en-US ] = "Cu~t" ; }; MenuItem { Identifier = SID_COPY ; - HelpID = SID_COPY ; + HelpID = CMD_SID_COPY ; Text [ en-US ] = "~Copy" ; }; MenuItem { Identifier = SID_PASTE ; - HelpID = SID_PASTE ; + HelpID = CMD_SID_PASTE ; Text [ en-US ] = "~Paste" ; }; }; diff --git a/sfx2/source/menu/mnumgr.cxx b/sfx2/source/menu/mnumgr.cxx index 031594c647fb..b3e5717dd7b6 100755 --- a/sfx2/source/menu/mnumgr.cxx +++ b/sfx2/source/menu/mnumgr.cxx @@ -173,7 +173,6 @@ void InsertVerbs_Impl( SfxBindings* pBindings, const com::sun::star::uno::Sequen // einf"ugen pMenu->InsertItem( nId, aVerbs[n].VerbName ); - pMenu->SetHelpId( nId, (ULONG) nId ); } } } @@ -485,10 +484,10 @@ void SfxPopupMenuManager::InsertSeparator( USHORT nPos ) //------------------------------------------------------------------------- -void SfxPopupMenuManager::InsertItem( USHORT nId, const String& rName, MenuItemBits nBits, USHORT nPos ) +void SfxPopupMenuManager::InsertItem( USHORT nId, const String& rName, MenuItemBits nBits, const rtl::OString& rHelpId, USHORT nPos ) { pSVMenu->InsertItem( nId, rName, nBits,nPos ); - pSVMenu->SetHelpId( nId, (ULONG) nId ); + pSVMenu->SetHelpId( nId, rHelpId ); } //------------------------------------------------------------------------- diff --git a/sfx2/source/menu/virtmenu.cxx b/sfx2/source/menu/virtmenu.cxx index 13c84bc531e2..48ff6a3948c5 100644 --- a/sfx2/source/menu/virtmenu.cxx +++ b/sfx2/source/menu/virtmenu.cxx @@ -345,7 +345,9 @@ void SfxVirtualMenu::CreateFromSVMenu() DBG_CHKTHIS(SfxVirtualMenu, 0); // Merge Addon popup menus into the SV Menu - Reference< com::sun::star::frame::XFrame > xFrame( pBindings->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface() ); + SfxViewFrame* pViewFrame = pBindings->GetDispatcher()->GetFrame(); + SfxSlotPool* pSlotPool = pViewFrame->GetObjectShell()->GetModule()->GetSlotPool(); + Reference< com::sun::star::frame::XFrame > xFrame( pViewFrame->GetFrame().GetFrameInterface() ); if ( pSVMenu->IsMenuBar() ) { @@ -448,23 +450,14 @@ void SfxVirtualMenu::CreateFromSVMenu() } else { -/* - if ( nSlotId >= SID_SFX_START && !SfxMenuManager::IsPopupFunction(nSlotId) ) + const SfxSlot* pSlot = pSlotPool->GetSlot( nSlotId ); + if ( pSlot ) { - // Echte Popups sollen keine SlotIds haben; leider sind - // da noch Altlasten mit herumzuschleppen ... - String aTitle = pSVMenu->GetItemText( nSlotId ); - pSVMenu->SetPopupMenu( nSlotId, NULL ); - USHORT nPos = pSVMenu->GetItemPos( nSlotId ); - pSVMenu->RemoveItem( nPos ); - nSlotId = 1; - while ( pSVMenu->GetItemPos(nSlotId) != MENU_ITEM_NOTFOUND ) - nSlotId++; - pSVMenu->InsertItem( nSlotId, aTitle, 0, nPos ); - pSVMenu->SetPopupMenu( nSlotId, pPopup ); + rtl::OString aCmd(".uno:"); + aCmd += pSlot->GetUnoName(); + pSVMenu->SetHelpId( nSlotId, pSlot->GetUnoName() ); } -*/ - pSVMenu->SetHelpId( nSlotId, 0L ); + pMnuCtrl = pItems+nPos; // normalerweise jetzt erst im Activate-Handler diff --git a/sfx2/source/statbar/stbitem.cxx b/sfx2/source/statbar/stbitem.cxx index defccd4e23be..e5de57d835c3 100644 --- a/sfx2/source/statbar/stbitem.cxx +++ b/sfx2/source/statbar/stbitem.cxx @@ -132,7 +132,12 @@ svt::StatusbarController* SAL_CALL SfxStatusBarControllerFactory( { USHORT nSlotId = pSlot->GetSlotId(); if ( nSlotId > 0 ) + { + rtl::OString aCmd(".uno:"); + aCmd += pSlot->GetUnoName(); + pStatusBar->SetHelpId( nSlotId, aCmd ); return SfxStatusBarControl::CreateControl( nSlotId, nID, pStatusBar, pModule ); + } } return NULL; diff --git a/sfx2/source/view/frame2.cxx b/sfx2/source/view/frame2.cxx index d43512ac791d..36edd34c973d 100644 --- a/sfx2/source/view/frame2.cxx +++ b/sfx2/source/view/frame2.cxx @@ -127,15 +127,15 @@ long SfxFrameWindow_Impl::Notify( NotifyEvent& rNEvt ) // TODO/LATER: do we still need this code? Window* pWindow = rNEvt.GetWindow(); - ULONG nHelpId = 0; - while ( !nHelpId && pWindow ) + rtl::OString sHelpId; + while ( !sHelpId.getLength() && pWindow ) { - nHelpId = pWindow->GetHelpId(); + sHelpId = pWindow->GetHelpId(); pWindow = pWindow->GetParent(); } - if ( nHelpId ) - SfxHelp::OpenHelpAgent( pFrame, nHelpId ); + if ( sHelpId.getLength() ) + SfxHelp::OpenHelpAgent( pFrame, sHelpId ); // if focus was on an external window, the clipboard content might have been changed pView->GetBindings().Invalidate( SID_PASTE ); diff --git a/sfx2/source/view/ipclient.cxx b/sfx2/source/view/ipclient.cxx index 328d88d8b2b9..997cb584f83d 100644 --- a/sfx2/source/view/ipclient.cxx +++ b/sfx2/source/view/ipclient.cxx @@ -220,6 +220,7 @@ void SAL_CALL SfxInPlaceClient_Impl::notifyEvent( const document::EventObject& a if ( m_pClient && aEvent.EventName.equalsAscii("OnVisAreaChanged") && m_nAspect != embed::Aspects::MSOLE_ICON ) { + m_pClient->FormatChanged(); // for Writer when format of the object is changed with the area m_pClient->ViewChanged(); m_pClient->Invalidate(); } @@ -1082,6 +1083,11 @@ void SfxInPlaceClient::MakeVisible() // dummy implementation } +void SfxInPlaceClient::FormatChanged() +{ + // dummy implementation +} + void SfxInPlaceClient::DeactivateObject() { if ( GetObject().is() ) diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx index cda5fd0bdd7d..19aa4b75ee0f 100644 --- a/sfx2/source/view/sfxbasecontroller.cxx +++ b/sfx2/source/view/sfxbasecontroller.cxx @@ -1052,7 +1052,7 @@ void SAL_CALL SfxBaseController::dispose() throw( ::com::sun::star::uno::Runtime if ( pFrame && pFrame->GetViewShell() == m_pData->m_pViewShell ) pFrame->GetFrame().SetIsClosing_Impl(); m_pData->m_pViewShell->DiscardClients_Impl(); - m_pData->m_pViewShell->pImp->bControllerSet = sal_False ; + m_pData->m_pViewShell->pImp->m_bControllerSet = false; if ( pFrame ) { @@ -1438,11 +1438,11 @@ void SfxBaseController::ConnectSfxFrame_Impl( const ConnectSfxFrame i_eConnect ) try { Reference< XViewDataSupplier > xViewDataSupplier( getModel(), UNO_QUERY_THROW ); - Reference< XIndexAccess > xViewData( xViewDataSupplier->getViewData(), UNO_SET_THROW ); + Reference< XIndexAccess > xViewData( xViewDataSupplier->getViewData() ); // find the view data item whose ViewId matches the ID of the view we're just connecting to const SfxObjectFactory& rDocFactory( rDoc.GetFactory() ); - const sal_Int32 nCount = xViewData->getCount(); + const sal_Int32 nCount = xViewData.is() ? xViewData->getCount() : 0; sal_Int32 nViewDataIndex = 0; for ( sal_Int32 i=0; i<nCount; ++i ) { diff --git a/sfx2/source/view/viewimp.hxx b/sfx2/source/view/viewimp.hxx index be20cd2f2a47..0826e78870bb 100644 --- a/sfx2/source/view/viewimp.hxx +++ b/sfx2/source/view/viewimp.hxx @@ -25,8 +25,8 @@ * ************************************************************************/ -#ifndef _VIEWIMP_HXX -#define _VIEWIMP_HXX +#ifndef SFX_VIEWIMP_HXX +#define SFX_VIEWIMP_HXX // include --------------------------------------------------------------- @@ -56,28 +56,29 @@ struct SfxViewShell_Impl { ::osl::Mutex aMutex; ::cppu::OInterfaceContainerHelper aInterceptorContainer; - BOOL bControllerSet; + bool m_bControllerSet; SfxShellArr_Impl aArr; SvBorder aBorder; Size aOptimalSize; Size aMargin; - USHORT nPrinterLocks; - BOOL bCanPrint; - BOOL bHasPrintOptions; - BOOL bPlugInsActive; - BOOL bIsShowView; - BOOL bOwnsMenu; - BOOL bGotOwnerShip; - BOOL bGotFrameOwnerShip; - SfxScrollingMode eScroll; - USHORT nFamily; - SfxBaseController* pController; - ::svt::AcceleratorExecute* pAccExec; + USHORT m_nPrinterLocks; + bool m_bCanPrint; + bool m_bHasPrintOptions; + bool m_bPlugInsActive; + bool m_bIsShowView; + // FIXME UNUSED ??? + //bool m_bOwnsMenu; + bool m_bGotOwnership; + bool m_bGotFrameOwnership; + SfxScrollingMode m_eScroll; + USHORT m_nFamily; + ::rtl::Reference<SfxBaseController> m_pController; + ::std::auto_ptr< ::svt::AcceleratorExecute > m_pAccExec; com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue > aPrintOpts; ::rtl::Reference< SfxClipboardChangeListener > xClipboardListener; ::boost::shared_ptr< vcl::PrinterController > m_pPrinterController; - SfxViewShell_Impl(); + SfxViewShell_Impl(USHORT const nFlags); }; #endif diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx index 4ed0173be8e1..d1cfd8c2d181 100644 --- a/sfx2/source/view/viewprn.cxx +++ b/sfx2/source/view/viewprn.cxx @@ -143,18 +143,26 @@ SfxPrinterController::SfxPrinterController( const Any& i_rComplete, aRenderOptions[1].Value = i_rViewProp; aRenderOptions[2].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsPrinter" ) ); aRenderOptions[2].Value <<= sal_True; - Sequence< beans::PropertyValue > aRenderParms( mxRenderable->getRenderer( 0 , getSelectionObject(), aRenderOptions ) ); - int nProps = aRenderParms.getLength(); - for( int i = 0; i < nProps; i++ ) + try { - if( aRenderParms[i].Name.equalsAscii( "ExtraPrintUIOptions" ) ) + Sequence< beans::PropertyValue > aRenderParms( mxRenderable->getRenderer( 0 , getSelectionObject(), aRenderOptions ) ); + int nProps = aRenderParms.getLength(); + for( int i = 0; i < nProps; i++ ) { - Sequence< beans::PropertyValue > aUIProps; - aRenderParms[i].Value >>= aUIProps; - setUIOptions( aUIProps ); - break; + if( aRenderParms[i].Name.equalsAscii( "ExtraPrintUIOptions" ) ) + { + Sequence< beans::PropertyValue > aUIProps; + aRenderParms[i].Value >>= aUIProps; + setUIOptions( aUIProps ); + break; + } } } + catch( lang::IllegalArgumentException& ) + { + // the first renderer should always be available for the UI options, + // but catch the exception to be safe + } } // set some job parameters @@ -234,7 +242,13 @@ Sequence< beans::PropertyValue > SfxPrinterController::getPageParameters( int i_ if( mxRenderable.is() && pPrinter ) { Sequence< beans::PropertyValue > aJobOptions( getMergedOptions() ); - aResult = mxRenderable->getRenderer( i_nPage, getSelectionObject(), aJobOptions ); + try + { + aResult = mxRenderable->getRenderer( i_nPage, getSelectionObject(), aJobOptions ); + } + catch( lang::IllegalArgumentException& ) + { + } } return aResult; } @@ -836,7 +850,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) // execute PrinterSetupDialog PrinterSetupDialog* pPrintSetupDlg = new PrinterSetupDialog( GetWindow() ); - if ( pImp->bHasPrintOptions ) + if (pImp->m_bHasPrintOptions) { // additional controls for dialog pExecutor = new SfxDialogExecutor_Impl( this, pPrintSetupDlg ); @@ -985,7 +999,7 @@ ErrCode SfxViewShell::DoPrint( SfxPrinter* /*pPrinter*/, BOOL SfxViewShell::IsPrinterLocked() const { - return pImp->nPrinterLocks > 0; + return pImp->m_nPrinterLocks > 0; } //-------------------------------------------------------------------- @@ -994,9 +1008,13 @@ void SfxViewShell::LockPrinter( BOOL bLock) { BOOL bChanged = FALSE; if ( bLock ) - bChanged = 1 == ++pImp->nPrinterLocks; + { + bChanged = 1 == ++pImp->m_nPrinterLocks; + } else - bChanged = 0 == --pImp->nPrinterLocks; + { + bChanged = 0 == --pImp->m_nPrinterLocks; + } if ( bChanged ) { diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx index 5c65c967434f..968d0cbe8676 100644 --- a/sfx2/source/view/viewsh.cxx +++ b/sfx2/source/view/viewsh.cxx @@ -240,9 +240,21 @@ static ::rtl::OUString RetrieveLabelFromCommand( } //========================================================================= -SfxViewShell_Impl::SfxViewShell_Impl() +SfxViewShell_Impl::SfxViewShell_Impl(USHORT const nFlags) : aInterceptorContainer( aMutex ) -, pAccExec(0) +, m_bControllerSet(false) +, m_nPrinterLocks(0) +, m_bCanPrint(SFX_VIEW_CAN_PRINT == (nFlags & SFX_VIEW_CAN_PRINT)) +, m_bHasPrintOptions( + SFX_VIEW_HAS_PRINTOPTIONS == (nFlags & SFX_VIEW_HAS_PRINTOPTIONS)) +, m_bPlugInsActive(true) +, m_bIsShowView(SFX_VIEW_NO_SHOW != (nFlags & SFX_VIEW_NO_SHOW)) +, m_bGotOwnership(false) +, m_bGotFrameOwnership(false) +, m_eScroll(SCROLLING_DEFAULT) +, m_nFamily(0xFFFF) // undefined, default set by TemplateDialog +, m_pController(0) +, m_pAccExec(0) {} //========================================================================= @@ -374,7 +386,9 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq ) { SFX_REQUEST_ARG(rReq, pItem, SfxUInt16Item, nId, FALSE); if (pItem) - pImp->nFamily = pItem->GetValue(); + { + pImp->m_nFamily = pItem->GetValue(); + } break; } @@ -674,7 +688,9 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq ) case SID_PLUGINS_ACTIVE: { SFX_REQUEST_ARG(rReq, pShowItem, SfxBoolItem, nId, FALSE); - BOOL bActive = pShowItem ? pShowItem->GetValue() : !pImp->bPlugInsActive; + bool const bActive = (pShowItem) + ? pShowItem->GetValue() + : !pImp->m_bPlugInsActive; // ggf. recorden if ( !rReq.IsAPI() ) rReq.AppendItem( SfxBoolItem( nId, bActive ) ); @@ -684,7 +700,7 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq ) rReq.Done(TRUE); // ausfuehren - if ( !pShowItem || bActive != pImp->bPlugInsActive ) + if (!pShowItem || (bActive != pImp->m_bPlugInsActive)) { SfxFrame* pTopFrame = &GetFrame()->GetTopFrame(); if ( pTopFrame != &GetFrame()->GetFrame() ) @@ -704,7 +720,7 @@ void SfxViewShell::ExecMisc_Impl( SfxRequest &rReq ) SfxViewShell *pView = pTopFrame->GetCurrentViewFrame()->GetViewShell(); if ( pView ) { - pView->pImp->bPlugInsActive = bActive; + pView->pImp->m_bPlugInsActive = bActive; Rectangle aVisArea = GetObjectShell()->GetVisArea(); VisAreaChanged(aVisArea); @@ -758,7 +774,7 @@ void SfxViewShell::GetState_Impl( SfxItemSet &rSet ) case SID_SETUPPRINTER: case SID_PRINTER_NAME: { - BOOL bEnabled = pImp->bCanPrint && !pImp->nPrinterLocks; + bool bEnabled = pImp->m_bCanPrint && !pImp->m_nPrinterLocks; bEnabled = bEnabled && !Application::GetSettings().GetMiscSettings().GetDisablePrinting(); if ( bEnabled ) { @@ -812,7 +828,8 @@ void SfxViewShell::GetState_Impl( SfxItemSet &rSet ) // PlugIns running case SID_PLUGINS_ACTIVE: { - rSet.Put( SfxBoolItem( SID_PLUGINS_ACTIVE, !pImp->bPlugInsActive) ); + rSet.Put( SfxBoolItem( SID_PLUGINS_ACTIVE, + !pImp->m_bPlugInsActive) ); break; } /* @@ -832,7 +849,7 @@ void SfxViewShell::GetState_Impl( SfxItemSet &rSet ) */ case SID_STYLE_FAMILY : { - rSet.Put( SfxUInt16Item( SID_STYLE_FAMILY, pImp->nFamily ) ); + rSet.Put( SfxUInt16Item( SID_STYLE_FAMILY, pImp->m_nFamily ) ); break; } } @@ -1155,8 +1172,10 @@ void SfxViewShell::InvalidateBorder() DBG_ASSERT( GetViewFrame(), "SfxViewShell without SfxViewFrame" ); GetViewFrame()->InvalidateBorderImpl( this ); - if ( pImp->pController ) - pImp->pController->BorderWidthsChanged_Impl(); + if (pImp->m_pController.is()) + { + pImp->m_pController->BorderWidthsChanged_Impl(); + } } //-------------------------------------------------------------------- @@ -1171,8 +1190,10 @@ void SfxViewShell::SetBorderPixel( const SvBorder &rBorder ) GetViewFrame()->SetBorderPixelImpl( this, rBorder ); // notify related controller that border size is changed - if ( pImp->pController ) - pImp->pController->BorderWidthsChanged_Impl(); + if (pImp->m_pController.is()) + { + pImp->m_pController->BorderWidthsChanged_Impl(); + } } } @@ -1247,7 +1268,7 @@ SfxViewShell::SfxViewShell ) : SfxShell(this) - ,pImp( new SfxViewShell_Impl ) +, pImp( new SfxViewShell_Impl(nFlags) ) ,pIPClientList( 0 ) ,pFrame(pViewFrame) ,pSubShell(0) @@ -1257,22 +1278,12 @@ SfxViewShell::SfxViewShell DBG_CTOR(SfxViewShell, 0); //pImp->pPrinterCommandQueue = new SfxAsyncPrintExec_Impl( this ); - pImp->pController = 0; - pImp->bIsShowView = - !(SFX_VIEW_NO_SHOW == (nFlags & SFX_VIEW_NO_SHOW)); - - pImp->bCanPrint = SFX_VIEW_CAN_PRINT == (nFlags & SFX_VIEW_CAN_PRINT); - pImp->bHasPrintOptions = - SFX_VIEW_HAS_PRINTOPTIONS == (nFlags & SFX_VIEW_HAS_PRINTOPTIONS); - pImp->bPlugInsActive = TRUE; - pImp->bGotOwnerShip = FALSE; - pImp->bGotFrameOwnerShip = FALSE; + if ( pViewFrame->GetParentViewFrame() ) - pImp->bPlugInsActive = pViewFrame->GetParentViewFrame()->GetViewShell()->pImp->bPlugInsActive; - pImp->eScroll = SCROLLING_DEFAULT; - pImp->nPrinterLocks = 0; - pImp->bControllerSet = FALSE; - pImp->nFamily = 0xFFFF; // undefined, default set by TemplateDialog + { + pImp->m_bPlugInsActive = pViewFrame->GetParentViewFrame() + ->GetViewShell()->pImp->m_bPlugInsActive; + } SetMargin( pViewFrame->GetMargin_Impl() ); SetPool( &pViewFrame->GetObjectShell()->GetPool() ); @@ -1301,16 +1312,10 @@ SfxViewShell::~SfxViewShell() pImp->xClipboardListener = NULL; } - if ( pImp->pController ) + if (pImp->m_pController.is()) { - pImp->pController->ReleaseShell_Impl(); - pImp->pController->release(); - pImp->pController = NULL; - } - - if (pImp->pAccExec) - { - DELETEZ( pImp->pAccExec ); + pImp->m_pController->ReleaseShell_Impl(); + pImp->m_pController.clear(); } //DELETEZ( pImp->pPrinterCommandQueue ); @@ -1660,7 +1665,8 @@ void SfxViewShell::Notify( SfxBroadcaster& rBC, SFX_ITEMSET_ARG( pSet, pItem, SfxUnoAnyItem, SID_VIEW_DATA, sal_False ); if ( pItem ) { - pImp->pController->restoreViewData( pItem->GetValue() ); + pImp->m_pController->restoreViewData( + pItem->GetValue() ); pSet->ClearItem( SID_VIEW_DATA ); } @@ -1679,13 +1685,15 @@ void SfxViewShell::Notify( SfxBroadcaster& rBC, BOOL SfxViewShell::ExecKey_Impl(const KeyEvent& aKey) { - if (!pImp->pAccExec) + if (!pImp->m_pAccExec.get()) { - pImp->pAccExec = ::svt::AcceleratorExecute::createAcceleratorHelper(); - pImp->pAccExec->init(::comphelper::getProcessServiceFactory(), pFrame->GetFrame().GetFrameInterface()); + pImp->m_pAccExec.reset( + ::svt::AcceleratorExecute::createAcceleratorHelper() ); + pImp->m_pAccExec->init(::comphelper::getProcessServiceFactory(), + pFrame->GetFrame().GetFrameInterface()); } - return pImp->pAccExec->execute(aKey.GetKeyCode()); + return pImp->m_pAccExec->execute(aKey.GetKeyCode()); } //-------------------------------------------------------------------- @@ -1828,7 +1836,7 @@ void SfxViewShell::CheckIPClient_Impl( SfxInPlaceClient *pIPClient, const Rectan ( ( pIPClient->GetObjectMiscStatus() & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE ) != 0 ); // this method is called when either a client is created or the "Edit/Plugins" checkbox is checked - if ( !pIPClient->IsObjectInPlaceActive() && pImp->bPlugInsActive ) + if ( !pIPClient->IsObjectInPlaceActive() && pImp->m_bPlugInsActive ) { // object in client is currently not active // check if the object wants to be activated always or when it becomes at least partially visible @@ -1844,7 +1852,7 @@ void SfxViewShell::CheckIPClient_Impl( SfxInPlaceClient *pIPClient, const Rectan } } } - else if ( !pImp->bPlugInsActive ) + else if (!pImp->m_bPlugInsActive) { // object in client is currently active and "Edit/Plugins" checkbox is selected // check if the object wants to be activated always or when it becomes at least partially visible @@ -1858,7 +1866,7 @@ void SfxViewShell::CheckIPClient_Impl( SfxInPlaceClient *pIPClient, const Rectan BOOL SfxViewShell::PlugInsActive() const { - return pImp->bPlugInsActive; + return pImp->m_bPlugInsActive; } //-------------------------------------------------------------------- @@ -1884,14 +1892,14 @@ void SfxViewShell::DiscardClients_Impl() SfxScrollingMode SfxViewShell::GetScrollingMode() const { - return pImp->eScroll; + return pImp->m_eScroll; } //-------------------------------------------------------------------- void SfxViewShell::SetScrollingMode( SfxScrollingMode eMode ) { - pImp->eScroll = eMode; + pImp->m_eScroll = eMode; } //-------------------------------------------------------------------- @@ -1958,7 +1966,7 @@ void SfxViewShell::MarginChanged() BOOL SfxViewShell::IsShowView_Impl() const { - return pImp->bIsShowView; + return pImp->m_bIsShowView; } //-------------------------------------------------------------------- @@ -1990,9 +1998,8 @@ SfxInPlaceClientList* SfxViewShell::GetIPClientList_Impl( BOOL bCreate ) const void SfxViewShell::SetController( SfxBaseController* pController ) { - pImp->pController = pController; - pImp->pController->acquire(); - pImp->bControllerSet = TRUE; + pImp->m_pController = pController; + pImp->m_bControllerSet = true; // there should be no old listener, but if there is one, it should be disconnected if ( pImp->xClipboardListener.is() ) @@ -2004,12 +2011,12 @@ void SfxViewShell::SetController( SfxBaseController* pController ) Reference < XController > SfxViewShell::GetController() { - return pImp->pController; + return pImp->m_pController.get(); } SfxBaseController* SfxViewShell::GetBaseController_Impl() const { - return pImp->pController; + return pImp->m_pController.get(); } void SfxViewShell::AddContextMenuInterceptor_Impl( const REFERENCE< XCONTEXTMENUINTERCEPTOR >& xInterceptor ) @@ -2054,6 +2061,7 @@ void Change( Menu* pMenu, SfxViewShell* pView ) if ( pSlot ) { pMenu->InsertItem( pSlot->GetSlotId(), pMenu->GetItemText( nId ), pMenu->GetItemBits( nId ), nPos ); + pMenu->SetItemCommand( pSlot->GetSlotId(), aCmd ); pMenu->RemoveItem( nPos+1 ); break; } @@ -2131,20 +2139,20 @@ void SfxViewShell::TakeOwnerShip_Impl() { // currently there is only one reason to take OwnerShip: a hidden frame is printed // so the ViewShell will check this on EndPrint (->prnmon.cxx) - pImp->bGotOwnerShip = TRUE; + pImp->m_bGotOwnership = true; } void SfxViewShell::TakeFrameOwnerShip_Impl() { // currently there is only one reason to take OwnerShip: a hidden frame is printed // so the ViewShell will check this on EndPrint (->prnmon.cxx) - pImp->bGotFrameOwnerShip = TRUE; + pImp->m_bGotFrameOwnership = true; } void SfxViewShell::CheckOwnerShip_Impl() { BOOL bSuccess = FALSE; - if( pImp->bGotOwnerShip ) + if (pImp->m_bGotOwnership) { com::sun::star::uno::Reference < com::sun::star::util::XCloseable > xModel( GetObjectShell()->GetModel(), com::sun::star::uno::UNO_QUERY ); @@ -2162,7 +2170,7 @@ void SfxViewShell::CheckOwnerShip_Impl() } } - if( !bSuccess && pImp->bGotFrameOwnerShip ) + if (!bSuccess && pImp->m_bGotFrameOwnership) { // document couldn't be closed or it shouldn't, now try at least to close the frame com::sun::star::uno::Reference < com::sun::star::util::XCloseable > xFrame( @@ -2182,19 +2190,23 @@ void SfxViewShell::CheckOwnerShip_Impl() long SfxViewShell::HandleNotifyEvent_Impl( NotifyEvent& rEvent ) { - if ( pImp->pController ) - return pImp->pController->HandleEvent_Impl( rEvent ); + if (pImp->m_pController.is()) + { + return pImp->m_pController->HandleEvent_Impl( rEvent ); + } return 0; } BOOL SfxViewShell::HasKeyListeners_Impl() { - return pImp->pController ? pImp->pController->HasKeyListeners_Impl() : FALSE; + return (pImp->m_pController.is()) + ? pImp->m_pController->HasKeyListeners_Impl() : FALSE; } BOOL SfxViewShell::HasMouseClickListeners_Impl() { - return pImp->pController ? pImp->pController->HasMouseClickListeners_Impl() : FALSE; + return (pImp->m_pController.is()) + ? pImp->m_pController->HasMouseClickListeners_Impl() : FALSE; } void SfxViewShell::SetAdditionalPrintOptions( const com::sun::star::uno::Sequence < com::sun::star::beans::PropertyValue >& rOpts ) diff --git a/sfx2/util/hidother.src b/sfx2/util/hidother.src index 38e5577a72be..72bd77c5c011 100644 --- a/sfx2/util/hidother.src +++ b/sfx2/util/hidother.src @@ -26,41 +26,20 @@ ************************************************************************/ #include "../source/inc/helpid.hrc" // HID_XXX -#include "../inc/sfx2/sfxsids.hrc" // SID_XXX -#include "../inc/sfx2/sfx.hrc" - hidspecial HID_APP_WIN { HelpID = HID_APP_WIN; }; hidspecial HID_DESKTOP { HelpID = HID_DESKTOP; }; hidspecial HID_DOCINFO_FRAME { HelpID = HID_DOCINFO_FRAME; }; hidspecial HID_EXPLORER_FRAME { HelpID = HID_EXPLORER_FRAME; }; -hidspecial HID_FILEDLG_FILE { HelpID = HID_FILEDLG_FILE; }; -hidspecial HID_FILEDLG_MANAGER { HelpID = HID_FILEDLG_MANAGER; }; -hidspecial HID_FILEDLG_READ_ONLY { HelpID = HID_FILEDLG_READ_ONLY; }; -hidspecial HID_FILEDLG_STANDARD { HelpID = HID_FILEDLG_STANDARD; }; -hidspecial HID_FILEDLG_URL { HelpID = HID_FILEDLG_URL; }; -hidspecial HID_FILEDLG_USE_PASSWD { HelpID = HID_FILEDLG_USE_PASSWD; }; -hidspecial HID_INTERFACE_SFXMAILVIEW { HelpID = HID_INTERFACE_SFXMAILVIEW; }; -hidspecial HID_INTERFACE_SFXEXPLVIEWSH { HelpID = HID_INTERFACE_SFXEXPLVIEWSH; }; -hidspecial HID_INTERFACE_SFXFRAMESETVIEW { HelpID = HID_INTERFACE_SFXFRAMESETVIEW; }; -hidspecial HID_INTERFACE_SFXFRAMESETSOURCEVIEW { HelpID = HID_INTERFACE_SFXFRAMESETSOURCEVIEW; }; -hidspecial HID_INTERFACE_SFXHELP_VIEWSH { HelpID = HID_INTERFACE_SFXHELP_VIEWSH; }; hidspecial HID_PREVIEW_FRAME { HelpID = HID_PREVIEW_FRAME; }; hidspecial HID_PRINT_OPTIONS { HelpID = HID_PRINT_OPTIONS; }; hidspecial HID_TEMPLATE_FILTER { HelpID = HID_TEMPLATE_FILTER; }; hidspecial HID_TEMPLATE_FMT { HelpID = HID_TEMPLATE_FMT; }; hidspecial HID_SEARCH_DLG_TABLB { HelpID = HID_SEARCH_DLG_TABLB; }; -hidspecial SID_STYLE_FAMILY1 { HelpID = SID_STYLE_FAMILY1; }; -hidspecial SID_STYLE_FAMILY2 { HelpID = SID_STYLE_FAMILY2; }; -hidspecial SID_STYLE_FAMILY3 { HelpID = SID_STYLE_FAMILY3; }; -hidspecial SID_STYLE_FAMILY4 { HelpID = SID_STYLE_FAMILY4; }; -hidspecial SID_STYLE_FAMILY5 { HelpID = SID_STYLE_FAMILY5; }; -hidspecial SID_FILTER_NAME { HelpID = SID_FILTER_NAME; }; hidspecial HID_NAVIGATOR_WINDOW { HelpID = HID_NAVIGATOR_WINDOW; }; hidspecial HID_HELPAGENT_TIP_BOX { HelpId = HID_HELPAGENT_TIP_BOX; }; hidspecial HID_TEMPLDLG_TOOLBOX_LEFT { HelpId = HID_TEMPLDLG_TOOLBOX_LEFT;}; hidspecial HID_EXPLORER_SRCH_COUNT { HelpId = HID_EXPLORER_SRCH_COUNT;}; -hidspecial HID_INTERFACE_SFXPLUGINVIEW { HelpID = HID_INTERFACE_SFXPLUGINVIEW; }; hidspecial HID_TABDLG_RESET_BTN { HelpID = HID_TABDLG_RESET_BTN; }; hidspecial HID_TABDLG_STANDARD_BTN { HelpID = HID_TABDLG_STANDARD_BTN; }; hidspecial HID_CONFIG_EVENT_OFFICE_BASED { HelpID = HID_CONFIG_EVENT_OFFICE_BASED; }; @@ -70,35 +49,10 @@ hidspecial HID_EXPLORERMENU_ARRANGEICONS { HelpID = HID_EXPLORERMENU_ARRA hidspecial HID_EXPLORERMENU_STDTEMPLATE { HelpID = HID_EXPLORERMENU_STDTEMPLATE; }; hidspecial HID_EXPLORER_DOCVIEW_ICON { HelpID = HID_EXPLORER_DOCVIEW_ICON; }; hidspecial HID_EXPLORER_DOCVIEW_DETAILS { HelpID = HID_EXPLORER_DOCVIEW_DETAILS; }; -hidspecial HID_CHAOSDOC_WIN { HelpID = HID_CHAOSDOC_WIN; }; -hidspecial HID_CHAOSDOC_WIN_HEADER { HelpID = HID_CHAOSDOC_WIN_HEADER; }; -hidspecial HID_CHAOSDOC_WIN_PARTS { HelpID = HID_CHAOSDOC_WIN_PARTS; }; -hidspecial HID_CHAOSDOC_WIN_BODY { HelpID = HID_CHAOSDOC_WIN_BODY; }; hidspecial HID_BRWBOX_HEADERBAR { HelpID = HID_BRWBOX_HEADERBAR; }; hidspecial HID_TASKBAR { HelpID = HID_TASKBAR; }; hidspecial HID_TASKBUTTONBAR { HelpID = HID_TASKBUTTONBAR; }; hidspecial HID_TASKTOOLBAR { HelpID = HID_TASKTOOLBAR; }; -hidspecial HID_CHAOS_NEW_IMAP_BOX { HelpID = HID_CHAOS_NEW_IMAP_BOX; }; -hidspecial HID_CHAOS_NEW_IMAP_MSG { HelpID = HID_CHAOS_NEW_IMAP_MSG; }; -hidspecial HID_CHAOS_NEW_IMAP_FLD { HelpID = HID_CHAOS_NEW_IMAP_FLD; }; -hidspecial HID_CHAOS_NEW_NEWS_BOX { HelpID = HID_CHAOS_NEW_NEWS_BOX; }; -hidspecial HID_CHAOS_NEW_NEWS_MSG { HelpID = HID_CHAOS_NEW_NEWS_MSG; }; -hidspecial HID_CHAOS_NEW_IMAP_BOX { HelpID = HID_CHAOS_NEW_IMAP_BOX; }; -hidspecial HID_CHAOS_NEW_FSYS_FLD { HelpID = HID_CHAOS_NEW_FSYS_FLD; }; -hidspecial HID_CHAOS_NEW_FSYS_LNK { HelpID = HID_CHAOS_NEW_FSYS_LNK; }; -hidspecial HID_CHAOS_NEW_FTP_BOX { HelpID = HID_CHAOS_NEW_FTP_BOX; }; -hidspecial HID_CHAOS_NEW_FTP_FLD { HelpID = HID_CHAOS_NEW_FTP_FLD; }; -hidspecial HID_CHAOS_NEW_OUT_BOX { HelpID = HID_CHAOS_NEW_OUT_BOX; }; -hidspecial HID_CHAOS_NEW_OUT_MSG { HelpID = HID_CHAOS_NEW_OUT_MSG; }; -hidspecial HID_CHAOS_NEW_POP3_BOX { HelpID = HID_CHAOS_NEW_POP3_BOX; }; -hidspecial HID_CHAOS_NEW_POP3_MSG { HelpID = HID_CHAOS_NEW_POP3_MSG; }; -hidspecial HID_CHAOS_NEW_SEARCH { HelpID = HID_CHAOS_NEW_SEARCH; }; -hidspecial HID_CHAOS_NEW_VIM_BOX { HelpID = HID_CHAOS_NEW_VIM_BOX; }; -hidspecial HID_CHAOS_NEW_VIM_MSG { HelpID = HID_CHAOS_NEW_VIM_MSG; }; -hidspecial HID_CHAOS_NEW_SUBSCR_BOX { HelpID = HID_CHAOS_NEW_SUBSCR_BOX; }; -hidspecial HID_CHAOS_NEW_BOOKMARK { HelpID = HID_CHAOS_NEW_BOOKMARK; }; -hidspecial HID_CHAOS_NEW_PUB_BOX { HelpID = HID_CHAOS_NEW_PUB_BOX; }; -hidspecial HID_UUI_END { HelpID = HID_UUI_END; }; // aka HID_CHAOS_NEW_DATABASE hidspecial HID_CNT_DLG_SEARCH_BT_SHOW { HelpID = HID_CNT_DLG_SEARCH_BT_SHOW; }; hidspecial HID_CNT_DLG_SEARCH_BT_UPDATE { HelpID = HID_CNT_DLG_SEARCH_BT_UPDATE; }; hidspecial HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE { HelpID = HID_CNT_DLG_SEARCH_BT_SYNCHRONIZE; }; @@ -107,22 +61,9 @@ hidspecial HID_CNT_PAGE_HEADER { HelpID = HID_CNT_PAGE_HEADER; hidspecial HID_CNT_PAGE_DESCRIPTION { HelpID = HID_CNT_PAGE_DESCRIPTION; }; hidspecial HID_CNT_LB_HEADER { HelpID = HID_CNT_LB_HEADER; }; hidspecial HID_CNT_LB_DESCRIPTION { HelpID = HID_CNT_LB_DESCRIPTION; }; -hidspecial SID_GROUPVIEW { HelpID = SID_GROUPVIEW; }; hidspecial HID_GROUPVIEW_CONTENT_BIG { HelpID = HID_GROUPVIEW_CONTENT_BIG; }; hidspecial HID_GROUPVIEW_CONTENT_SMALL { HelpID = HID_GROUPVIEW_CONTENT_SMALL; }; hidspecial HID_GROUPVIEW_CONTENT_TREE { HelpID = HID_GROUPVIEW_CONTENT_TREE; }; -hidspecial HID_FILEDLG_AUTOCOMPLETEBOX { HelpID = HID_FILEDLG_AUTOCOMPLETEBOX; }; -hidspecial HID_FILEDLG_SAVE_BTN { HelpID = HID_FILEDLG_SAVE_BTN; }; -hidspecial HID_FILEDLG_SAVE_FILENAME { HelpID = HID_FILEDLG_SAVE_FILENAME; }; -hidspecial HID_FILEDLG_SAVE_FILETYPE { HelpID = HID_FILEDLG_SAVE_FILETYPE; }; -hidspecial HID_FILEDLG_INSERT_BTN { HelpID = HID_FILEDLG_INSERT_BTN; }; -hidspecial HID_FILEDLG_PATH_BTN { HelpID = HID_FILEDLG_PATH_BTN; }; -hidspecial HID_FILEDLG_PATH_FILENAME { HelpID = HID_FILEDLG_PATH_FILENAME; }; -hidspecial HID_FILEDLG_FOLDER_BTN { HelpID = HID_FILEDLG_FOLDER_BTN; }; -hidspecial HID_FILEDLG_FOLDER_FILENAME { HelpID = HID_FILEDLG_FOLDER_FILENAME; }; -hidspecial HID_FILEDLG_SRCHFOLDER_BTN { HelpID = HID_FILEDLG_SRCHFOLDER_BTN; }; -hidspecial HID_FILEDLG_EDIT_FAVORITES_LISTBOX { HelpID = HID_FILEDLG_EDIT_FAVORITES_LISTBOX; }; -hidspecial HID_FILEDLG_EDIT_FAVORITES_HEADERBAR { HelpID = HID_FILEDLG_EDIT_FAVORITES_HEADERBAR; }; hidspecial HID_BROWSERCONTROL { HelpID = HID_BROWSERCONTROL; }; hidspecial HID_TASKSTATUSBAR { HelpID = HID_TASKSTATUSBAR; }; hidspecial HID_CNT_PAGE_HEADER_TABBAR { HelpID = HID_CNT_PAGE_HEADER_TABBAR; }; @@ -147,8 +88,6 @@ hidspecial HID_CNT_SENT_VIEW_SENT_ARTICLES { HelpID = HID_CNT_SENT_VIEW_SEN hidspecial HID_CNT_SENT_VIEW_UNSENT_ARTICLES { HelpID = HID_CNT_SENT_VIEW_UNSENT_ARTICLES; }; hidspecial HID_CNT_SENT_VIEW_MARKED_ARTICLES { HelpID = HID_CNT_SENT_VIEW_MARKED_ARTICLES; }; hidspecial HID_TABDLG_APPLY_BTN { HelpID = HID_TABDLG_APPLY_BTN; }; -hidspecial HID_FILEDLG_LINK_CB { HelpID = HID_FILEDLG_LINK_CB; }; -hidspecial HID_FILEDLG_PREVIEW_CB { HelpID = HID_FILEDLG_PREVIEW_CB; }; hidspecial HID_HELP_WINDOW { HelpID = HID_HELP_WINDOW; }; hidspecial HID_HELP_TOOLBOX { HelpID = HID_HELP_TOOLBOX; }; hidspecial HID_HELP_TOOLBOXITEM_INDEX { HelpID = HID_HELP_TOOLBOXITEM_INDEX; }; @@ -159,7 +98,6 @@ hidspecial HID_HELP_TOOLBOXITEM_PRINT { HelpID = HID_HELP_TOOLBOXITEM_ hidspecial HID_HELP_TOOLBOXITEM_BOOKMARKS { HelpID = HID_HELP_TOOLBOXITEM_BOOKMARKS; }; hidspecial HID_HELP_TOOLBOXITEM_SEARCHDIALOG { HelpID = HID_HELP_TOOLBOXITEM_SEARCHDIALOG; }; hidspecial HID_TBXCONTROL_FILENEW { HelpID = HID_TBXCONTROL_FILENEW; }; -hidspecial HID_GLOBAL_FALLBACK { HelpID = HID_GLOBAL_FALLBACK; }; hidspecial HID_CLOSE_WARNING { HelpID = HID_CLOSE_WARNING; }; hidspecial HID_DID_SAVE_PACKED_XML { HelpID = HID_DID_SAVE_PACKED_XML; }; hidspecial HID_HELP_ONHELP { HelpID = HID_HELP_ONHELP; }; diff --git a/sfx2/workben/custompanel/makefile.mk b/sfx2/workben/custompanel/makefile.mk index 1eb20ceed35d..2a4704af499a 100644 --- a/sfx2/workben/custompanel/makefile.mk +++ b/sfx2/workben/custompanel/makefile.mk @@ -67,7 +67,7 @@ SHL1STDLIBS= \ $(SALHELPERLIB) \ $(CPPUHELPERLIB) -SHL1VERSIONMAP=$(SOLARSRC)/solenv/src/component.map +SHL1VERSIONMAP=$(SOLARSRC)/solenv/src/reg-component.map SHL1LIBS= $(LIB1TARGET) SHL1DEF= $(MISC)/$(SHL1TARGET).def SHL1RPATH= OXT diff --git a/shell/qa/makefile.mk b/shell/qa/makefile.mk index cc91a6b1ad5c..290798bab18e 100755 --- a/shell/qa/makefile.mk +++ b/shell/qa/makefile.mk @@ -28,8 +28,6 @@ PRJ=.. PRJNAME=shell TARGET=qa -# this is removed at the moment because we need some enhancements -# TESTDIR=TRUE ENABLE_EXCEPTIONS=TRUE diff --git a/shell/source/win32/simplemail/senddoc.cxx b/shell/source/win32/simplemail/senddoc.cxx index c8ac40799cea..bb743960afc5 100644 --- a/shell/source/win32/simplemail/senddoc.cxx +++ b/shell/source/win32/simplemail/senddoc.cxx @@ -170,7 +170,7 @@ void initMapiMessage( pMapiMessage->lpszSubject = const_cast<char*>(gSubject.c_str()); pMapiMessage->lpszNoteText = (gBody.length() ? const_cast<char*>(gBody.c_str()) : NULL); pMapiMessage->lpOriginator = aMapiOriginator; - pMapiMessage->lpRecips = &aMapiRecipientList[0]; + pMapiMessage->lpRecips = aMapiRecipientList.size() ? &aMapiRecipientList[0] : 0; pMapiMessage->nRecipCount = aMapiRecipientList.size(); pMapiMessage->lpFiles = &aMapiAttachmentList[0]; pMapiMessage->nFileCount = aMapiAttachmentList.size(); diff --git a/svx/inc/fmhelp.hrc b/svx/inc/fmhelp.hrc index ab9aa9f8ce1b..7230df0c6da6 100644 --- a/svx/inc/fmhelp.hrc +++ b/svx/inc/fmhelp.hrc @@ -27,91 +27,87 @@ #ifndef _SVX_FMHELP_HRC #define _SVX_FMHELP_HRC -// include ----------------------------------------------------------- -#include <svl/solar.hrc> - -// in solar.hrc -//#define HID_FORMS_START (HID_LIB_START+4000) -//#define HID_FORMS_END (HID_LIB_START+4999) - // Help-Ids -------------------------------------------------------------- -#define HID_DLG_DBMSG ( HID_FORMS_START + 1) -#define HID_FORM_NAVIGATOR ( HID_FORMS_START + 2) -#define HID_FORM_NAVIGATOR_WIN ( HID_FORMS_START + 3) -#define HID_FIELD_SEL ( HID_FORMS_START + 4) -#define HID_FIELD_SEL_WIN ( HID_FORMS_START + 5) -#define HID_FILTER_NAVIGATOR ( HID_FORMS_START + 6) -#define HID_FILTER_NAVIGATOR_WIN ( HID_FORMS_START + 7) -#define HID_FM_DLG_SEARCH ( HID_FORMS_START + 8) -#define HID_SEARCH_TEXT ( HID_FORMS_START + 9) -#define HID_SEARCH_ALLFIELDS ( HID_FORMS_START + 10) -//#define HID_SEARCH_SINGLEFIELD ( HID_FORMS_START + 11) -#define HID_SEARCH_FIELDSELECTION ( HID_FORMS_START + 12) -#define HID_SEARCH_POSITION ( HID_FORMS_START + 13) -#define HID_SEARCH_FORMATTER ( HID_FORMS_START + 14) -#define HID_SEARCH_CASE ( HID_FORMS_START + 15) -#define HID_SEARCH_BACKWARD ( HID_FORMS_START + 16) -#define HID_SEARCH_STARTOVER ( HID_FORMS_START + 17) -#define HID_SEARCH_WILDCARD ( HID_FORMS_START + 18) -#define HID_SEARCH_REGULAR ( HID_FORMS_START + 19) -#define HID_SEARCH_APPROX ( HID_FORMS_START + 20) -#define HID_SEARCH_APPROXSETTINGS ( HID_FORMS_START + 21) -#define HID_SEARCH_BTN_SEARCH ( HID_FORMS_START + 22) -#define HID_SEARCH_BTN_CLOSE ( HID_FORMS_START + 23) -#define HID_CONTROLS_DATE_N_TIME ( HID_FORMS_START + 24) -#define HID_GRID_TRAVEL_FIRST ( HID_FORMS_START + 25) -#define HID_GRID_TRAVEL_PREV ( HID_FORMS_START + 26) -#define HID_GRID_TRAVEL_NEXT ( HID_FORMS_START + 27) -#define HID_GRID_TRAVEL_LAST ( HID_FORMS_START + 28) -#define HID_GRID_TRAVEL_NEW ( HID_FORMS_START + 29) -#define HID_GRID_TRAVEL_ABSOLUTE ( HID_FORMS_START + 30) -#define HID_GRID_NUMBEROFRECORDS ( HID_FORMS_START + 31) -#define UID_SEARCH_RECORDSTATUS ( HID_FORMS_START + 32) -#define UID_FORMPROPBROWSER_FRAME ( HID_FORMS_START + 33) -#define UID_ABSOLUTE_RECORD_WINDOW ( HID_FORMS_START + 34) -#define HID_DATA_NAVIGATOR_WIN ( HID_FORMS_START + 35) -#define HID_XFORMS_ADDDATAITEM_DLG ( HID_FORMS_START + 36) -#define HID_XFORMS_ADDCONDITION_DLG ( HID_FORMS_START + 37) -#define HID_XFORMS_NAMESPACEITEM_DLG ( HID_FORMS_START + 38) -#define HID_XFORMS_NAMESPACEITEM_LIST ( HID_FORMS_START + 39) -#define HID_XFORMS_MANAGENAMESPACE_DLG ( HID_FORMS_START + 40) -//#define HID_TP_XFORMS_INSTANCE ( HID_FORMS_START + 41) -//#define HID_TP_XFORMS_SUBMISSION ( HID_FORMS_START + 42) -//#define HID_TP_XFORMS_BINDING ( HID_FORMS_START + 43) -#define HID_MN_XFORMS_MODELS_ADD ( HID_FORMS_START + 44) -#define HID_MN_XFORMS_MODELS_EDIT ( HID_FORMS_START + 45) -#define HID_MN_XFORMS_MODELS_REMOVE ( HID_FORMS_START + 46) -#define HID_MN_XFORMS_INSTANCES_ADD ( HID_FORMS_START + 47) -#define HID_MN_XFORMS_INSTANCES_EDIT ( HID_FORMS_START + 48) -#define HID_MN_XFORMS_INSTANCES_REMOVE ( HID_FORMS_START + 49) -#define HID_MN_XFORMS_SHOW_DETAILS ( HID_FORMS_START + 50) -#define HID_XFORMS_TOOLBOX ( HID_FORMS_START + 51) -#define HID_XFORMS_TOOLBOX_ITEM_ADD ( HID_FORMS_START + 52) -#define HID_XFORMS_TOOLBOX_ITEM_ADD_ELEMENT ( HID_FORMS_START + 53) -#define HID_XFORMS_TOOLBOX_ITEM_ADD_ATTRIBUTE ( HID_FORMS_START + 54) -#define HID_XFORMS_TOOLBOX_ITEM_EDIT ( HID_FORMS_START + 55) -#define HID_XFORMS_TOOLBOX_ITEM_REMOVE ( HID_FORMS_START + 56) -#define HID_XFORMS_ITEMS_LIST ( HID_FORMS_START + 57) -#define HID_XFORMS_MODELS_LIST ( HID_FORMS_START + 58) -#define HID_XFORMS_MODELS_MENUBTN ( HID_FORMS_START + 59) -#define HID_XFORMS_INSTANCES_MENUBTN ( HID_FORMS_START + 60) -#define HID_XFORMS_ADDSUBMISSION_DLG ( HID_FORMS_START + 61) -#define HID_XFORMS_ADDMODEL_DLG ( HID_FORMS_START + 62) -#define HID_XFORMS_ADDINSTANCE_DLG ( HID_FORMS_START + 63) -#define HID_XFORMS_MID_INSERT_CONTROL ( HID_FORMS_START + 64) -#define HID_XFORMS_TAB_CONTROL ( HID_FORMS_START + 65) - // if you add a new define here, please adjust the overflow check - // at the end of the file!! - -// ----------------------------------------------------------------------- -// "Uberlaufpr"ufung ----------------------------------------------------- -// ----------------------------------------------------------------------- - -#define ACT_FM_HID_END HID_XFORMS_TAB_CONTROL - -#if ACT_FM_HID_END > HID_FORMS_END -#error Resource-Ueberlauf in #line, #file -#endif +#define HID_DLG_DBMSG "SVX_HID_DLG_DBMSG" +#define HID_FORM_NAVIGATOR "SVX_HID_FORM_NAVIGATOR" +#define HID_FORM_NAVIGATOR_WIN "SVX_HID_FORM_NAVIGATOR_WIN" +#define HID_FIELD_SEL "SVX_HID_FIELD_SEL" +#define HID_FIELD_SEL_WIN "SVX_HID_FIELD_SEL_WIN" +#define HID_FILTER_NAVIGATOR "SVX_HID_FILTER_NAVIGATOR" +#define HID_FILTER_NAVIGATOR_WIN "SVX_HID_FILTER_NAVIGATOR_WIN" +#define HID_FM_DLG_SEARCH "SVX_HID_FM_DLG_SEARCH" +#define HID_SEARCH_TEXT "SVX_HID_SEARCH_TEXT" +#define HID_SEARCH_ALLFIELDS "SVX_HID_SEARCH_ALLFIELDS" +#define HID_SEARCH_FIELDSELECTION "SVX_HID_SEARCH_FIELDSELECTION" +#define HID_SEARCH_POSITION "SVX_HID_SEARCH_POSITION" +#define HID_SEARCH_FORMATTER "SVX_HID_SEARCH_FORMATTER" +#define HID_SEARCH_CASE "SVX_HID_SEARCH_CASE" +#define HID_SEARCH_BACKWARD "SVX_HID_SEARCH_BACKWARD" +#define HID_SEARCH_STARTOVER "SVX_HID_SEARCH_STARTOVER" +#define HID_SEARCH_WILDCARD "SVX_HID_SEARCH_WILDCARD" +#define HID_SEARCH_REGULAR "SVX_HID_SEARCH_REGULAR" +#define HID_SEARCH_APPROX "SVX_HID_SEARCH_APPROX" +#define HID_SEARCH_APPROXSETTINGS "SVX_HID_SEARCH_APPROXSETTINGS" +#define HID_SEARCH_BTN_SEARCH "SVX_HID_SEARCH_BTN_SEARCH" +#define HID_SEARCH_BTN_CLOSE "SVX_HID_SEARCH_BTN_CLOSE" +#define HID_CONTROLS_DATE_N_TIME "SVX_HID_CONTROLS_DATE_N_TIME" +#define HID_GRID_TRAVEL_FIRST "SVX_HID_GRID_TRAVEL_FIRST" +#define HID_GRID_TRAVEL_PREV "SVX_HID_GRID_TRAVEL_PREV" +#define HID_GRID_TRAVEL_NEXT "SVX_HID_GRID_TRAVEL_NEXT" +#define HID_GRID_TRAVEL_LAST "SVX_HID_GRID_TRAVEL_LAST" +#define HID_GRID_TRAVEL_NEW "SVX_HID_GRID_TRAVEL_NEW" +#define HID_GRID_TRAVEL_ABSOLUTE "SVX_HID_GRID_TRAVEL_ABSOLUTE" +#define HID_GRID_NUMBEROFRECORDS "SVX_HID_GRID_NUMBEROFRECORDS" +#define UID_SEARCH_RECORDSTATUS "SVX_UID_SEARCH_RECORDSTATUS" +#define UID_FORMPROPBROWSER_FRAME "SVX_UID_FORMPROPBROWSER_FRAME" +#define UID_ABSOLUTE_RECORD_WINDOW "SVX_UID_ABSOLUTE_RECORD_WINDOW" +#define HID_DATA_NAVIGATOR_WIN "SVX_HID_DATA_NAVIGATOR_WIN" +#define HID_XFORMS_ADDDATAITEM_DLG "SVX_HID_XFORMS_ADDDATAITEM_DLG" +#define HID_XFORMS_ADDCONDITION_DLG "SVX_HID_XFORMS_ADDCONDITION_DLG" +#define HID_XFORMS_NAMESPACEITEM_DLG "SVX_HID_XFORMS_NAMESPACEITEM_DLG" +#define HID_XFORMS_NAMESPACEITEM_LIST "SVX_HID_XFORMS_NAMESPACEITEM_LIST" +#define HID_XFORMS_MANAGENAMESPACE_DLG "SVX_HID_XFORMS_MANAGENAMESPACE_DLG" +#define HID_MN_XFORMS_MODELS_ADD "SVX_HID_MN_XFORMS_MODELS_ADD" +#define HID_MN_XFORMS_MODELS_EDIT "SVX_HID_MN_XFORMS_MODELS_EDIT" +#define HID_MN_XFORMS_MODELS_REMOVE "SVX_HID_MN_XFORMS_MODELS_REMOVE" +#define HID_MN_XFORMS_INSTANCES_ADD "SVX_HID_MN_XFORMS_INSTANCES_ADD" +#define HID_MN_XFORMS_INSTANCES_EDIT "SVX_HID_MN_XFORMS_INSTANCES_EDIT" +#define HID_MN_XFORMS_INSTANCES_REMOVE "SVX_HID_MN_XFORMS_INSTANCES_REMOVE" +#define HID_MN_XFORMS_SHOW_DETAILS "SVX_HID_MN_XFORMS_SHOW_DETAILS" +#define HID_XFORMS_TOOLBOX "SVX_HID_XFORMS_TOOLBOX" +#define HID_XFORMS_TOOLBOX_ITEM_ADD "SVX_HID_XFORMS_TOOLBOX_ITEM_ADD" +#define HID_XFORMS_TOOLBOX_ITEM_ADD_ELEMENT "SVX_HID_XFORMS_TOOLBOX_ITEM_ADD_ELEMENT" +#define HID_XFORMS_TOOLBOX_ITEM_ADD_ATTRIBUTE "SVX_HID_XFORMS_TOOLBOX_ITEM_ADD_ATTRIBUTE" +#define HID_XFORMS_TOOLBOX_ITEM_EDIT "SVX_HID_XFORMS_TOOLBOX_ITEM_EDIT" +#define HID_XFORMS_TOOLBOX_ITEM_REMOVE "SVX_HID_XFORMS_TOOLBOX_ITEM_REMOVE" +#define HID_XFORMS_ITEMS_LIST "SVX_HID_XFORMS_ITEMS_LIST" +#define HID_XFORMS_MODELS_LIST "SVX_HID_XFORMS_MODELS_LIST" +#define HID_XFORMS_MODELS_MENUBTN "SVX_HID_XFORMS_MODELS_MENUBTN" +#define HID_XFORMS_INSTANCES_MENUBTN "SVX_HID_XFORMS_INSTANCES_MENUBTN" +#define HID_XFORMS_ADDSUBMISSION_DLG "SVX_HID_XFORMS_ADDSUBMISSION_DLG" +#define HID_XFORMS_ADDMODEL_DLG "SVX_HID_XFORMS_ADDMODEL_DLG" +#define HID_XFORMS_ADDINSTANCE_DLG "SVX_HID_XFORMS_ADDINSTANCE_DLG" +#define HID_XFORMS_MID_INSERT_CONTROL "SVX_HID_XFORMS_MID_INSERT_CONTROL" +#define HID_XFORMS_TAB_CONTROL "SVX_HID_XFORMS_TAB_CONTROL" +#define HID_FM_DELETEROWS "SVX_HID_FM_DELETEROWS" +#define HID_FM_INSERTCOL "SVX_HID_FM_INSERTCOL" +#define HID_FM_CHANGECOL "SVX_HID_FM_CHANGECOL" +#define HID_FM_DELETECOL "SVX_HID_FM_DELETECOL" +#define HID_FM_HIDECOL "SVX_HID_FM_HIDECOL" +#define HID_FM_SHOWCOLS "SVX_HID_FM_SHOWCOLS" +#define HID_FM_SHOWCOLS_MORE "SVX_HID_FM_SHOWCOLS_MORE" +#define HID_FM_SHOWALLCOLS "SVX_HID_FM_SHOWALLCOLS" +#define HID_FM_DELETE "SVX_HID_FM_DELETE" +#define HID_FM_FILTER_EDIT "SVX_HID_FM_EDIT" +#define HID_FM_FILTER_IS_NULL "SVX_HID_FM_FILTER_IS_NULL" +#define HID_FM_FILTER_IS_NOT_NULL "SVX_HID_FM_IS_NOT_NULL" +#define HID_FM_NEW "SVX_HID_FM_NEW" +#define HID_FM_NEW_FORM "SVX_HID_FM_NEW_FORM" +#define HID_FM_NEW_HIDDEN "SVX_HID_FM_NEW_HIDDEN" +#define HID_FM_RENAME_OBJECT "SVX_HID_FM_RENAME_OBJECT" +#define HID_MENU_FM_TEXTATTRIBUTES_STYLE "SVX_HID_MENU_FM_TEXTATTRIBUTES_STYLE" +#define HID_MENU_FM_TEXTATTRIBUTES_ALIGNMENT "SVX_HID_MENU_FM_TEXTATTRIBUTES_ALIGNMENT" +#define HID_MENU_FM_TEXTATTRIBUTES_SPACING "SVX_HID_MENU_FM_TEXTATTRIBUTES_SPACING" #endif diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc index be037a1ca3cc..e86a684d93f2 100644 --- a/svx/inc/globlmn_tmpl.hrc +++ b/svx/inc/globlmn_tmpl.hrc @@ -38,288 +38,242 @@ #define ITEM_FORM_CONTROL_PROPERTIES\ Identifier = SID_FM_CTL_PROPERTIES ; \ Command = ".uno:ControlProperties" ; \ - HelpID = SID_FM_CTL_PROPERTIES ; \ Text [ en-US ] = "Con~trol..." ; \ #define ITEM_FORM_PROPERTIES\ Identifier = SID_FM_PROPERTIES ; \ Command = ".uno:FormProperties" ; \ - HelpID = SID_FM_PROPERTIES ; \ Text [ en-US ] = "For~m..." ; \ #define ITEM_REPLACE_CONTROL\ Identifier = SID_FM_CHANGECONTROLTYPE ;\ Command = ".uno:ChangeControlType" ; \ - HelpID = SID_FM_CHANGECONTROLTYPE ; \ Text [ en-US ] = "~Replace with"; \ #define ITEM_FORMAT_TEMPLATECATALOG \ Identifier = SID_STYLE_CATALOG ; \ Command = ".uno:StyleCatalog" ; \ - HelpID = SID_STYLE_CATALOG ; \ Text [ en-US ] = "~Catalog..." ; \ #define ITEM_FORMAT_TEMPLATE \ Identifier = SID_STYLE_DESIGNER ; \ Command = ".uno:DesignerDialog" ; \ - HelpID = SID_STYLE_DESIGNER ; \ Text [ en-US ] = "St~ylist" ; \ #define ITEM_FORMAT_AUTOFORMAT \ Identifier = SID_AUTOFORMAT ; \ Command = ".uno:AutoFormat" ; \ - HelpID = SID_AUTOFORMAT ; \ Text [ en-US ] = "Auto~Format..." ;\ #define ITEM_FORMAT_CHAR_DLG \ Identifier = SID_CHAR_DLG ; \ Command = ".uno:FontDialog" ; \ - HelpID = SID_CHAR_DLG ; \ Text [ en-US ] = "C~haracter..." ;\ #define ITEM_FORMAT_PARA_DLG \ Identifier = SID_PARA_DLG ; \ Command = ".uno:ParagraphDialog" ; \ - HelpID = SID_PARA_DLG ; \ Text [ en-US ] = "P~aragraph..." ;\ #define ITEM_FORMAT_FONTWORK \ Identifier = SID_FONTWORK ; \ Command = ".uno:FontWork" ; \ - HelpID = SID_FONTWORK ; \ Text [ en-US ] = "F~ontwork" ;\ #define ITEM_EDIT_CUT \ Identifier = SID_CUT ; \ Command = ".uno:Cut" ; \ - HelpID = SID_CUT ; \ Text [ en-US ] = "Cu~t" ;\ #define ITEM_EDIT_COPY \ Identifier = SID_COPY ; \ Command = ".uno:Copy" ; \ - HelpID = SID_COPY ; \ Text [ en-US ] = "~Copy" ;\ #define ITEM_EDIT_DELETE \ Identifier = SID_DELETE ; \ Command = ".uno:Delete" ; \ - HelpID = SID_DELETE ; \ Text [ en-US ] = "~Delete" ;\ #define ITEM_FORMAT_ATTR_CHAR_FONT \ Identifier = SID_ATTR_CHAR_FONT ; \ Command = ".uno:CharFontName" ; \ - HelpID = SID_ATTR_CHAR_FONT ; \ Text [ en-US ] = "Font" ;\ #define ITEM_FORMAT_ATTR_CHAR_FONTHEIGHT \ Identifier = SID_ATTR_CHAR_FONTHEIGHT ; \ Command = ".uno:FontHeight" ; \ - HelpID = SID_ATTR_CHAR_FONTHEIGHT ; \ Text [ en-US ] = "Size" ;\ #define ITEM_FORMAT_ATTR_CHAR_WEIGHT \ Identifier = SID_ATTR_CHAR_WEIGHT ; \ Command = ".uno:Bold" ; \ - HelpID = SID_ATTR_CHAR_WEIGHT ; \ Text [ en-US ] = "Bold" ; \ #define ITEM_FORMAT_ATTR_CHAR_POSTURE \ Identifier = SID_ATTR_CHAR_POSTURE ; \ Command = ".uno:Italic" ; \ - HelpID = SID_ATTR_CHAR_POSTURE ; \ Text [ en-US ] = "Italic" ;\ #define ITEM_FORMAT_ATTR_CHAR_UNDERLINE \ Identifier = SID_ATTR_CHAR_UNDERLINE ; \ Command = ".uno:Underline" ; \ - HelpID = SID_ATTR_CHAR_UNDERLINE ; \ Text [ en-US ] = "Underline" ;\ #define ITEM_FORMAT_ATTR_CHAR_OVERLINE \ Identifier = SID_ATTR_CHAR_OVERLINE ; \ Command = ".uno:Overline" ; \ - HelpID = SID_ATTR_CHAR_OVERLINE ; \ Text [ en-US ] = "Overline" ;\ #define ITEM_FORMAT_ATTR_CHAR_STRIKEOUT \ Identifier = SID_ATTR_CHAR_STRIKEOUT ; \ Command = ".uno:Strikeout" ; \ - HelpID = SID_ATTR_CHAR_STRIKEOUT ; \ Text [ en-US ] = "Strikethrough" ;\ #define ITEM_FORMAT_ATTR_CHAR_SHADOWED \ Identifier = SID_ATTR_CHAR_SHADOWED ; \ Command = ".uno:Shadowed" ; \ - HelpID = SID_ATTR_CHAR_SHADOWED ; \ Text [ en-US ] = "Shadow" ;\ #define ITEM_FORMAT_ATTR_CHAR_CONTOUR \ Identifier = SID_ATTR_CHAR_CONTOUR ; \ Command = ".uno:OutlineFont" ; \ - HelpID = SID_ATTR_CHAR_CONTOUR ; \ Text [ en-US ] = "Outline" ;\ #define ITEM_FORMAT_SET_SUPER_SCRIPT \ Identifier = SID_SET_SUPER_SCRIPT; \ - HelpID = SID_SET_SUPER_SCRIPT; \ + Command = CMD_SID_SET_SUPER_SCRIPT; \ Text [ en-US ] = "Su~perscript"; \ #define ITEM_FORMAT_SET_SUB_SCRIPT \ Identifier = SID_SET_SUB_SCRIPT; \ - HelpID = SID_SET_SUB_SCRIPT; \ + Command = CMD_SID_SET_SUB_SCRIPT; \ Text [ en-US ] = "Su~bscript"; \ #define ITEM_FORMAT_ATTR_PARA_ADJUST_LEFT \ Identifier = SID_ATTR_PARA_ADJUST_LEFT ; \ Command = ".uno:LeftPara" ; \ - HelpID = SID_ATTR_PARA_ADJUST_LEFT ; \ Text [ en-US ] = "~Left" ;\ #define ITEM_FORMAT_ATTR_PARA_ADJUST_RIGHT \ Identifier = SID_ATTR_PARA_ADJUST_RIGHT ; \ Command = ".uno:RightPara" ; \ - HelpID = SID_ATTR_PARA_ADJUST_RIGHT ; \ Text [ en-US ] = "~Right" ;\ #define ITEM_FORMAT_ATTR_PARA_ADJUST_CENTER \ Identifier = SID_ATTR_PARA_ADJUST_CENTER ; \ Command = ".uno:CenterPara" ; \ - HelpID = SID_ATTR_PARA_ADJUST_CENTER ; \ Text [ en-US ] = "~Centered" ;\ #define ITEM_FORMAT_ATTR_PARA_ADJUST_BLOCK \ Identifier = SID_ATTR_PARA_ADJUST_BLOCK ; \ Command = ".uno:JustifyPara" ; \ - HelpID = SID_ATTR_PARA_ADJUST_BLOCK ; \ Text [ en-US ] = "Justified" ;\ #define ITEM_FORMAT_PARA_LINESPACE_10 \ Identifier = SID_ATTR_PARA_LINESPACE_10 ; \ Command = ".uno:SpacePara1" ; \ - HelpID = SID_ATTR_PARA_LINESPACE_10 ; \ Text [ en-US ] = "Single" ;\ #define ITEM_FORMAT_PARA_LINESPACE_15 \ Identifier = SID_ATTR_PARA_LINESPACE_15 ; \ Command = ".uno:SpacePara15" ; \ - HelpID = SID_ATTR_PARA_LINESPACE_15 ; \ Text [ en-US ] = "1.5 lines" ;\ #define ITEM_FORMAT_PARA_LINESPACE_20 \ Identifier = SID_ATTR_PARA_LINESPACE_20 ; \ Command = ".uno:SpacePara2" ; \ - HelpID = SID_ATTR_PARA_LINESPACE_20 ; \ Text [ en-US ] = "~Double" ;\ #define ITEM_FORMAT_FRAME_TO_TOP \ Identifier = SID_FRAME_TO_TOP ; \ Command = ".uno:BringToFront" ; \ - HelpID = SID_FRAME_TO_TOP ; \ Text [ en-US ] = "~Bring to Front" ;\ #define ITEM_FORMAT_FRAME_TO_BOTTOM \ Identifier = SID_FRAME_TO_BOTTOM ; \ Command = ".uno:SendToBack" ; \ - HelpID = SID_FRAME_TO_BOTTOM ; \ Text [ en-US ] = "~Send to Back" ;\ #define ITEM_FORMAT_OBJECT_ALIGN \ Identifier = SID_OBJECT_ALIGN ; \ Command = ".uno:ObjectAlign" ; \ - HelpID = SID_OBJECT_ALIGN ; \ Text [ en-US ] = "A~lignment" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_LEFT \ Identifier = SID_OBJECT_ALIGN_LEFT ; \ Command = ".uno:ObjectAlignLeft" ; \ - HelpID = SID_OBJECT_ALIGN_LEFT ; \ Text [ en-US ] = "~Left" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_CENTER \ Identifier = SID_OBJECT_ALIGN_CENTER ; \ Command = ".uno:AlignCenter" ; \ - HelpID = SID_OBJECT_ALIGN_CENTER ; \ Text [ en-US ] = "~Centered" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_RIGHT \ Identifier = SID_OBJECT_ALIGN_RIGHT ; \ Command = ".uno:ObjectAlignRight" ; \ - HelpID = SID_OBJECT_ALIGN_RIGHT ; \ Text [ en-US ] = "~Right" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_UP \ Identifier = SID_OBJECT_ALIGN_UP ; \ Command = ".uno:AlignUp" ; \ - HelpID = SID_OBJECT_ALIGN_UP ; \ Text [ en-US ] = "~Top" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_MIDDLE \ Identifier = SID_OBJECT_ALIGN_MIDDLE ; \ Command = ".uno:AlignMiddle" ; \ - HelpID = SID_OBJECT_ALIGN_MIDDLE ; \ Text [ en-US ] = "C~enter" ;\ #define ITEM_FORMAT_OBJECT_ALIGN_DOWN \ Identifier = SID_OBJECT_ALIGN_DOWN ; \ Command = ".uno:AlignDown" ; \ - HelpID = SID_OBJECT_ALIGN_DOWN ; \ Text [ en-US ] = "~Bottom" ;\ #define ITEM_FORMAT_ATTRIBUTES_LINE \ Identifier = SID_ATTRIBUTES_LINE ; \ Command = ".uno:FormatLine" ; \ - HelpID = SID_ATTRIBUTES_LINE ; \ Text [ en-US ] = "L~ine..." ;\ #define ITEM_FORMAT_ATTRIBUTES_AREA \ Identifier = SID_ATTRIBUTES_AREA ; \ Command = ".uno:FormatArea" ; \ - HelpID = SID_ATTRIBUTES_AREA ; \ Text [ en-US ] = "A~rea..." ;\ #define ITEM_FORMAT_ATTR_TRANSFORM \ Identifier = SID_ATTR_TRANSFORM ; \ Command = ".uno:TransformDialog" ; \ - HelpID = SID_ATTR_TRANSFORM ; \ Text [ en-US ] = "Position and Si~ze..." ;\ #define ITEM_FORMAT_OBJECT_HEAVEN \ Identifier = SID_OBJECT_HEAVEN ; \ Command = ".uno:SetObjectToForeground" ; \ - HelpID = SID_OBJECT_HEAVEN ; \ Text [ en-US ] = "~To Foreground" ;\ #define ITEM_FORMAT_OBJECT_HELL \ Identifier = SID_OBJECT_HELL ; \ Command = ".uno:SetObjectToBackground" ; \ - HelpID = SID_OBJECT_HELL ; \ Text [ en-US ] = "T~o Background" ;\ #define ITEM_FORMAT_BEZIER_EDIT \ Identifier = SID_BEZIER_EDIT ; \ Command = ".uno:ToggleObjectBezierMode" ; \ - HelpID = SID_BEZIER_EDIT ; \ Text [ en-US ] = "Edit ~Points" ;\ #define ITEM_FILE_PICKLIST \ Identifier = SID_PICKLIST ; \ Command = ".uno:PickList" ; \ - HelpID = SID_PICKLIST ; \ Text [ en-US ] = "~File" ; \ #define ITEM_FILE_NEWDOC \ Identifier = SID_NEWDOCDIRECT ; \ Command = ".uno:AddDirect" ; \ - HelpID = SID_NEWDOCDIRECT ; \ Text [ en-US ] = "~New" ;\ #define ITEM_FILE_OPENDOC \ Identifier = SID_OPENDOC ; \ Command = ".uno:Open" ; \ - HelpID = SID_OPENDOC ; \ Text [ en-US ] = "~Open..." ;\ @@ -328,62 +282,52 @@ {\ Identifier = SID_AUTOPILOTMENU ; \ Command = ".uno:AutoPilotMenu" ; \ - HelpID = SID_AUTOPILOTMENU ; \ Text [ en-US ] = "A~utoPilot" ; \ }; #define ITEM_FILE_CLOSEDOC \ Identifier = SID_CLOSEDOC ; \ Command = ".uno:CloseDoc" ; \ - HelpID = SID_CLOSEDOC ; \ Text [ en-US ] = "~Close" ;\ #define ITEM_FILE_SAVEDOC \ Identifier = SID_SAVEDOC ; \ Command = ".uno:Save" ; \ - HelpID = SID_SAVEDOC ; \ Text [ en-US ] = "~Save" ; \ #define ITEM_FILE_SAVEDOCS \ Identifier = SID_SAVEDOCS ; \ Command = ".uno:SaveAll" ; \ - HelpID = SID_SAVEDOCS ; \ Text [ en-US ] = "Sa~ve All" ; \ #define ITEM_FILE_SAVEASDOC \ Identifier = SID_SAVEASDOC ; \ Command = ".uno:SaveAs" ; \ - HelpID = SID_SAVEASDOC ; \ Text [ en-US ] = "Save ~As..." ; \ #define ITEM_FILE_EXPORTDOC \ Identifier = SID_EXPORTDOC ; \ Command = ".uno:ExportTo" ; \ - HelpID = SID_EXPORTDOC ; \ Text [ en-US ] = "Expor~t..." ; \ #define ITEM_FILE_EXPORTDOCASPDF \ Identifier = SID_EXPORTDOCASPDF ; \ Command = ".uno:ExportToPDF" ; \ - HelpID = SID_EXPORTDOCASPDF ; \ Text [ en-US ] = "Export as P~DF..." ; \ #define ITEM_FILE_VERSIONDIALOG \ Identifier = SID_VERSION ; \ Command = ".uno:VersionDialog" ; \ - HelpID = SID_VERSION ; \ Text [ en-US ] = "Versions..." ; \ #define ITEM_FILE_LASTVERSIONDOC \ Identifier = SID_RELOAD ; \ Command = ".uno:Reload" ; \ - HelpID = SID_RELOAD ; \ Text [ en-US ] = "Reload" ;\ #define ITEM_FILE_DOCINFO \ Identifier = SID_DOCINFO ; \ Command = ".uno:SetDocumentProperties" ; \ - HelpID = SID_DOCINFO ; \ Text [ en-US ] = "Propert~ies..." ;\ #define ITEM_FILE_DOCTEMPLATE \ @@ -398,28 +342,24 @@ { \ Identifier = SID_ORGANIZER ; \ Command = ".uno:Organizer" ; \ - HelpId = SID_ORGANIZER ; \ Text [ en-US ] = "~Organize...";\ }; \ MenuItem \ { \ Identifier = SID_TEMPLATE_ADDRESSBOKSOURCE; \ Command = ".uno:AddressBookSource" ; \ - HelpId = SID_TEMPLATE_ADDRESSBOKSOURCE; \ Text [ en-US ] = "~Address Book Source..."; \ }; \ MenuItem \ { \ Identifier = SID_DOCTEMPLATE ; \ Command = ".uno:SaveAsTemplate" ; \ - HelpId = SID_DOCTEMPLATE ; \ Text [ en-US ] = "~Save...";\ }; \ MenuItem \ { \ Identifier = SID_OPENTEMPLATE ; \ Command = ".uno:OpenTemplate" ; \ - HelpId = SID_OPENTEMPLATE ; \ Text [ en-US ] = "~Edit...";\ }; \ }; \ @@ -428,164 +368,138 @@ #define ITEM_FILE_PRINTPREVIEW \ Identifier = SID_PRINTPREVIEW ; \ Command = ".uno:PrintPreview" ; \ - HelpID = SID_PRINTPREVIEW ; \ Text [ en-US ] = "Pa~ge Preview" ;\ #define ITEM_FILE_SETUPPRINTER \ Identifier = SID_SETUPPRINTER ; \ Command = ".uno:PrinterSetup" ; \ - HelpID = SID_SETUPPRINTER ; \ Text [ en-US ] = "P~rinter Settings..." ; \ #define ITEM_FILE_PRINTDOC \ Identifier = SID_PRINTDOC ; \ Command = ".uno:Print" ; \ - HelpID = SID_PRINTDOC ; \ Text [ en-US ] = "~Print..." ; \ #define ITEM_FILE_MAIL_SENDDOC \ Identifier = SID_MAIL_SENDDOC ; \ Command = ".uno:SendMail" ; \ - HelpID = SID_MAIL_SENDDOC ; \ Text [ en-US ] = "Document as ~E-mail..." ; \ #define ITEM_FILE_MAIL_SENDDOCASPDF \ Identifier = SID_MAIL_SENDDOCASPDF ; \ Command = ".uno:SendMailDocAsPDF" ; \ - HelpID = SID_MAIL_SENDDOCASPDF ; \ Text [ en-US ] = "Document as P~DF Attachment..." ; \ #define ITEM_FILE_QUITAPP \ Identifier = SID_QUITAPP ; \ Command = ".uno:Quit" ; \ - HelpID = SID_QUITAPP ; \ Text [ en-US ] = "E~xit" ; \ #define ITEM_FILE_LOGOUT \ Identifier = SID_LOGOUT ; \ Command = ".uno:Logout" ; \ - HelpID = SID_LOGOUT ; \ Text [ en-US ] = "Logout" ; \ #define ITEM_EDIT_UNDO \ Identifier = SID_UNDO ; \ Command = ".uno:UndoAction" ; \ - HelpID = SID_UNDO ; \ Text [ en-US ] = "Can't Undo" ; \ #define ITEM_EDIT_REDO \ Identifier = SID_REDO ; \ Command = ".uno:Redo" ; \ - HelpID = SID_REDO ; \ Text [ en-US ] = "Can't Restore" ; \ #define ITEM_EDIT_REPEAT \ Identifier = SID_REPEAT ; \ Command = ".uno:Repeat" ; \ - HelpID = SID_REPEAT ; \ Text [ en-US ] = "~Repeat" ; \ #define ITEM_EDIT_PASTE \ Identifier = SID_PASTE ; \ Command = ".uno:Paste" ; \ - HelpID = SID_PASTE ; \ Text [ en-US ] = "~Paste" ; \ #define ITEM_EDIT_SELECTALL \ Identifier = SID_SELECTALL ; \ Command = ".uno:SelectAll" ; \ - HelpID = SID_SELECTALL ; \ Text [ en-US ] = "Select ~All" ; \ #define ITEM_EDIT_SEARCH_DLG \ Identifier = SID_SEARCH_DLG ; \ Command = ".uno:SearchDialog" ; \ - HelpID = SID_SEARCH_DLG ; \ Text [ en-US ] = "~Find & Replace..." ; \ #define ITEM_EDIT_NAVIGATOR \ Identifier = SID_NAVIGATOR ; \ Command = ".uno:Navigator" ; \ - HelpID = SID_NAVIGATOR ; \ Text [ en-US ] = "~Navigator" ; \ #define ITEM_EDIT_BIBLIOGRAPHY \ Identifier = SID_COMP_BIBLIOGRAPHY ; \ Command = ".uno:BibliographyComponent" ; \ - HelpID = SID_COMP_BIBLIOGRAPHY ; \ Text [ en-US ] = "~Bibliography Database"; \ #define ITEM_EDIT_PLUGINS_ACTIVE \ Identifier = SID_PLUGINS_ACTIVE ; \ Command = ".uno:PlugInsActive" ; \ - HelpID = SID_PLUGINS_ACTIVE ; \ Text [ en-US ] = "P~lug-in" ; \ #define ITEM_EDIT_IMAP \ Identifier = SID_IMAP ; \ Command = ".uno:ImageMapDialog" ; \ - HelpID = SID_IMAP ; \ Text [ en-US ] = "ImageMap" ; \ #define ITEM_EDIT_OBJECT \ Identifier = SID_OBJECT ; \ Command = ".uno:ObjectMenue" ; \ - HelpID = SID_OBJECT ; \ Text [ en-US ] = "~Object" ; \ #define ITEM_VIEW_ATTR_ZOOM \ Identifier = SID_ATTR_ZOOM ; \ Command = ".uno:Zoom" ; \ - HelpID = SID_ATTR_ZOOM ; \ Text [ en-US ] = "~Zoom..." ; \ #define ITEM_VIEW_TOGGLEFUNCTIONBAR \ Identifier = SID_TOGGLEFUNCTIONBAR ; \ Command = ".uno:FunctionBarVisible" ; \ - HelpID = SID_TOGGLEFUNCTIONBAR ; \ Text [ en-US ] = "~Function Bar" ; \ #define ITEM_VIEW_TOGGLEOBJECTBAR \ Identifier = SID_TOGGLEOBJECTBAR ; \ Command = ".uno:ObjectBarVisible" ; \ - HelpID = SID_TOGGLEOBJECTBAR ; \ Text [ en-US ] = "~Object Bar" ; \ #define ITEM_VIEW_TOGGLEINETBAR \ Identifier = SID_TOGGLEINETBAR ; \ - HelpID = SID_TOGGLEINETBAR ; \ + Command = CMD_SID_TOGGLEINETBAR; \ Text [ en-US ] = "Internet Bar" ; \ #define ITEM_VIEW_TOGGLESTATUSBAR \ Identifier = SID_TOGGLESTATUSBAR ; \ Command = ".uno:StatusBarVisible" ; \ - HelpID = SID_TOGGLESTATUSBAR ; \ Text [ en-US ] = "~Status Bar" ; \ #define ITEM_VIEW_TOGGLEIMESTATUSWINDOW \ Identifier = SID_SHOW_IME_STATUS_WINDOW ; \ Command = ".uno:ShowImeStatusWindow" ; \ - HelpID = SID_SHOW_IME_STATUS_WINDOW ; \ Text [ en-US ] = "~Input Method Status"; \ #define ITEM_VIEW_TASKBAR \ Identifier = SID_TASKBAR ; \ Command = ".uno:TaskBarVisible" ; \ - HelpID = SID_TASKBAR ; \ Text [ en-US ] = "~Status Bar" ; \ #define ITEM_VIEW_COLORBAR \ Identifier = SID_COLOR_CONTROL ; \ Command = ".uno:ColorControl" ; \ - HelpID = SID_COLOR_CONTROL ; \ Text [ en-US ] = "~Color Bar" ; \ #define ITEM_VIEW_FULLSCREEN \ Identifier = SID_WIN_FULLSCREEN ; \ Command = ".uno:FullScreen" ; \ - HelpID = SID_WIN_FULLSCREEN ; \ Text [ en-US ] = "F~ull Screen" ; \ @@ -598,26 +512,22 @@ #define ITEM_VIEW_BROWSER_MODE \ Identifier = SID_BROWSER_MODE ; \ Command = ".uno:BrowseView" ; \ - HelpID = SID_BROWSER_MODE ; \ Text [ en-US ] = "~Online Layout" ; \ #define ITEM_VIEW_BROWSER \ Identifier = SID_BROWSER ; \ Command = ".uno:Beamer" ; \ - HelpID = SID_BROWSER ; \ Text [ en-US ] = "~Beamer" ; \ #define ITEM_INSERT_HYPERLINK_INSERT \ Identifier = SID_HYPERLINK_INSERT ; \ Command = ".uno:InsertHyperlink" ; \ - HelpID = SID_HYPERLINK_INSERT ; \ Text [ en-US ] = "~Hyperlink Bar" ; \ #define ITEM_INSERT_INSERT_GRAPHIC \ Identifier = SID_INSERT_GRAPHIC ; \ Command = ".uno:InsertGraphic" ; \ - HelpID = SID_INSERT_GRAPHIC ; \ Text [ en-US ] = "~Graphics..." ; \ #define ITEM_INSERT_TWAIN_SELECT \ @@ -625,7 +535,6 @@ {\ Identifier = SID_TWAIN_SELECT ; \ Command = ".uno:TwainSelect" ; \ - HelpID = SID_TWAIN_SELECT ; \ Text [ en-US ] = "~Select Source..." ; \ }; @@ -634,7 +543,6 @@ {\ Identifier = SID_TWAIN_TRANSFER ; \ Command = ".uno:TwainTransfer" ; \ - HelpID = SID_TWAIN_TRANSFER ; \ Text [ en-US ] = "~Request..." ; \ }; @@ -643,7 +551,6 @@ {\ Identifier = SID_SCAN ; \ Command = ".uno:Scan" ; \ - HelpID = SID_SCAN ; \ Text [ en-US ] = "Scan" ; \ SubMenu = Menu\ {\ @@ -658,19 +565,16 @@ #define ITEM_INSERT_INSERT_DIAGRAM \ Identifier = SID_INSERT_DIAGRAM ; \ Command = ".uno:InsertObjectChart" ; \ - HelpID = SID_INSERT_DIAGRAM ; \ Text [ en-US ] = "~Chart..." ; \ #define ITEM_INSERT_GALLERY \ Identifier = SID_GALLERY ; \ Command = ".uno:Gallery" ; \ - HelpID = SID_GALLERY ; \ Text [ en-US ] = "~Gallery" ; \ #define ITEM_INSERT_INSERTDOC \ Identifier = SID_INSERTDOC ; \ Command = ".uno:InsertDoc" ; \ - HelpID = SID_INSERTDOC ; \ Text [ en-US ] = "~File..." ; \ #define TMP_SID_INSERT_PLUGIN \ @@ -678,7 +582,6 @@ {\ Identifier = SID_INSERT_PLUGIN ; \ Command = ".uno:InsertPlugin" ; \ - HelpID = SID_INSERT_PLUGIN ; \ Text [ en-US ] = "~Plug-in..." ; \ }; @@ -687,7 +590,6 @@ {\ Identifier = SID_INSERT_SOUND ; \ Command = ".uno:InsertSound" ; \ - HelpID = SID_INSERT_SOUND ; \ Text [ en-US ] = "~Sound..." ; \ }; @@ -696,27 +598,13 @@ {\ Identifier = SID_INSERT_VIDEO ; \ Command = ".uno:InsertVideo" ; \ - HelpID = SID_INSERT_VIDEO ; \ Text [ en-US ] = "~Video..." ; \ }; -#ifdef SOLAR_JAVA -#define TMP_SID_INSERT_APPLET \ - MenuItem\ - {\ - Identifier = SID_INSERT_APPLET ; \ - Command = ".uno:InsertApplet" ; \ - HelpID = SID_INSERT_APPLET ; \ - Text [ en-US ] = "~Applet..." ; \ - }; -#else -#define TMP_SID_INSERT_APPLET -#endif #define ITEM_INSERT_OBJECT_MN \ MenuItem\ {\ Identifier = SID_MN_INSERT_OBJECT_DLGS ; \ - HelpID = SID_MN_INSERT_OBJECT_DLGS ; \ Command = ".uno:ObjectMenu" ; \ Text [ en-US ] = "~Object" ; \ SubMenu = Menu\ @@ -727,18 +615,15 @@ {\ Identifier = SID_INSERT_OBJECT ; \ Command = ".uno:InsertObject" ; \ - HelpID = SID_INSERT_OBJECT ; \ Text [ en-US ] = "~OLE Object..." ; \ };\ TMP_SID_INSERT_PLUGIN\ TMP_SID_INSERT_SOUND\ TMP_SID_INSERT_VIDEO\ - TMP_SID_INSERT_APPLET\ MenuItem\ {\ Identifier = SID_INSERT_MATH ; \ Command = ".uno:InsertMath" ; \ - HelpID = SID_INSERT_MATH ; \ Text [ en-US ] = "~Formula..." ; \ };\ };\ @@ -749,7 +634,6 @@ MenuItem\ {\ Identifier = SID_MN_INSERT_OBJECT_DLGS ; \ - HelpID = SID_MN_INSERT_OBJECT_DLGS ; \ Command = ".uno:ObjectMenu" ; \ Text [ en-US ] = "~Object" ; \ SubMenu = Menu\ @@ -760,14 +644,12 @@ {\ Identifier = SID_INSERT_OBJECT ; \ Command = ".uno:InsertObject" ; \ - HelpID = SID_INSERT_OBJECT ; \ Text [ en-US ] = "~OLE Object..." ; \ };\ MenuItem\ {\ Identifier = SID_INSERT_MATH ; \ Command = ".uno:InsertMath" ; \ - HelpID = SID_INSERT_MATH ; \ Text [ en-US ] = "~Formula" ; \ };\ };\ @@ -778,7 +660,6 @@ MenuItem\ {\ Identifier = DEFINE_SLOTID_FOR_NUMBER_BULLETS ; \ - HelpID = DEFINE_SLOTID_FOR_NUMBER_BULLETS ; \ Text [ en-US ] = "~Numbering/Bullets..." ; \ }; @@ -786,7 +667,6 @@ #define ITEM_FORMAT \ Identifier = SID_OBJECTMENU0 ; \ - HelpID = SID_OBJECTMENU0 ; \ Command = ".uno:FormatMenu" ; \ Text [ en-US ] = "F~ormat" ; \ @@ -794,7 +674,6 @@ #define ITEM_TOOLS_MACROS \ Identifier = SID_SCRIPTORGANIZER ; \ - HelpId = SID_SCRIPTORGANIZER ; \ Command = ".uno:ScriptOrganizer" ; \ Text [ en-US ] = "Scripts/Macros" ; \ @@ -810,13 +689,11 @@ { \ Identifier = SID_RECORDMACRO ; \ Command = ".uno:MacroRecorder" ; \ - HelpId = SID_RECORDMACRO ; \ Text [ en-US ] = "Record Macro"; }; \ MenuItem \ { \ Identifier = SID_BASICCHOOSER ; \ Command = ".uno:MacroDialog" ; \ - HelpID = SID_BASICCHOOSER ; \ Text [ en-US ] = "~Macro..." ; \ }; \ }; \ @@ -829,7 +706,6 @@ #define ITEM_TOOLS_CONFIG \ Identifier = SID_CONFIG ; \ Command = ".uno:ConfigureDialog"; \ - HelpID = SID_CONFIG ; \ Text [ en-US ] = "~Configure..." ; \ @@ -838,7 +714,6 @@ {\ Identifier = SID_AUTO_CORRECT_DLG ; \ Command = ".uno:AutoCorrectDlg" ; \ - HelpID = SID_AUTO_CORRECT_DLG ; \ Text [ en-US ] = "~AutoCorrect..." ; \ }; @@ -847,7 +722,6 @@ {\ Identifier = SID_SD_GRAPHIC_OPTIONS ; \ Command = ".uno:SdGraphicOptions" ; \ - HelpID = SID_SD_GRAPHIC_OPTIONS ; \ Text [ en-US ] = "~Drawing..." ; \ }; @@ -856,7 +730,6 @@ {\ Identifier = SID_OPTIONS_TREEDIALOG ; \ Command = ".uno:OptionsTreeDialog" ; \ - HelpID = SID_OPTIONS_TREEDIALOG ; \ Text [ en-US ] = "~Options..." ; \ }; @@ -867,13 +740,11 @@ #define ITEM_WINDOW_MDIWINDOWLIST \ Identifier = SID_MDIWINDOWLIST ; \ Command = ".uno:WindowList" ; \ - HelpID = SID_MDIWINDOWLIST ; \ Text [ en-US ] = "~Window" ; \ #define ITEM_WINDOW_CLONEWIN \ Identifier = SID_NEWWINDOW ; \ Command = ".uno:NewWindow" ; \ - HelpID = SID_NEWWINDOW ; \ Text [ en-US ] = "~New Window" ; \ #define ITEM_WINDOW_CASCADEWINS \ @@ -881,7 +752,6 @@ {\ Identifier = SID_CASCADEWINS ; \ Command = ".uno:Cascade" ; \ - HelpID = SID_CASCADEWINS ; \ Text [ en-US ] = "~Cascade" ; \ }; @@ -890,7 +760,6 @@ {\ Identifier = SID_TILEWINS ; \ Command = ".uno:Tile" ; \ - HelpID = SID_TILEWINS ; \ Text [ en-US ] = "~Tile" ; \ }; @@ -899,7 +768,6 @@ {\ Identifier = SID_HORIZONTALWINS ; \ Command = ".uno:ArrangeHorizontal" ; \ - HelpID = SID_HORIZONTALWINS ; \ Text [ en-US ] = "~Horizontally" ; \ }; @@ -908,14 +776,12 @@ {\ Identifier = SID_VERTICALWINS ; \ Command = ".uno:ArrangeVertical" ; \ - HelpID = SID_VERTICALWINS ; \ Text [ en-US ] = "~Vertically" ; \ }; #define ITEM_WINDOW_CLOSEWIN \ Identifier = SID_CLOSEWIN ; \ Command = ".uno:CloseWin" ; \ - HelpID = SID_CLOSEWIN ; \ Text [ en-US ] = "Close Window" ; \ #define ITEM_HYPERLINK_DIALOG \ @@ -923,7 +789,6 @@ {\ Identifier = SID_HYPERLINK_DIALOG ; \ Command = ".uno:HyperlinkDialog" ; \ - HelpID = SID_HYPERLINK_DIALOG ; \ Text [ en-US ] = "~Hyperlink" ; \ } ; @@ -932,7 +797,6 @@ {\ Identifier = SID_POLY_MERGE ; \ Command = ".uno:Merge" ; \ - HelpID = SID_POLY_MERGE ; \ Text [ en-US ] = "~Merge" ; \ }; #define ITEM_POLY_SUBSTRACT \ @@ -940,7 +804,6 @@ {\ Identifier = SID_POLY_SUBSTRACT ; \ Command = ".uno:Substract" ; \ - HelpID = SID_POLY_SUBSTRACT ; \ Text [ en-US ] = "~Subtract" ; \ }; #define ITEM_POLY_INTERSECT \ @@ -948,7 +811,6 @@ {\ Identifier = SID_POLY_INTERSECT ; \ Command = ".uno:Intersect" ; \ - HelpID = SID_POLY_INTERSECT ; \ Text [ en-US ] = "I~ntersect" ; \ }; @@ -957,7 +819,6 @@ { \ Identifier = SID_POLY_FORMEN ; \ Command = ".uno:PolyFormen" ; \ - HelpID = SID_POLY_FORMEN ; \ Text [ en-US ] = "~Shapes" ; \ SubMenu = Menu \ {\ @@ -1016,56 +877,47 @@ #define ITEM_HELP_HELPMENU \ Identifier = SID_HELPMENU ; \ Command = ".uno:HelpMenu" ; \ - HelpID = SID_HELPMENU ; \ Text [ en-US ] = "~Help" ; \ #define ITEM_HELP_HELPINDEX \ Identifier = SID_HELPINDEX ; \ Command = ".uno:HelpIndex" ; \ - HelpID = SID_HELPINDEX ; \ Text [ en-US ] = "~Contents" ; \ #define ITEM_HELP_HELPONHELP \ Identifier = SID_HELPONHELP ; \ Command = ".uno:HelpOnHelp" ; \ - HelpID = SID_HELPONHELP ; \ Text [ en-US ] = "Using Help" ; \ #define ITEM_HELP_HELP_PI \ Identifier = SID_HELP_PI ; \ Command = ".uno:HelperDialog" ; \ - HelpID = SID_HELP_PI ; \ Text [ en-US ] = "Help ~Agent" ; \ #define ITEM_HELP_HELPTIPS \ Identifier = SID_HELPTIPS ; \ Command = ".uno:HelpTip" ; \ - HelpID = SID_HELPTIPS ; \ Text [ en-US ] = "~Tips" ; \ #define ITEM_HELP_BALLOONHELP \ Identifier = SID_HELPBALLOONS ; \ Command = ".uno:ActiveHelp" ; \ - HelpID = SID_HELPBALLOONS ; \ Text [ en-US ] = "~Extended Tips" ; \ #define ITEM_HELP_SUPPORTPAGE \ Identifier = SID_HELP_SUPPORTPAGE ; \ Command = ".uno:HelpSupport" ; \ - HelpID = SID_HELP_SUPPORTPAGE ; \ Text [ en-US ] = "~Support" ; \ #define ITEM_HELP_ONLINE_REGISTRATION \ Identifier = SID_ONLINE_REGISTRATION ; \ Command = ".uno:OnlineRegistrationDlg" ; \ - HelpID = SID_ONLINE_REGISTRATION ; \ Text [ en-US ] = "~Registration..." ; \ #define ITEM_HELP_ABOUT \ Identifier = SID_ABOUT ; \ Command = ".uno:About" ; \ - HelpID = SID_ABOUT ; \ Text [ en-US ] = "A~bout %PRODUCTNAME..." ; \ /*------------------------------------------------------------------------ @@ -1131,39 +983,33 @@ #define ITEM_POPUP_TEMPLATE_EDIT \ Identifier = SID_STYLE_EDIT ; \ Command = ".uno:EditStyle" ; \ - HelpID = SID_STYLE_EDIT ; \ Text [ en-US ] = "Edit Paragraph Style..." ; \ // Gruppen-/Kombination-Funktionen #define ITEM_POPUP_GROUP \ Identifier = SID_GROUP ; \ Command = ".uno:FormatGroup" ; \ - HelpID = SID_GROUP ; \ Text [ en-US ] = "~Group" ; \ #define ITEM_POPUP_UNGROUP \ Identifier = SID_UNGROUP ; \ Command = ".uno:FormatUngroup" ; \ - HelpID = SID_UNGROUP ; \ Text [ en-US ] = "~Ungroup" ; \ #define ITEM_POPUP_ENTER_GROUP \ Identifier = SID_ENTER_GROUP ; \ Command = ".uno:EnterGroup" ; \ - HelpID = SID_ENTER_GROUP ; \ Text [ en-US ] = "~Edit Group" ; \ #define ITEM_POPUP_LEAVE_GROUP \ Identifier = SID_LEAVE_GROUP ; \ Command = ".uno:LeaveGroup" ; \ - HelpID = SID_LEAVE_GROUP ; \ Text [ en-US ] = "E~xit Group" ; \ #define ITEM_GROUP_MENU \ MenuItem\ {\ Identifier = SID_MN_GROUP ; \ - HelpID = SID_MN_GROUP ; \ Command = ".uno:GroupMenu" ; \ SubMenu = Menu\ {\ @@ -1195,14 +1041,12 @@ { \ Identifier = SID_DATASOURCE_ADMINISTRATION ; \ Command = ".uno:DatasourceAdministration" ; \ - HelpID = SID_DATASOURCE_ADMINISTRATION ; \ Text [ en-US ] = "~Data Sources..." ; \ }; #define ITEM_VIEW_DATA_SOURCE_BROWSER \ Identifier = SID_VIEW_DATA_SOURCE_BROWSER; \ Command = ".uno:ViewDataSourceBrowser" ; \ - HelpID = SID_VIEW_DATA_SOURCE_BROWSER; \ Text [ en-US ] = "~Data Sources" ; \ /*------------------------------------------------------------------------ @@ -1211,112 +1055,92 @@ #define ITEM_TOOLBAR_SET_JUSTIFY_PARA \ Identifier = SID_ATTR_PARA_ADJUST_BLOCK ; \ Command = ".uno:JustifyPara" ; \ - HelpID = SID_ATTR_PARA_ADJUST_BLOCK ; #define ITEM_TOOLBAR_NEWDOCDIRECT \ Identifier = SID_NEWDOCDIRECT ; \ Command = ".uno:AddDirect" ; \ - HelpID = SID_NEWDOCDIRECT ; #define ITEM_TOOLBAR_PRINTDOCDIRECT \ Identifier = SID_PRINTDOCDIRECT ; \ Command = ".uno:PrintDefault" ; \ - HelpID = SID_PRINTDOCDIRECT ; #define ITEM_TOOLBAR_INSERT_DRAW \ Identifier = SID_INSERT_DRAW ; \ Command = ".uno:InsertDraw" ; \ - HelpID = SID_INSERT_DRAW ; \ DropDown = TRUE ; #define ITEM_TOOLBAR_CHOOSE_CONTROLS \ Identifier = SID_CHOOSE_CONTROLS ; \ Command = ".uno:ChooseControls" ; \ - HelpID = SID_CHOOSE_CONTROLS ; \ DropDown = TRUE ; #define ITEM_TOOLBAR_AUTOSPELL_CHECK \ Identifier = SID_AUTOSPELL_CHECK ; \ Command = ".uno:SpellOnline" ; \ - HelpID = SID_AUTOSPELL_CHECK ; #define ITEM_TOOLBAR_TEMPLATE_APPLY \ Identifier = SID_STYLE_APPLY ; \ Command = ".uno:StyleApply" ; \ - HelpID = SID_STYLE_APPLY ; #define ITEM_TOOLBAR_ATTR_CHAR_COLOR \ Identifier = SID_ATTR_CHAR_COLOR ; \ Command = ".uno:Color" ; \ - HelpID = SID_ATTR_CHAR_COLOR ;\ DropDown = TRUE ; #define ITEM_TOOLBAR_BACKGROUND_PATTERN \ Identifier = SID_BACKGROUND_PATTERN ; \ Command = ".uno:BackgroundPatternController" ; \ - HelpID = SID_BACKGROUND_PATTERN ;\ DropDown = TRUE ; #define ITEM_TOOLBAR_BACKGROUND_COLOR \ Identifier = SID_BACKGROUND_COLOR ; \ Command = ".uno:BackgroundColor" ; \ - HelpID = SID_BACKGROUND_COLOR ;\ DropDown = TRUE ; #define ITEM_TOOLBAR_ATTR_BORDER \ Identifier = SID_ATTR_BORDER ; \ Command = ".uno:BorderStyle" ; \ - HelpID = SID_ATTR_BORDER ; #define ITEM_TOOLBAR_FRAME_LINESTYLE \ Identifier = SID_FRAME_LINESTYLE ; \ Command = ".uno:LineStyle" ; \ - HelpID = SID_FRAME_LINESTYLE ; #define ITEM_TOOLBAR_FRAME_LINECOLOR \ Identifier = SID_FRAME_LINECOLOR ; \ Command = ".uno:FrameLineColor" ; \ - HelpID = SID_FRAME_LINECOLOR ; #define ITEM_TOOLBAR_SIM_START \ Identifier = SID_SIM_START ; \ Command = ".uno:LaunchStarImage" ; \ - HelpID = SID_SIM_START ; #define ITEM_TOOLBAR_ATTR_LINEEND_STYLE \ Identifier = SID_ATTR_LINEEND_STYLE ; \ Command = ".uno:LineEndStyle" ; \ - HelpID = SID_ATTR_LINEEND_STYLE ; \ DropDown = TRUE ; #define ITEM_TOOLBAR_ATTR_LINE_STYLE \ Identifier = SID_ATTR_LINE_STYLE ; \ Command = ".uno:XLineStyle" ; \ - HelpID = SID_ATTR_LINE_STYLE ; #define ITEM_TOOLBAR_ATTR_LINE_WIDTH \ Identifier = SID_ATTR_LINE_WIDTH ; \ Command = ".uno:LineWidth" ; \ - HelpID = SID_ATTR_LINE_WIDTH ; #define ITEM_TOOLBAR_ATTR_LINE_COLOR \ Identifier = SID_ATTR_LINE_COLOR ; \ Command = ".uno:XLineColor" ; \ - HelpID = SID_ATTR_LINE_COLOR ; #define ITEM_TOOLBAR_ATTR_FILL_STYLE \ Identifier = SID_ATTR_FILL_STYLE ; \ Command = ".uno:FillStyle" ; \ - HelpID = SID_ATTR_FILL_STYLE ; #define ITEM_TOOLBAR_OBJECT_ROTATE \ Identifier = SID_OBJECT_ROTATE ; \ Command = ".uno:ToggleObjectRotateMode" ; \ - HelpID = SID_OBJECT_ROTATE ; #define ITEM_VIEW_OFFICEBAR \ Identifier = SID_GROUPVIEW; \ - HelpID = SID_GROUPVIEW; \ + Command = CMD_SID_GROUPVIEW; \ Text [ en-US ] = "~Office Bar" ; \ @@ -1324,7 +1148,6 @@ MenuItem\ {\ Identifier = SID_MN_SUB_TRANSLITERATE ; \ - HelpID = SID_MN_SUB_TRANSLITERATE ; \ Command = ".uno:TransliterateMenu" ; \ SubMenu = Menu\ {\ @@ -1334,63 +1157,54 @@ {\ Identifier = SID_TRANSLITERATE_SENTENCE_CASE; \ Command = ".uno:ChangeCaseToSentenceCase" ; \ - HelpID = SID_TRANSLITERATE_SENTENCE_CASE; \ Text [ en-US ] = "~Sentence case";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_LOWER; \ Command = ".uno:ChangeCaseToLower" ; \ - HelpID = SID_TRANSLITERATE_LOWER; \ Text [ en-US ] = "~lowercase";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_UPPER ; \ Command = ".uno:ChangeCaseToUpper" ; \ - HelpID = SID_TRANSLITERATE_UPPER ; \ Text [ en-US ] = "~UPPERCASE";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_TITLE_CASE; \ Command = ".uno:ChangeCaseToTitleCase" ; \ - HelpID = SID_TRANSLITERATE_TITLE_CASE; \ Text [ en-US ] = "~Capitalize Every Word";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_TOGGLE_CASE; \ Command = ".uno:ChangeCaseToToggleCase" ; \ - HelpID = SID_TRANSLITERATE_TOGGLE_CASE; \ Text [ en-US ] = "~tOGGLE cASE";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_HALFWIDTH; \ Command = ".uno:ChangeCaseToHalfWidth" ; \ - HelpID = SID_TRANSLITERATE_HALFWIDTH; \ Text [ en-US ] = "H~alf-width";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_FULLWIDTH; \ Command = ".uno:ChangeCaseToFullWidth" ; \ - HelpID = SID_TRANSLITERATE_FULLWIDTH; \ Text [ en-US ] = "Full-width";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_HIRAGANA; \ Command = ".uno:ChangeCaseToHiragana" ; \ - HelpID = SID_TRANSLITERATE_HIRAGANA; \ Text [ en-US ] = "~Hiragana";\ };\ MenuItem\ {\ Identifier = SID_TRANSLITERATE_KATAGANA; \ Command = ".uno:ChangeCaseToKatakana" ; \ - HelpID = SID_TRANSLITERATE_KATAGANA; \ Text [ en-US ] = "~Katakana";\ };\ };\ @@ -1400,23 +1214,23 @@ #define ITEM_OPEN_HYPERLINK \ Identifier = SID_OPEN_HYPERLINK ; \ - HelpID = SID_OPEN_HYPERLINK ; \ + Command = CMD_SID_OPEN_HYPERLINK; \ Text [ en-US ] = "~Open Hyperlink" ; \ #define ITEM_OPEN_SMARTTAGMENU \ Identifier = SID_OPEN_SMARTTAGMENU ; \ - HelpID = SID_OPEN_SMARTTAGMENU ; \ + Command = CMD_SID_OPEN_SMARTTAGMENU; \ Text [ en-US ] = "Open ~Smart Tag Menu" ; \ #define ITEM_OPEN_XML_FILTERSETTINGS \ Identifier = SID_OPEN_XML_FILTERSETTINGS ; \ - HelpID = SID_OPEN_XML_FILTERSETTINGS ; \ + Command = CMD_SID_OPEN_XML_FILTERSETTINGS; \ Text [ en-US ] = "~XML Filter Settings..."; \ #define ITEM_HANGUL_HANJA_CONVERSION \ Identifier = SID_HANGUL_HANJA_CONVERSION; \ - HelpId = SID_HANGUL_HANJA_CONVERSION; \ + Command = CMD_SID_HANGUL_HANJA_CONVERSION; \ Text [ en-US ] = "Hangul/Hanja Conversion..."; \ #endif // #ifndef _GLOBLMN_HRC diff --git a/svx/inc/helpid.hrc b/svx/inc/helpid.hrc index 1f6fe1538a85..be75fe019f96 100644 --- a/svx/inc/helpid.hrc +++ b/svx/inc/helpid.hrc @@ -26,270 +26,258 @@ ************************************************************************/ #ifndef _SVX_HELPID_HRC #define _SVX_HELPID_HRC -// include --------------------------------------------------------------- - -#include <svl/solar.hrc> #include <svx/exthelpid.hrc> +#include <svx/svxcommands.h> +#include <sfx2/sfxcommands.h> // Help-Ids -------------------------------------------------------------- -#define HID_ALIGN_TBX (HID_SVX_START + 1) -#define HID_BMPMASK_CTL_PIPETTE (HID_SVX_START + 4) -#define HID_BMPMASK_CTL_QCOL_1 (HID_SVX_START + 5) -#define HID_BMPMASK_TBI_PIPETTE (HID_SVX_START + 6) -#define HID_COLOR_CTL_COLORS (HID_SVX_START + 7) -#define HID_CONTDLG_APPLY (HID_SVX_START + 8) -#define HID_CONTDLG_AUTOCONTOUR (HID_SVX_START + 9) -#define HID_CONTDLG_CIRCLE (HID_SVX_START + 10) -#define HID_CONTDLG_FREEPOLY (HID_SVX_START + 11) -#define HID_CONTDLG_GRAPHWND (HID_SVX_START + 12) -#define HID_CONTDLG_PIPETTE (HID_SVX_START + 13) -#define HID_CONTDLG_POLY (HID_SVX_START + 14) -#define HID_CONTDLG_POLYDELETE (HID_SVX_START + 15) -#define HID_CONTDLG_POLYEDIT (HID_SVX_START + 16) -#define HID_CONTDLG_POLYINSERT (HID_SVX_START + 17) -#define HID_CONTDLG_POLYMOVE (HID_SVX_START + 18) -#define HID_CONTDLG_RECT (HID_SVX_START + 19) -#define HID_CONTDLG_REDO (HID_SVX_START + 20) -#define HID_CONTDLG_SELECT (HID_SVX_START + 21) -#define HID_CONTDLG_TOOLBOX (HID_SVX_START + 22) -#define HID_CONTDLG_UNDO (HID_SVX_START + 23) -#define HID_CONTDLG_WORKPLACE (HID_SVX_START + 24) -#define HID_CTL_FONTWORK_FAVORITES (HID_SVX_START + 25) -#define HID_CTRL3D_HSCROLL (HID_SVX_START + 26) -#define HID_CTRL3D_SWITCHER (HID_SVX_START + 27) -#define HID_CTRL3D_VSCROLL (HID_SVX_START + 28) -#define HID_CTRL_COLOR (HID_SVX_START + 29) -#define HID_DRAWTOOL_TBX (HID_SVX_START + 30) -#define HID_EDITENG_SPELLER_ADDWORD (HID_SVX_START + 31) -#define HID_EDITENG_SPELLER_AUTOCORRECT (HID_SVX_START + 32) -#define HID_EDITENG_SPELLER_IGNORE (HID_SVX_START + 33) -#define HID_EDITENG_SPELLER_PARALANGUAGE (HID_SVX_START + 34) -#define HID_EDITENG_SPELLER_START (HID_SVX_START + 35) -#define HID_EDITENG_SPELLER_WORDLANGUAGE (HID_SVX_START + 36) -#define HID_FILL_ATTR_LISTBOX (HID_SVX_START + 37) -#define HID_FILL_TYPE_LISTBOX (HID_SVX_START + 38) -#define HID_FONTWORK_CTL_FORMS (HID_SVX_START + 39) -#define HID_FONTWORK_TBI_ADJUST_AUTOSIZE (HID_SVX_START + 40) -#define HID_FONTWORK_TBI_ADJUST_CENTER (HID_SVX_START + 41) -#define HID_FONTWORK_TBI_ADJUST_LEFT (HID_SVX_START + 42) -#define HID_FONTWORK_TBI_ADJUST_MIRROR (HID_SVX_START + 43) -#define HID_FONTWORK_TBI_ADJUST_RIGHT (HID_SVX_START + 44) -#define HID_FONTWORK_TBI_OUTLINE (HID_SVX_START + 45) -#define HID_FONTWORK_TBI_SHADOW_NORMAL (HID_SVX_START + 46) -#define HID_FONTWORK_TBI_SHADOW_OFF (HID_SVX_START + 47) -#define HID_FONTWORK_TBI_SHADOW_SLANT (HID_SVX_START + 48) -#define HID_FONTWORK_TBI_SHOWFORM (HID_SVX_START + 49) -#define HID_FONTWORK_TBI_STYLE_OFF (HID_SVX_START + 50) -#define HID_FONTWORK_TBI_STYLE_ROTATE (HID_SVX_START + 51) -#define HID_FONTWORK_TBI_STYLE_SLANTX (HID_SVX_START + 52) -#define HID_FONTWORK_TBI_STYLE_SLANTY (HID_SVX_START + 53) -#define HID_FONTWORK_TBI_STYLE_UPRIGHT (HID_SVX_START + 54) -#define HID_FORMAT_FOOTER (HID_SVX_START + 55) -#define HID_FORMAT_HEADER (HID_SVX_START + 56) +#define HID_ALIGN_TBX "SVX_HID_ALIGN_TBX" +#define HID_BMPMASK_CTL_PIPETTE "SVX_HID_BMPMASK_CTL_PIPETTE" +#define HID_BMPMASK_CTL_QCOL_1 "SVX_HID_BMPMASK_CTL_QCOL_1" +#define HID_BMPMASK_TBI_PIPETTE "SVX_HID_BMPMASK_TBI_PIPETTE" +#define HID_COLOR_CTL_COLORS "SVX_HID_COLOR_CTL_COLORS" +#define HID_CONTDLG_APPLY "SVX_HID_CONTDLG_APPLY" +#define HID_CONTDLG_AUTOCONTOUR "SVX_HID_CONTDLG_AUTOCONTOUR" +#define HID_CONTDLG_CIRCLE "SVX_HID_CONTDLG_CIRCLE" +#define HID_CONTDLG_FREEPOLY "SVX_HID_CONTDLG_FREEPOLY" +#define HID_CONTDLG_GRAPHWND "SVX_HID_CONTDLG_GRAPHWND" +#define HID_CONTDLG_PIPETTE "SVX_HID_CONTDLG_PIPETTE" +#define HID_CONTDLG_POLY "SVX_HID_CONTDLG_POLY" +#define HID_CONTDLG_POLYDELETE "SVX_HID_CONTDLG_POLYDELETE" +#define HID_CONTDLG_POLYEDIT "SVX_HID_CONTDLG_POLYEDIT" +#define HID_CONTDLG_POLYINSERT "SVX_HID_CONTDLG_POLYINSERT" +#define HID_CONTDLG_POLYMOVE "SVX_HID_CONTDLG_POLYMOVE" +#define HID_CONTDLG_RECT "SVX_HID_CONTDLG_RECT" +#define HID_CONTDLG_REDO "SVX_HID_CONTDLG_REDO" +#define HID_CONTDLG_SELECT "SVX_HID_CONTDLG_SELECT" +#define HID_CONTDLG_TOOLBOX "SVX_HID_CONTDLG_TOOLBOX" +#define HID_CONTDLG_UNDO "SVX_HID_CONTDLG_UNDO" +#define HID_CONTDLG_WORKPLACE "SVX_HID_CONTDLG_WORKPLACE" +#define HID_CTL_FONTWORK_FAVORITES "SVX_HID_CTL_FONTWORK_FAVORITES" +#define HID_CTRL3D_HSCROLL "SVX_HID_CTRL3D_HSCROLL" +#define HID_CTRL3D_SWITCHER "SVX_HID_CTRL3D_SWITCHER" +#define HID_CTRL3D_VSCROLL "SVX_HID_CTRL3D_VSCROLL" +#define HID_CTRL_COLOR "SVX_HID_CTRL_COLOR" +#define HID_DRAWTOOL_TBX "SVX_HID_DRAWTOOL_TBX" +#define HID_EDITENG_SPELLER_ADDWORD "SVX_HID_EDITENG_SPELLER_ADDWORD" +#define HID_EDITENG_SPELLER_AUTOCORRECT "SVX_HID_EDITENG_SPELLER_AUTOCORRECT" +#define HID_EDITENG_SPELLER_IGNORE "SVX_HID_EDITENG_SPELLER_IGNORE" +#define HID_EDITENG_SPELLER_PARALANGUAGE "SVX_HID_EDITENG_SPELLER_PARALANGUAGE" +#define HID_EDITENG_SPELLER_START "SVX_HID_EDITENG_SPELLER_START" +#define HID_EDITENG_SPELLER_WORDLANGUAGE "SVX_HID_EDITENG_SPELLER_WORDLANGUAGE" +#define HID_FILL_ATTR_LISTBOX "SVX_HID_FILL_ATTR_LISTBOX" +#define HID_FILL_TYPE_LISTBOX "SVX_HID_FILL_TYPE_LISTBOX" +#define HID_FONTWORK_CTL_FORMS "SVX_HID_FONTWORK_CTL_FORMS" +#define HID_FONTWORK_TBI_ADJUST_AUTOSIZE "SVX_HID_FONTWORK_TBI_ADJUST_AUTOSIZE" +#define HID_FONTWORK_TBI_ADJUST_CENTER "SVX_HID_FONTWORK_TBI_ADJUST_CENTER" +#define HID_FONTWORK_TBI_ADJUST_LEFT "SVX_HID_FONTWORK_TBI_ADJUST_LEFT" +#define HID_FONTWORK_TBI_ADJUST_MIRROR "SVX_HID_FONTWORK_TBI_ADJUST_MIRROR" +#define HID_FONTWORK_TBI_ADJUST_RIGHT "SVX_HID_FONTWORK_TBI_ADJUST_RIGHT" +#define HID_FONTWORK_TBI_OUTLINE "SVX_HID_FONTWORK_TBI_OUTLINE" +#define HID_FONTWORK_TBI_SHADOW_NORMAL "SVX_HID_FONTWORK_TBI_SHADOW_NORMAL" +#define HID_FONTWORK_TBI_SHADOW_OFF "SVX_HID_FONTWORK_TBI_SHADOW_OFF" +#define HID_FONTWORK_TBI_SHADOW_SLANT "SVX_HID_FONTWORK_TBI_SHADOW_SLANT" +#define HID_FONTWORK_TBI_SHOWFORM "SVX_HID_FONTWORK_TBI_SHOWFORM" +#define HID_FONTWORK_TBI_STYLE_OFF "SVX_HID_FONTWORK_TBI_STYLE_OFF" +#define HID_FONTWORK_TBI_STYLE_ROTATE "SVX_HID_FONTWORK_TBI_STYLE_ROTATE" +#define HID_FONTWORK_TBI_STYLE_SLANTX "SVX_HID_FONTWORK_TBI_STYLE_SLANTX" +#define HID_FONTWORK_TBI_STYLE_SLANTY "SVX_HID_FONTWORK_TBI_STYLE_SLANTY" +#define HID_FONTWORK_TBI_STYLE_UPRIGHT "SVX_HID_FONTWORK_TBI_STYLE_UPRIGHT" +#define HID_FORMAT_FOOTER "SVX_HID_FORMAT_FOOTER" +#define HID_FORMAT_HEADER "SVX_HID_FORMAT_HEADER" // free -#define HID_GALLERY_ICONVIEW (HID_SVX_START + 58) -#define HID_GALLERY_LISTVIEW (HID_SVX_START + 59) -#define HID_GALLERY_MN_ADD (HID_SVX_START + 60) -#define HID_GALLERY_MN_ADDMENU (HID_SVX_START + 61) -#define HID_GALLERY_MN_ADD_LINK (HID_SVX_START + 62) -#define HID_GALLERY_MN_BACKGROUND (HID_SVX_START + 63) -#define HID_GALLERY_MN_COPYCLIPBOARD (HID_SVX_START + 64) -#define HID_GALLERY_MN_DELETE (HID_SVX_START + 65) -#define HID_GALLERY_MN_PASTECLIPBOARD (HID_SVX_START + 66) -#define HID_GALLERY_MN_PREVIEW (HID_SVX_START + 67) -#define HID_GALLERY_NEWTHEME (HID_SVX_START + 68) -#define HID_GALLERY_PREVIEW (HID_SVX_START + 69) -#define HID_GALLERY_PROPERTIES (HID_SVX_START + 70) -#define HID_GALLERY_RENAME (HID_SVX_START + 71) -#define HID_GALLERY_THEMELIST (HID_SVX_START + 72) +#define HID_GALLERY_ICONVIEW "SVX_HID_GALLERY_ICONVIEW" +#define HID_GALLERY_LISTVIEW "SVX_HID_GALLERY_LISTVIEW" +#define HID_GALLERY_MN_ADD "SVX_HID_GALLERY_MN_ADD" +#define HID_GALLERY_MN_ADDMENU "SVX_HID_GALLERY_MN_ADDMENU" +#define HID_GALLERY_MN_ADD_LINK "SVX_HID_GALLERY_MN_ADD_LINK" +#define HID_GALLERY_MN_BACKGROUND "SVX_HID_GALLERY_MN_BACKGROUND" +#define HID_GALLERY_MN_COPYCLIPBOARD "SVX_HID_GALLERY_MN_COPYCLIPBOARD" +#define HID_GALLERY_MN_DELETE "SVX_HID_GALLERY_MN_DELETE" +#define HID_GALLERY_MN_PASTECLIPBOARD "SVX_HID_GALLERY_MN_PASTECLIPBOARD" +#define HID_GALLERY_MN_PREVIEW "SVX_HID_GALLERY_MN_PREVIEW" +#define HID_GALLERY_NEWTHEME "SVX_HID_GALLERY_NEWTHEME" +#define HID_GALLERY_PREVIEW "SVX_HID_GALLERY_PREVIEW" +#define HID_GALLERY_PROPERTIES "SVX_HID_GALLERY_PROPERTIES" +#define HID_GALLERY_RENAME "SVX_HID_GALLERY_RENAME" +#define HID_GALLERY_THEMELIST "SVX_HID_GALLERY_THEMELIST" // free -#define HID_GALLERY_WINDOW (HID_SVX_START + 74) -#define HID_GRFFILTER (HID_SVX_START + 75) -#define HID_GRFFILTER_EMBOSS (HID_SVX_START + 76) -#define HID_GRFFILTER_INVERT (HID_SVX_START + 77) -#define HID_GRFFILTER_MOSAIC (HID_SVX_START + 78) -#define HID_GRFFILTER_POPART (HID_SVX_START + 79) -#define HID_GRFFILTER_POSTER (HID_SVX_START + 80) -#define HID_GRFFILTER_REMOVENOISE (HID_SVX_START + 81) -#define HID_GRFFILTER_SEPIA (HID_SVX_START + 82) -#define HID_GRFFILTER_SHARPEN (HID_SVX_START + 83) -#define HID_GRFFILTER_SMOOTH (HID_SVX_START + 84) -#define HID_GRFFILTER_SOBEL (HID_SVX_START + 85) -#define HID_GRFFILTER_SOLARIZE (HID_SVX_START + 86) - -#define HID_IMAPDLG_ACTIVE (HID_SVX_START + 88) -#define HID_IMAPDLG_APPLY (HID_SVX_START + 89) -#define HID_IMAPDLG_CIRCLE (HID_SVX_START + 90) -#define HID_IMAPDLG_FREEPOLY (HID_SVX_START + 91) -#define HID_IMAPDLG_GRAPHWND (HID_SVX_START + 92) -#define HID_IMAPDLG_MACRO (HID_SVX_START + 93) -#define HID_IMAPDLG_OPEN (HID_SVX_START + 94) -#define HID_IMAPDLG_POLY (HID_SVX_START + 95) -#define HID_IMAPDLG_POLYDELETE (HID_SVX_START + 96) -#define HID_IMAPDLG_POLYEDIT (HID_SVX_START + 97) -#define HID_IMAPDLG_POLYINSERT (HID_SVX_START + 98) -#define HID_IMAPDLG_POLYMOVE (HID_SVX_START + 99) -#define HID_IMAPDLG_PROPERTY (HID_SVX_START + 100) -#define HID_IMAPDLG_RECT (HID_SVX_START + 101) -#define HID_IMAPDLG_REDO (HID_SVX_START + 102) -#define HID_IMAPDLG_SAVEAS (HID_SVX_START + 103) -#define HID_IMAPDLG_SELECT (HID_SVX_START + 104) -#define HID_IMAPDLG_TOOLBOX (HID_SVX_START + 105) -#define HID_IMAPDLG_UNDO (HID_SVX_START + 106) -#define HID_MENU_EXTRUSION_DEPTH (HID_SVX_START + 107) -#define HID_MENU_EXTRUSION_DIRECTION (HID_SVX_START + 108) -#define HID_MENU_EXTRUSION_LIGHTING (HID_SVX_START + 109) -#define HID_MENU_EXTRUSION_SURFACE (HID_SVX_START + 110) -#define HID_MNU_FUNC_AVG (HID_SVX_START + 111) -#define HID_MNU_FUNC_COUNT (HID_SVX_START + 112) -#define HID_MNU_FUNC_COUNT2 (HID_SVX_START + 113) -#define HID_MNU_FUNC_MAX (HID_SVX_START + 114) -#define HID_MNU_FUNC_MIN (HID_SVX_START + 115) -#define HID_MNU_FUNC_NONE (HID_SVX_START + 116) -#define HID_MNU_FUNC_SUM (HID_SVX_START + 117) -#define HID_MNU_ZOOM_100 (HID_SVX_START + 118) -#define HID_MNU_ZOOM_150 (HID_SVX_START + 119) -#define HID_MNU_ZOOM_200 (HID_SVX_START + 120) -#define HID_MNU_ZOOM_50 (HID_SVX_START + 121) -#define HID_MNU_ZOOM_75 (HID_SVX_START + 122) -#define HID_MNU_ZOOM_OPTIMAL (HID_SVX_START + 123) -#define HID_MNU_ZOOM_PAGE_WIDTH (HID_SVX_START + 124) -#define HID_MNU_ZOOM_WHOLE_PAGE (HID_SVX_START + 125) -#define HID_OPTIONS_GRID (HID_SVX_START + 126) -#define HID_PASSWORD (HID_SVX_START + 127) -#define HID_POPUP_COLOR (HID_SVX_START + 128) -#define HID_POPUP_COLOR_CTRL (HID_SVX_START + 129) -#define HID_POPUP_EXTRUSION_DEPTH (HID_SVX_START + 130) -#define HID_POPUP_EXTRUSION_DIRECTION (HID_SVX_START + 131) -#define HID_POPUP_EXTRUSION_LIGHTING (HID_SVX_START + 132) -#define HID_POPUP_EXTRUSION_SURFACE (HID_SVX_START + 133) -#define HID_POPUP_FONTWORK_ALIGN (HID_SVX_START + 134) -#define HID_POPUP_FONTWORK_CHARSPACE (HID_SVX_START + 135) -#define HID_POPUP_FRAME (HID_SVX_START + 136) -#define HID_POPUP_LINE (HID_SVX_START + 137) -#define HID_POPUP_LINEEND (HID_SVX_START + 138) -#define HID_POPUP_LINEEND_CTRL (HID_SVX_START + 139) -#define HID_REDLINING_FILTER_BTN_REF (HID_SVX_START + 140) -#define HID_REDLINING_FILTER_CB_ACTION (HID_SVX_START + 141) -#define HID_REDLINING_FILTER_CB_AUTOR (HID_SVX_START + 142) -#define HID_REDLINING_FILTER_CB_COMMENT (HID_SVX_START + 143) -#define HID_REDLINING_FILTER_CB_DATE (HID_SVX_START + 144) -#define HID_REDLINING_FILTER_CB_RANGE (HID_SVX_START + 145) -#define HID_REDLINING_FILTER_DF_DATE (HID_SVX_START + 146) -#define HID_REDLINING_FILTER_DF_DATE2 (HID_SVX_START + 147) -#define HID_REDLINING_FILTER_ED_COMMENT (HID_SVX_START + 148) -#define HID_REDLINING_FILTER_ED_RANGE (HID_SVX_START + 149) -#define HID_REDLINING_FILTER_IB_CLOCK (HID_SVX_START + 150) -#define HID_REDLINING_FILTER_IB_CLOCK2 (HID_SVX_START + 151) -#define HID_REDLINING_FILTER_LB_ACTION (HID_SVX_START + 152) -#define HID_REDLINING_FILTER_LB_AUTOR (HID_SVX_START + 153) -#define HID_REDLINING_FILTER_LB_DATE (HID_SVX_START + 154) -#define HID_REDLINING_FILTER_PAGE (HID_SVX_START + 155) -#define HID_REDLINING_FILTER_TF_DATE (HID_SVX_START + 156) -#define HID_REDLINING_FILTER_TF_DATE2 (HID_SVX_START + 157) -#define HID_REDLINING_TABCONTROL (HID_SVX_START + 158) -#define HID_REDLINING_VIEW_DG_VIEW (HID_SVX_START + 159) -#define HID_REDLINING_VIEW_DG_VIEW_HEADER (HID_SVX_START + 160) -#define HID_REDLINING_VIEW_DG_VIEW_TABLE (HID_SVX_START + 161) -#define HID_REDLINING_VIEW_PAGE (HID_SVX_START + 162) -#define HID_REDLINING_VIEW_PB_ACCEPT (HID_SVX_START + 163) -#define HID_REDLINING_VIEW_PB_ACCEPTALL (HID_SVX_START + 164) -#define HID_REDLINING_VIEW_PB_REJECT (HID_SVX_START + 165) -#define HID_REDLINING_VIEW_PB_REJECTALL (HID_SVX_START + 166) -#define HID_REDLINING_VIEW_PB_UNDO (HID_SVX_START + 167) -#define HID_RUBY_DIALOG (HID_SVX_START + 168) -#define HID_STYLE_LISTBOX (HID_SVX_START + 169) -#define HID_SVXTBX_ALIGNMENT (HID_SVX_START + 170) -#define HID_SVXTBX_DRAW (HID_SVX_START + 171) -#define HID_SVXTBX_UNDO_REDO_CTRL (HID_SVX_START + 172) -#define HID_SVX_CHINESE_DICTIONARY_CB_REVERSE (HID_SVX_START + 173) -#define HID_SVX_CHINESE_DICTIONARY_LB_HEADER (HID_SVX_START + 174) -#define HID_SVX_CHINESE_DICTIONARY_LB_TO_SIMPLIFIED (HID_SVX_START + 175) -#define HID_SVX_CHINESE_DICTIONARY_LB_TO_TRADITIONAL (HID_SVX_START + 176) -#define HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_SIMPLIFIED (HID_SVX_START + 177) -#define HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_TRADITIONAL (HID_SVX_START + 178) -#define HID_SVX_CHINESE_TRANSLATION_CB_USE_VARIANTS (HID_SVX_START + 179) -#define HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_SIMPLIFIED (HID_SVX_START + 180) -#define HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_TRADITIONAL (HID_SVX_START + 181) -#define HID_SVX_MDLG_DOCRECOVERY_BROKEN (HID_SVX_START + 182) -#define HID_SVX_MDLG_DOCRECOVERY_PROGR (HID_SVX_START + 183) -#define HID_SVX_MDLG_ERR_REP_OPTIONS (HID_SVX_START + 184) -#define HID_SVX_MDLG_ERR_REP_PREVIEW (HID_SVX_START + 185) -#define HID_SVX_TABDLG_DOCRECOVERY (HID_SVX_START + 186) -#define HID_SVX_TP_DOCRECOVERY_RECOVER (HID_SVX_START + 187) -#define HID_SVX_TP_DOCRECOVERY_SAVE (HID_SVX_START + 188) -#define HID_SVX_TP_ERR_REP_SEND (HID_SVX_START + 189) -#define HID_SVX_TP_ERR_REP_WELCOME (HID_SVX_START + 190) - -#define HID_VALUESET_EXTRUSION_DIRECTION (HID_SVX_START + 192) -#define HID_VALUESET_EXTRUSION_LIGHTING (HID_SVX_START + 193) -#define HID_WIN_FONTWORK_ALIGN (HID_SVX_START + 194) -#define HID_WIN_FONTWORK_CHARSPACE (HID_SVX_START + 195) -#define HID_XMLSEC_CALL (HID_SVX_START + 196) -#define HID_OFA_HYPERLINK_DLG (HID_SVX_START + 197) -#define HID_OFA_HYPERLINK_NAME (HID_SVX_START + 198) -#define HID_OFA_HYPERLINK_SEARCH (HID_SVX_START + 199) -#define HID_OFA_HYPERLINK_TARGET (HID_SVX_START + 200) -#define HID_OFA_HYPERLINK_URL (HID_SVX_START + 201) -#define HID_OFA_HYPERLINK_URL_TXT (HID_SVX_START + 202) -#define HID_AUTOCORR_DLG (HID_SVX_START + 203) -#define HID_SVXCTL_MAIL_ATTACH (HID_SVX_START + 204) -#define HID_SVXDLG_REGISTRATION (HID_SVX_START + 205) -#define HID_SVXDLG_TREE_BASE (HID_SVX_START + 206) -#define HID_SVXDLG_TREE_CHART (HID_SVX_START + 207) -#define HID_SVXDLG_TREE_FILTER (HID_SVX_START + 208) -#define HID_SVXDLG_TREE_LANGUAGE (HID_SVX_START + 209) -#define HID_SVXWIN_MAIL_ATTACH (HID_SVX_START + 210) -#define HID_SVXWIN_MAIL_HEADER (HID_SVX_START + 211) -#define HID_SVX_DLGFORMNEW (HID_SVX_START + 212) -#define HID_SVX_DLGTABNEW (HID_SVX_START + 213) -#define HID_SVX_HYPERLINK (HID_SVX_START + 214) -#define HID_SVX_MAILATTACH_ASCII_CB (HID_SVX_START + 215) -#define HID_SVX_MAILATTACH_HTML_CB (HID_SVX_START + 216) -#define HID_SVX_MAILATTACH_OFFICE_CB (HID_SVX_START + 217) -#define HID_SVX_MAILATTACH_PRIORITY_LB (HID_SVX_START + 218) -#define HID_SVX_MAILATTACH_RECEIPT_CB (HID_SVX_START + 219) -#define HID_SVX_MAILATTACH_RTF_CB (HID_SVX_START + 220) -#define HID_SVX_MAILHEAD_HEAD_WIN (HID_SVX_START + 221) -#define HID_SVX_MAILHEAD_PRIORITY_LB (HID_SVX_START + 222) -#define HID_SVX_MAILHEAD_PROTOCOL_LB (HID_SVX_START + 223) -#define HID_SVX_MAILHEAD_RCPT_CB (HID_SVX_START + 224) -#define HID_SVX_MAILHEAD_RCPT_ED (HID_SVX_START + 225) -#define HID_SVX_MAILHEAD_RCPT_LB (HID_SVX_START + 226) -#define HID_SVX_MAILHEAD_RECEIPT_CB (HID_SVX_START + 227) -#define HID_SVX_MAILHEAD_ROLE_LB (HID_SVX_START + 228) -#define HID_SVX_MAILHEAD_SUBJECT_ED (HID_SVX_START + 229) -#define HID_SVX_MAILMENU_ADDADDRESS (HID_SVX_START + 230) -#define HID_SVX_MAILMENU_COPYLINK (HID_SVX_START + 231) -#define HID_SVX_MAILMENU_DELETE (HID_SVX_START + 232) -#define HID_SVX_MAILMENU_FILE (HID_SVX_START + 233) -#define HID_SVX_MAILMENU_OPEN (HID_SVX_START + 234) -#define HID_SVX_MAILMENU_RENAME (HID_SVX_START + 235) -#define HID_SVX_MAILMENU_SAVEAS (HID_SVX_START + 236) -#define HID_SVX_MAILMENU_SIG1 (HID_SVX_START + 237) -#define HID_SVX_MAILMENU_SIG2 (HID_SVX_START + 238) -#define HID_SVX_MAILMENU_SIG3 (HID_SVX_START + 239) -#define HID_SVX_MAILMENU_SIG4 (HID_SVX_START + 240) -#define HID_SVX_MAILTOOLBOX (HID_SVX_START + 241) -#define HID_SVX_SENDMENU_ENCRYPT (HID_SVX_START + 242) -#define HID_SVX_SENDMENU_PLAIN (HID_SVX_START + 243) -#define HID_SVX_SENDMENU_SIGN (HID_SVX_START + 244) -#define HID_SVX_SENDMENU_SIGNANDENCRYPT (HID_SVX_START + 245) -#define HID_SVX_TP_APPEARANCE (HID_SVX_START + 246) -#define HID_SVX_TP_DESKTOP (HID_SVX_START + 247) -#define HID_CT_THES_ALTERNATIVES (HID_SVX_START + 248) +#define HID_GALLERY_WINDOW "SVX_HID_GALLERY_WINDOW" +#define HID_GRFFILTER "SVX_HID_GRFFILTER" +#define HID_GRFFILTER_EMBOSS "SVX_HID_GRFFILTER_EMBOSS" +#define HID_GRFFILTER_INVERT "SVX_HID_GRFFILTER_INVERT" +#define HID_GRFFILTER_MOSAIC "SVX_HID_GRFFILTER_MOSAIC" +#define HID_GRFFILTER_POPART "SVX_HID_GRFFILTER_POPART" +#define HID_GRFFILTER_POSTER "SVX_HID_GRFFILTER_POSTER" +#define HID_GRFFILTER_REMOVENOISE "SVX_HID_GRFFILTER_REMOVENOISE" +#define HID_GRFFILTER_SEPIA "SVX_HID_GRFFILTER_SEPIA" +#define HID_GRFFILTER_SHARPEN "SVX_HID_GRFFILTER_SHARPEN" +#define HID_GRFFILTER_SMOOTH "SVX_HID_GRFFILTER_SMOOTH" +#define HID_GRFFILTER_SOBEL "SVX_HID_GRFFILTER_SOBEL" +#define HID_GRFFILTER_SOLARIZE "SVX_HID_GRFFILTER_SOLARIZE" -// please adjust ACT_SVX_HID_END2 below if you add entries here! +#define HID_IMAPDLG_ACTIVE "SVX_HID_IMAPDLG_ACTIVE" +#define HID_IMAPDLG_APPLY "SVX_HID_IMAPDLG_APPLY" +#define HID_IMAPDLG_CIRCLE "SVX_HID_IMAPDLG_CIRCLE" +#define HID_IMAPDLG_FREEPOLY "SVX_HID_IMAPDLG_FREEPOLY" +#define HID_IMAPDLG_GRAPHWND "SVX_HID_IMAPDLG_GRAPHWND" +#define HID_IMAPDLG_MACRO "SVX_HID_IMAPDLG_MACRO" +#define HID_IMAPDLG_OPEN "SVX_HID_IMAPDLG_OPEN" +#define HID_IMAPDLG_POLY "SVX_HID_IMAPDLG_POLY" +#define HID_IMAPDLG_POLYDELETE "SVX_HID_IMAPDLG_POLYDELETE" +#define HID_IMAPDLG_POLYEDIT "SVX_HID_IMAPDLG_POLYEDIT" +#define HID_IMAPDLG_POLYINSERT "SVX_HID_IMAPDLG_POLYINSERT" +#define HID_IMAPDLG_POLYMOVE "SVX_HID_IMAPDLG_POLYMOVE" +#define HID_IMAPDLG_PROPERTY "SVX_HID_IMAPDLG_PROPERTY" +#define HID_IMAPDLG_RECT "SVX_HID_IMAPDLG_RECT" +#define HID_IMAPDLG_REDO "SVX_HID_IMAPDLG_REDO" +#define HID_IMAPDLG_SAVEAS "SVX_HID_IMAPDLG_SAVEAS" +#define HID_IMAPDLG_SELECT "SVX_HID_IMAPDLG_SELECT" +#define HID_IMAPDLG_TOOLBOX "SVX_HID_IMAPDLG_TOOLBOX" +#define HID_IMAPDLG_UNDO "SVX_HID_IMAPDLG_UNDO" +#define HID_MENU_EXTRUSION_DEPTH "SVX_HID_MENU_EXTRUSION_DEPTH" +#define HID_MENU_EXTRUSION_DIRECTION "SVX_HID_MENU_EXTRUSION_DIRECTION" +#define HID_MENU_EXTRUSION_LIGHTING "SVX_HID_MENU_EXTRUSION_LIGHTING" +#define HID_MENU_EXTRUSION_SURFACE "SVX_HID_MENU_EXTRUSION_SURFACE" +#define HID_MNU_FUNC_AVG "SVX_HID_MNU_FUNC_AVG" +#define HID_MNU_FUNC_COUNT "SVX_HID_MNU_FUNC_COUNT" +#define HID_MNU_FUNC_COUNT2 "SVX_HID_MNU_FUNC_COUNT2" +#define HID_MNU_FUNC_MAX "SVX_HID_MNU_FUNC_MAX" +#define HID_MNU_FUNC_MIN "SVX_HID_MNU_FUNC_MIN" +#define HID_MNU_FUNC_NONE "SVX_HID_MNU_FUNC_NONE" +#define HID_MNU_FUNC_SUM "SVX_HID_MNU_FUNC_SUM" +#define HID_MNU_ZOOM_100 "SVX_HID_MNU_ZOOM_100" +#define HID_MNU_ZOOM_150 "SVX_HID_MNU_ZOOM_150" +#define HID_MNU_ZOOM_200 "SVX_HID_MNU_ZOOM_200" +#define HID_MNU_ZOOM_50 "SVX_HID_MNU_ZOOM_50" +#define HID_MNU_ZOOM_75 "SVX_HID_MNU_ZOOM_75" +#define HID_MNU_ZOOM_OPTIMAL "SVX_HID_MNU_ZOOM_OPTIMAL" +#define HID_MNU_ZOOM_PAGE_WIDTH "SVX_HID_MNU_ZOOM_PAGE_WIDTH" +#define HID_MNU_ZOOM_WHOLE_PAGE "SVX_HID_MNU_ZOOM_WHOLE_PAGE" +#define HID_OPTIONS_GRID "SVX_HID_OPTIONS_GRID" +#define HID_PASSWORD "SVX_HID_PASSWORD" +#define HID_POPUP_COLOR "SVX_HID_POPUP_COLOR" +#define HID_POPUP_COLOR_CTRL "SVX_HID_POPUP_COLOR_CTRL" +#define HID_POPUP_EXTRUSION_DEPTH "SVX_HID_POPUP_EXTRUSION_DEPTH" +#define HID_POPUP_EXTRUSION_DIRECTION "SVX_HID_POPUP_EXTRUSION_DIRECTION" +#define HID_POPUP_EXTRUSION_LIGHTING "SVX_HID_POPUP_EXTRUSION_LIGHTING" +#define HID_POPUP_EXTRUSION_SURFACE "SVX_HID_POPUP_EXTRUSION_SURFACE" +#define HID_POPUP_FONTWORK_ALIGN "SVX_HID_POPUP_FONTWORK_ALIGN" +#define HID_POPUP_FONTWORK_CHARSPACE "SVX_HID_POPUP_FONTWORK_CHARSPACE" +#define HID_POPUP_FRAME "SVX_HID_POPUP_FRAME" +#define HID_POPUP_LINE "SVX_HID_POPUP_LINE" +#define HID_POPUP_LINEEND "SVX_HID_POPUP_LINEEND" +#define HID_POPUP_LINEEND_CTRL "SVX_HID_POPUP_LINEEND_CTRL" +#define HID_REDLINING_FILTER_BTN_REF "SVX_HID_REDLINING_FILTER_BTN_REF" +#define HID_REDLINING_FILTER_CB_ACTION "SVX_HID_REDLINING_FILTER_CB_ACTION" +#define HID_REDLINING_FILTER_CB_AUTOR "SVX_HID_REDLINING_FILTER_CB_AUTOR" +#define HID_REDLINING_FILTER_CB_COMMENT "SVX_HID_REDLINING_FILTER_CB_COMMENT" +#define HID_REDLINING_FILTER_CB_DATE "SVX_HID_REDLINING_FILTER_CB_DATE" +#define HID_REDLINING_FILTER_CB_RANGE "SVX_HID_REDLINING_FILTER_CB_RANGE" +#define HID_REDLINING_FILTER_DF_DATE "SVX_HID_REDLINING_FILTER_DF_DATE" +#define HID_REDLINING_FILTER_DF_DATE2 "SVX_HID_REDLINING_FILTER_DF_DATE2" +#define HID_REDLINING_FILTER_ED_COMMENT "SVX_HID_REDLINING_FILTER_ED_COMMENT" +#define HID_REDLINING_FILTER_ED_RANGE "SVX_HID_REDLINING_FILTER_ED_RANGE" +#define HID_REDLINING_FILTER_IB_CLOCK "SVX_HID_REDLINING_FILTER_IB_CLOCK" +#define HID_REDLINING_FILTER_IB_CLOCK2 "SVX_HID_REDLINING_FILTER_IB_CLOCK2" +#define HID_REDLINING_FILTER_LB_ACTION "SVX_HID_REDLINING_FILTER_LB_ACTION" +#define HID_REDLINING_FILTER_LB_AUTOR "SVX_HID_REDLINING_FILTER_LB_AUTOR" +#define HID_REDLINING_FILTER_LB_DATE "SVX_HID_REDLINING_FILTER_LB_DATE" +#define HID_REDLINING_FILTER_PAGE "SVX_HID_REDLINING_FILTER_PAGE" +#define HID_REDLINING_FILTER_TF_DATE "SVX_HID_REDLINING_FILTER_TF_DATE" +#define HID_REDLINING_FILTER_TF_DATE2 "SVX_HID_REDLINING_FILTER_TF_DATE2" +#define HID_REDLINING_TABCONTROL "SVX_HID_REDLINING_TABCONTROL" +#define HID_REDLINING_VIEW_DG_VIEW "SVX_HID_REDLINING_VIEW_DG_VIEW" +#define HID_REDLINING_VIEW_DG_VIEW_HEADER "SVX_HID_REDLINING_VIEW_DG_VIEW_HEADER" +#define HID_REDLINING_VIEW_DG_VIEW_TABLE "SVX_HID_REDLINING_VIEW_DG_VIEW_TABLE" +#define HID_REDLINING_VIEW_PAGE "SVX_HID_REDLINING_VIEW_PAGE" +#define HID_REDLINING_VIEW_PB_ACCEPT "SVX_HID_REDLINING_VIEW_PB_ACCEPT" +#define HID_REDLINING_VIEW_PB_ACCEPTALL "SVX_HID_REDLINING_VIEW_PB_ACCEPTALL" +#define HID_REDLINING_VIEW_PB_REJECT "SVX_HID_REDLINING_VIEW_PB_REJECT" +#define HID_REDLINING_VIEW_PB_REJECTALL "SVX_HID_REDLINING_VIEW_PB_REJECTALL" +#define HID_REDLINING_VIEW_PB_UNDO "SVX_HID_REDLINING_VIEW_PB_UNDO" +#define HID_RUBY_DIALOG "SVX_HID_RUBY_DIALOG" +#define HID_STYLE_LISTBOX "SVX_HID_STYLE_LISTBOX" +#define HID_SVXTBX_ALIGNMENT "SVX_HID_SVXTBX_ALIGNMENT" +#define HID_SVXTBX_DRAW "SVX_HID_SVXTBX_DRAW" +#define HID_SVXTBX_UNDO_REDO_CTRL "SVX_HID_SVXTBX_UNDO_REDO_CTRL" +#define HID_SVX_CHINESE_DICTIONARY_CB_REVERSE "SVX_HID_SVX_CHINESE_DICTIONARY_CB_REVERSE" +#define HID_SVX_CHINESE_DICTIONARY_LB_HEADER "SVX_HID_SVX_CHINESE_DICTIONARY_LB_HEADER" +#define HID_SVX_CHINESE_DICTIONARY_LB_TO_SIMPLIFIED "SVX_HID_SVX_CHINESE_DICTIONARY_LB_TO_SIMPLIFIED" +#define HID_SVX_CHINESE_DICTIONARY_LB_TO_TRADITIONAL "SVX_HID_SVX_CHINESE_DICTIONARY_LB_TO_TRADITIONAL" +#define HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_SIMPLIFIED "SVX_HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_SIMPLIFIED" +#define HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_TRADITIONAL "SVX_HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_TRADITIONAL" +#define HID_SVX_CHINESE_TRANSLATION_CB_USE_VARIANTS "SVX_HID_SVX_CHINESE_TRANSLATION_CB_USE_VARIANTS" +#define HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_SIMPLIFIED "SVX_HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_SIMPLIFIED" +#define HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_TRADITIONAL "SVX_HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_TRADITIONAL" +#define HID_SVX_MDLG_DOCRECOVERY_BROKEN "SVX_HID_SVX_MDLG_DOCRECOVERY_BROKEN" +#define HID_SVX_MDLG_DOCRECOVERY_PROGR "SVX_HID_SVX_MDLG_DOCRECOVERY_PROGR" +#define HID_SVX_MDLG_ERR_REP_OPTIONS "SVX_HID_SVX_MDLG_ERR_REP_OPTIONS" +#define HID_SVX_MDLG_ERR_REP_PREVIEW "SVX_HID_SVX_MDLG_ERR_REP_PREVIEW" +#define HID_SVX_TABDLG_DOCRECOVERY "SVX_HID_SVX_TABDLG_DOCRECOVERY" +#define HID_SVX_TP_DOCRECOVERY_RECOVER "SVX_HID_SVX_TP_DOCRECOVERY_RECOVER" +#define HID_SVX_TP_DOCRECOVERY_SAVE "SVX_HID_SVX_TP_DOCRECOVERY_SAVE" +#define HID_SVX_TP_ERR_REP_SEND "SVX_HID_SVX_TP_ERR_REP_SEND" +#define HID_SVX_TP_ERR_REP_WELCOME "SVX_HID_SVX_TP_ERR_REP_WELCOME" -// ----------------------------------------------------------------------- -// Overrun check --------------------------------------------------------- -// ----------------------------------------------------------------------- - -#define ACT_SVX_HID_END (HID_SVX_START+248) -#if ACT_SVX_HID_END > HID_SVX_END -#error Resource-Ueberlauf in #line, #file -#endif +#define HID_VALUESET_EXTRUSION_DIRECTION "SVX_HID_VALUESET_EXTRUSION_DIRECTION" +#define HID_VALUESET_EXTRUSION_LIGHTING "SVX_HID_VALUESET_EXTRUSION_LIGHTING" +#define HID_WIN_FONTWORK_ALIGN "SVX_HID_WIN_FONTWORK_ALIGN" +#define HID_WIN_FONTWORK_CHARSPACE "SVX_HID_WIN_FONTWORK_CHARSPACE" +#define HID_XMLSEC_CALL "SVX_HID_XMLSEC_CALL" +#define HID_OFA_HYPERLINK_DLG "SVX_HID_OFA_HYPERLINK_DLG" +#define HID_OFA_HYPERLINK_NAME "SVX_HID_OFA_HYPERLINK_NAME" +#define HID_OFA_HYPERLINK_SEARCH "SVX_HID_OFA_HYPERLINK_SEARCH" +#define HID_OFA_HYPERLINK_TARGET "SVX_HID_OFA_HYPERLINK_TARGET" +#define HID_OFA_HYPERLINK_URL "SVX_HID_OFA_HYPERLINK_URL" +#define HID_OFA_HYPERLINK_URL_TXT "SVX_HID_OFA_HYPERLINK_URL_TXT" +#define HID_AUTOCORR_DLG "SVX_HID_AUTOCORR_DLG" +#define HID_SVXCTL_MAIL_ATTACH "SVX_HID_SVXCTL_MAIL_ATTACH" +#define HID_SVXDLG_REGISTRATION "SVX_HID_SVXDLG_REGISTRATION" +#define HID_SVXDLG_TREE_BASE "SVX_HID_SVXDLG_TREE_BASE" +#define HID_SVXDLG_TREE_CHART "SVX_HID_SVXDLG_TREE_CHART" +#define HID_SVXDLG_TREE_FILTER "SVX_HID_SVXDLG_TREE_FILTER" +#define HID_SVXDLG_TREE_LANGUAGE "SVX_HID_SVXDLG_TREE_LANGUAGE" +#define HID_SVXWIN_MAIL_ATTACH "SVX_HID_SVXWIN_MAIL_ATTACH" +#define HID_SVXWIN_MAIL_HEADER "SVX_HID_SVXWIN_MAIL_HEADER" +#define HID_SVX_DLGFORMNEW "SVX_HID_SVX_DLGFORMNEW" +#define HID_SVX_DLGTABNEW "SVX_HID_SVX_DLGTABNEW" +#define HID_SVX_HYPERLINK "SVX_HID_SVX_HYPERLINK" +#define HID_SVX_MAILATTACH_ASCII_CB "SVX_HID_SVX_MAILATTACH_ASCII_CB" +#define HID_SVX_MAILATTACH_HTML_CB "SVX_HID_SVX_MAILATTACH_HTML_CB" +#define HID_SVX_MAILATTACH_OFFICE_CB "SVX_HID_SVX_MAILATTACH_OFFICE_CB" +#define HID_SVX_MAILATTACH_PRIORITY_LB "SVX_HID_SVX_MAILATTACH_PRIORITY_LB" +#define HID_SVX_MAILATTACH_RECEIPT_CB "SVX_HID_SVX_MAILATTACH_RECEIPT_CB" +#define HID_SVX_MAILATTACH_RTF_CB "SVX_HID_SVX_MAILATTACH_RTF_CB" +#define HID_SVX_MAILHEAD_HEAD_WIN "SVX_HID_SVX_MAILHEAD_HEAD_WIN" +#define HID_SVX_MAILHEAD_PRIORITY_LB "SVX_HID_SVX_MAILHEAD_PRIORITY_LB" +#define HID_SVX_MAILHEAD_PROTOCOL_LB "SVX_HID_SVX_MAILHEAD_PROTOCOL_LB" +#define HID_SVX_MAILHEAD_RCPT_CB "SVX_HID_SVX_MAILHEAD_RCPT_CB" +#define HID_SVX_MAILHEAD_RCPT_ED "SVX_HID_SVX_MAILHEAD_RCPT_ED" +#define HID_SVX_MAILHEAD_RCPT_LB "SVX_HID_SVX_MAILHEAD_RCPT_LB" +#define HID_SVX_MAILHEAD_RECEIPT_CB "SVX_HID_SVX_MAILHEAD_RECEIPT_CB" +#define HID_SVX_MAILHEAD_ROLE_LB "SVX_HID_SVX_MAILHEAD_ROLE_LB" +#define HID_SVX_MAILHEAD_SUBJECT_ED "SVX_HID_SVX_MAILHEAD_SUBJECT_ED" +#define HID_SVX_MAILMENU_ADDADDRESS "SVX_HID_SVX_MAILMENU_ADDADDRESS" +#define HID_SVX_MAILMENU_COPYLINK "SVX_HID_SVX_MAILMENU_COPYLINK" +#define HID_SVX_MAILMENU_DELETE "SVX_HID_SVX_MAILMENU_DELETE" +#define HID_SVX_MAILMENU_FILE "SVX_HID_SVX_MAILMENU_FILE" +#define HID_SVX_MAILMENU_OPEN "SVX_HID_SVX_MAILMENU_OPEN" +#define HID_SVX_MAILMENU_RENAME "SVX_HID_SVX_MAILMENU_RENAME" +#define HID_SVX_MAILMENU_SAVEAS "SVX_HID_SVX_MAILMENU_SAVEAS" +#define HID_SVX_MAILMENU_SIG1 "SVX_HID_SVX_MAILMENU_SIG1" +#define HID_SVX_MAILMENU_SIG2 "SVX_HID_SVX_MAILMENU_SIG2" +#define HID_SVX_MAILMENU_SIG3 "SVX_HID_SVX_MAILMENU_SIG3" +#define HID_SVX_MAILMENU_SIG4 "SVX_HID_SVX_MAILMENU_SIG4" +#define HID_SVX_MAILTOOLBOX "SVX_HID_SVX_MAILTOOLBOX" +#define HID_SVX_SENDMENU_ENCRYPT "SVX_HID_SVX_SENDMENU_ENCRYPT" +#define HID_SVX_SENDMENU_PLAIN "SVX_HID_SVX_SENDMENU_PLAIN" +#define HID_SVX_SENDMENU_SIGN "SVX_HID_SVX_SENDMENU_SIGN" +#define HID_SVX_SENDMENU_SIGNANDENCRYPT "SVX_HID_SVX_SENDMENU_SIGNANDENCRYPT" +#define HID_SVX_TP_APPEARANCE "SVX_HID_SVX_TP_APPEARANCE" +#define HID_SVX_TP_DESKTOP "SVX_HID_SVX_TP_DESKTOP" +#define HID_CT_THES_ALTERNATIVES "SVX_HID_CT_THES_ALTERNATIVES" #endif diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx index 95ed1449c846..b53064312a38 100644 --- a/svx/inc/pch/precompiled_svx.hxx +++ b/svx/inc/pch/precompiled_svx.hxx @@ -805,7 +805,6 @@ #include "svtools/parhtml.hxx" #include "svtools/parrtf.hxx" #include "unotools/pathoptions.hxx" -#include "svl/pickerhelper.hxx" #include "svl/poolitem.hxx" #include "unotools/printwarningoptions.hxx" #include "svl/ptitem.hxx" diff --git a/svx/inc/pfiledlg.hxx b/svx/inc/pfiledlg.hxx index 646575ac4e0c..93d99c4774a2 100644 --- a/svx/inc/pfiledlg.hxx +++ b/svx/inc/pfiledlg.hxx @@ -54,8 +54,6 @@ public: static bool IsAvailable (USHORT nKind); - // setting HelpId and/or context of FileDialogHelper - void SetDialogHelpId( const sal_Int32 nHelpId ); void SetContext( sfx2::FileDialogHelper::Context eNewContext ); }; diff --git a/svx/inc/svx/dialogs.hrc b/svx/inc/svx/dialogs.hrc index fd7561bb7192..b28b150bd487 100644..100755 --- a/svx/inc/svx/dialogs.hrc +++ b/svx/inc/svx/dialogs.hrc @@ -317,10 +317,6 @@ #define RID_SVXBMP_3D_FOCAL_LENGTH_09 (RID_SVX_START + 180) #define RID_SVXBMP_3D_FOCAL_LENGTH_10 (RID_SVX_START + 181) -// fuer ToolboxControls Alignment und Drawobjekte -#define RID_SVXTBX_DRAW (RID_SVX_START + 189) -#define RID_SVXTBX_ALIGNMENT (RID_SVX_START + 190) - // Ids fuer Autokorrektur #define RID_SVX_AUTOCORR (RID_SVX_START + 192) diff --git a/svx/inc/svx/exthelpid.hrc b/svx/inc/svx/exthelpid.hrc index 68cd1b224650..360a4914c10e 100644 --- a/svx/inc/svx/exthelpid.hrc +++ b/svx/inc/svx/exthelpid.hrc @@ -28,8 +28,6 @@ #define _SVX_EXTHELPID_HRC // include --------------------------------------------------------------- -#include <svl/solar.hrc> - // these HIDs are used in SVX and also in other modules, mainly CUI // the reason is that different controls have the same help texts assigned // but are implemented in different libraries @@ -37,19 +35,8 @@ // are moved to this exported (delivered) hrc file // Help-Ids -------------------------------------------------------------- -#define HID_GALLERY_ACTUALIZE (HID_SVX_EXT0_START + 0) -#define HID_GALLERY_TITLE (HID_SVX_EXT0_START + 1) - -// please adjust ACT_SVX_EXT_HID_END2 below if you add entries here! - -// ----------------------------------------------------------------------- -// Overrun check --------------------------------------------------------- -// ----------------------------------------------------------------------- - -#define ACT_SVX_EXT_HID_END (HID_SVX_EXT0_START + 1) -#if ACT_SVX_EXT_HID_END > HID_SVX_EXT0_END -#error Resource-Ueberlauf in #line, #file -#endif +#define HID_GALLERY_ACTUALIZE "SVX_HID_GALLERY_ACTUALIZE" +#define HID_GALLERY_TITLE "SVX_HID_GALLERY_TITLE" #endif diff --git a/svx/inc/svx/sdrpagewindow.hxx b/svx/inc/svx/sdrpagewindow.hxx index a3e50fadc599..29c08d6335e3 100644 --- a/svx/inc/svx/sdrpagewindow.hxx +++ b/svx/inc/svx/sdrpagewindow.hxx @@ -117,6 +117,7 @@ public: void PrepareRedraw(const Region& rReg); void RedrawAll(sdr::contact::ViewObjectContactRedirector* pRedirector) const; void RedrawLayer(const SdrLayerID* pId, sdr::contact::ViewObjectContactRedirector* pRedirector) const; + void PostPaint(); // Invalidate call, used from ObjectContact(OfPageView) in InvalidatePartOfView(...) void InvalidatePageWindow(const basegfx::B2DRange& rRange); diff --git a/svx/inc/svx/simptabl.hxx b/svx/inc/svx/simptabl.hxx index 1f5543e9e484..e24dedbdc22c 100644 --- a/svx/inc/svx/simptabl.hxx +++ b/svx/inc/svx/simptabl.hxx @@ -172,7 +172,7 @@ public: void SetHeaderBarDblClickHdl( const Link& rLink ) { aHeaderBarDblClickLink = rLink; } const Link& GetHeaderBarDblClickHdl() const { return aHeaderBarDblClickLink; } - void SetHeaderBarHelpId(ULONG nHelpId) {aHeaderBar.SetHelpId(nHelpId);} + void SetHeaderBarHelpId(const rtl::OString& rHelpId) {aHeaderBar.SetHelpId(rHelpId);} }; diff --git a/svx/inc/svx/svdpagv.hxx b/svx/inc/svx/svdpagv.hxx index 4ad30c2958f3..cd7b8a6de81e 100644 --- a/svx/inc/svx/svdpagv.hxx +++ b/svx/inc/svx/svdpagv.hxx @@ -184,6 +184,9 @@ public: // PrePaint call forwarded from app windows void PrePaint(); + // PostPaint call forwarded from app windows + void PostPaint(); + // rReg bezieht sich auf's OutDev, nicht auf die Page void CompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L) const; diff --git a/svx/inc/svx/svdpntv.hxx b/svx/inc/svx/svdpntv.hxx index bd6c7ea554cc..69f32ad327e5 100644 --- a/svx/inc/svx/svdpntv.hxx +++ b/svx/inc/svx/svdpntv.hxx @@ -375,6 +375,9 @@ public: // PrePaint call forwarded from app windows void PrePaint(); + // PostPaint call forwarded from app windows + void PostPaint(); + //////////////////////////////////////////////////////////////////////////////////////////////////// // used internally for Draw/Impress/sch/chart2 virtual void CompleteRedraw(OutputDevice* pOut, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0); diff --git a/svx/inc/svx/svxcommands.h b/svx/inc/svx/svxcommands.h new file mode 100644 index 000000000000..01ff0bcd95b2 --- /dev/null +++ b/svx/inc/svx/svxcommands.h @@ -0,0 +1,604 @@ +/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SVX_SVXCOMMANDS_HRC
+#define SVX_SVXCOMMANDS_HRC
+
+#define CMD_SID_INET_DLG ".uno:InternetDialog"
+#define CMD_SID_FM_RECORD_ABSOLUTE ".uno:AbsoluteRecord"
+#define CMD_SID_FM_ADD_FIELD ".uno:AddField"
+#define CMD_SID_FM_ADDTABLE ".uno:AddTable"
+#define CMD_SID_OBJECT_ALIGN_CENTER ".uno:AlignCenter"
+#define CMD_SID_OBJECT_ALIGN_DOWN ".uno:AlignDown"
+#define CMD_SID_OBJECT_ALIGN_LEFT ".uno:ObjectAlignLeft"
+#define CMD_SID_ATTR_PARA_ADJUST ".uno:Alignment"
+#define CMD_SID_OBJECT_ALIGN_MIDDLE ".uno:AlignMiddle"
+#define CMD_SID_OBJECT_ALIGN_RIGHT ".uno:ObjectAlignRight"
+#define CMD_SID_OBJECT_ALIGN_UP ".uno:AlignUp"
+#define CMD_SID_DRAW_ARC ".uno:Arc"
+#define CMD_SID_3D_ASSIGN ".uno:Assign3D"
+#define CMD_SID_FM_AUTOCONTROLFOCUS ".uno:AutoControlFocus"
+#define CMD_SID_FM_AUTOFILTER ".uno:AutoFilter"
+#define CMD_SID_AUTOFORMAT ".uno:AutoFormat"
+#define CMD_SID_TABLE_STYLE ".uno:TableStyle"
+#define CMD_SID_TABLE_STYLE_SETTINGS ".uno:TableStyleSettings"
+#define CMD_SID_TABLEDESIGN ".uno:TableDesign"
+#define CMD_SID_BACKGROUND_COLOR ".uno:BackgroundColor"
+#define CMD_SID_ATTR_BRUSH ".uno:BackgroundPattern"
+#define CMD_SID_BACKGROUND_PATTERN ".uno:BackgroundPatternController"
+#define CMD_SID_DRAW_BEZIER_NOFILL ".uno:Bezier_Unfilled"
+#define CMD_SID_BEZIER_APPEND ".uno:BezierAppend"
+#define CMD_SID_BEZIER_CLOSE ".uno:BezierClose"
+#define CMD_SID_BEZIER_CONVERT ".uno:BezierConvert"
+#define CMD_SID_BEZIER_CUTLINE ".uno:BezierCutLine"
+#define CMD_SID_BEZIER_DELETE ".uno:BezierDelete"
+#define CMD_SID_BEZIER_EDGE ".uno:BezierEdge"
+#define CMD_SID_BEZIER_ELIMINATE_POINTS ".uno:BezierEliminatePoints"
+#define CMD_SID_DRAW_BEZIER_FILL ".uno:BezierFill"
+#define CMD_SID_BEZIER_INSERT ".uno:BezierInsert"
+#define CMD_SID_BEZIER_MOVE ".uno:BezierMove"
+#define CMD_SID_BEZIER_SMOOTH ".uno:BezierSmooth"
+#define CMD_SID_BEZIER_SYMMTR ".uno:BezierSymmetric"
+#define CMD_SID_BEZIERTO ".uno:BezierTo"
+#define CMD_SID_BMPMASK ".uno:BmpMask"
+#define CMD_SID_BMPMASK_EXEC ".uno:BmpMaskExec"
+#define CMD_SID_BMPMASK_PIPETTE ".uno:BmpMaskPipette"
+#define CMD_SID_ATTR_CHAR_WEIGHT ".uno:Bold"
+#define CMD_SID_ATTR_CHAR_LATIN_WEIGHT ".uno:BoldLatin"
+#define CMD_SID_ATTR_CHAR_CJK_WEIGHT ".uno:BoldCJK"
+#define CMD_SID_ATTR_CHAR_CTL_WEIGHT ".uno:BoldCTL"
+#define CMD_SID_BORDER_OBJECT ".uno:Border"
+#define CMD_SID_ATTR_BORDER_INNER ".uno:BorderInner"
+#define CMD_SID_ATTR_BORDER_OUTER ".uno:BorderOuter"
+#define CMD_SID_ATTR_BORDER ".uno:SetBorderStyle"
+#define CMD_SID_FRAME_TO_TOP ".uno:BringToFront"
+#define CMD_SID_DRAW_CAPTION ".uno:DrawCaption"
+#define CMD_SID_ATTR_CHAR_CASEMAP ".uno:CaseMap"
+#define CMD_SID_ATTR_PARA_ADJUST_CENTER ".uno:CenterPara"
+#define CMD_SID_TRANSLITERATE_FULLWIDTH ".uno:ChangeCaseToFullWidth"
+#define CMD_SID_TRANSLITERATE_HALFWIDTH ".uno:ChangeCaseToHalfWidth"
+#define CMD_SID_TRANSLITERATE_HIRAGANA ".uno:ChangeCaseToHiragana"
+#define CMD_SID_TRANSLITERATE_KATAGANA ".uno:ChangeCaseToKatakana"
+#define CMD_SID_TRANSLITERATE_LOWER ".uno:ChangeCaseToLower"
+#define CMD_SID_TRANSLITERATE_UPPER ".uno:ChangeCaseToUpper"
+#define CMD_SID_FM_CHANGECONTROLTYPE ".uno:ChangeControlType"
+#define CMD_SID_ATTR_CHAR_FONT ".uno:CharFontName"
+#define CMD_SID_ATTR_CHAR_LATIN_FONT ".uno:CharFontNameLatin"
+#define CMD_SID_ATTR_CHAR_CJK_FONT ".uno:CharFontNameCJK"
+#define CMD_SID_ATTR_CHAR_CTL_FONT ".uno:CharFontNameCTL"
+#define CMD_SID_INSERT_CHECKBOX ".uno:Checkbox"
+#define CMD_SID_FM_CHECKBOX ".uno:CheckBox"
+#define CMD_SID_CHOOSE_CONTROLS ".uno:ChooseControls"
+#define CMD_SID_CHOOSE_POLYGON ".uno:ChoosePolygon"
+#define CMD_SID_DRAW_CIRCLE ".uno:Circle"
+#define CMD_SID_DRAW_CIRCLE_NOFILL ".uno:Circle_Unfilled"
+#define CMD_SID_DRAW_CIRCLEARC ".uno:CircleArc"
+#define CMD_SID_DRAW_CIRCLECUT ".uno:CircleCut"
+#define CMD_SID_DRAW_CIRCLECUT_NOFILL ".uno:CircleCut_Unfilled"
+#define CMD_SID_DRAW_CIRCLEPIE ".uno:CirclePie"
+#define CMD_SID_DRAW_CIRCLEPIE_NOFILL ".uno:CirclePie_Unfilled"
+#define CMD_SID_OUTLINE_DELETEALL ".uno:ClearOutline"
+#define CMD_SID_ATTR_CHAR_COLOR ".uno:Color"
+#define CMD_SID_COLOR_CONTROL ".uno:ColorControl"
+#define CMD_SID_FM_COMBOBOX ".uno:ComboBox"
+#define CMD_SID_FM_NAVIGATIONBAR ".uno:NavigationBar"
+#define CMD_SID_INSERT_COMBOBOX ".uno:Combobox"
+#define CMD_SID_FM_CONFIG ".uno:Config"
+#define CMD_SID_FM_MORE_CONTROLS ".uno:MoreControls"
+#define CMD_SID_FM_FORM_DESIGN_TOOLS ".uno:FormDesignTools"
+#define CMD_SID_CONTOUR_DLG ".uno:ContourDialog"
+#define CMD_SID_CONTOUR_EXEC ".uno:ContourExecute"
+#define CMD_SID_FM_CTL_PROPERTIES ".uno:ControlProperties"
+#define CMD_SID_FM_CONVERTTO_BUTTON ".uno:ConvertToButton"
+#define CMD_SID_FM_CONVERTTO_CHECKBOX ".uno:ConvertToCheckBox"
+#define CMD_SID_FM_CONVERTTO_COMBOBOX ".uno:ConvertToCombo"
+#define CMD_SID_FM_CONVERTTO_CURRENCY ".uno:ConvertToCurrency"
+#define CMD_SID_FM_CONVERTTO_DATE ".uno:ConvertToDate"
+#define CMD_SID_FM_CONVERTTO_EDIT ".uno:ConvertToEdit"
+#define CMD_SID_FM_CONVERTTO_FILECONTROL ".uno:ConvertToFileControl"
+#define CMD_SID_FM_CONVERTTO_FIXEDTEXT ".uno:ConvertToFixed"
+#define CMD_SID_FM_CONVERTTO_FORMATTED ".uno:ConvertToFormatted"
+#define CMD_SID_FM_CONVERTTO_SCROLLBAR ".uno:ConvertToScrollBar"
+#define CMD_SID_FM_CONVERTTO_SPINBUTTON ".uno:ConvertToSpinButton"
+#define CMD_SID_FM_CONVERTTO_GROUPBOX ".uno:ConvertToGroup"
+#define CMD_SID_FM_CONVERTTO_IMAGEBUTTON ".uno:ConvertToImageBtn"
+#define CMD_SID_FM_CONVERTTO_IMAGECONTROL ".uno:ConvertToImageControl"
+#define CMD_SID_FM_CONVERTTO_LISTBOX ".uno:ConvertToList"
+#define CMD_SID_FM_CONVERTTO_NUMERIC ".uno:ConvertToNumeric"
+#define CMD_SID_FM_CONVERTTO_PATTERN ".uno:ConvertToPattern"
+#define CMD_SID_FM_CONVERTTO_RADIOBUTTON ".uno:ConvertToRadio"
+#define CMD_SID_FM_CONVERTTO_TIME ".uno:ConvertToTime"
+#define CMD_SID_FM_CONVERTTO_NAVIGATIONBAR ".uno:ConvertToNavigationBar"
+#define CMD_SID_FM_COUNTALL ".uno:CountAll"
+#define CMD_SID_FM_CREATE_CONTROL ".uno:CreateControl"
+#define CMD_SID_INSERT_CURRENCYFIELD ".uno:InsertCurrencyField"
+#define CMD_SID_FM_CURRENCYFIELD ".uno:CurrencyField"
+#define CMD_SID_DASH ".uno:Dash"
+#define CMD_SID_INSERT_DATEFIELD ".uno:AddDateField"
+#define CMD_SID_FM_DATEFIELD ".uno:DateField"
+#define CMD_FN_NUM_BULLET_ON ".uno:DefaultBullet"
+#define CMD_SID_FM_RECORD_DELETE ".uno:DeleteRecord"
+#define CMD_SID_FM_DESIGN_MODE ".uno:SwitchControlDesignMode"
+#define CMD_SID_DISTRIBUTE_DLG ".uno:DistributeSelection"
+#define CMD_SID_DRAW_SELECT ".uno:DrawSelect"
+#define CMD_SID_INSERT_DRAW ".uno:InsertDraw"
+#define CMD_SID_DSBROWSER_EXPLORER ".uno:DSBrowserExplorer"
+#define CMD_SID_FM_EDIT ".uno:Edit"
+#define CMD_SID_INSERT_EDIT ".uno:InsertEdit"
+#define CMD_SID_DRAW_ELLIPSE ".uno:Ellipse"
+#define CMD_SID_DRAW_ELLIPSE_NOFILL ".uno:Ellipse_Unfilled"
+#define CMD_SID_DRAW_ELLIPSECUT ".uno:EllipseCut"
+#define CMD_SID_DRAW_ELLIPSECUT_NOFILL ".uno:EllipseCut_Unfilled"
+#define CMD_SID_ENTER_GROUP ".uno:EnterGroup"
+#define CMD_SID_ATTR_CHAR_ESCAPEMENT ".uno:Escapement"
+#define CMD_SID_FM_FIELDS_CONTROL ".uno:FieldController"
+#define CMD_SID_FM_FILECONTROL ".uno:FileControl"
+#define CMD_SID_INSERT_FILECONTROL ".uno:InsertFileControl"
+#define CMD_SID_INSERT_TREECONTROL ".uno:InsertTreeControl"
+#define CMD_SID_ATTR_FILL_BITMAP ".uno:FillBitmap"
+#define CMD_SID_ATTR_FILL_COLOR ".uno:FillColor"
+#define CMD_SID_ATTR_FILL_GRADIENT ".uno:FillGradient"
+#define CMD_SID_ATTR_FILL_HATCH ".uno:FillHatch"
+#define CMD_SID_ATTR_FILL_STYLE ".uno:FillStyle"
+#define CMD_SID_FM_FILTERCRIT ".uno:FilterCrit"
+#define CMD_SID_FM_RECORD_FIRST ".uno:FirstRecord"
+#define CMD_SID_ATTR_FLASH ".uno:Flash"
+#define CMD_SID_FM_FMEXPLORER_CONTROL ".uno:FmExplorerController"
+#define CMD_SID_FM_FILTER_NAVIGATOR_CONTROL ".uno:FmFilterNavigatorController"
+#define CMD_SID_CHAR_DLG ".uno:FontDialog"
+#define CMD_SID_ATTR_CHAR_FONTHEIGHT ".uno:FontHeight"
+#define CMD_SID_ATTR_CHAR_LATIN_FONTHEIGHT ".uno:FontHeighLatin"
+#define CMD_SID_ATTR_CHAR_CJK_FONTHEIGHT ".uno:FontHeightCJK"
+#define CMD_SID_ATTR_CHAR_CTL_FONTHEIGHT ".uno:FontHeightCTL"
+#define CMD_SID_FONTWORK ".uno:FontWork"
+#define CMD_SID_FORMTEXT_ADJUST ".uno:FontWorkTextAdjust"
+#define CMD_SID_FORMTEXT_STDFORM ".uno:FontWorkTextClearAttributes"
+#define CMD_SID_FORMTEXT_DISTANCE ".uno:FontWorkTextDistance"
+#define CMD_SID_FORMTEXT_MIRROR ".uno:FontWorkTextMirror"
+#define CMD_SID_FORMTEXT_OUTLINE ".uno:FontWorkTextOutline"
+#define CMD_SID_FORMTEXT_SHADOW ".uno:FontWorkTextShadow"
+#define CMD_SID_FORMTEXT_SHDWCOLOR ".uno:FontWorkTextShadowColor"
+#define CMD_SID_FORMTEXT_SHDWXVAL ".uno:FontWorkTextShadowXVal"
+#define CMD_SID_FORMTEXT_SHDWYVAL ".uno:FontWorkTextShadowYVal"
+#define CMD_SID_FORMTEXT_START ".uno:FontWorkTextStart"
+#define CMD_SID_FORMTEXT_STYLE ".uno:FontWorkTextStyle"
+#define CMD_SID_ATTRIBUTES_AREA ".uno:FormatArea"
+#define CMD_SID_FORMTEXT_HIDEFORM ".uno:FormatFontWorkClose"
+#define CMD_SID_GROUP ".uno:FormatGroup"
+#define CMD_SID_ATTRIBUTES_LINE ".uno:FormatLine"
+#define CMD_SID_FM_FORMATTEDFIELD ".uno:FormattedField"
+#define CMD_SID_FM_SCROLLBAR ".uno:ScrollBar"
+#define CMD_SID_FM_SPINBUTTON ".uno:SpinButton"
+#define CMD_SID_INSERT_FORMATTEDFIELD ".uno:InsertFormattedField"
+#define CMD_SID_UNGROUP ".uno:FormatUngroup"
+#define CMD_SID_FM_FILTER_START ".uno:FormFilter"
+#define CMD_SID_FM_FORM_FILTERED ".uno:FormFiltered"
+#define CMD_SID_FM_FILTER_EXECUTE ".uno:FormFilterExecute"
+#define CMD_SID_FM_FILTER_EXIT ".uno:FormFilterExit"
+#define CMD_SID_FM_FILTER_NAVIGATOR ".uno:FormFilterNavigator"
+#define CMD_SID_FM_PROPERTIES ".uno:FormProperties"
+#define CMD_SID_DRAW_FREELINE ".uno:Freeline"
+#define CMD_SID_DRAW_FREELINE_NOFILL ".uno:Freeline_Unfilled"
+#define CMD_SID_ATTR_AUTO_COLOR_INVALID ".uno:AutoColorInvalid"
+#define CMD_SID_GALLERY ".uno:Gallery"
+#define CMD_SID_GALLERY_ENABLE_ADDCOPY ".uno:GalleryEnableAddCopy"
+#define CMD_SID_GETREDOSTRINGS ".uno:GetRedoStrings"
+#define CMD_SID_GETUNDOSTRINGS ".uno:GetUndoStrings"
+#define CMD_SID_ATTR_GRAF_CROP ".uno:GrafAttrCrop"
+#define CMD_SID_ATTR_GRAF_BLUE ".uno:GrafBlue"
+#define CMD_SID_ATTR_GRAF_CONTRAST ".uno:GrafContrast"
+#define CMD_SID_ATTR_GRAF_GAMMA ".uno:GrafGamma"
+#define CMD_SID_ATTR_GRAF_GREEN ".uno:GrafGreen"
+#define CMD_SID_ATTR_GRAF_INVERT ".uno:GrafInvert"
+#define CMD_SID_ATTR_GRAF_LUMINANCE ".uno:GrafLuminance"
+#define CMD_SID_ATTR_GRAF_MODE ".uno:GrafMode"
+#define CMD_SID_ATTR_GRAF_RED ".uno:GrafRed"
+#define CMD_SID_ATTR_GRAF_TRANSPARENCE ".uno:GrafTransparence"
+#define CMD_SID_GRFFILTER_INVERT ".uno:GraphicFilterInvert"
+#define CMD_SID_GRFFILTER_MOSAIC ".uno:GraphicFilterMosaic"
+#define CMD_SID_GRFFILTER_POPART ".uno:GraphicFilterPopart"
+#define CMD_SID_GRFFILTER_POSTER ".uno:GraphicFilterPoster"
+#define CMD_SID_GRFFILTER_EMBOSS ".uno:GraphicFilterRelief"
+#define CMD_SID_GRFFILTER_REMOVENOISE ".uno:GraphicFilterRemoveNoise"
+#define CMD_SID_GRFFILTER_SEPIA ".uno:GraphicFilterSepia"
+#define CMD_SID_GRFFILTER_SHARPEN ".uno:GraphicFilterSharpen"
+#define CMD_SID_GRFFILTER_SMOOTH ".uno:GraphicFilterSmooth"
+#define CMD_SID_GRFFILTER_SOBEL ".uno:GraphicFilterSobel"
+#define CMD_SID_GRFFILTER_SOLARIZE ".uno:GraphicFilterSolarize"
+#define CMD_SID_GRFFILTER ".uno:GraphicFilterToolbox"
+#define CMD_SID_FM_DBGRID ".uno:Grid"
+#define CMD_SID_GRID_USE ".uno:GridUse"
+#define CMD_SID_GRID_VISIBLE ".uno:GridVisible"
+#define CMD_SID_OUTLINE_MAKE ".uno:Group"
+#define CMD_SID_FM_GROUPBOX ".uno:GroupBox"
+#define CMD_SID_INSERT_GROUPBOX ".uno:Groupbox"
+#define CMD_SID_RULER_LR_MIN_MAX ".uno:HeaderFooterBorder"
+#define CMD_SID_HELPLINES_MOVE ".uno:HelplinesMove"
+#define CMD_SID_INSERT_HFIXEDLINE ".uno:HFixedLine"
+#define CMD_SID_OUTLINE_HIDE ".uno:HideDetail"
+#define CMD_SID_INSERT_HSCROLLBAR ".uno:HScrollbar"
+#define CMD_SID_HYPERLINK_GETLINK ".uno:Hyperlink"
+#define CMD_SID_FM_IMAGEBUTTON ".uno:Imagebutton"
+#define CMD_SID_FM_IMAGECONTROL ".uno:ImageControl"
+#define CMD_SID_INSERT_IMAGECONTROL ".uno:InsertImageControl"
+#define CMD_SID_IMAP ".uno:ImageMapDialog"
+#define CMD_SID_IMAP_EXEC ".uno:ImageMapExecute"
+#define CMD_SID_3D_INIT ".uno:Init3D"
+#define CMD_SID_OBJECTRESIZE ".uno:InPlaceObjectResize"
+#define CMD_SID_ENTER_STRING ".uno:EnterString"
+#define CMD_SID_INSERT_POSTIT ".uno:InsertAnnotation"
+#define CMD_SID_SHOW_POSTIT ".uno:ShowAnnotations"
+#define CMD_SID_REPLYTO_POSTIT ".uno:ReplyToAnnotation"
+#define CMD_SID_DELETE_POSTIT ".uno:DeleteAnnotation"
+#define CMD_SID_DELETEALL_POSTIT ".uno:DeleteAllAnnotation"
+#define CMD_SID_DELETEALLBYAUTHOR_POSTIT ".uno:DeleteAllAnnotationByAuthor"
+#define CMD_SID_NEXT_POSTIT ".uno:NextAnnotation"
+#define CMD_SID_PREVIOUS_POSTIT ".uno:PreviousAnnotation"
+#define CMD_SID_INSERT_APPLET ".uno:InsertApplet"
+#define CMD_SID_GALLERY_FORMATS ".uno:InsertGalleryPic"
+#define CMD_SID_INSERT_GRAPHIC ".uno:InsertGraphic"
+#define CMD_SID_INSERT_IMAGE ".uno:InsertImage"
+#define CMD_SID_INSERT_MATH ".uno:InsertMath"
+#define CMD_SID_ATTR_INSERT ".uno:InsertMode"
+#define CMD_FN_NUM_NUMBERING_ON ".uno:DefaultNumbering"
+#define CMD_SID_INSERT_OBJECT ".uno:InsertObject"
+#define CMD_SID_INSERT_DIAGRAM ".uno:InsertObjectChart"
+#define CMD_SID_INSERT_PLUGIN ".uno:InsertPlugin"
+#define CMD_SID_INSERT_SOUND ".uno:InsertSound"
+#define CMD_SID_CHARMAP ".uno:InsertSymbol"
+#define CMD_SID_ATTR_TABLE ".uno:InsertSpreadsheet"
+#define CMD_SID_INSERT_TABLE ".uno:InsertTable"
+#define CMD_SID_INSERT_FRAME ".uno:InsertTextFrame"
+#define CMD_SID_INSERT_VIDEO ".uno:InsertVideo"
+#define CMD_SID_POLY_INTERSECT ".uno:Intersect"
+#define CMD_SID_ATTR_CHAR_POSTURE ".uno:Italic"
+#define CMD_SID_ATTR_CHAR_LATIN_POSTURE ".uno:ItalicLatin"
+#define CMD_SID_ATTR_CHAR_CJK_POSTURE ".uno:ItalicCJK"
+#define CMD_SID_ATTR_CHAR_CTL_POSTURE ".uno:ItalicCTL"
+#define CMD_SID_ATTR_PARA_ADJUST_BLOCK ".uno:JustifyPara"
+#define CMD_SID_INSERT_FIXEDTEXT ".uno:InsertFixedText"
+#define CMD_SID_FM_FIXEDTEXT ".uno:Label"
+#define CMD_SID_ATTR_CHAR_LANGUAGE ".uno:Language"
+#define CMD_SID_ATTR_CHAR_LATIN_LANGUAGE ".uno:LanguageLatin"
+#define CMD_SID_FM_RECORD_LAST ".uno:LastRecord"
+#define CMD_SID_FM_LEAVE_CREATE ".uno:LeaveFMCreateMode"
+#define CMD_SID_LEAVE_GROUP ".uno:LeaveGroup"
+#define CMD_SID_ATTR_PARA_ADJUST_LEFT ".uno:LeftPara"
+#define CMD_SID_ATTR_LRSPACE ".uno:LeftRightMargin"
+#define CMD_SID_ATTR_PARA_LRSPACE ".uno:LeftRightParaMargin"
+#define CMD_SID_ATTR_PARA_LRSPACE_VERTICAL ".uno:LeftRightParaMargin_Vertical"
+#define CMD_SID_DRAW_LINE ".uno:Line"
+#define CMD_SID_DRAW_XLINE ".uno:Line_Diagonal"
+#define CMD_SID_FRAME_LINECOLOR ".uno:FrameLineColor"
+#define CMD_SID_ATTR_LINE_DASH ".uno:LineDash"
+#define CMD_SID_ATTR_LINEEND_STYLE ".uno:LineEndStyle"
+#define CMD_SID_ATTR_PARA_LINESPACE ".uno:LineSpacing"
+#define CMD_SID_FRAME_LINESTYLE ".uno:LineStyle"
+#define CMD_SID_ATTR_LINE_WIDTH ".uno:LineWidth"
+#define CMD_SID_FM_LISTBOX ".uno:ListBox"
+#define CMD_SID_INSERT_LISTBOX ".uno:InsertListbox"
+#define CMD_SID_POLY_MERGE ".uno:Merge"
+#define CMD_SID_BASICIDE_NEWJAVAMODULE ".uno:NewJavaModule"
+#define CMD_SID_FM_RECORD_NEW ".uno:NewRecord"
+#define CMD_SID_FM_RECORD_NEXT ".uno:NextRecord"
+#define CMD_SID_FM_NUMERICFIELD ".uno:NumericField"
+#define CMD_SID_INSERT_NUMERICFIELD ".uno:InsertNumericField"
+#define CMD_SID_OBJECT_ALIGN ".uno:ObjectAlign"
+#define CMD_SID_FRAME_DOWN ".uno:ObjectBackOne"
+#define CMD_SID_FRAME_UP ".uno:ObjectForwardOne"
+#define CMD_SID_FM_OPEN_READONLY ".uno:OpenReadOnly"
+#define CMD_SID_FM_ORDERCRIT ".uno:OrderCrit"
+#define CMD_SID_ATTR_PARA_ORPHANS ".uno:Orphan"
+#define CMD_SID_OUTLINE_BULLET ".uno:OutlineBullet"
+#define CMD_SID_OUTLINE_COLLAPSE ".uno:OutlineCollapse"
+#define CMD_SID_OUTLINE_COLLAPSE_ALL ".uno:OutlineCollapseAll"
+#define CMD_SID_OUTLINE_DOWN ".uno:OutlineDown"
+#define CMD_SID_OUTLINE_EXPAND ".uno:OutlineExpand"
+#define CMD_SID_OUTLINE_EXPAND_ALL ".uno:OutlineExpandAll"
+#define CMD_SID_ATTR_CHAR_CONTOUR ".uno:OutlineFont"
+#define CMD_SID_OUTLINE_FORMAT ".uno:OutlineFormat"
+#define CMD_SID_OUTLINE_LEFT ".uno:OutlineLeft"
+#define CMD_SID_OUTLINE_RIGHT ".uno:OutlineRight"
+#define CMD_SID_OUTLINE_UP ".uno:OutlineUp"
+#define CMD_SID_ATTR_PARA_PAGEBREAK ".uno:Pagebreak"
+#define CMD_SID_ATTR_PAGE_PAPERBIN ".uno:PagePaperBin"
+#define CMD_SID_ATTR_PAGE_SIZE ".uno:AttributePageSize"
+#define CMD_SID_ATTR_PARA_MODEL ".uno:AttributeParaModel"
+#define CMD_SID_ATTR_PAGE ".uno:AttributePage"
+#define CMD_SID_ATTR_CHAR_AUTOKERN ".uno:PairKerning"
+#define CMD_SID_PARA_DLG ".uno:ParagraphDialog"
+#define CMD_SID_ATTR_PARA_KEEP ".uno:ParaKeepTogether"
+#define CMD_SID_ATTR_PARA_SPLIT ".uno:ParaSplit"
+#define CMD_SID_INSERT_PATTERNFIELD ".uno:InsertPatternField"
+#define CMD_SID_FM_PATTERNFIELD ".uno:PatternField"
+#define CMD_SID_DRAW_PIE ".uno:Pie"
+#define CMD_SID_DRAW_PIE_NOFILL ".uno:Pie_Unfilled"
+#define CMD_SID_POLY_FORMEN ".uno:PolyFormen"
+#define CMD_SID_DRAW_XPOLYGON ".uno:Polygon_Diagonal"
+#define CMD_SID_DRAW_XPOLYGON_NOFILL ".uno:Polygon_Diagonal_Unfilled"
+#define CMD_SID_DRAW_POLYGON_NOFILL ".uno:Polygon_Unfilled"
+#define CMD_SID_ATTR_POSITION ".uno:Position"
+#define CMD_SID_INSERT_PREVIEW ".uno:Preview"
+#define CMD_SID_FM_RECORD_PREV ".uno:PrevRecord"
+#define CMD_SID_INSERT_PROGRESSBAR ".uno:ProgressBar"
+#define CMD_SID_FM_PROPERTY_CONTROL ".uno:PropertyController"
+#define CMD_SID_FM_PUSHBUTTON ".uno:Pushbutton"
+#define CMD_SID_INSERT_PUSHBUTTON ".uno:InsertPushbutton"
+#define CMD_SID_INSERT_RADIOBUTTON ".uno:Radiobutton"
+#define CMD_SID_FM_RADIOBUTTON ".uno:RadioButton"
+#define CMD_SID_READONLY_MODE ".uno:ReadOnlyMode"
+#define CMD_SID_FM_RECORD_FROM_TEXT ".uno:RecFromText"
+#define CMD_SID_FM_RECORD_SAVE ".uno:RecSave"
+#define CMD_SID_FM_SEARCH ".uno:RecSearch"
+#define CMD_SID_DRAW_RECT ".uno:Rect"
+#define CMD_SID_DRAW_RECT_ROUND ".uno:Rect_Rounded"
+#define CMD_SID_DRAW_RECT_ROUND_NOFILL ".uno:Rect_Rounded_Unfilled"
+#define CMD_SID_DRAW_RECT_NOFILL ".uno:Rect_Unfilled"
+#define CMD_SID_FM_RECORD_TEXT ".uno:RecText"
+#define CMD_SID_FM_RECORD_TOTAL ".uno:RecTotal"
+#define CMD_SID_FM_RECORD_UNDO ".uno:RecUndo"
+#define CMD_SID_FM_REFRESH ".uno:Refresh"
+#define CMD_SID_FM_REFRESH_FORM_CONTROL ".uno:RefreshFormControl"
+#define CMD_SID_FM_FILTER_REMOVE ".uno:RemoveFilter"
+#define CMD_SID_FM_REMOVE_FILTER_SORT ".uno:RemoveFilterSort"
+#define CMD_FID_SEARCH_REPLACESET ".uno:ReplaceSet"
+#define CMD_SID_ATTR_PARA_ADJUST_RIGHT ".uno:RightPara"
+#define CMD_SID_RULER_BORDER_DISTANCE ".uno:RulerBorderDistance"
+#define CMD_SID_RULER_BORDERS ".uno:RulerBorders"
+#define CMD_SID_RULER_BORDERS_VERTICAL ".uno:RulerBordersVertical"
+#define CMD_SID_RULER_NULL_OFFSET ".uno:RulerNullOffset"
+#define CMD_SID_RULER_PAGE_POS ".uno:RulerPagePos"
+#define CMD_SID_RULER_PROTECT ".uno:RulerProtect"
+#define CMD_SID_FM_EXECUTE ".uno:SbaExecuteSql"
+#define CMD_SID_FM_NATIVESQL ".uno:SbaNativeSql"
+#define CMD_SID_SCAN ".uno:Scan"
+#define CMD_SID_SC_EDITOPTIONS ".uno:ScEditOptions"
+#define CMD_SID_SCH_EDITOPTIONS ".uno:SchEditOptions"
+#define CMD_SID_SD_EDITOPTIONS ".uno:SdEditOptions"
+#define CMD_SID_SD_GRAPHIC_OPTIONS ".uno:SdGraphicOptions"
+#define CMD_FID_SEARCH_OFF ".uno:SearchOff"
+#define CMD_FID_SEARCH_ON ".uno:SearchOn"
+#define CMD_FID_SEARCH_SEARCHSET ".uno:SearchSet"
+#define CMD_SID_SELECT ".uno:Select"
+#define CMD_SID_FRAME_TO_BOTTOM ".uno:SendToBack"
+#define CMD_SID_SET_DEFAULT ".uno:SetDefault"
+#define CMD_SID_HYPERLINK_SETLINK ".uno:SetHyperlink"
+#define CMD_SID_ATTR_PARA_HYPHENZONE ".uno:SetHyphenZone"
+#define CMD_SID_ATTR_LONG_LRSPACE ".uno:SetLongLeftRightMargin"
+#define CMD_SID_ATTR_LONG_ULSPACE ".uno:SetLongTopBottomMargin"
+#define CMD_SID_OBJECT_HELL ".uno:SetObjectToBackground"
+#define CMD_SID_OBJECT_HEAVEN ".uno:SetObjectToForeground"
+#define CMD_SID_ATTR_PAGE_MAXSIZE ".uno:SetPageMaxSize"
+#define CMD_SID_ATTR_BORDER_SHADOW ".uno:BorderShadow"
+#define CMD_SID_ATTR_FILL_SHADOW ".uno:FillShadow"
+#define CMD_SID_ATTR_CHAR_SHADOWED ".uno:Shadowed"
+#define CMD_SID_OUTLINE_SHOW ".uno:ShowDetail"
+#define CMD_SID_FM_SHOW_FMEXPLORER ".uno:ShowFmExplorer"
+#define CMD_SID_SHOW_ITEMBROWSER ".uno:ShowItemBrowser"
+#define CMD_SID_SHOW_PROPERTYBROWSER ".uno:ShowPropBrowser"
+#define CMD_SID_FM_SHOW_PROPERTIES ".uno:ShowProperties"
+#define CMD_SID_FM_SHOW_PROPERTY_BROWSER ".uno:ShowPropertyBrowser"
+#define CMD_SID_RULER ".uno:ShowRuler"
+#define CMD_SID_SIM_EDITOPTIONS ".uno:SimEditOptions"
+#define CMD_SID_ATTR_SIZE ".uno:Size"
+#define CMD_SID_SM_EDITOPTIONS ".uno:SmEditOptions"
+#define CMD_SID_FM_SORTDOWN ".uno:SortDown"
+#define CMD_SID_FM_SORTUP ".uno:Sortup"
+#define CMD_SID_ATTR_PARA_LINESPACE_10 ".uno:SpacePara1"
+#define CMD_SID_ATTR_PARA_LINESPACE_15 ".uno:SpacePara15"
+#define CMD_SID_ATTR_PARA_LINESPACE_20 ".uno:SpacePara2"
+#define CMD_SID_ATTR_CHAR_KERNING ".uno:Spacing"
+#define CMD_SID_AUTOSPELL_CHECK ".uno:SpellOnline"
+#define CMD_SID_INSERT_SPINBUTTON ".uno:Spinbutton"
+#define CMD_SID_DRAW_SQUARE ".uno:Square"
+#define CMD_SID_DRAW_SQUARE_ROUND ".uno:Square_Rounded"
+#define CMD_SID_DRAW_SQUARE_ROUND_NOFILL ".uno:Square_Rounded_Unfilled"
+#define CMD_SID_DRAW_SQUARE_NOFILL ".uno:Square_Unfilled"
+#define CMD_SID_3D_STATE ".uno:State3D"
+#define CMD_SID_ATTR_CHAR_STRIKEOUT ".uno:Strikeout"
+#define CMD_SID_SET_SUB_SCRIPT ".uno:SubScript"
+#define CMD_SID_POLY_SUBSTRACT ".uno:Substract"
+#define CMD_SID_SET_SUPER_SCRIPT ".uno:SuperScript"
+#define CMD_SID_SW_EDITOPTIONS ".uno:SwEditOptions"
+#define CMD_SID_FM_TAB_DIALOG ".uno:TabDialog"
+#define CMD_SID_ATTR_TABSTOP ".uno:Tabstops"
+#define CMD_SID_ATTR_TABSTOP_VERTICAL ".uno:TabstopsVertical"
+#define CMD_SID_DIALOG_TESTMODE ".uno:TestMode"
+#define CMD_SID_ATTR_CHAR ".uno:Text"
+#define CMD_SID_DRAW_TEXT ".uno:DrawText"
+#define CMD_SID_DRAW_TEXT_MARQUEE ".uno:Text_Marquee"
+#define CMD_SID_TEXTDIRECTION_LEFT_TO_RIGHT ".uno:TextdirectionLeftToRight"
+#define CMD_SID_TEXTDIRECTION_TOP_TO_BOTTOM ".uno:TextdirectionTopToBottom"
+#define CMD_SID_ATTR_TEXT_FITTOSIZE ".uno:TextFitToSize"
+#define CMD_SID_THESAURUS ".uno:ThesaurusDialog"
+#define CMD_SID_INSERT_TIMEFIELD ".uno:InsertTimeField"
+#define CMD_SID_FM_TIMEFIELD ".uno:TimeField"
+#define CMD_SID_BEZIER_EDIT ".uno:ToggleObjectBezierMode"
+#define CMD_SID_OBJECT_ROTATE ".uno:ToggleObjectRotateMode"
+#define CMD_SID_TEXTEDIT ".uno:ToolEdit"
+#define CMD_SID_OBJECT_SELECT ".uno:SelectObject"
+#define CMD_SID_ATTR_ULSPACE ".uno:TopBottomMargin"
+#define CMD_SID_ATTR_TRANSFORM ".uno:TransformDialog"
+#define CMD_SID_TWAIN_SELECT ".uno:TwainSelect"
+#define CMD_SID_TWAIN_TRANSFER ".uno:TwainTransfer"
+#define CMD_SID_ATTR_CHAR_UNDERLINE ".uno:Underline"
+#define CMD_SID_ATTR_CHAR_OVERLINE ".uno:Overline"
+#define CMD_SID_OUTLINE_REMOVE ".uno:Ungroup"
+#define CMD_SID_INSERT_URLBUTTON ".uno:URLButton"
+#define CMD_SID_FM_USE_WIZARDS ".uno:UseWizards"
+#define CMD_SID_DRAW_CAPTION_VERTICAL ".uno:VerticalCaption"
+#define CMD_SID_DRAW_TEXT_VERTICAL ".uno:VerticalText"
+#define CMD_SID_INSERT_VFIXEDLINE ".uno:VFixedLine"
+#define CMD_SID_FM_VIEW_AS_GRID ".uno:ViewFormAsGrid"
+#define CMD_SID_INSERT_VSCROLLBAR ".uno:VScrollbar"
+#define CMD_SID_ATTR_PARA_WIDOWS ".uno:Widow"
+#define CMD_SID_3D_WIN ".uno:Window3D"
+#define CMD_SID_ATTR_CHAR_WORDLINEMODE ".uno:WordMode"
+#define CMD_SID_ATTR_LINE_COLOR ".uno:XLineColor"
+#define CMD_SID_ATTR_LINE_STYLE ".uno:XLineStyle"
+#define CMD_SID_ATTR_ZOOM ".uno:Zoom"
+#define CMD_SID_SIZE_REAL ".uno:Zoom100Percent"
+#define CMD_SID_SIZE_OPTIMAL ".uno:ZoomObjects"
+#define CMD_SID_SIZE_ALL ".uno:ZoomOptimal"
+#define CMD_SID_SIZE_PAGE ".uno:ZoomPage"
+#define CMD_SID_SIZE_PAGE_WIDTH ".uno:ZoomPageWidth"
+#define CMD_SID_SIZE_VISAREA ".uno:ZoomVisArea"
+#define CMD_SID_FM_GRABCONTROLFOCUS ".uno:GrabControlFocus"
+#define CMD_SID_FM_CREATE_FIELDCONTROL ".uno:CreateFieldControl"
+#define CMD_SID_INSERT_SELECT ".uno:SelectMode"
+#define CMD_SID_PARA_VERTALIGN ".uno:VerticalParagraphAlignment"
+#define CMD_SID_ATTR_CHAR_RELIEF ".uno:CharacterRelief"
+#define CMD_SID_ATTR_BRUSH_CHAR ".uno:CharacterBackgroundPattern"
+#define CMD_SID_ATTR_CHAR_ROTATED ".uno:CharacterRotation"
+#define CMD_SID_ATTR_CHAR_SCALEWIDTH ".uno:CharacterWidthScalingFactor"
+#define CMD_SID_ATTR_NUMBERFORMAT_VALUE ".uno:NumberFormatValue"
+#define CMD_SID_ATTR_ALIGN_HOR_JUSTIFY ".uno:HorizontalJustification"
+#define CMD_SID_ATTR_ALIGN_VER_JUSTIFY ".uno:VerticalJustification"
+#define CMD_SID_ATTR_ALIGN_INDENT ".uno:AlignmentIndent"
+#define CMD_SID_ATTR_ALIGN_HYPHENATION ".uno:AlignmentHyphenation"
+#define CMD_SID_ATTR_ALIGN_DEGREES ".uno:AlignmentRotation"
+#define CMD_SID_ATTR_ALIGN_LOCKPOS ".uno:AlignmentRotationMode"
+#define CMD_SID_ATTR_ALIGN_MARGIN ".uno:AlignmentMargin"
+#define CMD_SID_ATTR_ALIGN_STACKED ".uno:AlignmentStacked"
+#define CMD_SID_ATTR_PARA_LEFT_TO_RIGHT ".uno:ParaLeftToRight"
+#define CMD_SID_ATTR_PARA_RIGHT_TO_LEFT ".uno:ParaRightToLeft"
+#define CMD_SID_RULER_TEXT_RIGHT_TO_LEFT ".uno:TextRTL"
+#define CMD_SID_OPEN_HYPERLINK ".uno:OpenHyperlinkOnCursor"
+#define CMD_SID_CTLFONT_STATE ".uno:CTLFontState"
+#define CMD_SID_VERTICALTEXT_STATE ".uno:VerticalTextState"
+#define CMD_SID_OPEN_XML_FILTERSETTINGS ".uno:OpenXMLFilterSettings"
+#define CMD_SID_HANGUL_HANJA_CONVERSION ".uno:HangulHanjaConversion"
+#define CMD_SID_CHINESE_CONVERSION ".uno:ChineseConversion"
+#define CMD_SID_SPELL_DIALOG ".uno:SpellDialog"
+#define CMD_SID_RULER_ROWS ".uno:RulerRows"
+#define CMD_SID_RULER_ROWS_VERTICAL ".uno:RulerRowsVertical"
+#define CMD_SID_ATTR_CHAR_FONTLIST ".uno:FontNameList"
+#define CMD_SID_EXTRUSION_TOOGLE ".uno:ExtrusionToggle"
+#define CMD_SID_EXTRUSION_TILT_DOWN ".uno:ExtrusionTiltDown"
+#define CMD_SID_EXTRUSION_TILT_UP ".uno:ExtrusionTiltUp"
+#define CMD_SID_EXTRUSION_TILT_LEFT ".uno:ExtrusionTiltLeft"
+#define CMD_SID_EXTRUSION_TILT_RIGHT ".uno:ExtrusionTiltRight"
+#define CMD_SID_EXTRUSION_DEPTH_FLOATER ".uno:ExtrusionDepthFloater"
+#define CMD_SID_EXTRUSION_DEPTH_DIALOG ".uno:ExtrusionDepthDialog"
+#define CMD_SID_EXTRUSION_DIRECTION_FLOATER ".uno:ExtrusionDirectionFloater"
+#define CMD_SID_EXTRUSION_LIGHTING_FLOATER ".uno:ExtrusionLightingFloater"
+#define CMD_SID_EXTRUSION_SURFACE_FLOATER ".uno:ExtrusionSurfaceFloater"
+#define CMD_SID_EXTRUSION_3D_COLOR ".uno:Extrusion3DColor"
+#define CMD_SID_EXTRUSION_DEPTH ".uno:ExtrusionDepth"
+#define CMD_SID_EXTRUSION_DIRECTION ".uno:ExtrusionDirection"
+#define CMD_SID_EXTRUSION_PROJECTION ".uno:ExtrusionProjection"
+#define CMD_SID_EXTRUSION_LIGHTING_DIRECTION ".uno:ExtrusionLightingDirection"
+#define CMD_SID_EXTRUSION_LIGHTING_INTENSITY ".uno:ExtrusionLightingIntensity"
+#define CMD_SID_EXTRUSION_SURFACE ".uno:ExtrusionSurface"
+#define CMD_SID_FONTWORK_GALLERY_FLOATER ".uno:FontworkGalleryFloater"
+#define CMD_SID_FONTWORK_SHAPE_TYPE ".uno:FontworkShapeType"
+#define CMD_SID_FONTWORK_SAME_LETTER_HEIGHTS ".uno:FontworkSameLetterHeights"
+#define CMD_SID_FONTWORK_ALIGNMENT_FLOATER ".uno:FontworkAlignmentFloater"
+#define CMD_SID_FONTWORK_CHARACTER_SPACING_FLOATER ".uno:FontworkCharacterSpacingFloater"
+#define CMD_SID_FONTWORK_SHAPE ".uno:FontworkShape"
+#define CMD_SID_FONTWORK_ALIGNMENT ".uno:FontworkAlignment"
+#define CMD_SID_FONTWORK_CHARACTER_SPACING ".uno:FontworkCharacterSpacing"
+#define CMD_SID_FONTWORK_CHARACTER_SPACING_DIALOG ".uno:FontworkCharacterSpacingDialog"
+#define CMD_SID_FONTWORK_KERN_CHARACTER_PAIRS ".uno:FontworkKernCharacterPairs"
+#define CMD_SID_GET_COLORTABLE ".uno:GetColorTable"
+#define CMD_SID_SPELLCHECKER_CHANGED ".uno:SpellCheckerChanged"
+#define CMD_SID_ATTR_YEAR2000 ".uno:Year2000"
+#define CMD_SID_INC_INDENT ".uno:IncrementIndent"
+#define CMD_SID_DEC_INDENT ".uno:DecrementIndent"
+#define CMD_SID_TABLE_CELL ".uno:StateTableCell"
+#define CMD_SID_OUTLINE_TO_IMPRESS ".uno:SendOutlineToImpress"
+#define CMD_SID_ATTR_DEFTABSTOP ".uno:DefTabStop"
+#define CMD_SID_ATTR_LANGUAGE ".uno:DocumentLanguage"
+#define CMD_SID_ATTR_CHAR_CJK_LANGUAGE ".uno:DocumentLanguageCJK"
+#define CMD_SID_ATTR_CHAR_CTL_LANGUAGE ".uno:DocumentLanguageCTL"
+#define CMD_SID_OPT_LOCALE_CHANGED ".uno:OptionsLocaleChanged"
+#define CMD_SID_SBA_BRW_INSERT ".uno:SbaBrwInsert"
+#define CMD_SID_DRAWTBX_CS_BASIC ".uno:BasicShapes"
+#define CMD_SID_DRAWTBX_CS_SYMBOL ".uno:SymbolShapes"
+#define CMD_SID_DRAWTBX_CS_ARROW ".uno:ArrowShapes"
+#define CMD_SID_DRAWTBX_CS_FLOWCHART ".uno:FlowChartShapes"
+#define CMD_SID_DRAWTBX_CS_CALLOUT ".uno:CalloutShapes"
+#define CMD_SID_DRAWTBX_CS_STAR ".uno:StarShapes"
+#define CMD_SID_DRAW_CS_ID ".uno:CustomShape"
+#define CMD_SID_DASH_LIST ".uno:DashListState"
+#define CMD_SID_LINEEND_LIST ".uno:LineEndListState"
+#define CMD_SID_COLOR_TABLE ".uno:ColorTableState"
+#define CMD_SID_GRADIENT_LIST ".uno:GradientListState"
+#define CMD_SID_HATCH_LIST ".uno:HatchListState"
+#define CMD_SID_BITMAP_LIST ".uno:BitmapListState"
+#define CMD_SID_ATTR_CHAR_EMPHASISMARK ".uno:EmphasisMark"
+#define CMD_SID_FM_SHOW_DATANAVIGATOR ".uno:ShowDataNavigator"
+#define CMD_SID_FM_DATANAVIGATOR_CONTROL ".uno:FmDataNavigatorController"
+#define CMD_SID_ALIGN_ANY_LEFT ".uno:CommonAlignLeft"
+#define CMD_SID_ALIGN_ANY_HCENTER ".uno:CommonAlignHorizontalCenter"
+#define CMD_SID_ALIGN_ANY_RIGHT ".uno:CommonAlignRight"
+#define CMD_SID_ALIGN_ANY_JUSTIFIED ".uno:CommonAlignJustified"
+#define CMD_SID_ALIGN_ANY_TOP ".uno:CommonAlignTop"
+#define CMD_SID_ALIGN_ANY_VCENTER ".uno:CommonAlignVerticalCenter"
+#define CMD_SID_ALIGN_ANY_BOTTOM ".uno:CommonAlignBottom"
+#define CMD_SID_ALIGN_ANY_HDEFAULT ".uno:CommonAlignHorizontalDefault"
+#define CMD_SID_ALIGN_ANY_VDEFAULT ".uno:CommonAlignVerticalDefault"
+#define CMD_SID_AVMEDIA_TOOLBOX ".uno:AVMediaToolBox"
+#define CMD_SID_BORDER_REDUCED_MODE ".uno:BorderReducedMode"
+#define CMD_SID_COLOR_SETTINGS ".uno:ColorSettings"
+#define CMD_SID_MAIL_EXPORT_FINISHED ".uno:MailExportFinished"
+#define CMD_SID_INSERT_ZWSP ".uno:InsertZWSP"
+#define CMD_SID_INSERT_ZWNBSP ".uno:InsertZWNBSP"
+#define CMD_SID_INSERT_LRM ".uno:InsertLRM"
+#define CMD_SID_INSERT_RLM ".uno:InsertRLM"
+#define CMD_FN_INSERT_SOFT_HYPHEN ".uno:InsertSoftHyphen"
+#define CMD_FN_INSERT_HARDHYPHEN ".uno:InsertHardHyphen"
+#define CMD_FN_INSERT_HARD_SPACE ".uno:InsertNonBreakingSpace"
+#define CMD_SID_BASICIDE_MANAGE_LANG ".uno:ManageLanguage"
+#define CMD_SID_BASICIDE_CURRENT_LANG ".uno:CurrentLanguage"
+#define CMD_SID_TABLE_MERGE_CELLS ".uno:MergeCells"
+#define CMD_SID_TABLE_SPLIT_CELLS ".uno:SplitCell"
+#define CMD_SID_OPTIMIZE_TABLE ".uno:OptimizeTable"
+#define CMD_SID_TABLE_VERT_BOTTOM ".uno:CellVertBottom"
+#define CMD_SID_TABLE_VERT_CENTER ".uno:CellVertCenter"
+#define CMD_SID_TABLE_VERT_NONE ".uno:CellVertTop"
+#define CMD_SID_TABLE_INSERT_ROW ".uno:InsertRows"
+#define CMD_SID_TABLE_INSERT_COL ".uno:InsertColumns"
+#define CMD_SID_TABLE_DELETE_ROW ".uno:DeleteRows"
+#define CMD_SID_TABLE_DELETE_COL ".uno:DeleteColumns"
+#define CMD_SID_TABLE_SELECT_ALL ".uno:SelectTable"
+#define CMD_SID_TABLE_SELECT_COL ".uno:EntireColumn"
+#define CMD_SID_TABLE_SELECT_ROW ".uno:EntireRow"
+#define CMD_SID_FORMAT_TABLE_DLG ".uno:TableDialog"
+#define CMD_SID_TABLE_AUTOSUM ".uno:AutoSum"
+#define CMD_SID_TABLE_SORT_DIALOG ".uno:TableSort"
+#define CMD_SID_OPEN_SMARTTAGMENU ".uno:OpenSmartTagMenuOnCursor"
+#define CMD_SID_ATTR_ZOOMSLIDER ".uno:ZoomSlider"
+#define CMD_SID_FONTNAMELIST ".uno:FontNameStringList"
+#define CMD_SID_LANGUAGE_STATUS ".uno:LanguageStatus"
+#define CMD_SID_CHAR_DLG_FOR_PARAGRAPH ".uno:FontDialogForParagraph"
+#define CMD_SID_GROW_FONT_SIZE ".uno:Grow"
+#define CMD_SID_SHRINK_FONT_SIZE ".uno:Shrink"
+#define CMD_SID_RECHECK_DOCUMENT ".uno:RecheckDocument"
+#define CMD_SID_TABLE_INSERT_COL_DLG ".uno:InsertColumnDialog"
+#define CMD_SID_TABLE_INSERT_ROW_DLG ".uno:InsertRowDialog"
+
+#endif
diff --git a/svx/inc/svx/svxdlg.hxx b/svx/inc/svx/svxdlg.hxx index df11041b38a8..983a048a4ff7 100644 --- a/svx/inc/svx/svxdlg.hxx +++ b/svx/inc/svx/svxdlg.hxx @@ -195,9 +195,9 @@ class AbstractSvxNameDialog :public VclAbstractDialog //add for SvxNameDialog public: virtual void GetName( String& rName ) = 0; virtual void SetCheckNameHdl( const Link& rLink, bool bCheckImmediately = false ) = 0; - virtual void SetEditHelpId(ULONG nHelpId) = 0; + virtual void SetEditHelpId(const rtl::OString&) = 0; //from class Window - virtual void SetHelpId( ULONG nHelpId ) = 0; + virtual void SetHelpId( const rtl::OString& ) = 0; virtual void SetText( const XubString& rStr ) = 0; }; @@ -243,7 +243,7 @@ public: //from SvxMultiPathDialog virtual void SetClassPathMode() = 0; //From Class Window - virtual void SetHelpId( ULONG nHelpId ) = 0; + virtual void SetHelpId( const rtl::OString& ) = 0; }; class AbstractSvxHpLinkDlg : public VclAbstractDialog //add for SvxHpLinkDlg @@ -500,7 +500,7 @@ public: virtual SvxAbstractNewTableDialog* CreateSvxNewTableDialog( Window* pParent ) = 0; - virtual SvxAbstractInsRowColDlg* CreateSvxInsRowColDlg( Window* pParent, bool bCol, ULONG nHelpId ) = 0; + virtual SvxAbstractInsRowColDlg* CreateSvxInsRowColDlg( Window* pParent, bool bCol, const rtl::OString& sHelpId ) = 0; }; #endif diff --git a/svx/prj/d.lst b/svx/prj/d.lst index f8b71ea69440..fe15afbdf469 100644 --- a/svx/prj/d.lst +++ b/svx/prj/d.lst @@ -15,6 +15,7 @@ mkdir: %_DEST%\xml%_EXT%\uiconfig\global ..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res mkdir: %_DEST%\inc%_EXT%\svx +..\inc\svx\svxcommands.h %_DEST%\inc%_EXT%\svx\svxcommands.h ..\sdi\svx.sdi %_DEST%\inc%_EXT%\svx\svx.sdi ..\sdi\svxitems.sdi %_DEST%\inc%_EXT%\svx\svxitems.sdi ..\sdi\xoitems.sdi %_DEST%\inc%_EXT%\svx\xoitems.sdi diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 240ca9cbd4e1..a3b4c9a9ca21 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -6205,33 +6205,6 @@ SfxVoidItem PreviousAnnotation SID_PREVIOUS_POSTIT ] //-------------------------------------------------------------------------- -SfxVoidItem InsertApplet SID_INSERT_APPLET -(SfxStringItem Class FN_PARAM_1, - SfxStringItem ClassLocation FN_PARAM_2, - SfxStringItem Commands FN_PARAM_3) -[ - /* flags: */ - AutoUpdate = FALSE, - Cachable = Cachable, - FastCall = FALSE, - HasCoreId = FALSE, - HasDialog = TRUE, - ReadOnlyDoc = FALSE, - Toggle = FALSE, - Container = FALSE, - RecordAbsolute = FALSE, - RecordPerSet; - Asynchron; - - /* config: */ - AccelConfig = FALSE, - MenuConfig = FALSE, - StatusBarConfig = FALSE, - ToolBoxConfig = FALSE, - GroupId = GID_INSERT; -] - -//-------------------------------------------------------------------------- SfxUInt32Item InsertGalleryPic SID_GALLERY_FORMATS () [ @@ -15135,3 +15108,31 @@ SfxVoidItem InsertRowDialog SID_TABLE_INSERT_ROW_DLG ToolBoxConfig = FALSE, GroupId = GID_TABLE; ] +//-------------------------------------------------------------------------- +SfxVoidItem PrepareMailExport SID_MAIL_PREPAREEXPORT +() +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = FALSE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* status: */ + SlotType = SfxBoolItem + + /* config: */ + AccelConfig = FALSE, + MenuConfig = FALSE, + StatusBarConfig = FALSE, + ToolBoxConfig = FALSE, + GroupId = GID_EXPLORER; +] + diff --git a/svx/source/dialog/bmpmask.src b/svx/source/dialog/bmpmask.src index 445a46025dd0..a9cd2fe60b2f 100644 --- a/svx/source/dialog/bmpmask.src +++ b/svx/source/dialog/bmpmask.src @@ -37,7 +37,7 @@ // RID_SVXDLG_BMPMASK ---------------------------------------------------- DockingWindow RID_SVXDLG_BMPMASK { - HelpId = SID_BMPMASK ; + HelpId = CMD_SID_BMPMASK ; OutputSize = TRUE ; Hide = TRUE ; SVLook = TRUE ; @@ -78,6 +78,7 @@ DockingWindow RID_SVXDLG_BMPMASK CheckBox CBX_1 { + HelpID = "svx:CheckBox:RID_SVXDLG_BMPMASK:CBX_1"; Pos = MAP_APPFONT ( 12 , 50 ) ; Size = MAP_APPFONT ( 10 , 10 ) ; TabStop = TRUE ; @@ -92,6 +93,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; MetricField SP_1 { + HelpID = "svx:MetricField:RID_SVXDLG_BMPMASK:SP_1"; Border = TRUE ; Pos = MAP_APPFONT ( 58 , 48 ) ; Size = MAP_APPFONT ( 29 , 12 ) ; @@ -106,6 +108,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; ListBox LB_1 { + HelpID = "svx:ListBox:RID_SVXDLG_BMPMASK:LB_1"; Border = TRUE ; Pos = MAP_APPFONT ( 93 , 48 ) ; Size = MAP_APPFONT ( 64 , 75 ) ; @@ -118,6 +121,7 @@ DockingWindow RID_SVXDLG_BMPMASK CheckBox CBX_2 { + HelpID = "svx:CheckBox:RID_SVXDLG_BMPMASK:CBX_2"; Pos = MAP_APPFONT ( 12 , 65 ) ; Size = MAP_APPFONT ( 10 , 10 ) ; TabStop = TRUE ; @@ -132,6 +136,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; MetricField SP_2 { + HelpID = "svx:MetricField:RID_SVXDLG_BMPMASK:SP_2"; Border = TRUE ; Pos = MAP_APPFONT ( 58 , 63 ) ; Size = MAP_APPFONT ( 29 , 12 ) ; @@ -146,6 +151,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; ListBox LB_2 { + HelpID = "svx:ListBox:RID_SVXDLG_BMPMASK:LB_2"; Border = TRUE ; Pos = MAP_APPFONT ( 93 , 63 ) ; Size = MAP_APPFONT ( 64 , 75 ) ; @@ -158,6 +164,7 @@ DockingWindow RID_SVXDLG_BMPMASK CheckBox CBX_3 { + HelpID = "svx:CheckBox:RID_SVXDLG_BMPMASK:CBX_3"; Pos = MAP_APPFONT ( 12 , 80 ) ; Size = MAP_APPFONT ( 10 , 10 ) ; TabStop = TRUE ; @@ -172,6 +179,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; MetricField SP_3 { + HelpID = "svx:MetricField:RID_SVXDLG_BMPMASK:SP_3"; Border = TRUE ; Pos = MAP_APPFONT ( 58, 78 ) ; Size = MAP_APPFONT ( 29 , 12 ) ; @@ -186,6 +194,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; ListBox LB_3 { + HelpID = "svx:ListBox:RID_SVXDLG_BMPMASK:LB_3"; Border = TRUE ; Pos = MAP_APPFONT ( 93 , 78 ) ; Size = MAP_APPFONT ( 64 , 75 ) ; @@ -198,6 +207,7 @@ DockingWindow RID_SVXDLG_BMPMASK CheckBox CBX_4 { + HelpID = "svx:CheckBox:RID_SVXDLG_BMPMASK:CBX_4"; Pos = MAP_APPFONT ( 12 , 95 ) ; Size = MAP_APPFONT ( 10 , 10 ) ; TabStop = TRUE ; @@ -212,6 +222,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; MetricField SP_4 { + HelpID = "svx:MetricField:RID_SVXDLG_BMPMASK:SP_4"; Border = TRUE ; Pos = MAP_APPFONT ( 58 , 93 ) ; Size = MAP_APPFONT ( 29 , 12 ) ; @@ -226,6 +237,7 @@ DockingWindow RID_SVXDLG_BMPMASK }; ListBox LB_4 { + HelpID = "svx:ListBox:RID_SVXDLG_BMPMASK:LB_4"; Border = TRUE ; Pos = MAP_APPFONT ( 93 , 93 ) ; Size = MAP_APPFONT ( 64 , 75 ) ; @@ -236,6 +248,7 @@ DockingWindow RID_SVXDLG_BMPMASK CheckBox CBX_TRANS { + HelpID = "svx:CheckBox:RID_SVXDLG_BMPMASK:CBX_TRANS"; Pos = MAP_APPFONT ( 12 , 110 ) ; Size = MAP_APPFONT ( 71 , 10 ) ; TabStop = TRUE ; @@ -244,6 +257,7 @@ DockingWindow RID_SVXDLG_BMPMASK PushButton BTN_EXEC { + HelpID = "svx:PushButton:RID_SVXDLG_BMPMASK:BTN_EXEC"; Pos = MAP_APPFONT ( 93 , 6 ) ; Size = MAP_APPFONT ( 64 , 14 ) ; Text [ en-US ] = "~Replace" ; @@ -251,6 +265,7 @@ DockingWindow RID_SVXDLG_BMPMASK ListBox LB_TRANS { + HelpID = "svx:ListBox:RID_SVXDLG_BMPMASK:LB_TRANS"; Border = TRUE ; Pos = MAP_APPFONT ( 93 , 108 ) ; Size = MAP_APPFONT ( 64 , 75 ) ; diff --git a/svx/source/dialog/contdlg.src b/svx/source/dialog/contdlg.src index 1b1923c66eab..bf587b3b1fda 100644 --- a/svx/source/dialog/contdlg.src +++ b/svx/source/dialog/contdlg.src @@ -33,6 +33,7 @@ // RID_SVXDLG_CONTOUR ---------------------------------------------------- FloatingWindow RID_SVXDLG_CONTOUR { + HelpID = "svx:FloatingWindow:RID_SVXDLG_CONTOUR"; OutputSize = TRUE ; Hide = TRUE ; SVLook = TRUE ; @@ -176,6 +177,7 @@ FloatingWindow RID_SVXDLG_CONTOUR }; MetricField MTF_TOLERANCE { + HelpID = "svx:MetricField:RID_SVXDLG_CONTOUR:MTF_TOLERANCE"; Border = TRUE ; Pos = MAP_APPFONT ( 0 , 0 ) ; Size = MAP_APPFONT ( 28 , 12 ) ; diff --git a/svx/source/dialog/docrecovery.cxx b/svx/source/dialog/docrecovery.cxx index b4ee4dd2956f..1b77364b6c7e 100644 --- a/svx/source/dialog/docrecovery.cxx +++ b/svx/source/dialog/docrecovery.cxx @@ -1585,7 +1585,6 @@ void BrokenRecoveryDialog::impl_askForSavePath() { css::uno::Reference< css::ui::dialogs::XFolderPicker > xFolderPicker( m_pCore->getSMGR()->createInstance(SERVICENAME_FOLDERPICKER), css::uno::UNO_QUERY_THROW); -// svt::SetDialogHelpId( xFolderPicker, HID_OPTIONS_PATHS_SELECTFOLDER ); INetURLObject aURL(m_sSavePath, INET_PROT_FILE); xFolderPicker->setDisplayDirectory(aURL.GetMainURL(INetURLObject::NO_DECODE)); diff --git a/svx/source/dialog/docrecovery.hrc b/svx/source/dialog/docrecovery.hrc index 18148131f6aa..acf1a1631c6b 100644 --- a/svx/source/dialog/docrecovery.hrc +++ b/svx/source/dialog/docrecovery.hrc @@ -36,7 +36,7 @@ // TabDialog #define TABDLG_WIDTH 290 -#define TABDLG_HEIGHT 278 +#define TABDLG_HEIGHT 238 // TabPage CrashSave @@ -52,7 +52,7 @@ #define SAVE_WIDTH 290 -#define SAVE_HEIGHT 278 +#define SAVE_HEIGHT 238 #define SAVE_TITLEWINHEIGHT 36 #define SAVE_DESCRHEIGHT 48 #define SAVE_COL0 (RSC_SP_DLG_INNERBORDER_LEFT) diff --git a/svx/source/dialog/docrecovery.src b/svx/source/dialog/docrecovery.src index 7c1532b71b55..cf9cf6f0adcf 100644 --- a/svx/source/dialog/docrecovery.src +++ b/svx/source/dialog/docrecovery.src @@ -79,6 +79,7 @@ TabPage RID_SVXPAGE_DOCRECOVERY_SAVE }; ListBox LB_SAVE_FILELIST { + HelpID = "svx:ListBox:RID_SVXPAGE_DOCRECOVERY_SAVE:LB_SAVE_FILELIST"; Pos = MAP_APPFONT( SAVE_COL0 , SAVE_ROW4 ); Size = MAP_APPFONT( SAVE_CONTROLWIDTH, SAVE_FILELISTHEIGHT ); Border = TRUE; @@ -193,6 +194,7 @@ TabPage RID_SVXPAGE_DOCRECOVERY_RECOVER }; PushButton BTN_RECOV_NEXT { + HelpID = "svx:PushButton:RID_SVXPAGE_DOCRECOVERY_RECOVER:BTN_RECOV_NEXT"; Pos = MAP_APPFONT( RECOV_COL_C, RECOV_ROW9 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH*2, RSC_CD_PUSHBUTTON_HEIGHT ); Text[ en-US ] = "~Start Recovery >"; @@ -300,6 +302,7 @@ ModalDialog RID_SVX_MDLG_DOCRECOVERY_BROKEN }; ListBox LB_BROKEN_FILELIST { + HelpID = "svx:ListBox:RID_SVX_MDLG_DOCRECOVERY_BROKEN:LB_BROKEN_FILELIST"; Pos = MAP_APPFONT( BROKEN_COL0, BROKEN_ROW2 ); Size = MAP_APPFONT( BROKEN_CONTROLWIDTH, (BROKEN_ROW3-BROKEN_ROW2) ); Border = TRUE; @@ -313,12 +316,14 @@ ModalDialog RID_SVX_MDLG_DOCRECOVERY_BROKEN }; Edit ED_BROKEN_SAVEDIR { + HelpID = "svx:Edit:RID_SVX_MDLG_DOCRECOVERY_BROKEN:ED_BROKEN_SAVEDIR"; Pos = MAP_APPFONT( BROKEN_COL0, BROKEN_ROW5 + 1 ); // center to pushbutton Size = MAP_APPFONT( BROKEN_COL2 - BROKEN_COL0, RSC_CD_TEXTBOX_HEIGHT ); Border = TRUE; }; PushButton BTN_BROKEN_SAVEDIR { + HelpID = "svx:PushButton:RID_SVX_MDLG_DOCRECOVERY_BROKEN:BTN_BROKEN_SAVEDIR"; Pos = MAP_APPFONT( BROKEN_COL3, BROKEN_ROW5 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text [ en-US ] = "Chan~ge..."; @@ -379,6 +384,7 @@ TabPage RID_SVXPAGE_ERR_REP_WELCOME }; PushButton BTN_RECOV_PREV { + HelpID = "svx:PushButton:RID_SVXPAGE_ERR_REP_WELCOME:BTN_RECOV_PREV"; Pos = MAP_APPFONT( RECOV_COL_C, RECOV_ROW9 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text[ en-US ] = "< ~Back"; @@ -437,6 +443,7 @@ TabPage RID_SVXPAGE_ERR_REP_SEND }; Edit ED_ERRSEND_DOCTYPE { + HelpID = "svx:Edit:RID_SVXPAGE_ERR_REP_SEND:ED_ERRSEND_DOCTYPE"; Pos = MAP_APPFONT( ERRSEND_COL0, ERRSEND_ROW5 ); Size = MAP_APPFONT( ERRSEND_CONTROLWIDTH2, RSC_CD_TEXTBOX_HEIGHT ); Border = TRUE; @@ -449,6 +456,7 @@ TabPage RID_SVXPAGE_ERR_REP_SEND }; MultiLineEdit ML_ERRSEND_USING { + HelpID = "svx:MultiLineEdit:RID_SVXPAGE_ERR_REP_SEND:ML_ERRSEND_USING"; Pos = MAP_APPFONT( ERRSEND_COL0, ERRSEND_ROW8 ); Size = MAP_APPFONT( ERRSEND_CONTROLWIDTH2, (ERRSEND_ROW12-ERRSEND_ROW8-RSC_SP_CTRL_Y) ); VScroll = TRUE; @@ -457,18 +465,21 @@ TabPage RID_SVXPAGE_ERR_REP_SEND }; PushButton BTN_ERRSEND_SHOWREP { + HelpID = "svx:PushButton:RID_SVXPAGE_ERR_REP_SEND:BTN_ERRSEND_SHOWREP"; Pos = MAP_APPFONT( ERRSEND_COL3, ERRSEND_ROW8 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text[ en-US ] = "Show ~Report"; }; PushButton BTN_ERRSEND_OPT { + HelpID = "svx:PushButton:RID_SVXPAGE_ERR_REP_SEND:BTN_ERRSEND_OPT"; Pos = MAP_APPFONT( ERRSEND_COL3, ERRSEND_ROW10 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text[ en-US ] = "~Options..."; }; CheckBox CB_ERRSEND_CONTACT { + HelpID = "svx:CheckBox:RID_SVXPAGE_ERR_REP_SEND:CB_ERRSEND_CONTACT"; Pos = MAP_APPFONT( ERRSEND_COL0, ERRSEND_ROW12 ); Size = MAP_APPFONT( ERRSEND_CONTROLWIDTH2, RSC_CD_CHECKBOX_HEIGHT ); Check = FALSE; @@ -482,6 +493,7 @@ TabPage RID_SVXPAGE_ERR_REP_SEND }; Edit ED_ERRSEND_EMAILADDR { + HelpID = "svx:Edit:RID_SVXPAGE_ERR_REP_SEND:ED_ERRSEND_EMAILADDR"; Pos = MAP_APPFONT( ERRSEND_COL1, ERRSEND_ROW14 ); Size = MAP_APPFONT( ERRSEND_CONTROLWIDTH3, RSC_CD_TEXTBOX_HEIGHT ); Border = TRUE; @@ -493,6 +505,7 @@ TabPage RID_SVXPAGE_ERR_REP_SEND }; PushButton BTN_RECOV_PREV { + HelpID = "svx:PushButton:RID_SVXPAGE_ERR_REP_SEND:BTN_RECOV_PREV"; Pos = MAP_APPFONT( ERRSEND_COL5, ERRSEND_ROW16 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text[ en-US ] = "< ~Back"; @@ -530,6 +543,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_OPTIONS RadioButton BTN_ERROPT_SYSTEM { + HelpID = "svx:RadioButton:RID_SVX_MDLG_ERR_REP_OPTIONS:BTN_ERROPT_SYSTEM"; Pos = MAP_APPFONT( ERROPT_COLB, ERROPT_ROW1 ); Size = MAP_APPFONT( ERROPT_COLF - ERROPT_COLB, RSC_CD_RADIOBUTTON_HEIGHT ); Text[ en-US ] = "Use ~system settings"; @@ -537,6 +551,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_OPTIONS RadioButton BTN_ERROPT_DIRECT { + HelpID = "svx:RadioButton:RID_SVX_MDLG_ERR_REP_OPTIONS:BTN_ERROPT_DIRECT"; Pos = MAP_APPFONT( ERROPT_COLB, ERROPT_ROW2 ); Size = MAP_APPFONT( ERROPT_COLF - ERROPT_COLB, RSC_CD_RADIOBUTTON_HEIGHT ); Text[ en-US ] = "Use ~direct connection to the Internet"; @@ -544,6 +559,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_OPTIONS RadioButton BTN_ERROPT_MANUAL { + HelpID = "svx:RadioButton:RID_SVX_MDLG_ERR_REP_OPTIONS:BTN_ERROPT_MANUAL"; Pos = MAP_APPFONT( ERROPT_COLB, ERROPT_ROW3 ); Size = MAP_APPFONT( ERROPT_COLF - ERROPT_COLB, RSC_CD_RADIOBUTTON_HEIGHT ); Text[ en-US ] = "Use ~manual settings"; @@ -558,6 +574,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_OPTIONS Edit ED_ERROPT_PROXYSERVER { + HelpID = "svx:Edit:RID_SVX_MDLG_ERR_REP_OPTIONS:ED_ERROPT_PROXYSERVER"; Pos = MAP_APPFONT( ERROPT_COLC, ERROPT_ROW5 ); Size = MAP_APPFONT( ERROPT_SERVER_WIDTH, RSC_CD_TEXTBOX_HEIGHT ); Border = TRUE; @@ -572,6 +589,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_OPTIONS Edit ED_ERROPT_PROXYPORT { + HelpID = "svx:Edit:RID_SVX_MDLG_ERR_REP_OPTIONS:ED_ERROPT_PROXYPORT"; Pos = MAP_APPFONT( ERROPT_COLC + ERROPT_SERVER_WIDTH + RSC_SP_CTRL_GROUP_X, ERROPT_ROW5 ); Size = MAP_APPFONT( ERROPT_PORT_WIDTH, RSC_CD_TEXTBOX_HEIGHT ); Border = TRUE; @@ -618,6 +636,7 @@ ModalDialog RID_SVX_MDLG_ERR_REP_PREVIEW MultiLineEdit ML_ERRPREVIEW_CONTENT { + HelpID = "svx:MultiLineEdit:RID_SVX_MDLG_ERR_REP_PREVIEW:ML_ERRPREVIEW_CONTENT"; Pos = MAP_APPFONT( ERRPREVIEW_COLA, ERRPREVIEW_ROW0 ); Size = MAP_APPFONT( ERRPREVIEW_COLC - ERRPREVIEW_COLA, ERRPREVIEW_ROW1 - ERRPREVIEW_ROW0 ); VScroll = TRUE; diff --git a/svx/source/dialog/fntctrl.cxx b/svx/source/dialog/fntctrl.cxx index 27b01dacec7e..e8088e53282f 100644 --- a/svx/source/dialog/fntctrl.cxx +++ b/svx/source/dialog/fntctrl.cxx @@ -212,10 +212,10 @@ inline BOOL FontPrevWin_Impl::Is100PercentFontWidthValid() const void FontPrevWin_Impl::_CheckScript() { aScriptText = aText; - USHORT nCnt = aScriptChg.Count(); + size_t nCnt = aScriptChg.size(); if( nCnt ) { - aScriptChg.Remove( 0, nCnt ); + aScriptChg.clear(); aScriptType.Remove( 0, nCnt ); aTextWidth.Remove( 0, nCnt ); nCnt = 0; @@ -250,16 +250,16 @@ void FontPrevWin_Impl::_CheckScript() if (nType == U_NON_SPACING_MARK || nType == U_ENCLOSING_MARK || nType == U_COMBINING_SPACING_MARK ) { - aScriptChg.Insert( nChg - 1, nCnt ); + aScriptChg.push_back( nChg - 1 ); } else { - aScriptChg.Insert( nChg, nCnt ); + aScriptChg.push_back( nChg ); } } else { - aScriptChg.Insert( nChg, nCnt ); + aScriptChg.push_back( nChg ); } aScriptType.Insert( nScript, nCnt ); aTextWidth.Insert( ULONG(0), nCnt++ ); @@ -289,7 +289,7 @@ Size FontPrevWin_Impl::CalcTextSize( OutputDevice* pWin, OutputDevice* _pPrinter USHORT nIdx = 0; xub_StrLen nStart = 0; xub_StrLen nEnd; - USHORT nCnt = aScriptChg.Count(); + size_t nCnt = aScriptChg.size(); if( nCnt ) { nEnd = aScriptChg[ nIdx ]; @@ -368,7 +368,7 @@ void FontPrevWin_Impl::DrawPrev( OutputDevice* pWin, Printer* _pPrinter, USHORT nIdx = 0; xub_StrLen nStart = 0; xub_StrLen nEnd; - USHORT nCnt = aScriptChg.Count(); + size_t nCnt = aScriptChg.size(); if( nCnt ) { nEnd = aScriptChg[ nIdx ]; diff --git a/svx/source/dialog/fontwork.src b/svx/source/dialog/fontwork.src index b0c63d9313d4..92d1be8abc97 100644 --- a/svx/source/dialog/fontwork.src +++ b/svx/source/dialog/fontwork.src @@ -34,7 +34,7 @@ // RID_SVXDLG_FONTWORK --------------------------------------------------- DockingWindow RID_SVXDLG_FONTWORK { - HelpId = SID_FONTWORK ; + HelpId = CMD_SID_FONTWORK ; OutputSize = TRUE ; SVLook = TRUE ; Hide = TRUE ; @@ -164,6 +164,7 @@ DockingWindow RID_SVXDLG_FONTWORK }; MetricField MTR_FLD_DISTANCE { + HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_DISTANCE"; Border = TRUE ; Pos = MAP_APPFONT ( 29 , 85 ) ; Size = MAP_APPFONT ( 48 , 12 ) ; @@ -188,6 +189,7 @@ DockingWindow RID_SVXDLG_FONTWORK }; MetricField MTR_FLD_TEXTSTART { + HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_TEXTSTART"; Border = TRUE ; Pos = MAP_APPFONT ( 29 , 100 ) ; Size = MAP_APPFONT ( 48 , 12 ) ; @@ -261,6 +263,7 @@ DockingWindow RID_SVXDLG_FONTWORK }; MetricField MTR_FLD_SHADOW_X { + HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_SHADOW_X"; Border = TRUE ; Pos = MAP_APPFONT ( 29 , 144 ) ; Size = MAP_APPFONT ( 48 , 12 ) ; @@ -285,6 +288,7 @@ DockingWindow RID_SVXDLG_FONTWORK }; MetricField MTR_FLD_SHADOW_Y { + HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_SHADOW_Y"; Border = TRUE ; Pos = MAP_APPFONT ( 29 , 159 ) ; Size = MAP_APPFONT ( 48 , 12 ) ; @@ -302,6 +306,7 @@ DockingWindow RID_SVXDLG_FONTWORK }; ListBox CLB_SHADOW_COLOR { + HelpID = "svx:ListBox:RID_SVXDLG_FONTWORK:CLB_SHADOW_COLOR"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 174 ) ; Size = MAP_APPFONT ( 71 , 60 ) ; diff --git a/svx/source/dialog/hdft.src b/svx/source/dialog/hdft.src index e93d18ff351f..1cd402611dc8 100644 --- a/svx/source/dialog/hdft.src +++ b/svx/source/dialog/hdft.src @@ -46,12 +46,14 @@ TabPage RID_SVXPAGE_HEADER Size = MAP_APPFONT ( 260 , 185 ) ; CheckBox CB_TURNON { + HelpID = "svx:CheckBox:RID_SVXPAGE_HEADER:CB_TURNON"; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "Hea~der on" ; }; CheckBox CB_SHARED { + HelpID = "svx:CheckBox:RID_SVXPAGE_HEADER:CB_SHARED"; Pos = MAP_APPFONT ( 12 , 30 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "Same ~content left/right" ; @@ -65,6 +67,7 @@ TabPage RID_SVXPAGE_HEADER }; MetricField ED_LMARGIN { + HelpID = "svx:MetricField:RID_SVXPAGE_HEADER:ED_LMARGIN"; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 46 ) ; Size = MAP_APPFONT ( 40 , 12 ) ; @@ -87,6 +90,7 @@ TabPage RID_SVXPAGE_HEADER }; MetricField ED_RMARGIN { + HelpID = "svx:MetricField:RID_SVXPAGE_HEADER:ED_RMARGIN"; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 62 ) ; Size = MAP_APPFONT ( 40 , 12 ) ; @@ -109,6 +113,7 @@ TabPage RID_SVXPAGE_HEADER }; MetricField ED_DIST { + HelpID = "svx:MetricField:RID_SVXPAGE_HEADER:ED_DIST"; Disable = TRUE ; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 80 ) ; @@ -124,6 +129,7 @@ TabPage RID_SVXPAGE_HEADER }; CheckBox CB_DYNSPACING { + HelpID = "svx:CheckBox:RID_SVXPAGE_HEADER:CB_DYNSPACING"; Pos = MAP_APPFONT ( 12 , 96 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Hide = TRUE; @@ -137,6 +143,7 @@ TabPage RID_SVXPAGE_HEADER }; MetricField ED_HEIGHT { + HelpID = "svx:MetricField:RID_SVXPAGE_HEADER:ED_HEIGHT"; Disable = TRUE ; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 96 ) ; @@ -154,6 +161,7 @@ TabPage RID_SVXPAGE_HEADER }; CheckBox CB_HEIGHT_DYN { + HelpID = "svx:CheckBox:RID_SVXPAGE_HEADER:CB_HEIGHT_DYN"; Pos = MAP_APPFONT ( 12 , 112 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "~AutoFit height" ; @@ -171,6 +179,7 @@ TabPage RID_SVXPAGE_HEADER }; PushButton BTN_EXTRAS { + HelpID = "svx:PushButton:RID_SVXPAGE_HEADER:BTN_EXTRAS"; Pos = MAP_APPFONT ( 12 , 130 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~More..." ; @@ -185,12 +194,14 @@ TabPage RID_SVXPAGE_FOOTER Size = MAP_APPFONT ( 260 , 185 ) ; CheckBox CB_TURNON { + HelpID = "svx:CheckBox:RID_SVXPAGE_FOOTER:CB_TURNON"; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "~Footer on" ; }; CheckBox CB_SHARED { + HelpID = "svx:CheckBox:RID_SVXPAGE_FOOTER:CB_SHARED"; Pos = MAP_APPFONT ( 12 , 30 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "Same ~content left/right" ; @@ -204,6 +215,7 @@ TabPage RID_SVXPAGE_FOOTER }; MetricField ED_LMARGIN { + HelpID = "svx:MetricField:RID_SVXPAGE_FOOTER:ED_LMARGIN"; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 46 ) ; Size = MAP_APPFONT ( 40 , 12 ) ; @@ -226,6 +238,7 @@ TabPage RID_SVXPAGE_FOOTER }; MetricField ED_RMARGIN { + HelpID = "svx:MetricField:RID_SVXPAGE_FOOTER:ED_RMARGIN"; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 62 ) ; Size = MAP_APPFONT ( 40 , 12 ) ; @@ -247,6 +260,7 @@ TabPage RID_SVXPAGE_FOOTER }; MetricField ED_DIST { + HelpID = "svx:MetricField:RID_SVXPAGE_FOOTER:ED_DIST"; Disable = TRUE ; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 80 ) ; @@ -262,6 +276,7 @@ TabPage RID_SVXPAGE_FOOTER }; CheckBox CB_DYNSPACING { + HelpID = "svx:CheckBox:RID_SVXPAGE_FOOTER:CB_DYNSPACING"; Pos = MAP_APPFONT ( 12 , 96 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Hide = TRUE; @@ -276,6 +291,7 @@ TabPage RID_SVXPAGE_FOOTER }; MetricField ED_HEIGHT { + HelpID = "svx:MetricField:RID_SVXPAGE_FOOTER:ED_HEIGHT"; Disable = TRUE ; Border = TRUE ; Pos = MAP_APPFONT ( 124 , 96 ) ; @@ -293,6 +309,7 @@ TabPage RID_SVXPAGE_FOOTER }; CheckBox CB_HEIGHT_DYN { + HelpID = "svx:CheckBox:RID_SVXPAGE_FOOTER:CB_HEIGHT_DYN"; Pos = MAP_APPFONT ( 12 , 112 ) ; Size = MAP_APPFONT ( 152 , 10 ) ; Text [ en-US ] = "~AutoFit height" ; @@ -311,6 +328,7 @@ TabPage RID_SVXPAGE_FOOTER }; PushButton BTN_EXTRAS { + HelpID = "svx:PushButton:RID_SVXPAGE_FOOTER:BTN_EXTRAS"; Pos = MAP_APPFONT ( 12 , 130 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~More..." ; diff --git a/svx/source/dialog/hyprlink.src b/svx/source/dialog/hyprlink.src index abefc7832d8b..c59a2f8eb52a 100644 --- a/svx/source/dialog/hyprlink.src +++ b/svx/source/dialog/hyprlink.src @@ -98,7 +98,7 @@ ToolBox RID_SVXDLG_HYPERLINK }; ToolBoxItem { - HelpID = SID_HYPERLINK_SETLINK ; + HelpID = CMD_SID_HYPERLINK_SETLINK ; Identifier = BTN_LINK ; Disable = TRUE ; DropDown = TRUE ; @@ -106,7 +106,7 @@ ToolBox RID_SVXDLG_HYPERLINK }; ToolBoxItem { - HelpID = SID_CREATELINK ; + HelpID = CMD_SID_CREATELINK ; Identifier = BTN_INSERT_BOOKMARK ; Disable = TRUE ; Hide = TRUE; diff --git a/svx/source/dialog/imapdlg.src b/svx/source/dialog/imapdlg.src index a61a9e34fa5e..d691f5443b5a 100644 --- a/svx/source/dialog/imapdlg.src +++ b/svx/source/dialog/imapdlg.src @@ -32,6 +32,7 @@ // RID_SVXDLG_IMAP ---------------------------------------------------- ModelessDialog RID_SVXDLG_IMAP { + HelpID = "svx:ModelessDialog:RID_SVXDLG_IMAP"; OutputSize = TRUE ; Hide = TRUE ; SVLook = TRUE ; @@ -193,6 +194,7 @@ ModelessDialog RID_SVXDLG_IMAP }; ComboBox CBB_URL { + HelpID = "svx:ComboBox:RID_SVXDLG_IMAP:CBB_URL"; Pos = MAP_APPFONT ( 39 , 23 ) ; Size = MAP_APPFONT ( 225 , 69 ) ; TabStop = TRUE ; @@ -208,6 +210,7 @@ ModelessDialog RID_SVXDLG_IMAP }; Edit EDT_TEXT { + HelpID = "svx:Edit:RID_SVXDLG_IMAP:EDT_TEXT"; Border = TRUE ; SVLook = TRUE ; Pos = MAP_APPFONT ( 39 , 41 ) ; @@ -226,6 +229,7 @@ ModelessDialog RID_SVXDLG_IMAP // nur temporaer ComboBox RID_SVXCTL_CBB_TARGET { + HelpID = "svx:ComboBox:RID_SVXDLG_IMAP:RID_SVXCTL_CBB_TARGET"; Border = TRUE ; Sort = TRUE ; Pos = MAP_APPFONT ( 213 , 41 ) ; diff --git a/svx/source/dialog/optgrid.src b/svx/source/dialog/optgrid.src index 8db8d0b54643..2bc7b430f807 100644 --- a/svx/source/dialog/optgrid.src +++ b/svx/source/dialog/optgrid.src @@ -45,6 +45,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_USE_GRIDSNAP { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_USE_GRIDSNAP"; Pos = MAP_APPFONT ( 12 , 14 ) ; Size = MAP_APPFONT ( 204 , 10 ) ; TabStop = TRUE ; @@ -52,6 +53,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_GRID_VISIBLE { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_GRID_VISIBLE"; Pos = MAP_APPFONT ( 12 , 27 ) ; Size = MAP_APPFONT ( 204 , 10 ) ; TabStop = TRUE ; @@ -77,6 +79,7 @@ TabPage RID_SVXPAGE_GRID }; MetricField MTR_FLD_DRAW_X { + HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_DRAW_X"; Border = TRUE ; Pos = MAP_APPFONT ( 75 , 54 ) ; Size = MAP_APPFONT ( 45 , 12 ) ; @@ -94,6 +97,7 @@ TabPage RID_SVXPAGE_GRID }; MetricField MTR_FLD_DRAW_Y { + HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_DRAW_Y"; Border = TRUE ; Pos = MAP_APPFONT ( 75 , 69 ) ; Size = MAP_APPFONT ( 45 , 12 ) ; @@ -129,6 +133,7 @@ TabPage RID_SVXPAGE_GRID }; NumericField NUM_FLD_DIVISION_X { + HelpID = "svx:NumericField:RID_SVXPAGE_GRID:NUM_FLD_DIVISION_X"; Border = TRUE ; Pos = MAP_APPFONT ( 195 , 54 ) ; Size = MAP_APPFONT ( 25 , 12 ) ; @@ -148,6 +153,7 @@ TabPage RID_SVXPAGE_GRID }; NumericField NUM_FLD_DIVISION_Y { + HelpID = "svx:NumericField:RID_SVXPAGE_GRID:NUM_FLD_DIVISION_Y"; Border = TRUE ; Pos = MAP_APPFONT ( 195 , 69 ) ; Size = MAP_APPFONT ( 25 , 12 ) ; @@ -167,6 +173,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_SYNCHRONIZE { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SYNCHRONIZE"; Pos = MAP_APPFONT ( 12 , 84 ) ; Size = MAP_APPFONT ( 127 , 10 ) ; TabStop = TRUE ; @@ -182,6 +189,7 @@ TabPage RID_SVXPAGE_GRID CheckBox CBX_SNAP_HELPLINES { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_HELPLINES"; Pos = MAP_APPFONT ( 12 , 111 ) ; Size = MAP_APPFONT ( 106 , 10 ) ; Hide = TRUE; @@ -190,6 +198,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_SNAP_BORDER { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_BORDER"; Hide = TRUE; TabStop = TRUE ; Pos = MAP_APPFONT ( 12 , 125 ) ; @@ -198,6 +207,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_SNAP_FRAME { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_FRAME"; Pos = MAP_APPFONT ( 12 , 139 ) ; Size = MAP_APPFONT ( 106 , 10 ) ; Hide = TRUE; @@ -206,6 +216,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_SNAP_POINTS { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_POINTS"; Pos = MAP_APPFONT ( 12 , 153 ) ; Size = MAP_APPFONT ( 106 , 10 ) ; Hide = TRUE; @@ -221,6 +232,7 @@ TabPage RID_SVXPAGE_GRID }; MetricField MTR_FLD_SNAP_AREA { + HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_SNAP_AREA"; Border = TRUE ; Pos = MAP_APPFONT ( 83 , 167 ) ; Size = MAP_APPFONT ( 35 , 12 ) ; @@ -252,6 +264,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_ORTHO { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_ORTHO"; Pos = MAP_APPFONT ( 136 , 111 ) ; Size = MAP_APPFONT ( 112 , 10 ) ; Hide = TRUE; @@ -260,6 +273,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_BIGORTHO { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_BIGORTHO"; Pos = MAP_APPFONT ( 136 , 125 ) ; Size = MAP_APPFONT ( 112 , 10 ) ; Hide = TRUE; @@ -268,6 +282,7 @@ TabPage RID_SVXPAGE_GRID }; CheckBox CBX_ROTATE { + HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_ROTATE"; Pos = MAP_APPFONT ( 136 , 139 ) ; // 136, 111 Size = MAP_APPFONT ( 55 , 10 ) ; @@ -277,6 +292,7 @@ TabPage RID_SVXPAGE_GRID }; MetricField MTR_FLD_ANGLE { + HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_ANGLE"; Border = TRUE ; Pos = MAP_APPFONT ( 194 , 137 ) ; // 190, 111 @@ -302,6 +318,7 @@ TabPage RID_SVXPAGE_GRID }; MetricField MTR_FLD_BEZ_ANGLE { + HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_BEZ_ANGLE"; Border = TRUE ; Pos = MAP_APPFONT ( 194 , 154 ) ; Size = MAP_APPFONT ( 54 , 12 ) ; diff --git a/svx/source/dialog/passwd.src b/svx/source/dialog/passwd.src index 256628a2caca..821ede7c9357 100644 --- a/svx/source/dialog/passwd.src +++ b/svx/source/dialog/passwd.src @@ -46,6 +46,7 @@ ModalDialog RID_SVXDLG_PASSWORD }; Edit ED_OLD_PASSWD { + HelpID = "svx:Edit:RID_SVXDLG_PASSWORD:ED_OLD_PASSWD"; Border = TRUE ; Pos = MAP_APPFONT ( 71 , 14 ) ; Size = MAP_APPFONT ( 71 , 12 ) ; @@ -65,6 +66,7 @@ ModalDialog RID_SVXDLG_PASSWORD }; Edit ED_NEW_PASSWD { + HelpID = "svx:Edit:RID_SVXDLG_PASSWORD:ED_NEW_PASSWD"; Border = TRUE ; Pos = MAP_APPFONT ( 71 , 43 ) ; Size = MAP_APPFONT ( 71 , 12 ) ; @@ -78,6 +80,7 @@ ModalDialog RID_SVXDLG_PASSWORD }; Edit ED_REPEAT_PASSWD { + HelpID = "svx:Edit:RID_SVXDLG_PASSWORD:ED_REPEAT_PASSWD"; Border = TRUE ; Pos = MAP_APPFONT ( 71 , 59 ) ; Size = MAP_APPFONT ( 71 , 12 ) ; diff --git a/svx/source/dialog/pfiledlg.cxx b/svx/source/dialog/pfiledlg.cxx index aa6e0b835e2c..af8d283185a6 100644 --- a/svx/source/dialog/pfiledlg.cxx +++ b/svx/source/dialog/pfiledlg.cxx @@ -274,11 +274,6 @@ bool SvxPluginFileDlg::IsAvailable (sal_uInt16 nKind) return bFound; } -void SvxPluginFileDlg::SetDialogHelpId( const sal_Int32 _nHelpId ) -{ - maFileDlg.SetDialogHelpId( _nHelpId ); -} - void SvxPluginFileDlg::SetContext( sfx2::FileDialogHelper::Context _eNewContext ) { maFileDlg.SetContext( _eNewContext ); diff --git a/svx/source/dialog/rubydialog.src b/svx/source/dialog/rubydialog.src index 6b83f01fc2ee..e10d4d0e57e2 100644 --- a/svx/source/dialog/rubydialog.src +++ b/svx/source/dialog/rubydialog.src @@ -42,6 +42,7 @@ ModelessDialog RID_SVXDLG_RUBY Closeable = TRUE ; CheckBox CB_AUTO_DETECT { + HelpID = "svx:CheckBox:RID_SVXDLG_RUBY:CB_AUTO_DETECT"; Pos = MAP_APPFONT ( 6, 6 ) ; Size = MAP_APPFONT ( 186 , 12 ) ; Text [ en-US ] = "Automatic detection"; @@ -60,6 +61,7 @@ ModelessDialog RID_SVXDLG_RUBY }; Edit ED_LEFT_1 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_LEFT_1"; Pos = MAP_APPFONT ( 6 , 30 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Hide = False; @@ -67,42 +69,49 @@ ModelessDialog RID_SVXDLG_RUBY }; Edit ED_RIGHT_1 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_RIGHT_1"; Pos = MAP_APPFONT ( 109 , 30 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_LEFT_2 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_LEFT_2"; Pos = MAP_APPFONT ( 6 , 42) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_RIGHT_2 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_RIGHT_2"; Pos = MAP_APPFONT ( 109 , 42 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_LEFT_3 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_LEFT_3"; Pos = MAP_APPFONT ( 6 , 54 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_RIGHT_3 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_RIGHT_3"; Pos = MAP_APPFONT ( 109 , 54 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_LEFT_4 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_LEFT_4"; Pos = MAP_APPFONT ( 6 , 66 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; }; Edit ED_RIGHT_4 { + HelpID = "svx:Edit:RID_SVXDLG_RUBY:ED_RIGHT_4"; Pos = MAP_APPFONT ( 109 , 66 ) ; Size = MAP_APPFONT ( 102 , 12 ) ; Border = TRUE; @@ -122,6 +131,7 @@ ModelessDialog RID_SVXDLG_RUBY }; ListBox LB_ADJUST { + HelpID = "svx:ListBox:RID_SVXDLG_RUBY:LB_ADJUST"; Pos = MAP_APPFONT ( 6 , 93) ; Size = MAP_APPFONT ( 35 , 60 ) ; DropDown = TRUE; @@ -143,6 +153,7 @@ ModelessDialog RID_SVXDLG_RUBY }; ListBox LB_POSITION { + HelpID = "svx:ListBox:RID_SVXDLG_RUBY:LB_POSITION"; Pos = MAP_APPFONT ( 43 , 93) ; Size = MAP_APPFONT ( 35 , 60 ) ; DropDown = TRUE; @@ -161,6 +172,7 @@ ModelessDialog RID_SVXDLG_RUBY }; ListBox LB_CHAR_STYLE { + HelpID = "svx:ListBox:RID_SVXDLG_RUBY:LB_CHAR_STYLE"; Pos = MAP_APPFONT ( 80 , 93) ; Size = MAP_APPFONT ( 89 , 60 ) ; DropDown = TRUE; @@ -169,6 +181,7 @@ ModelessDialog RID_SVXDLG_RUBY }; PushButton PB_STYLIST { + HelpID = "svx:PushButton:RID_SVXDLG_RUBY:PB_STYLIST"; Pos = MAP_APPFONT ( 171 , 92 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "Styles"; @@ -194,6 +207,7 @@ ModelessDialog RID_SVXDLG_RUBY }; PushButton PB_CLOSE { + HelpID = "svx:PushButton:RID_SVXDLG_RUBY:PB_CLOSE"; Pos = MAP_APPFONT ( 118, 175 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Close"; diff --git a/svx/source/dialog/simptabl.cxx b/svx/source/dialog/simptabl.cxx index ab5533513000..0545161e858d 100644 --- a/svx/source/dialog/simptabl.cxx +++ b/svx/source/dialog/simptabl.cxx @@ -152,7 +152,6 @@ SvxSimpleTable::SvxSimpleTable( Window* pParent,const ResId& rResId): InitHeaderBar( &aHeaderBar ); aHeaderBar.Show(); - SetWindowBits(WB_CLIPCHILDREN | WB_HSCROLL); SvHeaderTabListBox::Show(); } diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx index 01dc2c0591cc..3ccba1f910ae 100644 --- a/svx/source/dialog/srchdlg.cxx +++ b/svx/source/dialog/srchdlg.cxx @@ -427,7 +427,7 @@ void lcl_MoveDown( Window& rWindow, sal_Int32 nOffset ) void SvxSearchDialog::Construct_Impl() { #if ENABLE_LAYOUT - SetHelpId (SID_SEARCH_DLG); + SetHelpId (".uno:SearchDialog"); #endif /* ENABLE_LAYOUT */ // temporary to avoid incompatibility diff --git a/svx/source/dialog/srchdlg.src b/svx/source/dialog/srchdlg.src index 52c91d17587d..f82d4f06cb88 100644 --- a/svx/source/dialog/srchdlg.src +++ b/svx/source/dialog/srchdlg.src @@ -29,6 +29,7 @@ #include <svx/dialogs.hrc> #include "srchdlg.hrc" +#include <sfx2/sfxcommands.h> #define MASKCOLOR MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; } ; @@ -51,7 +52,7 @@ String RID_SVXSTR_REPLACE ModelessDialog RID_SVXDLG_SEARCH { - HelpId = SID_SEARCH_DLG ; + HelpId = CMD_SID_SEARCH_DLG ; OutputSize = TRUE ; Hide = TRUE ; SvLook = TRUE ; @@ -66,6 +67,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; ComboBox ED_SEARCH { + HelpID = "svx:ComboBox:RID_SVXDLG_SEARCH:ED_SEARCH"; Pos = MAP_APPFONT ( 6 , 18 ) ; Size = MAP_APPFONT ( 132 , 98 ) ; TabStop = TRUE ; @@ -73,6 +75,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; ListBox LB_SEARCH { + HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_SEARCH"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 18 ) ; Size = MAP_APPFONT ( 132 , 98 ) ; @@ -103,6 +106,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; ComboBox ED_REPLACE { + HelpID = "svx:ComboBox:RID_SVXDLG_SEARCH:ED_REPLACE"; Pos = MAP_APPFONT ( 6 , 65 ) ; Size = MAP_APPFONT ( 132 , 98 ) ; TabStop = TRUE ; @@ -110,6 +114,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; ListBox LB_REPLACE { + HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_REPLACE"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 65 ) ; Size = MAP_APPFONT ( 132 , 98 ) ; @@ -134,6 +139,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_SEARCH { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH"; Pos = MAP_APPFONT ( 144 , 9 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Find" ; @@ -142,6 +148,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_SEARCH_ALL { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH_ALL"; Pos = MAP_APPFONT ( 144 , 26 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "Find ~All" ; @@ -154,6 +161,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_REPLACE { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE"; Pos = MAP_APPFONT ( 144 , 56 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Replace" ; @@ -161,6 +169,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_REPLACE_ALL { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE_ALL"; Pos = MAP_APPFONT ( 144 , 73 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "Replace A~ll" ; @@ -174,6 +183,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_COMPONENT_1 { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_COMPONENT_1"; Pos = MAP_APPFONT ( 144 , 103 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -181,6 +191,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_COMPONENT_2 { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_COMPONENT_2"; Pos = MAP_APPFONT ( 144 , 120 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -188,6 +199,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_MATCH_CASE { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE"; Pos = MAP_APPFONT ( 12 , 101 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; TabStop = TRUE ; @@ -195,6 +207,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_WHOLE_WORDS { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS"; Pos = MAP_APPFONT ( 12 , 114 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "Whole wor~ds only" ; @@ -207,6 +220,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; MoreButton BTN_MORE { + HelpID = "svx:MoreButton:RID_SVXDLG_SEARCH:BTN_MORE"; Pos = MAP_APPFONT ( 6 , 135 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -235,6 +249,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_SELECTIONS { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_SELECTIONS"; Pos = MAP_APPFONT ( 12 , 163 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "C~urrent selection only" ; @@ -243,6 +258,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_BACKWARDS { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_BACKWARDS"; Pos = MAP_APPFONT ( 12 , 176 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "Bac~kwards" ; @@ -251,6 +267,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_REGEXP { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_REGEXP"; Pos = MAP_APPFONT ( 12 , 189 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "Regular e~xpressions" ; @@ -259,6 +276,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_SIMILARITY { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_SIMILARITY"; Pos = MAP_APPFONT ( 12 , 204 ) ; Size = MAP_APPFONT ( 109 , 10 ) ; Text [ en-US ] = "S~imilarity search" ; @@ -267,6 +285,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton PB_SIMILARITY { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:PB_SIMILARITY"; Pos = MAP_APPFONT ( 124 , 202 ) ; Size = MAP_APPFONT ( 14 , 14 ) ; Text = "~..." ; @@ -275,6 +294,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_LAYOUTS { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_LAYOUTS"; Pos = MAP_APPFONT ( 12 , 219 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "Search for St~yles" ; @@ -283,6 +303,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_NOTES { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_NOTES"; Pos = MAP_APPFONT ( 12 , 232 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; TabStop = TRUE ; @@ -290,6 +311,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_JAP_MATCH_FULL_HALF_WIDTH { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_JAP_MATCH_FULL_HALF_WIDTH"; Pos = MAP_APPFONT ( 12 , 247 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; TabStop = TRUE ; @@ -298,6 +320,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_JAP_SOUNDS_LIKE { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_JAP_SOUNDS_LIKE"; Pos = MAP_APPFONT ( 12 , 260 ) ; Size = MAP_APPFONT ( 109 , 10 ) ; TabStop = TRUE ; @@ -306,6 +329,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton PB_JAP_OPTIONS { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:PB_JAP_OPTIONS"; Pos = MAP_APPFONT ( 124 , 258 ) ; Size = MAP_APPFONT ( 14 , 14 ) ; Text = "..." ; @@ -314,6 +338,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_ATTRIBUTE { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_ATTRIBUTE"; Pos = MAP_APPFONT ( 144 , 163 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "Attri~butes..." ; @@ -322,6 +347,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_FORMAT { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_FORMAT"; Pos = MAP_APPFONT ( 144 , 180 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "For~mat..." ; @@ -330,6 +356,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; PushButton BTN_NOFORMAT { + HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_NOFORMAT"; Pos = MAP_APPFONT ( 144 , 197 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~No Format" ; @@ -351,6 +378,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; ListBox LB_CALC_SEARCHIN { + HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_CALC_SEARCHIN"; Border = TRUE ; Pos = MAP_APPFONT ( 75 , 283 ) ; Size = MAP_APPFONT ( 63 , 48 ) ; @@ -373,6 +401,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; RadioButton RB_CALC_ROWS { + HelpID = "svx:RadioButton:RID_SVXDLG_SEARCH:RB_CALC_ROWS"; Pos = MAP_APPFONT ( 75 , 300 ) ; Size = MAP_APPFONT ( 63 , 10 ) ; Text [ en-US ] = "Ro~ws" ; @@ -380,6 +409,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; RadioButton RB_CALC_COLUMNS { + HelpID = "svx:RadioButton:RID_SVXDLG_SEARCH:RB_CALC_COLUMNS"; Pos = MAP_APPFONT ( 75 , 313 ) ; Size = MAP_APPFONT ( 63 , 10 ) ; Text [ en-US ] = "Colu~mns" ; @@ -387,6 +417,7 @@ ModelessDialog RID_SVXDLG_SEARCH }; CheckBox CB_ALL_SHEETS { + HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_ALL_SHEETS"; Pos = MAP_APPFONT ( 12 , 326 ) ; Size = MAP_APPFONT ( 126 , 10 ) ; Text [ en-US ] = "Search in all sheets" ; diff --git a/svx/source/engine3d/float3d.src b/svx/source/engine3d/float3d.src index b3e8992f4338..1947fead5556 100644 --- a/svx/source/engine3d/float3d.src +++ b/svx/source/engine3d/float3d.src @@ -27,6 +27,8 @@ #include <svx/dialogs.hrc> #include "float3d.hrc" +#include <svx/svxcommands.h> + #define WIDTH 158 #define HEIGHT 209 #define BORDER 3 @@ -64,7 +66,7 @@ DockingWindow RID_SVXFLOAT_3D { - HelpID = SID_3D_WIN ; + HelpID = CMD_SID_3D_WIN ; Border = TRUE ; Hide = TRUE ; SVLook = TRUE ; @@ -81,6 +83,7 @@ DockingWindow RID_SVXFLOAT_3D ImageButton BTN_GEO { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_GEO"; Pos = MAP_APPFONT ( 4 , BORDER ) ; Size = MAP_APPFONT ( VT_BUTTON_WIDTH , IMG_BUTTON_HEIGHT ) ; TabStop = TRUE ; @@ -93,6 +96,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_REPRESENTATION { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_REPRESENTATION"; Pos = MAP_APPFONT ( 22 , BORDER ) ; Size = MAP_APPFONT ( VT_BUTTON_WIDTH , IMG_BUTTON_HEIGHT ) ; TabStop = TRUE ; @@ -105,6 +109,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT"; Pos = MAP_APPFONT ( 40 , BORDER ) ; Size = MAP_APPFONT ( VT_BUTTON_WIDTH , IMG_BUTTON_HEIGHT ) ; TabStop = TRUE ; @@ -117,6 +122,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEXTURE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEXTURE"; Pos = MAP_APPFONT ( 58 , BORDER ) ; Size = MAP_APPFONT ( VT_BUTTON_WIDTH , IMG_BUTTON_HEIGHT ) ; ButtonImage = Image @@ -129,6 +135,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_MATERIAL { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_MATERIAL"; Pos = MAP_APPFONT ( 76 , BORDER ) ; Size = MAP_APPFONT ( VT_BUTTON_WIDTH , IMG_BUTTON_HEIGHT ) ; TabStop = TRUE ; @@ -142,6 +149,7 @@ DockingWindow RID_SVXFLOAT_3D ImageButton BTN_UPDATE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_UPDATE"; Pos = MAP_APPFONT ( WIDTH - BORDER - BUTTON_WIDTH * 2 , BORDER ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -154,6 +162,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_ASSIGN { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_ASSIGN"; Pos = MAP_APPFONT ( WIDTH - BORDER - BUTTON_WIDTH , BORDER ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -167,6 +176,7 @@ DockingWindow RID_SVXFLOAT_3D // Unterer Teil ImageButton BTN_CHANGE_TO_3D { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_CHANGE_TO_3D"; Pos = MAP_APPFONT ( 9 , 200 - BUTTON_HEIGHT ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -180,6 +190,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LATHE_OBJ { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LATHE_OBJ"; Pos = MAP_APPFONT ( 9 + BUTTON_WIDTH + 1 , 200 - BUTTON_HEIGHT ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -193,6 +204,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_PERSPECTIVE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_PERSPECTIVE"; Pos = MAP_APPFONT ( 9 + ( BUTTON_WIDTH + 1 ) * 2 , 200 - BUTTON_HEIGHT ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -232,6 +244,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_PERCENT_DIAGONAL { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_PERCENT_DIAGONAL"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1 , FIRST_FT_START_Y - 2 ) ; Size = MAP_APPFONT ( 50 , 12 ) ; @@ -252,6 +265,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_BACKSCALE { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_BACKSCALE"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1, FIRST_FT_START_Y + FT_OFFSET_NEXT - 2 ) ; @@ -273,6 +287,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_END_ANGLE { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_END_ANGLE"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1, FIRST_FT_START_Y + 2*FT_OFFSET_NEXT - 2 ) ; @@ -295,6 +310,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_DEPTH { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_DEPTH"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1, FIRST_FT_START_Y + 3*FT_OFFSET_NEXT - 2 ) ; @@ -326,6 +342,7 @@ DockingWindow RID_SVXFLOAT_3D }; NumericField NUM_HORIZONTAL { + HelpID = "svx:NumericField:RID_SVXFLOAT_3D:NUM_HORIZONTAL"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + 42, SEGMENTS_START_Y+13-2 ) ; Size = MAP_APPFONT ( 22 , 12 ) ; @@ -345,6 +362,7 @@ DockingWindow RID_SVXFLOAT_3D }; NumericField NUM_VERTICAL { + HelpID = "svx:NumericField:RID_SVXFLOAT_3D:NUM_VERTICAL"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + 114+2 , SEGMENTS_START_Y+13-2 ) ; Size = MAP_APPFONT ( 22 , 12 ) ; @@ -365,6 +383,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_NORMALS_OBJ { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_NORMALS_OBJ"; Pos = MAP_APPFONT ( FT_INDENT , NORMALS_BT_START_Y ) ; Size = IMG_BUTTON_SIZE; ButtonImage = Image @@ -377,6 +396,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_NORMALS_FLAT { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_NORMALS_FLAT"; Pos = MAP_APPFONT ( FT_INDENT + (1+BUTTON_WIDTH) , NORMALS_BT_START_Y ) ; Size = IMG_BUTTON_SIZE; ButtonImage = Image @@ -389,6 +409,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_NORMALS_SPHERE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_NORMALS_SPHERE"; Pos = MAP_APPFONT ( FT_INDENT + (1+BUTTON_WIDTH) * 2 , NORMALS_BT_START_Y ) ; Size = IMG_BUTTON_SIZE; ButtonImage = Image @@ -401,6 +422,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_NORMALS_INVERT { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_NORMALS_INVERT"; Pos = MAP_APPFONT ( FT_INDENT , NORMALS_BT_START_Y + IMG_BUTTON_NEXT ) ; Size = IMG_BUTTON_SIZE; ButtonImage = Image @@ -413,6 +435,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TWO_SIDED_LIGHTING { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TWO_SIDED_LIGHTING"; Pos = MAP_APPFONT ( FT_INDENT + (1+BUTTON_WIDTH) * 2 , NORMALS_BT_START_Y + IMG_BUTTON_NEXT ) ; Size = IMG_BUTTON_SIZE; @@ -426,6 +449,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_DOUBLE_SIDED { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_DOUBLE_SIDED"; Pos = MAP_APPFONT ( FT_INDENT , NORMALS_BT_START_Y + 2*IMG_BUTTON_NEXT ) ; Size = IMG_BUTTON_SIZE; ButtonImage = Image @@ -446,6 +470,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_SHADEMODE { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_SHADEMODE"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , 30 ) ; Size = MAP_APPFONT ( 83 , 100 ) ; @@ -466,6 +491,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_SHADOW_3D { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_SHADOW_3D"; Pos = MAP_APPFONT ( FT_INDENT , SHADOW_START_Y + 11 ) ; Size = IMG_BUTTON_SIZE; TabStop = TRUE ; @@ -486,6 +512,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_SLANT { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_SLANT"; Border = TRUE ; Pos = MAP_APPFONT ( 99 , SHADOW_START_Y + 11 ) ; Size = MAP_APPFONT ( 50 , 12 ) ; @@ -513,6 +540,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_DISTANCE { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_DISTANCE"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1 , CAMERA_START_Y + 11 - 2 ) ; @@ -537,6 +565,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_FOCAL_LENGTH { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_FOCAL_LENGTH"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_LONG + 1 , CAMERA_START_Y + 11 + FT_OFFSET_NEXT - 2 ) ; @@ -568,6 +597,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_1 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_1"; Pos = MAP_APPFONT ( FT_INDENT , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -580,6 +610,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_2 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_2"; Pos = MAP_APPFONT ( FT_INDENT + 13 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -592,6 +623,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_3 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_3"; Pos = MAP_APPFONT ( FT_INDENT + 2*13 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -604,6 +636,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_4 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_4"; Pos = MAP_APPFONT ( FT_INDENT + 3*13 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -616,6 +649,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_5 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_5"; Pos = MAP_APPFONT ( FT_INDENT , FIRST_FT_START_Y + 26 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -628,6 +662,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_6 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_6"; Pos = MAP_APPFONT ( FT_INDENT + 13, FIRST_FT_START_Y + 26 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -640,6 +675,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_7 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_7"; Pos = MAP_APPFONT ( FT_INDENT + 2*13, FIRST_FT_START_Y + 26 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -652,6 +688,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_8 { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_8"; Pos = MAP_APPFONT ( FT_INDENT +3*13 , FIRST_FT_START_Y + 26 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -664,6 +701,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_1 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_1"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -672,6 +710,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_2 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_2"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -680,6 +719,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_3 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_3"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -688,6 +728,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_4 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_4"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -696,6 +737,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_5 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_5"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -704,6 +746,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_6 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_6"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -712,6 +755,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_7 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_7"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -720,6 +764,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_LIGHT_8 { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_LIGHT_8"; Border = TRUE ; Pos = MAP_APPFONT ( 66 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -728,6 +773,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_LIGHT_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_LIGHT_COLOR"; Pos = MAP_APPFONT ( 137 , FIRST_FT_START_Y + 11 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -746,6 +792,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_AMBIENTLIGHT { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_AMBIENTLIGHT"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 , FIRST_FT_START_Y + 53 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -754,6 +801,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_AMBIENT_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_AMBIENT_COLOR"; Pos = MAP_APPFONT ( 137 , FIRST_FT_START_Y + 53 ) ; Size = MAP_APPFONT ( 12 , 14 ) ; ButtonImage = Image @@ -780,6 +828,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_LUMINANCE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_LUMINANCE"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -793,6 +842,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_COLOR"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + BUTTON_WIDTH, FIRST_FT_START_Y - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -812,6 +862,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_REPLACE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_REPLACE"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y + IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -825,6 +876,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_MODULATE { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_MODULATE"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + BUTTON_WIDTH, FIRST_FT_START_Y + IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -838,6 +890,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_BLEND { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_BLEND"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + 2*BUTTON_WIDTH, FIRST_FT_START_Y + IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -857,6 +910,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_OBJECT_X { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_OBJECT_X"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y + 2*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -870,6 +924,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_PARALLEL_X { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_PARALLEL_X"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + BUTTON_WIDTH, FIRST_FT_START_Y + 2*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -883,6 +938,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_CIRCLE_X { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_CIRCLE_X"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + 2*BUTTON_WIDTH, FIRST_FT_START_Y + 2*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -902,6 +958,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_OBJECT_Y { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_OBJECT_Y"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y + 3*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -915,6 +972,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_PARALLEL_Y { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_PARALLEL_Y"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + BUTTON_WIDTH, FIRST_FT_START_Y + 3*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -928,6 +986,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_CIRCLE_Y { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_CIRCLE_Y"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 + 2*BUTTON_WIDTH, FIRST_FT_START_Y + 3*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -947,6 +1006,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_TEX_FILTER { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_TEX_FILTER"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y + 4*IMG_BUTTON_NEXT - 2 ) ; Size = IMG_BUTTON_SIZE; @@ -984,6 +1044,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_MAT_FAVORITES { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_MAT_FAVORITES"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, FIRST_FT_START_Y - 2 ) ; @@ -1008,6 +1069,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_MAT_COLOR { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_MAT_COLOR"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 , FIRST_FT_START_Y + FT_OFFSET_NEXT - 2 ) ; @@ -1017,6 +1079,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_MAT_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_MAT_COLOR"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 72 , FIRST_FT_START_Y + FT_OFFSET_NEXT - 2 ) ; Size = MAP_APPFONT ( 12, 14 ) ; @@ -1036,6 +1099,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_MAT_EMISSION { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_MAT_EMISSION"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 , FIRST_FT_START_Y + 2*FT_OFFSET_NEXT - 2 ) ; @@ -1045,6 +1109,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_EMISSION_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_EMISSION_COLOR"; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 72 , FIRST_FT_START_Y + 2*FT_OFFSET_NEXT - 2 ) ; Size = MAP_APPFONT ( 12, 14 ) ; @@ -1071,6 +1136,7 @@ DockingWindow RID_SVXFLOAT_3D }; ListBox LB_MAT_SPECULAR { + HelpID = "svx:ListBox:RID_SVXFLOAT_3D:LB_MAT_SPECULAR"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1, SPECULAR_START_Y + 13 - 2 ) ; Size = MAP_APPFONT ( 68 , 100 ) ; @@ -1079,6 +1145,7 @@ DockingWindow RID_SVXFLOAT_3D }; ImageButton BTN_SPECULAR_COLOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_SPECULAR_COLOR"; Pos = MAP_APPFONT ( 137 , SPECULAR_START_Y + 13 - 2 ) ; Size = MAP_APPFONT ( 12, 14 ) ; ButtonImage = Image @@ -1097,6 +1164,7 @@ DockingWindow RID_SVXFLOAT_3D }; MetricField MTR_MAT_SPECULAR_INTENSITY { + HelpID = "svx:MetricField:RID_SVXFLOAT_3D:MTR_MAT_SPECULAR_INTENSITY"; Border = TRUE ; Pos = MAP_APPFONT ( FT_INDENT + FT_WIDTH_SHORT + 1 , SPECULAR_START_Y + 13 + FT_OFFSET_NEXT ) ; @@ -1114,6 +1182,7 @@ DockingWindow RID_SVXFLOAT_3D }; /* ImageButton BTN_MAT_FAVORITES { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_MAT_FAVORITES"; Pos = MAP_APPFONT( BORDER, GROUP_PREV_Y+1 ); Size = IMG_BUTTON_SIZE; QuickHelpText = "Material Favoriten" ; @@ -1125,6 +1194,7 @@ DockingWindow RID_SVXFLOAT_3D TabStop = TRUE; }; ImageButton BTN_MAT_EDITOR { + HelpID = "svx:ImageButton:RID_SVXFLOAT_3D:BTN_MAT_EDITOR"; Pos = MAP_APPFONT( BORDER + BUTTON_WIDTH, GROUP_PREV_Y+1 ); Size = IMG_BUTTON_SIZE; QuickHelpText = "Material Editor" ; diff --git a/svx/source/fmcomp/fmgridif.cxx b/svx/source/fmcomp/fmgridif.cxx index 2cc87eb9e648..5a033cd77d44 100644 --- a/svx/source/fmcomp/fmgridif.cxx +++ b/svx/source/fmcomp/fmgridif.cxx @@ -38,6 +38,7 @@ #include "sdbdatacolumn.hxx" #include "svx/fmgridcl.hxx" #include "svx/svxids.hrc" +#include <tools/urlobj.hxx> /** === begin UNO includes === **/ #include <com/sun/star/awt/PosSize.hpp> @@ -1973,14 +1974,10 @@ void FmXGridPeer::setProperty( const ::rtl::OUString& PropertyName, const Any& V } else if ( 0 == PropertyName.compareTo( FM_PROP_HELPURL ) ) { - String sHelpURL(::comphelper::getString(Value)); - String sPattern; - sPattern.AssignAscii("HID:"); - if (sHelpURL.Equals(sPattern, 0, sPattern.Len())) - { - String sID = sHelpURL.Copy(sPattern.Len()); - pGrid->SetHelpId(sID.ToInt32()); - } + INetURLObject aHID( ::comphelper::getString(Value) ); + DBG_ASSERT( aHID.GetProtocol() == INET_PROT_HID, "Wrong HelpURL!" ); + if ( aHID.GetProtocol() == INET_PROT_HID ) + pGrid->SetHelpId( rtl::OUStringToOString( aHID.GetURLPath(), RTL_TEXTENCODING_UTF8 ) ); } else if ( 0 == PropertyName.compareTo( FM_PROP_DISPLAYSYNCHRON ) ) { diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx index bb8afd502d43..76c700ae4221 100644 --- a/svx/source/fmcomp/gridcell.cxx +++ b/svx/source/fmcomp/gridcell.cxx @@ -2953,13 +2953,13 @@ sal_Bool DbFilterField::commitControl() case ::com::sun::star::form::FormComponentType::CHECKBOX: return sal_True; case ::com::sun::star::form::FormComponentType::LISTBOX: + aText.Erase(); if (static_cast<ListBox*>(m_pWindow)->GetSelectEntryCount()) { sal_Int16 nPos = (sal_Int16)static_cast<ListBox*>(m_pWindow)->GetSelectEntryPos(); - aText = (const sal_Unicode*)m_aValueList.getConstArray()[nPos]; + if ( ( nPos >= 0 ) && ( nPos < m_aValueList.getLength() ) ) + aText = (const sal_Unicode*)m_aValueList.getConstArray()[nPos]; } - else - aText.Erase(); if (m_aText != aText) { diff --git a/svx/source/fmcomp/gridctrl.src b/svx/source/fmcomp/gridctrl.src index e974f5b28b1a..88651ebbe04f 100644 --- a/svx/source/fmcomp/gridctrl.src +++ b/svx/source/fmcomp/gridctrl.src @@ -29,6 +29,8 @@ #include <svx/svxids.hrc> #include "globlmn.hrc" #include "fmhelp.hrc" +#include <svx/svxcommands.h> + Menu RID_SVXMNU_ROWS { ItemList = @@ -36,19 +38,19 @@ Menu RID_SVXMNU_ROWS MenuItem { Identifier = SID_FM_DELETEROWS ; - HelpID = SID_FM_DELETEROWS ; + HelpId = HID_FM_DELETEROWS ; Text [ en-US ] = "Delete Rows" ; }; MenuItem { Identifier = SID_FM_RECORD_SAVE ; - HelpID = SID_FM_RECORD_SAVE ; + HelpId = CMD_SID_FM_RECORD_SAVE ; Text [ en-US ] = "Save Record" ; }; MenuItem { Identifier = SID_FM_RECORD_UNDO ; - HelpID = SID_FM_RECORD_UNDO ; + HelpId = CMD_SID_FM_RECORD_UNDO ; Text [ en-US ] = "Undo: Data entry" ; }; }; @@ -60,7 +62,7 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_INSERTCOL ; - HelpID = SID_FM_INSERTCOL ; + HelpId = HID_FM_INSERTCOL ; Text [ en-US ] = "Insert ~Column" ; SubMenu = Menu { @@ -69,61 +71,61 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_EDIT ; - HelpID = SID_FM_EDIT ; + HelpId = CMD_SID_FM_EDIT ; Text [ en-US ] = "Text Box" ; }; MenuItem { Identifier = SID_FM_CHECKBOX ; - HelpID = SID_FM_CHECKBOX ; + HelpId = CMD_SID_FM_CHECKBOX ; Text [ en-US ] = "Check Box" ; }; MenuItem { Identifier = SID_FM_COMBOBOX ; - HelpID = SID_FM_COMBOBOX ; + HelpId = CMD_SID_FM_COMBOBOX ; Text [ en-US ] = "Combo Box" ; }; MenuItem { Identifier = SID_FM_LISTBOX ; - HelpID = SID_FM_LISTBOX ; + HelpId = CMD_SID_FM_LISTBOX ; Text [ en-US ] = "List Box" ; }; MenuItem { Identifier = SID_FM_DATEFIELD ; - HelpID = SID_FM_DATEFIELD ; + HelpId = CMD_SID_FM_DATEFIELD ; Text [ en-US ] = "Date Field" ; }; MenuItem { Identifier = SID_FM_TIMEFIELD ; - HelpID = SID_FM_TIMEFIELD ; + HelpId = CMD_SID_FM_TIMEFIELD ; Text [ en-US ] = "Time Field" ; }; MenuItem { Identifier = SID_FM_NUMERICFIELD ; - HelpID = SID_FM_NUMERICFIELD ; + HelpId = CMD_SID_FM_NUMERICFIELD ; Text [ en-US ] = "Numeric Field" ; }; MenuItem { Identifier = SID_FM_CURRENCYFIELD ; - HelpID = SID_FM_CURRENCYFIELD ; + HelpId = CMD_SID_FM_CURRENCYFIELD ; Text [ en-US ] = "Currency Field" ; }; MenuItem { Identifier = SID_FM_PATTERNFIELD ; - HelpID = SID_FM_PATTERNFIELD ; + HelpId = CMD_SID_FM_PATTERNFIELD ; Text [ en-US ] = "Pattern Field" ; }; MenuItem { Identifier = SID_FM_FORMATTEDFIELD ; - HelpID = SID_FM_FORMATTEDFIELD ; + HelpId = CMD_SID_FM_FORMATTEDFIELD ; Text [ en-US ] = "Formatted Field" ; }; MenuItem @@ -140,25 +142,25 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_CHANGECOL ; - HelpID = SID_FM_CHANGECOL ; + HelpId = HID_FM_CHANGECOL ; Text [ en-US ] = "~Replace with" ; }; MenuItem { Identifier = SID_FM_DELETECOL ; - HelpID = SID_FM_DELETECOL ; + HelpId = HID_FM_DELETECOL ; Text [ en-US ] = "Delete Column" ; }; MenuItem { Identifier = SID_FM_HIDECOL ; - HelpID = SID_FM_HIDECOL ; + HelpId = HID_FM_HIDECOL ; Text [ en-US ] = "~Hide Column"; }; MenuItem { Identifier = SID_FM_SHOWCOLS ; - HelpID = SID_FM_SHOWCOLS ; + HelpId = HID_FM_SHOWCOLS ; SubMenu = Menu { ItemList = @@ -166,7 +168,7 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_SHOWCOLS_MORE ; - HelpID = SID_FM_SHOWCOLS_MORE ; + HelpId = HID_FM_SHOWCOLS_MORE ; Text [ en-US ] = "~More..."; }; MenuItem @@ -176,7 +178,7 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_SHOWALLCOLS ; - HelpID = SID_FM_SHOWALLCOLS ; + HelpId = HID_FM_SHOWALLCOLS ; Text [ en-US ] = "~All"; }; }; @@ -186,7 +188,7 @@ Menu RID_SVXMNU_COLS MenuItem { Identifier = SID_FM_SHOW_PROPERTY_BROWSER ; - HelpID = SID_FM_SHOW_PROPERTY_BROWSER ; + HelpId = CMD_SID_FM_SHOW_PROPERTY_BROWSER ; Text [ en-US ] = "Column..." ; }; }; diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx index 8ce3d6e7ba7c..9412c715b2b5 100644 --- a/svx/source/form/datanavi.cxx +++ b/svx/source/form/datanavi.cxx @@ -352,7 +352,7 @@ namespace svxform WinBits nBits = WB_BORDER | WB_TABSTOP | WB_HIDESELECTION | WB_NOINITIALSELECTION; if ( DGTInstance == m_eGroup || DGTSubmission == m_eGroup ) nBits |= WB_HASBUTTONS | WB_HASLINES | WB_HASLINESATROOT | WB_HASBUTTONSATROOT; - m_aItemList.SetWindowBits( m_aItemList.GetStyle() | nBits ); + m_aItemList.SetStyle( m_aItemList.GetStyle() | nBits ); m_aItemList.Show(); ItemSelectHdl( &m_aItemList ); } diff --git a/svx/source/form/datanavi.src b/svx/source/form/datanavi.src index 1b300c279312..5d81bf13ac26 100644 --- a/svx/source/form/datanavi.src +++ b/svx/source/form/datanavi.src @@ -34,6 +34,7 @@ TabPage RID_SVX_XFORMS_TABPAGES { + HelpID = "svx:TabPage:RID_SVX_XFORMS_TABPAGES"; Hide = TRUE ; DialogControl = TRUE; Size = MAP_APPFONT ( 63 , 100 ) ; @@ -348,6 +349,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; Edit ED_NAME { + HelpID = "svx:Edit:RID_SVXDLG_ADD_DATAITEM:ED_NAME"; Pos = MAP_APPFONT ( 78 , 14 ) ; Size = MAP_APPFONT ( 96 , 12 ) ; Border = TRUE ; @@ -361,12 +363,14 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; Edit ED_DEFAULT { + HelpID = "svx:Edit:RID_SVXDLG_ADD_DATAITEM:ED_DEFAULT"; Pos = MAP_APPFONT ( 78 , 29 ) ; Size = MAP_APPFONT ( 96 , 12 ) ; Border = TRUE ; }; PushButton PB_DEFAULT { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_DEFAULT"; Pos = MAP_APPFONT ( 160 , 29 ) ; Size = MAP_APPFONT ( 14 , 14 ) ; TabStop = TRUE ; @@ -388,6 +392,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; ListBox LB_DATATYPE { + HelpID = "svx:ListBox:RID_SVXDLG_ADD_DATAITEM:LB_DATATYPE"; Pos = MAP_APPFONT ( 78 , 55 ) ; Size = MAP_APPFONT ( 96 , 45 ) ; Border = TRUE ; @@ -395,6 +400,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; CheckBox CB_REQUIRED { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_DATAITEM:CB_REQUIRED"; Pos = MAP_APPFONT ( 6 , 72 ) ; Size = MAP_APPFONT ( 69 , 10 ) ; TabStop = TRUE ; @@ -402,6 +408,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; PushButton PB_REQUIRED { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_REQUIRED"; Pos = MAP_APPFONT ( 78 , 70 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -409,6 +416,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; CheckBox CB_RELEVANT { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_DATAITEM:CB_RELEVANT"; Pos = MAP_APPFONT ( 6 , 89 ) ; Size = MAP_APPFONT ( 69 , 10 ) ; TabStop = TRUE ; @@ -416,6 +424,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; PushButton PB_RELEVANT { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_RELEVANT"; Pos = MAP_APPFONT ( 78 , 87 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -423,6 +432,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; CheckBox CB_CONSTRAINT { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_DATAITEM:CB_CONSTRAINT"; Pos = MAP_APPFONT ( 6 , 106 ) ; Size = MAP_APPFONT ( 69 , 10 ) ; TabStop = TRUE ; @@ -430,6 +440,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; PushButton PB_CONSTRAINT { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_CONSTRAINT"; Pos = MAP_APPFONT ( 78 , 104 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -437,6 +448,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; CheckBox CB_READONLY { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_DATAITEM:CB_READONLY"; Pos = MAP_APPFONT ( 6 , 123 ) ; Size = MAP_APPFONT ( 69 , 10 ) ; TabStop = TRUE ; @@ -444,6 +456,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; PushButton PB_READONLY { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_READONLY"; Pos = MAP_APPFONT ( 78 , 121 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -451,6 +464,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; CheckBox CB_CALCULATE { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_DATAITEM:CB_CALCULATE"; Pos = MAP_APPFONT ( 6 , 140 ) ; Size = MAP_APPFONT ( 69 , 10 ) ; TabStop = TRUE ; @@ -458,6 +472,7 @@ ModalDialog RID_SVXDLG_ADD_DATAITEM }; PushButton PB_CALCULATE { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_DATAITEM:PB_CALCULATE"; Pos = MAP_APPFONT ( 78 , 138 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -574,6 +589,7 @@ ModalDialog RID_SVXDLG_ADD_CONDITION }; MultiLineEdit ED_CONDITION { + HelpID = "svx:MultiLineEdit:RID_SVXDLG_ADD_CONDITION:ED_CONDITION"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 14 ) ; Size = MAP_APPFONT ( 198 , 34 ) ; @@ -599,6 +615,7 @@ ModalDialog RID_SVXDLG_ADD_CONDITION }; PushButton PB_EDIT_NAMESPACES { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_CONDITION:PB_EDIT_NAMESPACES"; Pos = MAP_APPFONT ( 132 , 102 ) ; Size = MAP_APPFONT ( 72 , 14 ) ; TabStop = TRUE ; @@ -655,6 +672,7 @@ ModalDialog RID_SVXDLG_NAMESPACE_ITEM }; PushButton PB_ADD_NAMESPACE { + HelpID = "svx:PushButton:RID_SVXDLG_NAMESPACE_ITEM:PB_ADD_NAMESPACE"; Pos = MAP_APPFONT ( 184 , 14 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -662,6 +680,7 @@ ModalDialog RID_SVXDLG_NAMESPACE_ITEM }; PushButton PB_EDIT_NAMESPACE { + HelpID = "svx:PushButton:RID_SVXDLG_NAMESPACE_ITEM:PB_EDIT_NAMESPACE"; Pos = MAP_APPFONT ( 184 , 31 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -669,6 +688,7 @@ ModalDialog RID_SVXDLG_NAMESPACE_ITEM }; PushButton PB_DELETE_NAMESPACE { + HelpID = "svx:PushButton:RID_SVXDLG_NAMESPACE_ITEM:PB_DELETE_NAMESPACE"; Pos = MAP_APPFONT ( 184 , 48 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; TabStop = TRUE ; @@ -725,6 +745,7 @@ ModalDialog RID_SVXDLG_MANAGE_NAMESPACE }; Edit ED_PREFIX { + HelpID = "svx:Edit:RID_SVXDLG_MANAGE_NAMESPACE:ED_PREFIX"; Pos = MAP_APPFONT ( 6 , 14 ) ; Size = MAP_APPFONT ( 45 , 12 ) ; Border = TRUE; @@ -738,6 +759,7 @@ ModalDialog RID_SVXDLG_MANAGE_NAMESPACE }; Edit ED_URL { + HelpID = "svx:Edit:RID_SVXDLG_MANAGE_NAMESPACE:ED_URL"; Pos = MAP_APPFONT ( 54 , 14 ) ; Size = MAP_APPFONT ( 150 , 12 ) ; Border = TRUE; @@ -795,6 +817,7 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; Edit ED_SUBMIT_NAME { + HelpID = "svx:Edit:RID_SVXDLG_ADD_SUBMISSION:ED_SUBMIT_NAME"; Pos = MAP_APPFONT ( 78 , 14 ) ; Size = MAP_APPFONT ( 96 , 12 ) ; Border = TRUE ; @@ -808,6 +831,7 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; Edit ED_SUBMIT_ACTION { + HelpID = "svx:Edit:RID_SVXDLG_ADD_SUBMISSION:ED_SUBMIT_ACTION"; Pos = MAP_APPFONT ( 78 , 29 ) ; Size = MAP_APPFONT ( 96 , 12 ) ; Border = TRUE ; @@ -821,6 +845,7 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; ListBox LB_SUBMIT_METHOD { + HelpID = "svx:ListBox:RID_SVXDLG_ADD_SUBMISSION:LB_SUBMIT_METHOD"; Pos = MAP_APPFONT ( 78 , 44 ) ; Size = MAP_APPFONT ( 96 , 51 ) ; Border = TRUE ; @@ -835,12 +860,14 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; Edit ED_SUBMIT_REF { + HelpID = "svx:Edit:RID_SVXDLG_ADD_SUBMISSION:ED_SUBMIT_REF"; Pos = MAP_APPFONT ( 78 , 60 ) ; Size = MAP_APPFONT ( 79, 12 ) ; Border = TRUE ; }; PushButton PB_SUBMIT_REF { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_SUBMISSION:PB_SUBMIT_REF"; Pos = MAP_APPFONT ( 159 , 59 ) ; Size = MAP_APPFONT ( 14 , 14 ) ; TabStop = TRUE ; @@ -855,6 +882,7 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; ListBox LB_SUBMIT_BIND { + HelpID = "svx:ListBox:RID_SVXDLG_ADD_SUBMISSION:LB_SUBMIT_BIND"; Pos = MAP_APPFONT ( 78 , 75 ) ; Size = MAP_APPFONT ( 96 , 51 ) ; Border = TRUE ; @@ -869,6 +897,7 @@ ModalDialog RID_SVXDLG_ADD_SUBMISSION }; ListBox LB_SUBMIT_REPLACE { + HelpID = "svx:ListBox:RID_SVXDLG_ADD_SUBMISSION:LB_SUBMIT_REPLACE"; Pos = MAP_APPFONT ( 78 , 90 ) ; Size = MAP_APPFONT ( 96 , 51 ) ; Border = TRUE ; @@ -949,12 +978,14 @@ ModalDialog RID_SVXDLG_ADD_MODEL }; Edit ED_INST_NAME { + HelpID = "svx:Edit:RID_SVXDLG_ADD_MODEL:ED_INST_NAME"; Pos = MAP_APPFONT ( 60 , 14 ) ; Size = MAP_APPFONT ( 114 , 12 ) ; Border = TRUE ; }; CheckBox CB_MODIFIES_DOCUMENT { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_MODEL:CB_MODIFIES_DOCUMENT"; Pos = MAP_APPFONT( 6, 32 ); Size = MAP_APPFONT( 168, 16 ); Top = TRUE; @@ -1015,6 +1046,7 @@ ModalDialog RID_SVXDLG_ADD_INSTANCE }; Edit ED_INST_NAME { + HelpID = "svx:Edit:RID_SVXDLG_ADD_INSTANCE:ED_INST_NAME"; Pos = MAP_APPFONT ( 60 , 14 ) ; Size = MAP_APPFONT ( 144 , 12 ) ; Border = TRUE ; @@ -1028,6 +1060,7 @@ ModalDialog RID_SVXDLG_ADD_INSTANCE }; ComboBox ED_INST_URL { + HelpID = "svx:ComboBox:RID_SVXDLG_ADD_INSTANCE:ED_INST_URL"; Pos = MAP_APPFONT ( 60 , 29 ) ; Size = MAP_APPFONT ( 127 , 48 ) ; DropDown = TRUE ; @@ -1035,6 +1068,7 @@ ModalDialog RID_SVXDLG_ADD_INSTANCE }; PushButton PB_FILEPICKER { + HelpID = "svx:PushButton:RID_SVXDLG_ADD_INSTANCE:PB_FILEPICKER"; Pos = MAP_APPFONT ( 190 , 28 ) ; Size = MAP_APPFONT ( 14 , 14 ) ; TabStop = TRUE ; @@ -1042,6 +1076,7 @@ ModalDialog RID_SVXDLG_ADD_INSTANCE }; CheckBox CB_INST_LINKINST { + HelpID = "svx:CheckBox:RID_SVXDLG_ADD_INSTANCE:CB_INST_LINKINST"; Pos = MAP_APPFONT ( 6 , 44 ) ; Size = MAP_APPFONT ( 198 , 10 ) ; TabStop = TRUE ; diff --git a/svx/source/form/filtnav.src b/svx/source/form/filtnav.src index 82b74e84331c..feaba66729db 100644 --- a/svx/source/form/filtnav.src +++ b/svx/source/form/filtnav.src @@ -27,6 +27,8 @@ #include <svx/svxids.hrc> #include "fmresids.hrc" +#include "fmhelp.hrc" + Menu RID_FM_FILTER_MENU { ItemList = @@ -34,25 +36,25 @@ Menu RID_FM_FILTER_MENU MenuItem { Identifier = SID_FM_DELETE ; - HelpID = SID_FM_DELETE ; + HelpId = HID_FM_DELETE; Text [ en-US ] = "~Delete" ; }; MenuItem { Identifier = SID_FM_FILTER_EDIT ; - HelpID = SID_FM_FILTER_EDIT ; + HelpId = HID_FM_FILTER_EDIT; Text [ en-US ] = "~Edit" ; }; MenuItem { Identifier = SID_FM_FILTER_IS_NULL ; - HelpID = SID_FM_FILTER_IS_NULL ; + HelpId = HID_FM_FILTER_IS_NULL; Text [ en-US ] = "~Is Null" ; }; MenuItem { Identifier = SID_FM_FILTER_IS_NOT_NULL ; - HelpID = SID_FM_FILTER_IS_NOT_NULL ; + HelpId = HID_FM_FILTER_IS_NOT_NULL; Text [ en-US ] = "I~s not Null" ; }; }; diff --git a/svx/source/form/fmexpl.src b/svx/source/form/fmexpl.src index 17881727cd5f..b5bdd50239e7 100644 --- a/svx/source/form/fmexpl.src +++ b/svx/source/form/fmexpl.src @@ -29,6 +29,9 @@ #include "fmresids.hrc" #include "fmexpl.hrc" #include "globlmn.hrc" +#include <svx/svxcommands.h> +#include "fmhelp.hrc" + Menu RID_FMEXPLORER_POPUPMENU { ItemList = @@ -36,7 +39,7 @@ Menu RID_FMEXPLORER_POPUPMENU MenuItem { Identifier = SID_FM_NEW ; - HelpID = SID_FM_NEW ; + HelpId = HID_FM_NEW ; Text [ en-US ] = "~New" ; SubMenu = Menu { @@ -45,13 +48,13 @@ Menu RID_FMEXPLORER_POPUPMENU MenuItem { Identifier = SID_FM_NEW_FORM ; - HelpID = SID_FM_NEW_FORM ; + HelpId = HID_FM_NEW_FORM ; Text [ en-US ] = "Form" ; }; MenuItem { Identifier = SID_FM_NEW_HIDDEN ; - HelpID = SID_FM_NEW_HIDDEN ; + HelpId = HID_FM_NEW_HIDDEN ; Text [ en-US ] = "Hidden Control" ; }; }; @@ -60,7 +63,7 @@ Menu RID_FMEXPLORER_POPUPMENU MenuItem { Identifier = SID_FM_CHANGECONTROLTYPE ; - HelpID = SID_FM_CHANGECONTROLTYPE ; + HelpId = CMD_SID_FM_CHANGECONTROLTYPE ; Text [ en-US ] = "Replace with"; }; MenuItem { ITEM_EDIT_CUT }; @@ -69,37 +72,37 @@ Menu RID_FMEXPLORER_POPUPMENU MenuItem { Identifier = SID_FM_DELETE ; - HelpID = SID_FM_DELETE ; + HelpId = HID_FM_DELETE ; Text [ en-US ] = "~Delete" ; }; MenuItem { Identifier = SID_FM_TAB_DIALOG ; - HelpID = SID_FM_TAB_DIALOG ; + HelpId = CMD_SID_FM_TAB_DIALOG ; Text [ en-US ] = "Tab Order..." ; }; MenuItem { Identifier = SID_FM_RENAME_OBJECT ; - HelpID = SID_FM_RENAME_OBJECT ; + HelpId = HID_FM_RENAME_OBJECT ; Text [ en-US ] = "~Rename" ; }; MenuItem { Identifier = SID_FM_SHOW_PROPERTY_BROWSER ; - HelpID = SID_FM_SHOW_PROPERTY_BROWSER ; + HelpId = CMD_SID_FM_SHOW_PROPERTY_BROWSER ; Text [ en-US ] = "Propert~ies" ; }; MenuItem { Identifier = SID_FM_OPEN_READONLY ; - HelpID = SID_FM_OPEN_READONLY ; + HelpId = CMD_SID_FM_OPEN_READONLY ; Text [ en-US ] = "Open in Design Mode" ; }; MenuItem { Identifier = SID_FM_AUTOCONTROLFOCUS ; - HelpID = SID_FM_AUTOCONTROLFOCUS ; + HelpId = CMD_SID_FM_AUTOCONTROLFOCUS ; Text [ en-US ] = "Automatic Control Focus"; }; }; @@ -112,140 +115,140 @@ Menu RID_FMSHELL_CONVERSIONMENU MenuItem { Identifier = SID_FM_CONVERTTO_EDIT ; - HelpID = SID_FM_CONVERTTO_EDIT ; + HelpId = CMD_SID_FM_CONVERTTO_EDIT ; Command = ".uno:ConvertToEdit" ; Text [ en-US ] = "~Text Box"; }; MenuItem { Identifier = SID_FM_CONVERTTO_BUTTON ; - HelpID = SID_FM_CONVERTTO_BUTTON ; + HelpId = CMD_SID_FM_CONVERTTO_BUTTON ; Command = ".uno:ConvertToButton" ; Text [ en-US ] = "~Button"; }; MenuItem { Identifier = SID_FM_CONVERTTO_FIXEDTEXT ; - HelpID = SID_FM_CONVERTTO_FIXEDTEXT ; + HelpId = CMD_SID_FM_CONVERTTO_FIXEDTEXT ; Command = ".uno:ConvertToFixed" ; Text [ en-US ] = "La~bel field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_GROUPBOX ; - HelpID = SID_FM_CONVERTTO_GROUPBOX ; + HelpId = CMD_SID_FM_CONVERTTO_GROUPBOX ; Command = ".uno:ConvertToGroup" ; Text [ en-US ] = "G~roup Box"; }; MenuItem { Identifier = SID_FM_CONVERTTO_LISTBOX ; - HelpID = SID_FM_CONVERTTO_LISTBOX ; + HelpId = CMD_SID_FM_CONVERTTO_LISTBOX ; Command = ".uno:ConvertToList" ; Text [ en-US ] = "L~ist Box"; }; MenuItem { Identifier = SID_FM_CONVERTTO_CHECKBOX ; - HelpID = SID_FM_CONVERTTO_CHECKBOX ; + HelpId = CMD_SID_FM_CONVERTTO_CHECKBOX ; Command = ".uno:ConvertToCheckBox" ; Text [ en-US ] = "~Check Box"; }; MenuItem { Identifier = SID_FM_CONVERTTO_RADIOBUTTON ; - HelpID = SID_FM_CONVERTTO_RADIOBUTTON ; + HelpId = CMD_SID_FM_CONVERTTO_RADIOBUTTON ; Command = ".uno:ConvertToRadio" ; Text [ en-US ] = "~Radio Button"; }; MenuItem { Identifier = SID_FM_CONVERTTO_COMBOBOX ; - HelpID = SID_FM_CONVERTTO_COMBOBOX ; + HelpId = CMD_SID_FM_CONVERTTO_COMBOBOX ; Command = ".uno:ConvertToCombo" ; Text [ en-US ] = "Combo Bo~x"; }; MenuItem { Identifier = SID_FM_CONVERTTO_IMAGEBUTTON ; - HelpID = SID_FM_CONVERTTO_IMAGEBUTTON ; + HelpId = CMD_SID_FM_CONVERTTO_IMAGEBUTTON ; Command = ".uno:ConvertToImageBtn" ; Text [ en-US ] = "I~mage Button"; }; MenuItem { Identifier = SID_FM_CONVERTTO_FILECONTROL ; - HelpID = SID_FM_CONVERTTO_FILECONTROL ; + HelpId = CMD_SID_FM_CONVERTTO_FILECONTROL ; Command = ".uno:ConvertToFileControl" ; Text [ en-US ] = "~File Selection"; }; MenuItem { Identifier = SID_FM_CONVERTTO_DATE ; - HelpID = SID_FM_CONVERTTO_DATE ; + HelpId = CMD_SID_FM_CONVERTTO_DATE ; Command = ".uno:ConvertToDate" ; Text [ en-US ] = "~Date Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_TIME ; - HelpID = SID_FM_CONVERTTO_TIME ; + HelpId = CMD_SID_FM_CONVERTTO_TIME ; Command = ".uno:ConvertToTime" ; Text [ en-US ] = "Tim~e Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_NUMERIC ; - HelpID = SID_FM_CONVERTTO_NUMERIC ; + HelpId = CMD_SID_FM_CONVERTTO_NUMERIC ; Command = ".uno:ConvertToNumeric" ; Text [ en-US ] = "~Numerical Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_CURRENCY ; - HelpID = SID_FM_CONVERTTO_CURRENCY ; + HelpId = CMD_SID_FM_CONVERTTO_CURRENCY ; Command = ".uno:ConvertToCurrency" ; Text [ en-US ] = "C~urrency Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_PATTERN ; - HelpID = SID_FM_CONVERTTO_PATTERN ; + HelpId = CMD_SID_FM_CONVERTTO_PATTERN ; Command = ".uno:ConvertToPattern" ; Text [ en-US ] = "~Pattern Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_IMAGECONTROL ; - HelpID = SID_FM_CONVERTTO_IMAGECONTROL ; + HelpId = CMD_SID_FM_CONVERTTO_IMAGECONTROL ; Command = ".uno:ConvertToImageControl" ; Text [ en-US ] = "Ima~ge Control"; }; MenuItem { Identifier = SID_FM_CONVERTTO_FORMATTED ; - HelpID = SID_FM_CONVERTTO_FORMATTED ; + HelpId = CMD_SID_FM_CONVERTTO_FORMATTED ; Command = ".uno:ConvertToFormatted" ; Text [ en-US ] = "Fo~rmatted Field"; }; MenuItem { Identifier = SID_FM_CONVERTTO_SCROLLBAR ; - HelpID = SID_FM_CONVERTTO_SCROLLBAR ; + HelpId = CMD_SID_FM_CONVERTTO_SCROLLBAR ; Command = ".uno:ConvertToScrollBar" ; Text [ en-US ] = "Scroll bar"; }; MenuItem { Identifier = SID_FM_CONVERTTO_SPINBUTTON; - HelpID = SID_FM_CONVERTTO_SPINBUTTON; + HelpId = CMD_SID_FM_CONVERTTO_SPINBUTTON; Command = ".uno:ConvertToSpinButton" ; Text [ en-US ] = "Spin Button"; }; MenuItem { Identifier = SID_FM_CONVERTTO_NAVIGATIONBAR; - HelpID = SID_FM_CONVERTTO_NAVIGATIONBAR; + HelpId = CMD_SID_FM_CONVERTTO_NAVIGATIONBAR; Command = ".uno:ConvertToNavigationBar" ; Text [ en-US ] = "Navigation Bar" ; }; @@ -304,6 +307,7 @@ ImageList RID_SVXIMGLIST_FMEXPL_HC ModalDialog RID_SVXDLG_SETFORM { + HelpID = "svx:ModalDialog:RID_SVXDLG_SETFORM"; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 200 , 200 ) ; @@ -342,6 +346,7 @@ ModalDialog RID_SVXDLG_SETFORM }; DockingWindow RID_SVX_FMEXPLORER { + HelpID = "svx:DockingWindow:RID_SVX_FMEXPLORER"; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 200 , 200 ) ; diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx index 52ad139543c5..e627624d8102 100644 --- a/svx/source/form/fmshimp.cxx +++ b/svx/source/form/fmshimp.cxx @@ -538,7 +538,6 @@ sal_Bool IsSearchableControl( const ::com::sun::star::uno::Reference< ::com::sun //------------------------------------------------------------------------------ sal_Bool FmXBoundFormFieldIterator::ShouldStepInto(const Reference< XInterface>& _rContainer) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXBoundFormFieldIterator::ShouldStepInto" ); if (_rContainer == m_xStartingPoint) // would be quite stupid to step over the root .... return sal_True; @@ -549,7 +548,6 @@ sal_Bool FmXBoundFormFieldIterator::ShouldStepInto(const Reference< XInterface>& //------------------------------------------------------------------------------ sal_Bool FmXBoundFormFieldIterator::ShouldHandleElement(const Reference< XInterface>& _rElement) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXBoundFormFieldIterator::ShouldHandleElement" ); if (!_rElement.is()) // NULL element return sal_False; @@ -675,7 +673,6 @@ FmXFormShell::FmXFormShell( FmFormShell& _rShell, SfxViewFrame* _pViewFrame ) ,m_bPreparedClose( sal_False ) ,m_bFirstActivation( sal_True ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::FmXFormShell" ); DBG_CTOR(FmXFormShell,NULL); m_aMarkTimer.SetTimeout(100); m_aMarkTimer.SetTimeoutHdl(LINK(this,FmXFormShell,OnTimeOut)); @@ -707,7 +704,6 @@ FmXFormShell::~FmXFormShell() //------------------------------------------------------------------ Reference< XModel > FmXFormShell::getContextDocument() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getContextDocument" ); Reference< XModel > xModel; // determine the type of document we live in @@ -729,14 +725,12 @@ Reference< XModel > FmXFormShell::getContextDocument() const //------------------------------------------------------------------ bool FmXFormShell::isEnhancedForm() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::isEnhancedForm" ); return getDocumentType() == eEnhancedForm; } //------------------------------------------------------------------ bool FmXFormShell::impl_checkDisposed() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::impl_checkDisposed" ); if ( !m_pShell ) { OSL_ENSURE( false, "FmXFormShell::impl_checkDisposed: already disposed!" ); @@ -748,7 +742,6 @@ bool FmXFormShell::impl_checkDisposed() const //------------------------------------------------------------------ ::svxform::DocumentType FmXFormShell::getDocumentType() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getDocumentType" ); if ( m_eDocumentType != eUnknownDocumentType ) return m_eDocumentType; @@ -769,7 +762,6 @@ bool FmXFormShell::impl_checkDisposed() const //------------------------------------------------------------------ bool FmXFormShell::IsReadonlyDoc() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::IsReadonlyDoc" ); if ( impl_checkDisposed() ) return true; @@ -782,19 +774,16 @@ bool FmXFormShell::IsReadonlyDoc() const //------------------------------------------------------------------ Any SAL_CALL FmXFormShell::queryInterface( const Type& type) throw ( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::queryInterface" ); return FmXFormShell_BASE::queryInterface(type); } //------------------------------------------------------------------------------ Sequence< Type > SAL_CALL FmXFormShell::getTypes( ) throw(RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getTypes" ); return FmXFormShell_BASE::getTypes(); } //------------------------------------------------------------------------------ Sequence< sal_Int8 > SAL_CALL FmXFormShell::getImplementationId() throw(RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getImplementationId" ); static ::cppu::OImplementationId* pId = 0; if (! pId) { @@ -811,7 +800,6 @@ Sequence< sal_Int8 > SAL_CALL FmXFormShell::getImplementationId() throw(RuntimeE //------------------------------------------------------------------------------ void SAL_CALL FmXFormShell::disposing(const EventObject& e) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::disposing" ); impl_checkDisposed(); if (m_xActiveController == e.Source) @@ -851,7 +839,6 @@ void SAL_CALL FmXFormShell::disposing(const EventObject& e) throw( RuntimeExcept //------------------------------------------------------------------------------ void SAL_CALL FmXFormShell::propertyChange(const PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::propertyChange" ); if ( impl_checkDisposed() ) return; @@ -888,7 +875,6 @@ void SAL_CALL FmXFormShell::propertyChange(const PropertyChangeEvent& evt) throw //------------------------------------------------------------------------------ void FmXFormShell::invalidateFeatures( const ::std::vector< sal_Int32 >& _rFeatures ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::invalidateFeatures" ); if ( impl_checkDisposed() ) return; @@ -918,7 +904,6 @@ void FmXFormShell::invalidateFeatures( const ::std::vector< sal_Int32 >& _rFeatu //------------------------------------------------------------------------------ void SAL_CALL FmXFormShell::formActivated(const EventObject& rEvent) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::formActivated" ); if ( impl_checkDisposed() ) return; @@ -930,7 +915,6 @@ void SAL_CALL FmXFormShell::formActivated(const EventObject& rEvent) throw( Runt //------------------------------------------------------------------------------ void SAL_CALL FmXFormShell::formDeactivated(const EventObject& rEvent) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::formDeactivated" ); if ( impl_checkDisposed() ) return; @@ -941,7 +925,6 @@ void SAL_CALL FmXFormShell::formDeactivated(const EventObject& rEvent) throw( Ru //------------------------------------------------------------------------------ void FmXFormShell::disposing() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::disposing" ); impl_checkDisposed(); FmXFormShell_BASE::disposing(); @@ -1019,7 +1002,6 @@ void FmXFormShell::disposing() //------------------------------------------------------------------------------ void FmXFormShell::UpdateSlot( sal_Int16 _nId ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::UpdateSlot" ); if ( impl_checkDisposed() ) return; @@ -1041,7 +1023,6 @@ void FmXFormShell::UpdateSlot( sal_Int16 _nId ) //------------------------------------------------------------------------------ void FmXFormShell::InvalidateSlot( sal_Int16 nId, sal_Bool bWithId ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::InvalidateSlot" ); if ( impl_checkDisposed() ) return; @@ -1050,7 +1031,7 @@ void FmXFormShell::InvalidateSlot( sal_Int16 nId, sal_Bool bWithId ) { m_arrInvalidSlots.Insert(nId, m_arrInvalidSlots.Count()); BYTE nFlags = ( bWithId ? 0x01 : 0 ); - m_arrInvalidSlots_Flags.Insert(nFlags, m_arrInvalidSlots_Flags.Count()); + m_arrInvalidSlots_Flags.push_back(nFlags); } else if (nId) @@ -1062,7 +1043,6 @@ void FmXFormShell::InvalidateSlot( sal_Int16 nId, sal_Bool bWithId ) //------------------------------------------------------------------------------ void FmXFormShell::LockSlotInvalidation(sal_Bool bLock) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::LockSlotInvalidation" ); if ( impl_checkDisposed() ) return; @@ -1088,7 +1068,7 @@ IMPL_LINK(FmXFormShell, OnInvalidateSlots, void*, EMPTYARG) ::osl::MutexGuard aGuard(m_aInvalidationSafety); m_nInvalidationEvent = 0; - DBG_ASSERT(m_arrInvalidSlots.Count() == m_arrInvalidSlots_Flags.Count(), + DBG_ASSERT(m_arrInvalidSlots.Count() == m_arrInvalidSlots_Flags.size(), "FmXFormShell::OnInvalidateSlots : inconsistent slot arrays !"); BYTE nFlags; for (sal_Int16 i=0; i<m_arrInvalidSlots.Count(); ++i) @@ -1102,14 +1082,13 @@ IMPL_LINK(FmXFormShell, OnInvalidateSlots, void*, EMPTYARG) } m_arrInvalidSlots.Remove(0, m_arrInvalidSlots.Count()); - m_arrInvalidSlots_Flags.Remove(0, m_arrInvalidSlots_Flags.Count()); + m_arrInvalidSlots_Flags.clear(); return 0L; } //------------------------------------------------------------------------------ void FmXFormShell::ForceUpdateSelection(sal_Bool bAllowInvalidation) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ForceUpdateSelection" ); if ( impl_checkDisposed() ) return; @@ -1131,7 +1110,6 @@ void FmXFormShell::ForceUpdateSelection(sal_Bool bAllowInvalidation) //------------------------------------------------------------------------------ PopupMenu* FmXFormShell::GetConversionMenu() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::GetConversionMenu" ); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); BOOL bIsHiContrastMode = rSettings.GetHighContrastMode(); @@ -1150,7 +1128,6 @@ PopupMenu* FmXFormShell::GetConversionMenu() //------------------------------------------------------------------------------ bool FmXFormShell::isControlConversionSlot( sal_uInt16 nSlotId ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::isControlConversionSlot" ); for ( size_t i = 0; i < sizeof( nConvertSlots ) / sizeof( nConvertSlots[0] ); ++i ) if (nConvertSlots[i] == nSlotId) return true; @@ -1160,7 +1137,6 @@ bool FmXFormShell::isControlConversionSlot( sal_uInt16 nSlotId ) //------------------------------------------------------------------------------ bool FmXFormShell::executeControlConversionSlot( sal_uInt16 _nSlotId ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::executeControlConversionSlot" ); OSL_PRECOND( canConvertCurrentSelectionToControl( _nSlotId ), "FmXFormShell::executeControlConversionSlot: illegal call!" ); InterfaceBag::const_iterator aSelectedElement = m_aCurrentSelection.begin(); if ( aSelectedElement == m_aCurrentSelection.end() ) @@ -1172,7 +1148,6 @@ bool FmXFormShell::executeControlConversionSlot( sal_uInt16 _nSlotId ) //------------------------------------------------------------------------------ bool FmXFormShell::executeControlConversionSlot( const Reference< XFormComponent >& _rxObject, sal_uInt16 _nSlotId ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::executeControlConversionSlot" ); if ( impl_checkDisposed() ) return false; @@ -1379,7 +1354,6 @@ bool FmXFormShell::executeControlConversionSlot( const Reference< XFormComponent //------------------------------------------------------------------------------ bool FmXFormShell::canConvertCurrentSelectionToControl( sal_Int16 nConversionSlot ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::canConvertCurrentSelectionToControl" ); if ( m_aCurrentSelection.empty() ) return false; @@ -1418,7 +1392,6 @@ bool FmXFormShell::canConvertCurrentSelectionToControl( sal_Int16 nConversionSlo //------------------------------------------------------------------------------ void FmXFormShell::checkControlConversionSlotsForCurrentSelection( Menu& rMenu ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::checkControlConversionSlotsForCurrentSelection" ); for (sal_Int16 i=0; i<rMenu.GetItemCount(); ++i) // der Context ist schon von einem Typ, der dem Eitnrag entspricht -> disable rMenu.EnableItem( rMenu.GetItemId(i), canConvertCurrentSelectionToControl( rMenu.GetItemId( i ) ) ); @@ -1427,7 +1400,6 @@ void FmXFormShell::checkControlConversionSlotsForCurrentSelection( Menu& rMenu ) //------------------------------------------------------------------------------ void FmXFormShell::LoopGrids(sal_Int16 nWhat) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::LoopGrids" ); if ( impl_checkDisposed() ) return; @@ -1497,7 +1469,6 @@ void FmXFormShell::LoopGrids(sal_Int16 nWhat) //------------------------------------------------------------------------------ Reference< XControlContainer > FmXFormShell::getControlContainerForView() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getControlContainerForView" ); if ( impl_checkDisposed() ) return NULL; @@ -1515,7 +1486,6 @@ Reference< XControlContainer > FmXFormShell::getControlContainerForView() //------------------------------------------------------------------------------ void FmXFormShell::ExecuteTabOrderDialog( const Reference< XTabControllerModel >& _rxForForm ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ExecuteTabOrderDialog" ); if ( impl_checkDisposed() ) return; @@ -1564,7 +1534,6 @@ void FmXFormShell::ExecuteTabOrderDialog( const Reference< XTabControllerModel > //------------------------------------------------------------------------------ void FmXFormShell::ExecuteSearch() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ExecuteSearch" ); if ( impl_checkDisposed() ) return; @@ -1711,7 +1680,6 @@ void FmXFormShell::ExecuteSearch() //------------------------------------------------------------------------------ sal_Bool FmXFormShell::GetY2KState(sal_uInt16& n) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::GetY2KState" ); if ( impl_checkDisposed() ) return sal_False; @@ -1751,7 +1719,6 @@ sal_Bool FmXFormShell::GetY2KState(sal_uInt16& n) //------------------------------------------------------------------------------ void FmXFormShell::SetY2KState(sal_uInt16 n) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetY2KState" ); if ( impl_checkDisposed() ) return; @@ -1826,7 +1793,6 @@ void FmXFormShell::SetY2KState(sal_uInt16 n) //------------------------------------------------------------------------------ void FmXFormShell::CloseExternalFormViewer() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::CloseExternalFormViewer" ); if ( impl_checkDisposed() ) return; @@ -1848,7 +1814,6 @@ void FmXFormShell::CloseExternalFormViewer() //------------------------------------------------------------------------------ Reference< XResultSet> FmXFormShell::getInternalForm(const Reference< XResultSet>& _xForm) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getInternalForm" ); if ( impl_checkDisposed() ) return NULL; @@ -1864,7 +1829,6 @@ Reference< XResultSet> FmXFormShell::getInternalForm(const Reference< XResultSet //------------------------------------------------------------------------------ Reference< XForm> FmXFormShell::getInternalForm(const Reference< XForm>& _xForm) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getInternalForm" ); if ( impl_checkDisposed() ) return NULL; @@ -1893,7 +1857,6 @@ namespace //------------------------------------------------------------------------------ bool FmXFormShell::IsFormSlotEnabled( sal_Int32 _nSlot, FeatureState* _pCompleteState ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::IsFormSlotEnabled" ); const ::svx::ControllerFeatures& rController = lcl_isNavigationRelevant( _nSlot ) ? getNavControllerFeatures() @@ -1909,7 +1872,6 @@ bool FmXFormShell::IsFormSlotEnabled( sal_Int32 _nSlot, FeatureState* _pComplete //------------------------------------------------------------------------------ void FmXFormShell::ExecuteFormSlot( sal_Int32 _nSlot ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ExecuteFormSlot" ); const ::svx::ControllerFeatures& rController = lcl_isNavigationRelevant( _nSlot ) ? getNavControllerFeatures() @@ -1945,7 +1907,6 @@ void FmXFormShell::ExecuteFormSlot( sal_Int32 _nSlot ) //------------------------------------------------------------------------------ void FmXFormShell::impl_switchActiveControllerListening( const bool _bListen ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::impl_switchActiveControllerListening" ); Reference< XComponent> xComp( m_xActiveController, UNO_QUERY ); if ( !xComp.is() ) return; @@ -1959,7 +1920,6 @@ void FmXFormShell::impl_switchActiveControllerListening( const bool _bListen ) //------------------------------------------------------------------------------ void FmXFormShell::setActiveController( const Reference< runtime::XFormController >& xController, sal_Bool _bNoSaveOldContent ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::setActiveController" ); if ( impl_checkDisposed() ) return; @@ -2068,14 +2028,12 @@ void FmXFormShell::setActiveController( const Reference< runtime::XFormControlle //------------------------------------------------------------------------------ void FmXFormShell::getCurrentSelection( InterfaceBag& /* [out] */ _rSelection ) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::getCurrentSelection" ); _rSelection = m_aCurrentSelection; } //------------------------------------------------------------------------------ bool FmXFormShell::setCurrentSelectionFromMark( const SdrMarkList& _rMarkList ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::setCurrentSelectionFromMark" ); m_aLastKnownMarkedControls.clear(); if ( ( _rMarkList.GetMarkCount() > 0 ) && isControlList( _rMarkList ) ) @@ -2087,14 +2045,12 @@ bool FmXFormShell::setCurrentSelectionFromMark( const SdrMarkList& _rMarkList ) //------------------------------------------------------------------------------ bool FmXFormShell::selectLastMarkedControls() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::selectLastMarkedControls" ); return setCurrentSelection( m_aLastKnownMarkedControls ); } //------------------------------------------------------------------------------ bool FmXFormShell::setCurrentSelection( const InterfaceBag& _rSelection ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::setCurrentSelection" ); if ( impl_checkDisposed() ) return false; @@ -2176,14 +2132,12 @@ bool FmXFormShell::setCurrentSelection( const InterfaceBag& _rSelection ) //------------------------------------------------------------------------------ bool FmXFormShell::isSolelySelected( const Reference< XInterface >& _rxObject ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::isSolelySelected" ); return ( m_aCurrentSelection.size() == 1 ) && ( *m_aCurrentSelection.begin() == _rxObject ); } //------------------------------------------------------------------------------ void FmXFormShell::forgetCurrentForm() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::forgetCurrentForm" ); if ( !m_xCurrentForm.is() ) return; @@ -2198,7 +2152,6 @@ void FmXFormShell::forgetCurrentForm() //------------------------------------------------------------------------------ void FmXFormShell::impl_updateCurrentForm( const Reference< XForm >& _rxNewCurForm ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::impl_updateCurrentForm" ); if ( impl_checkDisposed() ) return; @@ -2217,7 +2170,6 @@ void FmXFormShell::impl_updateCurrentForm( const Reference< XForm >& _rxNewCurFo //------------------------------------------------------------------------------ void FmXFormShell::startListening() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::startListening" ); if ( impl_checkDisposed() ) return; @@ -2297,7 +2249,6 @@ void FmXFormShell::startListening() //------------------------------------------------------------------------------ void FmXFormShell::stopListening() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::stopListening" ); if ( impl_checkDisposed() ) return; @@ -2321,7 +2272,6 @@ void FmXFormShell::stopListening() //------------------------------------------------------------------------------ void FmXFormShell::ShowSelectionProperties( sal_Bool bShow ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ShowSelectionProperties" ); if ( impl_checkDisposed() ) return; @@ -2652,7 +2602,6 @@ IMPL_LINK(FmXFormShell, OnSearchContextRequest, FmSearchContext*, pfmscContextIn //------------------------------------------------------------------------------ void FmXFormShell::elementInserted(const ContainerEvent& evt) throw(::com::sun::star::uno::RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::elementInserted" ); if ( impl_checkDisposed() ) return; @@ -2666,7 +2615,6 @@ void FmXFormShell::elementInserted(const ContainerEvent& evt) throw(::com::sun:: //------------------------------------------------------------------------------ void FmXFormShell::elementReplaced(const ContainerEvent& evt) throw(::com::sun::star::uno::RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::elementReplaced" ); if ( impl_checkDisposed() ) return; @@ -2680,7 +2628,6 @@ void FmXFormShell::elementReplaced(const ContainerEvent& evt) throw(::com::sun:: //------------------------------------------------------------------------------ void FmXFormShell::elementRemoved(const ContainerEvent& evt) throw(::com::sun::star::uno::RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::elementRemoved" ); if ( impl_checkDisposed() ) return; @@ -2693,7 +2640,6 @@ void FmXFormShell::elementRemoved(const ContainerEvent& evt) throw(::com::sun::s //------------------------------------------------------------------------------ void FmXFormShell::UpdateForms( sal_Bool _bInvalidate ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::UpdateForms" ); if ( impl_checkDisposed() ) return; @@ -2719,7 +2665,6 @@ void FmXFormShell::UpdateForms( sal_Bool _bInvalidate ) //------------------------------------------------------------------------------ void FmXFormShell::AddElement(const Reference< XInterface>& _xElement) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::AddElement" ); if ( impl_checkDisposed() ) return; impl_AddElement_nothrow(_xElement); @@ -2752,7 +2697,6 @@ void FmXFormShell::impl_AddElement_nothrow(const Reference< XInterface>& Element //------------------------------------------------------------------------------ void FmXFormShell::RemoveElement(const Reference< XInterface>& Element) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::RemoveElement" ); if ( impl_checkDisposed() ) return; impl_RemoveElement_nothrow(Element); @@ -2789,7 +2733,6 @@ void FmXFormShell::impl_RemoveElement_nothrow(const Reference< XInterface>& Elem //------------------------------------------------------------------------------ void FmXFormShell::selectionChanged(const EventObject& rEvent) throw(::com::sun::star::uno::RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::selectionChanged" ); if ( impl_checkDisposed() ) return; @@ -2831,7 +2774,6 @@ IMPL_LINK(FmXFormShell, OnTimeOut, void*, /*EMPTYTAG*/) //------------------------------------------------------------------------ void FmXFormShell::SetSelectionDelayed() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetSelectionDelayed" ); if ( impl_checkDisposed() ) return; @@ -2842,7 +2784,6 @@ void FmXFormShell::SetSelectionDelayed() //------------------------------------------------------------------------ void FmXFormShell::SetSelection(const SdrMarkList& rMarkList) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetSelection" ); if ( impl_checkDisposed() ) return; @@ -2853,7 +2794,6 @@ void FmXFormShell::SetSelection(const SdrMarkList& rMarkList) //------------------------------------------------------------------------ void FmXFormShell::DetermineSelection(const SdrMarkList& rMarkList) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::DetermineSelection" ); if ( setCurrentSelectionFromMark( rMarkList ) && IsPropBrwOpen() ) ShowSelectionProperties( sal_True ); } @@ -2861,7 +2801,6 @@ void FmXFormShell::DetermineSelection(const SdrMarkList& rMarkList) //------------------------------------------------------------------------------ sal_Bool FmXFormShell::IsPropBrwOpen() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::IsPropBrwOpen" ); if ( impl_checkDisposed() ) return sal_False; @@ -2898,7 +2837,6 @@ public: //------------------------------------------------------------------------------ void FmXFormShell::SetDesignMode(sal_Bool bDesign) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetDesignMode" ); if ( impl_checkDisposed() ) return; @@ -3031,7 +2969,6 @@ Reference< XControl> FmXFormShell::impl_getControl( const Reference< XControlMod void FmXFormShell::impl_collectFormSearchContexts_nothrow( const Reference< XInterface>& _rxStartingPoint, const ::rtl::OUString& _rCurrentLevelPrefix, FmFormArray& _out_rForms, ::std::vector< String >& _out_rNames ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::impl_collectFormSearchContexts_nothrow" ); try { Reference< XIndexAccess> xContainer( _rxStartingPoint, UNO_QUERY ); @@ -3086,7 +3023,6 @@ void FmXFormShell::impl_collectFormSearchContexts_nothrow( const Reference< XInt //------------------------------------------------------------------------------ void FmXFormShell::startFiltering() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::startFiltering" ); if ( impl_checkDisposed() ) return; @@ -3103,12 +3039,14 @@ void FmXFormShell::startFiltering() else xContainer = getActiveController()->getContainer(); - FmWinRecList::iterator i = pXView->findWindow(xContainer); - if (i != pXView->getWindowList().end()) + PFormViewPageWindowAdapter pAdapter = pXView->findWindow( xContainer ); + if ( pAdapter.is() ) { - const ::std::vector< Reference< runtime::XFormController> >& rControllerList = (*i)->GetList(); - for (::std::vector< Reference< runtime::XFormController> >::const_iterator j = rControllerList.begin(); - j != rControllerList.end(); ++j) + const ::std::vector< Reference< runtime::XFormController> >& rControllerList = pAdapter->GetList(); + for ( ::std::vector< Reference< runtime::XFormController> >::const_iterator j = rControllerList.begin(); + j != rControllerList.end(); + ++j + ) { Reference< XModeSelector> xModeSelector(*j, UNO_QUERY); if (xModeSelector.is()) @@ -3161,7 +3099,6 @@ void saveFilter(const Reference< runtime::XFormController >& _rxController) //------------------------------------------------------------------------------ void FmXFormShell::stopFiltering(sal_Bool bSave) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::stopFiltering" ); if ( impl_checkDisposed() ) return; @@ -3179,10 +3116,10 @@ void FmXFormShell::stopFiltering(sal_Bool bSave) else xContainer = getActiveController()->getContainer(); - FmWinRecList::iterator i = pXView->findWindow(xContainer); - if (i != pXView->getWindowList().end()) + PFormViewPageWindowAdapter pAdapter = pXView->findWindow(xContainer); + if ( pAdapter.is() ) { - const ::std::vector< Reference< runtime::XFormController > >& rControllerList = (*i)->GetList(); + const ::std::vector< Reference< runtime::XFormController > >& rControllerList = pAdapter->GetList(); ::std::vector < ::rtl::OUString > aOriginalFilters; ::std::vector < sal_Bool > aOriginalApplyFlags; @@ -3223,7 +3160,7 @@ void FmXFormShell::stopFiltering(sal_Bool bSave) } if (bSave) // execute the filter { - const ::std::vector< Reference< runtime::XFormController > > & rControllers = (*i)->GetList(); + const ::std::vector< Reference< runtime::XFormController > > & rControllers = pAdapter->GetList(); for (::std::vector< Reference< runtime::XFormController > > ::const_iterator j = rControllers.begin(); j != rControllers.end(); ++j) { @@ -3300,7 +3237,6 @@ void clearFilter(const Reference< runtime::XFormController >& _rxController) //------------------------------------------------------------------------------ void FmXFormShell::clearFilter() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::clearFilter" ); if ( impl_checkDisposed() ) return; @@ -3316,12 +3252,14 @@ void FmXFormShell::clearFilter() else xContainer = getActiveController()->getContainer(); - FmWinRecList::iterator i = pXView->findWindow(xContainer); - if (i != pXView->getWindowList().end()) + PFormViewPageWindowAdapter pAdapter = pXView->findWindow(xContainer); + if ( pAdapter.is() ) { - const ::std::vector< Reference< runtime::XFormController > > & rControllerList = (*i)->GetList(); - for (::std::vector< Reference< runtime::XFormController > > ::const_iterator j = rControllerList.begin(); - j != rControllerList.end(); ++j) + const ::std::vector< Reference< runtime::XFormController > > & rControllerList = pAdapter->GetList(); + for ( ::std::vector< Reference< runtime::XFormController > > ::const_iterator j = rControllerList.begin(); + j != rControllerList.end(); + ++j + ) { ::clearFilter(*j); } @@ -3331,7 +3269,6 @@ void FmXFormShell::clearFilter() //------------------------------------------------------------------------------ void FmXFormShell::CreateExternalView() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::CreateExternalView" ); if ( impl_checkDisposed() ) return; @@ -3746,7 +3683,6 @@ void FmXFormShell::CreateExternalView() //------------------------------------------------------------------------ void FmXFormShell::implAdjustConfigCache() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::implAdjustConfigCache" ); // get (cache) the wizard usage flag Sequence< ::rtl::OUString > aNames(1); aNames[0] = ::rtl::OUString::createFromAscii("FormControlPilotsEnabled"); @@ -3758,7 +3694,6 @@ void FmXFormShell::implAdjustConfigCache() //------------------------------------------------------------------------ void FmXFormShell::Notify( const com::sun::star::uno::Sequence< rtl::OUString >& _rPropertyNames) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::Notify" ); if ( impl_checkDisposed() ) return; @@ -3779,7 +3714,6 @@ void FmXFormShell::Commit() //------------------------------------------------------------------------ void FmXFormShell::SetWizardUsing(sal_Bool _bUseThem) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetWizardUsing" ); m_bUseWizards = _bUseThem; Sequence< ::rtl::OUString > aNames(1); @@ -3792,7 +3726,6 @@ void FmXFormShell::SetWizardUsing(sal_Bool _bUseThem) //------------------------------------------------------------------------ void FmXFormShell::viewDeactivated( FmFormView& _rCurrentView, sal_Bool _bDeactivateController /* = sal_True */ ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::viewDeactivated" ); if ( _rCurrentView.GetImpl() && !_rCurrentView.IsDesignMode() ) { @@ -3864,7 +3797,6 @@ IMPL_LINK( FmXFormShell, OnFormsCreated, FmFormPage*, /*_pPage*/ ) //------------------------------------------------------------------------ void FmXFormShell::viewActivated( FmFormView& _rCurrentView, sal_Bool _bSyncAction /* = sal_False */ ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::viewActivated" ); FmFormPage* pPage = _rCurrentView.GetCurPage(); @@ -3913,7 +3845,6 @@ void FmXFormShell::viewActivated( FmFormView& _rCurrentView, sal_Bool _bSyncActi //------------------------------------------------------------------------------ void FmXFormShell::impl_defaultCurrentForm_nothrow() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::impl_defaultCurrentForm_nothrow" ); if ( impl_checkDisposed() ) return; @@ -3944,7 +3875,6 @@ void FmXFormShell::impl_defaultCurrentForm_nothrow() //------------------------------------------------------------------------------ void FmXFormShell::smartControlReset( const Reference< XIndexAccess >& _rxModels ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::smartControlReset" ); if (!_rxModels.is()) { DBG_ERROR("FmXFormShell::smartControlReset: invalid container!"); @@ -4052,7 +3982,6 @@ namespace //------------------------------------------------------------------------ void FmXFormShell::loadForms( FmFormPage* _pPage, const sal_uInt16 _nBehaviour /* FORMS_LOAD | FORMS_SYNC */ ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::loadForms" ); DBG_ASSERT( ( _nBehaviour & ( FORMS_ASYNC | FORMS_UNLOAD ) ) != ( FORMS_ASYNC | FORMS_UNLOAD ), "FmXFormShell::loadForms: async loading not supported - this will heavily fail!" ); @@ -4130,41 +4059,35 @@ void FmXFormShell::loadForms( FmFormPage* _pPage, const sal_uInt16 _nBehaviour / //------------------------------------------------------------------------ void FmXFormShell::ExecuteTextAttribute( SfxRequest& _rReq ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ExecuteTextAttribute" ); m_pTextShell->ExecuteTextAttribute( _rReq ); } //------------------------------------------------------------------------ void FmXFormShell::GetTextAttributeState( SfxItemSet& _rSet ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::GetTextAttributeState" ); m_pTextShell->GetTextAttributeState( _rSet ); } //------------------------------------------------------------------------ bool FmXFormShell::IsActiveControl( bool _bCountRichTextOnly ) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::IsActiveControl" ); return m_pTextShell->IsActiveControl( _bCountRichTextOnly ); } //------------------------------------------------------------------------ void FmXFormShell::ForgetActiveControl() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::ForgetActiveControl" ); m_pTextShell->ForgetActiveControl(); } //------------------------------------------------------------------------ void FmXFormShell::SetControlActivationHandler( const Link& _rHdl ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::SetControlActivationHandler" ); m_pTextShell->SetControlActivationHandler( _rHdl ); } //------------------------------------------------------------------------ void FmXFormShell::handleShowPropertiesRequest() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::handleShowPropertiesRequest" ); if ( onlyControlsAreMarked() ) ShowSelectionProperties( sal_True ); } @@ -4172,7 +4095,6 @@ void FmXFormShell::handleShowPropertiesRequest() //------------------------------------------------------------------------ void FmXFormShell::handleMouseButtonDown( const SdrViewEvent& _rViewEvent ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormShell::handleMouseButtonDown" ); // catch simple double clicks if ( ( _rViewEvent.nMouseClicks == 2 ) && ( _rViewEvent.nMouseCode == MOUSE_LEFT ) ) { @@ -4284,7 +4206,6 @@ ControlConversionMenuController::ControlConversionMenuController( sal_uInt16 _nI //------------------------------------------------------------------------------ ControlConversionMenuController::~ControlConversionMenuController() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "ControlConversionMenuController::~ControlConversionMenuController" ); m_pMainMenu->SetPopupMenu(SID_FM_CHANGECONTROLTYPE, NULL); delete m_pConversionMenu; } diff --git a/svx/source/form/fmsrcimp.cxx b/svx/source/form/fmsrcimp.cxx index a4bb5753e8bb..ee870f0c29b0 100644 --- a/svx/source/form/fmsrcimp.cxx +++ b/svx/source/form/fmsrcimp.cxx @@ -82,11 +82,6 @@ using namespace ::com::sun::star::i18n; using namespace ::com::sun::star::beans; using namespace ::svxform; -// *************************************************************************************************** - -// *************************************************************************************************** - -SV_IMPL_OBJARR(SvInt32Array, sal_Int32); //======================================================================== // = FmSearchThread @@ -848,7 +843,7 @@ void FmSearchEngine::Init(const ::rtl::OUString& sVisibleFields) // analyze the fields // additionally, create the mapping: because the list of used columns can be shorter than the list // of columns of the cursor, we need a mapping: "used column numer n" -> "cursor column m" - m_arrFieldMapping.Remove(0, m_arrFieldMapping.Count()); + m_arrFieldMapping.clear(); // important: The case of the columns does not need to be exact - for instance: // - a user created a form which works on a table, for which the driver returns a column name "COLUMN" @@ -911,8 +906,8 @@ void FmSearchEngine::Init(const ::rtl::OUString& sVisibleFields) } // set the field selection back to the first pFieldNames = seqFieldNames.getArray();; - DBG_ASSERT(nFoundIndex != -1, "FmSearchEngine::Init : Es wurden ungueltige Feldnamen angegeben !"); - m_arrFieldMapping.Insert(nFoundIndex, m_arrFieldMapping.Count()); + DBG_ASSERT(nFoundIndex != -1, "FmSearchEngine::Init : Invalid field name were given !"); + m_arrFieldMapping.push_back(nFoundIndex); } } catch(Exception&) @@ -1273,18 +1268,21 @@ void FmSearchEngine::RebuildUsedFields(sal_Int32 nFieldIndex, sal_Bool bForce) return; // (da ich keinen Wechsel des Iterators von aussen zulasse, heisst selber ::com::sun::star::sdbcx::Index auch immer selbe Spalte, also habe ich nix zu tun) - DBG_ASSERT((nFieldIndex >= -1) && (nFieldIndex<m_arrFieldMapping.Count()), "FmSearchEngine::RebuildUsedFields : nFieldIndex ist ungueltig !"); + DBG_ASSERT((nFieldIndex == -1) || + ((nFieldIndex >= 0) && + (static_cast<size_t>(nFieldIndex) < m_arrFieldMapping.size())), + "FmSearchEngine::RebuildUsedFields : nFieldIndex is invalid!"); // alle Felder, die ich durchsuchen muss, einsammeln m_arrUsedFields.clear(); if (nFieldIndex == -1) { Reference< ::com::sun::star::container::XIndexAccess > xFields; - for (sal_uInt16 i=0; i<m_arrFieldMapping.Count(); ++i) + for (size_t i=0; i<m_arrFieldMapping.size(); ++i) { Reference< ::com::sun::star::sdbcx::XColumnsSupplier > xSupplyCols(IFACECAST(m_xSearchCursor), UNO_QUERY); DBG_ASSERT(xSupplyCols.is(), "FmSearchEngine::RebuildUsedFields : invalid cursor (no columns supplier) !"); xFields = Reference< ::com::sun::star::container::XIndexAccess > (xSupplyCols->getColumns(), UNO_QUERY); - BuildAndInsertFieldInfo(xFields, m_arrFieldMapping.GetObject(i)); + BuildAndInsertFieldInfo(xFields, m_arrFieldMapping[i]); } } else @@ -1293,7 +1291,7 @@ void FmSearchEngine::RebuildUsedFields(sal_Int32 nFieldIndex, sal_Bool bForce) Reference< ::com::sun::star::sdbcx::XColumnsSupplier > xSupplyCols(IFACECAST(m_xSearchCursor), UNO_QUERY); DBG_ASSERT(xSupplyCols.is(), "FmSearchEngine::RebuildUsedFields : invalid cursor (no columns supplier) !"); xFields = Reference< ::com::sun::star::container::XIndexAccess > (xSupplyCols->getColumns(), UNO_QUERY); - BuildAndInsertFieldInfo(xFields, m_arrFieldMapping.GetObject((sal_uInt16)nFieldIndex)); + BuildAndInsertFieldInfo(xFields, m_arrFieldMapping[static_cast< size_t >(nFieldIndex)]); } m_nCurrentFieldIndex = nFieldIndex; diff --git a/svx/source/form/fmvwimp.cxx b/svx/source/form/fmvwimp.cxx index 0bf6a35abd98..2bf00300a5a5 100644 --- a/svx/source/form/fmvwimp.cxx +++ b/svx/source/form/fmvwimp.cxx @@ -173,20 +173,19 @@ public: }; //======================================================================== -DBG_NAME(FmXPageViewWinRec) +DBG_NAME(FormViewPageWindowAdapter) //------------------------------------------------------------------------ -FmXPageViewWinRec::FmXPageViewWinRec( const ::comphelper::ComponentContext& _rContext, const SdrPageWindow& _rWindow, FmXFormView* _pViewImpl ) +FormViewPageWindowAdapter::FormViewPageWindowAdapter( const ::comphelper::ComponentContext& _rContext, const SdrPageWindow& _rWindow, FmXFormView* _pViewImpl ) : m_xControlContainer( _rWindow.GetControlContainer() ), m_aContext( _rContext ), m_pViewImpl( _pViewImpl ), m_pWindow( dynamic_cast< Window* >( &_rWindow.GetPaintWindow().GetOutputDevice() ) ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::FmXPageViewWinRec" ); - DBG_CTOR(FmXPageViewWinRec,NULL); + DBG_CTOR(FormViewPageWindowAdapter,NULL); // create an XFormController for every form FmFormPage* pFormPage = dynamic_cast< FmFormPage* >( _rWindow.GetPageView().GetPage() ); - DBG_ASSERT( pFormPage, "FmXPageViewWinRec::FmXPageViewWinRec: no FmFormPage found!" ); + DBG_ASSERT( pFormPage, "FormViewPageWindowAdapter::FormViewPageWindowAdapter: no FmFormPage found!" ); if ( pFormPage ) { try @@ -207,15 +206,14 @@ FmXPageViewWinRec::FmXPageViewWinRec( const ::comphelper::ComponentContext& _rCo } } // ----------------------------------------------------------------------------- -FmXPageViewWinRec::~FmXPageViewWinRec() +FormViewPageWindowAdapter::~FormViewPageWindowAdapter() { - DBG_DTOR(FmXPageViewWinRec,NULL); + DBG_DTOR(FormViewPageWindowAdapter,NULL); } //------------------------------------------------------------------ -void FmXPageViewWinRec::dispose() +void FormViewPageWindowAdapter::dispose() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::dispose" ); for ( ::std::vector< Reference< XFormController > >::const_iterator i = m_aControllerList.begin(); i != m_aControllerList.end(); ++i @@ -249,39 +247,34 @@ void FmXPageViewWinRec::dispose() //------------------------------------------------------------------------------ -sal_Bool SAL_CALL FmXPageViewWinRec::hasElements(void) throw( RuntimeException ) +sal_Bool SAL_CALL FormViewPageWindowAdapter::hasElements(void) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::hasElements" ); return getCount() != 0; } //------------------------------------------------------------------------------ -Type SAL_CALL FmXPageViewWinRec::getElementType(void) throw( RuntimeException ) +Type SAL_CALL FormViewPageWindowAdapter::getElementType(void) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::getElementType" ); return ::getCppuType((const Reference< XFormController>*)0); } // XEnumerationAccess //------------------------------------------------------------------------------ -Reference< XEnumeration > SAL_CALL FmXPageViewWinRec::createEnumeration(void) throw( RuntimeException ) +Reference< XEnumeration > SAL_CALL FormViewPageWindowAdapter::createEnumeration(void) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::createEnumeration" ); return new ::comphelper::OEnumerationByIndex(this); } // XIndexAccess //------------------------------------------------------------------------------ -sal_Int32 SAL_CALL FmXPageViewWinRec::getCount(void) throw( RuntimeException ) +sal_Int32 SAL_CALL FormViewPageWindowAdapter::getCount(void) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::getCount" ); return m_aControllerList.size(); } //------------------------------------------------------------------------------ -Any SAL_CALL FmXPageViewWinRec::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, RuntimeException ) +Any SAL_CALL FormViewPageWindowAdapter::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBoundsException, WrappedTargetException, RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::getByIndex" ); if (nIndex < 0 || nIndex >= getCount()) throw IndexOutOfBoundsException(); @@ -292,7 +285,7 @@ Any SAL_CALL FmXPageViewWinRec::getByIndex(sal_Int32 nIndex) throw( IndexOutOfBo } //------------------------------------------------------------------------ -void SAL_CALL FmXPageViewWinRec::makeVisible( const Reference< XControl >& _Control ) throw (RuntimeException) +void SAL_CALL FormViewPageWindowAdapter::makeVisible( const Reference< XControl >& _Control ) throw (RuntimeException) { ::vos::OGuard aSolarGuard(Application::GetSolarMutex()); @@ -331,9 +324,8 @@ Reference< XFormController > getControllerSearchChilds( const Reference< XIndex // Search the according controller //------------------------------------------------------------------------ -Reference< XFormController > FmXPageViewWinRec::getController( const Reference< XForm > & xForm ) const +Reference< XFormController > FormViewPageWindowAdapter::getController( const Reference< XForm > & xForm ) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::getController" ); Reference< XTabControllerModel > xModel(xForm, UNO_QUERY); for (::std::vector< Reference< XFormController > >::const_iterator i = m_aControllerList.begin(); i != m_aControllerList.end(); i++) @@ -350,9 +342,9 @@ Reference< XFormController > FmXPageViewWinRec::getController( const Reference< } //------------------------------------------------------------------------ -void FmXPageViewWinRec::setController(const Reference< XForm > & xForm, const Reference< XFormController >& _rxParentController ) +void FormViewPageWindowAdapter::setController(const Reference< XForm > & xForm, const Reference< XFormController >& _rxParentController ) { - DBG_ASSERT( xForm.is(), "FmXPageViewWinRec::setController: there should be a form!" ); + DBG_ASSERT( xForm.is(), "FormViewPageWindowAdapter::setController: there should be a form!" ); Reference< XIndexAccess > xFormCps(xForm, UNO_QUERY); if (!xFormCps.is()) return; @@ -410,10 +402,9 @@ void FmXPageViewWinRec::setController(const Reference< XForm > & xForm, const Re } //------------------------------------------------------------------------ -void FmXPageViewWinRec::updateTabOrder( const Reference< XForm >& _rxForm ) +void FormViewPageWindowAdapter::updateTabOrder( const Reference< XForm >& _rxForm ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXPageViewWinRec::updateTabOrder" ); - OSL_PRECOND( _rxForm.is(), "FmXPageViewWinRec::updateTabOrder: illegal argument!" ); + OSL_PRECOND( _rxForm.is(), "FormViewPageWindowAdapter::updateTabOrder: illegal argument!" ); if ( !_rxForm.is() ) return; @@ -457,13 +448,11 @@ FmXFormView::FmXFormView(const ::comphelper::ComponentContext& _rContext, FmForm ,m_bFirstActivation( true ) ,m_isTabOrderUpdateSuspended( false ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::FmXFormView" ); } //------------------------------------------------------------------------ void FmXFormView::cancelEvents() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::cancelEvents" ); if ( m_nActivationEvent ) { Application::RemoveUserEvent( m_nActivationEvent ); @@ -492,7 +481,6 @@ void FmXFormView::cancelEvents() //------------------------------------------------------------------------ void FmXFormView::notifyViewDying( ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::notifyViewDying" ); DBG_ASSERT( m_pView, "FmXFormView::notifyViewDying: my view already died!" ); m_pView = NULL; cancelEvents(); @@ -501,7 +489,17 @@ void FmXFormView::notifyViewDying( ) //------------------------------------------------------------------------ FmXFormView::~FmXFormView() { - DBG_ASSERT(m_aWinList.size() == 0, "FmXFormView::~FmXFormView: Window list not empty!"); + DBG_ASSERT( m_aPageWindowAdapters.empty(), "FmXFormView::~FmXFormView: Window list not empty!" ); + if ( !m_aPageWindowAdapters.empty() ) + { + for ( PageWindowAdapterList::const_iterator loop = m_aPageWindowAdapters.begin(); + loop != m_aPageWindowAdapters.end(); + ++loop + ) + { + (*loop)->dispose(); + } + } cancelEvents(); @@ -513,7 +511,6 @@ FmXFormView::~FmXFormView() //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::disposing(const EventObject& Source) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::disposing" ); if ( m_xWindow.is() && Source.Source == m_xWindow ) removeGridWindowListening(); } @@ -522,7 +519,6 @@ void SAL_CALL FmXFormView::disposing(const EventObject& Source) throw( RuntimeEx //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::formActivated(const EventObject& rEvent) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::formActivated" ); if ( m_pView && m_pView->GetFormShell() && m_pView->GetFormShell()->GetImpl() ) m_pView->GetFormShell()->GetImpl()->formActivated( rEvent ); } @@ -530,7 +526,6 @@ void SAL_CALL FmXFormView::formActivated(const EventObject& rEvent) throw( Runti //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::formDeactivated(const EventObject& rEvent) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::formDeactivated" ); if ( m_pView && m_pView->GetFormShell() && m_pView->GetFormShell()->GetImpl() ) m_pView->GetFormShell()->GetImpl()->formDeactivated( rEvent ); } @@ -539,7 +534,6 @@ void SAL_CALL FmXFormView::formDeactivated(const EventObject& rEvent) throw( Run //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::elementInserted(const ContainerEvent& evt) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::elementInserted" ); try { Reference< XControlContainer > xControlContainer( evt.Source, UNO_QUERY_THROW ); @@ -554,11 +548,9 @@ void SAL_CALL FmXFormView::elementInserted(const ContainerEvent& evt) throw( Run } else { - FmWinRecList::iterator pos = findWindow( xControlContainer ); - if ( pos != m_aWinList.end() ) - { - (*pos)->updateTabOrder( xForm ); - } + PFormViewPageWindowAdapter pAdapter = findWindow( xControlContainer ); + if ( pAdapter.is() ) + pAdapter->updateTabOrder( xForm ); } } catch( const Exception& ) @@ -570,92 +562,80 @@ void SAL_CALL FmXFormView::elementInserted(const ContainerEvent& evt) throw( Run //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::elementReplaced(const ContainerEvent& evt) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::elementReplaced" ); elementInserted(evt); } //------------------------------------------------------------------------------ void SAL_CALL FmXFormView::elementRemoved(const ContainerEvent& /*evt*/) throw( RuntimeException ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::elementRemoved" ); } //------------------------------------------------------------------------------ -FmWinRecList::const_iterator FmXFormView::findWindow( const Reference< XControlContainer >& _rxCC ) const +PFormViewPageWindowAdapter FmXFormView::findWindow( const Reference< XControlContainer >& _rxCC ) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::findWindow" ); - for (FmWinRecList::const_iterator i = m_aWinList.begin(); - i != m_aWinList.end(); i++) - { - if ( _rxCC == (*i)->getControlContainer() ) - return i; - } - return m_aWinList.end(); -} - -//------------------------------------------------------------------------------ -FmWinRecList::iterator FmXFormView::findWindow( const Reference< XControlContainer >& _rxCC ) -{ - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::findWindow" ); - for (FmWinRecList::iterator i = m_aWinList.begin(); - i != m_aWinList.end(); i++) + for ( PageWindowAdapterList::const_iterator i = m_aPageWindowAdapters.begin(); + i != m_aPageWindowAdapters.end(); + ++i + ) { if ( _rxCC == (*i)->getControlContainer() ) - return i; + return *i; } - return m_aWinList.end(); + return NULL; } //------------------------------------------------------------------------------ void FmXFormView::addWindow(const SdrPageWindow& rWindow) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::addWindow" ); FmFormPage* pFormPage = PTR_CAST( FmFormPage, rWindow.GetPageView().GetPage() ); if ( !pFormPage ) return; Reference< XControlContainer > xCC = rWindow.GetControlContainer(); - if ( xCC.is() && findWindow( xCC ) == m_aWinList.end()) + if ( xCC.is() + && ( !findWindow( xCC ).is() ) + ) { - FmXPageViewWinRec *pFmRec = new FmXPageViewWinRec( m_aContext, rWindow, this ); - pFmRec->acquire(); - - m_aWinList.push_back(pFmRec); + PFormViewPageWindowAdapter pAdapter = new FormViewPageWindowAdapter( m_aContext, rWindow, this ); + m_aPageWindowAdapters.push_back( pAdapter ); // Am ControlContainer horchen um Aenderungen mitzbekommen Reference< XContainer > xContainer( xCC, UNO_QUERY ); - if (xContainer.is()) - xContainer->addContainerListener(this); + if ( xContainer.is() ) + xContainer->addContainerListener( this ); } } //------------------------------------------------------------------------------ void FmXFormView::removeWindow( const Reference< XControlContainer >& _rxCC ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::removeWindow" ); // Wird gerufen, wenn // - in den Design-Modus geschaltet wird // - ein Window geloescht wird, waehrend man im Design-Modus ist // - der Control-Container fuer ein Window entfernt wird, waehrend // der aktive Modus eingeschaltet ist. - FmWinRecList::iterator i = findWindow( _rxCC ); - if (i != m_aWinList.end()) + + for ( PageWindowAdapterList::iterator i = m_aPageWindowAdapters.begin(); + i != m_aPageWindowAdapters.end(); + ++i + ) { - // Am ControlContainer horchen um Aenderungen mitzbekommen + if ( _rxCC != (*i)->getControlContainer() ) + continue; + Reference< XContainer > xContainer( _rxCC, UNO_QUERY ); - if (xContainer.is()) - xContainer->removeContainerListener(this); + if ( xContainer.is() ) + xContainer->removeContainerListener( this ); (*i)->dispose(); - (*i)->release(); - m_aWinList.erase(i); + m_aPageWindowAdapters.erase( i ); + break; } } //------------------------------------------------------------------------------ void FmXFormView::displayAsyncErrorMessage( const SQLErrorEvent& _rEvent ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::displayAsyncErrorMessage" ); DBG_ASSERT( 0 == m_nErrorMessageEvent, "FmXFormView::displayAsyncErrorMessage: not too fast, please!" ); // This should not happen - usually, the PostUserEvent is faster than any possible user // interaction which could trigger a new error. If it happens, we need a queue for the events. @@ -674,7 +654,6 @@ IMPL_LINK(FmXFormView, OnDelayedErrorMessage, void*, /*EMPTYTAG*/) //------------------------------------------------------------------------------ void FmXFormView::onFirstViewActivation( const FmFormModel* _pDocModel ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::onFirstViewActivation" ); if ( _pDocModel && _pDocModel->GetAutoControlFocus() ) m_nAutoFocusEvent = Application::PostUserEvent( LINK( this, FmXFormView, OnAutoFocus ) ); } @@ -682,7 +661,6 @@ void FmXFormView::onFirstViewActivation( const FmFormModel* _pDocModel ) //------------------------------------------------------------------------------ void FmXFormView::suspendTabOrderUpdate() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::suspendTabOrderUpdate" ); OSL_ENSURE( !m_isTabOrderUpdateSuspended, "FmXFormView::suspendTabOrderUpdate: nesting not allowed!" ); m_isTabOrderUpdateSuspended = true; } @@ -690,7 +668,6 @@ void FmXFormView::suspendTabOrderUpdate() //------------------------------------------------------------------------------ void FmXFormView::resumeTabOrderUpdate() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::resumeTabOrderUpdate" ); OSL_ENSURE( m_isTabOrderUpdateSuspended, "FmXFormView::resumeTabOrderUpdate: not suspended!" ); m_isTabOrderUpdateSuspended = false; @@ -700,8 +677,8 @@ void FmXFormView::resumeTabOrderUpdate() ++container ) { - FmWinRecList::iterator pos = findWindow( container->first ); - if ( pos == m_aWinList.end() ) + PFormViewPageWindowAdapter pAdapter = findWindow( container->first ); + if ( !pAdapter.is() ) continue; for ( SetOfForms::const_iterator form = container->second.begin(); @@ -709,7 +686,7 @@ void FmXFormView::resumeTabOrderUpdate() ++form ) { - (*pos)->updateTabOrder( *form ); + pAdapter->updateTabOrder( *form ); } } m_aNeedTabOrderUpdate.clear(); @@ -730,41 +707,42 @@ IMPL_LINK(FmXFormView, OnActivate, void*, /*EMPTYTAG*/) if (m_pView->GetFormShell() && m_pView->GetActualOutDev() && m_pView->GetActualOutDev()->GetOutDevType() == OUTDEV_WINDOW) { Window* pWindow = const_cast<Window*>(static_cast<const Window*>(m_pView->GetActualOutDev())); - FmXPageViewWinRec* pFmRec = m_aWinList.size() ? m_aWinList[0] : NULL; - for (FmWinRecList::const_iterator i = m_aWinList.begin(); - i != m_aWinList.end(); i++) + PFormViewPageWindowAdapter pAdapter = m_aPageWindowAdapters.empty() ? NULL : m_aPageWindowAdapters[0]; + for ( PageWindowAdapterList::const_iterator i = m_aPageWindowAdapters.begin(); + i != m_aPageWindowAdapters.end(); + ++i + ) { - if (pWindow == (*i)->getWindow()) - pFmRec =*i; + if ( pWindow == (*i)->getWindow() ) + pAdapter =*i; } - if (pFmRec) + if ( pAdapter.get() ) { - for (::std::vector< Reference< XFormController > >::const_iterator i = pFmRec->GetList().begin(); - i != pFmRec->GetList().end(); i++) + for ( ::std::vector< Reference< XFormController > >::const_iterator i = pAdapter->GetList().begin(); + i != pAdapter->GetList().end(); + ++i + ) { const Reference< XFormController > & xController = *i; - if (xController.is()) + if ( !xController.is() ) + continue; + + // only database forms are to be activated + Reference< XRowSet > xForm(xController->getModel(), UNO_QUERY); + if ( !xForm.is() || !OStaticDataAccessTools().getRowSetConnection( xForm ).is() ) + continue; + + Reference< XPropertySet > xFormSet( xForm, UNO_QUERY ); + ENSURE_OR_CONTINUE( xFormSet.is(), "FmXFormView::OnActivate: a form which does not have properties?" ); + + const ::rtl::OUString aSource = ::comphelper::getString( xFormSet->getPropertyValue( FM_PROP_COMMAND ) ); + if ( aSource.getLength() ) { - // Nur bei Datenbankformularen erfolgt eine aktivierung - Reference< XRowSet > xForm(xController->getModel(), UNO_QUERY); - if (xForm.is() && OStaticDataAccessTools().getRowSetConnection(xForm).is()) - { - Reference< XPropertySet > xFormSet(xForm, UNO_QUERY); - if (xFormSet.is()) - { - // wenn es eine Datenquelle gibt, dann als aktive ::com::sun::star::form setzen - ::rtl::OUString aSource = ::comphelper::getString(xFormSet->getPropertyValue(FM_PROP_COMMAND)); - if (aSource.getLength()) - { - // benachrichtigung der Shell - FmXFormShell* pShImpl = m_pView->GetFormShell()->GetImpl(); - if (pShImpl) - pShImpl->setActiveController(xController); - break; - } - } - } + FmXFormShell* pShImpl = m_pView->GetFormShell()->GetImpl(); + if ( pShImpl ) + pShImpl->setActiveController( xController ); + break; } } } @@ -775,7 +753,6 @@ IMPL_LINK(FmXFormView, OnActivate, void*, /*EMPTYTAG*/) //------------------------------------------------------------------------------ void FmXFormView::Activate(sal_Bool bSync) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::Activate" ); if (m_nActivationEvent) { Application::RemoveUserEvent(m_nActivationEvent); @@ -793,7 +770,6 @@ void FmXFormView::Activate(sal_Bool bSync) //------------------------------------------------------------------------------ void FmXFormView::Deactivate(BOOL bDeactivateController) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::Deactivate" ); if (m_nActivationEvent) { Application::RemoveUserEvent(m_nActivationEvent); @@ -808,13 +784,11 @@ void FmXFormView::Deactivate(BOOL bDeactivateController) //------------------------------------------------------------------------------ FmFormShell* FmXFormView::GetFormShell() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::GetFormShell" ); return m_pView ? m_pView->GetFormShell() : NULL; } // ----------------------------------------------------------------------------- void FmXFormView::AutoFocus( sal_Bool _bSync ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::AutoFocus" ); if (m_nAutoFocusEvent) Application::RemoveUserEvent(m_nAutoFocusEvent); @@ -927,18 +901,20 @@ namespace // ----------------------------------------------------------------------------- Reference< XFormController > FmXFormView::getFormController( const Reference< XForm >& _rxForm, const OutputDevice& _rDevice ) const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::getFormController" ); Reference< XFormController > xController; - for ( FmWinRecList::const_iterator rec = m_aWinList.begin(); rec != m_aWinList.end(); ++rec ) + for ( PageWindowAdapterList::const_iterator pos = m_aPageWindowAdapters.begin(); + pos != m_aPageWindowAdapters.end(); + ++pos + ) { - const FmXPageViewWinRec* pViewWinRec( *rec ); - OSL_ENSURE( pViewWinRec, "FmXFormView::getFormController: invalid PageViewWinRec!" ); - if ( !pViewWinRec || ( pViewWinRec->getWindow() != &_rDevice ) ) + const PFormViewPageWindowAdapter pAdapter( *pos ); + ENSURE_OR_CONTINUE( pAdapter.get(), "FmXFormView::getFormController: invalid page window adapter!" ); + if ( pAdapter->getWindow() != &_rDevice ) // wrong device continue; - xController = pViewWinRec->getController( _rxForm ); + xController = pAdapter->getController( _rxForm ); if ( xController.is() ) break; } @@ -960,12 +936,10 @@ IMPL_LINK(FmXFormView, OnAutoFocus, void*, /*EMPTYTAG*/) FmFormPage* pPage = m_pView ? PTR_CAST( FmFormPage, m_pView->GetSdrPageView()->GetPage() ) : NULL; Reference< XIndexAccess > xForms( pPage ? Reference< XIndexAccess >( pPage->GetForms(), UNO_QUERY ) : Reference< XIndexAccess >() ); - const FmXPageViewWinRec* pViewWinRec = m_aWinList.size() ? m_aWinList[0] : NULL; - const Window* pWindow = pViewWinRec ? pViewWinRec->getWindow() : NULL; + const PFormViewPageWindowAdapter pAdapter = m_aPageWindowAdapters.empty() ? NULL : m_aPageWindowAdapters[0]; + const Window* pWindow = pAdapter.get() ? pAdapter->getWindow() : NULL; - OSL_ENSURE( xForms.is() && pWindow, "FmXFormView::OnAutoFocus: could not collect all essentials!" ); - if ( !xForms.is() || !pWindow ) - return 0L; + ENSURE_OR_RETURN( xForms.is() && pWindow, "FmXFormView::OnAutoFocus: could not collect all essentials!", 0L ); try { @@ -973,7 +947,7 @@ IMPL_LINK(FmXFormView, OnAutoFocus, void*, /*EMPTYTAG*/) if ( !xForms->getCount() ) break; Reference< XForm > xForm( xForms->getByIndex( 0 ), UNO_QUERY_THROW ); - Reference< XTabController > xTabController( pViewWinRec->getController( xForm ), UNO_QUERY_THROW ); + Reference< XTabController > xTabController( pAdapter->getController( xForm ), UNO_QUERY_THROW ); // go for the first control of the controller Sequence< Reference< XControl > > aControls( xTabController->getControls() ); @@ -1024,7 +998,6 @@ IMPL_LINK(FmXFormView, OnAutoFocus, void*, /*EMPTYTAG*/) // ----------------------------------------------------------------------------- void FmXFormView::onCreatedFormObject( FmFormObj& _rFormObject ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::onCreatedFormObject" ); FmFormShell* pShell = m_pView ? m_pView->GetFormShell() : NULL; FmXFormShell* pShellImpl = pShell ? pShell->GetImpl() : NULL; OSL_ENSURE( pShellImpl, "FmXFormView::onCreatedFormObject: no form shell!" ); @@ -1155,7 +1128,6 @@ namespace // ----------------------------------------------------------------------------- SdrObject* FmXFormView::implCreateFieldControl( const ::svx::ODataAccessDescriptor& _rColumnDescriptor ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::implCreateFieldControl" ); // not if we're in design mode if ( !m_pView->IsDesignMode() ) return NULL; @@ -1387,7 +1359,6 @@ SdrObject* FmXFormView::implCreateFieldControl( const ::svx::ODataAccessDescript // ----------------------------------------------------------------------------- SdrObject* FmXFormView::implCreateXFormsControl( const ::svx::OXFormsDescriptor &_rDesc ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::implCreateXFormsControl" ); // not if we're in design mode if ( !m_pView->IsDesignMode() ) return NULL; @@ -1523,7 +1494,6 @@ bool FmXFormView::createControlLabelPair( OutputDevice& _rOutDev, sal_Int32 _nXO const Reference< XDataSource >& _rxDataSource, const ::rtl::OUString& _rDataSourceName, const ::rtl::OUString& _rCommand, const sal_Int32 _nCommandType ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::createControlLabelPair" ); if ( !createControlLabelPair( m_aContext, _rOutDev, _nXOffsetMM, _nYOffsetMM, _rxField, _rxNumberFormats, _nControlObjectID, _rFieldPostfix, FmFormInventor, OBJ_FM_FIXEDTEXT, NULL, NULL, NULL, _rpLabel, _rpControl ) @@ -1551,7 +1521,6 @@ bool FmXFormView::createControlLabelPair( const ::comphelper::ComponentContext& const ::rtl::OUString& _rFieldPostfix, UINT32 _nInventor, UINT16 _nLabelObjectID, SdrPage* _pLabelPage, SdrPage* _pControlPage, SdrModel* _pModel, SdrUnoObj*& _rpLabel, SdrUnoObj*& _rpControl) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::createControlLabelPair" ); sal_Int32 nDataType = 0; ::rtl::OUString sFieldName; Any aFieldName; @@ -1717,7 +1686,6 @@ void FmXFormView::ObjectRemoveListener::Notify( SfxBroadcaster& /*rBC*/, const S //------------------------------------------------------------------------------ void FmXFormView::ObjectRemovedInAliveMode( const SdrObject* pObject ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::ObjectRemovedInAliveMode" ); // wenn das entfernte Objekt in meiner MarkList, die ich mir beim Umschalten in den Alive-Mode gemerkt habe, steht, // muss ich es jetzt da rausnehmen, da ich sonst beim Zurueckschalten versuche, die Markierung wieder zu setzen // (interesanterweise geht das nur bei gruppierten Objekten schief (beim Zugriff auf deren ObjList GPF), nicht bei einzelnen) @@ -1740,7 +1708,6 @@ void FmXFormView::ObjectRemovedInAliveMode( const SdrObject* pObject ) //------------------------------------------------------------------------------ void FmXFormView::stopMarkListWatching() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::stopMarkListWatching" ); if ( m_pWatchStoredList ) { m_pWatchStoredList->EndListeningAll(); @@ -1752,7 +1719,6 @@ void FmXFormView::stopMarkListWatching() //------------------------------------------------------------------------------ void FmXFormView::startMarkListWatching() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::startMarkListWatching" ); if ( !m_pWatchStoredList ) { m_pWatchStoredList = new ObjectRemoveListener( this ); @@ -1769,7 +1735,6 @@ void FmXFormView::startMarkListWatching() //------------------------------------------------------------------------------ void FmXFormView::saveMarkList( sal_Bool _bSmartUnmark ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::saveMarkList" ); if ( m_pView ) { m_aMark = m_pView->GetMarkedObjectList(); @@ -1828,7 +1793,6 @@ static sal_Bool lcl_hasObject( SdrObjListIter& rIter, SdrObject* pObj ) //------------------------------------------------------------------------------ void FmXFormView::restoreMarkList( SdrMarkList& _rRestoredMarkList ) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::restoreMarkList" ); if ( !m_pView ) return; @@ -1916,7 +1880,6 @@ void FmXFormView::restoreMarkList( SdrMarkList& _rRestoredMarkList ) // ----------------------------------------------------------------------------- void SAL_CALL FmXFormView::focusGained( const FocusEvent& /*e*/ ) throw (RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::focusGained" ); if ( m_xWindow.is() && m_pView ) { m_pView->SetMoveOutside( TRUE, FmFormView::ImplAccess() ); @@ -1925,7 +1888,6 @@ void SAL_CALL FmXFormView::focusGained( const FocusEvent& /*e*/ ) throw (Runtime // ----------------------------------------------------------------------------- void SAL_CALL FmXFormView::focusLost( const FocusEvent& /*e*/ ) throw (RuntimeException) { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::focusLost" ); // when switch the focus outside the office the mark didn't change // so we can not remove us as focus listener if ( m_xWindow.is() && m_pView ) @@ -1936,7 +1898,6 @@ void SAL_CALL FmXFormView::focusLost( const FocusEvent& /*e*/ ) throw (RuntimeEx // ----------------------------------------------------------------------------- void FmXFormView::removeGridWindowListening() { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::removeGridWindowListening" ); if ( m_xWindow.is() ) { m_xWindow->removeFocusListener(this); @@ -1951,7 +1912,6 @@ void FmXFormView::removeGridWindowListening() // ----------------------------------------------------------------------------- DocumentType FmXFormView::impl_getDocumentType() const { - RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmXFormView::impl_getDocumentType" ); if ( GetFormShell() && GetFormShell()->GetImpl() ) return GetFormShell()->GetImpl()->getDocumentType(); return eUnknownDocumentType; diff --git a/svx/source/form/formcontroller.cxx b/svx/source/form/formcontroller.cxx index b8292785b457..f43233ae08ba 100644 --- a/svx/source/form/formcontroller.cxx +++ b/svx/source/form/formcontroller.cxx @@ -62,6 +62,7 @@ #include <com/sun/star/sdb/RowChangeAction.hpp> #include <com/sun/star/sdb/XInteractionSupplyParameters.hpp> #include <com/sun/star/sdbc/ColumnValue.hpp> +#include <com/sun/star/sdbc/DataType.hpp> #include <com/sun/star/util/XURLTransformer.hpp> #include <com/sun/star/form/runtime/FormOperations.hpp> #include <com/sun/star/form/runtime/FormFeature.hpp> @@ -80,6 +81,7 @@ #include <comphelper/property.hxx> #include <comphelper/sequence.hxx> #include <comphelper/uno3.hxx> +#include <comphelper/scopeguard.hxx> #include <cppuhelper/queryinterface.hxx> #include <cppuhelper/typeprovider.hxx> #include <toolkit/controls/unocontrol.hxx> @@ -208,6 +210,7 @@ namespace svxform namespace FocusChangeReason = ::com::sun::star::awt::FocusChangeReason; namespace RowChangeAction = ::com::sun::star::sdb::RowChangeAction; namespace FormFeature = ::com::sun::star::form::runtime::FormFeature; + namespace DataType = ::com::sun::star::sdbc::DataType; //============================================================================== // ColumnInfo @@ -583,6 +586,7 @@ FormController::FormController(const Reference< XMultiServiceFactory > & _rxORB ,m_bAttachEvents(sal_True) ,m_bDetachEvents(sal_True) ,m_bAttemptedHandlerCreation( false ) + ,m_bSuspendFilterTextListening( false ) { DBG_CTOR( FormController, NULL ); @@ -782,6 +786,9 @@ namespace // ----------------------------------------------------------------------------- void FormController::impl_setTextOnAllFilter_throw() { + m_bSuspendFilterTextListening = true; + ::comphelper::FlagGuard aResetFlag( m_bSuspendFilterTextListening ); + // reset the text for all controls ::std::for_each( m_aFilterComponents.begin(), m_aFilterComponents.end(), ResetComponentText() ); @@ -855,32 +862,38 @@ void FormController::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) cons if ( rRow.empty() ) continue; - if ( aFilter.getLength() ) - aFilter.appendAscii( " OR " ); - - aFilter.appendAscii( "( " ); + ::rtl::OUStringBuffer aRowFilter; for ( FmFilterRow::const_iterator condition = rRow.begin(); condition != rRow.end(); ++condition ) { // get the field of the controls map Reference< XControl > xControl( condition->first, UNO_QUERY_THROW ); Reference< XPropertySet > xModelProps( xControl->getModel(), UNO_QUERY_THROW ); Reference< XPropertySet > xField( xModelProps->getPropertyValue( FM_PROP_BOUNDFIELD ), UNO_QUERY_THROW ); - if ( condition != rRow.begin() ) - aFilter.appendAscii( " AND " ); ::rtl::OUString sFilterValue( condition->second ); ::rtl::OUString sErrorMsg, sCriteria; - ::rtl::Reference< ISQLParseNode > xParseNode = predicateTree( sErrorMsg, sFilterValue, xFormatter, xField ); + const ::rtl::Reference< ISQLParseNode > xParseNode = + predicateTree( sErrorMsg, sFilterValue, xFormatter, xField ); OSL_ENSURE( xParseNode.is(), "FormController::getFastPropertyValue: could not parse the field value predicate!" ); if ( xParseNode.is() ) { // don't use a parse context here, we need it unlocalized xParseNode->parseNodeToStr( sCriteria, xConnection, NULL ); - aFilter.append( sCriteria ); + if ( condition != rRow.begin() ) + aRowFilter.appendAscii( " AND " ); + aRowFilter.append( sCriteria ); } } - aFilter.appendAscii( " )" ); + if ( aRowFilter.getLength() > 0 ) + { + if ( aFilter.getLength() ) + aFilter.appendAscii( " OR " ); + + aFilter.appendAscii( "( " ); + aFilter.append( aRowFilter.makeStringAndClear() ); + aFilter.appendAscii( " )" ); + } } } catch( const Exception& ) @@ -1494,50 +1507,54 @@ void SAL_CALL FormController::textChanged(const TextEvent& e) throw( RuntimeExce // SYNCHRONIZED --> ::osl::ClearableMutexGuard aGuard( m_aMutex ); OSL_ENSURE( !impl_isDisposed_nofail(), "FormController: already disposed!" ); - if (m_bFiltering) + if ( !m_bFiltering ) { - Reference< XTextComponent > xText(e.Source,UNO_QUERY); - ::rtl::OUString aText = xText->getText(); - - if ( m_aFilterRows.empty() ) - appendEmptyDisjunctiveTerm(); + impl_onModify(); + return; + } - // Suchen der aktuellen Row - if ( ( (size_t)m_nCurrentFilterPosition >= m_aFilterRows.size() ) || ( m_nCurrentFilterPosition < 0 ) ) - { - OSL_ENSURE( false, "FormController::textChanged: m_nCurrentFilterPosition is wrong!" ); - return; - } + if ( m_bSuspendFilterTextListening ) + return; - FmFilterRow& rRow = m_aFilterRows[ m_nCurrentFilterPosition ]; + Reference< XTextComponent > xText(e.Source,UNO_QUERY); + ::rtl::OUString aText = xText->getText(); - // do we have a new filter - if (aText.getLength()) - rRow[xText] = aText; - else - { - // do we have the control in the row - FmFilterRow::iterator iter = rRow.find(xText); - // erase the entry out of the row - if (iter != rRow.end()) - rRow.erase(iter); - } + if ( m_aFilterRows.empty() ) + appendEmptyDisjunctiveTerm(); - // multiplex the event to our FilterControllerListeners - FilterEvent aEvent; - aEvent.Source = *this; - aEvent.FilterComponent = ::std::find( m_aFilterComponents.begin(), m_aFilterComponents.end(), xText ) - m_aFilterComponents.begin(); - aEvent.DisjunctiveTerm = getActiveTerm(); - aEvent.PredicateExpression = aText; + // Suchen der aktuellen Row + if ( ( (size_t)m_nCurrentFilterPosition >= m_aFilterRows.size() ) || ( m_nCurrentFilterPosition < 0 ) ) + { + OSL_ENSURE( false, "FormController::textChanged: m_nCurrentFilterPosition is wrong!" ); + return; + } - aGuard.clear(); - // <-- SYNCHRONIZED + FmFilterRow& rRow = m_aFilterRows[ m_nCurrentFilterPosition ]; - // notify the changed filter expression - m_aFilterListeners.notifyEach( &XFilterControllerListener::predicateExpressionChanged, aEvent ); - } + // do we have a new filter + if (aText.getLength()) + rRow[xText] = aText; else - impl_onModify(); + { + // do we have the control in the row + FmFilterRow::iterator iter = rRow.find(xText); + // erase the entry out of the row + if (iter != rRow.end()) + rRow.erase(iter); + } + + // multiplex the event to our FilterControllerListeners + FilterEvent aEvent; + aEvent.Source = *this; + aEvent.FilterComponent = ::std::find( m_aFilterComponents.begin(), m_aFilterComponents.end(), xText ) - m_aFilterComponents.begin(); + aEvent.DisjunctiveTerm = getActiveTerm(); + aEvent.PredicateExpression = aText; + + aGuard.clear(); + // <-- SYNCHRONIZED + + // notify the changed filter expression + m_aFilterListeners.notifyEach( &XFilterControllerListener::predicateExpressionChanged, aEvent ); } // XItemListener diff --git a/svx/source/form/formshell.src b/svx/source/form/formshell.src index 5a7e25e14f13..f7e2419aae7d 100644 --- a/svx/source/form/formshell.src +++ b/svx/source/form/formshell.src @@ -31,6 +31,7 @@ #include <sfx2/sfxsids.hrc> #include "globlmn.hrc" #include "helpid.hrc" +#include "fmhelp.hrc" Menu RID_FM_TEXTATTRIBUTE_MENU { @@ -47,7 +48,7 @@ Menu RID_FM_TEXTATTRIBUTE_MENU MenuItem { Identifier = MENU_FM_TEXTATTRIBITES_STYLE; - HelpID = MENU_FM_TEXTATTRIBITES_STYLE; + HelpID = HID_MENU_FM_TEXTATTRIBUTES_STYLE; Text [ en-US ] = "St~yle"; SubMenu = Menu { @@ -96,7 +97,7 @@ Menu RID_FM_TEXTATTRIBUTE_MENU MenuItem { Identifier = MENU_FM_TEXTATTRIBITES_ALIGNMENT; - HelpID = MENU_FM_TEXTATTRIBITES_ALIGNMENT; + HelpID = HID_MENU_FM_TEXTATTRIBUTES_ALIGNMENT; Text [ en-US ] = "~Alignment"; RadioCheck = TRUE; SubMenu = Menu @@ -129,7 +130,7 @@ Menu RID_FM_TEXTATTRIBUTE_MENU MenuItem { Identifier = MENU_FM_TEXTATTRIBITES_SPACING; - HelpID = MENU_FM_TEXTATTRIBITES_SPACING; + HelpID = HID_MENU_FM_TEXTATTRIBUTES_SPACING; Text [ en-US ] = "~Line Spacing"; _MenuItemFlags = MIB_RADIOCHECK; SubMenu = Menu diff --git a/svx/source/gallery2/gallery.src b/svx/source/gallery2/gallery.src index fae88c0db251..39ee6e0e6b1b 100644 --- a/svx/source/gallery2/gallery.src +++ b/svx/source/gallery2/gallery.src @@ -35,7 +35,7 @@ DockingWindow RID_SVXDLG_GALLERYBROWSER { - HelpId = SID_GALLERY; + HelpId = "SVX_HID_GALLERY_BROWSER" ; OutputSize = TRUE ; Hide = TRUE ; SVLook = TRUE ; diff --git a/svx/source/inc/fmsrcimp.hxx b/svx/source/inc/fmsrcimp.hxx index e620c34bdd4a..3a3af0ac7d8f 100644 --- a/svx/source/inc/fmsrcimp.hxx +++ b/svx/source/inc/fmsrcimp.hxx @@ -46,15 +46,7 @@ #include <unotools/collatorwrapper.hxx> #include <vos/thread.hxx> -#ifndef _SVSTDARR_ULONGS -#define _SVSTDARR_ULONGS -#include <svl/svstdarr.hxx> -#endif - -// =================================================================================================== -// Hilfsstrukturen - -SV_DECL_OBJARR(SvInt32Array, sal_Int32, 16, 16) +#include <deque> // =================================================================================================== // = class FmSearchThread - wie der Name schon sagt @@ -189,8 +181,8 @@ class SVX_DLLPUBLIC FmSearchEngine enum SEARCHFOR_TYPE { SEARCHFOR_STRING, SEARCHFOR_NULL, SEARCHFOR_NOTNULL }; // zugrundeliegende Daten - CursorWrapper m_xSearchCursor; - SvInt32Array m_arrFieldMapping; + CursorWrapper m_xSearchCursor; + std::deque<sal_Int32> m_arrFieldMapping; // da der Iterator durchaus mehr Spalten haben kann, als ich eigentlich verwalte (in meiner Feld-Listbox), // muss ich mir hier ein Mapping dieser ::com::sun::star::form-Schluessel auf die Indizies der entsprechenden Spalten im Iterator halten diff --git a/svx/source/inc/fmvwimp.hxx b/svx/source/inc/fmvwimp.hxx index 1131209a384a..8bb682690b36 100644 --- a/svx/source/inc/fmvwimp.hxx +++ b/svx/source/inc/fmvwimp.hxx @@ -51,6 +51,7 @@ #include <cppuhelper/implbase3.hxx> #include <comphelper/uno3.hxx> #include <comphelper/componentcontext.hxx> +#include <rtl/ref.hxx> //class SdrPageViewWinRec; class SdrPageWindow; @@ -79,13 +80,13 @@ namespace svx { } //================================================================== -// FmXPageViewWinRec +// FormViewPageWindowAdapter //================================================================== typedef ::cppu::WeakImplHelper2 < ::com::sun::star::container::XIndexAccess , ::com::sun::star::form::runtime::XFormControllerContext - > FmXPageViewWinRec_Base; + > FormViewPageWindowAdapter_Base; -class FmXPageViewWinRec : public FmXPageViewWinRec_Base +class FormViewPageWindowAdapter : public FormViewPageWindowAdapter_Base { friend class FmXFormView; @@ -96,10 +97,10 @@ class FmXPageViewWinRec : public FmXPageViewWinRec_Base Window* m_pWindow; protected: - ~FmXPageViewWinRec(); + ~FormViewPageWindowAdapter(); public: - FmXPageViewWinRec( const ::comphelper::ComponentContext& _rContext, + FormViewPageWindowAdapter( const ::comphelper::ComponentContext& _rContext, const SdrPageWindow&, FmXFormView* pView); //const SdrPageViewWinRec*, FmXFormView* pView); @@ -130,7 +131,8 @@ protected: Window* getWindow() const {return m_pWindow;} }; -typedef ::std::vector<FmXPageViewWinRec*> FmWinRecList; +typedef ::rtl::Reference< FormViewPageWindowAdapter > PFormViewPageWindowAdapter; +typedef ::std::vector< PFormViewPageWindowAdapter > PageWindowAdapterList; typedef ::std::set < ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > , ::comphelper::OInterfaceCompare< ::com::sun::star::form::XForm > > SetOfForms; @@ -150,7 +152,7 @@ class FmXFormView : public ::cppu::WeakImplHelper3< friend class FmFormView; friend class FmFormShell; friend class FmXFormShell; - friend class FmXPageViewWinRec; + friend class FormViewPageWindowAdapter; class ObjectRemoveListener; friend class ObjectRemoveListener; @@ -168,7 +170,8 @@ class FmXFormView : public ::cppu::WeakImplHelper3< ::com::sun::star::sdb::SQLErrorEvent m_aAsyncError; // error event which is to be displayed asyn. See m_nErrorMessageEvent. - FmWinRecList m_aWinList; // to be filled in alive mode only + PageWindowAdapterList + m_aPageWindowAdapters; // to be filled in alive mode only MapControlContainerToSetOfForms m_aNeedTabOrderUpdate; @@ -215,8 +218,7 @@ public: virtual void SAL_CALL focusLost( const ::com::sun::star::awt::FocusEvent& e ) throw (::com::sun::star::uno::RuntimeException); FmFormView* getView() const {return m_pView;} - FmWinRecList::const_iterator findWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _rxCC ) const; - const FmWinRecList& getWindowList() const {return m_aWinList;} + PFormViewPageWindowAdapter findWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _rxCC ) const; ::com::sun::star::uno::Reference< ::com::sun::star::form::runtime::XFormController > getFormController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm, const OutputDevice& _rDevice ) const; @@ -246,7 +248,6 @@ public: ); private: - FmWinRecList::iterator findWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _rxCC ); //void addWindow(const SdrPageViewWinRec*); void addWindow(const SdrPageWindow&); void removeWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& _rxCC ); diff --git a/svx/source/inc/formcontroller.hxx b/svx/source/inc/formcontroller.hxx index 82a3516584f7..b0f42a0e97ea 100644 --- a/svx/source/inc/formcontroller.hxx +++ b/svx/source/inc/formcontroller.hxx @@ -214,7 +214,8 @@ namespace svxform sal_Bool m_bFiltering : 1; sal_Bool m_bAttachEvents : 1; sal_Bool m_bDetachEvents : 1; - sal_Bool m_bAttemptedHandlerCreation : 1; + bool m_bAttemptedHandlerCreation : 1; + bool m_bSuspendFilterTextListening; // no bit field, passed around as reference // as we want to intercept dispatches of _all_ controls we're responsible for, and an object implementing // the ::com::sun::star::frame::XDispatchProviderInterceptor interface can intercept only _one_ objects dispatches, we need a helper class diff --git a/svx/source/intro/iso.src b/svx/source/intro/iso.src index ecadfd9d4c6a..7b9067662c7a 100644 --- a/svx/source/intro/iso.src +++ b/svx/source/intro/iso.src @@ -58,6 +58,7 @@ String RID_BUILDVERSION ModalDialog RID_DEFAULTABOUT { + HelpID = "svx:ModalDialog:RID_DEFAULTABOUT"; OutputSize = TRUE ; Size = MAP_APPFONT ( 245 , 260 ) ; Moveable = TRUE ; @@ -78,6 +79,7 @@ ModalDialog RID_DEFAULTABOUT }; MultiLineEdit ABOUT_FTXT_COPYRIGHT { + HelpID = "svx:MultiLineEdit:RID_DEFAULTABOUT:ABOUT_FTXT_COPYRIGHT"; Border = TRUE ; Pos = MAP_APPFONT ( 54 , 25 ) ; Size = MAP_APPFONT ( 168 , 51 ) ; diff --git a/svx/source/intro/ooo.src b/svx/source/intro/ooo.src index 49f6f68fd7e4..7f6f0ed6ff47 100644 --- a/svx/source/intro/ooo.src +++ b/svx/source/intro/ooo.src @@ -64,6 +64,7 @@ String RID_BUILDVERSION ModalDialog RID_DEFAULTABOUT { + HelpID = "svx:ModalDialog:RID_DEFAULTABOUT"; OutputSize = TRUE ; Size = MAP_APPFONT ( 245 , 260 ) ; Moveable = TRUE ; @@ -84,6 +85,7 @@ ModalDialog RID_DEFAULTABOUT }; MultiLineEdit ABOUT_FTXT_COPYRIGHT { + HelpID = "svx:MultiLineEdit:RID_DEFAULTABOUT:ABOUT_FTXT_COPYRIGHT"; Border = TRUE ; Pos = MAP_APPFONT ( 54 , 25 ) ; Size = MAP_APPFONT ( 168 , 51 ) ; diff --git a/svx/source/stbctrls/insctrl.cxx b/svx/source/stbctrls/insctrl.cxx index 241ffeb8bc36..2ca1c5b5cfdd 100644 --- a/svx/source/stbctrls/insctrl.cxx +++ b/svx/source/stbctrls/insctrl.cxx @@ -57,7 +57,6 @@ SvxInsertStatusBarControl::SvxInsertStatusBarControl( USHORT _nSlotId, SfxStatusBarControl( _nSlotId, _nId, rStb ), bInsert( TRUE ) { - rStb.SetHelpId( _nId, _nSlotId ); } // ----------------------------------------------------------------------- diff --git a/svx/source/stbctrls/pszctrl.cxx b/svx/source/stbctrls/pszctrl.cxx index edb72ab05eac..e980ece5c8b6 100644 --- a/svx/source/stbctrls/pszctrl.cxx +++ b/svx/source/stbctrls/pszctrl.cxx @@ -176,6 +176,10 @@ struct SvxPosSizeStatusBarControl_Impl Images fu"r die Position und Gro"sse laden. */ +#define STR_POSITION ".uno:Position" +#define STR_TABLECELL ".uno:StateTableCell" +#define STR_FUNC ".uno:StatusBarFunc" + SvxPosSizeStatusBarControl::SvxPosSizeStatusBarControl( USHORT _nSlotId, USHORT _nId, StatusBar& rStb ) : @@ -190,9 +194,9 @@ SvxPosSizeStatusBarControl::SvxPosSizeStatusBarControl( USHORT _nSlotId, pImp->aPosImage = Image( ResId( RID_SVXBMP_POSITION, DIALOG_MGR() ) ); pImp->aSizeImage = Image( ResId( RID_SVXBMP_SIZE, DIALOG_MGR() ) ); - addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:Position" ))); - addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:StateTableCell" ))); - addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:StatusBarFunc" ))); + addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( STR_POSITION ))); // SID_ATTR_POSITION + addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( STR_TABLECELL ))); // SID_TABLE_CELL + addStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( STR_FUNC ))); // SID_PSZ_FUNCTION } // ----------------------------------------------------------------------- @@ -233,7 +237,14 @@ void SvxPosSizeStatusBarControl::StateChanged( USHORT nSID, SfxItemState eState, // da Kombi-Controller, immer die aktuelle Id als HelpId setzen // gecachten HelpText vorher l"oschen GetStatusBar().SetHelpText( GetId(), String() ); - GetStatusBar().SetHelpId( GetId(), nSID ); + + switch ( nSID ) + { + case SID_ATTR_POSITION : GetStatusBar().SetHelpId( GetId(), STR_POSITION ); break; + case SID_TABLE_CELL: GetStatusBar().SetHelpId( GetId(), STR_TABLECELL ); break; + case SID_PSZ_FUNCTION: GetStatusBar().SetHelpId( GetId(), STR_FUNC ); break; + default: break; + } if ( nSID == SID_PSZ_FUNCTION ) { diff --git a/svx/source/stbctrls/xmlsecctrl.cxx b/svx/source/stbctrls/xmlsecctrl.cxx index 06d1e9642b9e..92d8f7ad0746 100644 --- a/svx/source/stbctrls/xmlsecctrl.cxx +++ b/svx/source/stbctrls/xmlsecctrl.cxx @@ -107,12 +107,8 @@ XmlSecStatusBarControl::~XmlSecStatusBarControl() delete mpImpl; } -void XmlSecStatusBarControl::StateChanged( USHORT nSID, SfxItemState eState, const SfxPoolItem* pState ) +void XmlSecStatusBarControl::StateChanged( USHORT, SfxItemState eState, const SfxPoolItem* pState ) { - GetStatusBar().SetHelpText( GetId(), String() );// necessary ? - - GetStatusBar().SetHelpId( GetId(), nSID ); // necessary ? - if( SFX_ITEM_AVAILABLE != eState ) { mpImpl->mnState = (UINT16)SIGNATURESTATE_UNKNOWN; diff --git a/svx/source/svdraw/sdrpagewindow.cxx b/svx/source/svdraw/sdrpagewindow.cxx index 85513fb3b926..6c9c72930603 100644 --- a/svx/source/svdraw/sdrpagewindow.cxx +++ b/svx/source/svdraw/sdrpagewindow.cxx @@ -192,6 +192,10 @@ void SdrPageWindow::PrePaint() } } +void SdrPageWindow::PostPaint() +{ +} + void SdrPageWindow::PrepareRedraw(const Region& rReg) { // evtl. give OC the chance to do ProcessDisplay preparations diff --git a/svx/source/svdraw/svdpagv.cxx b/svx/source/svdraw/svdpagv.cxx index 03e3dc31a94f..0ccfd1e01346 100644 --- a/svx/source/svdraw/svdpagv.cxx +++ b/svx/source/svdraw/svdpagv.cxx @@ -358,6 +358,21 @@ void SdrPageView::PrePaint() } } +void SdrPageView::PostPaint() +{ + const sal_uInt32 nCount(PageWindowCount()); + + for(sal_uInt32 a(0); a < nCount; a++) + { + SdrPageWindow* pCandidate = GetPageWindow(a); + + if(pCandidate) + { + pCandidate->PostPaint(); + } + } +} + void SdrPageView::CompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector) const { if(GetPage()) diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx index 998c687608fc..feaf859c3b21 100755..100644 --- a/svx/source/svdraw/svdpntv.cxx +++ b/svx/source/svdraw/svdpntv.cxx @@ -733,6 +733,14 @@ void SdrPaintView::PrePaint() } } +void SdrPaintView::PostPaint() +{ + if(mpPageView) + { + mpPageView->PostPaint(); + } +} + //////////////////////////////////////////////////////////////////////////////////////////////////// // #define SVX_REPAINT_TIMER_TEST diff --git a/svx/source/tbxctrls/extrusioncontrols.src b/svx/source/tbxctrls/extrusioncontrols.src index 084606439cc3..c7655b9576af 100644 --- a/svx/source/tbxctrls/extrusioncontrols.src +++ b/svx/source/tbxctrls/extrusioncontrols.src @@ -32,6 +32,7 @@ DockingWindow RID_SVXFLOAT_EXTRUSION_DIRECTION { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_EXTRUSION_DIRECTION"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -202,6 +203,7 @@ DockingWindow RID_SVXFLOAT_EXTRUSION_DIRECTION DockingWindow RID_SVXFLOAT_EXTRUSION_DEPTH { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_EXTRUSION_DEPTH"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -292,6 +294,7 @@ DockingWindow RID_SVXFLOAT_EXTRUSION_DEPTH DockingWindow RID_SVXFLOAT_EXTRUSION_LIGHTING { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_EXTRUSION_LIGHTING"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -608,6 +611,7 @@ DockingWindow RID_SVXFLOAT_EXTRUSION_LIGHTING DockingWindow RID_SVXFLOAT_EXTRUSION_SURFACE { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_EXTRUSION_SURFACE"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -686,6 +690,7 @@ DockingWindow RID_SVXFLOAT_EXTRUSION_SURFACE ModalDialog RID_SVX_MDLG_EXTRUSION_DEPTH { + HelpID = "svx:ModalDialog:RID_SVX_MDLG_EXTRUSION_DEPTH"; OutputSize = TRUE; SVLook = TRUE ; Moveable = TRUE; diff --git a/svx/source/tbxctrls/fontworkgallery.src b/svx/source/tbxctrls/fontworkgallery.src index e5f52158b4b6..98fd8c6cb5df 100644 --- a/svx/source/tbxctrls/fontworkgallery.src +++ b/svx/source/tbxctrls/fontworkgallery.src @@ -37,6 +37,7 @@ ModalDialog RID_SVX_MDLG_FONTWORK_GALLERY { + HelpID = "svx:ModalDialog:RID_SVX_MDLG_FONTWORK_GALLERY"; OutputSize = TRUE; SVLook = TRUE ; Moveable = TRUE; @@ -94,6 +95,7 @@ ModalDialog RID_SVX_MDLG_FONTWORK_GALLERY DockingWindow RID_SVXFLOAT_FONTWORK_ALIGNMENT { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_FONTWORK_ALIGNMENT"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -229,6 +231,7 @@ DockingWindow RID_SVXFLOAT_FONTWORK_ALIGNMENT DockingWindow RID_SVXFLOAT_FONTWORK_CHARSPACING { + HelpID = "svx:DockingWindow:RID_SVXFLOAT_FONTWORK_CHARSPACING"; Border = FALSE ; Hide = TRUE ; SVLook = TRUE ; @@ -271,6 +274,7 @@ DockingWindow RID_SVXFLOAT_FONTWORK_CHARSPACING ModalDialog RID_SVX_MDLG_FONTWORK_CHARSPACING { + HelpID = "svx:ModalDialog:RID_SVX_MDLG_FONTWORK_CHARSPACING"; OutputSize = TRUE ; SVLook = TRUE ; Size = MAP_APPFONT ( 139 , 64 ) ; @@ -306,6 +310,7 @@ ModalDialog RID_SVX_MDLG_FONTWORK_CHARSPACING }; MetricField MF_VALUE { + HelpID = "svx:MetricField:RID_SVX_MDLG_FONTWORK_CHARSPACING:MF_VALUE"; Border = FALSE ; Pos = MAP_APPFONT ( 6 , 17 ) ; Size = MAP_APPFONT ( 32 , 12 ) ; diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index fa5ddd579dee..849d495e214e 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -316,7 +316,7 @@ public: // ----------------------------------------------------------------------------- -ImplGrafControl::ImplGrafControl( Window* pParent, USHORT nSlotId, const rtl::OUString& rCmd, const Reference< XFrame >& rFrame ) : +ImplGrafControl::ImplGrafControl( Window* pParent, USHORT, const rtl::OUString& rCmd, const Reference< XFrame >& rFrame ) : Control( pParent, WB_TABSTOP ), maImage ( this ), maField ( this, rCmd, rFrame ) @@ -353,8 +353,7 @@ ImplGrafControl::ImplGrafControl( Window* pParent, USHORT nSlotId, const rtl::OU maImage.Show(); - maField.SetHelpId( nSlotId ); - maField.SetSmartHelpId( SmartId( rCmd )); + maField.SetHelpId( rtl::OUStringToOString( rCmd, RTL_TEXTENCODING_UTF8 ) ); maField.Show(); } diff --git a/svx/source/tbxctrls/lboxctrl.src b/svx/source/tbxctrls/lboxctrl.src index 18e345675532..4150e07ba249 100644 --- a/svx/source/tbxctrls/lboxctrl.src +++ b/svx/source/tbxctrls/lboxctrl.src @@ -42,6 +42,7 @@ FloatingWindow RID_SVXTBX_UNDO_REDO_CTRL ListBox LB_SVXTBX_UNDO_REDO_CTRL { + HelpID = "svx:ListBox:RID_SVXTBX_UNDO_REDO_CTRL:LB_SVXTBX_UNDO_REDO_CTRL"; Pos = MAP_APPFONT ( 0 , 0 ) ; Size = MAP_APPFONT ( 150 , 60 ) ; Border = TRUE ; diff --git a/svx/source/tbxctrls/makefile.mk b/svx/source/tbxctrls/makefile.mk index a9ea745f3cc0..351ed4f162ef 100644 --- a/svx/source/tbxctrls/makefile.mk +++ b/svx/source/tbxctrls/makefile.mk @@ -75,7 +75,6 @@ SRC1FILES = \ linectrl.src \ tbcontrl.src \ tbunosearchcontrollers.src \ - tbxdraw.src \ grafctrl.src # --- Targets ------------------------------------------------------- diff --git a/svx/source/tbxctrls/tbxdraw.src b/svx/source/tbxctrls/tbxdraw.src deleted file mode 100644 index 0641ff39e1bf..000000000000 --- a/svx/source/tbxctrls/tbxdraw.src +++ /dev/null @@ -1,265 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - // include --------------------------------------------------------------- -#include "tbxdraw.hrc" -#include <svx/dialogs.hrc> -#include "helpid.hrc" -#include <svx/svxids.hrc> - // pragma ---------------------------------------------------------------- - - // ----------------------------------------------------------------------- -#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; } -FloatingWindow RID_SVXTBX_DRAW -{ - Moveable = TRUE ; - Closeable = TRUE ; - Hide = TRUE ; - SVLook = TRUE ; - HelpID = HID_DRAWTOOL_TBX ; - ToolBox TBX_DRAW - { - HelpId = HID_SVXTBX_DRAW ; - SVLook = TRUE ; - ItemList = - { - ToolBoxItem - { - Identifier = SID_OBJECT_SELECT ; - HelpID = SID_OBJECT_SELECT ; - RadioCheck = TRUE ; - Text [ en-US ] = "Selection" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_LINE ; - HelpID = SID_DRAW_LINE ; - RadioCheck = TRUE ; - Text [ en-US ] = "Line" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_RECT ; - HelpID = SID_DRAW_RECT ; - RadioCheck = TRUE ; - Text [ en-US ] = "Rectangle" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_ELLIPSE ; - HelpID = SID_DRAW_ELLIPSE ; - RadioCheck = TRUE ; - Text [ en-US ] = "Ellipse" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_POLYGON_NOFILL ; - HelpID = SID_DRAW_POLYGON_NOFILL ; - RadioCheck = TRUE ; - Text [ en-US ] = "Polygon" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_BEZIER_NOFILL ; - HelpID = SID_DRAW_BEZIER_NOFILL ; - RadioCheck = TRUE ; - Text [ en-US ] = "Curve"; - }; - ToolBoxItem - { - Identifier = SID_DRAW_FREELINE_NOFILL ; - HelpID = SID_DRAW_FREELINE_NOFILL ; - RadioCheck = TRUE ; - Text [ en-US ] = "Freeform Line"; - }; - ToolBoxItem - { - Identifier = SID_DRAW_ARC ; - HelpID = SID_DRAW_ARC ; - RadioCheck = TRUE ; - Text [ en-US ] = "Arc" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_PIE ; - HelpID = SID_DRAW_PIE ; - RadioCheck = TRUE ; - Text [ en-US ] = "Ellipse Pie" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_CIRCLECUT ; - HelpID = SID_DRAW_CIRCLECUT ; - RadioCheck = TRUE ; - Text [ en-US ] = "Circle Segment" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_TEXT ; - HelpID = SID_DRAW_TEXT ; - RadioCheck = TRUE ; - Text [ en-US ] = "Text" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_TEXT_VERTICAL ; - HelpID = SID_DRAW_TEXT_VERTICAL ; - RadioCheck = TRUE ; - Text [ en-US ] = "Vertical Text"; - }; - ToolBoxItem - { - Identifier = SID_DRAW_TEXT_MARQUEE ; - HelpID = SID_DRAW_TEXT_MARQUEE ; - RadioCheck = TRUE ; - Text [ en-US ] = "Text Animation" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_CAPTION ; - HelpID = SID_DRAW_CAPTION ; - RadioCheck = TRUE ; - Text [ en-US ] = "Callouts" ; - }; - ToolBoxItem - { - Identifier = SID_DRAW_CAPTION_VERTICAL ; - HelpID = SID_DRAW_CAPTION_VERTICAL ; - RadioCheck = TRUE ; - Text [ en-US ] = "Vertical Callout"; - }; - }; - }; - Text [ en-US ] = "Draw Functions" ; -}; -FloatingWindow RID_SVXTBX_ALIGNMENT -{ - Moveable = TRUE ; - Closeable = TRUE ; - Hide = TRUE ; - HelpID = HID_ALIGN_TBX ; - SVLook = TRUE ; - Text [ en-US ] = "Alignment" ; - ToolBox TBX_ALIGNMENT - { - HelpId = HID_SVXTBX_ALIGNMENT ; - SVLook = TRUE ; - HelpID = SID_OBJECT_ALIGN ; - ItemList = - { - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_LEFT ; - HelpID = SID_OBJECT_ALIGN_LEFT ; - Text [ en-US ] = "Left" ; - }; - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_CENTER ; - HelpID = SID_OBJECT_ALIGN_CENTER ; - Text [ en-US ] = "Center" ; - }; - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_RIGHT ; - HelpID = SID_OBJECT_ALIGN_RIGHT ; - Text [ en-US ] = "Right" ; - }; - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_UP ; - HelpID = SID_OBJECT_ALIGN_UP ; - Text [ en-US ] = "Top" ; - }; - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_MIDDLE ; - HelpID = SID_OBJECT_ALIGN_MIDDLE ; - Text [ en-US ] = "Centered" ; - }; - ToolBoxItem - { - Identifier = SID_OBJECT_ALIGN_DOWN ; - HelpID = SID_OBJECT_ALIGN_DOWN ; - Text [ en-US ] = "Bottom" ; - }; - }; - }; -}; - // ********************************************************************** EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/svx/source/toolbars/extrusionbar.src b/svx/source/toolbars/extrusionbar.src index 3e6c6ad7e5cb..dd6f3066a51e 100644 --- a/svx/source/toolbars/extrusionbar.src +++ b/svx/source/toolbars/extrusionbar.src @@ -1,65 +1,6 @@ #include <svx/svxids.hrc> #include <svx/dialogs.hrc> -ToolBox RID_SVX_EXTRUSION_BAR -{ - HelpId = RID_SVX_EXTRUSION_BAR ; - Align = BOXALIGN_BOTTOM ; - ItemList = - { - ToolBoxItem - { - Identifier = SID_EXTRUSION_TOOGLE ; - HelpID = SID_EXTRUSION_TOOGLE ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_TILT_DOWN ; - HelpID = SID_EXTRUSION_TILT_DOWN ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_TILT_UP ; - HelpID = SID_EXTRUSION_TILT_UP ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_TILT_LEFT ; - HelpID = SID_EXTRUSION_TILT_LEFT ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_TILT_RIGHT ; - HelpID = SID_EXTRUSION_TILT_RIGHT ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_DEPTH_FLOATER ; - HelpID = SID_EXTRUSION_DEPTH_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_DIRECTION_FLOATER ; - HelpID = SID_EXTRUSION_DIRECTION_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_LIGHTING_FLOATER ; - HelpID = SID_EXTRUSION_LIGHTING_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_SURFACE_FLOATER ; - HelpID = SID_EXTRUSION_SURFACE_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_EXTRUSION_3D_COLOR ; - HelpID = SID_EXTRUSION_3D_COLOR ; - }; - }; -}; - String RID_SVX_EXTRUSION_BAR { Text [ en-US ] = "Extrusion"; diff --git a/svx/source/toolbars/fontworkbar.src b/svx/source/toolbars/fontworkbar.src index 79279b3432db..a7bdd2cccada 100644 --- a/svx/source/toolbars/fontworkbar.src +++ b/svx/source/toolbars/fontworkbar.src @@ -27,40 +27,6 @@ #include <svx/dialogs.hrc> -ToolBox RID_SVX_FONTWORK_BAR -{ - HelpId = RID_SVX_FONTWORK_BAR ; - Align = BOXALIGN_BOTTOM ; - ItemList = - { - ToolBoxItem - { - Identifier = SID_FONTWORK_GALLERY_FLOATER ; - HelpID = SID_FONTWORK_GALLERY_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_FONTWORK_SHAPE_TYPE ; - HelpID = SID_FONTWORK_SHAPE_TYPE ; - }; - ToolBoxItem - { - Identifier = SID_FONTWORK_SAME_LETTER_HEIGHTS ; - HelpID = SID_FONTWORK_SAME_LETTER_HEIGHTS ; - }; - ToolBoxItem - { - Identifier = SID_FONTWORK_ALIGNMENT_FLOATER ; - HelpID = SID_FONTWORK_ALIGNMENT_FLOATER ; - }; - ToolBoxItem - { - Identifier = SID_FONTWORK_CHARACTER_SPACING_FLOATER ; - HelpID = SID_FONTWORK_CHARACTER_SPACING_FLOATER ; - }; - }; -}; - String RID_SVX_FONTWORK_BAR { Text [ en-US ] = "Fontwork"; diff --git a/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.cxx b/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.cxx index dda324cb98d1..4b9e68650180 100644 --- a/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.cxx +++ b/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.cxx @@ -116,7 +116,7 @@ String DictionaryList::makeTabString( const DictionaryEntry& rEntry ) const void DictionaryList::initDictionaryControl( const Reference< linguistic2::XConversionDictionary>& xDictionary , ListBox* pPropertyTypeNameListBox ) { - SetWindowBits( WB_VSCROLL ); + SetStyle( WB_VSCROLL | WB_TABSTOP ); SetSelectionMode( SINGLE_SELECTION ); SetBorderStyle( WINDOW_BORDER_MONO ); SetHighlightRange(); diff --git a/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.src b/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.src index 76ec3f39eb43..46c6a7b341d1 100644 --- a/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.src +++ b/svx/source/unodialogs/textconversiondlgs/chinese_dictionarydialog.src @@ -66,6 +66,7 @@ ModalDialog DLG_CHINESEDICTIONARY { + HelpID = "svx:ModalDialog:DLG_CHINESEDICTIONARY"; //HelpId = ; Size = MAP_APPFONT( FULL_WIDTH, FULL_HEIGHT ); OutputSize = TRUE; @@ -79,6 +80,7 @@ ModalDialog DLG_CHINESEDICTIONARY CheckBox CB_REVERSE { + HelpID = "svx:CheckBox:DLG_CHINESEDICTIONARY:CB_REVERSE"; Pos = MAP_APPFONT ( COL_1, ROW_3 ) ; Size = MAP_APPFONT ( FULL_WIDTH - COL_1 - RSC_SP_DLG_INNERBORDER_RIGHT , RSC_CD_CHECKBOX_HEIGHT ) ; @@ -93,6 +95,7 @@ ModalDialog DLG_CHINESEDICTIONARY }; Edit ED_TERM { + HelpID = "svx:Edit:DLG_CHINESEDICTIONARY:ED_TERM"; Border = TRUE ; Pos = MAP_APPFONT ( COL_1 , ROW_5 ) ; Size = MAP_APPFONT ( COL_WIDTH , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -107,6 +110,7 @@ ModalDialog DLG_CHINESEDICTIONARY }; Edit ED_MAPPING { + HelpID = "svx:Edit:DLG_CHINESEDICTIONARY:ED_MAPPING"; Border = TRUE ; Pos = MAP_APPFONT ( COL_2 , ROW_5 ) ; Size = MAP_APPFONT ( COL_WIDTH , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -120,6 +124,7 @@ ModalDialog DLG_CHINESEDICTIONARY }; ListBox LB_PROPERTY { + HelpID = "svx:ListBox:DLG_CHINESEDICTIONARY:LB_PROPERTY"; Border = TRUE ; Pos = MAP_APPFONT ( COL_3 , ROW_5 ) ; Size = MAP_APPFONT ( REST_COL_WIDTH , RSC_CD_TEXTBOX_HEIGHT ) ; @@ -154,6 +159,7 @@ ModalDialog DLG_CHINESEDICTIONARY PushButton PB_ADD { + HelpID = "svx:PushButton:DLG_CHINESEDICTIONARY:PB_ADD"; Pos = MAP_APPFONT( COL_4, ROW_5 ); Size = MAP_APPFONT( BUTTONCOL_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ); @@ -161,6 +167,7 @@ ModalDialog DLG_CHINESEDICTIONARY }; PushButton PB_MODIFY { + HelpID = "svx:PushButton:DLG_CHINESEDICTIONARY:PB_MODIFY"; Pos = MAP_APPFONT( COL_4, ROW_5a ); Size = MAP_APPFONT( BUTTONCOL_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ); @@ -168,6 +175,7 @@ ModalDialog DLG_CHINESEDICTIONARY }; PushButton PB_DELETE { + HelpID = "svx:PushButton:DLG_CHINESEDICTIONARY:PB_DELETE"; Pos = MAP_APPFONT( COL_4, ROW_5b ); Size = MAP_APPFONT( BUTTONCOL_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ); diff --git a/svx/source/unodialogs/textconversiondlgs/chinese_translationdialog.src b/svx/source/unodialogs/textconversiondlgs/chinese_translationdialog.src index 397466a7dc68..b99d3e7c745a 100644 --- a/svx/source/unodialogs/textconversiondlgs/chinese_translationdialog.src +++ b/svx/source/unodialogs/textconversiondlgs/chinese_translationdialog.src @@ -58,6 +58,7 @@ ModalDialog DLG_CHINESETRANSLATION { + HelpID = "svx:ModalDialog:DLG_CHINESETRANSLATION"; //HelpId = ; Size = MAP_APPFONT( FULL_WIDTH, FULL_HEIGHT ); OutputSize = TRUE; @@ -78,6 +79,7 @@ ModalDialog DLG_CHINESETRANSLATION CheckBox CB_USE_VARIANTS { + HelpID = "svx:CheckBox:DLG_CHINESETRANSLATION:CB_USE_VARIANTS"; Pos = MAP_APPFONT( COL_3, ROW_4 ); Size = MAP_APPFONT ( FULL_WIDTH - COL_3 - RSC_SP_DLG_INNERBORDER_RIGHT, RSC_CD_CHECKBOX_HEIGHT ) ; @@ -93,6 +95,7 @@ ModalDialog DLG_CHINESETRANSLATION CheckBox CB_TRANSLATE_COMMONTERMS { + HelpID = "svx:CheckBox:DLG_CHINESETRANSLATION:CB_TRANSLATE_COMMONTERMS"; Pos = MAP_APPFONT( COL_2, ROW_6 ); Size = MAP_APPFONT ( COL_4 - COL_2, RSC_CD_CHECKBOX_HEIGHT ) ; @@ -101,6 +104,7 @@ ModalDialog DLG_CHINESETRANSLATION PushButton PB_EDITTERMS { + HelpID = "svx:PushButton:DLG_CHINESETRANSLATION:PB_EDITTERMS"; Pos = MAP_APPFONT( COL_4, ROW_6-(RSC_CD_PUSHBUTTON_HEIGHT-RSC_CD_CHECKBOX_HEIGHT)/2 ); Size = MAP_APPFONT( EDITBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); diff --git a/svx/source/unodraw/UnoNameItemTable.cxx b/svx/source/unodraw/UnoNameItemTable.cxx index a802af33fbbd..c7eb679e5e63 100644 --- a/svx/source/unodraw/UnoNameItemTable.cxx +++ b/svx/source/unodraw/UnoNameItemTable.cxx @@ -201,11 +201,11 @@ void SAL_CALL SvxUnoNameItemTable::replaceByName( const OUString& aApiName, cons // if it is not in our own sets, modify the pool! sal_Bool bFound = sal_False; - USHORT nSurrogate; - USHORT nCount = mpModelPool ? mpModelPool->GetItemCount( mnWhich ) : 0; + sal_uInt32 nSurrogate; + sal_uInt32 nCount = mpModelPool ? mpModelPool->GetItemCount2( mnWhich ) : 0; for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( mnWhich, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( mnWhich, nSurrogate); if( pItem && pItem->GetName() == aSearchName ) { pItem->PutValue( aElement, mnMemberId ); @@ -238,12 +238,12 @@ uno::Any SAL_CALL SvxUnoNameItemTable::getByName( const OUString& aApiName ) { const String aSearchName( aName ); NameOrIndex *pItem; - sal_Int32 nSurrogate; + sal_uInt32 nSurrogate; - sal_Int32 nSurrogateCount = mpModelPool ? (sal_Int32)mpModelPool->GetItemCount( mnWhich ) : 0; + sal_uInt32 nSurrogateCount = mpModelPool ? mpModelPool->GetItemCount2( mnWhich ) : 0; for( nSurrogate = 0; nSurrogate < nSurrogateCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( mnWhich, (USHORT)nSurrogate ); + pItem = (NameOrIndex*)mpModelPool->GetItem2( mnWhich, nSurrogate ); if( isValid( pItem ) && (pItem->GetName() == aSearchName) ) { @@ -266,11 +266,11 @@ uno::Sequence< OUString > SAL_CALL SvxUnoNameItemTable::getElementNames( ) NameOrIndex *pItem; OUString aApiName; - const sal_Int32 nSurrogateCount = mpModelPool ? (sal_Int32)mpModelPool->GetItemCount( mnWhich ) : 0; - sal_Int32 nSurrogate; + const sal_uInt32 nSurrogateCount = mpModelPool ? mpModelPool->GetItemCount2( mnWhich ) : 0; + sal_uInt32 nSurrogate; for( nSurrogate = 0; nSurrogate < nSurrogateCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( mnWhich, (USHORT)nSurrogate ); + pItem = (NameOrIndex*)mpModelPool->GetItem2( mnWhich, nSurrogate ); if( !isValid( pItem ) ) continue; @@ -305,14 +305,14 @@ sal_Bool SAL_CALL SvxUnoNameItemTable::hasByName( const OUString& aApiName ) return sal_False; const String aSearchName( aName ); - USHORT nSurrogate; + sal_uInt32 nSurrogate; const NameOrIndex *pItem; - USHORT nCount = mpModelPool ? mpModelPool->GetItemCount( mnWhich ) : 0; + sal_uInt32 nCount = mpModelPool ? mpModelPool->GetItemCount2( mnWhich ) : 0; for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( mnWhich, nSurrogate ); + pItem = (NameOrIndex*)mpModelPool->GetItem2( mnWhich, nSurrogate ); if( isValid( pItem ) && (pItem->GetName() == aSearchName) ) return sal_True; } @@ -327,11 +327,11 @@ sal_Bool SAL_CALL SvxUnoNameItemTable::hasElements( ) const NameOrIndex *pItem; - sal_Int32 nSurrogate; - const sal_Int32 nSurrogateCount = mpModelPool ? (sal_Int32)mpModelPool->GetItemCount( mnWhich ) : 0; + sal_uInt32 nSurrogate; + const sal_uInt32 nSurrogateCount = mpModelPool ? mpModelPool->GetItemCount2( mnWhich ) : 0; for( nSurrogate = 0; nSurrogate < nSurrogateCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( mnWhich, (USHORT)nSurrogate ); + pItem = (NameOrIndex*)mpModelPool->GetItem2( mnWhich, nSurrogate ); if( isValid( pItem ) ) return sal_True; diff --git a/svx/source/unodraw/UnoNamespaceMap.cxx b/svx/source/unodraw/UnoNamespaceMap.cxx index 5c7ad5226aff..faf38d64b520 100644 --- a/svx/source/unodraw/UnoNamespaceMap.cxx +++ b/svx/source/unodraw/UnoNamespaceMap.cxx @@ -118,8 +118,8 @@ namespace svx sal_uInt16* mpWhichId; - sal_uInt16 mnItemCount; - sal_uInt16 mnItem; + sal_uInt32 mnItemCount; + sal_uInt32 mnItem; const SvXMLAttrContainerItem* mpCurrentAttr; sal_uInt16 mnCurrentAttr; @@ -145,7 +145,7 @@ NamespaceIteratorImpl::NamespaceIteratorImpl( sal_uInt16* pWhichIds, SfxItemPool mpWhichId = pWhichIds; mnItem = 0; - mnItemCount = (mpWhichId && (0 != *mpWhichId) && mpPool) ? mpPool->GetItemCount( *mpWhichId ) : 0; + mnItemCount = (mpWhichId && (0 != *mpWhichId) && mpPool) ? mpPool->GetItemCount2( *mpWhichId ) : 0; } sal_Bool NamespaceIteratorImpl::next( ::rtl::OUString& rPrefix, ::rtl::OUString& rURL ) @@ -165,7 +165,7 @@ sal_Bool NamespaceIteratorImpl::next( ::rtl::OUString& rPrefix, ::rtl::OUString& const SfxPoolItem* pItem = 0; // look for the next available item in the current pool - while( (mnItem < mnItemCount) && ( NULL == (pItem = mpPool->GetItem( *mpWhichId, mnItem ) ) ) ) + while( (mnItem < mnItemCount) && ( NULL == (pItem = mpPool->GetItem2( *mpWhichId, mnItem ) ) ) ) mnItem++; // are we finished with the current whichid? @@ -177,7 +177,7 @@ sal_Bool NamespaceIteratorImpl::next( ::rtl::OUString& rPrefix, ::rtl::OUString& if( 0 != *mpWhichId ) { mnItem = 0; - mnItemCount = (mpWhichId && (0 != *mpWhichId) && mpPool) ? mpPool->GetItemCount( *mpWhichId ) : 0; + mnItemCount = (mpWhichId && (0 != *mpWhichId) && mpPool) ? mpPool->GetItemCount2( *mpWhichId ) : 0; return next( rPrefix, rURL ); } diff --git a/svx/source/unodraw/unomtabl.cxx b/svx/source/unodraw/unomtabl.cxx index dbb7269c1318..60d19e8d13a9 100644 --- a/svx/source/unodraw/unomtabl.cxx +++ b/svx/source/unodraw/unomtabl.cxx @@ -276,11 +276,11 @@ void SAL_CALL SvxUnoMarkerTable::replaceByName( const OUString& aApiName, const // if it is not in our own sets, modify the pool! sal_Bool bFound = sal_False; - USHORT nSurrogate; - const USHORT nStartCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINESTART ) : 0; + sal_uInt32 nSurrogate; + const sal_uInt32 nStartCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINESTART ) : 0; for( nSurrogate = 0; nSurrogate < nStartCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINESTART, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINESTART, nSurrogate); if( pItem && pItem->GetName() == aSearchName ) { pItem->PutValue( aElement ); @@ -289,10 +289,10 @@ void SAL_CALL SvxUnoMarkerTable::replaceByName( const OUString& aApiName, const } } - const USHORT nEndCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINEEND ) : 0; + const sal_uInt32 nEndCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINEEND ) : 0; for( nSurrogate = 0; nSurrogate < nEndCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINEEND, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINEEND, nSurrogate); if( pItem && pItem->GetName() == aSearchName ) { pItem->PutValue( aElement ); @@ -310,10 +310,10 @@ void SAL_CALL SvxUnoMarkerTable::replaceByName( const OUString& aApiName, const static sal_Bool getByNameFromPool( const String& rSearchName, SfxItemPool* pPool, USHORT nWhich, uno::Any& rAny ) { NameOrIndex *pItem; - const sal_Int32 nSurrogateCount = pPool ? (sal_Int32)pPool->GetItemCount( nWhich ) : 0; - for( sal_Int32 nSurrogate = 0; nSurrogate < nSurrogateCount; nSurrogate++ ) + const sal_uInt32 nSurrogateCount = pPool ? pPool->GetItemCount2( nWhich ) : 0; + for( sal_uInt32 nSurrogate = 0; nSurrogate < nSurrogateCount; nSurrogate++ ) { - pItem = (NameOrIndex*)pPool->GetItem( nWhich, (USHORT)nSurrogate ); + pItem = (NameOrIndex*)pPool->GetItem2( nWhich, nSurrogate ); if( pItem && pItem->GetName() == rSearchName ) { @@ -357,15 +357,15 @@ uno::Any SAL_CALL SvxUnoMarkerTable::getByName( const OUString& aApiName ) static void createNamesForPool( SfxItemPool* pPool, USHORT nWhich, std::set< OUString, comphelper::UStringLess >& rNameSet ) { - const sal_Int32 nSuroCount = pPool->GetItemCount( nWhich ); - sal_Int32 nSurrogate; + const sal_uInt32 nSuroCount = pPool->GetItemCount2( nWhich ); + sal_uInt32 nSurrogate; - NameOrIndex *pItem; + NameOrIndex* pItem; OUString aName; for( nSurrogate = 0; nSurrogate < nSuroCount; nSurrogate++ ) { - pItem = (NameOrIndex*)pPool->GetItem( nWhich, (USHORT)nSurrogate ); + pItem = (NameOrIndex*)pPool->GetItem2( nWhich, nSurrogate ); if( pItem == NULL || pItem->GetName().Len() == 0 ) continue; @@ -415,20 +415,20 @@ sal_Bool SAL_CALL SvxUnoMarkerTable::hasByName( const OUString& aName ) NameOrIndex *pItem; SvxUnogetInternalNameForItem( XATTR_LINESTART, aName, aSearchName ); - USHORT nStartCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINESTART ) : 0; - USHORT nSurrogate; + sal_uInt32 nStartCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINESTART ) : 0; + sal_uInt32 nSurrogate; for( nSurrogate = 0; nSurrogate < nStartCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINESTART, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINESTART, nSurrogate); if( pItem && pItem->GetName() == aSearchName ) return sal_True; } SvxUnogetInternalNameForItem( XATTR_LINEEND, aName, aSearchName ); - USHORT nEndCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINEEND ) : 0; + sal_uInt32 nEndCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINEEND ) : 0; for( nSurrogate = 0; nSurrogate < nEndCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINEEND, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINEEND, nSurrogate); if( pItem && pItem->GetName() == aSearchName ) return sal_True; } @@ -450,19 +450,19 @@ sal_Bool SAL_CALL SvxUnoMarkerTable::hasElements( ) NameOrIndex *pItem; - const USHORT nStartCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINESTART ) : 0; - USHORT nSurrogate; + const sal_uInt32 nStartCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINESTART ) : 0; + sal_uInt32 nSurrogate; for( nSurrogate = 0; nSurrogate < nStartCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINESTART, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINESTART, nSurrogate); if( pItem && pItem->GetName().Len() != 0 ) return sal_True; } - const USHORT nEndCount = mpModelPool ? mpModelPool->GetItemCount( XATTR_LINEEND ) : 0; + const sal_uInt32 nEndCount = mpModelPool ? mpModelPool->GetItemCount2( XATTR_LINEEND ) : 0; for( nSurrogate = 0; nSurrogate < nEndCount; nSurrogate++ ) { - pItem = (NameOrIndex*)mpModelPool->GetItem( XATTR_LINEEND, nSurrogate); + pItem = (NameOrIndex*)mpModelPool->GetItem2( XATTR_LINEEND, nSurrogate); if( pItem && pItem->GetName().Len() != 0 ) return sal_True; } diff --git a/svx/source/unodraw/unoshape.cxx b/svx/source/unodraw/unoshape.cxx index 9c5affc38f9b..afb8cbb8723a 100644 --- a/svx/source/unodraw/unoshape.cxx +++ b/svx/source/unodraw/unoshape.cxx @@ -1722,12 +1722,12 @@ sal_Bool SAL_CALL SvxShape::SetFillAttribute( sal_Int32 nWID, const OUString& rN const SfxItemPool* pPool = rSet.GetPool(); const String aSearchName( aName ); - const USHORT nCount = pPool->GetItemCount((USHORT)nWID); - const NameOrIndex *pItem; + const sal_uInt32 nCount = pPool->GetItemCount2((USHORT)nWID); + const NameOrIndex* pItem; - for( USHORT nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) + for( sal_uInt32 nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - pItem = (NameOrIndex*)pPool->GetItem((USHORT)nWID, nSurrogate); + pItem = (NameOrIndex*)pPool->GetItem2((USHORT)nWID, nSurrogate); if( pItem && ( pItem->GetName() == aSearchName ) ) { rSet.Put( *pItem ); @@ -1756,11 +1756,11 @@ sal_Bool SAL_CALL SvxShape::SetFillAttribute( sal_Int32 nWID, const OUString& rN const SfxItemPool& rPool = pModel->GetItemPool(); const String aSearchName( rName ); - const USHORT nCount = rPool.GetItemCount((USHORT)nWhich); - const NameOrIndex *pItem = 0; + const sal_uInt32 nCount = rPool.GetItemCount((USHORT)nWhich); + const NameOrIndex* pItem = 0; bool bFound = false; - for( USHORT nSurrogate = 0; ! bFound && nSurrogate < nCount; nSurrogate++ ) + for( sal_uInt32 nSurrogate = 0; ! bFound && nSurrogate < nCount; nSurrogate++ ) { pItem = (NameOrIndex*)rPool.GetItem((USHORT)nWhich, nSurrogate); if( pItem && ( pItem->GetName() == aSearchName ) ) diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx index bda709dc4abd..45ecf71b5aff 100644 --- a/svx/source/xml/xmlgrhlp.cxx +++ b/svx/source/xml/xmlgrhlp.cxx @@ -707,8 +707,8 @@ void SvXMLGraphicHelper::ImplInsertGraphicURL( const ::rtl::OUString& rURLStr, s else { const String aGraphicObjectId( aPictureStreamName ); - const GraphicObject aGrfObject( ByteString( aGraphicObjectId, RTL_TEXTENCODING_ASCII_US ) ); - + const ByteString aAsciiObjectID( aGraphicObjectId, RTL_TEXTENCODING_ASCII_US ); + const GraphicObject aGrfObject( aAsciiObjectID ); if( aGrfObject.GetType() != GRAPHIC_NONE ) { String aStreamName( aGraphicObjectId ); @@ -782,6 +782,15 @@ void SvXMLGraphicHelper::ImplInsertGraphicURL( const ::rtl::OUString& rURLStr, s rURLPair.second = sPictures; rURLPair.second += aStreamName; } +#if OSL_DEBUG_LEVEL > 0 + else + { + ByteString sMessage = "graphic object with ID '"; + sMessage += aAsciiObjectID; + sMessage += "' has an unknown type"; + OSL_ENSURE( false, sMessage.GetBuffer() ); + } +#endif } maURLSet.insert( aURLString ); diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index a301e47e5c25..627c3ed6fb45 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -250,12 +250,12 @@ String NameOrIndex::CheckNamedItem( const NameOrIndex* pCheckItem, const sal_uIn if( aUniqueName.Len() && pPool1 ) { - const sal_uInt16 nCount = pPool1->GetItemCount( nWhich ); + const sal_uInt32 nCount = pPool1->GetItemCount2( nWhich ); const NameOrIndex *pItem; - for( sal_uInt16 nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) + for( sal_uInt32 nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - pItem = (NameOrIndex*)pPool1->GetItem( nWhich, nSurrogate ); + pItem = (NameOrIndex*)pPool1->GetItem2( nWhich, nSurrogate ); if( pItem && ( pItem->GetName() == pCheckItem->GetName() ) ) { @@ -332,11 +332,11 @@ String NameOrIndex::CheckNamedItem( const NameOrIndex* pCheckItem, const sal_uIn if( (aUniqueName.Len() == 0) && pPool1 ) { - const sal_uInt16 nCount = pPool1->GetItemCount( nWhich ); + const sal_uInt32 nCount = pPool1->GetItemCount2( nWhich ); const NameOrIndex *pItem; - for( sal_uInt16 nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) + for( sal_uInt32 nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - pItem = (NameOrIndex*)pPool1->GetItem( nWhich, nSurrogate ); + pItem = (NameOrIndex*)pPool1->GetItem2( nWhich, nSurrogate ); if( pItem && pItem->GetName().Len() ) { @@ -2003,16 +2003,16 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const // 2. if we have a name check if there is already an item with the // same name in the documents pool with a different line end or start - sal_uInt16 nCount, nSurrogate; + sal_uInt32 nCount, nSurrogate; const SfxItemPool* pPool1 = &pModel->GetItemPool(); if( aUniqueName.Len() && pPool1 ) { - nCount = pPool1->GetItemCount( XATTR_LINESTART ); + nCount = pPool1->GetItemCount2( XATTR_LINESTART ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem( XATTR_LINESTART, nSurrogate ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem2( XATTR_LINESTART, nSurrogate ); if( pItem && ( pItem->GetName() == pLineStartItem->GetName() ) ) { @@ -2030,11 +2030,11 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const if( !bForceNew ) { - nCount = pPool1->GetItemCount( XATTR_LINEEND ); + nCount = pPool1->GetItemCount2( XATTR_LINEEND ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem( XATTR_LINEEND, nSurrogate ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem2( XATTR_LINEEND, nSurrogate ); if( pItem && ( pItem->GetName() == pLineStartItem->GetName() ) ) { @@ -2055,10 +2055,10 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const const SfxItemPool* pPool2 = pModel->GetStyleSheetPool() ? &pModel->GetStyleSheetPool()->GetPool() : NULL; if( aUniqueName.Len() && pPool2) { - nCount = pPool2->GetItemCount( XATTR_LINESTART ); + nCount = pPool2->GetItemCount2( XATTR_LINESTART ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool2->GetItem( XATTR_LINESTART, nSurrogate ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool2->GetItem2( XATTR_LINESTART, nSurrogate ); if( pItem && ( pItem->GetName() == pLineStartItem->GetName() ) ) { @@ -2076,10 +2076,10 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const if( !bForceNew ) { - nCount = pPool2->GetItemCount( XATTR_LINEEND ); + nCount = pPool2->GetItemCount2( XATTR_LINEEND ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool2->GetItem( XATTR_LINEEND, nSurrogate ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool2->GetItem2( XATTR_LINEEND, nSurrogate ); if( pItem && ( pItem->GetName() == pLineStartItem->GetName() ) ) { @@ -2109,12 +2109,12 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const if( pPool1 ) { - nCount = pPool1->GetItemCount( XATTR_LINESTART ); - sal_uInt16 nSurrogate2; + nCount = pPool1->GetItemCount2( XATTR_LINESTART ); + sal_uInt32 nSurrogate2; for( nSurrogate2 = 0; nSurrogate2 < nCount; nSurrogate2++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem( XATTR_LINESTART, nSurrogate2 ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem2( XATTR_LINESTART, nSurrogate2 ); if( pItem && pItem->GetName().Len() ) { @@ -2134,10 +2134,10 @@ XLineStartItem* XLineStartItem::checkForUniqueItem( SdrModel* pModel ) const } } - nCount = pPool1->GetItemCount( XATTR_LINEEND ); + nCount = pPool1->GetItemCount2( XATTR_LINEEND ); for( nSurrogate2 = 0; nSurrogate2 < nCount; nSurrogate2++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem( XATTR_LINEEND, nSurrogate2 ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem2( XATTR_LINEEND, nSurrogate2 ); if( pItem && pItem->GetName().Len() ) { @@ -2406,11 +2406,11 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const const SfxItemPool* pPool1 = &pModel->GetItemPool(); if( aUniqueName.Len() && pPool1 ) { - nCount = pPool1->GetItemCount( XATTR_LINESTART ); + nCount = pPool1->GetItemCount2( XATTR_LINESTART ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem( XATTR_LINESTART, nSurrogate ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem2( XATTR_LINESTART, nSurrogate ); if( pItem && ( pItem->GetName() == pLineEndItem->GetName() ) ) { @@ -2428,11 +2428,11 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const if( !bForceNew ) { - nCount = pPool1->GetItemCount( XATTR_LINEEND ); + nCount = pPool1->GetItemCount2( XATTR_LINEEND ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem( XATTR_LINEEND, nSurrogate ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem2( XATTR_LINEEND, nSurrogate ); if( pItem && ( pItem->GetName() == pLineEndItem->GetName() ) ) { @@ -2453,10 +2453,10 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const const SfxItemPool* pPool2 = pModel->GetStyleSheetPool() ? &pModel->GetStyleSheetPool()->GetPool() : NULL; if( aUniqueName.Len() && pPool2) { - nCount = pPool2->GetItemCount( XATTR_LINESTART ); + nCount = pPool2->GetItemCount2( XATTR_LINESTART ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool2->GetItem( XATTR_LINESTART, nSurrogate ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool2->GetItem2( XATTR_LINESTART, nSurrogate ); if( pItem && ( pItem->GetName() == pLineEndItem->GetName() ) ) { @@ -2474,10 +2474,10 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const if( !bForceNew ) { - nCount = pPool2->GetItemCount( XATTR_LINEEND ); + nCount = pPool2->GetItemCount2( XATTR_LINEEND ); for( nSurrogate = 0; nSurrogate < nCount; nSurrogate++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool2->GetItem( XATTR_LINEEND, nSurrogate ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool2->GetItem2( XATTR_LINEEND, nSurrogate ); if( pItem && ( pItem->GetName() == pLineEndItem->GetName() ) ) { @@ -2507,12 +2507,12 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const if( pPool1 ) { - nCount = pPool1->GetItemCount( XATTR_LINESTART ); - sal_uInt16 nSurrogate2; + nCount = pPool1->GetItemCount2( XATTR_LINESTART ); + sal_uInt32 nSurrogate2; for( nSurrogate2 = 0; nSurrogate2 < nCount; nSurrogate2++ ) { - const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem( XATTR_LINESTART, nSurrogate2 ); + const XLineStartItem* pItem = (const XLineStartItem*)pPool1->GetItem2( XATTR_LINESTART, nSurrogate2 ); if( pItem && pItem->GetName().Len() ) { @@ -2532,10 +2532,10 @@ XLineEndItem* XLineEndItem::checkForUniqueItem( SdrModel* pModel ) const } } - nCount = pPool1->GetItemCount( XATTR_LINEEND ); + nCount = pPool1->GetItemCount2( XATTR_LINEEND ); for( nSurrogate2 = 0; nSurrogate2 < nCount; nSurrogate2++ ) { - const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem( XATTR_LINEEND, nSurrogate2 ); + const XLineEndItem* pItem = (const XLineEndItem*)pPool1->GetItem2( XATTR_LINEEND, nSurrogate2 ); if( pItem && pItem->GetName().Len() ) { diff --git a/svx/util/hidother.src b/svx/util/hidother.src index dd566cf9abdc..e3c1f72cce4d 100644 --- a/svx/util/hidother.src +++ b/svx/util/hidother.src @@ -25,8 +25,6 @@ * ************************************************************************/ #include "../inc/helpid.hrc" // HID_XXX -#include "hidother.hrc" -#include <svx/svxids.hrc> #include "../inc/fmhelp.hrc" /* #define HID_AUTOCORR_HELP_CHGNONBRKSPACE HID_AUTOCORR_HELP_START+20 */ @@ -54,7 +52,6 @@ hidspecial HID_GRID_TRAVEL_LAST { HelpID = HID_GRID_TRAVEL_LAST ;}; hidspecial HID_GRID_TRAVEL_NEW { HelpID = HID_GRID_TRAVEL_NEW ;}; hidspecial HID_GRID_TRAVEL_NEXT { HelpID = HID_GRID_TRAVEL_NEXT ;}; hidspecial HID_GRID_TRAVEL_PREV { HelpID = HID_GRID_TRAVEL_PREV ;}; -hidspecial HID_INTERFACE_BASIDE_VIEWSH { HelpID = HID_INTERFACE_BASIDE_VIEWSH; }; hidspecial HID_POPUP_COLOR { HelpID = HID_POPUP_COLOR; }; hidspecial HID_POPUP_COLOR_CTRL { HelpID = HID_POPUP_COLOR_CTRL; }; hidspecial HID_POPUP_FRAME { HelpID = HID_POPUP_FRAME; }; @@ -74,6 +71,4 @@ hidspecial HID_SVX_CHINESE_DICTIONARY_RB_CONVERSION_TO_TRADITIONAL { HelpId = HI hidspecial HID_SVX_CHINESE_TRANSLATION_CB_USE_VARIANTS { HelpId = HID_SVX_CHINESE_TRANSLATION_CB_USE_VARIANTS; }; hidspecial HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_SIMPLIFIED { HelpId = HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_SIMPLIFIED; }; hidspecial HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_TRADITIONAL { HelpId = HID_SVX_CHINESE_TRANSLATION_RB_CONVERSION_TO_TRADITIONAL; }; -hidspecial SID_DSBROWSER_EXPLORER { HelpID = SID_DSBROWSER_EXPLORER ;}; -hidspecial SID_GALLERY_IMPORTTHEME { HelpID = SID_GALLERY_IMPORTTHEME; }; hidspecial UID_FORMPROPBROWSER_FRAME { HelpID = UID_FORMPROPBROWSER_FRAME ;}; diff --git a/ucb/source/ucp/webdav/LinkSequence.cxx b/ucb/source/ucp/webdav/LinkSequence.cxx index 39d8d9cecc38..31ec14ba0adf 100644 --- a/ucb/source/ucp/webdav/LinkSequence.cxx +++ b/ucb/source/ucp/webdav/LinkSequence.cxx @@ -168,11 +168,7 @@ bool LinkSequence::createFromXML( const rtl::OString & rInData, rInData.getStr() + nStart, nEnd - nStart + TOKEN_LENGTH ); -#if NEON_VERSION >= 0x0250 success = !ne_xml_failed( parser ); -#else - success = !!ne_xml_valid( parser ); -#endif ne_xml_destroy( parser ); diff --git a/ucb/source/ucp/webdav/LockEntrySequence.cxx b/ucb/source/ucp/webdav/LockEntrySequence.cxx index 762170e7e057..1e577a47981b 100644 --- a/ucb/source/ucp/webdav/LockEntrySequence.cxx +++ b/ucb/source/ucp/webdav/LockEntrySequence.cxx @@ -215,11 +215,7 @@ bool LockEntrySequence::createFromXML( const rtl::OString & rInData, rInData.getStr() + nStart, nEnd - nStart + TOKEN_LENGTH ); -#if NEON_VERSION >= 0x0250 success = !ne_xml_failed( parser ); -#else - success = !!ne_xml_valid( parser ); -#endif ne_xml_destroy( parser ); diff --git a/ucb/source/ucp/webdav/LockSequence.cxx b/ucb/source/ucp/webdav/LockSequence.cxx index cd5f12708d58..f95badaf19d2 100644 --- a/ucb/source/ucp/webdav/LockSequence.cxx +++ b/ucb/source/ucp/webdav/LockSequence.cxx @@ -35,6 +35,8 @@ using namespace webdav_ucp; using namespace com::sun::star; +#define BEEHIVE_BUGS_WORKAROUND + ////////////////////////////////////////////////////////////////////////// struct LockSequenceParseContext @@ -128,7 +130,11 @@ extern "C" int LockSequence_startelement_callback( extern "C" int LockSequence_chardata_callback( void *userdata, int state, +#ifdef BEEHIVE_BUGS_WORKAROUND + const char *buf1, +#else const char *buf, +#endif size_t len ) { LockSequenceParseContext * pCtx @@ -136,6 +142,15 @@ extern "C" int LockSequence_chardata_callback( if ( !pCtx->pLock ) pCtx->pLock = new ucb::Lock; +#ifdef BEEHIVE_BUGS_WORKAROUND + // Beehive sends XML values containing trailing newlines. + if ( buf1[ len - 1 ] == 0x0a ) + len--; + + char * buf = new char[ len + 1 ](); + strncpy( buf, buf1, len ); +#endif + switch ( state ) { case STATE_DEPTH: @@ -207,7 +222,7 @@ extern "C" int LockSequence_chardata_callback( pCtx->pLock->Timeout = sal_Int64( -1 ); pCtx->hasTimeout = true; OSL_ENSURE( sal_False, - "LockSequence_chardata_callback - Unknown timeout!" ); + "LockSequence_chardata_callback - Unknown timeout!" ); } break; @@ -223,6 +238,11 @@ extern "C" int LockSequence_chardata_callback( } } + +#ifdef BEEHIVE_BUGS_WORKAROUND + delete [] buf; +#endif + return 0; // zero to continue, non-zero to abort parsing } @@ -323,11 +343,7 @@ bool LockSequence::createFromXML( const rtl::OString & rInData, rInData.getStr() + nStart, nEnd - nStart + TOKEN_LENGTH ); -#if NEON_VERSION >= 0x0250 success = !ne_xml_failed( parser ); -#else - success = !!ne_xml_valid( parser ); -#endif ne_xml_destroy( parser ); diff --git a/ucb/source/ucp/webdav/NeonHeadRequest.cxx b/ucb/source/ucp/webdav/NeonHeadRequest.cxx index 2880a86a727d..1e5294882a03 100644 --- a/ucb/source/ucp/webdav/NeonHeadRequest.cxx +++ b/ucb/source/ucp/webdav/NeonHeadRequest.cxx @@ -37,16 +37,15 @@ using namespace com::sun::star; namespace { -#if NEON_VERSION >= 0x0250 -void process_headers(ne_request *req, - DAVResource &rResource, - const std::vector< ::rtl::OUString > &rHeaderNames) +void process_headers( ne_request * req, + DAVResource & rResource, + const std::vector< ::rtl::OUString > & rHeaderNames ) { - void *cursor = NULL; - const char *name, *value; + void * cursor = NULL; + const char * name, *value; - while ((cursor = ne_response_header_iterate(req, cursor, - &name, &value)) != NULL) { + while ( ( cursor = ne_response_header_iterate( req, cursor, + &name, &value ) ) != NULL ) { rtl::OUString aHeaderName( rtl::OUString::createFromAscii( name ) ); rtl::OUString aHeaderValue( rtl::OUString::createFromAscii( value ) ); @@ -86,69 +85,6 @@ void process_headers(ne_request *req, } } } -#else -struct NeonHeadRequestContext -{ - DAVResource * pResource; - const std::vector< ::rtl::OUString > * pHeaderNames; - - NeonHeadRequestContext( DAVResource * p, - const std::vector< ::rtl::OUString > * pHeaders ) - : pResource( p ), pHeaderNames( pHeaders ) {} -}; - -extern "C" void NHR_ResponseHeaderCatcher( void * userdata, - const char * value ) -{ - rtl::OUString aHeader( rtl::OUString::createFromAscii( value ) ); - sal_Int32 nPos = aHeader.indexOf( ':' ); - - if ( nPos != -1 ) - { - rtl::OUString aHeaderName( aHeader.copy( 0, nPos ) ); - - NeonHeadRequestContext * pCtx - = static_cast< NeonHeadRequestContext * >( userdata ); - - // Note: Empty vector means that all headers are requested. - bool bIncludeIt = ( pCtx->pHeaderNames->size() == 0 ); - - if ( !bIncludeIt ) - { - // Check whether this header was requested. - std::vector< ::rtl::OUString >::const_iterator it( - pCtx->pHeaderNames->begin() ); - const std::vector< ::rtl::OUString >::const_iterator end( - pCtx->pHeaderNames->end() ); - - while ( it != end ) - { - if ( (*it) == aHeaderName ) - break; - - ++it; - } - - if ( it != end ) - bIncludeIt = true; - } - - if ( bIncludeIt ) - { - // Create & set the PropertyValue - DAVPropertyValue thePropertyValue; - thePropertyValue.Name = aHeaderName; - thePropertyValue.IsCaseSensitive = false; - - if ( nPos < aHeader.getLength() ) - thePropertyValue.Value <<= aHeader.copy( nPos + 1 ).trim(); - - // Add the newly created PropertyValue - pCtx->pResource->properties.push_back( thePropertyValue ); - } - } -} -#endif } // namespace @@ -156,7 +92,7 @@ extern "C" void NHR_ResponseHeaderCatcher( void * userdata, // Constructor // ------------------------------------------------------------------- -NeonHeadRequest::NeonHeadRequest( HttpSession* inSession, +NeonHeadRequest::NeonHeadRequest( HttpSession * inSession, const rtl::OUString & inPath, const std::vector< ::rtl::OUString > & inHeaderNames, @@ -174,16 +110,9 @@ NeonHeadRequest::NeonHeadRequest( HttpSession* inSession, inPath, RTL_TEXTENCODING_UTF8 ) ); -#if NEON_VERSION < 0x0250 - NeonHeadRequestContext aCtx( &ioResource, &inHeaderNames ); - ne_add_response_header_catcher( req, NHR_ResponseHeaderCatcher, &aCtx ); -#endif - nError = ne_request_dispatch( req ); -#if NEON_VERSION >= 0x0250 - process_headers(req, ioResource, inHeaderNames); -#endif + process_headers( req, ioResource, inHeaderNames ); if ( nError == NE_OK && ne_get_status( req )->klass != 2 ) nError = NE_ERROR; diff --git a/ucb/source/ucp/webdav/NeonPropFindRequest.cxx b/ucb/source/ucp/webdav/NeonPropFindRequest.cxx index 85b5ea0393e0..f794516d20aa 100644 --- a/ucb/source/ucp/webdav/NeonPropFindRequest.cxx +++ b/ucb/source/ucp/webdav/NeonPropFindRequest.cxx @@ -191,22 +191,13 @@ extern "C" int NPFR_propfind_iter( void* userdata, // ------------------------------------------------------------------- extern "C" void NPFR_propfind_results( void* userdata, -#if NEON_VERSION >= 0x0260 const ne_uri* uri, -#else - const char* href, -#endif const NeonPropFindResultSet* set ) { // @@@ href is not the uri! DAVResource ctor wants uri! -#if NEON_VERSION >= 0x0260 DAVResource theResource( OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) ); -#else - DAVResource theResource( - OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) ); -#endif ne_propset_iterate( set, NPFR_propfind_iter, &theResource ); @@ -233,22 +224,13 @@ extern "C" int NPFR_propnames_iter( void* userdata, // ------------------------------------------------------------------- extern "C" void NPFR_propnames_results( void* userdata, -#if NEON_VERSION >= 0x0260 const ne_uri* uri, -#else - const char* href, -#endif const NeonPropFindResultSet* results ) { // @@@ href is not the uri! DAVResourceInfo ctor wants uri! // Create entry for the resource. -#if NEON_VERSION >= 0x0260 DAVResourceInfo theResource( OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) ); -#else - DAVResourceInfo theResource( - OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) ); -#endif // Fill entry. ne_propset_iterate( results, NPFR_propnames_iter, &theResource ); diff --git a/ucb/source/ucp/webdav/NeonSession.cxx b/ucb/source/ucp/webdav/NeonSession.cxx index 254fae546940..dca92a040af0 100644 --- a/ucb/source/ucp/webdav/NeonSession.cxx +++ b/ucb/source/ucp/webdav/NeonSession.cxx @@ -184,11 +184,7 @@ struct NeonRequestContext // A simple Neon response_block_reader for use with an XInputStream // ------------------------------------------------------------------- -#if NEON_VERSION >= 0x0250 extern "C" int NeonSession_ResponseBlockReader(void * inUserData, -#else -extern "C" void NeonSession_ResponseBlockReader(void * inUserData, -#endif const char * inBuf, size_t inLen ) { @@ -204,9 +200,7 @@ extern "C" void NeonSession_ResponseBlockReader(void * inUserData, if ( xInputStream.is() ) xInputStream->AddToStream( inBuf, inLen ); } -#if NEON_VERSION >= 0x0250 return 0; -#endif } // ------------------------------------------------------------------- @@ -214,11 +208,7 @@ extern "C" void NeonSession_ResponseBlockReader(void * inUserData, // A simple Neon response_block_reader for use with an XOutputStream // ------------------------------------------------------------------- -#if NEON_VERSION >= 0x0250 extern "C" int NeonSession_ResponseBlockWriter( void * inUserData, -#else -extern "C" void NeonSession_ResponseBlockWriter( void * inUserData, -#endif const char * inBuf, size_t inLen ) { @@ -236,9 +226,7 @@ extern "C" void NeonSession_ResponseBlockWriter( void * inUserData, xOutputStream->writeBytes( aSeq ); } } -#if NEON_VERSION >= 0x0250 return 0; -#endif } // ------------------------------------------------------------------- @@ -1926,17 +1914,11 @@ int NeonSession::GET( ne_session * sess, void *cursor = NULL; const char *name, *value; -#if NEON_VERSION < 0x0250 - if ( getheaders ) - ne_add_response_header_catcher( - req, runResponseHeaderHandler, userdata ); -#endif ne_decompress * dc = ne_decompress_reader( req, ne_accept_2xx, reader, userdata ); ret = ne_request_dispatch( req ); -#if NEON_VERSION >= 0x0250 if ( getheaders ) { while ( ( cursor = ne_response_header_iterate( @@ -1948,7 +1930,7 @@ int NeonSession::GET( ne_session * sess, runResponseHeaderHandler(userdata, buffer); } } -#endif + if ( ret == NE_OK && ne_get_status( req )->klass != 2 ) ret = NE_ERROR; diff --git a/ucb/source/ucp/webdav/NeonUri.cxx b/ucb/source/ucp/webdav/NeonUri.cxx index 774faa06b9dd..27f24c631161 100644 --- a/ucb/source/ucp/webdav/NeonUri.cxx +++ b/ucb/source/ucp/webdav/NeonUri.cxx @@ -59,36 +59,24 @@ using namespace webdav_ucp; namespace { const ne_uri g_sUriDefaultsHTTP = { "http", -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, DEFAULT_HTTP_PORT, -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, NULL }; const ne_uri g_sUriDefaultsHTTPS = { "https", -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, DEFAULT_HTTPS_PORT, -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, NULL }; const ne_uri g_sUriDefaultsFTP = { "ftp", -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, DEFAULT_FTP_PORT, -#if NEON_VERSION >= 0x0260 NULL, -#endif NULL, NULL }; } // namespace @@ -174,11 +162,7 @@ void NeonUri::init( const rtl::OString & rUri, const ne_uri * pUri ) pUri->scheme ? pUri->scheme : pUriDefs->scheme, RTL_TEXTENCODING_UTF8 ); mUserInfo = rtl::OStringToOUString( -#if NEON_VERSION >= 0x0260 pUri->userinfo ? pUri->userinfo : pUriDefs->userinfo, -#else - pUri->authinfo ? pUri->authinfo : pUriDefs->authinfo, -#endif RTL_TEXTENCODING_UTF8 ); mHostName = rtl::OStringToOUString( pUri->host ? pUri->host : pUriDefs->host, @@ -188,7 +172,6 @@ void NeonUri::init( const rtl::OString & rUri, const ne_uri * pUri ) pUri->path ? pUri->path : pUriDefs->path, RTL_TEXTENCODING_UTF8 ); -#if NEON_VERSION >= 0x0260 if ( pUri->query ) { mPath += rtl::OUString::createFromAscii( "?" ); @@ -202,7 +185,6 @@ void NeonUri::init( const rtl::OString & rUri, const ne_uri * pUri ) mPath += rtl::OStringToOUString( pUri->fragment, RTL_TEXTENCODING_UTF8 ); } -#endif } // ------------------------------------------------------------------- diff --git a/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx b/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx index 1ce4c70e6b21..42f30c665b61 100644 --- a/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx +++ b/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx @@ -373,11 +373,7 @@ bool UCBDeadPropertyValue::createFromXML( const rtl::OString & rInData, ne_xml_parse( parser, rInData.getStr(), rInData.getLength() ); -#if NEON_VERSION >= 0x0250 success = !ne_xml_failed( parser ); -#else - success = !!ne_xml_valid( parser ); -#endif ne_xml_destroy( parser ); diff --git a/ucb/source/ucp/webdav/webdavcontent.cxx b/ucb/source/ucp/webdav/webdavcontent.cxx index 26b2a044e7b6..c58ba207199f 100644 --- a/ucb/source/ucp/webdav/webdavcontent.cxx +++ b/ucb/source/ucp/webdav/webdavcontent.cxx @@ -1183,7 +1183,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( std::auto_ptr< ContentProperties > xProps; std::auto_ptr< ContentProperties > xCachedProps; std::auto_ptr< DAVResourceAccess > xResAccess; - rtl::OUString aEscapedTitle; + rtl::OUString aUnescapedTitle; bool bHasAll = false; uno::Reference< lang::XMultiServiceFactory > xSMgr; uno::Reference< ucb::XContentIdentifier > xIdentifier; @@ -1192,7 +1192,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( { osl::Guard< osl::Mutex > aGuard( m_aMutex ); - aEscapedTitle = NeonUri::unescape( m_aEscapedTitle ); + aUnescapedTitle = NeonUri::unescape( m_aEscapedTitle ); xSMgr.set( m_xSMgr ); xIdentifier.set( m_xIdentifier ); xProvider.set( m_xProvider.get() ); @@ -1365,7 +1365,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( if ( m_eResourceType == NON_DAV ) xProps->addProperties( aMissingProps, ContentProperties( - aEscapedTitle, + aUnescapedTitle, false ) ); } catch ( DAVException const & e ) @@ -1386,32 +1386,33 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( // might trigger HTTP redirect. // Therefore, title must be updated here. NeonUri aUri( xResAccess->getURL() ); - aEscapedTitle = aUri.GetPathBaseName(); + aUnescapedTitle = aUri.GetPathBaseNameUnescaped(); - if ( UNKNOWN == rType ) + if ( rType == UNKNOWN ) { - xProps.reset( new ContentProperties( aEscapedTitle ) ); + xProps.reset( new ContentProperties( aUnescapedTitle ) ); } // For DAV resources we only know the Title, for non-DAV // resources we additionally know that it is a document. - if ( DAV == rType ) + + if ( rType == DAV ) { //xProps.reset( - // new ContentProperties( aEscapedTitle ) ); + // new ContentProperties( aUnescapedTitle ) ); xProps->addProperty( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ), - uno::makeAny( aEscapedTitle ), + uno::makeAny( aUnescapedTitle ), true ); } else { if ( !xProps.get() ) - xProps.reset( new ContentProperties( aEscapedTitle, false ) ); + xProps.reset( new ContentProperties( aUnescapedTitle, false ) ); else xProps->addProperty( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ), - uno::makeAny( aEscapedTitle ), + uno::makeAny( aUnescapedTitle ), true ); xProps->addProperty( @@ -1429,7 +1430,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( // No server access for just created (not yet committed) objects. // Only a minimal set of properties supported at this stage. if (m_bTransient) - xProps.reset( new ContentProperties( aEscapedTitle, + xProps.reset( new ContentProperties( aUnescapedTitle, m_bCollection ) ); } @@ -1480,7 +1481,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues( m_xCachedProps->addProperties( *xProps.get() ); m_xResAccess.reset( new DAVResourceAccess( *xResAccess.get() ) ); - m_aEscapedTitle = aEscapedTitle; + m_aEscapedTitle = NeonUri::escapeSegment( aUnescapedTitle ); } return xResultRow; @@ -2947,6 +2948,20 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) // Map DAVException... uno::Any aException; + rtl::OUString aURL; + if ( m_bTransient ) + { + aURL = getParentURL(); + if ( aURL.lastIndexOf( '/' ) != ( aURL.getLength() - 1 ) ) + aURL += rtl::OUString::createFromAscii( "/" ); + + aURL += m_aEscapedTitle; + } + else + { + aURL = m_xIdentifier->getContentIdentifier(); + } + switch ( e.getStatus() ) { case SC_NOT_FOUND: @@ -2954,7 +2969,7 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) uno::Sequence< uno::Any > aArgs( 1 ); aArgs[ 0 ] <<= beans::PropertyValue( rtl::OUString::createFromAscii("Uri"), -1, - uno::makeAny(m_xIdentifier->getContentIdentifier()), + uno::makeAny(aURL), beans::PropertyState_DIRECT_VALUE); aException <<= @@ -3044,14 +3059,14 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) rtl::OUString::createFromAscii( "Locked!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - m_xIdentifier->getContentIdentifier(), - sal_True ); + aURL, + sal_False ); // not SelfOwned #else { uno::Sequence< uno::Any > aArgs( 1 ); aArgs[ 0 ] <<= beans::PropertyValue( rtl::OUString::createFromAscii("Uri"), -1, - uno::makeAny(m_xIdentifier->getContentIdentifier()), + uno::makeAny(aURL), beans::PropertyState_DIRECT_VALUE); aException <<= @@ -3071,8 +3086,8 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) rtl::OUString::createFromAscii( "Locked (self)!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - m_xIdentifier->getContentIdentifier(), - sal_True ); + aURL, + sal_True ); // SelfOwned break; case DAVException::DAV_NOT_LOCKED: @@ -3081,7 +3096,7 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) rtl::OUString::createFromAscii( "Not locked!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - m_xIdentifier->getContentIdentifier() ); + aURL ); break; case DAVException::DAV_LOCK_EXPIRED: @@ -3090,7 +3105,7 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite ) rtl::OUString::createFromAscii( "Lock expired!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - m_xIdentifier->getContentIdentifier() ); + aURL ); break; default: diff --git a/uui/source/cookiedg.src b/uui/source/cookiedg.src index 9df0d481d6ae..156da50c160c 100644 --- a/uui/source/cookiedg.src +++ b/uui/source/cookiedg.src @@ -64,18 +64,21 @@ ModalDialog DLG_COOKIES }; RadioButton RB_INFUTURE_SEND { + HelpID = "uui:RadioButton:DLG_COOKIES:RB_INFUTURE_SEND"; Pos = MAP_APPFONT ( 12 , 171 ) ; Size = MAP_APPFONT ( 52 , 10 ) ; Text [ en-US ] = "~Send" ; }; RadioButton RB_INFUTURE_IGNORE { + HelpID = "uui:RadioButton:DLG_COOKIES:RB_INFUTURE_IGNORE"; Pos = MAP_APPFONT ( 67 , 171 ) ; Size = MAP_APPFONT ( 52 , 10 ) ; Text [ en-US ] = "I~gnore" ; }; RadioButton RB_INFUTURE_INTERACTIVE { + HelpID = "uui:RadioButton:DLG_COOKIES:RB_INFUTURE_INTERACTIVE"; Pos = MAP_APPFONT ( 122 , 171 ) ; Size = MAP_APPFONT ( 52 , 10 ) ; Text [ en-US ] = "I~nteractive" ; @@ -90,12 +93,14 @@ ModalDialog DLG_COOKIES }; PushButton BTN_COOKIES_CANCEL { + HelpID = "uui:PushButton:DLG_COOKIES:BTN_COOKIES_CANCEL"; Pos = MAP_APPFONT ( 186 , 173 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; Text [ en-US ] = "~Ignore" ; }; PushButton BTN_COOKIES_OK { + HelpID = "uui:PushButton:DLG_COOKIES:BTN_COOKIES_OK"; Pos = MAP_APPFONT ( 239 , 173 ) ; Size = MAP_APPFONT ( 50 , 14 ) ; DefButton = TRUE ; diff --git a/uui/source/fltdlg.src b/uui/source/fltdlg.src index 84e27cd1be1f..6e25266e95ed 100644 --- a/uui/source/fltdlg.src +++ b/uui/source/fltdlg.src @@ -53,6 +53,7 @@ ModalDialog DLG_FILTER_SELECT ListBox LB_FILTERS { + HelpID = "uui:ListBox:DLG_FILTER_SELECT:LB_FILTERS"; Border = TRUE ; Pos = MAP_APPFONT ( 6 , 19 ) ; Size = MAP_APPFONT ( 182 , 175 ) ; diff --git a/uui/source/ids.hrc b/uui/source/ids.hrc index f9c9e2fd2d15..c292befb1663 100755..100644 --- a/uui/source/ids.hrc +++ b/uui/source/ids.hrc @@ -177,25 +177,26 @@ #define ERRCODE_UUI_SSLWARN_INVALID_1 (ERRCODE_AREA_UUI_UNKNOWNAUTH + SSLWARN_TYPE_INVALID + 1) #define TITLE_UUI_SSLWARN_INVALID (ERRCODE_AREA_UUI_UNKNOWNAUTH + SSLWARN_TYPE_INVALID + 3) -#define HID_DLG_LOGIN (HID_UUI_START + 0) -#define HID_DLG_COOKIES (HID_UUI_START + 1) -#define HID_DLG_MASTERPASSWORD_UUI (HID_UUI_START + 2) -#define HID_DLG_MASTERPASSWORD_CRT (HID_UUI_START + 3) -#define HID_DLG_FILTER_SELECT (HID_UUI_START + 4) -#define HID_DLG_PASSWORD_UUI (HID_UUI_START + 5) -#define HID_DLG_UNKNOWNAUTH_UUI (HID_UUI_START + 7) -#define HID_DLG_SSLWARN_UUI (HID_UUI_START + 8) -#define HID_XMLSECDLG_MACROWARN (HID_UUI_START + 9) -#define HID_DLG_NEWERVERSIONWARNING (HID_UUI_START +10) +#define HID_DLG_LOGIN "UUI_HID_DLG_LOGIN" +#define HID_DLG_COOKIES "UUI_HID_DLG_COOKIES" +#define HID_DLG_MASTERPASSWORD_UUI "UUI_HID_DLG_MASTERPASSWORD_UUI" +#define HID_DLG_MASTERPASSWORD_CRT "UUI_HID_DLG_MASTERPASSWORD_CRT" +#define HID_DLG_FILTER_SELECT "UUI_HID_DLG_FILTER_SELECT" +#define HID_DLG_PASSWORD_UUI "UUI_HID_DLG_PASSWORD_UUI" +#define HID_DLG_PASSWORD_CRT "UUI_HID_DLG_PASSWORD_CRT" +#define HID_DLG_UNKNOWNAUTH_UUI "UUI_HID_DLG_UNKNOWNAUTH_UUI" +#define HID_DLG_SSLWARN_UUI "UUI_HID_DLG_SSLWARN_UUI" +#define HID_XMLSECDLG_MACROWARN "UUI_HID_XMLSECDLG_MACROWARN" +#define HID_DLG_NEWERVERSIONWARNING "UUI_HID_DLG_NEWERVERSIONWARNING" -#define HID_LOGIN_DLG_PATH (HID_UUI_START +11) -#define HID_LOGIN_DLG_BROWSE (HID_UUI_START +12) -#define HID_LOGIN_DLG_USER_NAME (HID_UUI_START +13) -#define HID_LOGIN_DLG_PASSWORD (HID_UUI_START +14) -#define HID_LOGIN_DLG_ACCOUNT (HID_UUI_START +15) -#define HID_LOGIN_DLG_REMEMBER_PASSWORD (HID_UUI_START +16) -#define HID_LOGIN_DLG_USE_SYSTEM_CREDENTIALS (HID_UUI_START +17) -#define HID_DLG_SIMPLE_NAME_CLASH (HID_UUI_START +18) +#define HID_LOGIN_DLG_PATH "UUI_HID_LOGIN_DLG_PATH" +#define HID_LOGIN_DLG_BROWSE "UUI_HID_LOGIN_DLG_BROWSE" +#define HID_LOGIN_DLG_USER_NAME "UUI_HID_LOGIN_DLG_USER_NAME" +#define HID_LOGIN_DLG_PASSWORD "UUI_HID_LOGIN_DLG_PASSWORD" +#define HID_LOGIN_DLG_ACCOUNT "UUI_HID_LOGIN_DLG_ACCOUNT" +#define HID_LOGIN_DLG_REMEMBER_PASSWORD "UUI_HID_LOGIN_DLG_REMEMBER_PASSWORD" +#define HID_LOGIN_DLG_USE_SYSTEM_CREDENTIALS "UUI_HID_LOGIN_DLG_USE_SYSTEM_CREDENTIALS" +#define HID_DLG_SIMPLE_NAME_CLASH "UUI_HID_DLG_SIMPLE_NAME_CLASH" // HID_UUI_END (aka HID_CHAOS_NEW_DATABASE) is reserved in // sfx2/util/hidother.src diff --git a/uui/source/masterpasscrtdlg.src b/uui/source/masterpasscrtdlg.src index 439026d3f6e1..1ed1e9507b96 100755..100644 --- a/uui/source/masterpasscrtdlg.src +++ b/uui/source/masterpasscrtdlg.src @@ -63,6 +63,7 @@ ModalDialog DLG_UUI_MASTERPASSWORD_CRT }; Edit ED_MASTERPASSWORD_CRT { + HelpID = "uui:Edit:DLG_UUI_MASTERPASSWORD_CRT:ED_MASTERPASSWORD_CRT"; Pos = MAP_APPFONT ( COL_0 , ROW_3 ) ; Size = MAP_APPFONT ( CTRL_WIDTH , RSC_CD_TEXTBOX_HEIGHT ) ; Border = TRUE ; @@ -76,6 +77,7 @@ ModalDialog DLG_UUI_MASTERPASSWORD_CRT }; Edit ED_MASTERPASSWORD_REPEAT { + HelpID = "uui:Edit:DLG_UUI_MASTERPASSWORD_CRT:ED_MASTERPASSWORD_REPEAT"; Pos = MAP_APPFONT ( COL_0 , ROW_5 ) ; Size = MAP_APPFONT ( CTRL_WIDTH , RSC_CD_TEXTBOX_HEIGHT ) ; Border = TRUE ; diff --git a/uui/source/masterpassworddlg.src b/uui/source/masterpassworddlg.src index c7bc835d92ee..2919a85ab488 100644 --- a/uui/source/masterpassworddlg.src +++ b/uui/source/masterpassworddlg.src @@ -50,6 +50,7 @@ ModalDialog DLG_UUI_MASTERPASSWORD }; Edit ED_MASTERPASSWORD { + HelpID = "uui:Edit:DLG_UUI_MASTERPASSWORD:ED_MASTERPASSWORD"; Border = TRUE ; Pos = MAP_APPFONT ( 3 , 17 ) ; Size = MAP_APPFONT ( 169 , 13 ) ; diff --git a/uui/source/nameclashdlg.src b/uui/source/nameclashdlg.src index de8cdb8e716d..b0e5ab5d15bf 100755..100644 --- a/uui/source/nameclashdlg.src +++ b/uui/source/nameclashdlg.src @@ -60,6 +60,7 @@ ModalDialog DLG_SIMPLE_NAME_CLASH Edit EDIT_NEW_NAME { + HelpID = "uui:Edit:DLG_SIMPLE_NAME_CLASH:EDIT_NEW_NAME"; Border = TRUE ; Pos = MAP_APPFONT ( BORDER_OFFSET, DLG_HEIGTH - EDIT_HEIGTH - BTN_HEIGTH - 2*BORDER_OFFSET ) ; Size = MAP_APPFONT ( DLG_WIDTH - 2*BORDER_OFFSET , EDIT_HEIGTH ) ; @@ -67,6 +68,7 @@ ModalDialog DLG_SIMPLE_NAME_CLASH PushButton BTN_OVERWRITE { + HelpID = "uui:PushButton:DLG_SIMPLE_NAME_CLASH:BTN_OVERWRITE"; Pos = MAP_APPFONT ( DLG_WIDTH - 3*(BTN_WIDTH + BORDER_OFFSET) , DLG_HEIGTH - BTN_HEIGTH - BORDER_OFFSET ) ; Size = MAP_APPFONT ( BTN_WIDTH, BTN_HEIGTH ) ; TabStop = TRUE ; @@ -75,6 +77,7 @@ ModalDialog DLG_SIMPLE_NAME_CLASH PushButton BTN_RENAME { + HelpID = "uui:PushButton:DLG_SIMPLE_NAME_CLASH:BTN_RENAME"; Pos = MAP_APPFONT ( DLG_WIDTH - 2*(BTN_WIDTH + BORDER_OFFSET) , DLG_HEIGTH - BTN_HEIGTH - BORDER_OFFSET ) ; Size = MAP_APPFONT ( BTN_WIDTH, BTN_HEIGTH ) ; TabStop = TRUE ; diff --git a/uui/source/newerverwarn.src b/uui/source/newerverwarn.src index 3de289d69baa..94ee6be7db12 100644 --- a/uui/source/newerverwarn.src +++ b/uui/source/newerverwarn.src @@ -66,6 +66,7 @@ ModalDialog RID_DLG_NEWER_VERSION_WARNING }; PushButton PB_UPDATE { + HelpID = "uui:PushButton:RID_DLG_NEWER_VERSION_WARNING:PB_UPDATE"; Pos = MAP_APPFONT ( COL_3 , ROW_3 ) ; Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH , RSC_CD_PUSHBUTTON_HEIGHT ) ; TabStop = TRUE ; diff --git a/uui/source/passworddlg.src b/uui/source/passworddlg.src index 52f8fbfac134..41c90dfabcab 100755..100644 --- a/uui/source/passworddlg.src +++ b/uui/source/passworddlg.src @@ -52,6 +52,7 @@ ModalDialog DLG_UUI_PASSWORD Edit ED_PASSWORD { + HelpID = "uui:Edit:DLG_UUI_PASSWORD:ED_PASSWORD"; Pos = MAP_APPFONT( 3, 17 ); Size = MAP_APPFONT( 159, 12 ); Border = TRUE ; @@ -67,6 +68,7 @@ ModalDialog DLG_UUI_PASSWORD Edit ED_CONFIRM_PASSWORD { + HelpID = "uui:Edit:DLG_UUI_PASSWORD:ED_CONFIRM_PASSWORD"; Pos = MAP_APPFONT( 3, 45 ); Size = MAP_APPFONT( 159, 12 ); Border = TRUE ; diff --git a/uui/source/secmacrowarnings.src b/uui/source/secmacrowarnings.src index 6d0039da7746..f19694054281 100644 --- a/uui/source/secmacrowarnings.src +++ b/uui/source/secmacrowarnings.src @@ -74,6 +74,7 @@ ModalDialog RID_XMLSECDLG_MACROWARN }; PushButton PB_VIEWSIGNS { + HelpID = "uui:PushButton:RID_XMLSECDLG_MACROWARN:PB_VIEWSIGNS"; Pos = MAP_APPFONT( MW_COL_3, MW_ROW_2 ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); Text [ en-US ] = "View Signatures..."; @@ -87,6 +88,7 @@ ModalDialog RID_XMLSECDLG_MACROWARN }; CheckBox CB_ALWAYSTRUST { + HelpID = "uui:CheckBox:RID_XMLSECDLG_MACROWARN:CB_ALWAYSTRUST"; Pos = MAP_APPFONT( MW_COL_1, MW_ROW_4 ); Size = MAP_APPFONT( MW_COL_4-MW_COL_1, RSC_CD_CHECKBOX_HEIGHT ); Text [ en-US ] = "Always trust macros from this source"; diff --git a/uui/source/sslwarndlg.src b/uui/source/sslwarndlg.src index acae9453a971..cbcdeef3a8b1 100644 --- a/uui/source/sslwarndlg.src +++ b/uui/source/sslwarndlg.src @@ -41,7 +41,6 @@ ModalDialog DLG_UUI_SSLWARN Moveable = TRUE ; OutputSize = TRUE ; SVLook = TRUE ; - Pos = MAP_APPFONT( 221, 158 ); Size = MAP_APPFONT( DLG_WIDTH, DLG_HEIGHT ); Text [ en-US ] = "Security Warning: "; @@ -59,6 +58,7 @@ ModalDialog DLG_UUI_SSLWARN PushButton PB_VIEW__CERTIFICATE { + HelpID = "uui:PushButton:DLG_UUI_SSLWARN:PB_VIEW__CERTIFICATE"; Pos = MAP_APPFONT( DLG_CTLBTN_CERT_START_X, DLG_CTLBTN_START_Y ); Size = MAP_APPFONT( DLG_CTLBTN_CERT_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -77,6 +77,7 @@ ModalDialog DLG_UUI_SSLWARN PushButton PB_OK { + HelpID = "uui:PushButton:DLG_UUI_SSLWARN:PB_OK"; Pos = MAP_APPFONT( DLG_CTLBTN_OK_START_X, DLG_CTLBTN_START_Y ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); diff --git a/uui/source/unknownauthdlg.src b/uui/source/unknownauthdlg.src index d20a28a00704..37613939565e 100644 --- a/uui/source/unknownauthdlg.src +++ b/uui/source/unknownauthdlg.src @@ -62,6 +62,7 @@ ModalDialog DLG_UUI_UNKNOWNAUTH PushButton PB_VIEW__CERTIFICATE { + HelpID = "uui:PushButton:DLG_UUI_UNKNOWNAUTH:PB_VIEW__CERTIFICATE"; Pos = MAP_APPFONT( DLG_TEXT_START_X, RSC_SP_DLG_INNERBORDER_TOP + DLG_TEXT_1_HEIGHT + RSC_SP_CTRL_GROUP_Y ); Size = MAP_APPFONT( 70, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -80,6 +81,7 @@ ModalDialog DLG_UUI_UNKNOWNAUTH PushButton PB_OK { + HelpID = "uui:PushButton:DLG_UUI_UNKNOWNAUTH:PB_OK"; Pos = MAP_APPFONT( DLG_CTLBTN_OK_START_X, DLG_CTLBTN_START_Y ); Size = MAP_APPFONT( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ); @@ -96,6 +98,7 @@ ModalDialog DLG_UUI_UNKNOWNAUTH RadioButton RB_ACCEPT_1 { + HelpID = "uui:RadioButton:DLG_UUI_UNKNOWNAUTH:RB_ACCEPT_1"; Pos = MAP_APPFONT( DLG_TEXT_START_X, DLG_RADIOBTN_START_Y ); Size = MAP_APPFONT( 182, RSC_CD_RADIOBUTTON_HEIGHT ); @@ -106,6 +109,7 @@ ModalDialog DLG_UUI_UNKNOWNAUTH RadioButton RB_DONTACCEPT_2 { + HelpID = "uui:RadioButton:DLG_UUI_UNKNOWNAUTH:RB_DONTACCEPT_2"; Pos = MAP_APPFONT( DLG_TEXT_START_X, DLG_RADIOBTN_START_Y + RSC_CD_RADIOBUTTON_HEIGHT ); Size = MAP_APPFONT( 182, RSC_CD_RADIOBUTTON_HEIGHT ); diff --git a/xmloff/inc/xmloff/xmltoken.hxx b/xmloff/inc/xmloff/xmltoken.hxx index 80238a075973..291c99c7be21 100644 --- a/xmloff/inc/xmloff/xmltoken.hxx +++ b/xmloff/inc/xmloff/xmltoken.hxx @@ -3113,6 +3113,9 @@ namespace xmloff { namespace token { XML_OUTSIDE_MINIMUM,//#i114142# XML_OUTSIDE_MAXIMUM,//#i114142# + XML_MIN_VALUE, + XML_MAX_VALUE, + XML_TOKEN_END }; diff --git a/xmloff/prj/build.lst b/xmloff/prj/build.lst index b6c6eda1a7f5..f6871f1f00ed 100644 --- a/xmloff/prj/build.lst +++ b/xmloff/prj/build.lst @@ -9,9 +9,10 @@ xo xmloff\source\text nmake - all xo_text xo_inc NULL xo xmloff\source\draw nmake - all xo_draw xo_inc NULL xo xmloff\source\chart nmake - all xo_chart xo_inc NULL xo xmloff\source\forms nmake - all xo_forms xo_inc NULL +xo xmloff\source\forms\handler nmake - all xo_forms_handler xo_inc NULL xo xmloff\source\script nmake - all xo_script xo_inc NULL xo xmloff\source\transform nmake - all xo_transform xo_util xo_inc NULL xo xmloff\source\xforms nmake - all xo_xforms xo_inc NULL xo xmloff\source\table nmake - all xo_table xo_inc NULL -xo xmloff\util nmake - all xo_util xo_chart xo_core xo_draw xo_forms xo_meta xo_script xo_style xo_text xo_xforms xo_table NULL +xo xmloff\util nmake - all xo_util xo_chart xo_core xo_draw xo_forms xo_forms_handler xo_meta xo_script xo_style xo_text xo_xforms xo_table NULL xo xmloff\qa\unoapi nmake - all xo_qa_unoapi NULL diff --git a/xmloff/source/chart/SchXMLTableContext.cxx b/xmloff/source/chart/SchXMLTableContext.cxx index d3f0670f672d..bc1b50a908a2 100644 --- a/xmloff/source/chart/SchXMLTableContext.cxx +++ b/xmloff/source/chart/SchXMLTableContext.cxx @@ -704,6 +704,7 @@ private: public: SchXMLRangeSomewhereContext( SvXMLImport& rImport, + USHORT nPrefix, const ::rtl::OUString& rLocalName, ::rtl::OUString& rRangeString ); virtual ~SchXMLRangeSomewhereContext(); @@ -818,7 +819,7 @@ SvXMLImportContext* SchXMLTableCellContext::CreateChildContext( { //#i113950# previously the range was exported to attribute text:id, but that attribute does not allow arbitrary strings anymore //so we need to find an alternative to save that range info for copy/paste scenario ... -> use description at an empty group element for now - pContext = new SchXMLRangeSomewhereContext( GetImport(), rLocalName, maRangeId ); + pContext = new SchXMLRangeSomewhereContext( GetImport(), nPrefix, rLocalName, maRangeId ); } else { @@ -1188,9 +1189,10 @@ void SchXMLTableHelper::switchRangesFromOuterToInternalIfNecessary( //--------------------------------------------------------------------------------------------------- SchXMLRangeSomewhereContext::SchXMLRangeSomewhereContext( SvXMLImport& rImport, + USHORT nPrefix, const OUString& rLocalName, OUString& rRangeString ) : - SvXMLImportContext( rImport, XML_NAMESPACE_TEXT, rLocalName ), + SvXMLImportContext( rImport, nPrefix, rLocalName ), mrRangeString( rRangeString ) { } diff --git a/xmloff/source/core/SettingsExportHelper.cxx b/xmloff/source/core/SettingsExportHelper.cxx index 48e3dc92b61d..90e1ba583dd5 100644 --- a/xmloff/source/core/SettingsExportHelper.cxx +++ b/xmloff/source/core/SettingsExportHelper.cxx @@ -203,6 +203,7 @@ void XMLSettingsExportHelper::exportBool(const sal_Bool bValue, const rtl::OUStr void XMLSettingsExportHelper::exportByte(const sal_Int8 nValue, const rtl::OUString& rName) const { +#if 0 DBG_ASSERT(rName.getLength(), "no name"); m_rContext.AddAttribute( XML_NAME, rName ); m_rContext.AddAttribute( XML_TYPE, XML_BYTE ); @@ -211,6 +212,13 @@ void XMLSettingsExportHelper::exportByte(const sal_Int8 nValue, const rtl::OUStr SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue)); m_rContext.Characters( sBuffer.makeStringAndClear() ); m_rContext.EndElement( sal_False ); +#else + (void) nValue; (void) rName; + OSL_ENSURE(false, "XMLSettingsExportHelper::exportByte(): #i114162#:\n" + "config-items of type \"byte\" are not valid ODF, " + "so storing them is disabled!\n" + "Use a different type instead (e.g. \"short\")."); +#endif } void XMLSettingsExportHelper::exportShort(const sal_Int16 nValue, const rtl::OUString& rName) const { diff --git a/xmloff/source/core/xmlehelp.cxx b/xmloff/source/core/xmlehelp.cxx index e50e180b089a..2a2b1c2257b8 100644 --- a/xmloff/source/core/xmlehelp.cxx +++ b/xmloff/source/core/xmlehelp.cxx @@ -416,7 +416,7 @@ double SvXMLExportHelper::GetConversionFactor(::rtl::OUStringBuffer& rUnit, MapUnit SvXMLExportHelper::GetUnitFromString(const ::rtl::OUString& rString, MapUnit eDefaultUnit) { - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; sal_Int32 nLen = rString.getLength(); MapUnit eRetUnit = eDefaultUnit; diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index b1ba8520c1db..ac46c740ee97 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -752,7 +752,7 @@ void SAL_CALL SvXMLExport::setSourceDocument( const uno::Reference< lang::XCompo sal_Int32 nIndex; OUString aURL; - for( nIndex = 0; nIndex < nCount; nIndex++, *pPrefix++ ) + for( nIndex = 0; nIndex < nCount; ++nIndex, ++pPrefix ) { if( xNamespaceMap->getByName( *pPrefix ) >>= aURL ) _GetNamespaceMap().Add( *pPrefix, aURL, XML_NAMESPACE_UNKNOWN ); diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx index d65bafe583df..6cfacbd93905 100644 --- a/xmloff/source/core/xmltoken.cxx +++ b/xmloff/source/core/xmltoken.cxx @@ -3113,6 +3113,9 @@ namespace xmloff { namespace token { TOKEN( "outside-minimum", XML_OUTSIDE_MINIMUM ), TOKEN( "outside-maximum", XML_OUTSIDE_MAXIMUM ), + TOKEN( "min-value", XML_MIN_VALUE ), + TOKEN( "max-value", XML_MAX_VALUE ), + #if OSL_DEBUG_LEVEL > 0 { 0, NULL, NULL, XML_TOKEN_END } #else diff --git a/xmloff/source/core/xmluconv.cxx b/xmloff/source/core/xmluconv.cxx index 28abf2edbcbd..5e91a8575b0a 100644 --- a/xmloff/source/core/xmluconv.cxx +++ b/xmloff/source/core/xmluconv.cxx @@ -200,7 +200,7 @@ sal_Bool SvXMLUnitConverter::convertMeasure( sal_Int32& rValue, sal_Bool bNeg = sal_False; double nVal = 0; - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; const sal_Int32 nLen = rString.getLength(); // skip white space @@ -679,7 +679,7 @@ sal_Bool SvXMLUnitConverter::convertNumber64( sal_Int64& rValue, sal_Bool bNeg = sal_False; rValue = 0; - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; const sal_Int32 nLen = rString.getLength(); // skip white space @@ -874,32 +874,27 @@ void SvXMLUnitConverter::convertTime( ::rtl::OUStringBuffer& rBuffer, } /** convert ISO Time String to double; negative durations allowed */ -sal_Bool SvXMLUnitConverter::convertTime( double& fTime, - const ::rtl::OUString& rString) +static bool lcl_convertTime( const ::rtl::OUString& rString, sal_Int32& o_rDays, sal_Int32& o_rHours, sal_Int32& o_rMins, + sal_Int32& o_rSecs, sal_Bool& o_rIsNegativeTime, double& o_rFractionalSecs ) { rtl::OUString aTrimmed = rString.trim().toAsciiUpperCase(); const sal_Unicode* pStr = aTrimmed.getStr(); // negative time duration? - sal_Bool bIsNegativeDuration = sal_False; if ( sal_Unicode('-') == (*pStr) ) { - bIsNegativeDuration = sal_True; + o_rIsNegativeTime = sal_True; pStr++; } if ( *(pStr++) != sal_Unicode('P') ) // duration must start with "P" - return sal_False; + return false; - rtl::OUString sDoubleStr; - sal_Bool bSuccess = sal_True; + ::rtl::OUString sDoubleStr; + sal_Bool bSuccess = true; sal_Bool bDone = sal_False; sal_Bool bTimePart = sal_False; sal_Bool bIsFraction = sal_False; - sal_Int32 nDays = 0; - sal_Int32 nHours = 0; - sal_Int32 nMins = 0; - sal_Int32 nSecs = 0; sal_Int32 nTemp = 0; while ( bSuccess && !bDone ) @@ -910,7 +905,7 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, else if ( sal_Unicode('0') <= c && sal_Unicode('9') >= c ) { if ( nTemp >= SAL_MAX_INT32 / 10 ) - bSuccess = sal_False; + bSuccess = false; else { if ( !bIsFraction ) @@ -928,17 +923,17 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, { if ( c == sal_Unicode('H') ) { - nHours = nTemp; + o_rHours = nTemp; nTemp = 0; } else if ( c == sal_Unicode('M') ) { - nMins = nTemp; + o_rMins = nTemp; nTemp = 0; } else if ( (c == sal_Unicode(',')) || (c == sal_Unicode('.')) ) { - nSecs = nTemp; + o_rSecs = nTemp; nTemp = 0; bIsFraction = sal_True; sDoubleStr = OUString(RTL_CONSTASCII_USTRINGPARAM("0.")); @@ -947,13 +942,13 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, { if ( !bIsFraction ) { - nSecs = nTemp; + o_rSecs = nTemp; nTemp = 0; sDoubleStr = OUString(RTL_CONSTASCII_USTRINGPARAM("0.0")); } } else - bSuccess = sal_False; // invalid character + bSuccess = false; // invalid character } else { @@ -961,7 +956,7 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, bTimePart = sal_True; else if ( c == sal_Unicode('D') ) { - nDays = nTemp; + o_rDays = nTemp; nTemp = 0; } else if ( c == sal_Unicode('Y') || c == sal_Unicode('M') ) @@ -969,14 +964,28 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, //! how many days is a year or month? DBG_ERROR("years or months in duration: not implemented"); - bSuccess = sal_False; + bSuccess = false; } else - bSuccess = sal_False; // invalid character + bSuccess = false; // invalid character } } if ( bSuccess ) + o_rFractionalSecs = sDoubleStr.toDouble(); + return bSuccess; +} + +sal_Bool SvXMLUnitConverter::convertTime( double& fTime, + const ::rtl::OUString& rString) +{ + sal_Int32 nDays = 0; + sal_Int32 nHours = 0; + sal_Int32 nMins = 0; + sal_Int32 nSecs = 0; + sal_Bool bIsNegativeDuration = sal_False; + double fFractionalSecs = 0.0; + if ( lcl_convertTime( rString, nDays, nHours, nMins, nSecs, bIsNegativeDuration, fFractionalSecs ) ) { if ( nDays ) nHours += nDays * 24; // add the days to the hours part @@ -985,12 +994,11 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, double fMin = nMins; double fSec = nSecs; double fSec100 = 0.0; - double fFraction = sDoubleStr.toDouble(); fTempTime = fHour / 24; fTempTime += fMin / (24 * 60); fTempTime += fSec / (24 * 60 * 60); fTempTime += fSec100 / (24 * 60 * 60 * 60); - fTempTime += fFraction / (24 * 60 * 60); + fTempTime += fFractionalSecs / (24 * 60 * 60); // negative duration? if ( bIsNegativeDuration ) @@ -999,8 +1007,9 @@ sal_Bool SvXMLUnitConverter::convertTime( double& fTime, } fTime = fTempTime; + return sal_True; } - return bSuccess; + return sal_False; } /** convert util::DateTime to ISO Time String */ @@ -1022,33 +1031,18 @@ void SvXMLUnitConverter::convertTime( ::rtl::OUStringBuffer& rBuffer, sal_Bool SvXMLUnitConverter::convertTime( ::com::sun::star::util::DateTime& rDateTime, const ::rtl::OUString& rString ) { - double fCalculatedTime = 0.0; - if( convertTime( fCalculatedTime, rString ) ) - { - // #101357# declare as volatile to prevent optimization - // (gcc 3.0.1 Linux) - volatile double fTempTime = fCalculatedTime; - fTempTime *= 24; - double fHoursValue = ::rtl::math::approxFloor (fTempTime); - fTempTime -= fHoursValue; - fTempTime *= 60; - double fMinsValue = ::rtl::math::approxFloor (fTempTime); - fTempTime -= fMinsValue; - fTempTime *= 60; - double fSecsValue = ::rtl::math::approxFloor (fTempTime); - fTempTime -= fSecsValue; - double f100SecsValue = 0.0; - - if( fTempTime > 0.00001 ) - f100SecsValue = fTempTime; - + sal_Int32 nDays = 0, nHours = 0, nMins = 0, nSecs = 0; + sal_Bool bIsNegativeDuration = sal_False; + double fFractionalSecs = 0.0; + if ( lcl_convertTime( rString, nDays, nHours, nMins, nSecs, bIsNegativeDuration, fFractionalSecs ) ) + { rDateTime.Year = 0; rDateTime.Month = 0; rDateTime.Day = 0; - rDateTime.Hours = static_cast < sal_uInt16 > ( fHoursValue ); - rDateTime.Minutes = static_cast < sal_uInt16 > ( fMinsValue ); - rDateTime.Seconds = static_cast < sal_uInt16 > ( fSecsValue ); - rDateTime.HundredthSeconds = static_cast < sal_uInt16 > ( f100SecsValue * 100.0 ); + rDateTime.Hours = static_cast < sal_uInt16 > ( nHours ); + rDateTime.Minutes = static_cast < sal_uInt16 > ( nMins ); + rDateTime.Seconds = static_cast < sal_uInt16 > ( nSecs ); + rDateTime.HundredthSeconds = static_cast < sal_uInt16 > ( fFractionalSecs * 100.0 ); return sal_True; } diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx index 2ad03f6576de..149829f0f440 100644 --- a/xmloff/source/draw/sdxmlexp.cxx +++ b/xmloff/source/draw/sdxmlexp.cxx @@ -853,7 +853,7 @@ void SdXMLExport::ImpPrepAutoLayoutInfos() } // prepare name creation - for(sal_Int32 nCnt = 0L; nCnt < mnDocDrawPageCount; nCnt++) + for (sal_Int32 nCnt = 0; nCnt < mnDocDrawPageCount; nCnt++) { Any aAny(mxDocDrawPages->getByIndex(nCnt)); Reference<XDrawPage> xDrawPage; @@ -1207,11 +1207,11 @@ void SdXMLExport::ImpWriteAutoLayoutInfos() Point aTmpPos(aPartPos); - for(sal_Int32 a = 0L; a < nRowCnt; a++) + for (sal_Int32 a = 0; a < nRowCnt; a++) { aTmpPos.X() = aPartPos.X(); - for(sal_Int32 b = 0L; b < nColCnt; b++) + for (sal_Int32 b = 0; b < nColCnt; b++) { Rectangle aTmpRect(aTmpPos, aPartSize); @@ -1416,7 +1416,7 @@ void SdXMLExport::ImpPrepPageMasterInfos() if(mnDocMasterPageCount) { // look for needed page-masters, create these - for(sal_Int32 nMPageId = 0L; nMPageId < mnDocMasterPageCount; nMPageId++) + for (sal_Int32 nMPageId = 0; nMPageId < mnDocMasterPageCount; nMPageId++) { Reference< XDrawPage > xMasterPage( mxDocMasterPages->getByIndex(nMPageId), UNO_QUERY ); ImpXMLEXPPageMasterInfo* pNewInfo = 0L; @@ -1841,7 +1841,7 @@ void SdXMLExport::ImpWritePresentationStyles() { if(IsImpress()) { - for(sal_Int32 nCnt = 0L; nCnt < mnDocMasterPageCount; nCnt++) + for (sal_Int32 nCnt = 0; nCnt < mnDocMasterPageCount; nCnt++) { Any aAny(mxDocMasterPages->getByIndex(nCnt)); Reference<container::XNamed> xNamed; @@ -2554,7 +2554,7 @@ void SdXMLExport::_ExportMasterStyles() } // export MasterPages in master-styles section - for(sal_Int32 nMPageId = 0L; nMPageId < mnDocMasterPageCount; nMPageId++) + for (sal_Int32 nMPageId = 0; nMPageId < mnDocMasterPageCount; nMPageId++) { Reference< XDrawPage > xMasterPage( mxDocMasterPages->getByIndex(nMPageId), UNO_QUERY ); if(xMasterPage.is()) diff --git a/xmloff/source/draw/shapeexport3.cxx b/xmloff/source/draw/shapeexport3.cxx index 559f94f6d51f..f51302b64156 100644 --- a/xmloff/source/draw/shapeexport3.cxx +++ b/xmloff/source/draw/shapeexport3.cxx @@ -218,7 +218,7 @@ void XMLShapeExport::ImpExport3DShape( drawing::DoubleSequence* pInnerSequenceY = xPolyPolygon3D.SequenceY.getArray(); sal_Int32 a; - for( a= 0L; a < nOuterSequenceCount; a++) + for (a = 0; a < nOuterSequenceCount; a++) { sal_Int32 nInnerSequenceCount(pInnerSequenceX->getLength()); double* pArrayX = pInnerSequenceX->getArray(); @@ -268,7 +268,7 @@ void XMLShapeExport::ImpExport3DShape( pInnerSequenceX = xPolyPolygon3D.SequenceX.getArray(); pInnerSequenceY = xPolyPolygon3D.SequenceY.getArray(); - for(a = 0L; a < nOuterSequenceCount; a++) + for (a = 0; a < nOuterSequenceCount; a++) { sal_Int32 nInnerSequenceCount(pInnerSequenceX->getLength()); double* pArrayX = pInnerSequenceX->getArray(); diff --git a/xmloff/source/draw/xexptran.cxx b/xmloff/source/draw/xexptran.cxx index e486394988db..969e3a0d5f8f 100644 --- a/xmloff/source/draw/xexptran.cxx +++ b/xmloff/source/draw/xexptran.cxx @@ -1455,8 +1455,8 @@ SdXMLImExPointsElement::SdXMLImExPointsElement(const OUString& rNew, // second loop if(nNumPoints) { - nPos = 0L; - maPoly.realloc(1L); + nPos = 0; + maPoly.realloc(1); drawing::PointSequence* pOuterSequence = maPoly.getArray(); pOuterSequence->realloc(nNumPoints); awt::Point* pInnerSequence = pOuterSequence->getArray(); @@ -2651,8 +2651,8 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { @@ -2682,8 +2682,8 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { @@ -2713,7 +2713,7 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); sal_Int32 nY(mnLastY); if(bRelative) @@ -2741,7 +2741,7 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { sal_Int32 nX(mnLastX); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) nY += mnLastY; @@ -2769,10 +2769,10 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, { sal_Int32 nX1; sal_Int32 nY1; - sal_Int32 nX2(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY2(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX2(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY2(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { @@ -2830,12 +2830,12 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { - sal_Int32 nX1(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY1(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nX2(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY2(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX1(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY1(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nX2(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY2(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { @@ -2879,10 +2879,10 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, while(nPos < nLen && Imp_IsOnNumberChar(aStr, nPos)) { - sal_Int32 nXX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nYY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nXX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nYY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { @@ -2932,8 +2932,8 @@ SdXMLImExSvgDElement::SdXMLImExSvgDElement(const OUString& rNew, { sal_Int32 nXX; sal_Int32 nYY; - sal_Int32 nX(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); - sal_Int32 nY(Imp_ImportNumberAndSpaces(0L, aStr, nPos, nLen, rConv)); + sal_Int32 nX(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); + sal_Int32 nY(Imp_ImportNumberAndSpaces(0, aStr, nPos, nLen, rConv)); if(bRelative) { diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx index b073e1e28d40..a26806ce6c24 100644 --- a/xmloff/source/draw/ximpshap.cxx +++ b/xmloff/source/draw/ximpshap.cxx @@ -1926,7 +1926,35 @@ void SdXMLConnectorShapeContext::StartElement(const uno::Reference< xml::sax::XA SetLayer(); if ( maPath.hasValue() ) - xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygonBezier") ), maPath ); + { + // --> OD #i115492# + // Ignore svg:d attribute for text documents created by OpenOffice.org + // versions before OOo 3.3, because these OOo versions are storing + // svg:d values not using the correct unit. + bool bApplySVGD( true ); + if ( uno::Reference< text::XTextDocument >(GetImport().GetModel(), uno::UNO_QUERY).is() ) + { + sal_Int32 nUPD( 0 ); + sal_Int32 nBuild( 0 ); + const bool bBuildIdFound = GetImport().getBuildIds( nUPD, nBuild ); + if ( GetImport().IsTextDocInOOoFileFormat() || + ( bBuildIdFound && + ( ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0 + ( nUPD == 680 ) || // OOo 2.x + ( nUPD == 300 ) || // OOo 3.0 - OOo 3.0.1 + ( nUPD == 310 ) || // OOo 3.1 - OOo 3.1.1 + ( nUPD == 320 ) ) ) ) // OOo 3.2 - OOo 3.2.1 + { + bApplySVGD = false; + } + } + + if ( bApplySVGD ) + { + xProps->setPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("PolyPolygonBezier") ), maPath ); + } + // <-- + } SdXMLShapeContext::StartElement(xAttrList); } diff --git a/xmloff/source/forms/controlelement.cxx b/xmloff/source/forms/controlelement.cxx index 84a74fe44a8b..748cf68c23ed 100644 --- a/xmloff/source/forms/controlelement.cxx +++ b/xmloff/source/forms/controlelement.cxx @@ -59,6 +59,8 @@ namespace xmloff case HIDDEN: return "hidden"; case GRID: return "grid"; case VALUERANGE: return "value-range"; + case TIME: return "time"; + case DATE: return "date"; default: return "generic-control"; } diff --git a/xmloff/source/forms/controlelement.hxx b/xmloff/source/forms/controlelement.hxx index 1816710fb4dc..d226f218f426 100644 --- a/xmloff/source/forms/controlelement.hxx +++ b/xmloff/source/forms/controlelement.hxx @@ -63,6 +63,8 @@ namespace xmloff GRID, VALUERANGE, GENERIC_CONTROL, + TIME, + DATE, UNKNOWN // must be the last element }; diff --git a/xmloff/source/forms/elementexport.cxx b/xmloff/source/forms/elementexport.cxx index 115b06c4c2ad..149965631b27 100644 --- a/xmloff/source/forms/elementexport.cxx +++ b/xmloff/source/forms/elementexport.cxx @@ -36,6 +36,7 @@ #include "formcellbinding.hxx" #include "formcellbinding.hxx" #include "xformsexport.hxx" +#include "property_meta_data.hxx" /** === begin UNO includes === **/ #include <com/sun/star/text/XText.hpp> @@ -321,6 +322,9 @@ namespace xmloff #endif } + // "new-style" properties ... + exportGenericHandlerAttributes(); + // common control attributes exportCommonControlAttributes(); @@ -474,6 +478,84 @@ namespace xmloff } //--------------------------------------------------------------------- + void OControlExport::exportGenericHandlerAttributes() + { + const Sequence< Property > aProperties = m_xPropertyInfo->getProperties(); + for ( const Property* prop = aProperties.getConstArray(); + prop != aProperties.getConstArray() + aProperties.getLength(); + ++prop + ) + { + try + { + // see if this property can already be handled with an IPropertyHandler (which, on the long + // term, should be the case for most, if not all, properties) + const PropertyDescription* propDescription = metadata::getPropertyDescription( prop->Name ); + if ( propDescription == NULL ) + continue; + + // let the factory provide the concrete handler. Note that caching, if desired, is the task + // of the factory + PPropertyHandler handler = (*propDescription->factory)( propDescription->propertyId ); + ENSURE_OR_CONTINUE( handler.get() != NULL, + "OControlExport::exportGenericHandlerAttributes: invalid property handler provided by the factory!" ); + + ::rtl::OUString attributeValue; + if ( propDescription->propertyGroup == NO_GROUP ) + { + // that's a property which has a direct mapping to an attribute + if ( !shouldExportProperty( prop->Name ) ) + // TODO: in the future, we surely need a more sophisticated approach to this, involving the property + // handler, or the property description + { + exportedProperty( prop->Name ); + continue; + } + + const Any propValue = m_xProps->getPropertyValue( prop->Name ); + attributeValue = handler->getAttributeValue( propValue ); + } + else + { + // that's a property which is part of a group of properties, whose values, in their entity, comprise + // a single attribute value + + // retrieve the descriptions of all other properties which add to the attribute value + PropertyDescriptionList descriptions; + metadata::getPropertyGroup( propDescription->propertyGroup, descriptions ); + + // retrieve the values for all those properties + PropertyValues aValues; + for ( PropertyDescriptionList::iterator desc = descriptions.begin(); + desc != descriptions.end(); + ++desc + ) + { + // TODO: XMultiPropertySet? + const Any propValue = m_xProps->getPropertyValue( (*desc)->propertyName ); + aValues[ (*desc)->propertyId ] = propValue; + } + + // let the handler translate into an XML attribute value + attributeValue = handler->getAttributeValue( aValues ); + } + + AddAttribute( + propDescription->attribute.namespacePrefix, + token::GetXMLToken( propDescription->attribute.attributeToken ), + attributeValue + ); + + exportedProperty( prop->Name ); + } + catch( const Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + } + } + + //--------------------------------------------------------------------- void OControlExport::exportCommonControlAttributes() { size_t i=0; @@ -1380,21 +1462,35 @@ namespace xmloff m_nClassId = FormComponentType::CONTROL; DBG_CHECK_PROPERTY( PROPERTY_CLASSID, sal_Int16 ); m_xProps->getPropertyValue(PROPERTY_CLASSID) >>= m_nClassId; + bool knownType = false; switch (m_nClassId) { case FormComponentType::DATEFIELD: + m_eType = DATE; + knownType = true; + // NO BREAK case FormComponentType::TIMEFIELD: + if ( !knownType ) + { + m_eType = TIME; + knownType = true; + } + m_nIncludeSpecial |= SCA_VALIDATION; + // NO BREAK case FormComponentType::NUMERICFIELD: case FormComponentType::CURRENCYFIELD: case FormComponentType::PATTERNFIELD: - m_eType = FORMATTED_TEXT; + if ( !knownType ) + { + m_eType = FORMATTED_TEXT; + knownType = true; + } // NO BREAK case FormComponentType::TEXTFIELD: { // it's some kind of edit. To know which type we need further investigation - if (FORMATTED_TEXT != m_eType) - { // not coming from the previous cases which had a class id .ne. TEXTFIELD - + if ( !knownType ) + { // check if it's a formatted field if (m_xPropertyInfo->hasPropertyByName(PROPERTY_FORMATKEY)) { @@ -1430,14 +1526,21 @@ namespace xmloff m_eType = TEXT; } } + knownType = true; } - // attributes which are common to all the four types: + // attributes which are common to all the types: // common attributes m_nIncludeCommon = - CCA_NAME | CCA_SERVICE_NAME | CCA_DISABLED | CCA_VALUE | + CCA_NAME | CCA_SERVICE_NAME | CCA_DISABLED | CCA_PRINTABLE | CCA_TAB_INDEX | CCA_TAB_STOP | CCA_TITLE; + if ( ( m_nClassId != FormComponentType::DATEFIELD ) + && ( m_nClassId != FormComponentType::TIMEFIELD ) + ) + // date and time field values are handled differently nowadays + m_nIncludeCommon |= CCA_VALUE; + // database attributes m_nIncludeDatabase = DA_DATA_FIELD | DA_INPUT_REQUIRED; @@ -1461,8 +1564,7 @@ namespace xmloff // max and min values and validation: if (FORMATTED_TEXT == m_eType) { // in general all controls represented as formatted-text have these props - if (FormComponentType::PATTERNFIELD != m_nClassId) - // but the PatternField does not have value limits + if ( FormComponentType::PATTERNFIELD != m_nClassId ) // except the PatternField m_nIncludeSpecial |= SCA_MAX_VALUE | SCA_MIN_VALUE; if (FormComponentType::TEXTFIELD != m_nClassId) @@ -1471,8 +1573,13 @@ namespace xmloff } // if it's not a password field or rich text control, the CurrentValue needs to be stored, too - if ( PASSWORD != m_eType ) + if ( ( PASSWORD != m_eType ) + && ( DATE != m_eType ) + && ( TIME != m_eType ) + ) + { m_nIncludeCommon |= CCA_CURRENT_VALUE; + } } break; diff --git a/xmloff/source/forms/elementexport.hxx b/xmloff/source/forms/elementexport.hxx index d9504271ac04..a8981f0a1fea 100644 --- a/xmloff/source/forms/elementexport.hxx +++ b/xmloff/source/forms/elementexport.hxx @@ -161,6 +161,13 @@ namespace xmloff */ void exportSubTags() throw (::com::sun::star::uno::Exception); + /** adds the attributes which are handled via generic IPropertyHandlers + + <p>In the future, this really should be *all* attribiutes, instead of this shitload of + hand-crafted code we have currently ...</p> + */ + void exportGenericHandlerAttributes(); + /** adds common control attributes to the XMLExport context given <p>The attribute list of the context is not cleared initially, this is the responsibility of the caller.</p> diff --git a/xmloff/source/forms/elementimport.cxx b/xmloff/source/forms/elementimport.cxx index b946c4a20941..eb6dd0965e76 100644 --- a/xmloff/source/forms/elementimport.cxx +++ b/xmloff/source/forms/elementimport.cxx @@ -28,22 +28,21 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#include <algorithm> #include "elementimport.hxx" -#include <xmloff/xmlimp.hxx> -#include <xmloff/nmspmap.hxx> -#include <xmloff/xmluconv.hxx> +#include "xmloff/xmlimp.hxx" +#include "xmloff/nmspmap.hxx" +#include "xmloff/xmluconv.hxx" #include "strings.hxx" #include "callbacks.hxx" #include "attriblistmerge.hxx" #include "xmlnmspe.hxx" #include "eventimport.hxx" -#include <xmloff/txtstyli.hxx> +#include "xmloff/txtstyli.hxx" #include "formenums.hxx" -#include <xmloff/xmltoken.hxx> +#include "xmloff/xmltoken.hxx" #include "gridcolumnproptranslator.hxx" -#include <comphelper/extract.hxx> -#include <comphelper/types.hxx> +#include "property_description.hxx" +#include "property_meta_data.hxx" /** === begin UNO includes === **/ #include <com/sun/star/text/XText.hpp> @@ -54,9 +53,13 @@ #include <com/sun/star/beans/XPropertyContainer.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> /** === end UNO includes === **/ + #include <tools/urlobj.hxx> +#include <tools/diagnose_ex.h> #include <tools/time.hxx> #include <rtl/logfile.hxx> +#include <comphelper/extract.hxx> +#include <comphelper/types.hxx> #include <algorithm> #include <functional> @@ -157,6 +160,7 @@ namespace xmloff ,m_rEventManager(_rEventManager) ,m_pStyleElement( NULL ) ,m_xParentContainer(_rxParentContainer) + ,m_bImplicitGenericAttributeHandling( true ) { OSL_ENSURE(m_xParentContainer.is(), "OElementImport::OElementImport: invalid parent container!"); } @@ -167,17 +171,41 @@ namespace xmloff } //--------------------------------------------------------------------- + ::rtl::OUString OElementImport::determineDefaultServiceName() const + { + return ::rtl::OUString(); + } + + //--------------------------------------------------------------------- void OElementImport::StartElement(const Reference< sax::XAttributeList >& _rxAttrList) { ENTER_LOG_CONTEXT( "xmloff::OElementImport - importing one element" ); - // call the base class. This should give us enough information (especially the service name) - // to create our UNO element - OPropertyImport::StartElement(_rxAttrList); - // create the element + const SvXMLNamespaceMap& rMap = m_rContext.getGlobalContext().GetNamespaceMap(); + const ::rtl::OUString sImplNameAttribute = rMap.GetQNameByKey( XML_NAMESPACE_FORM, GetXMLToken( XML_CONTROL_IMPLEMENTATION ) ); + const ::rtl::OUString sControlImplementation = _rxAttrList->getValueByName( sImplNameAttribute ); + + // retrieve the service name + if ( sControlImplementation.getLength() > 0 ) + { + ::rtl::OUString sOOoImplementationName; + const sal_uInt16 nImplPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( sControlImplementation, &sOOoImplementationName ); + m_sServiceName = ( nImplPrefix == XML_NAMESPACE_OOO ) ? sOOoImplementationName : sControlImplementation; + } + + if ( !m_sServiceName.getLength() ) + determineDefaultServiceName(); + + // create the object *now*. This allows setting properties in the various handleAttribute methods. + // (Though currently not all code is migrated to this pattern, most attributes are still handled + // by remembering the value (via implPushBackPropertyValue), and setting the correct property value + // later (in OControlImport::StartElement).) m_xElement = createElement(); - if ( !m_xInfo.is() && m_xElement.is() ) + if ( m_xElement.is() ) m_xInfo = m_xElement->getPropertySetInfo(); + + // call the base class + OPropertyImport::StartElement( _rxAttrList ); } //--------------------------------------------------------------------- @@ -197,26 +225,61 @@ namespace xmloff if (!m_xElement.is()) return; + // apply the non-generic properties + implApplySpecificProperties(); + + // set the generic properties + implApplyGenericProperties(); + + // set the style properties + if ( m_pStyleElement && m_xElement.is() ) + { + Reference< XPropertySet > xPropTranslation = + new OGridColumnPropertyTranslator( Reference< XMultiPropertySet >( m_xElement, UNO_QUERY ) ); + const_cast< XMLTextStyleContext* >( m_pStyleElement )->FillPropertySet( xPropTranslation ); + + const ::rtl::OUString sNumberStyleName = const_cast< XMLTextStyleContext* >( m_pStyleElement )->GetDataStyleName( ); + if ( sNumberStyleName.getLength() ) + // the style also has a number (sub) style + m_rContext.applyControlNumberStyle( m_xElement, sNumberStyleName ); + } + + // insert the element into the parent container + if (!m_sName.getLength()) + { + OSL_ENSURE(sal_False, "OElementImport::EndElement: did not find a name attribute!"); + m_sName = implGetDefaultName(); + } + + m_xParentContainer->insertByName(m_sName, makeAny(m_xElement)); + LEAVE_LOG_CONTEXT( ); + } + + //--------------------------------------------------------------------- + void OElementImport::implApplySpecificProperties() + { + if ( m_aValues.empty() ) + return; + // set all the properties we collected #if OSL_DEBUG_LEVEL > 0 // check if the object has all the properties // (We do this in the non-pro version only. Doing it all the time would be much to expensive) if ( m_xInfo.is() ) { - PropertyValueArray::iterator aEnd = m_aValues.end(); + PropertyValueArray::const_iterator aEnd = m_aValues.end(); for ( PropertyValueArray::iterator aCheck = m_aValues.begin(); aCheck != aEnd; ++aCheck ) { OSL_ENSURE(m_xInfo->hasPropertyByName(aCheck->Name), - ::rtl::OString("OElementImport::EndElement: read a property (") + ::rtl::OString("OElementImport::implApplySpecificProperties: read a property (") += ::rtl::OString(aCheck->Name.getStr(), aCheck->Name.getLength(), RTL_TEXTENCODING_ASCII_US) += ::rtl::OString(") which does not exist on the element!")); } } #endif - OSL_ENSURE(!m_aValues.empty(), "OElementImport::EndElement: no properties read!"); // set the properties const Reference< XMultiPropertySet > xMultiProps(m_xElement, UNO_QUERY); @@ -253,7 +316,7 @@ namespace xmloff } catch(Exception&) { - OSL_ENSURE(sal_False, "OElementImport::EndElement: could not set the properties (using the XMultiPropertySet)!"); + OSL_ENSURE(sal_False, "OElementImport::implApplySpecificProperties: could not set the properties (using the XMultiPropertySet)!"); } } @@ -274,42 +337,16 @@ namespace xmloff catch(Exception&) { OSL_ENSURE(sal_False, - ::rtl::OString("OElementImport::EndElement: could not set the property \"") + ::rtl::OString("OElementImport::implApplySpecificProperties: could not set the property \"") += ::rtl::OString(aPropValues->Name.getStr(), aPropValues->Name.getLength(), RTL_TEXTENCODING_ASCII_US) += ::rtl::OString("\"!")); } } } - - // set the generic properties - implImportGenericProperties(); - - // set the style properties - if ( m_pStyleElement && m_xElement.is() ) - { - Reference< XPropertySet > xPropTranslation = - new OGridColumnPropertyTranslator( Reference< XMultiPropertySet >( m_xElement, UNO_QUERY ) ); - const_cast< XMLTextStyleContext* >( m_pStyleElement )->FillPropertySet( xPropTranslation ); - - const ::rtl::OUString sNumberStyleName = const_cast< XMLTextStyleContext* >( m_pStyleElement )->GetDataStyleName( ); - if ( sNumberStyleName.getLength() ) - // the style also has a number (sub) style - m_rContext.applyControlNumberStyle( m_xElement, sNumberStyleName ); - } - - // insert the element into the parent container - if (!m_sName.getLength()) - { - OSL_ENSURE(sal_False, "OElementImport::EndElement: did not find a name attribute!"); - m_sName = implGetDefaultName(); - } - - m_xParentContainer->insertByName(m_sName, makeAny(m_xElement)); - LEAVE_LOG_CONTEXT( ); } //--------------------------------------------------------------------- - void OElementImport::implImportGenericProperties() + void OElementImport::implApplyGenericProperties() { if ( m_aGenericValues.empty() ) return; @@ -334,7 +371,7 @@ namespace xmloff if ( !xDynamicProperties.is() ) { #if OSL_DEBUG_LEVEL > 0 - ::rtl::OString aMessage( "OElementImport::implImportGenericProperties: encountered an unknown property (" ); + ::rtl::OString aMessage( "OElementImport::implApplyGenericProperties: encountered an unknown property (" ); aMessage += ::rtl::OUStringToOString( aPropValues->Name, RTL_TEXTENCODING_ASCII_US ); aMessage += "), but component is no PropertyBag!"; OSL_ENSURE( false, aMessage.getStr() ); @@ -352,7 +389,7 @@ namespace xmloff m_xInfo = m_xElement->getPropertySetInfo(); } - // determine the type of the value (source forthe following conversion) + // determine the type of the value (source for the following conversion) TypeClass eValueTypeClass = aPropValues->Value.getValueTypeClass(); const sal_Bool bValueIsSequence = TypeClass_SEQUENCE == eValueTypeClass; if ( bValueIsSequence ) @@ -361,7 +398,7 @@ namespace xmloff eValueTypeClass = aSimpleType.getTypeClass(); } - // determine the type of the property (target forthe following conversion) + // determine the type of the property (target for the following conversion) const Property aProperty( m_xInfo->getPropertyByName( aPropValues->Name ) ); TypeClass ePropTypeClass = aProperty.Type.getTypeClass(); const sal_Bool bPropIsSequence = TypeClass_SEQUENCE == ePropTypeClass; @@ -373,18 +410,18 @@ namespace xmloff if ( bPropIsSequence != bValueIsSequence ) { - OSL_ENSURE( false, "OElementImport::implImportGenericProperties: either both value and property should be a sequence, or none of them!" ); + OSL_ENSURE( false, "OElementImport::implApplyGenericProperties: either both value and property should be a sequence, or none of them!" ); continue; } if ( bValueIsSequence ) { OSL_ENSURE( eValueTypeClass == TypeClass_ANY, - "OElementImport::implImportGenericProperties: only ANYs should have been imported as generic list property!" ); + "OElementImport::implApplyGenericProperties: only ANYs should have been imported as generic list property!" ); // (OPropertyImport should produce only Sequencer< Any >, since it cannot know the real type OSL_ENSURE( ePropTypeClass == TypeClass_SHORT, - "OElementImport::implImportGenericProperties: conversion to sequences other than 'sequence< short >' not implemented, yet!" ); + "OElementImport::implApplyGenericProperties: conversion to sequences other than 'sequence< short >' not implemented, yet!" ); Sequence< Any > aXMLValueList; aPropValues->Value >>= aXMLValueList; @@ -427,13 +464,13 @@ namespace xmloff aPropValues->Value <<= static_cast< sal_Int64 >( nVal ); break; default: - OSL_ENSURE( false, "OElementImport::implImportGenericProperties: unsupported value type!" ); + OSL_ENSURE( false, "OElementImport::implApplyGenericProperties: unsupported value type!" ); break; } } break; default: - OSL_ENSURE( false, "OElementImport::implImportGenericProperties: non-double values not supported!" ); + OSL_ENSURE( false, "OElementImport::implApplyGenericProperties: non-double values not supported!" ); break; } } @@ -484,38 +521,117 @@ namespace xmloff } //--------------------------------------------------------------------- - void OElementImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + PropertyGroups::const_iterator OElementImport::impl_matchPropertyGroup( const PropertyGroups& i_propertyGroups ) const { - if (!m_sServiceName.getLength() && - token::IsXMLToken( _rLocalName, token::XML_CONTROL_IMPLEMENTATION)) - { // it's the service name + ENSURE_OR_RETURN( m_xInfo.is(), "OElementImport::impl_matchPropertyGroup: no property set info!", i_propertyGroups.end() ); - ::rtl::OUString sImplName; - const sal_uInt16 nImplPrefix = - GetImport().GetNamespaceMap().GetKeyByAttrName( _rValue, - &sImplName ); - m_sServiceName = XML_NAMESPACE_OOO==nImplPrefix ? sImplName - :_rValue; + for ( PropertyGroups::const_iterator group = i_propertyGroups.begin(); + group != i_propertyGroups.end(); + ++group + ) + { + bool missingProp = false; + for ( PropertyDescriptionList::const_iterator prop = group->begin(); + prop != group->end(); + ++prop + ) + { + if ( !m_xInfo->hasPropertyByName( (*prop)->propertyName ) ) + { + missingProp = true; + break; + } + } + + if ( missingProp ) + // try next group + continue; + + return group; } - else + + return i_propertyGroups.end(); + } + + //--------------------------------------------------------------------- + bool OElementImport::tryGenericAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ) + { + // the generic approach (which I hope all props will be migrated to, on the medium term): property handlers + const AttributeDescription attribute( metadata::getAttributeDescription( _nNamespaceKey, _rLocalName ) ); + if ( attribute.attributeToken != XML_TOKEN_INVALID ) { - if (!m_sName.getLength() && - token::IsXMLToken( _rLocalName, token::XML_NAME)) - // remember the name for later use in EndElement - m_sName = _rValue; + PropertyGroups propertyGroups; + metadata::getPropertyGroupList( attribute, propertyGroups ); + const PropertyGroups::const_iterator pos = impl_matchPropertyGroup( propertyGroups ); + if ( pos == propertyGroups.end() ) + return false; - // maybe it's the style attribute? - if ( token::IsXMLToken( _rLocalName, token::XML_TEXT_STYLE_NAME ) ) + do { - const SvXMLStyleContext* pStyleContext = m_rContext.getStyleElement( _rValue ); - OSL_ENSURE( pStyleContext, "OPropertyImport::handleAttribute: do not know the style!" ); - // remember the element for later usage. - m_pStyleElement = PTR_CAST( XMLTextStyleContext, pStyleContext ); + const PropertyDescriptionList& rProperties( *pos ); + const PropertyDescription* first = *rProperties.begin(); + ENSURE_OR_BREAK( first != NULL, "OElementImport::handleAttribute: invalid property description!" ); + const PPropertyHandler handler = (*first->factory)( first->propertyId ); + ENSURE_OR_BREAK( handler.get() != NULL, "OElementImport::handleAttribute: invalid property handler!" ); + + PropertyValues aValues; + for ( PropertyDescriptionList::const_iterator propDesc = rProperties.begin(); + propDesc != rProperties.end(); + ++propDesc + ) + { + aValues[ (*propDesc)->propertyId ] = Any(); + } + if ( handler->getPropertyValues( _rValue, aValues ) ) + { + for ( PropertyDescriptionList::const_iterator propDesc = rProperties.begin(); + propDesc != rProperties.end(); + ++propDesc + ) + { + implPushBackPropertyValue( (*propDesc)->propertyName, aValues[ (*propDesc)->propertyId ] ); + } + } } - else - // let the base class handle it - OPropertyImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + while ( false ); + + // handled + return true; } + return false; + } + + //--------------------------------------------------------------------- + bool OElementImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + { + if ( token::IsXMLToken( _rLocalName, token::XML_CONTROL_IMPLEMENTATION ) ) + // ignore this, it has already been handled in OElementImport::StartElement + return true; + + if ( token::IsXMLToken( _rLocalName, token::XML_NAME ) ) + { + if ( !m_sName.getLength() ) + // remember the name for later use in EndElement + m_sName = _rValue; + return true; + } + + // maybe it's the style attribute? + if ( token::IsXMLToken( _rLocalName, token::XML_TEXT_STYLE_NAME ) ) + { + const SvXMLStyleContext* pStyleContext = m_rContext.getStyleElement( _rValue ); + OSL_ENSURE( pStyleContext, "OElementImport::handleAttribute: do not know the style!" ); + // remember the element for later usage. + m_pStyleElement = PTR_CAST( XMLTextStyleContext, pStyleContext ); + return true; + } + + if ( m_bImplicitGenericAttributeHandling ) + if ( tryGenericAttribute( _nNamespaceKey, _rLocalName, _rValue ) ) + return true; + + // let the base class handle it + return OPropertyImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); } //--------------------------------------------------------------------- @@ -553,7 +669,7 @@ namespace xmloff { ::rtl::OUString sLocalAttrName = ::rtl::OUString::createFromAscii(_pAttributeName); if ( !encounteredAttribute( sLocalAttrName ) ) - handleAttribute( XML_NAMESPACE_FORM, sLocalAttrName, ::rtl::OUString::createFromAscii( _pAttributeDefault ) ); + OSL_VERIFY( handleAttribute( XML_NAMESPACE_FORM, sLocalAttrName, ::rtl::OUString::createFromAscii( _pAttributeDefault ) ) ); } } @@ -566,6 +682,7 @@ namespace xmloff :OElementImport(_rImport, _rEventManager, _nPrefix, _rName, _rxParentContainer) ,m_eElementType(OControlElement::UNKNOWN) { + disableImplicitGenericAttributeHandling(); } //--------------------------------------------------------------------- @@ -574,6 +691,38 @@ namespace xmloff :OElementImport(_rImport, _rEventManager, _nPrefix, _rName, _rxParentContainer) ,m_eElementType(_eType) { + disableImplicitGenericAttributeHandling(); + } + + //--------------------------------------------------------------------- + ::rtl::OUString OControlImport::determineDefaultServiceName() const + { + const sal_Char* pServiceName = NULL; + switch ( m_eElementType ) + { + case OControlElement::TEXT: + case OControlElement::TEXT_AREA: + case OControlElement::PASSWORD: pServiceName = "com.sun.star.form.component.TextField"; break; + case OControlElement::FILE: pServiceName = "com.sun.star.form.component.FileControl"; break; + case OControlElement::FORMATTED_TEXT: pServiceName = "com.sun.star.form.component.FormattedField"; break; + case OControlElement::FIXED_TEXT: pServiceName = "com.sun.star.form.component.FixedText"; break; + case OControlElement::COMBOBOX: pServiceName = "com.sun.star.form.component.ComboBox"; break; + case OControlElement::LISTBOX: pServiceName = "com.sun.star.form.component.ListBox"; break; + case OControlElement::BUTTON: pServiceName = "com.sun.star.form.component.CommandButton"; break; + case OControlElement::IMAGE: pServiceName = "com.sun.star.form.component.ImageButton"; break; + case OControlElement::CHECKBOX: pServiceName = "com.sun.star.form.component.CheckBox"; break; + case OControlElement::RADIO: pServiceName = "com.sun.star.form.component.RadioButton"; break; + case OControlElement::FRAME: pServiceName = "com.sun.star.form.component.GroupBox"; break; + case OControlElement::IMAGE_FRAME: pServiceName = "com.sun.star.form.component.DatabaseImageControl"; break; + case OControlElement::HIDDEN: pServiceName = "com.sun.star.form.component.HiddenControl"; break; + case OControlElement::GRID: pServiceName = "com.sun.star.form.component.GridControl"; break; + case OControlElement::TIME: pServiceName = "com.sun.star.form.component.DateField"; break; + case OControlElement::DATE: pServiceName = "com.sun.star.form.component.TimeField"; break; + default: break; + } + if ( pServiceName != NULL ) + return ::rtl::OUString::createFromAscii( pServiceName ); + return ::rtl::OUString(); } //--------------------------------------------------------------------- @@ -584,7 +733,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool OControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { static const sal_Char* pLinkedCellAttributeName = OAttributeMetaData::getBindingAttributeName(BA_LINKED_CELL); @@ -601,66 +750,84 @@ namespace xmloff m_sControlId = _rValue; } } + return true; } - else if ( _rLocalName.equalsAscii( pLinkedCellAttributeName ) ) + + if ( _rLocalName.equalsAscii( pLinkedCellAttributeName ) ) { // it's the address of a spreadsheet cell m_sBoundCellAddress = _rValue; + return true; } - else if ( _nNamespaceKey == XML_NAMESPACE_XFORMS && IsXMLToken( _rLocalName, XML_BIND ) ) + + if ( _nNamespaceKey == XML_NAMESPACE_XFORMS && IsXMLToken( _rLocalName, XML_BIND ) ) { m_sBindingID = _rValue; + return true; } - else if ( _nNamespaceKey == XML_NAMESPACE_FORM && IsXMLToken( _rLocalName, XML_XFORMS_LIST_SOURCE ) ) + + if ( _nNamespaceKey == XML_NAMESPACE_FORM && IsXMLToken( _rLocalName, XML_XFORMS_LIST_SOURCE ) ) { m_sListBindingID = _rValue; + return true; } - else if ( (_nNamespaceKey == XML_NAMESPACE_FORM && IsXMLToken( _rLocalName, XML_XFORMS_SUBMISSION ) ) || - ( _nNamespaceKey == XML_NAMESPACE_XFORMS && IsXMLToken( _rLocalName, XML_SUBMISSION ) ) ) + + if ( ( ( _nNamespaceKey == XML_NAMESPACE_FORM ) + && IsXMLToken( _rLocalName, XML_XFORMS_SUBMISSION ) + ) + || ( ( _nNamespaceKey == XML_NAMESPACE_XFORMS ) + && IsXMLToken( _rLocalName, XML_SUBMISSION ) + ) + ) { m_sSubmissionID = _rValue; + return true; } - else + + if ( OElementImport::tryGenericAttribute( _nNamespaceKey, _rLocalName, _rValue ) ) + return true; + + static const sal_Char* pValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCA_VALUE); + static const sal_Char* pCurrentValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCA_CURRENT_VALUE); + static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MIN_VALUE); + static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MAX_VALUE); + static const sal_Char* pRepeatDelayAttributeName = OAttributeMetaData::getSpecialAttributeName( SCA_REPEAT_DELAY ); + + sal_Int32 nHandle = -1; + if ( _rLocalName.equalsAscii( pValueAttributeName ) ) + nHandle = PROPID_VALUE; + else if ( _rLocalName.equalsAscii( pCurrentValueAttributeName ) ) + nHandle = PROPID_CURRENT_VALUE; + else if ( _rLocalName.equalsAscii( pMinValueAttributeName ) ) + nHandle = PROPID_MIN_VALUE; + else if ( _rLocalName.equalsAscii( pMaxValueAttributeName ) ) + nHandle = PROPID_MAX_VALUE; + if ( nHandle != -1 ) { - static const sal_Char* pValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCA_VALUE); - static const sal_Char* pCurrentValueAttributeName = OAttributeMetaData::getCommonControlAttributeName(CCA_CURRENT_VALUE); - static const sal_Char* pMinValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MIN_VALUE); - static const sal_Char* pMaxValueAttributeName = OAttributeMetaData::getSpecialAttributeName(SCA_MAX_VALUE); - static const sal_Char* pRepeatDelayAttributeName = OAttributeMetaData::getSpecialAttributeName( SCA_REPEAT_DELAY ); - - sal_Int32 nHandle = -1; - if ( _rLocalName.equalsAscii( pValueAttributeName ) ) - nHandle = PROPID_VALUE; - else if ( _rLocalName.equalsAscii( pCurrentValueAttributeName ) ) - nHandle = PROPID_CURRENT_VALUE; - else if ( _rLocalName.equalsAscii( pMinValueAttributeName ) ) - nHandle = PROPID_MIN_VALUE; - else if ( _rLocalName.equalsAscii( pMaxValueAttributeName ) ) - nHandle = PROPID_MAX_VALUE; - if ( nHandle != -1 ) + // for the moment, simply remember the name and the value + PropertyValue aProp; + aProp.Name = _rLocalName; + aProp.Handle = nHandle; + aProp.Value <<= _rValue; + m_aValueProperties.push_back(aProp); + return true; + } + + if ( _rLocalName.equalsAscii( pRepeatDelayAttributeName ) ) + { + ::Time aTime; + sal_Int32 nFractions = 0; + if ( SvXMLUnitConverter::convertTimeDuration( _rValue, aTime, &nFractions ) ) { - // for the moment, simply remember the name and the value PropertyValue aProp; - aProp.Name = _rLocalName; - aProp.Handle = nHandle; - aProp.Value <<= _rValue; - m_aValueProperties.push_back(aProp); - } - else if ( _rLocalName.equalsAscii( pRepeatDelayAttributeName ) ) - { - ::Time aTime; - sal_Int32 nFractions = 0; - if ( SvXMLUnitConverter::convertTimeDuration( _rValue, aTime, &nFractions ) ) - { - PropertyValue aProp; - aProp.Name = PROPERTY_REPEAT_DELAY; - aProp.Value <<= (sal_Int32)( ( ( aTime.GetMSFromTime() / 1000 ) * 1000 ) + nFractions ); + aProp.Name = PROPERTY_REPEAT_DELAY; + aProp.Value <<= (sal_Int32)( ( ( aTime.GetMSFromTime() / 1000 ) * 1000 ) + nFractions ); - implPushBackPropertyValue(aProp); - } + implPushBackPropertyValue(aProp); } - else - OElementImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + return true; } + + return OElementImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); } //--------------------------------------------------------------------- @@ -713,6 +880,7 @@ namespace xmloff ++aValueProps ) { + bool bSuccess = false; switch (aValueProps->Handle) { case PROPID_VALUE: @@ -722,6 +890,7 @@ namespace xmloff if (!bRetrievedValues) { getValuePropertyNames(m_eElementType, nClassId, pCurrentValueProperty, pValueProperty); + ENSURE_OR_BREAK( pCurrentValueProperty && pValueProperty, "OControlImport::StartElement: illegal value property names!" ); bRetrievedValues = sal_True; } OSL_ENSURE((PROPID_VALUE != aValueProps->Handle) || pValueProperty, @@ -734,6 +903,7 @@ namespace xmloff aValueProps->Name = ::rtl::OUString::createFromAscii(pValueProperty); else aValueProps->Name = ::rtl::OUString::createFromAscii(pCurrentValueProperty); + bSuccess = true; } break; case PROPID_MIN_VALUE: @@ -743,6 +913,7 @@ namespace xmloff if (!bRetrievedValueLimits) { getValueLimitPropertyNames(nClassId, pMinValueProperty, pMaxValueProperty); + ENSURE_OR_BREAK( pMinValueProperty && pMaxValueProperty, "OControlImport::StartElement: illegal value limit property names!" ); bRetrievedValueLimits = sal_True; } OSL_ENSURE((PROPID_MIN_VALUE != aValueProps->Handle) || pMinValueProperty, @@ -755,10 +926,14 @@ namespace xmloff aValueProps->Name = ::rtl::OUString::createFromAscii(pMinValueProperty); else aValueProps->Name = ::rtl::OUString::createFromAscii(pMaxValueProperty); + bSuccess = true; } break; } + if ( !bSuccess ) + continue; + // translate the value implTranslateValueProperty(m_xInfo, *aValueProps); // add the property to the base class' array @@ -980,7 +1155,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OImagePositionImport::handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, + bool OImagePositionImport::handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ) { if ( _rLocalName == GetXMLToken( XML_IMAGE_POSITION ) ) @@ -990,16 +1165,19 @@ namespace xmloff _rValue, OEnumMapper::getEnumMap( OEnumMapper::epImagePosition ) ) >>= m_nImagePosition ); m_bHaveImagePosition = sal_True; + return true; } - else if ( _rLocalName == GetXMLToken( XML_IMAGE_ALIGN ) ) + + if ( _rLocalName == GetXMLToken( XML_IMAGE_ALIGN ) ) { OSL_VERIFY( PropertyConversion::convertString( m_rContext.getGlobalContext(), ::getCppuType( &m_nImageAlign ), _rValue, OEnumMapper::getEnumMap( OEnumMapper::epImageAlign ) ) >>= m_nImageAlign ); + return true; } - else - OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); + + return OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); } //--------------------------------------------------------------------- @@ -1047,14 +1225,16 @@ namespace xmloff } //--------------------------------------------------------------------- - void OReferredControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, + bool OReferredControlImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { static const ::rtl::OUString s_sReferenceAttributeName = ::rtl::OUString::createFromAscii(OAttributeMetaData::getCommonControlAttributeName(CCA_FOR)); if (_rLocalName == s_sReferenceAttributeName) + { m_sReferringControls = _rValue; - else - OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + return true; + } + return OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); } //===================================================================== @@ -1068,7 +1248,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OPasswordImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool OPasswordImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { static const ::rtl::OUString s_sEchoCharAttributeName = ::rtl::OUString::createFromAscii(OAttributeMetaData::getSpecialAttributeName(SCA_ECHO_CHAR)); if (_rLocalName == s_sEchoCharAttributeName) @@ -1083,9 +1263,9 @@ namespace xmloff else aEchoChar.Value <<= (sal_Int16)0; implPushBackPropertyValue(aEchoChar); + return true; } - else - OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + return OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); } //===================================================================== @@ -1099,7 +1279,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void ORadioImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool ORadioImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { // need special handling for the State & CurrentState properties: // they're stored as booleans, but expected to be int16 properties @@ -1122,9 +1302,9 @@ namespace xmloff implPushBackPropertyValue(aNewValue); } + return true; } - else - OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); + return OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); } //===================================================================== @@ -1138,7 +1318,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OURLReferenceImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool OURLReferenceImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { static const sal_Char* s_pTargetLocationAttributeName = OAttributeMetaData::getCommonControlAttributeName( CCA_TARGET_LOCATION ); static const sal_Char* s_pImageDataAttributeName = OAttributeMetaData::getCommonControlAttributeName( CCA_IMAGE_DATA ); @@ -1157,18 +1337,18 @@ namespace xmloff if ( bMakeAbsolute && ( _rValue.getLength() > 0 ) ) { // make a global URL out of the local one - ::rtl::OUString sAdjustedValue; - // only resolve image related url - // we don't want say form url targets to be resolved - // using ResolveGraphicObjectURL - if ( 0 == _rLocalName.compareToAscii( s_pImageDataAttributeName ) ) - sAdjustedValue = m_rContext.getGlobalContext().ResolveGraphicObjectURL( _rValue, FALSE ); - else - sAdjustedValue = m_rContext.getGlobalContext().GetAbsoluteReference( _rValue ); - OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, sAdjustedValue ); + ::rtl::OUString sAdjustedValue; + // only resolve image related url + // we don't want say form url targets to be resolved + // using ResolveGraphicObjectURL + if ( 0 == _rLocalName.compareToAscii( s_pImageDataAttributeName ) ) + sAdjustedValue = m_rContext.getGlobalContext().ResolveGraphicObjectURL( _rValue, FALSE ); + else + sAdjustedValue = m_rContext.getGlobalContext().GetAbsoluteReference( _rValue ); + return OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, sAdjustedValue ); } - else - OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); + + return OImagePositionImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); } //===================================================================== @@ -1205,14 +1385,14 @@ namespace xmloff } //--------------------------------------------------------------------- - void OValueRangeImport::handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ) + bool OValueRangeImport::handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ) { if ( _rLocalName.equalsAscii( OAttributeMetaData::getSpecialAttributeName( SCA_STEP_SIZE ) ) ) { GetImport().GetMM100UnitConverter().convertNumber( m_nStepSizeValue, _rValue ); + return true; } - else - OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); + return OControlImport::handleAttribute( _nNamespaceKey, _rLocalName, _rValue ); } //--------------------------------------------------------------------- @@ -1535,7 +1715,7 @@ namespace xmloff } //--------------------------------------------------------------------- - void OListAndComboImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool OListAndComboImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { static const sal_Char* pListSourceAttributeName = OAttributeMetaData::getDatabaseAttributeName(DA_LIST_SOURCE); if ( _rLocalName.equalsAscii(pListSourceAttributeName) ) @@ -1560,12 +1740,16 @@ namespace xmloff } implPushBackPropertyValue( aListSource ); + return true; } - else if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_CELL_RANGE ) ) ) + + if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_CELL_RANGE ) ) ) { m_sCellListSource = _rValue; + return true; } - else if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_LINKING_TYPE ) ) ) + + if ( _rLocalName.equalsAscii( OAttributeMetaData::getBindingAttributeName( BA_LIST_LINKING_TYPE ) ) ) { sal_Int16 nLinkageType = 0; PropertyConversion::convertString( @@ -1576,9 +1760,10 @@ namespace xmloff ) >>= nLinkageType; m_bLinkWithIndexes = ( nLinkageType != 0 ); + return true; } - else - OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + + return OControlImport::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); } //--------------------------------------------------------------------- @@ -1776,7 +1961,9 @@ namespace xmloff || (OControlElement::FORMATTED_TEXT == _eType) || (OControlElement::CHECKBOX == _eType) || (OControlElement::LISTBOX == _eType) - || (OControlElement::COMBOBOX == _eType), + || (OControlElement::COMBOBOX == _eType) + || (OControlElement::TIME == _eType) + || (OControlElement::DATE == _eType), "OColumnWrapperImport::implCreateChildContext: invalid or unrecognized sub element!"); switch (_eType) @@ -1871,19 +2058,25 @@ namespace xmloff } //--------------------------------------------------------------------- - void OFormImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) + bool OFormImport::handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { // handle the master/details field attributes (they're way too special to let the OPropertyImport handle them) static const ::rtl::OUString s_sMasterFieldsAttributeName = ::rtl::OUString::createFromAscii(OAttributeMetaData::getFormAttributeName(faMasterFields)); static const ::rtl::OUString s_sDetailFieldsAttributeName = ::rtl::OUString::createFromAscii(OAttributeMetaData::getFormAttributeName(faDetailFiels)); - if (s_sMasterFieldsAttributeName == _rLocalName) + if ( s_sMasterFieldsAttributeName == _rLocalName ) + { implTranslateStringListProperty(PROPERTY_MASTERFIELDS, _rValue); - else if (s_sDetailFieldsAttributeName == _rLocalName) + return true; + } + + if ( s_sDetailFieldsAttributeName == _rLocalName ) + { implTranslateStringListProperty(PROPERTY_DETAILFIELDS, _rValue); + return true; + } - else - OFormImport_Base::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); + return OFormImport_Base::handleAttribute(_nNamespaceKey, _rLocalName, _rValue); } //--------------------------------------------------------------------- diff --git a/xmloff/source/forms/elementimport.hxx b/xmloff/source/forms/elementimport.hxx index 97eb2ec950d3..3b604c752595 100644 --- a/xmloff/source/forms/elementimport.hxx +++ b/xmloff/source/forms/elementimport.hxx @@ -31,6 +31,9 @@ #include "propertyimport.hxx" #include "controlelement.hxx" #include "valueproperties.hxx" +#include "eventimport.hxx" +#include "logging.hxx" +#include "property_description.hxx" /** === begin UNO includes === **/ #include <com/sun/star/text/XTextCursor.hpp> @@ -39,9 +42,8 @@ #include <com/sun/star/form/XGridColumnFactory.hpp> #include <com/sun/star/script/XEventAttacherManager.hpp> /** === end UNO includes === **/ + #include <comphelper/stl_types.hxx> -#include "eventimport.hxx" -#include "logging.hxx" class XMLTextStyleContext; //......................................................................... @@ -83,22 +85,25 @@ namespace xmloff ,public OStackedLogging { protected: - ::rtl::OUString m_sServiceName; // the service name as extracted from the service-name attribute - ::rtl::OUString m_sName; // the name of the object (redundant, already contained in the base class' array) + ::rtl::OUString m_sServiceName; // the service name as extracted from the service-name attribute + ::rtl::OUString m_sName; // the name of the object (redundant, already contained in the base class' array) OFormLayerXMLImport_Impl& m_rFormImport; // the form import context - IEventAttacherManager& m_rEventManager; // the event attacher manager + IEventAttacherManager& m_rEventManager; // the event attacher manager const XMLTextStyleContext* m_pStyleElement; // the XML element which describes the style we encountered // while reading our element + /// the parent container to insert the new element into ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > - m_xParentContainer; - // the parent container to insert the new element into + m_xParentContainer; - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > - m_xInfo; + /// the element we're creating. Valid after StartElement ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > - m_xElement; // the element we're creating. Valid after StartElement + m_xElement; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > + m_xInfo; + + bool m_bImplicitGenericAttributeHandling; public: /** ctor @@ -132,7 +137,7 @@ namespace xmloff virtual void EndElement(); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); @@ -158,13 +163,28 @@ namespace xmloff */ void simulateDefaultedAttribute(const sal_Char* _pAttributeName, const ::rtl::OUString& _rPropertyName, const sal_Char* _pAttributeDefault); + /** to be called from within handleAttribute, checks whether the given attribute is covered by our generic + attribute handler mechanisms + */ + bool tryGenericAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ); + + /** controls whether |handleAttribute| implicitly calls |tryGenericAttribute|, or whether the derived class + must do this explicitly at a suitable place in its own |handleAttribute| + */ + void disableImplicitGenericAttributeHandling() { m_bImplicitGenericAttributeHandling = false; } + private: ::rtl::OUString implGetDefaultName() const; - void implImportGenericProperties(); + void implApplyGenericProperties(); + void implApplySpecificProperties(); /** sets the style properties which have been read for the element (if any) */ void implSetStyleProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ); + + PropertyGroups::const_iterator impl_matchPropertyGroup( const PropertyGroups& i_propertyGroups ) const; + + virtual ::rtl::OUString determineDefaultServiceName() const; }; //===================================================================== @@ -225,7 +245,7 @@ namespace xmloff virtual void EndElement(); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); @@ -239,6 +259,8 @@ namespace xmloff const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >& _rxPropInfo, ::com::sun::star::beans::PropertyValue& /* [in/out] */ _rPropValue); + virtual ::rtl::OUString determineDefaultServiceName() const; + /** registers the given cell address as value binding address for our element <p>The default implementation simply calls registerCellValueBinding at our import @@ -265,7 +287,6 @@ namespace xmloff // OElementImport overridables virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createElement(); - }; // TODO: @@ -295,7 +316,7 @@ namespace xmloff const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList); // OPropertyImport overridables - virtual void handleAttribute( sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ); @@ -321,7 +342,7 @@ namespace xmloff const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); }; @@ -339,7 +360,7 @@ namespace xmloff ); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); }; @@ -358,7 +379,7 @@ namespace xmloff protected: // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); }; @@ -380,7 +401,7 @@ namespace xmloff protected: // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); }; @@ -430,7 +451,7 @@ namespace xmloff const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& _rxAttrList ); // OPropertyImport overridables - virtual void handleAttribute( sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute( sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue ); }; @@ -516,7 +537,7 @@ namespace xmloff virtual void EndElement(); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); @@ -715,7 +736,7 @@ namespace xmloff sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName); // OPropertyImport overridables - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); diff --git a/xmloff/source/forms/form_handler_factory.hxx b/xmloff/source/forms/form_handler_factory.hxx new file mode 100755 index 000000000000..62bf94f74aa8 --- /dev/null +++ b/xmloff/source/forms/form_handler_factory.hxx @@ -0,0 +1,50 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_FORM_HANDLER_FACTORY_HXX +#define XMLOFF_FORM_HANDLER_FACTORY_HXX + +#include "property_handler.hxx" + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= FormHandlerFactory + //================================================================================================================== + class FormHandlerFactory + { + public: + static PPropertyHandler getFormPropertyHandler( const PropertyId i_propertyId ); + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_FORM_HANDLER_FACTORY_HXX diff --git a/xmloff/source/forms/handler/form_handler_factory.cxx b/xmloff/source/forms/handler/form_handler_factory.cxx new file mode 100755 index 000000000000..ccf829d4201f --- /dev/null +++ b/xmloff/source/forms/handler/form_handler_factory.cxx @@ -0,0 +1,90 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_xmloff.hxx" + +#include "form_handler_factory.hxx" +#include "vcl_date_handler.hxx" +#include "vcl_time_handler.hxx" + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + namespace + { + static PPropertyHandler s_pVCLDateHandler = NULL; + static PPropertyHandler s_pVCLTimeHandler = NULL; + } + + //================================================================================================================== + //= FormHandlerFactory + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + PPropertyHandler FormHandlerFactory::getFormPropertyHandler( const PropertyId i_propertyId ) + { + PPropertyHandler pHandler( NULL ); + + switch ( i_propertyId ) + { + case PID_DATE_MIN: + case PID_DATE_MAX: + case PID_DEFAULT_DATE: + case PID_DATE: + if ( s_pVCLDateHandler.get() == NULL ) + { + ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); + if ( s_pVCLDateHandler == NULL ) + s_pVCLDateHandler = new VCLDateHandler(); + } + pHandler = s_pVCLDateHandler; + break; + + case PID_TIME_MIN: + case PID_TIME_MAX: + case PID_DEFAULT_TIME: + case PID_TIME: + if ( s_pVCLTimeHandler.get() == NULL ) + { + ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); + if ( s_pVCLTimeHandler == NULL ) + s_pVCLTimeHandler = new VCLTimeHandler(); + } + pHandler = s_pVCLTimeHandler; + break; + + default: + OSL_ENSURE( false, "FormHandlerFactory::getFormPropertyHandler: unknown property ID!" ); + break; + } + + return pHandler; + } + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... diff --git a/xmloff/source/forms/handler/makefile.mk b/xmloff/source/forms/handler/makefile.mk new file mode 100755 index 000000000000..574537ffd474 --- /dev/null +++ b/xmloff/source/forms/handler/makefile.mk @@ -0,0 +1,55 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ=../../.. + +PRJNAME=xmloff +TARGET=form_handlers + +INCEXT=.. + +ENABLE_EXCEPTIONS=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +.INCLUDE: $(PRJ)/util/makefile.pmk + +# --- Files -------------------------------------------------------- + +SLOFILES = \ + $(SLO)/form_handler_factory.obj \ + $(SLO)/property_handler_base.obj \ + $(SLO)/vcl_date_handler.obj \ + $(SLO)/vcl_time_handler.obj + +# --- Tagets ------------------------------------------------------- + +.INCLUDE : target.mk + +test: + echo $(INCLUDE)
\ No newline at end of file diff --git a/xmloff/source/forms/handler/property_handler_base.cxx b/xmloff/source/forms/handler/property_handler_base.cxx new file mode 100755 index 000000000000..d599e0e259fe --- /dev/null +++ b/xmloff/source/forms/handler/property_handler_base.cxx @@ -0,0 +1,61 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_xmloff.hxx" + +#include "property_handler_base.hxx" + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= PropertyHandlerBase + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + PropertyHandlerBase::~PropertyHandlerBase() + { + } + + //------------------------------------------------------------------------------------------------------------------ + oslInterlockedCount SAL_CALL PropertyHandlerBase::acquire() + { + return osl_incrementInterlockedCount( &m_refCount ); + } + + //------------------------------------------------------------------------------------------------------------------ + oslInterlockedCount SAL_CALL PropertyHandlerBase::release() + { + oslInterlockedCount decremented = osl_decrementInterlockedCount( &m_refCount ); + if ( 0 == decremented ) + delete this; + return decremented; + } + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... diff --git a/xmloff/source/forms/handler/property_handler_base.hxx b/xmloff/source/forms/handler/property_handler_base.hxx new file mode 100755 index 000000000000..10adceaa52aa --- /dev/null +++ b/xmloff/source/forms/handler/property_handler_base.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_HANDLER_BASE_HXX +#define XMLOFF_PROPERTY_HANDLER_BASE_HXX + +#include "property_handler.hxx" + +#include <osl/interlck.h> + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= PropertyHandlerBase + //================================================================================================================== + class PropertyHandlerBase : public IPropertyHandler + { + protected: + PropertyHandlerBase() + :m_refCount( 0 ) + { + } + + virtual ~PropertyHandlerBase(); + + // IReference + virtual oslInterlockedCount SAL_CALL acquire(); + virtual oslInterlockedCount SAL_CALL release(); + + private: + oslInterlockedCount m_refCount; + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_HANDLER_BASE_HXX diff --git a/xmloff/source/forms/handler/vcl_date_handler.cxx b/xmloff/source/forms/handler/vcl_date_handler.cxx new file mode 100755 index 000000000000..a8404ed04e05 --- /dev/null +++ b/xmloff/source/forms/handler/vcl_date_handler.cxx @@ -0,0 +1,114 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_xmloff.hxx" + +#include "vcl_date_handler.hxx" +#include "xmloff/xmluconv.hxx" + +#include <com/sun/star/util/DateTime.hpp> + +#include <tools/diagnose_ex.h> +#include <tools/date.hxx> + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::util::DateTime; + + //================================================================================================================== + //= VCLDateHandler + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + VCLDateHandler::VCLDateHandler() + { + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString VCLDateHandler::getAttributeValue( const PropertyValues& /*i_propertyValues*/ ) const + { + OSL_ENSURE( false, "VCLDateHandler::getAttributeValue: unexpected call!" ); + return ::rtl::OUString(); + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString VCLDateHandler::getAttributeValue( const Any& i_propertyValue ) const + { + sal_Int32 nVCLDate(0); + OSL_VERIFY( i_propertyValue >>= nVCLDate ); + ::Date aVCLDate( nVCLDate ); + + DateTime aDateTime; // default-inited to 0 + aDateTime.Day = aVCLDate.GetDay(); + aDateTime.Month = aVCLDate.GetMonth(); + aDateTime.Year = aVCLDate.GetYear(); + + ::rtl::OUStringBuffer aBuffer; + SvXMLUnitConverter::convertDateTime( aBuffer, aDateTime, sal_False ); + return aBuffer.makeStringAndClear(); + } + + //------------------------------------------------------------------------------------------------------------------ + bool VCLDateHandler::getPropertyValues( const ::rtl::OUString i_attributeValue, PropertyValues& o_propertyValues ) const + { + sal_Int32 nVCLDate(0); + + DateTime aDateTime; + if ( SvXMLUnitConverter::convertDateTime( aDateTime, i_attributeValue ) ) + { + ::Date aVCLDate( aDateTime.Day, aDateTime.Month, aDateTime.Year ); + nVCLDate = aVCLDate.GetDate(); + } + else + { + // compatibility format, before we wrote those values in XML-schema compatible form + if ( !SvXMLUnitConverter::convertNumber( nVCLDate, i_attributeValue ) ) + { + OSL_ENSURE( false, "VCLDateHandler::getPropertyValues: unknown date format (no XML-schema date, no legacy integer)!" ); + return false; + } + } + + const Any aPropertyValue( makeAny( nVCLDate ) ); + + OSL_ENSURE( o_propertyValues.size() == 1, "VCLDateHandler::getPropertyValues: date strings represent exactly one property - not more, not less!" ); + for ( PropertyValues::iterator prop = o_propertyValues.begin(); + prop != o_propertyValues.end(); + ++prop + ) + { + prop->second = aPropertyValue; + } + return true; + } + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... diff --git a/xmloff/source/forms/handler/vcl_date_handler.hxx b/xmloff/source/forms/handler/vcl_date_handler.hxx new file mode 100755 index 000000000000..44a7f7395ceb --- /dev/null +++ b/xmloff/source/forms/handler/vcl_date_handler.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_VCL_DATE_HANDLER_HXX +#define XMLOFF_VCL_DATE_HANDLER_HXX + +#include "property_handler_base.hxx" + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= VCLDateHandler + //================================================================================================================== + class VCLDateHandler : public PropertyHandlerBase + { + public: + VCLDateHandler(); + + // IPropertyHandler + virtual ::rtl::OUString getAttributeValue( const PropertyValues& i_propertyValues ) const; + virtual ::rtl::OUString getAttributeValue( const ::com::sun::star::uno::Any& i_propertyValue ) const; + virtual bool getPropertyValues( const ::rtl::OUString i_attributeValue, PropertyValues& o_propertyValues ) const; + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_VCL_DATE_HANDLER_HXX diff --git a/xmloff/source/forms/handler/vcl_time_handler.cxx b/xmloff/source/forms/handler/vcl_time_handler.cxx new file mode 100755 index 000000000000..98ea739d04a4 --- /dev/null +++ b/xmloff/source/forms/handler/vcl_time_handler.cxx @@ -0,0 +1,115 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_xmloff.hxx" + +#include "vcl_time_handler.hxx" +#include "xmloff/xmluconv.hxx" + +#include <com/sun/star/util/DateTime.hpp> + +#include <tools/diagnose_ex.h> +#include <tools/time.hxx> + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::util::DateTime; + + //================================================================================================================== + //= VCLTimeHandler + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + VCLTimeHandler::VCLTimeHandler() + { + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString VCLTimeHandler::getAttributeValue( const PropertyValues& /*i_propertyValues*/ ) const + { + OSL_ENSURE( false, "VCLTimeHandler::getAttributeValue: unexpected call!" ); + return ::rtl::OUString(); + } + + //------------------------------------------------------------------------------------------------------------------ + ::rtl::OUString VCLTimeHandler::getAttributeValue( const Any& i_propertyValue ) const + { + sal_Int32 nVCLTime(0); + OSL_VERIFY( i_propertyValue >>= nVCLTime ); + ::Time aVCLTime( nVCLTime ); + + DateTime aDateTime; // default-inited to 0 + aDateTime.Hours = aVCLTime.GetHour(); + aDateTime.Minutes = aVCLTime.GetMin(); + aDateTime.Seconds = aVCLTime.GetSec(); + aDateTime.HundredthSeconds = aVCLTime.Get100Sec(); + + ::rtl::OUStringBuffer aBuffer; + SvXMLUnitConverter::convertTime( aBuffer, aDateTime ); + return aBuffer.makeStringAndClear(); + } + + //------------------------------------------------------------------------------------------------------------------ + bool VCLTimeHandler::getPropertyValues( const ::rtl::OUString i_attributeValue, PropertyValues& o_propertyValues ) const + { + sal_Int32 nVCLTime(0); + + DateTime aDateTime; + if ( SvXMLUnitConverter::convertTime( aDateTime, i_attributeValue ) ) + { + ::Time aVCLTime( aDateTime.Hours, aDateTime.Minutes, aDateTime.Seconds, aDateTime.HundredthSeconds ); + nVCLTime = aVCLTime.GetTime(); + } + else + { + // compatibility format, before we wrote those values in XML-schema compatible form + if ( !SvXMLUnitConverter::convertNumber( nVCLTime, i_attributeValue ) ) + { + OSL_ENSURE( false, "VCLTimeHandler::getPropertyValues: unknown time format (no XML-schema time, no legacy integer)!" ); + return false; + } + } + + const Any aPropertyValue( makeAny( nVCLTime ) ); + + OSL_ENSURE( o_propertyValues.size() == 1, "VCLTimeHandler::getPropertyValues: time strings represent exactly one property - not more, not less!" ); + for ( PropertyValues::iterator prop = o_propertyValues.begin(); + prop != o_propertyValues.end(); + ++prop + ) + { + prop->second = aPropertyValue; + } + return true; + } + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... diff --git a/xmloff/source/forms/handler/vcl_time_handler.hxx b/xmloff/source/forms/handler/vcl_time_handler.hxx new file mode 100755 index 000000000000..7ed6f0aa5730 --- /dev/null +++ b/xmloff/source/forms/handler/vcl_time_handler.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_VCL_TIME_HANDLER_HXX +#define XMLOFF_VCL_TIME_HANDLER_HXX + +#include "property_handler_base.hxx" + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= VCLTimeHandler + //================================================================================================================== + class VCLTimeHandler : public PropertyHandlerBase + { + public: + VCLTimeHandler(); + + // IPropertyHandler + virtual ::rtl::OUString getAttributeValue( const PropertyValues& i_propertyValues ) const; + virtual ::rtl::OUString getAttributeValue( const ::com::sun::star::uno::Any& i_propertyValue ) const; + virtual bool getPropertyValues( const ::rtl::OUString i_attributeValue, PropertyValues& o_propertyValues ) const; + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_VCL_TIME_HANDLER_HXX diff --git a/xmloff/source/forms/makefile.mk b/xmloff/source/forms/makefile.mk index 8c46a4fbf3c9..fa2a6ea7d235 100644 --- a/xmloff/source/forms/makefile.mk +++ b/xmloff/source/forms/makefile.mk @@ -64,6 +64,8 @@ SLOFILES = \ $(SLO)$/logging.obj \ $(SLO)$/formcellbinding.obj \ $(SLO)$/gridcolumnproptranslator.obj \ + \ + $(SLO)/property_meta_data.obj # --- Tagets ------------------------------------------------------- diff --git a/xmloff/source/forms/property_description.hxx b/xmloff/source/forms/property_description.hxx new file mode 100755 index 000000000000..8e9aa9cb616e --- /dev/null +++ b/xmloff/source/forms/property_description.hxx @@ -0,0 +1,140 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_DESCRIPTION_HXX +#define XMLOFF_PROPERTY_DESCRIPTION_HXX + +#include "property_handler.hxx" +#include "property_group.hxx" + +#include "xmloff/xmltoken.hxx" + +#include <vector> +#include <list> + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= PropertyDescription + //================================================================================================================== + struct AttributeDescription + { + sal_uInt16 namespacePrefix; // usually XML_NAMESPACE_FORM + ::xmloff::token::XMLTokenEnum attributeToken; + + AttributeDescription() + :namespacePrefix( 0 ) + ,attributeToken( ::xmloff::token::XML_TOKEN_INVALID ) + { + } + + AttributeDescription( + const sal_uInt16 i_namespacePrefix, + const ::xmloff::token::XMLTokenEnum i_attributeToken + ) + :namespacePrefix( i_namespacePrefix ) + ,attributeToken( i_attributeToken ) + { + } + }; + + //.................................................................................................................. + inline bool operator==( const AttributeDescription& i_lhs, const AttributeDescription& i_rhs ) + { + return ( i_lhs.namespacePrefix == i_rhs.namespacePrefix ) + && ( i_lhs.attributeToken == i_rhs.attributeToken ); + } + + //================================================================================================================== + //= PropertyDescription + //================================================================================================================== + struct PropertyDescription + { + /// is the name of the property + const ::rtl::OUString propertyName; + /** denotes the attribute which represents the property. Note that multiple properties might comprise a single + attribute value. + */ + const AttributeDescription attribute; + /// is the factory for creating a handler for reading and writing the property + const PropertyHandlerFactory factory; + /// the unique ID of the property. The property meta data table must not contain two entries with the same property ID + const PropertyId propertyId; + /** the group which the property belongs to. Multiple properties belonging to the same group will, all together, + define the attribute value to be written into the ODF file. + + Consequently, properties which have the same |propertyGroup| value must also have the same |attribute| + and the same |factory| value, with the only exception being NO_GROUP properties. + + Note that the other direction is not given: It is perfectly legitimate to map the same attribute to different + (disjunct) property groups. + */ + const PropertyGroup propertyGroup; + + PropertyDescription() + :propertyName() + ,attribute() + ,factory( NULL ) + ,propertyId( PID_INVALID ) + ,propertyGroup( NO_GROUP ) + { + } + + PropertyDescription( + const ::rtl::OUString& i_propertyName, + const sal_uInt16 i_namespacePrefix, + const ::xmloff::token::XMLTokenEnum i_attributeToken, + const PropertyHandlerFactory i_factory, + const PropertyId i_propertyId, + const PropertyGroup i_propertyGroup + ) + :propertyName( i_propertyName ) + ,attribute( i_namespacePrefix, i_attributeToken ) + ,factory( i_factory ) + ,propertyId( i_propertyId ) + ,propertyGroup( i_propertyGroup ) + { + } + }; + + //================================================================================================================== + //= PropertyDescriptionList + //================================================================================================================== + typedef ::std::vector< const PropertyDescription* > PropertyDescriptionList; + + //================================================================================================================== + //= PropertyGroups + //================================================================================================================== + typedef ::std::list< PropertyDescriptionList > PropertyGroups; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_DESCRIPTION_HXX diff --git a/xmloff/source/forms/property_group.hxx b/xmloff/source/forms/property_group.hxx new file mode 100755 index 000000000000..bca354f14e92 --- /dev/null +++ b/xmloff/source/forms/property_group.hxx @@ -0,0 +1,47 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_GROUP_HXX +#define XMLOFF_PROPERTY_GROUP_HXX + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= PropertyGroup + //================================================================================================================== + enum PropertyGroup + { + NO_GROUP + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_GROUP_HXX diff --git a/xmloff/source/forms/property_handler.hxx b/xmloff/source/forms/property_handler.hxx new file mode 100755 index 000000000000..247b4f17f798 --- /dev/null +++ b/xmloff/source/forms/property_handler.hxx @@ -0,0 +1,84 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_HANDLER_HXX +#define XMLOFF_PROPERTY_HANDLER_HXX + +#include "property_ids.hxx" + +#include <com/sun/star/uno/Any.hxx> + +#include <rtl/ref.hxx> + +#include <map> +#include <vector> + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + typedef ::std::map< PropertyId, ::com::sun::star::uno::Any > PropertyValues; + + //================================================================================================================== + //= IPropertyHandler + //================================================================================================================== + class IPropertyHandler : public ::rtl::IReference + { + public: + /** retrieves the XML attribute value for the given property values + */ + virtual ::rtl::OUString + getAttributeValue( const PropertyValues& i_propertyValues ) const = 0; + + /** is a convenience method for XML attributes whose value comprises of only one UNO API property + */ + virtual ::rtl::OUString + getAttributeValue( const ::com::sun::star::uno::Any& i_propertyValue ) const = 0; + + /** retrieves the values of the properties controlled by an XML attributed, described by a given attribute value + */ + virtual bool + getPropertyValues( const ::rtl::OUString i_attributeValue, PropertyValues& o_propertyValues ) const = 0; + + virtual ~IPropertyHandler() { } + }; + + //================================================================================================================== + //= PPropertyHandler + //================================================================================================================== + typedef ::rtl::Reference< IPropertyHandler > PPropertyHandler; + + //================================================================================================================== + //= PropertyHandlerFactory + //================================================================================================================== + typedef PPropertyHandler (*PropertyHandlerFactory)( const PropertyId i_propertyId ); + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_HANDLER_HXX diff --git a/xmloff/source/forms/property_ids.hxx b/xmloff/source/forms/property_ids.hxx new file mode 100755 index 000000000000..31004f2d9ff2 --- /dev/null +++ b/xmloff/source/forms/property_ids.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_IDS_HXX +#define XMLOFF_PROPERTY_IDS_HXX + +//...................................................................................................................... +namespace xmloff +{ +//...................................................................................................................... + + //================================================================================================================== + //= PropertyId + //================================================================================================================== + enum PropertyId + { + PID_DATE_MIN, + PID_DATE_MAX, + PID_DEFAULT_DATE, + PID_DATE, + PID_TIME_MIN, + PID_TIME_MAX, + PID_DEFAULT_TIME, + PID_TIME, + + PID_INVALID + }; + +//...................................................................................................................... +} // namespace xmloff +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_IDS_HXX diff --git a/xmloff/source/forms/property_meta_data.cxx b/xmloff/source/forms/property_meta_data.cxx new file mode 100755 index 000000000000..7f058d14b9b7 --- /dev/null +++ b/xmloff/source/forms/property_meta_data.cxx @@ -0,0 +1,270 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "precompiled_xmloff.hxx" + +#include "property_description.hxx" +#include "form_handler_factory.hxx" +#include "strings.hxx" +#include "xmloff/xmltoken.hxx" +#include "xmlnmspe.hxx" + +#include <tools/diagnose_ex.h> +#include <tools/debug.hxx> + +#include <hash_map> + +//...................................................................................................................... +namespace xmloff { namespace metadata +{ +//...................................................................................................................... + + using namespace ::xmloff::token; + +#define FORM_SINGLE_PROPERTY( id, att ) \ + PropertyDescription( PROPERTY_##id, XML_NAMESPACE_FORM, att, &FormHandlerFactory::getFormPropertyHandler, PID_##id, NO_GROUP ) + + //================================================================================================================== + //= property meta data + //================================================================================================================== + //------------------------------------------------------------------------------------------------------------------ + namespace + { + const PropertyDescription* lcl_getPropertyMetaData() + { + static const PropertyDescription s_propertyMetaData[] = + { + FORM_SINGLE_PROPERTY( DATE_MIN, XML_MIN_VALUE ), + FORM_SINGLE_PROPERTY( DATE_MAX, XML_MAX_VALUE ), + FORM_SINGLE_PROPERTY( DEFAULT_DATE, XML_VALUE ), + FORM_SINGLE_PROPERTY( DATE, XML_CURRENT_VALUE ), + FORM_SINGLE_PROPERTY( TIME_MIN, XML_MIN_VALUE ), + FORM_SINGLE_PROPERTY( TIME_MAX, XML_MAX_VALUE ), + FORM_SINGLE_PROPERTY( DEFAULT_TIME, XML_VALUE ), + FORM_SINGLE_PROPERTY( TIME, XML_CURRENT_VALUE ), + + PropertyDescription() + }; + return s_propertyMetaData; + } + } + + //------------------------------------------------------------------------------------------------------------------ + namespace + { + // TODO: instead of having all of the below static, it should be some per-instance data. This way, the + // approach used here would scale much better. + // That is, if you have multiple "meta data instances", which manage a small, but closed set of properties, + // then looking looking through those multiple instances would probably be faster than searching within + // one big instance, since in this case, every instance can quickly decide whether it is responsible + // for some attribute or property, and otherwise delegate to the next instance. + + //.............................................................................................................. + typedef ::std::hash_map< ::rtl::OUString, const PropertyDescription*, ::rtl::OUStringHash > DescriptionsByName; + + //.............................................................................................................. + const DescriptionsByName& lcl_getPropertyDescriptions() + { + DBG_TESTSOLARMUTEX(); + static DescriptionsByName s_propertyDescriptionsByName; + if ( s_propertyDescriptionsByName.empty() ) + { + const PropertyDescription* desc = lcl_getPropertyMetaData(); + while ( desc->propertyName.getLength() != 0 ) + { + s_propertyDescriptionsByName[ desc->propertyName ] = desc; + ++desc; + } + } + return s_propertyDescriptionsByName; + } + + //.............................................................................................................. + typedef ::std::map< PropertyGroup, PropertyDescriptionList > IndexedPropertyGroups; + + //.............................................................................................................. + const IndexedPropertyGroups& lcl_getIndexedPropertyGroups() + { + DBG_TESTSOLARMUTEX(); + static IndexedPropertyGroups s_indexedPropertyGroups; + if ( s_indexedPropertyGroups.empty() ) + { + const PropertyDescription* desc = lcl_getPropertyMetaData(); + while ( desc->propertyName.getLength() != 0 ) + { + if ( desc->propertyGroup != NO_GROUP ) + s_indexedPropertyGroups[ desc->propertyGroup ].push_back( desc ); + ++desc; + } + } + return s_indexedPropertyGroups; + } + + //.............................................................................................................. + typedef ::std::hash_map< ::rtl::OUString, XMLTokenEnum, ::rtl::OUStringHash > ReverseTokenLookup; + + //.............................................................................................................. + const ReverseTokenLookup& getReverseTokenLookup() + { + DBG_TESTSOLARMUTEX(); + static ReverseTokenLookup s_reverseTokenLookup; + if ( s_reverseTokenLookup.empty() ) + { + const PropertyDescription* desc = lcl_getPropertyMetaData(); + while ( desc->propertyName.getLength() != 0 ) + { + s_reverseTokenLookup[ token::GetXMLToken( desc->attribute.attributeToken ) ] = desc->attribute.attributeToken; + ++desc; + } + } + return s_reverseTokenLookup; + } + + //.............................................................................................................. + struct AttributeHash : public ::std::unary_function< AttributeDescription, size_t > + { + size_t operator()( const AttributeDescription& i_attribute ) const + { + return size_t( i_attribute.attributeToken * 100 ) + size_t( i_attribute.namespacePrefix ); + } + }; + + //.............................................................................................................. + typedef ::std::hash_multimap< AttributeDescription, PropertyGroup, AttributeHash > AttributeGroups; + + //.............................................................................................................. + const AttributeGroups& lcl_getAttributeGroups() + { + DBG_TESTSOLARMUTEX(); + static AttributeGroups s_attributeGroups; + if ( s_attributeGroups.empty() ) + { + const PropertyDescription* desc = lcl_getPropertyMetaData(); + while ( desc->propertyName.getLength() != 0 ) + { + if ( desc->propertyGroup != NO_GROUP ) + s_attributeGroups.insert( AttributeGroups::value_type( desc->attribute, desc->propertyGroup ) ); + ++desc; + } + } + return s_attributeGroups; + } + + //.............................................................................................................. + typedef ::std::hash_map< AttributeDescription, PropertyGroups, AttributeHash > AttributesWithoutGroup; + + //.............................................................................................................. + const AttributesWithoutGroup& lcl_getAttributesWithoutGroups() + { + DBG_TESTSOLARMUTEX(); + static AttributesWithoutGroup s_attributesWithoutGroup; + if ( s_attributesWithoutGroup.empty() ) + { + const PropertyDescription* desc = lcl_getPropertyMetaData(); + while ( desc->propertyName.getLength() != 0 ) + { + if ( desc->propertyGroup == NO_GROUP ) + { + PropertyDescriptionList singleElementList; + singleElementList.push_back( desc ); + + s_attributesWithoutGroup[ desc->attribute ].push_back( singleElementList ); + } + ++desc; + } + } + return s_attributesWithoutGroup; + } + } + + //------------------------------------------------------------------------------------------------------------------ + const PropertyDescription* getPropertyDescription( const ::rtl::OUString& i_propertyName ) + { + const DescriptionsByName& rAllDescriptions( lcl_getPropertyDescriptions() ); + DescriptionsByName::const_iterator pos = rAllDescriptions.find( i_propertyName ); + if ( pos != rAllDescriptions.end() ) + return pos->second; + return NULL; + } + + //------------------------------------------------------------------------------------------------------------------ + void getPropertyGroup( const PropertyGroup i_propertyGroup, PropertyDescriptionList& o_propertyDescriptions ) + { + OSL_ENSURE( i_propertyGroup != NO_GROUP, "xmloff::metadata::getPropertyGroup: illegal group!" ); + + const IndexedPropertyGroups& rPropertyGroups( lcl_getIndexedPropertyGroups() ); + const IndexedPropertyGroups::const_iterator pos = rPropertyGroups.find( i_propertyGroup ); + if ( pos != rPropertyGroups.end() ) + o_propertyDescriptions = pos->second; + } + + //------------------------------------------------------------------------------------------------------------------ + void getPropertyGroupList( const AttributeDescription& i_attribute, PropertyGroups& o_propertyGroups ) + { + const AttributeGroups& rAttributeGroups = lcl_getAttributeGroups(); + + ::std::pair< AttributeGroups::const_iterator, AttributeGroups::const_iterator > + range = rAttributeGroups.equal_range( i_attribute ); + + if ( range.first == range.second ) + { + // the attribute is not used for any non-trivial group, which means it is mapped directly to + // a single property + const AttributesWithoutGroup& attributesWithoutGroups( lcl_getAttributesWithoutGroups() ); + const AttributesWithoutGroup::const_iterator pos = attributesWithoutGroups.find( i_attribute ); + if ( pos != attributesWithoutGroups.end() ) + o_propertyGroups = pos->second; + } + else + { + const IndexedPropertyGroups& rPropertyGroups = lcl_getIndexedPropertyGroups(); + for ( AttributeGroups::const_iterator group = range.first; group != range.second; ++group ) + { + const PropertyGroup propGroup = group->second; + const IndexedPropertyGroups::const_iterator groupPos = rPropertyGroups.find( propGroup ); + ENSURE_OR_CONTINUE( groupPos != rPropertyGroups.end(), "getPropertyGroupList: inconsistency!" ); + o_propertyGroups.push_back( groupPos->second ); + } + } + } + + //------------------------------------------------------------------------------------------------------------------ + AttributeDescription getAttributeDescription( const sal_uInt16 i_namespacePrefix, const ::rtl::OUString& i_attributeName ) + { + AttributeDescription attribute; + const ReverseTokenLookup& rTokenLookup( getReverseTokenLookup() ); + const ReverseTokenLookup::const_iterator pos = rTokenLookup.find( i_attributeName ); + if ( pos != rTokenLookup.end() ) + { + attribute.namespacePrefix = i_namespacePrefix; + attribute.attributeToken = pos->second; + } + return attribute; + } + +//...................................................................................................................... +} } // namespace xmloff::metadata +//...................................................................................................................... diff --git a/xmloff/source/forms/property_meta_data.hxx b/xmloff/source/forms/property_meta_data.hxx new file mode 100755 index 000000000000..f246a7bfd745 --- /dev/null +++ b/xmloff/source/forms/property_meta_data.hxx @@ -0,0 +1,65 @@ +/************************************************************************* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef XMLOFF_PROPERTY_META_DATA_HXX +#define XMLOFF_PROPERTY_META_DATA_HXX + +#include "property_description.hxx" + +//...................................................................................................................... +namespace xmloff { namespace metadata +{ +//...................................................................................................................... + + const PropertyDescription* getPropertyDescription( const ::rtl::OUString& i_propertyName ); + + /** retries the descriptions of all properties which add to the given XML attribute + + <p>Effectively, the complete property map is search for all entries which have the given + namespace/attribute values.</p> + */ + void getPropertyGroup( + const PropertyGroup i_propertyGroup, + PropertyDescriptionList& o_propertyDescriptions + ); + + /** retrieves all known property groups which are mapped to the given attribute + */ + void getPropertyGroupList( + const AttributeDescription& i_attribute, + PropertyGroups& o_propertyGroups + ); + + /** retrieves the attribute descriptor for the attribute given by namespace prefix and attribute name + */ + AttributeDescription + getAttributeDescription( const sal_uInt16 i_namespacePrefix, const ::rtl::OUString& i_attributeName ); + +//...................................................................................................................... +} } // namespace xmloff::metadata +//...................................................................................................................... + +#endif // XMLOFF_PROPERTY_META_DATA_HXX diff --git a/xmloff/source/forms/propertyexport.cxx b/xmloff/source/forms/propertyexport.cxx index 2a485566cf9d..7d84e5a60a1f 100644 --- a/xmloff/source/forms/propertyexport.cxx +++ b/xmloff/source/forms/propertyexport.cxx @@ -37,7 +37,6 @@ #include <xmloff/families.hxx> #include <osl/diagnose.h> #include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/beans/XPropertyState.hpp> #include <com/sun/star/util/Date.hpp> #include <com/sun/star/util/Time.hpp> #include <com/sun/star/util/DateTime.hpp> @@ -72,6 +71,8 @@ namespace xmloff OPropertyExport::OPropertyExport(IFormsExportContext& _rContext, const Reference< XPropertySet >& _rxProps) :m_rContext(_rContext) ,m_xProps(_rxProps) + ,m_xPropertyInfo( m_xProps->getPropertySetInfo() ) + ,m_xPropertyState( _rxProps, UNO_QUERY ) { // caching ::rtl::OUStringBuffer aBuffer; @@ -80,7 +81,6 @@ namespace xmloff m_rContext.getGlobalContext().GetMM100UnitConverter().convertBool(aBuffer, sal_False); m_sValueFalse = aBuffer.makeStringAndClear(); - m_xPropertyInfo = m_xProps->getPropertySetInfo(); OSL_ENSURE(m_xPropertyInfo.is(), "OPropertyExport::OPropertyExport: need an XPropertySetInfo!"); // collect the properties which need to be exported @@ -88,6 +88,18 @@ namespace xmloff } //--------------------------------------------------------------------- + bool OPropertyExport::shouldExportProperty( const ::rtl::OUString& i_propertyName ) const + { + // if the property state is DEFAULT, it does not need to be written - at least + // if it's a built-in property, and not a dynamically-added one. + bool bIsDefaultValue = m_xPropertyState.is() + && ( PropertyState_DEFAULT_VALUE == m_xPropertyState->getPropertyState( i_propertyName ) ); + bool bIsDynamicProperty = m_xPropertyInfo.is() + && ( ( m_xPropertyInfo->getPropertyByName( i_propertyName ).Attributes & PropertyAttribute::REMOVEABLE ) != 0 ); + return ( !bIsDefaultValue || bIsDynamicProperty ); + } + + //--------------------------------------------------------------------- void OPropertyExport::exportRemainingProperties() { // the properties tag (will be created if we have at least one no-default property) @@ -95,9 +107,6 @@ namespace xmloff try { - Reference< XPropertyState > xPropertyState( m_xProps, UNO_QUERY ); - Reference< XPropertySetInfo > xPSI( m_xProps->getPropertySetInfo() ); - Any aValue; ::rtl::OUString sValue; @@ -112,13 +121,7 @@ namespace xmloff #if OSL_DEBUG_LEVEL > 0 const ::rtl::OUString sPropertyName = *aProperty; (void)sPropertyName; #endif - // if the property state is DEFAULT, it does not need to be written - at least - // if it's a built-in property, and not a dynamically-added one. - bool bIsDefaultValue = xPropertyState.is() - && ( PropertyState_DEFAULT_VALUE == xPropertyState->getPropertyState( *aProperty ) ); - bool bIsDynamicProperty = xPSI.is() - && ( ( xPSI->getPropertyByName( *aProperty ).Attributes & PropertyAttribute::REMOVEABLE ) != 0 ); - if ( bIsDefaultValue && !bIsDynamicProperty ) + if ( !shouldExportProperty( *aProperty ) ) continue; // now that we have the first sub-tag we need the form:properties element diff --git a/xmloff/source/forms/propertyexport.hxx b/xmloff/source/forms/propertyexport.hxx index ab17912e4df4..3ddfd8d4cabd 100644 --- a/xmloff/source/forms/propertyexport.hxx +++ b/xmloff/source/forms/propertyexport.hxx @@ -31,6 +31,7 @@ #include "formattributes.hxx" #include <comphelper/stl_types.hxx> #include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/beans/XPropertyState.hpp> #include <callbacks.hxx> #include <xmloff/xmlexp.hxx> #include "callbacks.hxx" @@ -74,10 +75,12 @@ namespace xmloff protected: IFormsExportContext& m_rContext; - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > - m_xProps; - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > - m_xPropertyInfo; + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > + m_xProps; + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > + m_xPropertyInfo; + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState > + m_xPropertyState; // caching ::rtl::OUString m_sValueTrue; @@ -308,6 +311,14 @@ namespace xmloff const sal_Unicode _aQuoteCharacter = '"', const sal_Unicode _aListSeparator = ','); + /** determines whether the given property is to be exported + + <p>Currently, the method simply checks whether the property's state is <em>not</em> PropertyState.DEFAULT, + or whether the property is a dynamic property (i.e. added via an <code>XPropertyContainer</code>). + So, take care when using the method - the heuristics is not applicable for all properties.</p> + */ + bool shouldExportProperty( const ::rtl::OUString& i_propertyName ) const; + /** tries to convert an arbitrary <type scope="com.sun:star.uno">Any</type> into an string <p>If the type contained in the Any is not supported, the returned string will be empty. In the diff --git a/xmloff/source/forms/propertyimport.cxx b/xmloff/source/forms/propertyimport.cxx index 45fa2f5b4744..de57eadb69ae 100644 --- a/xmloff/source/forms/propertyimport.cxx +++ b/xmloff/source/forms/propertyimport.cxx @@ -349,7 +349,7 @@ _rChars } //--------------------------------------------------------------------- -void OPropertyImport::handleAttribute(sal_uInt16 /*_nNamespaceKey*/, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) +bool OPropertyImport::handleAttribute(sal_uInt16 /*_nNamespaceKey*/, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue) { const OAttribute2Property::AttributeAssignment* pProperty = m_rContext.getAttributeMap().getAttributeTranslation(_rLocalName); if (pProperty) @@ -361,18 +361,21 @@ void OPropertyImport::handleAttribute(sal_uInt16 /*_nNamespaceKey*/, const ::rtl // convert the value string into the target type aNewValue.Value = PropertyConversion::convertString(m_rContext.getGlobalContext(), pProperty->aPropertyType, _rValue, pProperty->pEnumMap, pProperty->bInverseSemantics); implPushBackPropertyValue( aNewValue ); + return true; } -#if OSL_DEBUG_LEVEL > 0 - else if (!token::IsXMLToken(_rLocalName, token::XML_TYPE)) // xlink:type is valid but ignored for <form:form> + if (!token::IsXMLToken(_rLocalName, token::XML_TYPE)) // xlink:type is valid but ignored for <form:form> { +#if OSL_DEBUG_LEVEL > 0 ::rtl::OString sMessage( "OPropertyImport::handleAttribute: Can't handle the following:\n" ); sMessage += ::rtl::OString( " Attribute name: " ); sMessage += ::rtl::OString( _rLocalName.getStr(), _rLocalName.getLength(), osl_getThreadTextEncoding() ); sMessage += ::rtl::OString( "\n value: " ); sMessage += ::rtl::OString( _rValue.getStr(), _rValue.getLength(), osl_getThreadTextEncoding() ); OSL_ENSURE( sal_False, sMessage.getStr() ); - } #endif + return false; + } + return true; } //===================================================================== diff --git a/xmloff/source/forms/propertyimport.hxx b/xmloff/source/forms/propertyimport.hxx index 30bc8bb1d617..d46c0068f090 100644 --- a/xmloff/source/forms/propertyimport.hxx +++ b/xmloff/source/forms/propertyimport.hxx @@ -119,7 +119,7 @@ namespace xmloff @param _rValue attribute value */ - virtual void handleAttribute(sal_uInt16 _nNamespaceKey, + virtual bool handleAttribute(sal_uInt16 _nNamespaceKey, const ::rtl::OUString& _rLocalName, const ::rtl::OUString& _rValue); diff --git a/xmloff/source/forms/valueproperties.cxx b/xmloff/source/forms/valueproperties.cxx index 1c44db963944..8bf9ae7bcd57 100644 --- a/xmloff/source/forms/valueproperties.cxx +++ b/xmloff/source/forms/valueproperties.cxx @@ -65,16 +65,6 @@ namespace xmloff } break; - case FormComponentType::DATEFIELD: - _rpCurrentValuePropertyName = PROPERTY_DATE; - _rpValuePropertyName = PROPERTY_DEFAULT_DATE; - break; - - case FormComponentType::TIMEFIELD: - _rpCurrentValuePropertyName = PROPERTY_TIME; - _rpValuePropertyName = PROPERTY_DEFAULT_TIME; - break; - case FormComponentType::NUMERICFIELD: case FormComponentType::CURRENCYFIELD: _rpCurrentValuePropertyName = PROPERTY_VALUE; @@ -108,6 +98,10 @@ namespace xmloff _rpCurrentValuePropertyName = PROPERTY_SPINVALUE; _rpValuePropertyName = PROPERTY_DEFAULT_SPINVALUE; break; + + default: + OSL_ENSURE( false, "OValuePropertiesMetaData::getValuePropertyNames: unsupported component type!" ); + break; } } @@ -119,16 +113,6 @@ namespace xmloff _rpMinValuePropertyName = _rpMaxValuePropertyName = NULL; switch (_nFormComponentType) { - case FormComponentType::DATEFIELD: - _rpMinValuePropertyName = PROPERTY_DATE_MIN; - _rpMaxValuePropertyName = PROPERTY_DATE_MAX; - break; - - case FormComponentType::TIMEFIELD: - _rpMinValuePropertyName = PROPERTY_TIME_MIN; - _rpMaxValuePropertyName = PROPERTY_TIME_MAX; - break; - case FormComponentType::NUMERICFIELD: case FormComponentType::CURRENCYFIELD: _rpMinValuePropertyName = PROPERTY_VALUE_MIN; @@ -149,6 +133,10 @@ namespace xmloff _rpMinValuePropertyName = PROPERTY_SPINVALUE_MIN; _rpMaxValuePropertyName = PROPERTY_SPINVALUE_MAX; break; + + default: + OSL_ENSURE( false, "OValuePropertiesMetaData::getValueLimitPropertyNames: unsupported component type!" ); + break; } } @@ -175,7 +163,15 @@ namespace xmloff break; case FormComponentType::DATEFIELD: + _rpValuePropertyName = PROPERTY_DATE; + _rpDefaultValuePropertyName = PROPERTY_DEFAULT_DATE; + break; + case FormComponentType::TIMEFIELD: + _rpValuePropertyName = PROPERTY_TIME; + _rpDefaultValuePropertyName = PROPERTY_DEFAULT_TIME; + break; + case FormComponentType::NUMERICFIELD: case FormComponentType::CURRENCYFIELD: case FormComponentType::PATTERNFIELD: diff --git a/xmloff/source/style/MarkerStyle.cxx b/xmloff/source/style/MarkerStyle.cxx index 4835691b5909..7f134bd65176 100644 --- a/xmloff/source/style/MarkerStyle.cxx +++ b/xmloff/source/style/MarkerStyle.cxx @@ -212,7 +212,7 @@ sal_Bool XMLMarkerStyleExport::exportXML( sal_Int32 a, b; sal_Bool bClosed(sal_False); - for(a = 0L; a < nOuterCnt; a++) + for (a = 0; a < nOuterCnt; a++) { drawing::PointSequence* pSequence = pOuterSequence++; const awt::Point *pPoints = pSequence->getConstArray(); @@ -229,7 +229,7 @@ sal_Bool XMLMarkerStyleExport::exportXML( } } - for(b = 0L; b < nPointCount; b++) + for (b = 0; b < nPointCount; b++) { const awt::Point aPoint = pPoints[b]; @@ -259,7 +259,7 @@ sal_Bool XMLMarkerStyleExport::exportXML( drawing::FlagSequence* pOuterFlags = aBezier.Flags.getArray(); SdXMLImExSvgDElement aSvgDElement(aViewBox); - for(a = 0L; a < nOuterCnt; a++) + for (a = 0; a < nOuterCnt; a++) { drawing::PointSequence* pSequence = pOuterSequence++; drawing::FlagSequence* pFlags = pOuterFlags++; diff --git a/xmloff/source/style/fonthdl.cxx b/xmloff/source/style/fonthdl.cxx index 89ad6e9db8b8..c91a7edcfc03 100644 --- a/xmloff/source/style/fonthdl.cxx +++ b/xmloff/source/style/fonthdl.cxx @@ -136,12 +136,12 @@ sal_Bool XMLFontFamilyNamePropHdl::exportXML( OUString& rStrExpValue, const uno: if( rValue >>= aStrFamilyName ) { OUStringBuffer sValue( aStrFamilyName.getLength() + 2L ); - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; do { sal_Int32 nFirst = nPos; nPos = aStrFamilyName.indexOf( sal_Unicode(';'), nPos ); - sal_Int32 nLast = (-1L == nPos ? aStrFamilyName.getLength() : nPos); + sal_Int32 nLast = (-1 == nPos ? aStrFamilyName.getLength() : nPos); // Set position to the character behind the ';', so we won't // forget this. @@ -173,7 +173,7 @@ sal_Bool XMLFontFamilyNamePropHdl::exportXML( OUString& rStrExpValue, const uno: sValue.append( sal_Unicode( ',' ) ); sValue.append( sal_Unicode( ' ' )); } - sal_Int32 nLen = nLast-nFirst+1L; + sal_Int32 nLen = nLast-nFirst+1; OUString sFamily( aStrFamilyName.copy( nFirst, nLen ) ); sal_Bool bQuote = sal_False; for( sal_Int32 i=0; i < nLen; i++ ) diff --git a/xmloff/source/style/xmlnumi.cxx b/xmloff/source/style/xmlnumi.cxx index 7306c7d5f0de..72efeabaaca4 100644 --- a/xmloff/source/style/xmlnumi.cxx +++ b/xmloff/source/style/xmlnumi.cxx @@ -374,7 +374,7 @@ SvxXMLListLevelStyleContext_Impl::SvxXMLListLevelStyleContext_Impl( if( nLevel >= 1L ) nLevel--; else - nLevel = 0L; + nLevel = 0; break; case XML_TOK_TEXT_LEVEL_ATTR_STYLE_NAME: sTextStyleName = rValue; @@ -471,7 +471,7 @@ Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties( { sal_Int16 eType; - sal_Int32 nCount = 0L; + sal_Int32 nCount = 0; if( bBullet ) { eType = NumberingType::CHAR_SPECIAL; @@ -480,7 +480,7 @@ Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties( if( bImage ) { eType = NumberingType::BITMAP; - nCount = 15L; + nCount = 15; if( (sImageURL.getLength() > 0L) || xBase64Stream.is() ) nCount++; @@ -490,7 +490,7 @@ Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties( eType = NumberingType::ARABIC; GetImport().GetMM100UnitConverter().convertNumFormat( eType, sNumFormat, sNumLetterSync, sal_True ); - nCount = 15L; + nCount = 15; } if( ( bBullet || bNum ) && nRelSize ) @@ -505,7 +505,7 @@ Sequence<beans::PropertyValue> SvxXMLListLevelStyleContext_Impl::GetProperties( if( nCount > 0 ) { beans::PropertyValue *pProps = aPropSeq.getArray(); - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; pProps[nPos].Name = OUString::createFromAscii( XML_UNO_NAME_NRULE_NUMBERINGTYPE ); pProps[nPos++].Value <<= (sal_Int16)eType ; diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 00cdce37f4d5..922777808734 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -287,7 +287,12 @@ void XMLTextMarkImportContext::EndElement() Reference<XTextCursor> xInsertionCursor = m_rHelper.GetText()->createTextCursorByRange( xEndRange); + try { xInsertionCursor->gotoRange(xStartRange, sal_True); + } catch (uno::Exception&) { + OSL_ENSURE(false, + "cannot go to end position of bookmark"); + } //DBG_ASSERT(! xInsertionCursor->isCollapsed(), // "we want no point mark"); diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx index 140656fd4298..4b6eba9a5f43 100644 --- a/xmloff/source/text/txtparae.cxx +++ b/xmloff/source/text/txtparae.cxx @@ -3423,7 +3423,7 @@ void XMLTextParagraphExport::exportTextRange( void XMLTextParagraphExport::exportText( const OUString& rText, sal_Bool& rPrevCharIsSpace ) { - sal_Int32 nExpStartPos = 0L; + sal_Int32 nExpStartPos = 0; sal_Int32 nEndPos = rText.getLength(); sal_Int32 nSpaceChars = 0; for( sal_Int32 nPos = 0; nPos < nEndPos; nPos++ ) diff --git a/xmloff/source/transform/FormPropOASISTContext.cxx b/xmloff/source/transform/FormPropOASISTContext.cxx index 91452183e13e..57ec2b33cf20 100644 --- a/xmloff/source/transform/FormPropOASISTContext.cxx +++ b/xmloff/source/transform/FormPropOASISTContext.cxx @@ -53,7 +53,7 @@ XMLTokenEnum XMLFormPropOASISTransformerContext::GetValueType( sal_Bool bNeg = sal_False; sal_uInt32 nVal = 0; - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; sal_Int32 nLen = rValue.getLength(); // skip white space diff --git a/xmloff/source/transform/PropertyActionsOOo.cxx b/xmloff/source/transform/PropertyActionsOOo.cxx index 34b5ef85560b..bb3e66ff13b6 100644 --- a/xmloff/source/transform/PropertyActionsOOo.cxx +++ b/xmloff/source/transform/PropertyActionsOOo.cxx @@ -645,6 +645,10 @@ XMLTransformerActionInit aTextPropertyOOoAttrActionTable[] = NO_PARAMS }, /* generated entry */ { XML_NAMESPACE_FO, XML_HYPHENATION_PUSH_CHAR_COUNT, XML_ATACTION_COPY, NO_PARAMS }, /* generated entry */ + { XML_NAMESPACE_STYLE, XML_TEXT_OVERLINE_STYLE, XML_ATACTION_REMOVE, + NO_PARAMS }, /* #i113645# */ + { XML_NAMESPACE_STYLE, XML_TEXT_OVERLINE_COLOR, XML_ATACTION_REMOVE, + NO_PARAMS }, /* #i113645# */ { XML_NAMESPACE_OFFICE, XML_TOKEN_INVALID, XML_ATACTION_EOT, NO_PARAMS } }; diff --git a/xmloff/source/transform/TransformerBase.cxx b/xmloff/source/transform/TransformerBase.cxx index 9df6ed0c461e..d8b6a51ebc00 100644 --- a/xmloff/source/transform/TransformerBase.cxx +++ b/xmloff/source/transform/TransformerBase.cxx @@ -616,8 +616,8 @@ XMLMutableAttributeList *XMLTransformerBase::ProcessAttrList( // --> OD 2004-10-29 #i13778#,#i36248# // apply correct twip-to-1/100mm nMeasure = (sal_Int32)( nMeasure >= 0 - ? ((nMeasure*127L+36L)/72L) - : ((nMeasure*127L-36L)/72L) ); + ? ((nMeasure*127+36)/72) + : ((nMeasure*127-36)/72) ); // <-- rtl::OUStringBuffer aBuffer; @@ -778,8 +778,8 @@ XMLMutableAttributeList *XMLTransformerBase::ProcessAttrList( // --> OD 2004-10-29 #i13778#,#i36248# // apply correct 1/100mm-to-twip conversion nMeasure = (sal_Int32)( nMeasure >= 0 - ? ((nMeasure*72L+63L)/127L) - : ((nMeasure*72L-63L)/127L) ); + ? ((nMeasure*72+63)/127) + : ((nMeasure*72-63)/127) ); // <-- OUStringBuffer aBuffer; @@ -1201,7 +1201,7 @@ sal_Bool XMLTransformerBase::NegPercent( OUString& rValue ) sal_Bool bNeg = sal_False; double nVal = 0; - sal_Int32 nPos = 0L; + sal_Int32 nPos = 0; sal_Int32 nLen = rValue.getLength(); // skip white space diff --git a/xmloff/util/makefile.mk b/xmloff/util/makefile.mk index 857067985c50..29ed0784d165 100644 --- a/xmloff/util/makefile.mk +++ b/xmloff/util/makefile.mk @@ -48,6 +48,7 @@ LIB1FILES= \ $(SLB)$/draw.lib \ $(SLB)$/chart.lib \ $(SLB)$/forms.lib \ + $(SLB)$/form_handlers.lib \ $(SLB)$/xforms.lib \ $(SLB)$/table.lib |