diff options
-rw-r--r-- | sc/sdi/graphsh.sdi | 18 | ||||
-rw-r--r-- | sc/source/ui/drawfunc/graphsh.cxx | 66 | ||||
-rw-r--r-- | sc/source/ui/drawfunc/objdraw.src | 4 | ||||
-rw-r--r-- | sc/source/ui/inc/graphsh.hxx | 3 | ||||
-rw-r--r-- | svx/Library_svxcore.mk | 1 | ||||
-rw-r--r-- | svx/Package_inc.mk | 3 | ||||
-rw-r--r-- | svx/inc/globlmn_tmpl.hrc | 5 | ||||
-rw-r--r-- | svx/inc/svx/extedit.hxx (renamed from sw/source/ui/inc/extedit.hxx) | 28 | ||||
-rw-r--r-- | svx/inc/svx/svxids.hrc | 4 | ||||
-rw-r--r-- | svx/sdi/svx.sdi | 25 | ||||
-rw-r--r-- | svx/source/core/extedit.cxx (renamed from sw/source/ui/docvw/extedit.cxx) | 111 | ||||
-rw-r--r-- | sw/Library_sw.mk | 1 | ||||
-rw-r--r-- | sw/inc/cmdid.h | 3 | ||||
-rw-r--r-- | sw/inc/swcommands.h | 1 | ||||
-rw-r--r-- | sw/sdi/_grfsh.sdi | 4 | ||||
-rw-r--r-- | sw/sdi/swriter.sdi | 27 | ||||
-rw-r--r-- | sw/source/ui/app/mn.src | 5 | ||||
-rw-r--r-- | sw/source/ui/shells/grfsh.cxx | 30 |
18 files changed, 225 insertions, 114 deletions
diff --git a/sc/sdi/graphsh.sdi b/sc/sdi/graphsh.sdi index cbf2583556b2..6eb051bc5eaf 100644 --- a/sc/sdi/graphsh.sdi +++ b/sc/sdi/graphsh.sdi @@ -128,11 +128,18 @@ interface GraphSelection ExecMethod = Execute; StateMethod = GetAttrState; ] - SID_COLOR_SETTINGS - [ - ExecMethod = Execute; - StateMethod = GetAttrState; - ] + + SID_COLOR_SETTINGS + [ + ExecMethod = Execute; + StateMethod = GetAttrState; + ] + + SID_EXTERNAL_EDIT + [ + ExecMethod = ExecuteExternalEdit; + StateMethod = GetExternalEditState; + ] } // =========================================================================== @@ -140,4 +147,3 @@ shell ScGraphicShell : ScDrawShell { import GraphSelection; } - diff --git a/sc/source/ui/drawfunc/graphsh.cxx b/sc/source/ui/drawfunc/graphsh.cxx index 751fc41cab63..ff4d43d72dae 100644 --- a/sc/source/ui/drawfunc/graphsh.cxx +++ b/sc/source/ui/drawfunc/graphsh.cxx @@ -39,12 +39,40 @@ #include "viewdata.hxx" #include "drawview.hxx" #include "scresid.hxx" +#include <svx/extedit.hxx> #define ScGraphicShell #include "scslots.hxx" #define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue() +class ScExternalToolEdit : public ExternalToolEdit +{ + ScDrawView* m_pView; + SdrObject* m_pObj; + +public: + ScExternalToolEdit ( ScDrawView* pView, SdrObject* pObj ) : + m_pView (pView), + m_pObj (pObj) + {} + + virtual void Update( Graphic& aGraphic ) + { + SdrPageView* pPageView = m_pView->GetSdrPageView(); + if( pPageView ) + { + SdrGrafObj* pNewObj = (SdrGrafObj*) m_pObj->Clone(); + String aStr( m_pView->GetDescriptionOfMarkedObjects() ); + aStr.Append( sal_Unicode(' ') ); + aStr.Append( String( "External Edit" ) ); + m_pView->BegUndo( aStr ); + pNewObj->SetGraphicObject( aGraphic ); + m_pView->ReplaceObjectAtView( m_pObj, *pPageView, pNewObj ); + m_pView->EndUndo(); + } + } +}; SFX_IMPL_INTERFACE(ScGraphicShell, ScDrawShell, ScResId(SCSTR_GRAPHICSHELL) ) { @@ -140,4 +168,42 @@ void ScGraphicShell::ExecuteFilter( SfxRequest& rReq ) Invalidate(); } +void ScGraphicShell::GetExternalEditState( SfxItemSet& rSet ) +{ + ScDrawView* pView = GetViewData()->GetScDrawView(); + const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); + bool bEnable = false; + printf("ZO!\n"); + if( rMarkList.GetMarkCount() == 1 ) + { + SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); + + if( pObj && pObj->ISA( SdrGrafObj ) && ( ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP ) ) + bEnable = true; + } + + if( !bEnable ) + rSet.DisableItem( SID_EXTERNAL_EDIT ); +} + +void ScGraphicShell::ExecuteExternalEdit( SfxRequest& rReq ) +{ + ScDrawView* pView = GetViewData()->GetScDrawView(); + const SdrMarkList& rMarkList = pView->GetMarkedObjectList(); + printf("YO!\n"); + + if( rMarkList.GetMarkCount() == 1 ) + { + SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); + + if( pObj && pObj->ISA( SdrGrafObj ) && ( (SdrGrafObj*) pObj )->GetGraphicType() == GRAPHIC_BITMAP ) + { + GraphicObject aGraphicObject( ( (SdrGrafObj*) pObj )->GetGraphicObject() ); + ScExternalToolEdit* aExternalToolEdit = new ScExternalToolEdit( pView, pObj ); + aExternalToolEdit->Edit( &aGraphicObject ); + } + } + + Invalidate(); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/drawfunc/objdraw.src b/sc/source/ui/drawfunc/objdraw.src index 5df0c5f3f490..02fc43505b1b 100644 --- a/sc/source/ui/drawfunc/objdraw.src +++ b/sc/source/ui/drawfunc/objdraw.src @@ -404,7 +404,7 @@ String RID_POPUP_DRAW Text [ en-US ] = "Pop-up menu for drawing objects" ; }; // - // Popup-Menue fuer (allgemeine) Zeichenobjekte + // Pop-up menu for drawing objects // Menu RID_POPUP_DRAW { @@ -527,6 +527,7 @@ Menu RID_POPUP_GRAPHIC MN_EDITLNK MN_DELLNK MenuItem { ITEM_OPEN_HYPERLINK }; + MenuItem { ITEM_EXTERNAL_EDIT }; }; }; @@ -657,4 +658,3 @@ Menu RID_POPUP_DRAWTEXT }; }; }; - diff --git a/sc/source/ui/inc/graphsh.hxx b/sc/source/ui/inc/graphsh.hxx index 7e7c5fa6e62d..3c700c73ad12 100644 --- a/sc/source/ui/inc/graphsh.hxx +++ b/sc/source/ui/inc/graphsh.hxx @@ -44,6 +44,9 @@ public: void ExecuteFilter(SfxRequest& rReq); void GetFilterState(SfxItemSet &rSet); + + void ExecuteExternalEdit(SfxRequest& rReq); + void GetExternalEditState(SfxItemSet &rSet); }; #endif diff --git a/svx/Library_svxcore.mk b/svx/Library_svxcore.mk index beda9bd52366..8361ec162224 100644 --- a/svx/Library_svxcore.mk +++ b/svx/Library_svxcore.mk @@ -92,6 +92,7 @@ $(eval $(call gb_Library_use_external,svxcore,icuuc)) $(eval $(call gb_Library_add_exception_objects,svxcore,\ svx/source/core/coreservices \ + svx/source/core/extedit \ svx/source/customshapes/EnhancedCustomShape2d \ svx/source/customshapes/EnhancedCustomShapeGeometry \ svx/source/customshapes/EnhancedCustomShapeTypeNames \ diff --git a/svx/Package_inc.mk b/svx/Package_inc.mk index df90d0fc74cc..b6888d1a12a3 100644 --- a/svx/Package_inc.mk +++ b/svx/Package_inc.mk @@ -2,7 +2,7 @@ #************************************************************************* # # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2000, 2011 Oracle and/or its affiliates. # # OpenOffice.org - a multi-platform office productivity suite @@ -553,5 +553,6 @@ $(eval $(call gb_Package_add_file,svx_inc,inc/svx/svxdllapi.h,svx/svxdllapi.h)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/colrctrl.hxx,svx/colrctrl.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/fmdpage.hxx,svx/fmdpage.hxx)) $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sxmtpitm.hxx,svx/sxmtpitm.hxx)) +$(eval $(call gb_Package_add_file,svx_inc,inc/svx/extedit.hxx,svx/extedit.hxx)) # vim: set noet sw=4 ts=4: diff --git a/svx/inc/globlmn_tmpl.hrc b/svx/inc/globlmn_tmpl.hrc index f6b8f73b170c..e85bd91398f8 100644 --- a/svx/inc/globlmn_tmpl.hrc +++ b/svx/inc/globlmn_tmpl.hrc @@ -257,6 +257,11 @@ Command = ".uno:ImageMapDialog" ; \ Text [ en-US ] = "ImageMap" ; \ +#define ITEM_EXTERNAL_EDIT \ + Identifier = SID_EXTERNAL_EDIT ; \ + Command = ".uno:ExternalEdit" ; \ + Text [ en-US ] = "Edit with External Tool..." ; \ + #define ITEM_VIEW_ATTR_ZOOM \ Identifier = SID_ATTR_ZOOM ; \ Command = ".uno:Zoom" ; \ diff --git a/sw/source/ui/inc/extedit.hxx b/svx/inc/svx/extedit.hxx index d013890a338d..b286ad825af1 100644 --- a/sw/source/ui/inc/extedit.hxx +++ b/svx/inc/svx/extedit.hxx @@ -28,23 +28,27 @@ #include <osl/process.h> #include <vcl/graph.hxx> #include <svtools/grfmgr.hxx> -#include <wrtsh.hxx> #include <vcl/timer.hxx> +#include "svx/svxdllapi.h" -struct Data +class SVX_DLLPUBLIC ExternalToolEdit { - GraphicObject *pGraphicObject; - rtl::OUString fileName; - SwWrtShell *rSh ; -}; +public: + GraphicObject* m_pGraphicObject; + rtl::OUString m_aFileName; -class ExternalProcessClass_Impl -{ - public: - DECL_LINK( CloseEvent, void *pEvent ); - DECL_LINK( StartListeningEvent, void *pEvent ); + ExternalToolEdit(); + virtual ~ExternalToolEdit(); + + virtual void Update( Graphic& aGraphic ) = 0; + void Edit( GraphicObject *pGraphic ); + + + DECL_LINK( StartListeningEvent, void *pEvent ); + + static void threadWorker( void *pThreadData ); + static void HandleCloseEvent( ExternalToolEdit* pData ); }; -void EditWithExternalTool(GraphicObject *pGraphic, SwWrtShell *rSh); #endif diff --git a/svx/inc/svx/svxids.hrc b/svx/inc/svx/svxids.hrc index fca583186b5f..918d44d60b95 100644 --- a/svx/inc/svx/svxids.hrc +++ b/svx/inc/svx/svxids.hrc @@ -955,9 +955,10 @@ #define SID_INSERT_FORM_SPIN (SID_SVX_START+1110) #define SID_INSERT_FORM_VSCROLL (SID_SVX_START+1111) #define SID_INSERT_FORM_HSCROLL (SID_SVX_START+1112) +#define SID_EXTERNAL_EDIT (SID_SVX_START+1113) // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id -#define SID_SVX_FIRSTFREE (SID_INSERT_FORM_HSCROLL + 1) +#define SID_SVX_FIRSTFREE (SID_EXTERNAL_EDIT + 1) // -------------------------------------------------------------------------- // Overflow check for slot IDs @@ -970,4 +971,3 @@ #endif // #ifndef _SVX_SVXIDS_HRC // ******************************************************************* EOF - diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 5e1917576bb6..8b168c8eabde 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -5948,6 +5948,30 @@ SfxBoolItem ImageMapExecute SID_IMAP_EXEC GroupId = GID_EDIT; ] +SfxVoidItem ExternalEdit SID_EXTERNAL_EDIT + +[ + /* flags: */ + AutoUpdate = FALSE, + Cachable = Cachable, + FastCall = FALSE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Synchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_GRAPHIC; +] + //-------------------------------------------------------------------------- SfxBoolItem Init3D SID_3D_INIT @@ -15323,4 +15347,3 @@ SfxVoidItem PrepareMailExport SID_MAIL_PREPAREEXPORT ToolBoxConfig = FALSE, GroupId = GID_EXPLORER; ] - diff --git a/sw/source/ui/docvw/extedit.cxx b/svx/source/core/extedit.cxx index 8b70262e2568..eddb16acd4b4 100644 --- a/sw/source/ui/docvw/extedit.cxx +++ b/svx/source/core/extedit.cxx @@ -22,11 +22,9 @@ * instead of those above. */ -#include <extedit.hxx> -#include <view.hxx> +#include <svx/extedit.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/bindings.hxx> -#include <wrtsh.hxx> #include <osl/file.hxx> #include <osl/thread.hxx> #include <osl/process.h> @@ -38,8 +36,7 @@ #include <vcl/svapp.hxx> #include <vcl/graph.hxx> #include <vcl/cvtgrf.hxx> -#include <basesh.hxx> -#include "romenu.hxx" + #include "com/sun/star/system/XSystemShellExecute.hpp" #include "com/sun/star/system/SystemShellExecuteFlags.hpp" #include <comphelper/processfactory.hxx> @@ -47,66 +44,98 @@ #include <boost/bind.hpp> using namespace ::com::sun::star; +ExternalToolEdit::ExternalToolEdit() +{} + +ExternalToolEdit::~ExternalToolEdit() +{} -void HandleCloseEvent(const String& rURL, SwWrtShell *rSh) +void ExternalToolEdit::HandleCloseEvent(ExternalToolEdit* pData) { - //create a new Graphic Graphic newGraphic; //import the temp file image stream into the newGraphic - SvStream* pStream = utl::UcbStreamHelper::CreateStream(rURL, STREAM_READ); + SvStream* pStream = utl::UcbStreamHelper::CreateStream(pData->m_aFileName, STREAM_READ); if(pStream) { GraphicConverter::Import(*pStream, newGraphic); // Now update the Graphic in the shell by re-reading from the newGraphic // TODO: Make this action Undoable ! - rSh->ReRead(aEmptyStr, aEmptyStr, (const Graphic*) &newGraphic); + //rSh->ReRead(aEmptyStr, aEmptyStr, (const Graphic*) &newGraphic); + pData->Update( newGraphic ); delete(pStream); } } -IMPL_LINK (ExternalProcessClass_Impl, StartListeningEvent, void*, pEvent) +IMPL_LINK (ExternalToolEdit, StartListeningEvent, void*, pEvent) { //Start an event listener implemented via VCL timeout - Data *pData = ( Data* )pEvent; - String aURL( pData->fileName ); + ExternalToolEdit* pData = ( ExternalToolEdit* )pEvent; + String aURL( pData->m_aFileName ); new FileChangedChecker( - pData->fileName, - ::boost::bind(&HandleCloseEvent,aURL,pData->rSh)); + pData->m_aFileName, + ::boost::bind(&HandleCloseEvent, pData)); return 0; } -void pWorker(void *pThreadData) +void ExternalToolEdit::threadWorker(void* pThreadData) { - Data *pData = (Data*)(pThreadData); - rtl_uString *aFileName = new rtl_uString(); - rtl_uString_newFromAscii ( - &aFileName, rtl::OUStringToOString( - pData->fileName, RTL_TEXTENCODING_UTF8).getStr()); + ExternalToolEdit* pData = (ExternalToolEdit*) pThreadData; // Make an asynchronous call to listen to the event of temporary image file // getting changed - Application::PostUserEvent( - LINK(NULL, ExternalProcessClass_Impl, StartListeningEvent), pThreadData); + Application::PostUserEvent( LINK( NULL, ExternalToolEdit, StartListeningEvent ), pThreadData); uno::Reference< com::sun::star::system::XSystemShellExecute > xSystemShellExecute( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.system.SystemShellExecute") ), uno::UNO_QUERY_THROW ); - xSystemShellExecute->execute( pData->fileName, rtl::OUString(), com::sun::star::system::SystemShellExecuteFlags::URIS_ONLY ); + xSystemShellExecute->execute( pData->m_aFileName, rtl::OUString(), com::sun::star::system::SystemShellExecuteFlags::URIS_ONLY ); } -void EditWithExternalTool(GraphicObject *pGraphicObject, SwWrtShell *rSh) + +void GetPreferedExtension( String &rExt, const Graphic &rGrf ) +{ + // then propose the "best" filter using the native-info, if applicable + const sal_Char* pExt = "png"; + switch( const_cast<Graphic&>(rGrf).GetLink().GetType() ) + { + case GFX_LINK_TYPE_NATIVE_GIF: + pExt = "gif"; + break; + case GFX_LINK_TYPE_NATIVE_TIF: + pExt = "tif"; + break; + case GFX_LINK_TYPE_NATIVE_WMF: + pExt = "wmf"; + break; + case GFX_LINK_TYPE_NATIVE_MET: + pExt = "met"; + break; + case GFX_LINK_TYPE_NATIVE_PCT: + pExt = "pct"; + break; + case GFX_LINK_TYPE_NATIVE_JPG: + pExt = "jpg"; + break; + default: + break; + } + rExt.AssignAscii( pExt ); +} + +void ExternalToolEdit::Edit( GraphicObject* pGraphicObject ) { //Get the graphic from the GraphicObject - const Graphic pGraphic = pGraphicObject->GetGraphic(); + m_pGraphicObject = pGraphicObject; + const Graphic aGraphic = pGraphicObject->GetGraphic(); //get the Preferred File Extension for this graphic - String fExt; - GetPreferedExtension(fExt, pGraphic); + String fExtension; + GetPreferedExtension(fExtension, aGraphic); //Create the temp File rtl::OUString tempFileBase, tempFileName; @@ -114,36 +143,28 @@ void EditWithExternalTool(GraphicObject *pGraphicObject, SwWrtShell *rSh) osl::FileBase::createTempFile(0, &pHandle, &tempFileBase); // Move it to a file name with image extension properly set - tempFileName = tempFileBase + rtl::OUString(String('.')) + - rtl::OUString(fExt); + tempFileName = tempFileBase + rtl::OUString(String('.')) + rtl::OUString(fExtension); osl::File::move(tempFileBase, tempFileName); //Write Graphic to the Temp File - GraphicFilter& rGF = GraphicFilter::GetGraphicFilter(); - sal_uInt16 nFilter(rGF.GetExportFormatNumber(fExt)); - String aFilter(rGF.GetExportFormatShortName(nFilter)); + GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter(); + sal_uInt16 nFilter(rGraphicFilter.GetExportFormatNumber(fExtension)); + String aFilter(rGraphicFilter.GetExportFormatShortName(nFilter)); String sPath(tempFileName); // Write the Graphic to the file now - XOutBitmap::WriteGraphic(pGraphic, sPath, aFilter, - XOUTBMP_USE_NATIVE_IF_POSSIBLE|XOUTBMP_DONT_EXPAND_FILENAME); + XOutBitmap::WriteGraphic(aGraphic, sPath, aFilter, XOUTBMP_USE_NATIVE_IF_POSSIBLE|XOUTBMP_DONT_EXPAND_FILENAME); // There is a possiblity that sPath extnesion might have been changed if the // provided extension is not writable tempFileName = rtl::OUString(sPath); //Create a thread - rtl_uString *fileName = new rtl_uString(); + rtl_uString* aFileName = new rtl_uString(); rtl_uString_newFromAscii( - &fileName, rtl::OUStringToOString(tempFileName, - RTL_TEXTENCODING_UTF8).getStr()); - + &aFileName, + rtl::OUStringToOString(tempFileName, RTL_TEXTENCODING_UTF8).getStr()); + m_aFileName = aFileName; // Create the data that is needed by the thread later - Data *pThreadData = new Data(); - pThreadData->pGraphicObject = pGraphicObject; - pThreadData->fileName = fileName; - pThreadData->rSh = rSh ; - - osl_createThread(pWorker, pThreadData); - + osl_createThread(ExternalToolEdit::threadWorker, this); } diff --git a/sw/Library_sw.mk b/sw/Library_sw.mk index 1ddc142c108c..dc25ed8acc57 100644 --- a/sw/Library_sw.mk +++ b/sw/Library_sw.mk @@ -585,7 +585,6 @@ $(eval $(call gb_Library_add_exception_objects,sw,\ sw/source/ui/docvw/edtwin \ sw/source/ui/docvw/edtwin2 \ sw/source/ui/docvw/edtwin3 \ - sw/source/ui/docvw/extedit \ sw/source/ui/docvw/frmsidebarwincontainer \ sw/source/ui/docvw/romenu \ sw/source/ui/docvw/srcedtw \ diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h index ac547f67a226..2262521988ef 100644 --- a/sw/inc/cmdid.h +++ b/sw/inc/cmdid.h @@ -853,14 +853,11 @@ included in c-context files, so c++ style stuff will cause problems. #define FN_UNO_TABLE_NAME (FN_EXTRA2 + 111) #define FN_UNO_META (FN_EXTRA2 + 112) #define FN_UNO_NESTED_TEXT_CONTENT (FN_EXTRA2 + 113) -/* Edit Graphic with External Tool */ -#define FN_EXTERNAL_EDIT (FN_EXTRA2 + 114) /* Navigation buttons */ #define FN_NAVIGATION_BACK (FN_EXTRA2 + 115) #define FN_NAVIGATION_FORWARD (FN_EXTRA2 + 116) - // #i972: bool items to be passed to SwFrmPage for evaluation #define FN_OLE_IS_MATH (FN_EXTRA2 + 114) #define FN_MATH_BASELINE_ALIGNMENT (FN_EXTRA2 + 115) diff --git a/sw/inc/swcommands.h b/sw/inc/swcommands.h index 530e3a6d02c1..69e546c06de6 100644 --- a/sw/inc/swcommands.h +++ b/sw/inc/swcommands.h @@ -48,7 +48,6 @@ #define CMD_FN_FORMAT_FRAME_DLG ".uno:FrameDialog" #define CMD_FN_FORMAT_GRAFIC_DLG ".uno:GraphicDialog" #define CMD_FN_SAVE_GRAPHIC ".uno:SaveGraphic" -#define CMD_FN_EXTERNAL_EDIT ".uno:ExternalEdit" #define CMD_FN_NUM_BULLET_UP ".uno:IncrementLevel" #define CMD_FN_EDIT_IDX_ENTRY_DLG ".uno:IndexEntryDialog" #define CMD_FN_INSERT_FLD_AUTHOR ".uno:InsertAuthorField" diff --git a/sw/sdi/_grfsh.sdi b/sw/sdi/_grfsh.sdi index d60dc39d4b36..42d9666a7105 100644 --- a/sw/sdi/_grfsh.sdi +++ b/sw/sdi/_grfsh.sdi @@ -58,11 +58,12 @@ interface BaseTextGraphic StateMethod = GetAttrState ; ] - FN_EXTERNAL_EDIT + SID_EXTERNAL_EDIT [ ExecMethod = Execute ; StateMethod = GetAttrState ; ] + SID_INSERT_GRAPHIC // zeigt auf FN_FORMAT_GRAFIC_DLG [ ExecMethod = Execute ; @@ -218,4 +219,3 @@ interface BaseTextGraphic ] } - diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index bab0c1b7442f..7e9680e58f80 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -3462,33 +3462,6 @@ SfxVoidItem SaveGraphic FN_SAVE_GRAPHIC GroupId = GID_GRAPHIC; ] -//------------------------------------------------------------------------ -SfxVoidItem ExternalEdit FN_EXTERNAL_EDIT -() -[ - /* flags: */ - AutoUpdate = FALSE, - Cachable = Cachable, - FastCall = FALSE, - HasCoreId = FALSE, - HasDialog = FALSE, - ReadOnlyDoc = TRUE, - Toggle = FALSE, - Container = FALSE, - RecordAbsolute = FALSE, - RecordPerSet; - Synchron; - - /* config: */ - AccelConfig = TRUE, - MenuConfig = TRUE, - StatusBarConfig = FALSE, - ToolBoxConfig = TRUE, - GroupId = GID_GRAPHIC; -] -//------------------------------------------------------------------------ - - //-------------------------------------------------------------------------- SfxVoidItem Grow FN_GROW_FONT_SIZE () diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src index deed82e7c615..8b312910a3c0 100644 --- a/sw/source/ui/app/mn.src +++ b/sw/source/ui/app/mn.src @@ -1290,9 +1290,7 @@ Menu MN_GRF_POPUPMENU SEPARATOR; MenuItem { - Identifier = FN_EXTERNAL_EDIT ; - HelpID = CMD_FN_EXTERNAL_EDIT ; - Text [ en-US ] = "Edit with External Tool..."; + ITEM_EXTERNAL_EDIT }; SEPARATOR; MenuItem @@ -1462,4 +1460,3 @@ Menu MN_TEXT_POPUPMENU BASE_TEXT_POPUPMENU_BEGIN BASE_TEXT_POPUPMENU_NOWEB BASE_TEXT_POPUPMENU_END - diff --git a/sw/source/ui/shells/grfsh.cxx b/sw/source/ui/shells/grfsh.cxx index 898da61dd449..f47284124ea0 100644 --- a/sw/source/ui/shells/grfsh.cxx +++ b/sw/source/ui/shells/grfsh.cxx @@ -70,7 +70,7 @@ #include <swwait.hxx> #include <shells.hrc> #include <popup.hrc> -#include <extedit.hxx> +#include <svx/extedit.hxx> #define SwGrfShell #include <sfx2/msg.hxx> #include "swslots.hxx" @@ -79,6 +79,21 @@ #define TOOLBOX_NAME ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "colorbar" ) ) +class SwExternalToolEdit : public ExternalToolEdit +{ + SwWrtShell* m_pShell; + +public: + SwExternalToolEdit ( SwWrtShell* pShell ) : + m_pShell (pShell) + {} + + virtual void Update( Graphic& aGraphic ) + { + m_pShell->ReRead(aEmptyStr, aEmptyStr, (const Graphic*) &aGraphic); + } +}; + SFX_IMPL_INTERFACE(SwGrfShell, SwBaseShell, SW_RES(STR_SHELLNAME_GRAPHIC)) { SFX_POPUPMENU_REGISTRATION(SW_RES(MN_GRF_POPUPMENU)); @@ -108,7 +123,7 @@ void SwGrfShell::Execute(SfxRequest &rReq) } } break; - case FN_EXTERNAL_EDIT: + case SID_EXTERNAL_EDIT: { /* When the graphic is selected to be opened via some external tool * for advanced editing @@ -116,7 +131,8 @@ void SwGrfShell::Execute(SfxRequest &rReq) GraphicObject *pGraphicObject = (GraphicObject *) rSh.GetGraphicObj(); if(0 != pGraphicObject) { - EditWithExternalTool(pGraphicObject, &rSh); + SwExternalToolEdit* externalToolEdit = new SwExternalToolEdit( &rSh ); + externalToolEdit->Edit ( pGraphicObject ); } } break; @@ -541,10 +557,10 @@ void SwGrfShell::GetAttrState(SfxItemSet &rSet) if( rSh.GetGraphicType() == GRAPHIC_NONE ) bDisable = sal_True; break; - /* - * If the Graphic is None type it should be externally editable - */ - case FN_EXTERNAL_EDIT: + case SID_EXTERNAL_EDIT: + /* + * If the Graphic is None type it should be externally editable + */ if( rSh.GetGraphicType() == GRAPHIC_NONE ) bDisable = sal_True; break; |