Esempio n. 1
0
 public void Remove(TorrentLabel label)
 {
     if (Labels.Remove(label))
     {
         Event.Raise <LabelEventArgs> (Removed, this, new LabelEventArgs(label));
     }
 }
Esempio n. 2
0
        private void BuildContextMenu()
        {
            contextMenu = new Menu();

            createItem            = new ImageMenuItem(_("Create"));
            createItem.Image      = new Image(Stock.Add, IconSize.Menu);
            createItem.Activated += Event.Wrap((EventHandler) delegate(object o, EventArgs e) {
                Controller.Add(new TorrentLabel(_("New Label")));
            });
            contextMenu.Append(createItem);

            removeItem       = new ImageMenuItem(_("Remove"));
            removeItem.Image = new Image(Stock.Remove, IconSize.Menu);
            contextMenu.Add(removeItem);
            removeItem.Activated += Event.Wrap((EventHandler) delegate(object o, EventArgs e) {
                TreeIter iter;
                if (!Selection.GetSelected(out iter))
                {
                    return;
                }

                TorrentLabel label = (TorrentLabel)Model.GetValue(iter, 0);
                if (label.Immutable)
                {
                    return;
                }

                Controller.Remove(label);
            });
        }
Esempio n. 3
0
        public LabelController()
        {
            All = new TorrentLabel (_("All"), "gtk-home", true);
            Delete = new TorrentLabel (_("Remove"), "gtk-remove", true);
            Downloading = new TorrentLabel (_("Downloading"), "gtk-go-down", true);
            Seeding = new TorrentLabel (_("Seeding"), "gtk-go-up", true);
            Selection = All;

            Labels = new List<TorrentLabel> { All, Downloading, Seeding };
            HookEvents ();
        }
Esempio n. 4
0
        public LabelController()
        {
            All         = new TorrentLabel(_("All"), "gtk-home", true);
            Delete      = new TorrentLabel(_("Remove"), "gtk-remove", true);
            Downloading = new TorrentLabel(_("Downloading"), "gtk-go-down", true);
            Seeding     = new TorrentLabel(_("Seeding"), "gtk-go-up", true);
            Selection   = All;

            Labels = new List <TorrentLabel> {
                All, Downloading, Seeding
            };
            HookEvents();
        }
Esempio n. 5
0
        protected virtual void OnAddLabelButtonClicked(object sender, System.EventArgs e)
        {
            TorrentLabel label;

            if (selectedIcon != null)
            {
                label = new TorrentLabel(nameEntry.Text, selectedIcon);
            }
            else
            {
                label = new TorrentLabel(nameEntry.Text);
            }
            labelController.Add(label);
        }
Esempio n. 6
0
        void Remove(TorrentLabel label)
        {
            TreeIter iter;

            if (Model.GetIterFirst(out iter))
            {
                do
                {
                    if (Model.GetValue(iter, 0) != label)
                    {
                        continue;
                    }

                    label.Added   -= LabelChanged;
                    label.Removed -= LabelChanged;
                    Model.Remove(ref iter);
                    return;
                } while (Model.IterNext(ref iter));
            }
        }
Esempio n. 7
0
        private void OnLabelSelectionChanged(object o, System.EventArgs args)
        {
            TreeIter  iter;
            TreeModel model;

            if (((TreeSelection)o).GetSelected(out model, out iter))
            {
                TorrentLabel label = (TorrentLabel)model.GetValue(iter, 0);
                if (label.Name == "All" || label.Name == "Downloading" || label.Name == "Seeding")
                {
                    removeLabelButton.Sensitive = false;
                }
                else
                {
                    removeLabelButton.Sensitive = true;
                }
                return;
            }
            removeLabelButton.Sensitive = false;
        }
Esempio n. 8
0
        private void buildColumns()
        {
            Model = new ListStore(typeof(TorrentLabel), typeof(Gdk.Pixbuf),
                                  typeof(string), typeof(string), typeof(bool));

            iconColumn = new TreeViewColumn();
            nameColumn = new TreeViewColumn();
            sizeColumn = new TreeViewColumn();

            Gtk.CellRendererPixbuf iconRendererCell = new Gtk.CellRendererPixbuf();
            Gtk.CellRendererText   nameRendererCell = new Gtk.CellRendererText {
                Editable = true
            };
            Gtk.CellRendererText sizeRendererCell = new Gtk.CellRendererText();

            iconColumn.PackStart(iconRendererCell, true);
            nameColumn.PackStart(nameRendererCell, true);
            sizeColumn.PackStart(sizeRendererCell, true);

            iconColumn.AddAttribute(iconRendererCell, "pixbuf", 1);
            nameColumn.AddAttribute(nameRendererCell, "text", 2);
            sizeColumn.AddAttribute(sizeRendererCell, "text", 3);
            nameColumn.AddAttribute(nameRendererCell, "editable", 4);

            AppendColumn(iconColumn);
            AppendColumn(nameColumn);
            AppendColumn(sizeColumn);

            nameRendererCell.Edited += Event.Wrap((EditedHandler) delegate(object o, Gtk.EditedArgs args) {
                Gtk.TreeIter iter;
                if (Model.GetIter(out iter, new Gtk.TreePath(args.Path)))
                {
                    TorrentLabel label = (TorrentLabel)Model.GetValue(iter, 0);
                    label.Name         = args.NewText;
                }
            });
        }
