コード例 #1
0
        protected override void OnApplyTemplate()
        {
            this.gridView = this.GetTemplateChild("PART_GridView") as GridView;
            if (this.gridView == null)
            {
                throw new ArgumentException("Template must contains a GridView named PART_GridView");
            }

            this.gridView.Loaded += (s, e) =>
            {
                if (this.wrapGrid == null)
                {
                    this.wrapGrid = TreeHelper.FindVisualChild <WrapGrid>(this.gridView);
                    this.SetupWrapGrid();
                }

                // select SelectedItem between the ComboBox and the inner GridView
                this.gridView.SelectionChanged -= this.OnGridViewSelectionChanged;
                this.gridView.SelectedItem      = this.SelectedItem;
                this.gridView.SelectionChanged += this.OnGridViewSelectionChanged;

                this.gridView.ItemTemplateSelector = new GridViewPopupContentItemSelector
                {
                    Template           = this.ItemTemplate,
                    CreateItemTemplate = this.CreateItemTemplate
                };
            };

            base.OnApplyTemplate();
        }
コード例 #2
0
        private void ItemsPanel_Loaded(object sender, RoutedEventArgs e)
        {
            // Avoid walking the Visual Tree on each Size change.
            _itemsPanel = sender as WrapGrid;

            // Initialize itemsPanel.
            AdjustItemsPanel();
        }
コード例 #3
0
 public static void ReplacePreviewImage(WrapGrid area, PreviewArea preview, Picture pic)
 {
     using (Bitmap bitmap = new Bitmap(pic.Path))
     {
         preview.SetImage(bitmap);
         preview.SetPictureInfo(pic.Name.GetText(), bitmap.Width, bitmap.Height);
     }
     area.GetArea().SetFocus();
 }
コード例 #4
0
 public PreviewArea(WrapGrid area)
 {
     _wrapLink = area;
     SetSizePolicy(SizePolicy.Expand, SizePolicy.Expand);
     SetSpacing(0, 5);
     SetAlignment(ItemAlignment.Left, ItemAlignment.Top);
     SetPadding(0, 0, 0, 0);
     SetBackground(20, 20, 20);
     SetMinHeight(100);
 }
コード例 #5
0
        /// <summary>
        /// Invoked when the wrap grid is loaded.
        /// </summary>
        /// <param name="sender">The warp frip that is loaded.</param>
        /// <param name="e">Event data that describes the load event.</param>
        void WrapGrip_Loaded(object sender, RoutedEventArgs e)
        {
            // On desktop set the number of view items per row to 4
            WrapGrid wrapGrid = sender as WrapGrid;

            if (wrapGrid != null)
            {
                if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
                {
                    wrapGrid.MaximumRowsOrColumns = 4;
                }
            }
        }
コード例 #6
0
        public static String GetPicturePath(WrapGrid area, String name)
        {
            List <IBaseItem> list = area.GetListContent();

            foreach (IBaseItem item in list)
            {
                Picture tmp = item as Picture;
                if (tmp != null)
                {
                    if (tmp.Name.GetText().Equals(name))
                    {
                        return(tmp.Path);
                    }
                }
            }
            return(String.Empty);
        }
コード例 #7
0
    private static int InitGrid(IntPtr L)
    {
        int result;

        try
        {
            ToLua.CheckArgsCount(L, 1);
            WrapGrid wrapGrid = (WrapGrid)ToLua.CheckObject(L, 1, typeof(WrapGrid));
            wrapGrid.InitGrid();
            result = 0;
        }
        catch (Exception e)
        {
            result = LuaDLL.toluaL_exception(L, e, null);
        }
        return(result);
    }
コード例 #8
0
        // implement ActiveWindow class
        public override void InitWindow()
        {
            // add style for our Picture class to the current theme
            DefaultsService.GetDefaultTheme().AddDefaultCustomItemStyle(typeof(Picture), StyleFactory.GetPictureStyle());
            // slightly change style for WrapGrid
            StyleFactory.UpdateWrapGridStyle();

            // window attr
            SetParameters("MainWindow", "StylingExample", 800, 600);
            SetAntiAliasingQuality(MSAA.MSAA8x);

            // create WrapGrid as main layout
            WrapGrid layout = new WrapGrid(160, 120, Orientation.Horizontal);

            layout.SetStretch(true);

            // add WrapGrid to window
            AddItem(layout);

            // create and add 8 Picture items, the style for Picture class is automatically applied from the current theme
            layout.AddItems(
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.User, EmbeddedImageSize.Size64x64),
                            "User Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Add, EmbeddedImageSize.Size64x64),
                            "Add Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Eraser, EmbeddedImageSize.Size64x64),
                            "Eraser Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Filter, EmbeddedImageSize.Size64x64),
                            "Filter Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Gear, EmbeddedImageSize.Size64x64),
                            "Gear Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Home, EmbeddedImageSize.Size64x64),
                            "Home Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Refresh, EmbeddedImageSize.Size64x64),
                            "Refresh Image"),
                new Picture(DefaultsService.GetDefaultImage(EmbeddedImage.Pencil, EmbeddedImageSize.Size64x64),
                            "Pencil Image")
                );
        }
