Example #1
0
 public ImageTreeViewItem(ImageSource img, string header, iItemData data = null)
 {
     Image    = img;
     Header   = header;
     this.Tag = Tag;
     _data    = data;
 }
Example #2
0
        private void PptComponent_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            if (e.NewValue.GetType() == typeof(ImageTreeViewItem))
            {
                ImageTreeViewItem itm     = (ImageTreeViewItem)e.NewValue;
                iItemData         itmdata = itm.data;
                ImageButton[]     ableAddBtns, unableAddBtns;
                ableAddBtns   = new ImageButton[] { };
                unableAddBtns = new ImageButton[] { AddEnumBtn, AddFuncBtn, AddSubBtn, AddTypeBtn, EventMouseOverBtn, EventMouseClickBtn };
                if (itmdata != null)
                {
                    switch (itmdata.type)
                    {
                    case itemDataType.ShapeData:
                        // 쉐이프 선택
                        ShapeData shapedata = (ShapeData)itmdata;
                        ppt.Shape shape     = CustomShapeDataToShape(shapedata.Item, pc.PowerPointPresentation);



                        ableAddBtns   = new ImageButton[] { AddEnumBtn, AddFuncBtn, AddSubBtn, AddTypeBtn, EventMouseOverBtn, EventMouseClickBtn };
                        unableAddBtns = new ImageButton[] { };


                        //ppGrid.SelectedObject = shape;


                        break;

                    case itemDataType.SlideData:
                        // 슬라이드 선택
                        SlideData slidedata = (SlideData)itmdata;

                        ableAddBtns   = new ImageButton[] { AddEnumBtn, AddFuncBtn, AddSubBtn, AddTypeBtn };
                        unableAddBtns = new ImageButton[] { EventMouseOverBtn, EventMouseClickBtn };

                        if (slidedata.IsLoaded)
                        {
                            break;
                        }
                        pb.Value   = 0;
                        pb.Minimum = 0; pb.Maximum = pc.PowerPointPresentation.Slides[slidedata.SlideIndex].Shapes.Count;

                        Thread thr = new Thread(() =>
                        {
                            foreach (ppt.Shape shpe in pc.PowerPointPresentation.Slides[slidedata.SlideIndex].Shapes)
                            {
                                Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                                                      new Action(delegate
                                {
                                    pptComponent.IsEnabled = false;

                                    var inneritm = new ImageTreeViewItem(GetResourceIcon(shpe.Type),
                                                                         shpe.Name + " " + MsoShapeTypeToString(shpe.Type),
                                                                         new ShapeData(false, ShapeToCustomShapeData(slidedata.SlideIndex, shpe)));

                                    if (shpe.Type == Microsoft.Office.Core.MsoShapeType.msoGroup)
                                    {
                                        foreach (var childitem in pc.GetShapeItem(GroupShapesToShapes(shpe.GroupItems), true))
                                        {
                                            inneritm.Items.Add(childitem);
                                        }
                                    }
                                    pb.Value++;
                                    InfoTB.Text = $"슬라이드의 도형 정보를 읽어오는 중입니다. ({pb.Value}/{pb.Maximum})";

                                    itm.Items.Add(inneritm);
                                }));
                            }

                            Dispatcher.Invoke(new Action(() => {
                                InfoTB.Text      = $"슬라이드{slidedata.SlideIndex}의 {pb.Maximum}개의 도형 정보를 모두 읽어왔습니다. ";
                                itmdata.IsLoaded = true; pptComponent.IsEnabled = true;
                                pptComponent.Focus();
                            }));
                        });

                        thr.SetApartmentState(ApartmentState.STA);
                        thr.Start();


                        break;

                    default:
                        MessageBox.Show(itmdata.GetType().ToString());

                        break;
                    }
                }
                foreach (ImageButton btn in ableAddBtns)
                {
                    btn.IsEnabled = true;
                }

                foreach (ImageButton btn in unableAddBtns)
                {
                    btn.IsEnabled = false;
                }
            }
        }