internal static NSPopUpButton CreateFileFilterPopup (SelectFileDialogData data, NSSavePanel panel)
		{
			var filters = data.Filters;
			
			//no filtering
			if (filters == null || filters.Count == 0) {
				return null;
			}
			
			//filter, but no choice
			if (filters.Count == 1) {
				panel.ShouldEnableUrl = GetFileFilter (filters[0]);
				return null;
			}
			
			var popup = new NSPopUpButton (new RectangleF (0, 6, 200, 18), false);
			popup.SizeToFit ();
			var rect = popup.Frame;
			popup.Frame = new RectangleF (rect.X, rect.Y, 200, rect.Height);
			
			foreach (var filter in filters)
				popup.AddItem (filter.Name);
			
			var defaultIndex = data.DefaultFilter == null? 0 : Math.Max (0, filters.IndexOf (data.DefaultFilter));
			if (defaultIndex > 0) {
				popup.SelectItem (defaultIndex);
			}
			panel.ShouldEnableUrl = GetFileFilter (filters[defaultIndex]);
			
			popup.Activated += delegate {
				panel.ShouldEnableUrl = GetFileFilter (filters[popup.IndexOfSelectedItem]);
				panel.Display ();
			};
			
			return popup;
		}
Пример #2
0
        internal static NSPopUpButton CreateFileFilterPopup(SelectFileDialogData data, NSSavePanel panel)
        {
            var filters = data.Filters;

            //no filtering
            if (filters == null || filters.Count == 0)
            {
                return(null);
            }

            //filter, but no choice
            if (filters.Count == 1)
            {
                panel.ShouldEnableUrl = GetFileFilter(filters[0]);
                return(null);
            }

            var popup = new NSPopUpButton(new CGRect(0, 6, 200, 18), false);

            popup.SizeToFit();
            var rect = popup.Frame;

            popup.Frame = new CGRect(rect.X, rect.Y, 200, rect.Height);

            foreach (var filter in filters)
            {
                popup.AddItem(filter.Name);
            }

            var defaultIndex = data.DefaultFilter == null? 0 : Math.Max(0, filters.IndexOf(data.DefaultFilter));

            if (defaultIndex > 0)
            {
                popup.SelectItem(defaultIndex);
            }
            panel.ShouldEnableUrl = GetFileFilter(filters[defaultIndex]);

            popup.Activated += delegate {
                panel.ShouldEnableUrl = GetFileFilter(filters[(int)popup.IndexOfSelectedItem]);
                panel.Display();
            };

            return(popup);
        }
        private static NSPopUpButton CreateFileFilterPopup(IList <FileChooserFilter> filters, NSSavePanel panel)
        {
            //no filtering
            if (filters == null || filters.Count == 0)
            {
                return(null);
            }

            //filter, but no choice
            if (filters.Count == 1)
            {
                panel.ShouldEnableUrl = GetFileFilter(filters [0]);
                return(null);
            }

            NSPopUpButton popup = new NSPopUpButton(new RectangleF(0, 6, 200, 18), false);

            popup.SizeToFit();
            RectangleF rect = popup.Frame;

            popup.Frame = new RectangleF(rect.X, rect.Y, 200, rect.Height);

            foreach (var filter in filters)
            {
                popup.AddItem(filter.Name);
            }

            panel.ShouldEnableUrl = GetFileFilter(filters [0]);

            popup.Activated += delegate
            {
                panel.ShouldEnableUrl = GetFileFilter(filters [popup.IndexOfSelectedItem]);
                panel.Display();
            };

            return(popup);
        }