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);
        }
Example #2
0
    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...
        });
    }
Example #3
0
    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);
 }
Example #5
0
    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...
        });
    }