コード例 #9
0
        protected override void OnApplyTemplate()
        {
            this.gridView = this.GetTemplateChild("PART_GridView") as GridView;
            if (this.gridView == null)
            {
                throw new ArgumentException("Template must contains a GridView named PART_GridView");
            }

            this.gridView.Loaded += (s, e) =>
            {
                if (this.wrapGrid == null)
                {
                    this.wrapGrid = TreeHelper.FindVisualChild <WrapGrid>(this.gridView);
                    this.SetupWrapGrid();
                }

                // select SelectedItem between the ComboBox and the inner GridView
                this.gridView.SelectionChanged -= this.OnGridViewSelectionChanged;
                this.gridView.SelectedItem      = this.SelectedItem;
                this.gridView.SelectionChanged += this.OnGridViewSelectionChanged;
            };

            this.popup = this.GetTemplateChild("Popup") as Popup;
            if (this.popup == null)
            {
                throw new ArgumentException("Template must contains a GridView named Popup");
            }

            this.popup.Opened += this.OnPopupOpened;

            this.popupBorder = this.GetTemplateChild("PopupBorder") as Border;
            if (this.popupBorder == null)
            {
                throw new ArgumentException("Template must contains a Border named PopupBorder");
            }

            base.OnApplyTemplate();
        }
コード例 #10
0
        public override void InitWindow()
        {
            SetParameters(nameof(MainWindow), nameof(MainWindow), 1240, 750, false);
            IsCentered = true;

            var icon = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream("SimpleImageViewer.Resources.icon.png"));

            TitleBar title = new TitleBar("Simple Image Viewer - C#");

            title.SetIcon(icon, 24, 24);
            title.SetPadding(4, 0, 5, 0);

            Frame layout = new Frame();

            layout.SetMargin(0, title.GetHeight(), 0, 0);
            layout.SetPadding(0, 0, 0, 0);
            layout.SetSpacing(6);
            layout.SetBackground(60, 60, 60);

            VerticalStack vToolbar = new VerticalStack();

            vToolbar.SetWidthPolicy(SizePolicy.Fixed);
            vToolbar.SetWidth(30);
            vToolbar.SetBackground(32, 32, 32);
            vToolbar.SetPadding(0, 30, 0, 0);

            HorizontalSplitArea splitArea = new HorizontalSplitArea();

            splitArea.SetMargin(vToolbar.GetWidth(), 0, 0, 0);
            splitArea.SetSplitThickness(5);

            imageArea = new WrapGrid(160, 120, Orientation.Horizontal);
            imageArea.SetBackground(Color.Transparent);
            imageArea.SetPadding(15, 6, 6, 6);
            imageArea.GetArea().SetSpacing(6, 6);
            imageArea.VScrollBar.SetStyle(Style.GetSimpleVerticalScrollBarStyle());
            imageArea.SetStretch(true);

            previewArea = new PreviewArea(imageArea);

            side = new AlbumSideList(this, Side.Left, imageArea, previewArea);
            side.SetAreaSize(400);
            Album defaultAlbum = new Album("MyPictures", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + Path.DirectorySeparatorChar + "Pictures");

            defaultAlbum.OnDoubleClick += (sender) =>
            {
                side.Hide();
                Model.FillImageArea(this, imageArea, previewArea, (sender as Album).GetPath());
            };
            side.AddAlbum(defaultAlbum);

            ButtonCore btnSideAreaShow = new ButtonCore();

            btnSideAreaShow.SetStyle(CustomStyles.GetButtonStyle());

            ButtonCore btnOpenFolder = new ButtonCore();

            btnOpenFolder.SetStyle(CustomStyles.GetButtonStyle());

            ButtonCore btnAddAlbum = new ButtonCore();

            btnAddAlbum.SetStyle(CustomStyles.GetButtonStyle());

            //adding
            AddItems(
                title,
                layout
                );
            layout.AddItems(
                vToolbar,
                splitArea
                );

            splitArea.AssignTopItem(previewArea);
            splitArea.AssignBottomItem(imageArea);
            splitArea.SetSplitPosition(300);

            vToolbar.AddItems(
                btnSideAreaShow,
                btnOpenFolder,
                btnAddAlbum
                );

            btnSideAreaShow.AddItem(new ImageItem(DefaultsService.GetDefaultImage(EmbeddedImage.Lines, EmbeddedImageSize.Size32x32), false));
            btnOpenFolder.AddItem(new ImageItem(DefaultsService.GetDefaultImage(EmbeddedImage.Folder, EmbeddedImageSize.Size32x32), false));
            btnAddAlbum.AddItem(new ImageItem(DefaultsService.GetDefaultImage(EmbeddedImage.Import, EmbeddedImageSize.Size32x32), false));

            //events
            EventDrop += (sender, args) =>
            {
                if (side.IsHide)
                {
                    if (File.GetAttributes(args.Paths[0]).HasFlag(FileAttributes.Directory))
                    {
                        Model.FillImageArea(this, imageArea, previewArea, args.Paths[0]);
                    }
                }
                else
                {
                    foreach (String path in args.Paths)
                    {
                        if (File.GetAttributes(path).HasFlag(FileAttributes.Directory))
                        {
                            Album album = new Album(new DirectoryInfo(path).Name, path);
                            side.AddAlbum(album);
                            album.OnDoubleClick += (s) =>
                            {
                                side.Hide();
                                Model.FillImageArea(this, imageArea, previewArea, (s as Album).GetPath());
                            };
                        }
                    }
                }
            };

            btnSideAreaShow.EventMouseClick += (sender, args) =>
            {
                side.Show();
            };

            btnOpenFolder.EventMouseClick += (sender, args) =>
            {
                OpenEntryDialog browse = new OpenEntryDialog("Open Folder:", FileSystemEntryType.Directory, OpenDialogType.Open);
                browse.OnCloseDialog += () =>
                {
                    Model.FillImageArea(this, imageArea, previewArea, browse.GetResult());
                };
                browse.Show(this);
            };

            imageArea.EventScrollUp += (sender, args) =>
            {
                if (args.Mods.HasFlag(KeyMods.Control))
                {
                    int w = imageArea.GetCellWidth() + 8;
                    int h = imageArea.GetCellHeight() + 6;
                    if (w > 400)
                    {
                        return;
                    }
                    imageArea.SetCellSize(w, h);
                }
            };
            imageArea.EventScrollDown += (sender, args) =>
            {
                if (args.Mods.HasFlag(KeyMods.Control))
                {
                    int w = imageArea.GetCellWidth() - 8;
                    int h = imageArea.GetCellHeight() - 6;
                    if (w < 160)
                    {
                        return;
                    }
                    imageArea.SetCellSize(w, h);
                }
            };

            btnAddAlbum.EventMouseClick += (sender, args) =>
            {
                OpenEntryDialog browse = new OpenEntryDialog("Open Folder:", FileSystemEntryType.Directory, OpenDialogType.Open);
                browse.OnCloseDialog += () =>
                {
                    if (browse.GetResult() == null || browse.GetResult() == String.Empty)
                    {
                        return;
                    }

                    Album album = new Album(new DirectoryInfo(browse.GetResult()).Name, browse.GetResult());
                    side.AddAlbum(album);
                    album.OnDoubleClick += (s) =>
                    {
                        side.Hide();
                        Model.FillImageArea(this, imageArea, previewArea, (s as Album).GetPath());
                    };
                };
                browse.Show(this);
            };

            EventOnStart += () =>
            {
                Model.FillImageArea(this, imageArea, previewArea,
                                    Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + Path.DirectorySeparatorChar + "Pictures");
            }
        }
