Ejemplo n.º 1
0
        private void ExportSlides_Click(object sender, RoutedEventArgs e)
        {
            e.Handled = true;
            if (Library.SelectedItems.Count == 0)
            {
                return;
            }

            var dialog = new System.Windows.Forms.FolderBrowserDialog();

            System.Windows.Forms.DialogResult result = dialog.ShowDialog();
            if (result != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            string temp = dialog.SelectedPath;

            foreach (SlmVignette slide in Library.SelectedItems)
            {
                string      st           = System.IO.Path.Combine(new string [] { temp, slide.Name + ".png" });
                SlideObject sld          = _slideLib._Slides [slide.Name];
                BitmapImage renderBitmap = sld.Export();

                PngBitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(renderBitmap));                    // Push the rendered bitmap to it
                using (FileStream outStream = new FileStream(st, FileMode.Create)) {     // Create a file stream for saving image
                    encoder.Save(outStream);
                }
            }
        }
Ejemplo n.º 2
0
        private ObservableCollection <SlmVignette> MergeAndGenerateBadges(string [] files)
        {
            Point pt = Library.PointToScreen(new Point(0, 0));

            _margins = new Thickness(pt.X, pt.Y, pt.X + Library.ActualWidth, pt.Y + Library.ActualHeight);

            _waitThread = new Thread(this.RunWaitThread);
            _waitThread.IsBackground = true;
            _waitThread.SetApartmentState(ApartmentState.STA);
            _waitThread.Start();
            Thread.Sleep(0);

            ObservableCollection <SlmVignette> newItems = new ObservableCollection <SlmVignette> ();
            ObservableCollection <SlmVignette> items    = new ObservableCollection <SlmVignette> ();

            if (Library.ItemsSource != null)
            {
                items = new ObservableCollection <SlmVignette> ((IEnumerable <SlmVignette>)Library.ItemsSource);
            }
            foreach (string fileName in files)
            {
                if (SlideLibObject.IsSlideLibrary(fileName))
                {
                    SlideLibObject slb = new SlideLibObject(fileName);
                    //_slideLib._Slides =_slideLib._Slides.Concat (slb._Slides).GroupBy (d => d.Key)
                    //	.ToDictionary (d => d.Key, d => d.First ().Value) ;
                    foreach (KeyValuePair <string, SlideObject> slide in slb._Slides)
                    {
                        string name = slide.Key;
                        if (_slideLib._Slides.ContainsKey(slide.Key))
                        {
                            for (int i = 0;; i++)
                            {
                                string st = name + i;
                                if (!_slideLib._Slides.ContainsKey(st))
                                {
                                    name = st;
                                    break;
                                }
                            }
                        }
                        _slideLib._Slides.Add(name, slide.Value);

                        SlmVignette badge = new SlmVignette()
                        {
                            Name  = name,
                            Type  = slide.Value._Size.Width + "x" + slide.Value._Size.Height,
                            Image = slide.Value.Export(70, 70)
                        };
                        items.Add(badge);
                        newItems.Add(badge);
                    }
                    _dirty = true;
                }
                if (SlideObject.IsSlide(fileName) && !_slideLib._Slides.ContainsKey(System.IO.Path.GetFileNameWithoutExtension(fileName)))
                {
                    SlideObject sld = new SlideObject(fileName);
                    sld._Name = System.IO.Path.GetFileNameWithoutExtension(fileName);
                    _slideLib._Slides.Add(sld._Name, sld);
                    _dirty = true;

                    SlmVignette badge = new SlmVignette()
                    {
                        Name  = sld._Name,
                        Type  = sld._Size.Width + "x" + sld._Size.Height,
                        Image = sld.Export(70, 70)
                    };
                    items.Add(badge);
                    newItems.Add(badge);
                }
                Thread.Sleep(0);
            }

            Library.ItemsSource = items;
            Library.Items.Refresh();

            Thread.Sleep(200);
            while (_waitDialog == null)
            {
                Thread.Sleep(100);
            }
            _waitDialog.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => {
                _waitDialog.Close();
            }));
            if (_waitThread.IsAlive)
            {
                _waitThread.Abort();
            }

            return(newItems);
        }