示例#1
0
        private void OpenLibrary_Click(object sender, RoutedEventArgs e)
        {
            e.Handled = true;
            if (_dirty)
            {
                if (System.Windows.MessageBox.Show("Save Library first?", "Slm", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    if (!CheckLibraryFileName())
                    {
                        return;
                    }
                    _slideLib.Save();
                }
            }
            // Clear / New library
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            dlg.DefaultExt = ".slb";                                            // Default file extension
            dlg.Filter     = "AutoCAD Slide Library|*.slb|AutoCAD Slide|*.sld"; // Filter files by extension
            Nullable <bool> result = dlg.ShowDialog();

            if (result == false)
            {
                return;
            }

            _slideLib = new SlideLibObject(dlg.FileName);
            GenerateBadges();
            _dirty = false;

            preview.Slide = null;
            propertyGrid.SelectedObject = new SlmProperties(null, _slideLib);
        }
示例#2
0
 public SlmProperties(SlideObject sld, SlideLibObject slb = null)
     : base()
 {
     if (slb != null)
     {
         slbName     = slb._Name;
         slbFileName = slb._FileName;
         slbSize     = slb._FileLength;
         slbNbSlide  = slb._Slides.Count;
         slbVersion  = "1.0";
     }
     if (sld != null)
     {
         sldName     = sld._Name;
         sldFileName = sld._FileName;
         sldSize     = sld._FileLength;
         sldWidth    = (int)sld._Size.Width;
         sldHeight   = (int)sld._Size.Height;
         sldVersion  = sld._Version.ToString("#.0#");
     }
 }
示例#3
0
        private void NewLibrary_Click(object sender, RoutedEventArgs e)
        {
            e.Handled = true;
            if (_dirty)
            {
                if (System.Windows.MessageBox.Show("Save Library first?", "Slm", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    if (!CheckLibraryFileName())
                    {
                        return;
                    }
                    _slideLib.Save();
                }
            }
            // Clear / New library
            _slideLib           = new SlideLibObject();
            Library.ItemsSource = new ObservableCollection <SlmVignette> ();
            Library.Items.Refresh();
            _dirty = false;

            preview.Slide = null;
            propertyGrid.SelectedObject = new SlmProperties(null, _slideLib);
        }
示例#4
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);
        }