public MostRecentlyUsedService(IEventAggregator eventAggregator, IUserSettings userSettings, ISolutionItemDeserializerRegistry deserializer, ISolutionItemSerializerRegistry serializer) { this.deserializer = deserializer; this.serializer = serializer; var previous = userSettings.Get <Data>(new Data(new List <MruEntry>())); mostRecentlyUsed = previous.Items; eventAggregator.GetEvent <EventRequestOpenItem>().Subscribe(item => { var serialized = TrySerialize(item); if (serialized == null) { return; } MruEntry entry = new MruEntry(serialized.Type, serialized.Value, serialized.Value2, serialized.StringValue); mostRecentlyUsed.Remove(entry); if (mostRecentlyUsed.Count >= MaxMruEntries) { mostRecentlyUsed.RemoveAt(mostRecentlyUsed.Count - 1); } mostRecentlyUsed.Insert(0, entry); userSettings.Update <Data>(new Data(mostRecentlyUsed)); }, true); }
private void UpdateRecentDocuments() { // remove all old MenuItems MenuItemMruEntries.ForEach(delegate(MruEntry o){ MenuItemLevel_menu.Remove(o.MenuItem); }); MenuItemMruEntries.Clear(); // find out where to insert the MenuItems int insertAt = 0; foreach (Gtk.Widget w in MenuItemLevel_menu.Children) { insertAt++; if (w == MenuItemMruBegin) { break; } } // add all new MenuItems Settings.Instance.RecentDocuments.ForEach(delegate(string fileName){ string shortLabel = System.IO.Path.GetFileName(fileName); MruEntry e = new MruEntry(); e.MenuItem = new Gtk.MenuItem(shortLabel); e.MenuItem.Activated += OnMruEntry; e.FileName = fileName; MenuItemMruEntries.Add(e); MenuItemLevel_menu.Insert(e.MenuItem, insertAt); e.MenuItem.Show(); //everything is hidden when created... }); }
private void UpdateRecentDocuments() { // FIXME: Inserting new items at run-time doesn't seem to have an effect. For now we simply don't remove any some there's at least something to click on /* * // remove all old MenuItems * MenuItemMruEntries.ForEach(delegate(MruEntry o){ MenuItemLevel_menu.Remove(o.MenuItem); }); * MenuItemMruEntries.Clear(); */ // find out where to insert the MenuItems int insertAt = 0; foreach (Widget w in MenuItemLevel_menu.Children) { insertAt++; if (w == MenuItemMruBegin) { break; } } // add all new MenuItems Settings.Instance.RecentDocuments.ForEach(delegate(string fileName){ string shortLabel = System.IO.Path.GetFileName(fileName); MruEntry e = new MruEntry(); e.MenuItem = new Gtk.MenuItem(shortLabel); e.MenuItem.Activated += OnMruEntry; e.FileName = fileName; MenuItemMruEntries.Add(e); MenuItemLevel_menu.Insert(e.MenuItem, insertAt); }); }
protected bool Equals(MruEntry other) { return(Type == other.Type && Value == other.Value && Value2 == other.Value2 && StringValue == other.StringValue); }
private void UpdateRecentDocuments() { // remove all old MenuItems MenuItemMruEntries.ForEach(delegate(MruEntry o){ MenuItemLevel_menu.Remove(o.MenuItem); }); MenuItemMruEntries.Clear(); // find out where to insert the MenuItems int insertAt = 0; foreach (Gtk.Widget w in MenuItemLevel_menu.Children) { insertAt++; if (w == MenuItemMruBegin) break; } // add all new MenuItems Settings.Instance.RecentDocuments.ForEach(delegate(string fileName){ string shortLabel = System.IO.Path.GetFileName(fileName); MruEntry e = new MruEntry(); e.MenuItem = new Gtk.MenuItem(shortLabel); e.MenuItem.Activated += OnMruEntry; e.FileName = fileName; MenuItemMruEntries.Add(e); MenuItemLevel_menu.Insert(e.MenuItem, insertAt); e.MenuItem.Show(); //everything is hidden when created... }); }