コード例 #11
0
        public static void FillImageArea(CoreWindow handler, WrapGrid area, PreviewArea preview, String directory)
        {
            if (directory == null || directory == String.Empty)
            {
                return;
            }

            LoadingScreen screen = new LoadingScreen();

            screen.Show(handler);

            Task thread = new Task(() =>
            {
                area.Clear();

                DirectoryInfo d  = new DirectoryInfo(directory);
                FileInfo[] files = d.GetFiles();

                List <Picture> list = new List <Picture>();
                int count           = files.Length;
                int index           = 0;

                Parallel.ForEach(files, (f) =>
                {
                    index++;
                    if (CheckExtensionFilter(f))
                    {
                        Bitmap img     = new Bitmap(f.FullName);
                        Bitmap dBitmap = DownScaleBitmap(img, 170, 100);
                        Picture pic    = new Picture(dBitmap, f.Name, f.FullName);

                        pic.EventMouseClick += (sender, args) =>
                        {
                            ReplacePreviewImage(area, preview, pic);
                        };
                        pic.EventKeyPress += (sender, args) =>
                        {
                            if (args.Key == KeyCode.Enter)
                            {
                                ReplacePreviewImage(area, preview, pic);
                            }
                        };
                        dBitmap.Dispose();
                        img.Dispose();
                        list.Add(pic);
                    }
                    float persent = ((float)index / (float)count) * 100.0f;
                    screen.SetValue((int)persent);
                });
                if (list.Count == 0)
                {
                    screen.SetToClose();
                    return;
                }

                list.Sort();
                foreach (var item in list)
                {
                    area.AddItem(item);
                }

                Random rnd    = new Random();
                int fileIndex = rnd.Next(0, list.Count);

                using (Bitmap img = new Bitmap(list[fileIndex].Path))
                {
                    preview.SetImage(img);
                    preview.SetPictureInfo(new FileInfo(list[fileIndex].Path).Name, img.Width, img.Height);
                }

                screen.SetToClose();
            });

            thread.Start();
        }
コード例 #12
0
ファイル: AlbumSideList.cs プロジェクト: spvessel/spacevil
 public AlbumSideList(CoreWindow handler, Side attachSide, WrapGrid area, PreviewArea preview) : base(handler, attachSide)
 {
     _area    = area;
     _preview = preview;
 }