Exemplo n.º 1
0
        private void InitializePortsList(Gtk.TreeView portsList)
        {
            var viewModel = DataContext as SerialPortSelectorViewModel;

            var column = new Gtk.TreeViewColumn()
            {
                Title = SerialPortSelectorViewModel.PortColumnTitle
            };
            var cellRenderer = new Gtk.CellRendererText();

            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <SerialPortViewModel>(l, c, m, i, p => p.PortName));
            ////column.Sizing = Gtk.TreeViewColumnSizing.Fixed;
            ////column.FixedWidth = Properties.Settings.Default.MenuLayoutLongNameColWidth;
            ////column.Resizable = true;
            portsList.AppendColumn(column);

            portsList.Selection.Changed       += HandleSelectedPortChanged;
            portsList.Selection.SelectFunction = ShouldSelectPort;

            var serialPortsModel = new Gtk.ListStore(typeof(SerialPortViewModel));

            serialPortsModel.SynchronizeCollection(viewModel.AvailableSerialPorts);

            // TODO: Disable ports appropriately -- see ShouldSelect
            // TODO: Customize renderer somehow for disabled items to draw differently --
            // Tinkering with CellRendererText.Foreground does not work as desired.
            portsList.Model = serialPortsModel;

            viewModel.AvailableSerialPorts.CollectionChanged += HandleAvailablePortsChanged;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="INTV.Shared.View.RomListView"/> class.
        /// </summary>
        /// <param name="viewModel">The data context for this visual.</param>
        public RomListView(RomListViewModel viewModel)
        {
            // TODO: Set up sorting!
            // TODO: DragDrop!
            DataContext = viewModel;
            this.Build();
            var treeView = _romListView;

            treeView.Selection.Mode = Gtk.SelectionMode.Multiple;
            treeView.HasTooltip     = true;
            treeView.EnableModelDragDest(RomListViewModel.DragDropTargetEntries, Gdk.DragAction.Private);
            treeView.EnableModelDragSource(Gdk.ModifierType.Button1Mask, RomListViewModel.DragDropSourceEntries, Gdk.DragAction.Copy);

            var column = new Gtk.TreeViewColumn();

            Gtk.CellRenderer cellRenderer = new Gtk.CellRendererPixbuf();
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellImageColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => p.RomFileStatusIcon));
            column.Sizing     = Gtk.TreeViewColumnSizing.Fixed;
            column.FixedWidth = 20;
            treeView.AppendColumn(column);

            column = new Gtk.TreeViewColumn()
            {
                Title = RomListViewModel.TitleHeader
            };
            cellRenderer = new Gtk.CellRendererText();
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => p.Name));
            column.Sizing     = Gtk.TreeViewColumnSizing.Fixed;
            column.FixedWidth = Properties.Settings.Default.RomListNameColWidth;
            column.Resizable  = true;
            treeView.AppendColumn(column);

            column = new Gtk.TreeViewColumn()
            {
                Title = RomListViewModel.CompanyHeader
            };
            cellRenderer = new Gtk.CellRendererText();
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => p.Vendor));
            column.Sizing     = Gtk.TreeViewColumnSizing.Fixed;
            column.FixedWidth = Properties.Settings.Default.RomListVendorColWidth;
            column.Resizable  = true;
            treeView.AppendColumn(column);

            column = new Gtk.TreeViewColumn()
            {
                Title = RomListViewModel.YearHeader
            };
            cellRenderer = new Gtk.CellRendererText();
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => p.Year));
            column.Sizing     = Gtk.TreeViewColumnSizing.Fixed;
            column.FixedWidth = Properties.Settings.Default.RomListYearColWidth;
            column.Resizable  = true;
            treeView.AppendColumn(column);

            column = new Gtk.TreeViewColumn()
            {
                Title = RomListViewModel.FeaturesHeader
            };
            cellRenderer        = new Gtk.CellRendererPixbuf();
            cellRenderer.Xalign = 0;
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellImageColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => INTV.Shared.Converter.ProgramFeaturesToPixbufConverter.ConvertToPixbuf(p)));
            column.Sizing     = Gtk.TreeViewColumnSizing.Fixed;
            column.FixedWidth = Properties.Settings.Default.RomListFeaturesColWidth;
            column.Resizable  = true;
            treeView.AppendColumn(column);

            column = new Gtk.TreeViewColumn()
            {
                Title = RomListViewModel.RomFileHeader
            };
            cellRenderer = new Gtk.CellRendererText();
            column.PackStart(cellRenderer, true);
            column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <ProgramDescriptionViewModel>(l, c, m, i, p => p.Rom.RomPath));
            ////column.Sizing = Gtk.TreeViewColumnSizing.Fixed;
            ////column.FixedWidth = Properties.Settings.Default.RomListPathColWidth;
            column.Resizable = true;
            treeView.AppendColumn(column);

            treeView.QueryTooltip += HandleQueryTooltip;

            ////column = new Gtk.TreeViewColumn() { Title = "Manual" };
            ////cellRenderer = new Gtk.CellRendererText();
            ////column.PackStart(cellRenderer, true);
            ////column.SetCellDataFunc(cellRenderer, (l,c,m,i) =>VisualHelpers.CellTextColumnRenderer<ProgramDescriptionViewModel>(l,c,m,i, p => p.ManualPath));
            ////column.Sizing = Gtk.TreeViewColumnSizing.Fixed;
            ////column.FixedWidth = Properties.Settings.Default.RomListManualPathColWidth;;
            ////column.Resizable = true;
            ////treeView.AppendColumn(column);

            var romListStore = new Gtk.ListStore(typeof(ProgramDescriptionViewModel));

            romListStore.SynchronizeCollection(viewModel.Programs);
            treeView.Model = romListStore;

            // Hackish way to get the visibility right.
            HandleSettingsChanged(Properties.Settings.Default, new System.ComponentModel.PropertyChangedEventArgs(Properties.Settings.ShowRomDetailsSettingName));
            Properties.Settings.Default.PropertyChanged += HandleSettingsChanged;
            viewModel.Programs.CollectionChanged        += HandleProgramsChanged;
            viewModel.Model.ProgramStatusChanged        += HandleProgramStatusChanged;

            treeView.Selection.Changed += HandleSelectionChanged;
            ViewModel.CurrentSelection.CollectionChanged += HandleViewModelSelectionChanged;
        }