void RecentFilesChanged(object sender, EventArgs e) { //this can get called by async dispatch after the widget is destroyed if (destroyed) { return; } foreach (var c in box.Children) { box.Remove(c); c.Destroy(); } Gtk.HBox hbox = new HBox(); var btn = new WelcomePageListButton(GettextCatalog.GetString("New..."), null, newProjectIcon, "monodevelop://MonoDevelop.Ide.Commands.FileCommands.NewProject"); btn.WidthRequest = (int)(Styles.WelcomeScreen.Pad.Solutions.SolutionTile.Width / 2.3); btn.BorderPadding = 6; btn.LeftTextPadding = 24; hbox.PackStart(btn, false, false, 0); btn = new WelcomePageListButton(GettextCatalog.GetString("Open..."), null, openProjectIcon, "monodevelop://MonoDevelop.Ide.Commands.FileCommands.OpenFile"); btn.WidthRequest = (int)(Styles.WelcomeScreen.Pad.Solutions.SolutionTile.Width / 2.3); btn.BorderPadding = 6; btn.LeftTextPadding = 24; hbox.PackStart(btn, false, false, 0); box.PackStart(hbox, false, false, 0); //TODO: pinned files foreach (var recent in DesktopService.RecentFiles.GetProjects().Take(itemCount)) { var filename = recent.FileName; if (!System.IO.File.Exists(filename)) { continue; } var accessed = recent.TimeStamp; var pixbuf = ImageService.GetIcon(GetIcon(filename), IconSize.Dnd); var button = new WelcomePageListButton(recent.DisplayName, System.IO.Path.GetDirectoryName(filename), pixbuf, "project://" + filename); button.BorderPadding = 2; button.AllowPinning = true; button.Pinned = recent.IsFavorite; //FIXME: update times as needed. currently QueryTooltip causes crashes on Windows //button.QueryTooltip += delegate (object o, QueryTooltipArgs args) { // args.Tooltip.Text = filename + "\n" + TimeSinceEdited (accessed); // args.RetVal = true; //}; //button.HasTooltip = true; button.TooltipText = filename + "\n" + TimeSinceEdited(accessed); box.PackStart(button, false, false, 0); var pinClickHandler = new PinClickHandler(filename); pinClickHandler.Register(button); } this.ShowAll(); }
void RecentFilesChanged (object sender, EventArgs e) { //this can get called by async dispatch after the widget is destroyed if (destroyed) return; foreach (var c in box.Children) { box.Remove (c); c.Destroy (); } Gtk.HBox hbox = new HBox (); var btn = new WelcomePageListButton (GettextCatalog.GetString ("New..."), null, newProjectIcon, "monodevelop://MonoDevelop.Ide.Commands.FileCommands.NewProject"); btn.WidthRequest = (int) (Styles.WelcomeScreen.Pad.Solutions.SolutionTile.Width / 2.3); btn.BorderPadding = 6; btn.LeftTextPadding = 24; hbox.PackStart (btn, false, false, 0); btn = new WelcomePageListButton (GettextCatalog.GetString ("Open..."), null, openProjectIcon, "monodevelop://MonoDevelop.Ide.Commands.FileCommands.OpenFile"); btn.WidthRequest = (int) (Styles.WelcomeScreen.Pad.Solutions.SolutionTile.Width / 2.3); btn.BorderPadding = 6; btn.LeftTextPadding = 24; hbox.PackStart (btn, false, false, 0); box.PackStart (hbox, false, false, 0); //TODO: pinned files foreach (var recent in DesktopService.RecentFiles.GetProjects ().Take (itemCount)) { var filename = recent.FileName; if (!System.IO.File.Exists (filename)) continue; var accessed = recent.TimeStamp; var pixbuf = ImageService.GetIcon (GetIcon (filename), IconSize.Dnd); var button = new WelcomePageListButton (recent.DisplayName, System.IO.Path.GetDirectoryName (filename), pixbuf, "project://" + filename); button.BorderPadding = 2; button.AllowPinning = true; button.Pinned = recent.IsFavorite; //FIXME: update times as needed. currently QueryTooltip causes crashes on Windows //button.QueryTooltip += delegate (object o, QueryTooltipArgs args) { // args.Tooltip.Text = filename + "\n" + TimeSinceEdited (accessed); // args.RetVal = true; //}; //button.HasTooltip = true; button.TooltipText = filename + "\n" + TimeSinceEdited (accessed); box.PackStart (button, false, false, 0); var pinClickHandler = new PinClickHandler (filename); pinClickHandler.Register (button); } this.ShowAll (); }