Example #1
0
partial         void ChangeViewController(NSPopUpButton sender)
        {
            nint i = sender.IndexOfSelectedItem;
            var vc = viewControllers.GetItem<NSViewController>((nuint)i);
            Task.Run(()=> {;
                DisplayViewController(vc);
            });
        }
		public bool Run (AddFileDialogData data)
		{
			using (var panel = new NSOpenPanel {
				CanChooseDirectories = false,
				CanChooseFiles = true,
			}) {
				MacSelectFileDialogHandler.SetCommonPanelProperties (data, panel);
				
				var popup = new NSPopUpButton (new CGRect (0, 0, 200, 28), false);
				var dropdownBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
					{ new MDLabel (GettextCatalog.GetString ("Override build action:")), true },
					{ new MDAlignment (popup, true) { MinWidth = 200 }  }
				};
				
				var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup (data, panel);
				if (filterPopup != null) {
					dropdownBox.Layout ();
					var box = new MDBox (LayoutDirection.Vertical, 2, 2) {
						dropdownBox.View,
						filterPopup,
					};
					box.Layout ();
					panel.AccessoryView = box.View;
					if (box.View.Superview != null)
						box.Layout (box.View.Superview.Frame.Size);
				} else {
					dropdownBox.Layout ();
					panel.AccessoryView = dropdownBox.View;
				}
				
				popup.AddItem (GettextCatalog.GetString ("(Default)"));
				popup.Menu.AddItem (NSMenuItem.SeparatorItem);
				
				foreach (var b in data.BuildActions) {
					if (b == "--")
						popup.Menu.AddItem (NSMenuItem.SeparatorItem);
					else
						popup.AddItem (b);
				}
				
				if (panel.RunModal () == 0) {
					GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
					return false;
				}
				
				data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles (panel);
				
				var idx = popup.IndexOfSelectedItem - 2;
				if (idx >= 0)
					data.OverrideAction = data.BuildActions[idx];
				
				GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
				return true;
			}
		}
        /// <summary>
        /// This method is called when the user picks a different object to 
        /// receive messages using the PopUp menu
        /// </summary>
partial         void SwitchObject(NSPopUpButton sender)
        {
            // sender is the NSPopUpMenu containing Hello object choices.
            // We ask the sender for which menu item is selected and add one
            // to compensate for counting from zero.
            int which = sender.IndexOfSelectedItem + 1;

            // Based on which menu item is selected, we set the target (the receiving object)
            // of the helloButton to point to either hello1 or hello2.
            if (which == 1)
            {
                this.helloButton.Target = this.hello1;
            }
            else
            {
                this.helloButton.Target = this.hello2;
            }
        }
 public static string BindSelectedTag(this NSPopUpButton nsPopUpButton)
 => MvxMacPropertyBinding.NSPopUpButton_SelectedTag;
		public bool Run (OpenFileDialogData data)
		{
			NSSavePanel panel = null;
			
			try {
				if (data.Action == FileChooserAction.Save) {
					panel = new NSSavePanel ();
				} else {
					panel = new NSOpenPanel {
						CanChooseDirectories = (data.Action & FileChooserAction.FolderFlags) != 0,
						CanChooseFiles = (data.Action & FileChooserAction.FileFlags) != 0,
					};
				}

				MacSelectFileDialogHandler.SetCommonPanelProperties (data, panel);
				
				SelectEncodingPopUpButton encodingSelector = null;
				NSPopUpButton viewerSelector = null;
				NSButton closeSolutionButton = null;
				
				var box = new MDBox (LayoutDirection.Vertical, 2, 2);
				
				List<FileViewer> currentViewers = null;
				var labels = new List<MDAlignment> ();
				
				if ((data.Action & FileChooserAction.FileFlags) != 0) {
					var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup (data, panel);

					if (filterPopup != null) {
						var filterLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Show files:")), true);
						var filterBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ filterLabel },
							{ new MDAlignment (filterPopup, true) { MinWidth = 200 } }
						};
						labels.Add (filterLabel);
						box.Add (filterBox);
					}

					if (data.ShowEncodingSelector) {
						encodingSelector = new SelectEncodingPopUpButton (data.Action != FileChooserAction.Save);
						encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;
						
						var encodingLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Encoding:")), true);
						var encodingBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ encodingLabel },
							{ new MDAlignment (encodingSelector, true) { MinWidth = 200 }  }
						};
						labels.Add (encodingLabel);
						box.Add (encodingBox);
					}
					
					if (data.ShowViewerSelector && panel is NSOpenPanel) {
						currentViewers = new List<FileViewer> ();
						viewerSelector = new NSPopUpButton {
							Enabled = false,
						};

						if (encodingSelector != null || IdeApp.Workspace.IsOpen) {
							viewerSelector.Activated += delegate {
								var idx = viewerSelector.IndexOfSelectedItem;
								bool workbenchViewerSelected = idx == 0 && currentViewers [0] == null;
								if (encodingSelector != null)
									encodingSelector.Enabled = !workbenchViewerSelected;
								if (closeSolutionButton != null) {
									if (closeSolutionButton.Hidden == workbenchViewerSelected) {
										closeSolutionButton.Hidden = !workbenchViewerSelected;
										CenterAccessoryView (box);
									}
								}
							};
						}
						
						var viewSelLabel = new MDLabel (GettextCatalog.GetString ("Open with:"));
						var viewSelBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ viewSelLabel, true },
							{ new MDAlignment (viewerSelector, true) { MinWidth = 200 }  }
						};
						
						if (IdeApp.Workspace.IsOpen) {
							closeSolutionButton = new NSButton {
								Title = GettextCatalog.GetString ("Close current workspace"),
								Hidden = true,
								State = NSCellStateValue.On,
							};
							
							closeSolutionButton.SetButtonType (NSButtonType.Switch);
							closeSolutionButton.SizeToFit ();
							
							viewSelBox.Add (closeSolutionButton, true);
						}
						
						box.Add (viewSelBox);
					}
				}
				
				if (labels.Count > 0) {
					float w = labels.Max (l => l.MinWidth);
					foreach (var l in labels) {
						l.MinWidth = w;
						l.XAlign = LayoutAlign.Begin;
					}
				}
				
				if (box.Count > 0) {
					box.Layout ();
					panel.AccessoryView = box.View;
				}
				
				panel.SelectionDidChange += delegate {
					var selection = MacSelectFileDialogHandler.GetSelectedFiles (panel);
					bool slnViewerSelected = false;
					if (viewerSelector != null) {
						slnViewerSelected = FillViewers (currentViewers, viewerSelector, closeSolutionButton, selection);
						if (closeSolutionButton != null)
							closeSolutionButton.Hidden = !slnViewerSelected;
						CenterAccessoryView (box);
					} 
					if (encodingSelector != null)
						encodingSelector.Enabled = !slnViewerSelected;
				};

				if (panel.RunModal () == 0) {
					GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
					return false;
				}

				data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles (panel);
				
				if (encodingSelector != null)
					data.Encoding = encodingSelector.SelectedEncodingId > 0 ? Encoding.GetEncoding (encodingSelector.SelectedEncodingId) : null;
				
				if (viewerSelector != null ) {
					if (closeSolutionButton != null)
						data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
					data.SelectedViewer = viewerSelector.IndexOfSelectedItem >= 0 ?
						currentViewers[(int)viewerSelector.IndexOfSelectedItem] : null;
				}
				
				GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
			} catch (Exception ex) {
				LoggingService.LogInternalError ("Error in Open File dialog", ex);
			} finally {
				if (panel != null)
					panel.Dispose ();
			}
			return true;
		}
partial         void SwitchObject(NSPopUpButton sender);
                /// <summary>
                /// User chose a different picker style from the Picker Style popup.
                /// </summary>
                /// <param name="sender">
                /// A <see cref="NSPopUpButton"/>
                /// </param>
                partial void setPickerStyle (NSPopUpButton sender)
                {
			           int tag = (int)sender.SelectedCell.Tag;
                        
                        if (datePickerControl.DatePickerStyle != (NSDatePickerStyle)tag) {
                                CGRect windowFrame = this.Window.Frame;
                                CGRect boxFrame = outerBox.Frame;
                                
                                datePickerControl.Hidden = true;
                                
                                if ((NSDatePickerStyle)tag == NSDatePickerStyle.ClockAndCalendar) {
                                        
                                        // for this picker style, we need to grow the window to make room for it.
                                        CGSize size = windowFrame.Size;
                                        size.Height += shrinkGrowFacter;
                                        windowFrame.Size = size;
                                        CGPoint origin = windowFrame.Location;
                                        origin.Y -= shrinkGrowFacter;
                                        windowFrame.Location = origin;
                                        
                                        size = boxFrame.Size;
                                        size.Height += shrinkGrowFacter;
                                        boxFrame.Size = size;
                                        outerBox.Frame = boxFrame;
                                        
                                        this.Window.SetFrame (windowFrame, true, true);
                                        
                                        datePickerControl.DatePickerStyle = NSDatePickerStyle.ClockAndCalendar;
                                        
                                        // shows these last
                                        dateResult1.Hidden = false;
                                        dateResult2.Hidden = false;
                                        dateResult3.Hidden = false;
                                        dateResult4.Hidden = false;
                                } else {
                                        NSDatePickerStyle currentPickerStyle = datePickerControl.DatePickerStyle;
                                        
                                        // shrink the window only if the current style is "clock and calendar"
                                        if (currentPickerStyle == NSDatePickerStyle.ClockAndCalendar) {
                                                
                                                dateResult1.Hidden = true;
                                                dateResult2.Hidden = true;
                                                dateResult3.Hidden = true;
                                                dateResult4.Hidden = true;
                                                
                                                CGSize size = windowFrame.Size;
                                                size.Height -= shrinkGrowFacter;
                                                windowFrame.Size = size;
                                                CGPoint origin = windowFrame.Location;
                                                origin.Y += shrinkGrowFacter;
                                                windowFrame.Location = origin;
                                                
                                                size = boxFrame.Size;
                                                size.Height -= shrinkGrowFacter;
                                                boxFrame.Size = size;
                                                outerBox.Frame = boxFrame;
                                                
                                                this.Window.SetFrame (windowFrame, true, true);
                                        }
                                        
                                        // set our desired picker style
                                        setupDatePickerControl ((NSDatePickerStyle)tag);
                                        
                                }
                                
                                datePickerControl.Hidden = false;
                                
                                updateControls ();
                                // force update of all UI elements and the picker itself
                        }
                        
                }
		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;
		}
