Ejemplo n.º 1
0
        /// <summary>
        /// Get images for ribbon bar buttons
        /// </summary>
        /// <param name="imageName">name of image to get</param>
        /// <returns>image stream</returns>
        public IStream GetImage(string imageName)
        {
            MemoryStream mem = new MemoryStream();

            switch (imageName)
            {
            case "pageTags.png":
                Properties.Resources.tag_32x32.Save(mem, ImageFormat.Png);
                break;

            case "managePageTags.png":
                Properties.Resources.settings_32x32.Save(mem, ImageFormat.Png);
                break;

            case "findPageTags.png":
                Properties.Resources.tagSearch_32x32.Save(mem, ImageFormat.Png);
                break;

            default:
                TraceLogger.Log(TraceCategory.Warning(), "Unknown image requested: {0}", imageName);
                Properties.Resources.tag_32x32.Save(mem, ImageFormat.Png);
                break;
            }

            return(new COMReadonlyStreamAdapter(mem));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Show a WPF window.
        /// </summary>
        /// <typeparam name="W">window type</typeparam>
        /// <typeparam name="M">view model type</typeparam>
        /// <param name="viewModelFactory">factory method to generate the view model in the UI thread of the WPF window</param>
        public void Show <W, M>(Func <M> viewModelFactory)
            where W : System.Windows.Window, IOneNotePageWindow <M>, new()
            where M : WindowViewModelBase
        {
            var thread = new Thread(() =>
            {
                try
                {
                    lock (_SingletonWindows)
                    {
                        System.Windows.Window w;
                        if (_SingletonWindows.TryGetValue(typeof(W), out w))
                        {
                            w.Dispatcher.Invoke(() =>
                            {
                                w.WindowState = WindowState.Normal;
                                BringWindowIntoView(w);
                            });
                            return;
                        }
                        w           = new W();
                        w.Closing  += (o, e) => UnregisterWindow(typeof(W));
                        w.Closed   += (s, e) => w.Dispatcher.InvokeShutdown();
                        M viewmodel = viewModelFactory();
                        ((IOneNotePageWindow <M>)w).ViewModel = viewmodel;
                        var helper = new WindowInteropHelper(w)
                        {
                            Owner = (IntPtr)viewmodel.OneNoteApp.CurrentWindow.WindowHandle
                        };

                        w.Show();
                        BringWindowIntoView(w);
                        _SingletonWindows.Add(typeof(W), w);
                    }
                    // Turn this thread into an UI thread
                    System.Windows.Threading.Dispatcher.Run();
                }
                catch (ThreadAbortException ta)
                {
                    TraceLogger.Log(TraceCategory.Warning(), "Window Thread aborted: {0}", ta);
                }
                catch (Exception ex)
                {
                    TraceLogger.Log(TraceCategory.Error(), "Exception while creating dialog: {0}", ex);
                    TraceLogger.ShowGenericErrorBox(Properties.Resources.TagEditor_Error_WindowCreation, ex);
                }
            });

            thread.SetApartmentState(ApartmentState.STA);
            thread.IsBackground = true;
            thread.Start();
        }