예제 #1
0
 internal static void Copy(XModel document, Object selection)
 {
     if (document != null)
     {
         //return
         Copy(document.getCurrentController(), selection);
     }
 }
        /// <summary>
        /// Gets the frame from document.
        /// </summary>
        /// <param name="doc">The doc.</param>
        /// <returns></returns>
        public static XFrame GetFrameFromDocument(XModel doc)
        {
            try
            {
                return(doc.getCurrentController().getFrame());
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("Can't get Frame form doc: " + ex);
            }

            return(null);
        }
예제 #3
0
        private void CreateThumbnails()
        {
            // TODO: this currently only works when the default view is selected (not outline or notes)
            var pages = (document as XDrawPagesSupplier).getDrawPages();
            var file  = Path.GetTempFileName();

            for (int i = 0; i < pages.getCount(); i++)
            {
                var page = (XDrawPage)pages.getByIndex(i).Value;
                var name = (page as XNamed).getName();
                (document.getCurrentController() as XDrawView).setCurrentPage(page);
                (document as XStorable).storeToURL(CreateFileUrl(file), new PropertyValue[] { CreateProperty("FilterName", new uno.Any("impress_png_Export")) });
                using (StreamReader reader = new StreamReader(file))
                {
                    var decoder = new PngBitmapDecoder(reader.BaseStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                    decoder.Frames[0].Freeze();
                    thumbnails.Add(new SlideThumbnail {
                        Image = decoder.Frames[0], Title = name + " (" + String.Format(Resource.slideDescriptionN, i + 1) + ")"
                    });
                }
            }
            File.Delete(file);
            (document.getCurrentController() as XDrawView).setCurrentPage((XDrawPage)pages.getByIndex(0).Value);
        }
예제 #4
0
        void PerformLoad()
        {
            // Start LibreOffice and load file
            unoidl.com.sun.star.uno.XComponentContext     localContext        = uno.util.Bootstrap.bootstrap();
            unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager();
            desktop = (XDesktop)multiServiceFactory.createInstance("com.sun.star.frame.Desktop");
            var componentLoader = (XComponentLoader)desktop;

            component = componentLoader.loadComponentFromURL(CreateFileUrl(file.FullName), "_blank", 0, new PropertyValue[] { });

            // TODO: while/before loading, set the viewsettings ViewId:=view1, PageKind:=0 to reset to the default view
            // (instead of notes or outline view). Unfortunately these settings aren't accesible in the API ...

            // Get the main window's handle and hide the window
            document = (XModel)component;
            XWindow window = document.getCurrentController().getFrame().getContainerWindow();

            window.setVisible(false);
            XSystemDependentWindowPeer xWindowPeer = (XSystemDependentWindowPeer)(window);

            mainHandle = new IntPtr((int)xWindowPeer.getWindowHandle(new byte[] { }, SystemDependent.SYSTEM_WIN32).Value);
            //ShowWindow(mainHandle, 0);

            presentation = (XPresentation2)((XPresentationSupplier)component).getPresentation();

            CreateThumbnails();

            listener.SlideTransitionStarted += (sender, args) =>
            {
                OnSlideIndexChanged();
            };

            Start();
            controller.gotoSlideIndex(0);

            LoadPreviewProvider();

            base.OnLoaded(true);
        }
        /// <summary>
        /// Registers the listener to the given object.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <returns></returns>
        public bool RegisterListenerToElement(Object element)
        {
            XSelectionSupplier supl = element as XSelectionSupplier;

            //TODO: maybe extend this
            if (supl == null && element is XModel)
            {
                XModel model      = element as XModel;
                var    controller = model.getCurrentController();
                if (controller != null && controller is XSelectionSupplier)
                {
                    supl = controller as XSelectionSupplier;
                }
            }

            if (supl != null)
            {
                try { supl.removeSelectionChangeListener(Instance.eventForwarder); }
                catch { }
                try
                {
                    supl.addSelectionChangeListener(Instance.eventForwarder);
                    return(true);
                }
                catch
                {
                    System.Threading.Thread.Sleep(5);
                    try
                    {
                        supl.addSelectionChangeListener(Instance.eventForwarder);
                        return(true);
                    }
                    catch { }
                }
            }

            return(false);
        }
예제 #6
0
        public void InsertGraphic(string imgpath)
        {
            Object            dispatchHelper    = mxMSFactory.createInstance("com.sun.star.frame.DispatchHelper");
            XDispatchHelper   dispatcher        = dispatchHelper as XDispatchHelper;
            XModel            xModel            = mxDocument as XModel;
            XFrame            xFrame            = xModel.getCurrentController().getFrame();
            XDispatchProvider xDispatchProvider = xFrame as XDispatchProvider;

            unoidl.com.sun.star.beans.PropertyValue[] MyProp = new unoidl.com.sun.star.beans.PropertyValue[4];
            MyProp[0]       = new unoidl.com.sun.star.beans.PropertyValue();
            MyProp[0].Name  = "FileName";
            MyProp[0].Value = new uno.Any(PathConverter(imgpath));
            MyProp[1]       = new unoidl.com.sun.star.beans.PropertyValue();
            MyProp[1].Name  = "FilterName";
            MyProp[1].Value = new uno.Any("<Tous les formats>");
            MyProp[2]       = new unoidl.com.sun.star.beans.PropertyValue();
            MyProp[2].Name  = "AsLink";
            MyProp[2].Value = new uno.Any(false);
            MyProp[3]       = new unoidl.com.sun.star.beans.PropertyValue();
            MyProp[3].Name  = "Style";
            MyProp[3].Value = new uno.Any("Image");
            dispatcher.executeDispatch(xDispatchProvider, ".uno:InsertGraphic", "", 0, MyProp);
        }
 /// <summary>
 /// Registers the context menu controler.
 /// </summary>
 /// <param name="xModel">The x model.</param>
 public void RegisterContextMenuControler(XModel xModel)
 {
     _xFrame = xModel.getCurrentController().getFrame();
     RegisterContextMenuControler(_xFrame);
 }
        void PerformLoad()
        {
            // Start LibreOffice and load file
            unoidl.com.sun.star.uno.XComponentContext localContext = uno.util.Bootstrap.bootstrap();
            unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory)localContext.getServiceManager();
            desktop = (XDesktop)multiServiceFactory.createInstance("com.sun.star.frame.Desktop");
            var componentLoader = (XComponentLoader)desktop;
            component = componentLoader.loadComponentFromURL(CreateFileUrl(file.FullName), "_blank", 0, new PropertyValue[] { });

            // TODO: while/before loading, set the viewsettings ViewId:=view1, PageKind:=0 to reset to the default view
            // (instead of notes or outline view). Unfortunately these settings aren't accesible in the API ...

            // Get the main window's handle and hide the window
            document = (XModel)component;
            XWindow window = document.getCurrentController().getFrame().getContainerWindow();
            window.setVisible(false);
            XSystemDependentWindowPeer xWindowPeer = (XSystemDependentWindowPeer)(window);
            mainHandle = new IntPtr((int)xWindowPeer.getWindowHandle(new byte[] { }, SystemDependent.SYSTEM_WIN32).Value);
            //ShowWindow(mainHandle, 0);

            presentation = (XPresentation2)((XPresentationSupplier)component).getPresentation();

            CreateThumbnails();

            listener.SlideTransitionStarted += (sender, args) =>
            {
                OnSlideIndexChanged();
            };

            Start();
            controller.gotoSlideIndex(0);

            LoadPreviewProvider();

            base.OnLoaded(true);
        }
 /// <summary>
 /// Gets the current controller of the given model.
 /// </summary>
 /// <param name="xModel">The x model.</param>
 /// <returns>Current controller or <code>null</code></returns>
 public XController GetController(XModel xModel)
 {
     return xModel != null ? xModel.getCurrentController() : null;
 }
 /// <summary>
 /// Registers the context menu controler.
 /// </summary>
 /// <param name="xModel">The x model.</param>
 public void RegisterContextMenuControler(XModel xModel)
 {
     _xFrame = xModel.getCurrentController().getFrame();
     RegisterContextMenuControler(_xFrame);
 }
        internal static void Copy(XModel document, Object selection)
        {

            if (document != null)
            {
                //return 
                Copy(document.getCurrentController(), selection);
            }

        }