Example #9
0
 public string GetTitle(NSPopUpButton picker, nint row, nint component)
 {
     return(this.renderer.Element.Items [(int)row]);
 }
		public bool Run (OpenFileDialogData data)
		{
			NSSavePanel panel = null;
			
			try {
				bool directoryMode = data.Action != Gtk.FileChooserAction.Open
						&& data.Action != Gtk.FileChooserAction.Save;
				
				if (data.Action == Gtk.FileChooserAction.Save) {
					panel = new NSSavePanel ();
				} else {
					panel = new NSOpenPanel {
						CanChooseDirectories = directoryMode,
						CanChooseFiles = !directoryMode,
					};
				}
				
				MacSelectFileDialogHandler.SetCommonPanelProperties (data, panel);
				
				SelectEncodingPopUpButton encodingSelector = null;
				NSPopUpButton viewerSelector = null;
				NSButton closeSolutionButton = null;
				
				var box = new MDBox (LayoutDirection.Vertical, 2, 2);
				
				List<FileViewer> currentViewers = null;
				var labels = new List<MDAlignment> ();
				
				if (!directoryMode) {
					var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup (data, panel);

					if (filterPopup != null) {
						var filterLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Show files:")), true);
						var filterBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ filterLabel },
							{ new MDAlignment (filterPopup, true) { MinWidth = 200 } }
						};
						labels.Add (filterLabel);
						box.Add (filterBox);
					}

					if (data.ShowEncodingSelector) {
						encodingSelector = new SelectEncodingPopUpButton (data.Action != Gtk.FileChooserAction.Save);
						encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;
						
						var encodingLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Encoding:")), true);
						var encodingBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ encodingLabel },
							{ new MDAlignment (encodingSelector, true) { MinWidth = 200 }  }
						};
						labels.Add (encodingLabel);
						box.Add (encodingBox);
					}
					
					if (data.ShowViewerSelector && panel is NSOpenPanel) {
						currentViewers = new List<FileViewer> ();
						viewerSelector = new NSPopUpButton {
							Enabled = false,
						};
						
						if (encodingSelector != null) {
							viewerSelector.Activated += delegate {
								var idx = viewerSelector.IndexOfSelectedItem;
								encodingSelector.Enabled = ! (idx == 0 && currentViewers [0] == null);
							};
						}
						
						var viewSelLabel = new MDLabel (GettextCatalog.GetString ("Open with:"));
						var viewSelBox = new MDBox (LayoutDirection.Horizontal, 2, 0) {
							{ viewSelLabel, true },
							{ new MDAlignment (viewerSelector, true) { MinWidth = 200 }  }
						};
						
						if (IdeApp.Workspace.IsOpen) {
							closeSolutionButton = new NSButton {
								Title = GettextCatalog.GetString ("Close current workspace"),
								Hidden = true,
								State = NSCellStateValue.On,
							};
							
							closeSolutionButton.SetButtonType (NSButtonType.Switch);
							closeSolutionButton.SizeToFit ();
							
							viewSelBox.Add (closeSolutionButton, true);
						}
						
						box.Add (viewSelBox);
					}
				}
				
				if (labels.Count > 0) {
					float w = labels.Max (l => l.MinWidth);
					foreach (var l in labels) {
						l.MinWidth = w;
						l.XAlign = LayoutAlign.Begin;
					}
				}
				
				if (box.Count > 0) {
					box.Layout ();
					panel.AccessoryView = box.View;
				}
				
				panel.SelectionDidChange += delegate {
					var selection = MacSelectFileDialogHandler.GetSelectedFiles (panel);
					bool slnViewerSelected = false;
					if (viewerSelector != null) {
						FillViewers (currentViewers, viewerSelector, closeSolutionButton, selection);
						if (currentViewers.Count == 0 || currentViewers [0] != null) {
							if (closeSolutionButton != null)
								closeSolutionButton.Hidden = true;
							slnViewerSelected = false;
						} else {
							if (closeSolutionButton != null)
								closeSolutionButton.Hidden = false;
							slnViewerSelected = true;
						}
						box.Layout ();
						
						//re-center the accessory view in its parent, Cocoa does this for us initially and after
						//resizing the window, but we need to do it again after altering its layout
						var superFrame = box.View.Superview.Frame;
						var frame = box.View.Frame;
						//not sure why it's ceiling, but this matches the Cocoa layout
						frame.X = (float)Math.Ceiling ((superFrame.Width - frame.Width) / 2);
						frame.Y = (float)Math.Ceiling ((superFrame.Height - frame.Height) / 2);
						box.View.Frame = frame;
					} 
					if (encodingSelector != null)
						encodingSelector.Enabled = !slnViewerSelected;
				};

				if (panel.RunModal () == 0) {
					GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
					return false;
				}

				data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles (panel);
				
				if (encodingSelector != null)
					data.Encoding = encodingSelector.SelectedEncodingId > 0 ? Encoding.GetEncoding (encodingSelector.SelectedEncodingId) : null;
				
				if (viewerSelector != null ) {
					if (closeSolutionButton != null)
						data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
					data.SelectedViewer = viewerSelector.IndexOfSelectedItem >= 0 ?
						currentViewers[(int)viewerSelector.IndexOfSelectedItem] : null;
				}
				
				GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
			} catch (Exception ex) {
				LoggingService.LogInternalError ("Error in Open File dialog", ex);
			} finally {
				if (panel != null)
					panel.Dispose ();
			}
			return true;
		}