Esempio n. 9
0
        public TorrentTreeView() : base()
        {
            Torrents = new ListStore(typeof(Download), typeof(string), typeof(string),
                                     typeof(int), typeof(string), typeof(string),
                                     typeof(string), typeof(string), typeof(string),
                                     typeof(string), typeof(string), typeof(string), typeof(string));

            FilterModel             = new Gtk.TreeModelFilter(Torrents, null);
            FilterModel.VisibleFunc = delegate(TreeModel model, TreeIter iter) {
                return(Filter == null ? true : Filter((Download)model.GetValue(iter, 0)));
            };
            Model = FilterModel;
            this.torrentController = ServiceManager.Get <TorrentController> ();

            buildColumns();

            Reorderable        = true;
            HeadersVisible     = true;
            HeadersClickable   = true;
            Selection.Mode     = SelectionMode.Multiple;
            Selection.Changed += Event.Wrap(delegate(object o, EventArgs e) {
                TreeIter iter;
                TreePath [] selectedTorrents = Selection.GetSelectedRows();

                List <Download> downloads = new List <Download> ();
                foreach (TreePath path in Selection.GetSelectedRows())
                {
                    if (Torrents.GetIter(out iter, path))
                    {
                        downloads.Add((Download)Torrents.GetValue(iter, 0));
                    }
                }

                torrentController.Select(downloads);
            });

            sourceEntries = new TargetEntry [] {
                new TargetEntry(RowAtom.Name, TargetFlags.App, 0)
            };
            targetEntries = new TargetEntry [] {
                new TargetEntry(RowAtom.Name, TargetFlags.Widget, 0),
                new TargetEntry(FileAtom.Name, TargetFlags.OtherApp, 0)
            };
            EnableModelDragSource(Gdk.ModifierType.Button1Mask, sourceEntries, Gdk.DragAction.Copy);
            EnableModelDragDest(targetEntries, Gdk.DragAction.Copy);
            DragDataGet += OnTorrentDragDataGet;

            menu = new TorrentContextMenu();
            torrentController.Added += delegate(object sender, DownloadAddedEventArgs e) {
                AddDownload(e.Download);
            };
            torrentController.Removed += delegate(object sender, DownloadAddedEventArgs e) {
                RemoveDownload(e.Download);
            };

            LabelController lc = ServiceManager.Get <LabelController> ();

            lc.SelectionChanged += delegate {
                TorrentLabel label = lc.Selection;
                Filter = delegate(Download download) {
                    return(label.Torrents.Contains(download));
                };
            };

            // FIXME: This shouldn't be necessary
            torrentController.Torrents.ForEach(AddDownload);
        }
Esempio n. 10
0
 public LabelEventArgs(TorrentLabel label)
 {
     Label = label;
 }
Esempio n. 11
0
 public void Remove(TorrentLabel label)
 {
     if (Labels.Remove (label))
         Event.Raise <LabelEventArgs> (Removed, this, new LabelEventArgs (label));
 }
Esempio n. 12
0
 public void Add(TorrentLabel label)
 {
     Labels.Add (label);
     Event.Raise <LabelEventArgs> (Added, this, new LabelEventArgs (label));
 }
Esempio n. 13
0
 protected virtual void OnAddLabelButtonClicked(object sender, System.EventArgs e)
 {
     TorrentLabel label;
     if (selectedIcon != null) {
         label = new TorrentLabel(nameEntry.Text, selectedIcon);
     } else {
         label = new TorrentLabel(nameEntry.Text);
     }
     labelController.Add(label);
 }
Esempio n. 14
0
 void Add(TorrentLabel label)
 {
     UpdateSize(Model.AppendValues(label, label.Icon, label.Name, "", !label.Immutable));
     label.Added   += LabelChanged;
     label.Removed += LabelChanged;
 }
Esempio n. 15
0
        void Remove(TorrentLabel label)
        {
            TreeIter iter;
            if (Model.GetIterFirst (out iter)) {
                do {
                    if (Model.GetValue (iter, 0) != label)
                        continue;

                    label.Added -= LabelChanged;
                    label.Removed -= LabelChanged;
                    Model.Remove (ref iter);
                    return;
                } while (Model.IterNext (ref iter));
            }
        }
Esempio n. 16
0
 void Add(TorrentLabel label)
 {
     UpdateSize (Model.AppendValues (label, label.Icon, label.Name, "", !label.Immutable));
     label.Added += LabelChanged;
     label.Removed += LabelChanged;
 }
Esempio n. 17
0
        void UpdateSize(TreeIter iter)
        {
            TorrentLabel label = (TorrentLabel)Model.GetValue(iter, 0);

            Model.SetValue(iter, 3, "(" + label.Size + ")");
        }
Esempio n. 18
0
 public void Add(TorrentLabel label)
 {
     Labels.Add(label);
     Event.Raise <LabelEventArgs> (Added, this, new LabelEventArgs(label));
 }