Example #11
0
        public bool Run(OpenFileDialogData data)
        {
            NSSavePanel panel = null;

            try {
                bool directoryMode = data.Action != Gtk.FileChooserAction.Open &&
                                     data.Action != Gtk.FileChooserAction.Save;

                if (data.Action == Gtk.FileChooserAction.Save)
                {
                    panel = new NSSavePanel();
                }
                else
                {
                    panel = new NSOpenPanel {
                        CanChooseDirectories = directoryMode,
                        CanChooseFiles       = !directoryMode,
                    };
                }

                MacSelectFileDialogHandler.SetCommonPanelProperties(data, panel);

                SelectEncodingPopUpButton encodingSelector = null;
                NSPopUpButton             viewerSelector   = null;
                NSButton closeSolutionButton = null;

                var box = new MDBox(LayoutDirection.Vertical, 2, 2);

                List <FileViewer> currentViewers = null;
                var labels = new List <MDAlignment> ();

                if (!directoryMode)
                {
                    var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup(data, panel);

                    if (filterPopup != null)
                    {
                        var filterLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Show files:")), true);
                        var filterBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { filterLabel },
                            { new MDAlignment(filterPopup, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(filterLabel);
                        box.Add(filterBox);
                    }

                    if (data.ShowEncodingSelector)
                    {
                        encodingSelector = new SelectEncodingPopUpButton(data.Action != Gtk.FileChooserAction.Save);
                        encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;

                        var encodingLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Encoding:")), true);
                        var encodingBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { encodingLabel },
                            { new MDAlignment(encodingSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(encodingLabel);
                        box.Add(encodingBox);
                    }

                    if (data.ShowViewerSelector && panel is NSOpenPanel)
                    {
                        currentViewers = new List <FileViewer> ();
                        viewerSelector = new NSPopUpButton {
                            Enabled = false,
                        };

                        if (encodingSelector != null)
                        {
                            viewerSelector.Activated += delegate {
                                var idx = viewerSelector.IndexOfSelectedItem;
                                encodingSelector.Enabled = !(idx == 0 && currentViewers [0] == null);
                            };
                        }

                        var viewSelLabel = new MDLabel(GettextCatalog.GetString("Open with:"));
                        var viewSelBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { viewSelLabel, true },
                            { new MDAlignment(viewerSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };

                        if (IdeApp.Workspace.IsOpen)
                        {
                            closeSolutionButton = new NSButton {
                                Title  = GettextCatalog.GetString("Close current workspace"),
                                Hidden = true,
                                State  = NSCellStateValue.On,
                            };

                            closeSolutionButton.SetButtonType(NSButtonType.Switch);
                            closeSolutionButton.SizeToFit();

                            viewSelBox.Add(closeSolutionButton, true);
                        }

                        box.Add(viewSelBox);
                    }
                }

                if (labels.Count > 0)
                {
                    float w = labels.Max(l => l.MinWidth);
                    foreach (var l in labels)
                    {
                        l.MinWidth = w;
                        l.XAlign   = LayoutAlign.Begin;
                    }
                }

                if (box.Count > 0)
                {
                    box.Layout();
                    panel.AccessoryView = box.View;
                }

                panel.SelectionDidChange += delegate {
                    var  selection         = MacSelectFileDialogHandler.GetSelectedFiles(panel);
                    bool slnViewerSelected = false;
                    if (viewerSelector != null)
                    {
                        FillViewers(currentViewers, viewerSelector, closeSolutionButton, selection);
                        if (currentViewers.Count == 0 || currentViewers [0] != null)
                        {
                            if (closeSolutionButton != null)
                            {
                                closeSolutionButton.Hidden = true;
                            }
                            slnViewerSelected = false;
                        }
                        else
                        {
                            if (closeSolutionButton != null)
                            {
                                closeSolutionButton.Hidden = false;
                            }
                            slnViewerSelected = true;
                        }
                        box.Layout();

                        //re-center the accessory view in its parent, Cocoa does this for us initially and after
                        //resizing the window, but we need to do it again after altering its layout
                        var superView = box.View.Superview;
                        if (superView != null)
                        {
                            var superFrame = superView.Frame;
                            var frame      = box.View.Frame;
                            //not sure why it's ceiling, but this matches the Cocoa layout
                            frame.X        = (float)Math.Ceiling((superFrame.Width - frame.Width) / 2);
                            frame.Y        = (float)Math.Ceiling((superFrame.Height - frame.Height) / 2);
                            box.View.Frame = frame;
                        }
                    }
                    if (encodingSelector != null)
                    {
                        encodingSelector.Enabled = !slnViewerSelected;
                    }
                };

                if (panel.RunModal() == 0)
                {
                    GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                    return(false);
                }

                data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles(panel);

                if (encodingSelector != null)
                {
                    data.Encoding = encodingSelector.SelectedEncodingId > 0 ? Encoding.GetEncoding(encodingSelector.SelectedEncodingId) : null;
                }

                if (viewerSelector != null)
                {
                    if (closeSolutionButton != null)
                    {
                        data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
                    }
                    data.SelectedViewer = viewerSelector.IndexOfSelectedItem >= 0 ?
                                          currentViewers[(int)viewerSelector.IndexOfSelectedItem] : null;
                }

                GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
            } catch (Exception ex) {
                LoggingService.LogInternalError("Error in Open File dialog", ex);
            } finally {
                if (panel != null)
                {
                    panel.Dispose();
                }
            }
            return(true);
        }
        public NSView CreateView(ITableRow tableRow, string columnIdentifier)
        {
            var cellValue = tableRow.GetValue(columnIdentifier);

            var cell = tableRow.GetCell(columnIdentifier);


            if (!string.IsNullOrEmpty(cell.Text))
            {
                cellValue.Text = cell.Text;
            }
            if (!string.IsNullOrEmpty(cell.Tooltip))
            {
                cellValue.Tooltip = cell.Tooltip;
            }

            switch (cell.TypeCell)
            {
            case TypeCell.TextField:

                var tfCell = (ITextFieldCell)cell;

                var tf = new NSTextField();
                tf.BackgroundColor = NSColor.Clear;
                tf.LineBreakMode   = NSLineBreakMode.TruncatingTail;
                tf.Bordered        = false;

                tf.Editable   = tfCell.Editable;
                tf.Selectable = tfCell.Selectable;

                tf.StringValue = cellValue.Text;
                tf.ToolTip     = cellValue.Tooltip;

                return(tf);

            case TypeCell.TextView:
                var txtvCell = (ITextViewCell)cell;

                var txtv = new NSTextView();

                txtv.BackgroundColor = NSColor.Clear;

                txtv.Editable   = txtvCell.Editable;
                txtv.Selectable = txtvCell.Selectable;

                txtv.Value   = cellValue.Text;
                txtv.ToolTip = cellValue.Tooltip;

                return(txtv);

            case TypeCell.Button:
                var btnCell = (IButtonCell)cell;

                //var btn = NSButton.CreateButton(btnCell.Text, btnCell.Activated);

                var btnView = new NSButton(new CGRect(0, 0, 80, 16));
                btnView.SetButtonType(NSButtonType.MomentaryPushIn);
                btnView.BezelStyle = NSBezelStyle.Rounded;
                btnView.Bordered   = true;

                btnView.Title      = btnCell.Text;
                btnView.ToolTip    = btnCell.Tooltip;
                btnView.Enabled    = btnCell.Enabled;
                btnView.Activated += (sender, e) =>
                                     btnCell.Activated();

                //btnView.Image =

                return(btnView);

            case TypeCell.PopUp:
                var btnPCell = (IPopUpButtonCell)cell;

                //var btnP = NSPopUpButton.CreateButton(btnPCell.Text, btnPCell.Activated);

                var btnPView = new NSPopUpButton(new CGRect(0, 0, 80, 16), true);
                btnPView.SetButtonType(NSButtonType.MomentaryPushIn);
                btnPView.BezelStyle = NSBezelStyle.Rounded;
                btnPView.PullsDown  = false;
                btnPView.ToolTip    = btnPCell.Tooltip;
                btnPView.Enabled    = btnPCell.Enabled;

                btnPView.Menu.RemoveAllItems();

                foreach (var title in btnPCell.MenuTitles)
                {
                    btnPView.AddItem(title);
                }

                btnPView.Activated += (sender, e) => {
                    btnPCell.IndexOfSelectedItem = (int)btnPView.IndexOfSelectedItem;

                    if (btnPCell.SelectItem != null)
                    {
                        btnPCell.SelectItem((int)btnPView.IndexOfSelectedItem);
                    }
                    else
                    {
                        btnPCell.Activated();
                    }
                };

                return(btnPView);

            case TypeCell.Checkbox:
                var ckbCell = (ICheckboxCell)cell;

                var tblCellView = new NSTableCellView();

                tblCellView.TextField = new NSTextField(new CGRect(20, 0, 400, 16));
                //tblCellView.Identifier = CellIdentifier;
                tblCellView.TextField.BackgroundColor = NSColor.Clear;
                tblCellView.TextField.Bordered        = false;

                tblCellView.TextField.Editable   = false;
                tblCellView.TextField.Selectable = false;

                tblCellView.TextField.StringValue = cellValue.Text;
                tblCellView.TextField.ToolTip     = cellValue.Tooltip;

                tblCellView.AddSubview(tblCellView.TextField);

                var checkBox = new NSButton(new CGRect(5, 0, 16, 16));
                checkBox.SetButtonType(NSButtonType.Switch);
                checkBox.Enabled = ckbCell.Enabled;

                checkBox.AllowsMixedState = ckbCell.AllowMixedState;

                if (ckbCell.State == null)
                {
                    checkBox.State = NSCellStateValue.Mixed;
                }
                else if (ckbCell.State == true)
                {
                    checkBox.State = NSCellStateValue.On;
                }
                else if (ckbCell.State == false)
                {
                    checkBox.State = NSCellStateValue.Off;
                }

                checkBox.Enabled = ckbCell.Enabled;

                checkBox.Activated += (sender, e) => {
                    var  ckb   = (NSButton)sender;
                    bool?state = null;

                    if (ckb.State == NSCellStateValue.Mixed)
                    {
                        state = null;
                    }
                    else if (ckb.State == NSCellStateValue.On)
                    {
                        state = true;
                    }
                    else if (ckb.State == NSCellStateValue.Off)
                    {
                        state = false;
                    }

                    ckbCell.State = state;

                    if (ckbCell.StateChanged != null)
                    {
                        ckbCell.StateChanged(state);
                    }
                    else
                    {
                        ckbCell.Activated();
                    }
                };

                tblCellView.AddSubview(checkBox);

                return(tblCellView);
            }


            throw new System.NotImplementedException("Do not have implementation");
        }
Example #13
0
        public bool Run(OpenFileDialogData data)
        {
            NSSavePanel panel = null;

            try {
                if (data.Action == FileChooserAction.Save)
                {
                    panel = new NSSavePanel();
                }
                else
                {
                    panel = new NSOpenPanel {
                        CanChooseDirectories = (data.Action & FileChooserAction.FolderFlags) != 0,
                        CanChooseFiles       = (data.Action & FileChooserAction.FileFlags) != 0,
                    };
                }
                bool pathAlreadySet = false;
                panel.DidChangeToDirectory += (sender, e) => {
                    var directoryPath = e.NewDirectoryUrl?.AbsoluteString;
                    if (string.IsNullOrEmpty(directoryPath))
                    {
                        return;
                    }
                    var selectedPath = data.OnDirectoryChanged(this, directoryPath);
                    if (selectedPath.IsNull)
                    {
                        return;
                    }
                    data.SelectedFiles = new FilePath [] { selectedPath };
                    pathAlreadySet     = true;

                    // We need to call Cancel on 1ms delay so it's executed after DidChangeToDirectory event handler is finished
                    // this is needed because it's possible that DidChangeToDirectory event is executed while dialog is opening
                    // in that case calling .Cancel() leaves dialog in weird state...
                    // Fun fact: DidChangeToDirectory event is called from Open on 10.12 but not on 10.13
                    System.Threading.Tasks.Task.Delay(1).ContinueWith(delegate { panel.Cancel(panel); }, Runtime.MainTaskScheduler);
                };
                MacSelectFileDialogHandler.SetCommonPanelProperties(data, panel);

                SelectEncodingPopUpButton encodingSelector = null;
                NSPopUpButton             viewerSelector   = null;
                NSButton closeSolutionButton = null;

                var box = new MDBox(LayoutDirection.Vertical, 2, 2);

                List <FileViewer> currentViewers = null;
                var labels = new List <MDAlignment> ();

                if ((data.Action & FileChooserAction.FileFlags) != 0)
                {
                    var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup(data, panel);

                    if (filterPopup != null)
                    {
                        var filterLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Show files:")), true);
                        var filterBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { filterLabel },
                            { new MDAlignment(filterPopup, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(filterLabel);
                        box.Add(filterBox);
                    }

                    if (data.ShowEncodingSelector)
                    {
                        encodingSelector = new SelectEncodingPopUpButton(data.Action != FileChooserAction.Save);
                        encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;

                        var encodingLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Encoding:")), true);
                        var encodingBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { encodingLabel },
                            { new MDAlignment(encodingSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(encodingLabel);
                        box.Add(encodingBox);
                    }

                    if (data.ShowViewerSelector && panel is NSOpenPanel)
                    {
                        currentViewers = new List <FileViewer> ();
                        viewerSelector = new NSPopUpButton {
                            Enabled = false,
                        };

                        if (encodingSelector != null || IdeApp.Workspace.IsOpen)
                        {
                            viewerSelector.Activated += delegate {
                                var  idx = viewerSelector.IndexOfSelectedItem;
                                bool workbenchViewerSelected = idx == 0 && currentViewers [0] == null;
                                if (encodingSelector != null)
                                {
                                    encodingSelector.Enabled = !workbenchViewerSelected;
                                }
                                if (closeSolutionButton != null)
                                {
                                    if (closeSolutionButton.Hidden == workbenchViewerSelected)
                                    {
                                        closeSolutionButton.Hidden = !workbenchViewerSelected;
                                        CenterAccessoryView(box);
                                    }
                                }
                            };
                        }

                        var viewSelLabel = new MDLabel(GettextCatalog.GetString("Open with:"));
                        var viewSelBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { viewSelLabel, true },
                            { new MDAlignment(viewerSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };

                        if (IdeApp.Workspace.IsOpen)
                        {
                            closeSolutionButton = new NSButton {
                                Title  = GettextCatalog.GetString("Close current workspace"),
                                Hidden = true,
                                State  = NSCellStateValue.On,
                            };

                            closeSolutionButton.SetButtonType(NSButtonType.Switch);
                            closeSolutionButton.SizeToFit();

                            viewSelBox.Add(closeSolutionButton, true);
                        }

                        box.Add(viewSelBox);
                    }
                }

                if (labels.Count > 0)
                {
                    float w = labels.Max(l => l.MinWidth);
                    foreach (var l in labels)
                    {
                        l.MinWidth = w;
                        l.XAlign   = LayoutAlign.Begin;
                    }
                }

                if (box.Count > 0)
                {
                    box.Layout();
                    panel.AccessoryView = box.View;
                }

                panel.SelectionDidChange += delegate {
                    var  selection         = MacSelectFileDialogHandler.GetSelectedFiles(panel);
                    bool slnViewerSelected = false;
                    if (viewerSelector != null)
                    {
                        slnViewerSelected = FillViewers(currentViewers, viewerSelector, closeSolutionButton, selection);
                        if (closeSolutionButton != null)
                        {
                            closeSolutionButton.Hidden = !slnViewerSelected;
                        }
                        CenterAccessoryView(box);
                    }
                    if (encodingSelector != null)
                    {
                        encodingSelector.Enabled = !slnViewerSelected;
                    }
                };

                if (panel.RunModal() == 0 && !pathAlreadySet)
                {
                    GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                    return(false);
                }
                if (!pathAlreadySet)
                {
                    data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles(panel);
                }

                if (encodingSelector != null)
                {
                    data.Encoding = encodingSelector.SelectedEncodingId > 0 ? Encoding.GetEncoding(encodingSelector.SelectedEncodingId) : null;
                }

                if (viewerSelector != null)
                {
                    if (closeSolutionButton != null)
                    {
                        data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
                    }
                    data.SelectedViewer = viewerSelector.IndexOfSelectedItem >= 0 ?
                                          currentViewers[(int)viewerSelector.IndexOfSelectedItem] : null;
                }

                GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
            } catch (Exception ex) {
                LoggingService.LogInternalError("Error in Open File dialog", ex);
            } finally {
                if (panel != null)
                {
                    panel.Dispose();
                }
            }
            return(true);
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            #region first two buttons

            // add the image menu item back to the first menu item
            NSMenuItem menuItem = new NSMenuItem("", new Selector(""), "");

            menuItem.Image = NSImage.ImageNamed("moof.png");
            buttonMenu.InsertItem(menuItem, 0);

            nibBasedPopUpDown.Menu  = buttonMenu;
            nibBasedPopUpRight.Menu = buttonMenu;

            // create the pull down button pointing DOWN
            CGRect buttonFrame = placeHolder1.Frame;
            codeBasedPopUpDown = new NSPopUpButton(buttonFrame, true);

            ((NSPopUpButtonCell)codeBasedPopUpDown.Cell).ArrowPosition = NSPopUpArrowPosition.Bottom;
            ((NSPopUpButtonCell)codeBasedPopUpDown.Cell).BezelStyle    = NSBezelStyle.ThickSquare;
            codeBasedPopUpDown.Menu = buttonMenu;
            popupBox.AddSubview(codeBasedPopUpDown);
            placeHolder1.RemoveFromSuperview();

            // create the pull down button pointing RIGHT
            buttonFrame         = placeHolder2.Frame;
            codeBasedPopUpRight = new NSPopUpButton(buttonFrame, true);

            ((NSPopUpButtonCell)codeBasedPopUpRight.Cell).ArrowPosition = NSPopUpArrowPosition.Bottom;
            ((NSPopUpButtonCell)codeBasedPopUpRight.Cell).PreferredEdge = NSRectEdge.MaxXEdge;
            ((NSPopUpButtonCell)codeBasedPopUpRight.Cell).BezelStyle    = NSBezelStyle.Circular;
            codeBasedPopUpRight.Menu = buttonMenu;
            ((NSPopUpButtonCell)codeBasedPopUpRight.Cell).HighlightsBy = (nint)(int)NSCellStyleMask.ChangeGrayCell;
            popupBox.AddSubview(codeBasedPopUpRight);
            placeHolder2.RemoveFromSuperview();

            #endregion

            #region second two buttons

            // create the rounded button
            buttonFrame = placeHolder3.Frame;
            // note: this button we want alternate title and image, so we need to call this:
            codeBasedButtonRound = new NSButton(buttonFrame)
            {
                Title          = "NSButton",
                AlternateTitle = "(pressed)",
                Image          = NSImage.ImageNamed("moof.png"),
                AlternateImage = NSImage.ImageNamed("moof2.png"),
                BezelStyle     = NSBezelStyle.RegularSquare,
                ImagePosition  = NSCellImagePosition.ImageLeft,
                Font           = NSFont.SystemFontOfSize(NSFont.SmallSystemFontSize),
                Sound          = NSSound.FromName("Pop"),
            };
            // Two choices, either use the .NET event system:
            //    foo.Activated += delegate {..} or += SomeMethod
            //
            // Or you can use the Target = this Action = new Selector ("buttonAction:")
            // pattern
            codeBasedButtonRound.Activated += delegate {
                buttonAction(null);
            };
            codeBasedButtonRound.SetButtonType(NSButtonType.MomentaryChange);
            codeBasedButtonRound.Cell.Alignment = NSTextAlignment.Left;
            buttonBox.AddSubview(codeBasedButtonRound);
            placeHolder3.RemoveFromSuperview();                                 // we are done with the place holder, remove it from the window

            // create the square button
            buttonFrame           = placeHolder4.Frame;
            codeBasedButtonSquare = new NSButton(buttonFrame)
            {
                Title         = "NSButton",
                BezelStyle    = NSBezelStyle.ShadowlessSquare,
                ImagePosition = NSCellImagePosition.ImageLeft,
                Image         = NSImage.ImageNamed("moof.png"),
                Font          = NSFont.SystemFontOfSize(NSFont.SmallSystemFontSize),
                Sound         = NSSound.FromName("Pop"),
            };
            codeBasedButtonSquare.Activated     += delegate { buttonAction(null); };
            codeBasedButtonSquare.Cell.Alignment = NSTextAlignment.Left;
            buttonBox.AddSubview(codeBasedButtonSquare);
            placeHolder4.RemoveFromSuperview();                                 // we are done with the place holder, remove it from the window

            #endregion

            #region segmented control

            buttonFrame             = placeHolder5.Frame;
            codeBasedSegmentControl = new NSSegmentedControl(buttonFrame)
            {
                SegmentCount = 3,
                Target       = this,
                Action       = new Selector("segmentAction:")
            };

            codeBasedSegmentControl.SetWidth(nibBasedSegControl.GetWidth(0), 0);
            codeBasedSegmentControl.SetWidth(nibBasedSegControl.GetWidth(1), 1);
            codeBasedSegmentControl.SetWidth(nibBasedSegControl.GetWidth(2), 2);
            codeBasedSegmentControl.SetLabel("One", 0);
            codeBasedSegmentControl.SetLabel("Two", 1);
            codeBasedSegmentControl.SetLabel("Three", 2);
            segmentBox.AddSubview(codeBasedSegmentControl);
            placeHolder5.RemoveFromSuperview();

            // use a menu to the first segment (applied to both nib-based and code-based)
            codeBasedSegmentControl.SetMenu(buttonMenu, 0);
            nibBasedSegControl.SetMenu(buttonMenu, 0);

            // add icons to each segment (applied to both nib-based and code-based)
            NSImage segmentIcon1 = NSWorkspace.SharedWorkspace.IconForFileType(NSFileTypeForHFSTypeCode.ComputerIcon);
            segmentIcon1.Size = new CGSize(16, 16);
            nibBasedSegControl.SetImage(segmentIcon1, 0);
            codeBasedSegmentControl.SetImage(segmentIcon1, 0);

            NSImage segmentIcon2 = NSWorkspace.SharedWorkspace.IconForFileType(NSFileTypeForHFSTypeCode.DesktopIcon);
            segmentIcon2.Size = new CGSize(16, 16);
            nibBasedSegControl.SetImage(segmentIcon2, 1);
            codeBasedSegmentControl.SetImage(segmentIcon2, 1);

            NSImage segmentIcon3 = NSWorkspace.SharedWorkspace.IconForFileType(NSFileTypeForHFSTypeCode.FinderIcon);
            segmentIcon3.Size = new CGSize(16, 16);
            nibBasedSegControl.SetImage(segmentIcon3, 2);
            codeBasedSegmentControl.SetImage(segmentIcon3, 2);

            #endregion

            #region level indicator

            buttonFrame        = placeHolder8.Frame;
            codeBasedIndicator = new NSLevelIndicator(buttonFrame)
            {
                MaxValue           = 10,
                MajorTickMarkCount = 4,
                TickMarkCount      = 7,
                WarningValue       = 5,
                CriticalValue      = 8,
                Action             = new Selector("levelAction:")
            };
            codeBasedIndicator.Cell.LevelIndicatorStyle = NSLevelIndicatorStyle.DiscreteCapacity;
            indicatorBox.AddSubview(codeBasedIndicator);
            placeHolder8.RemoveFromSuperview();


            #endregion
        }
        public DirectoryController(string path)
            : base(NSObject.AllocAndInitInstance("DirectoryController"))
        {
            m_boss = ObjectModel.Create("DirectoryEditor");
            m_path = path;
            m_dirStyler = new DirectoryItemStyler(path);

            Unused.Value = NSBundle.loadNibNamed_owner(NSString.Create("directory-editor"), this);
            m_table = new IBOutlet<NSOutlineView>(this, "table").Value;
            m_targets = new IBOutlet<NSPopUpButton>(this, "targets").Value;
            m_prefs = new IBOutlet<DirPrefsController>(this, "prefsController");

            m_name = System.IO.Path.GetFileName(path);
            window().setTitle(NSString.Create(m_name));
            Unused.Value = window().setFrameAutosaveName(NSString.Create(window().title().ToString() + " editor"));
            window().makeKeyAndOrderFront(this);

            m_table.setDoubleAction("doubleClicked:");
            m_table.setTarget(this);

            var wind = m_boss.Get<IWindow>();
            wind.Window = window();

            m_builder = new GenericBuilder(path);

            m_targets.removeAllItems();
            if (m_builder.CanBuild)
            {
                var handler = m_boss.Get<IMenuHandler>();
                handler.Register(this, 50, this.DoBuild, this.DoBuildEnabled);
                handler.Register(this, 51, this.DoBuildVariables, this.DoHaveBuilder);
                handler.Register(this, 52, this.DoBuildFlags, this.DoHaveBuilder);
                handler.Register(this, 599, () => m_builder.Cancel(), this.DoCancelEnabled);
                handler.Register(this, 1000, this.DoShowPrefs);

                DoLoadPrefs(path);
                Broadcaster.Register("global ignores changed", this);
                Broadcaster.Register("finished building", this);
                DoUpdateTargets(string.Empty, null);
            }
            else
                DoLoadPrefs(path);

            m_root = new FolderItem(m_path, m_dirStyler, this);
            m_table.reloadData();

            m_watcher = DoCreateWatcher(path);
            if (m_watcher != null)
                m_watcher.Changed += this.DoDirChanged;

            //			m_watcher = new FileSystemWatcher(path);
            //			m_watcher.IncludeSubdirectories = true;
            //			m_watcher.Created += this.DoDirChanged;
            //			m_watcher.Deleted += this.DoDirChanged;
            //			m_watcher.Renamed += this.DoDirChanged;

            foreach (IOpened open in m_boss.GetRepeated<IOpened>())
            {
                open.Opened();
            }
            Broadcaster.Invoke("opened directory", m_boss);

            ActiveObjects.Add(this);
        }
 public void targetChanged(NSPopUpButton sender)
 {
     m_builder.Target = sender.titleOfSelectedItem().ToString();
     DoSavePrefs();
 }
Example #17
0
        public void UpdateChooser(string [] folders)
        {
            using (var a = new NSAutoreleasePool())
            {
                if (folders == null)
                {
                    folders = Controller.Folders;
                }

                if (this.popup_button != null)
                {
                    this.popup_button.RemoveFromSuperview();
                }

                this.popup_button = new NSPopUpButton()
                {
                    Frame     = new RectangleF(480 - 156 - 8, 640 - 31 - 24, 156, 26),
                    PullsDown = false
                };

                this.popup_button.Cell.ControlSize = NSControlSize.Small;
                this.popup_button.Font             = NSFontManager.SharedFontManager.FontWithFamily
                                                         ("Lucida Grande", NSFontTraitMask.Condensed, 0, NSFont.SmallSystemFontSize);

                this.popup_button.AddItem("Summary");
                this.popup_button.Menu.AddItem(NSMenuItem.SeparatorItem);

                int row = 2;
                foreach (string folder in folders)
                {
                    this.popup_button.AddItem(folder);

                    if (folder.Equals(Controller.SelectedFolder))
                    {
                        this.popup_button.SelectItem(row);
                    }

                    row++;
                }

                this.popup_button.AddItems(folders);

                this.popup_button.Activated += delegate {
                    using (var b = new NSAutoreleasePool())
                    {
                        InvokeOnMainThread(delegate {
                            if (this.popup_button.IndexOfSelectedItem == 0)
                            {
                                Controller.SelectedFolder = null;
                            }
                            else
                            {
                                Controller.SelectedFolder = this.popup_button.SelectedItem.Title;
                            }
                        });
                    }
                };

                ContentView.AddSubview(this.popup_button);
            }
        }
        public bool Run(OpenFileDialogData data)
        {
            NSSavePanel panel = null;

            try {
                bool directoryMode = data.Action != Gtk.FileChooserAction.Open &&
                                     data.Action != Gtk.FileChooserAction.Save;

                if (data.Action == Gtk.FileChooserAction.Save)
                {
                    panel = new NSSavePanel();
                }
                else
                {
                    panel = new NSOpenPanel()
                    {
                        CanChooseDirectories = directoryMode,
                        CanChooseFiles       = !directoryMode,
                    };
                }

                MacSelectFileDialogHandler.SetCommonPanelProperties(data, panel);

                SelectEncodingPopUpButton encodingSelector = null;
                NSPopUpButton             viewerSelector   = null;
                NSButton closeSolutionButton = null;

                var box = new MDBox(LayoutDirection.Vertical, 2, 2);

                List <FileViewer>  currentViewers = null;
                List <MDAlignment> labels         = new List <MDAlignment> ();

                if (!directoryMode)
                {
                    var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup(data, panel);

                    var filterLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Show files:")), true);
                    var filterBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                    {
                        { filterLabel },
                        { new MDAlignment(filterPopup, true)
                          {
                              MinWidth = 200
                          } }
                    };
                    labels.Add(filterLabel);
                    box.Add(filterBox);

                    if (data.ShowEncodingSelector)
                    {
                        encodingSelector = new SelectEncodingPopUpButton(data.Action != Gtk.FileChooserAction.Save);
                        encodingSelector.SelectedEncodingId = data.Encoding;

                        var encodingLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Encoding:")), true);
                        var encodingBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { encodingLabel },
                            { new MDAlignment(encodingSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(encodingLabel);
                        box.Add(encodingBox);
                    }

                    if (data.ShowViewerSelector && panel is NSOpenPanel)
                    {
                        currentViewers = new List <FileViewer> ();
                        viewerSelector = new NSPopUpButton()
                        {
                            Enabled = false,
                        };

                        if (encodingSelector != null)
                        {
                            viewerSelector.Activated += delegate {
                                var idx = viewerSelector.IndexOfSelectedItem;
                                encodingSelector.Enabled = !(idx == 0 && currentViewers[0] == null);
                            };
                        }

                        var viewSelLabel = new MDLabel(GettextCatalog.GetString("Open with:"));
                        var viewSelBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { viewSelLabel, true },
                            { new MDAlignment(viewerSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };

                        if (IdeApp.Workspace.IsOpen)
                        {
                            closeSolutionButton = new NSButton()
                            {
                                Title  = GettextCatalog.GetString("Close current workspace"),
                                Hidden = true,
                                State  = NSCellStateValue.On,
                            };

                            closeSolutionButton.SetButtonType(NSButtonType.Switch);
                            closeSolutionButton.SizeToFit();

                            viewSelBox.Add(closeSolutionButton, true);
                        }

                        box.Add(viewSelBox);
                    }
                }

                if (labels.Count > 0)
                {
                    float w = labels.Max(l => l.MinWidth);
                    foreach (var l in labels)
                    {
                        l.MinWidth = w;
                        l.XAlign   = LayoutAlign.Begin;
                    }
                }

                if (box.Count > 0)
                {
                    box.Layout();
                    panel.AccessoryView = box.View;
                    box.Layout(box.View.Superview.Frame.Size);
                }

                panel.SelectionDidChange += delegate(object sender, EventArgs e) {
                    var  selection         = MacSelectFileDialogHandler.GetSelectedFiles(panel);
                    bool slnViewerSelected = false;
                    if (viewerSelector != null)
                    {
                        FillViewers(currentViewers, viewerSelector, selection);
                        if (currentViewers.Count == 0 || currentViewers[0] != null)
                        {
                            if (closeSolutionButton != null)
                            {
                                closeSolutionButton.Hidden = true;
                            }
                            slnViewerSelected = false;
                        }
                        else
                        {
                            if (closeSolutionButton != null)
                            {
                                closeSolutionButton.Hidden = false;
                            }
                            slnViewerSelected = true;
                        }
                        box.Layout(box.View.Superview.Frame.Size);
                    }
                    if (encodingSelector != null)
                    {
                        encodingSelector.Enabled = !slnViewerSelected;
                    }
                };

                try {
                    var action = MacSelectFileDialogHandler.RunPanel(data, panel);
                    if (!action)
                    {
                        GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                        return(false);
                    }
                } catch (Exception ex) {
                    System.Console.WriteLine(ex);
                    throw;
                }

                data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles(panel);

                if (encodingSelector != null)
                {
                    data.Encoding = encodingSelector.SelectedEncodingId;
                }

                if (viewerSelector != null)
                {
                    if (closeSolutionButton != null)
                    {
                        data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
                    }
                    data.SelectedViewer = currentViewers[viewerSelector.IndexOfSelectedItem];
                }

                GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                return(true);
            } finally {
                if (panel != null)
                {
                    panel.Dispose();
                }
            }
        }
Example #19
0
 public static void SetSelected(NSPopUpButton control, string value)
 {
     control.SelectItem(value);
 }
        partial void CashflowIDChosen(NSPopUpButton sender)
        {
            clsCashflow cf = new clsCashflow(Int32.Parse(CashflowIDPopUp.SelectedItem.Title));

            this.dateChanger.DateValue = (NSDate)(cf.PayDate().AddDays(7).ToUniversalTime());
        }
Example #21
0
        protected override IEnumerable <(NSControl control, string text)> OnGetAccessoryBoxControls(OpenFileDialogData data, NSSavePanel panel, out SaveState saveState)
        {
            List <(NSControl, string)> controls         = new List <(NSControl, string)> ();
            SelectEncodingPopUpButton  encodingSelector = null;
            NSPopUpButton     viewerSelector            = null;
            NSButton          closeSolutionButton       = null;
            List <FileViewer> currentViewers            = null;

            if (data.ShowEncodingSelector)
            {
                encodingSelector = new SelectEncodingPopUpButton(data.Action != FileChooserAction.Save)
                {
                    SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0
                };

                controls.Add((encodingSelector, GettextCatalog.GetString("Encoding:")));
            }

            if (data.ShowViewerSelector && panel is NSOpenPanel)
            {
                currentViewers = new List <FileViewer> ();
                viewerSelector = new NSPopUpButton {
                    Enabled = false,
                };

                if (encodingSelector != null || IdeApp.Workspace.IsOpen)
                {
                    viewerSelector.Activated += delegate {
                        var  idx = viewerSelector.IndexOfSelectedItem;
                        bool workbenchViewerSelected = idx == 0 && currentViewers [0] == null;
                        if (encodingSelector != null)
                        {
                            encodingSelector.Enabled = !workbenchViewerSelected;
                        }
                        if (closeSolutionButton != null)
                        {
                            if (closeSolutionButton.Enabled != workbenchViewerSelected)
                            {
                                closeSolutionButton.Enabled = workbenchViewerSelected;
                                closeSolutionButton.State   = workbenchViewerSelected ? NSCellStateValue.On : NSCellStateValue.Off;
                            }
                        }
                    };
                }

                if (IdeApp.Workspace.IsOpen)
                {
                    closeSolutionButton = new NSButton {
                        Title   = GettextCatalog.GetString("Close current workspace"),
                        Enabled = false,
                        State   = NSCellStateValue.Off,
                    };

                    closeSolutionButton.SetButtonType(NSButtonType.Switch);
                    closeSolutionButton.SizeToFit();

                    controls.Add((closeSolutionButton, string.Empty));
                }

                controls.Add((viewerSelector, GettextCatalog.GetString("Open With:")));
            }
            saveState = new SaveState(encodingSelector, viewerSelector, closeSolutionButton, currentViewers);

            return(controls);
        }
Example #22
0
 partial void ChangeViewController(NSPopUpButton sender);
Example #23
0
partial         void ChangeViewController(NSPopUpButton sender);
Example #24
0
 partial void TestProjectDropdownChanged(NSPopUpButton sender)
 {
     presenter.TestProjectSelectionChanged();
     SelectedTestProjectChanged?.Invoke();
 }
Example #25
0
        public EventLog()
        {
            Title    = "Recent Changes";
            Delegate = new SparkleEventsDelegate();

            int min_width  = 480;
            int min_height = 640;
            int height     = (int)(NSScreen.MainScreen.Frame.Height * 0.85);

            float x = (float)(NSScreen.MainScreen.Frame.Width * 0.61);
            float y = (float)(NSScreen.MainScreen.Frame.Height * 0.5 - (height * 0.5));

            SetFrame(
                new CGRect(
                    new CGPoint(x, y),
                    new CGSize(min_width, height)),
                true);

            StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Miniaturizable |
                         NSWindowStyle.Titled | NSWindowStyle.Resizable);

            MinSize        = new CGSize(min_width, min_height);
            HasShadow      = true;
            IsOpaque       = false;
            BackingType    = NSBackingStore.Buffered;
            TitlebarHeight = (float)(Frame.Height - ContentView.Frame.Height);
            Level          = NSWindowLevel.Floating;


            this.web_view = new WebView(new CGRect(0, 0, 481, 579), "", "")
            {
                Frame = new CGRect(new CGPoint(0, 0),
                                   new CGSize(ContentView.Frame.Width, ContentView.Frame.Height - 39))
            };

            this.web_view.Preferences.PlugInsEnabled = false;

            this.cover = new NSBox()
            {
                Frame = new CGRect(
                    new CGPoint(-1, -1),
                    new CGSize(Frame.Width + 2, this.web_view.Frame.Height + 1)),
                FillColor        = NSColor.White,
                BorderType       = NSBorderType.NoBorder,
                BoxType          = NSBoxType.NSBoxCustom,
                AutoresizingMask = NSViewResizingMask.WidthSizable | NSViewResizingMask.HeightSizable
            };

            this.hidden_close_button = new NSButton()
            {
                KeyEquivalentModifierMask = NSEventModifierMask.CommandKeyMask,
                KeyEquivalent             = "w"
            };

            this.hidden_close_button.Activated += delegate {
                Controller.WindowClosed();
            };


            this.size_label = new NSTextField()
            {
                Alignment       = NSTextAlignment.Right,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new CGRect(
                    new CGPoint(0, ContentView.Frame.Height - 31),
                    new CGSize(60, 20)),
                StringValue      = "Size:",
                AutoresizingMask = NSViewResizingMask.MaxXMargin | NSViewResizingMask.MinYMargin
            };

            this.size_label_value = new NSTextField()
            {
                Alignment       = NSTextAlignment.Left,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new CGRect(
                    new CGPoint(60, ContentView.Frame.Height - 31),
                    new CGSize(60, 20)),
                StringValue      = "…",
                Font             = NSFont.BoldSystemFontOfSize(12),
                AutoresizingMask = NSViewResizingMask.MaxXMargin | NSViewResizingMask.MinYMargin
            };

            this.history_label = new NSTextField()
            {
                Alignment       = NSTextAlignment.Right,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new CGRect(
                    new CGPoint(130, ContentView.Frame.Height - 31),
                    new CGSize(60, 20)),
                StringValue      = "History:",
                AutoresizingMask = NSViewResizingMask.MaxXMargin | NSViewResizingMask.MinYMargin
            };

            this.history_label_value = new NSTextField()
            {
                Alignment       = NSTextAlignment.Left,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new CGRect(
                    new CGPoint(190, ContentView.Frame.Height - 31),
                    new CGSize(60, 20)
                    ),
                StringValue      = "…",
                Font             = NSFont.BoldSystemFontOfSize(12),
                AutoresizingMask = NSViewResizingMask.MaxXMargin | NSViewResizingMask.MinYMargin
            };

            this.popup_button = new NSPopUpButton()
            {
                Frame = new CGRect(
                    new CGPoint(ContentView.Frame.Width - 156 - 12, ContentView.Frame.Height - 33),
                    new CGSize(156, 26)),
                PullsDown        = false,
                AutoresizingMask = NSViewResizingMask.MinXMargin | NSViewResizingMask.MinYMargin
            };

            this.background = new NSBox()
            {
                Frame = new CGRect(
                    new CGPoint(-1, -1),
                    new CGSize(Frame.Width + 2, this.web_view.Frame.Height + 2)),
                FillColor        = NSColor.White,
                BorderColor      = NSColor.LightGray,
                BoxType          = NSBoxType.NSBoxCustom,
                AutoresizingMask = NSViewResizingMask.WidthSizable | NSViewResizingMask.HeightSizable
            };

            this.progress_indicator = new NSProgressIndicator()
            {
                Frame = new CGRect(
                    new CGPoint(Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10),
                    new CGSize(20, 20)),
                Style            = NSProgressIndicatorStyle.Spinning,
                AutoresizingMask = NSViewResizingMask.MinXMargin | NSViewResizingMask.MaxXMargin |
                                   NSViewResizingMask.MinYMargin | NSViewResizingMask.MaxYMargin
            };

            this.progress_indicator.StartAnimation(this);


            ContentView.AddSubview(this.size_label);
            ContentView.AddSubview(this.size_label_value);
            ContentView.AddSubview(this.history_label);
            ContentView.AddSubview(this.history_label_value);
            ContentView.AddSubview(this.popup_button);
            ContentView.AddSubview(this.progress_indicator);
            ContentView.AddSubview(this.background);
            ContentView.AddSubview(this.hidden_close_button);


            Controller.HideWindowEvent     += HideWindowEventDelegate;
            Controller.ShowWindowEvent     += ShowWindowEventDelegate;
            Controller.ShowSaveDialogEvent += ShowSaveDialogEventDelegate;

            Controller.UpdateChooserEvent           += UpdateChooserEventDelegate;
            Controller.UpdateChooserEnablementEvent += UpdateChooserEnablementEventDelegate;
            Controller.UpdateContentEvent           += UpdateContentEventDelegate;
            Controller.UpdateSizeInfoEvent          += UpdateSizeInfoEventDelegate;

            Controller.ContentLoadingEvent += ContentLoadingEventDelegate;
        }
		public override void AwakeFromNib ()
		{
			base.AwakeFromNib ();
			
			#region first two buttons 
			
			// add the image menu item back to the first menu item
			NSMenuItem menuItem = new NSMenuItem ("", new Selector (""), "");
			
			menuItem.Image = NSImage.ImageNamed ("moof.png");
			buttonMenu.InsertItem (menuItem, 0);
			
			nibBasedPopUpDown.Menu = buttonMenu;
			nibBasedPopUpRight.Menu = buttonMenu;
		
			// create the pull down button pointing DOWN
			CGRect buttonFrame = placeHolder1.Frame;
			codeBasedPopUpDown = new NSPopUpButton (buttonFrame, true);
			
			((NSPopUpButtonCell)codeBasedPopUpDown.Cell).ArrowPosition = NSPopUpArrowPosition.Bottom;
			((NSPopUpButtonCell)codeBasedPopUpDown.Cell).BezelStyle = NSBezelStyle.ThickSquare;
			codeBasedPopUpDown.Menu = buttonMenu;
			popupBox.AddSubview (codeBasedPopUpDown);
			placeHolder1.RemoveFromSuperview ();
		
			// create the pull down button pointing RIGHT
			buttonFrame = placeHolder2.Frame;
			codeBasedPopUpRight = new NSPopUpButton (buttonFrame, true);
			
			((NSPopUpButtonCell)codeBasedPopUpRight.Cell).ArrowPosition = NSPopUpArrowPosition.Bottom;
			((NSPopUpButtonCell)codeBasedPopUpRight.Cell).PreferredEdge = NSRectEdge.MaxXEdge;
			((NSPopUpButtonCell)codeBasedPopUpRight.Cell).BezelStyle = NSBezelStyle.Circular;
			codeBasedPopUpRight.Menu = buttonMenu;
			((NSPopUpButtonCell)codeBasedPopUpRight.Cell).HighlightsBy = (nint)(int)NSCellStyleMask.ChangeGrayCell;
			popupBox.AddSubview (codeBasedPopUpRight);
			placeHolder2.RemoveFromSuperview ();

			#endregion
			
			#region second two buttons
			
			// create the rounded button
			buttonFrame = placeHolder3.Frame;
			// note: this button we want alternate title and image, so we need to call this:
			codeBasedButtonRound = new NSButton (buttonFrame) {
				Title = "NSButton",
				AlternateTitle = "(pressed)",
				Image = NSImage.ImageNamed ("moof.png"),
				AlternateImage = NSImage.ImageNamed ("moof2.png"),
				BezelStyle = NSBezelStyle.RegularSquare,
				ImagePosition = NSCellImagePosition.ImageLeft,
				Font = NSFont.SystemFontOfSize (NSFont.SmallSystemFontSize),
				Sound = NSSound.FromName ("Pop"),
			};
			// Two choices, either use the .NET event system:
			//    foo.Activated += delegate {..} or += SomeMethod
			//
			// Or you can use the Target = this Action = new Selector ("buttonAction:")
			// pattern
			codeBasedButtonRound.Activated += delegate {
				buttonAction (null);
			};
			codeBasedButtonRound.SetButtonType (NSButtonType.MomentaryChange);
			codeBasedButtonRound.Cell.Alignment = NSTextAlignment.Left;
			buttonBox.AddSubview (codeBasedButtonRound);
			placeHolder3.RemoveFromSuperview (); 			// we are done with the place holder, remove it from the window
			
			// create the square button
			buttonFrame = placeHolder4.Frame;
			codeBasedButtonSquare = new NSButton (buttonFrame){
				Title = "NSButton",
				BezelStyle = NSBezelStyle.ShadowlessSquare,
				ImagePosition = NSCellImagePosition.ImageLeft,
				Image = NSImage.ImageNamed ("moof.png"),
				Font = NSFont.SystemFontOfSize (NSFont.SmallSystemFontSize),
				Sound = NSSound.FromName ("Pop"),
			};
			codeBasedButtonSquare.Activated += delegate { buttonAction (null); };
			codeBasedButtonSquare.Cell.Alignment = NSTextAlignment.Left;
			buttonBox.AddSubview (codeBasedButtonSquare);
			placeHolder4.RemoveFromSuperview (); 			// we are done with the place holder, remove it from the window
			
			#endregion
			
			#region segmented control
			
			buttonFrame = placeHolder5.Frame;
			codeBasedSegmentControl = new NSSegmentedControl(buttonFrame) {
				SegmentCount = 3,
				Target = this,
				Action = new Selector("segmentAction:")
			};
					
			codeBasedSegmentControl.SetWidth (nibBasedSegControl.GetWidth(0), 0);
			codeBasedSegmentControl.SetWidth (nibBasedSegControl.GetWidth (1), 1);
			codeBasedSegmentControl.SetWidth (nibBasedSegControl.GetWidth (2), 2);
			codeBasedSegmentControl.SetLabel ("One", 0);
			codeBasedSegmentControl.SetLabel ("Two", 1);
			codeBasedSegmentControl.SetLabel ("Three", 2);
			segmentBox.AddSubview (codeBasedSegmentControl);
			placeHolder5.RemoveFromSuperview ();
	
			// use a menu to the first segment (applied to both nib-based and code-based)
			codeBasedSegmentControl.SetMenu (buttonMenu, 0);
			nibBasedSegControl.SetMenu (buttonMenu, 0);
			
			// add icons to each segment (applied to both nib-based and code-based)
			NSImage segmentIcon1 = NSWorkspace.SharedWorkspace.IconForFileType(NSFileTypeForHFSTypeCode.ComputerIcon);
			segmentIcon1.Size = new CGSize(16, 16);
			nibBasedSegControl.SetImage (segmentIcon1, 0);
			codeBasedSegmentControl.SetImage (segmentIcon1, 0);
			
			NSImage segmentIcon2 = NSWorkspace.SharedWorkspace.IconForFileType (NSFileTypeForHFSTypeCode.DesktopIcon);
			segmentIcon2.Size = new CGSize (16, 16);
			nibBasedSegControl.SetImage (segmentIcon2, 1);
			codeBasedSegmentControl.SetImage (segmentIcon2, 1);
			
			NSImage segmentIcon3 = NSWorkspace.SharedWorkspace.IconForFileType (NSFileTypeForHFSTypeCode.FinderIcon);
			segmentIcon3.Size = new CGSize (16, 16);
			nibBasedSegControl.SetImage (segmentIcon3, 2);
			codeBasedSegmentControl.SetImage (segmentIcon3, 2);
		
			#endregion
			
			#region level indicator
			
			buttonFrame = placeHolder8.Frame;
			codeBasedIndicator = new NSLevelIndicator(buttonFrame) {
				MaxValue = 10,
				MajorTickMarkCount = 4,
				TickMarkCount = 7,
				WarningValue = 5,
				CriticalValue = 8,
				Action = new Selector("levelAction:")
			};
			codeBasedIndicator.Cell.LevelIndicatorStyle = NSLevelIndicatorStyle.DiscreteCapacity;
			indicatorBox.AddSubview(codeBasedIndicator);
			placeHolder8.RemoveFromSuperview();
			
			
			#endregion
		}
 public virtual void __SwitchObject(NSPopUpButton sender)
 {
     this.SwitchObject(sender);
 }
Example #28
0
        public bool Run(AddFileDialogData data)
        {
            using (var panel = new NSOpenPanel {
                CanChooseDirectories = false,
                CanChooseFiles = true,
            }) {
                MacSelectFileDialogHandler.SetCommonPanelProperties(data, panel);

                var popup       = new NSPopUpButton(new CGRect(0, 0, 200, 28), false);
                var dropdownBox = new MDBox(LayoutDirection.Horizontal, 2, 0)
                {
                    { new MDLabel(GettextCatalog.GetString("Override build action:")), true },
                    { new MDAlignment(popup, true)
                      {
                          MinWidth = 200
                      } }
                };

                var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup(data, panel);
                if (filterPopup != null)
                {
                    dropdownBox.Layout();
                    var box = new MDBox(LayoutDirection.Vertical, 2, 2)
                    {
                        dropdownBox.View,
                        filterPopup,
                    };
                    box.Layout();
                    panel.AccessoryView = box.View;
                    box.Layout(box.View.Superview.Frame.Size);
                }
                else
                {
                    dropdownBox.Layout();
                    panel.AccessoryView = dropdownBox.View;
                }

                popup.AddItem(GettextCatalog.GetString("(Default)"));
                popup.Menu.AddItem(NSMenuItem.SeparatorItem);

                foreach (var b in data.BuildActions)
                {
                    if (b == "--")
                    {
                        popup.Menu.AddItem(NSMenuItem.SeparatorItem);
                    }
                    else
                    {
                        popup.AddItem(b);
                    }
                }

                if (panel.RunModal() == 0)
                {
                    GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                    return(false);
                }

                data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles(panel);

                var idx = popup.IndexOfSelectedItem - 2;
                if (idx >= 0)
                {
                    data.OverrideAction = data.BuildActions[idx];
                }

                GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                return(true);
            }
        }
                /// <summary>
                /// User chose a different control font size from the Font Size popup
                /// </summary>
                /// <param name="sender">
                /// A <see cref="NSPopUpButton"/>
                /// </param>
                partial void setFontSize (NSPopUpButton sender)
                {
			           int tag = (int)sender.SelectedCell.Tag;
                        
                        switch ((NSControlSize)tag) {
                        case NSControlSize.Mini:
                                datePickerControl.Cell.ControlSize = NSControlSize.Mini;
                                datePickerControl.Cell.Font = NSFont.SystemFontOfSize (9.0f);
                                break;
                        case NSControlSize.Small:
                                datePickerControl.Cell.ControlSize = NSControlSize.Small;
                                datePickerControl.Cell.Font = NSFont.SystemFontOfSize (11.0f);
                                break;
                        case NSControlSize.Regular:
                                datePickerControl.Cell.ControlSize = NSControlSize.Regular;
                                datePickerControl.Cell.Font = NSFont.SystemFontOfSize (13.0f);
                                break;
                        }
                }
 partial void EntityChosen(NSPopUpButton sender)
 {
     this.entityID = this.entityIndexToID[(int)this.EntityPopUpButton.IndexOfSelectedItem - 1];
     RedrawTable();
 }
		static bool FillViewers (List<FileViewer> currentViewers, NSPopUpButton button, NSButton closeSolutionButton, FilePath[] filenames)
		{
			button.Menu.RemoveAllItems ();
			currentViewers.Clear ();
			
			if (filenames == null || filenames.Length == 0) {
				button.Enabled = false;
				return false;
			}
			
			var filename = filenames[0];
			if (System.IO.Directory.Exists (filename))
				return false;
			
			int selected = -1;
			int i = 0;
			bool hasWorkbenchViewer = false;

			if (IdeApp.Services.ProjectService.IsWorkspaceItemFile (filename) || IdeApp.Services.ProjectService.IsSolutionItemFile (filename)) {
				button.Menu.AddItem (new NSMenuItem { Title = GettextCatalog.GetString ("Solution Workbench") });
				currentViewers.Add (null);
				
				if (closeSolutionButton != null)
					closeSolutionButton.State = NSCellStateValue.On;
				
				if (!CanBeOpenedInAssemblyBrowser (filename))
					selected = 0;
				hasWorkbenchViewer = true;
				i++;
			}
			
			foreach (var vw in DisplayBindingService.GetFileViewers (filename, null)) {
				if (!vw.IsExternal) {
					button.Menu.AddItem (new NSMenuItem { Title = vw.Title });
					currentViewers.Add (vw);
					
					if (vw.CanUseAsDefault && selected == -1)
						selected = i;
					
					i++;
				}
			}
			
			if (selected == -1)
				selected = 0;
			
			button.Enabled = currentViewers.Count > 1;
			button.SelectItem (selected);
			return hasWorkbenchViewer;
		}
        public bool Run(OpenFileDialogData data)
        {
            NSSavePanel panel = null;

            try {
                if (data.Action == FileChooserAction.Save)
                {
                    panel = new NSSavePanel();
                }
                else
                {
                    panel = new NSOpenPanel {
                        CanChooseDirectories = (data.Action & FileChooserAction.FolderFlags) != 0,
                        CanChooseFiles       = (data.Action & FileChooserAction.FileFlags) != 0,
                    };
                }

                MacSelectFileDialogHandler.SetCommonPanelProperties(data, panel);

                SelectEncodingPopUpButton encodingSelector = null;
                NSPopUpButton             viewerSelector   = null;
                NSButton closeSolutionButton = null;

                var box = new MDBox(LayoutDirection.Vertical, 2, 2);

                List <FileViewer> currentViewers = null;
                var labels = new List <MDAlignment> ();

                if ((data.Action & FileChooserAction.FileFlags) != 0)
                {
                    var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup(data, panel);

                    if (filterPopup != null)
                    {
                        var filterLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Show files:")), true);
                        var filterBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { filterLabel },
                            { new MDAlignment(filterPopup, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(filterLabel);
                        box.Add(filterBox);
                    }

                    if (data.ShowEncodingSelector)
                    {
                        encodingSelector = new SelectEncodingPopUpButton(data.Action != FileChooserAction.Save);
                        encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;

                        var encodingLabel = new MDAlignment(new MDLabel(GettextCatalog.GetString("Encoding:")), true);
                        var encodingBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { encodingLabel },
                            { new MDAlignment(encodingSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };
                        labels.Add(encodingLabel);
                        box.Add(encodingBox);
                    }

                    if (data.ShowViewerSelector && panel is NSOpenPanel)
                    {
                        currentViewers = new List <FileViewer> ();
                        viewerSelector = new NSPopUpButton {
                            Enabled = false,
                        };

                        if (encodingSelector != null || IdeApp.Workspace.IsOpen)
                        {
                            viewerSelector.Activated += delegate {
                                var  idx = viewerSelector.IndexOfSelectedItem;
                                bool workbenchViewerSelected = idx == 0 && currentViewers [0] == null;
                                if (encodingSelector != null)
                                {
                                    encodingSelector.Enabled = !workbenchViewerSelected;
                                }
                                if (closeSolutionButton != null)
                                {
                                    if (closeSolutionButton.Hidden == workbenchViewerSelected)
                                    {
                                        closeSolutionButton.Hidden = !workbenchViewerSelected;
                                        CenterAccessoryView(box);
                                    }
                                }
                            };
                        }

                        var viewSelLabel = new MDLabel(GettextCatalog.GetString("Open with:"));
                        var viewSelBox   = new MDBox(LayoutDirection.Horizontal, 2, 0)
                        {
                            { viewSelLabel, true },
                            { new MDAlignment(viewerSelector, true)
                              {
                                  MinWidth = 200
                              } }
                        };

                        if (IdeApp.Workspace.IsOpen)
                        {
                            closeSolutionButton = new NSButton {
                                Title  = GettextCatalog.GetString("Close current workspace"),
                                Hidden = true,
                                State  = NSCellStateValue.On,
                            };

                            closeSolutionButton.SetButtonType(NSButtonType.Switch);
                            closeSolutionButton.SizeToFit();

                            viewSelBox.Add(closeSolutionButton, true);
                        }

                        box.Add(viewSelBox);
                    }
                }

                if (labels.Count > 0)
                {
                    float w = labels.Max(l => l.MinWidth);
                    foreach (var l in labels)
                    {
                        l.MinWidth = w;
                        l.XAlign   = LayoutAlign.Begin;
                    }
                }

                if (box.Count > 0)
                {
                    box.Layout();
                    panel.AccessoryView = box.View;
                }

                panel.SelectionDidChange += delegate {
                    var  selection         = MacSelectFileDialogHandler.GetSelectedFiles(panel);
                    bool slnViewerSelected = false;
                    if (viewerSelector != null)
                    {
                        slnViewerSelected = FillViewers(currentViewers, viewerSelector, closeSolutionButton, selection);
                        if (closeSolutionButton != null)
                        {
                            closeSolutionButton.Hidden = !slnViewerSelected;
                        }
                        CenterAccessoryView(box);
                    }
                    if (encodingSelector != null)
                    {
                        encodingSelector.Enabled = !slnViewerSelected;
                    }
                };

                if (panel.RunModal() == 0)
                {
                    GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
                    return(false);
                }

                data.SelectedFiles = MacSelectFileDialogHandler.GetSelectedFiles(panel);

                if (encodingSelector != null)
                {
                    data.Encoding = encodingSelector.SelectedEncodingId > 0 ? Encoding.GetEncoding(encodingSelector.SelectedEncodingId) : null;
                }

                if (viewerSelector != null)
                {
                    if (closeSolutionButton != null)
                    {
                        data.CloseCurrentWorkspace = closeSolutionButton.State != NSCellStateValue.Off;
                    }
                    data.SelectedViewer = viewerSelector.IndexOfSelectedItem >= 0 ?
                                          currentViewers[(int)viewerSelector.IndexOfSelectedItem] : null;
                }

                GtkQuartz.FocusWindow(data.TransientFor ?? MessageService.RootWindow);
            } catch (Exception ex) {
                LoggingService.LogInternalError("Error in Open File dialog", ex);
            } finally {
                if (panel != null)
                {
                    panel.Dispose();
                }
            }
            return(true);
        }
Example #33
0
 partial void LenderSelected(NSPopUpButton sender)
 {
     this.lenderID = this.lenderIndexToID[(int)this.LenderPopUpButton.IndexOfSelectedItem - 1];
 }
Example #34
0
 protected MacFileDialog()
 {
     fileTypes = new NSPopUpButton();
 }
Example #35
0
        public EventLog()
        {
            Title    = "Recent Changes";
            Delegate = new SparkleEventsDelegate();

            int min_width  = 480;
            int min_height = 640;
            int height     = (int)(NSScreen.MainScreen.Frame.Height * 0.85);

            float x = (float)(NSScreen.MainScreen.Frame.Width * 0.61);
            float y = (float)(NSScreen.MainScreen.Frame.Height * 0.5 - (height * 0.5));

            SetFrame(
                new RectangleF(
                    new PointF(x, y),
                    new SizeF(min_width, height)),
                true);

            StyleMask = (NSWindowStyle.Closable | NSWindowStyle.Miniaturizable |
                         NSWindowStyle.Titled | NSWindowStyle.Resizable);

            MinSize        = new SizeF(min_width, min_height);
            HasShadow      = true;
            IsOpaque       = false;
            BackingType    = NSBackingStore.Buffered;
            TitlebarHeight = Frame.Height - ContentView.Frame.Height;
            Level          = NSWindowLevel.Floating;


            this.web_view = new WebView(new RectangleF(0, 0, 481, 579), "", "")
            {
                Frame = new RectangleF(new PointF(0, 0),
                                       new SizeF(ContentView.Frame.Width, ContentView.Frame.Height - 39))
            };

            this.web_view.Preferences.PlugInsEnabled = false;

            this.cover = new NSBox()
            {
                Frame = new RectangleF(
                    new PointF(-1, -1),
                    new SizeF(Frame.Width + 2, this.web_view.Frame.Height + 1)),
                FillColor  = NSColor.White,
                BorderType = NSBorderType.NoBorder,
                BoxType    = NSBoxType.NSBoxCustom
            };

            this.hidden_close_button = new NSButton()
            {
                KeyEquivalentModifierMask = NSEventModifierMask.CommandKeyMask,
                KeyEquivalent             = "w"
            };

            this.hidden_close_button.Activated += delegate {
                Controller.WindowClosed();
            };


            this.size_label = new NSTextField()
            {
                Alignment       = NSTextAlignment.Right,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new RectangleF(
                    new PointF(0, ContentView.Frame.Height - 31),
                    new SizeF(60, 20)),
                StringValue = "Size:"
            };

            this.size_label_value = new NSTextField()
            {
                Alignment       = NSTextAlignment.Left,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new RectangleF(
                    new PointF(60, ContentView.Frame.Height - 27),
                    new SizeF(60, 20)),
                StringValue = "…",
                Font        = NSFont.FromFontName(UserInterface.FontName + " Bold", NSFont.SystemFontSize)
            };


            this.history_label = new NSTextField()
            {
                Alignment       = NSTextAlignment.Right,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new RectangleF(
                    new PointF(130, ContentView.Frame.Height - 31),
                    new SizeF(60, 20)),
                StringValue = "History:"
            };

            this.history_label_value = new NSTextField()
            {
                Alignment       = NSTextAlignment.Left,
                BackgroundColor = NSColor.WindowBackground,
                Bordered        = false,
                Editable        = false,
                Frame           = new RectangleF(
                    new PointF(190, ContentView.Frame.Height - 27),
                    new SizeF(60, 20)
                    ),
                StringValue = "…",
                Font        = NSFont.FromFontName(UserInterface.FontName + " Bold", NSFont.SystemFontSize)
            };

            this.popup_button = new NSPopUpButton()
            {
                Frame = new RectangleF(
                    new PointF(ContentView.Frame.Width - 156 - 12, ContentView.Frame.Height - 33),
                    new SizeF(156, 26)),
                PullsDown = false
            };

            this.background = new NSBox()
            {
                Frame = new RectangleF(
                    new PointF(-1, -1),
                    new SizeF(Frame.Width + 2, this.web_view.Frame.Height + 2)),
                FillColor   = NSColor.White,
                BorderColor = NSColor.LightGray,
                BoxType     = NSBoxType.NSBoxCustom
            };

            this.progress_indicator = new NSProgressIndicator()
            {
                Frame = new RectangleF(
                    new PointF(Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10),
                    new SizeF(20, 20)),
                Style = NSProgressIndicatorStyle.Spinning
            };

            this.progress_indicator.StartAnimation(this);

            ContentView.AddSubview(this.size_label);
            ContentView.AddSubview(this.size_label_value);
            ContentView.AddSubview(this.history_label);
            ContentView.AddSubview(this.history_label_value);
            ContentView.AddSubview(this.popup_button);
            ContentView.AddSubview(this.progress_indicator);
            ContentView.AddSubview(this.background);
            ContentView.AddSubview(this.hidden_close_button);

            (Delegate as SparkleEventsDelegate).WindowResized += delegate(SizeF new_window_size) {
                SparkleShare.Controller.Invoke(() => Relayout(new_window_size));
            };


            // Hook up the controller events
            Controller.HideWindowEvent += delegate {
                SparkleShare.Controller.Invoke(() => {
                    this.progress_indicator.Hidden = true;
                    PerformClose(this);
                });
            };

            Controller.ShowWindowEvent += delegate {
                SparkleShare.Controller.Invoke(() => OrderFrontRegardless());
            };

            Controller.UpdateChooserEvent += delegate(string [] folders) {
                SparkleShare.Controller.Invoke(() => UpdateChooser(folders));
            };

            Controller.UpdateChooserEnablementEvent += delegate(bool enabled) {
                SparkleShare.Controller.Invoke(() => { this.popup_button.Enabled = enabled; });
            };

            Controller.UpdateContentEvent += delegate(string html) {
                SparkleShare.Controller.Invoke(() => {
                    this.cover.RemoveFromSuperview();
                    this.progress_indicator.Hidden = true;
                    UpdateContent(html);
                });
            };

            Controller.ContentLoadingEvent += delegate {
                SparkleShare.Controller.Invoke(() => {
                    this.web_view.RemoveFromSuperview();
                    // FIXME: Hack to hide that the WebView sometimes doesn't disappear
                    ContentView.AddSubview(this.cover);
                    this.progress_indicator.Hidden = false;
                    this.progress_indicator.StartAnimation(this);
                });
            };

            Controller.UpdateSizeInfoEvent += delegate(string size, string history_size) {
                SparkleShare.Controller.Invoke(() => {
                    this.size_label_value.StringValue    = size;
                    this.history_label_value.StringValue = history_size;
                });
            };

            Controller.ShowSaveDialogEvent += delegate(string file_name, string target_folder_path) {
                SparkleShare.Controller.Invoke(() => {
                    NSSavePanel panel = new NSSavePanel()
                    {
                        DirectoryUrl         = new NSUrl(target_folder_path, true),
                        NameFieldStringValue = file_name,
                        ParentWindow         = this,
                        Title = "Restore from History",
                        PreventsApplicationTerminationWhenModal = false
                    };

                    if ((NSPanelButtonType)panel.RunModal() == NSPanelButtonType.Ok)
                    {
                        string target_file_path = Path.Combine(panel.DirectoryUrl.RelativePath, panel.NameFieldStringValue);
                        Controller.SaveDialogCompleted(target_file_path);
                    }
                    else
                    {
                        Controller.SaveDialogCancelled();
                    }
                });
            };
        }
Example #36
0
 public nint GetRowsInComponent(NSPopUpButton pickerView, nint component)
 {
     return((nint)(this.renderer.Element.Items != null ? this.renderer.Element.Items.Count : 0));
 }
Example #37
0
 public static string GetSelected(NSPopUpButton control)
 {
     return(control.SelectedItem.Title);
 }
Example #38
0
 internal static NSView CreateLabelledDropdown(string label, float popupWidth, out NSPopUpButton popup)
 {
     popup = new NSPopUpButton(new RectangleF(0, 6, popupWidth, 18), false)
     {
         AutoresizingMask = NSViewResizingMask.WidthSizable | NSViewResizingMask.MaxXMargin,
     };
     return(LabelControl(label, 200, popup));
 }
Example #39
0
 public MacFileDialog()
 {
     fileTypes = new NSPopUpButton();
 }
Example #40
0
        /// <summary>
        /// User chose a different picker style from the Picker Style popup.
        /// </summary>
        /// <param name="sender">
        /// A <see cref="NSPopUpButton"/>
        /// </param>
        partial void setPickerStyle(NSPopUpButton sender)
        {
            int tag = sender.SelectedCell.Tag;

            if (datePickerControl.DatePickerStyle != (NSDatePickerStyle)tag)
            {
                RectangleF windowFrame = this.Window.Frame;
                RectangleF boxFrame    = outerBox.Frame;

                datePickerControl.Hidden = true;

                if ((NSDatePickerStyle)tag == NSDatePickerStyle.ClockAndCalendar)
                {
                    // for this picker style, we need to grow the window to make room for it.
                    SizeF size = windowFrame.Size;
                    size.Height     += shrinkGrowFacter;
                    windowFrame.Size = size;
                    PointF origin = windowFrame.Location;
                    origin.Y            -= shrinkGrowFacter;
                    windowFrame.Location = origin;

                    size           = boxFrame.Size;
                    size.Height   += shrinkGrowFacter;
                    boxFrame.Size  = size;
                    outerBox.Frame = boxFrame;

                    this.Window.SetFrame(windowFrame, true, true);

                    datePickerControl.DatePickerStyle = NSDatePickerStyle.ClockAndCalendar;

                    // shows these last
                    dateResult1.Hidden = false;
                    dateResult2.Hidden = false;
                    dateResult3.Hidden = false;
                    dateResult4.Hidden = false;
                }
                else
                {
                    NSDatePickerStyle currentPickerStyle = datePickerControl.DatePickerStyle;

                    // shrink the window only if the current style is "clock and calendar"
                    if (currentPickerStyle == NSDatePickerStyle.ClockAndCalendar)
                    {
                        dateResult1.Hidden = true;
                        dateResult2.Hidden = true;
                        dateResult3.Hidden = true;
                        dateResult4.Hidden = true;

                        SizeF size = windowFrame.Size;
                        size.Height     -= shrinkGrowFacter;
                        windowFrame.Size = size;
                        PointF origin = windowFrame.Location;
                        origin.Y            += shrinkGrowFacter;
                        windowFrame.Location = origin;

                        size           = boxFrame.Size;
                        size.Height   -= shrinkGrowFacter;
                        boxFrame.Size  = size;
                        outerBox.Frame = boxFrame;

                        this.Window.SetFrame(windowFrame, true, true);
                    }

                    // set our desired picker style
                    setupDatePickerControl((NSDatePickerStyle)tag);
                }

                datePickerControl.Hidden = false;

                updateControls();
                // force update of all UI elements and the picker itself
            }
        }
Example #41
0
        static bool FillViewers(List <FileViewer> currentViewers, NSPopUpButton button, NSButton closeSolutionButton, FilePath[] filenames)
        {
            button.Menu.RemoveAllItems();
            currentViewers.Clear();

            if (filenames == null || filenames.Length == 0)
            {
                button.Enabled = false;
                return(false);
            }

            var filename = filenames[0];

            if (System.IO.Directory.Exists(filename))
            {
                return(false);
            }

            int  selected           = -1;
            int  i                  = 0;
            bool hasWorkbenchViewer = false;

            if (IdeApp.Services.ProjectService.IsWorkspaceItemFile(filename) || IdeApp.Services.ProjectService.IsSolutionItemFile(filename))
            {
                button.Menu.AddItem(new NSMenuItem {
                    Title = GettextCatalog.GetString("Solution Workbench")
                });
                currentViewers.Add(null);

                if (closeSolutionButton != null)
                {
                    closeSolutionButton.State = NSCellStateValue.On;
                }

                if (!CanBeOpenedInAssemblyBrowser(filename))
                {
                    selected = 0;
                }
                hasWorkbenchViewer = true;
                i++;
            }

            foreach (var vw in DisplayBindingService.GetFileViewers(filename, null))
            {
                if (!vw.IsExternal)
                {
                    button.Menu.AddItem(new NSMenuItem {
                        Title = vw.Title
                    });
                    currentViewers.Add(vw);

                    if (vw.CanUseAsDefault && selected == -1)
                    {
                        selected = i;
                    }

                    i++;
                }
            }

            if (selected == -1)
            {
                selected = 0;
            }

            button.Enabled = currentViewers.Count > 1;
            button.SelectItem(selected);
            return(hasWorkbenchViewer);
        }
        public void takeSelectionMarkerStyleFrom(NSPopUpButton sender)
        {
            NSRect stash = this.SelectionMarker.SelectedRect; // If we change styles, it's nice to keep the same area selected.
            MarkerStyle tag = (MarkerStyle) (int) sender.SelectedCell.CastTo<NSPopUpButtonCell>().Tag;
            switch (tag)
            {
                case MarkerStyle.PlainMarkerStyle:
                    this.SelectionMarker = new CropMarker(this);
                    this.SelectionMarker.SelectedRect = stash;
                    break;

                case MarkerStyle.FinderMarkerStyle:
                    this.SelectionMarker = new FinderStyleCropMarker(this);
                    this.SelectionMarker.SelectedRect = stash;
                    break;

                case MarkerStyle.IPhotoMarkerStyle:
                    this.SelectionMarker = new IPhotoStyleCropMarker(this);
                    this.SelectionMarker.SelectedRect = stash;
                    break;

                case MarkerStyle.LassoMarkerStyle:
                    this.SelectionMarker = new LassoStyleCropMarker(this);
                    break;
            }
            this.NeedsDisplay = true;
        }
		internal static NSView CreateLabelledDropdown (string label, float popupWidth, out NSPopUpButton popup)
		{
			popup = new NSPopUpButton (new CGRect (0, 6, popupWidth, 18), false) {
				AutoresizingMask = NSViewResizingMask.WidthSizable | NSViewResizingMask.MaxXMargin,
			};
			return LabelControl (label, 200, popup);
		}
Example #44
0
        public SparkleEventLog() : base()
        {
            using (var a = new NSAutoreleasePool())
            {
                Title    = "Recent Changes";
                Delegate = new SparkleEventsDelegate();

                int   min_width  = 480;
                int   min_height = 640;
                float x          = (float)(NSScreen.MainScreen.Frame.Width * 0.61);
                float y          = (float)(NSScreen.MainScreen.Frame.Height * 0.5 - (min_height * 0.5));

                SetFrame(
                    new RectangleF(
                        new PointF(x, y),
                        new SizeF(min_width, (int)(NSScreen.MainScreen.Frame.Height * 0.85))),
                    true);

                StyleMask = (NSWindowStyle.Closable |
                             NSWindowStyle.Miniaturizable |
                             NSWindowStyle.Titled |
                             NSWindowStyle.Resizable);

                MinSize        = new SizeF(min_width, min_height);
                HasShadow      = true;
                BackingType    = NSBackingStore.Buffered;
                TitlebarHeight = Frame.Height - ContentView.Frame.Height;


                this.web_view = new WebView(new RectangleF(0, 0, 481, 579), "", "")
                {
                    Frame = new RectangleF(new PointF(0, 0),
                                           new SizeF(ContentView.Frame.Width, ContentView.Frame.Height - 39))
                };

                this.hidden_close_button = new NSButton()
                {
                    KeyEquivalentModifierMask = NSEventModifierMask.CommandKeyMask,
                    KeyEquivalent             = "w"
                };

                this.hidden_close_button.Activated += delegate {
                    Controller.WindowClosed();
                };


                this.size_label = new NSTextField()
                {
                    Alignment       = NSTextAlignment.Right,
                    BackgroundColor = NSColor.WindowBackground,
                    Bordered        = false,
                    Editable        = false,
                    Frame           = new RectangleF(
                        new PointF(0, ContentView.Frame.Height - 30),
                        new SizeF(60, 20)),
                    StringValue = "Size:",
                    Font        = SparkleUI.BoldFont
                };

                this.size_label_value = new NSTextField()
                {
                    Alignment       = NSTextAlignment.Left,
                    BackgroundColor = NSColor.WindowBackground,
                    Bordered        = false,
                    Editable        = false,
                    Frame           = new RectangleF(
                        new PointF(60, ContentView.Frame.Height - 30),
                        new SizeF(60, 20)),
                    StringValue = "…",
                    Font        = SparkleUI.Font
                };


                this.history_label = new NSTextField()
                {
                    Alignment       = NSTextAlignment.Right,
                    BackgroundColor = NSColor.WindowBackground,
                    Bordered        = false,
                    Editable        = false,
                    Frame           = new RectangleF(
                        new PointF(130, ContentView.Frame.Height - 30),
                        new SizeF(60, 20)),
                    StringValue = "History:",
                    Font        = SparkleUI.BoldFont
                };

                this.history_label_value = new NSTextField()
                {
                    Alignment       = NSTextAlignment.Left,
                    BackgroundColor = NSColor.WindowBackground,
                    Bordered        = false,
                    Editable        = false,
                    Frame           = new RectangleF(
                        new PointF(190, ContentView.Frame.Height - 30),
                        new SizeF(60, 20)
                        ),
                    StringValue = "…",
                    Font        = SparkleUI.Font
                };

                this.popup_button = new NSPopUpButton()
                {
                    Frame = new RectangleF(
                        new PointF(ContentView.Frame.Width - 156 - 12, ContentView.Frame.Height - 33),
                        new SizeF(156, 26)),
                    PullsDown = false
                };

                this.background = new NSBox()
                {
                    Frame = new RectangleF(
                        new PointF(-1, -1),
                        new SizeF(Frame.Width + 2, this.web_view.Frame.Height + 2)),
                    FillColor   = NSColor.White,
                    BorderColor = NSColor.LightGray,
                    BoxType     = NSBoxType.NSBoxCustom
                };

                this.progress_indicator = new NSProgressIndicator()
                {
                    Frame = new RectangleF(
                        new PointF(Frame.Width / 2 - 10, this.web_view.Frame.Height / 2 + 10),
                        new SizeF(20, 20)),
                    Style = NSProgressIndicatorStyle.Spinning
                };

                this.progress_indicator.StartAnimation(this);

                ContentView.AddSubview(this.size_label);
                ContentView.AddSubview(this.size_label_value);
                ContentView.AddSubview(this.history_label);
                ContentView.AddSubview(this.history_label_value);
                ContentView.AddSubview(this.popup_button);
                ContentView.AddSubview(this.progress_indicator);
                ContentView.AddSubview(this.background);
                ContentView.AddSubview(this.hidden_close_button);

                (Delegate as SparkleEventsDelegate).WindowResized += Relayout;
            }


            // Hook up the controller events
            Controller.HideWindowEvent += delegate {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        PerformClose(this);

                        if (this.web_view.Superview == ContentView)
                        {
                            this.web_view.RemoveFromSuperview();
                        }
                    });
                }
            };

            Controller.ShowWindowEvent += delegate {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        OrderFrontRegardless();
                    });
                }
            };

            Controller.UpdateChooserEvent += delegate(string [] folders) {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        UpdateChooser(folders);
                    });
                }
            };

            Controller.UpdateContentEvent += delegate(string html) {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        UpdateContent(html);
                    });
                }
            };

            Controller.ContentLoadingEvent += delegate {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        if (this.web_view.Superview == ContentView)
                        {
                            this.web_view.RemoveFromSuperview();
                        }

                        if (this.progress_indicator.Superview != ContentView)
                        {
                            ContentView.AddSubview(this.progress_indicator);
                        }

                        this.progress_indicator.StartAnimation(this);
                    });
                }
            };

            Controller.UpdateSizeInfoEvent += delegate(string size, string history_size) {
                using (var a = new NSAutoreleasePool())
                {
                    InvokeOnMainThread(delegate {
                        this.size_label_value.StringValue    = size;
                        this.history_label_value.StringValue = history_size;
                    });
                }
            };
        }
Example #45
0
        private void ActionEvent(Id aSender)
        {
            NSPopUpButton button = aSender.CastTo <NSPopUpButton>();

            iOption.Set(button.SelectedItem.Title.ToString());
        }
Example #46
0
 public nint GetComponentCount(NSPopUpButton picker)
 {
     return((nint)1);
 }