// Constructor /// <summary>Creates a new Add Album window.</summary> /// <remarks>This is created when "Play Album" is clicked.</remarks> public AddAlbumWindow() { base.Title = string_title; base.SetGConfSize (GConfKeyWidth, GConfDefaultWidth, GConfKeyHeight, GConfDefaultHeight); base.Items = Global.DB.Albums.Values; base.List.Model.SortFunc = new HandleModel.CompareFunc(SortFunc); // Column Gtk.TreeViewColumn col = new Gtk.TreeViewColumn(); col.Sizing = Gtk.TreeViewColumnSizing.Fixed; col.Spacing = 4; col.PackStart(pixbuf_renderer, false); col.PackStart(base.TextRenderer, true); // Data functions Gtk.TreeCellDataFunc func; func = new Gtk.TreeCellDataFunc(PixbufCellDataFunc); col.SetCellDataFunc(pixbuf_renderer, func); func = new Gtk.TreeCellDataFunc(TextCellDataFunc); col.SetCellDataFunc(base.TextRenderer, func); // Add column base.List.AppendColumn(col); // Setup drag and drop base.List.DragSource = source_entries; base.List.DragDataGet += OnDragDataGet; // Setup handlers Global.DB.AlbumAdded += base.OnAdded; Global.DB.AlbumChanged += base.OnChanged; Global.DB.AlbumRemoved += base.OnRemoved; Global.CoverDB.DoneLoading += OnCoversDoneLoading; // Enable drag and drop if we're not busy loading covers. if (!Global.CoverDB.Loading) { EnableDragDest(); } }
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; }
protected override void OnElementChanged(ElementChangedEventArgs <TreeView> e) { if (Control == null) { _treeView = new Gtk.TreeView(); _treeView.HeadersVisible = false; Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(); Gtk.CellRendererText cell = new Gtk.CellRendererText(); column.PackStart(cell, true); column.AddAttribute(cell, "text", 0); column.SetCellDataFunc(cell, new Gtk.TreeCellDataFunc(OnTextFunc)); _treeView.AppendColumn(column); _treeView.RowExpanded += OnRowExpanded; _treeView.RowCollapsed += OnRowCollapsed; _treeView.Selection.Changed += OnSelectionChanged; Add(_treeView); _treeView.ShowAll(); SetNativeControl(_treeView); } if (e.NewElement != null) { UpdateItems(); UpdateRowHeight(); UpdateRowTextColor(); } base.OnElementChanged(e); }
public ChatTreeView() { ThemeSettings = new ThemeSettings(); TreeStore = new Gtk.TreeStore(typeof(ChatView)); TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending); TreeStore.SetSortFunc(0, SortTreeStore); Model = TreeStore; HeadersVisible = false; BorderWidth = 0; Selection.Mode = Gtk.SelectionMode.Browse; Selection.Changed += (sender, e) => { Gtk.TreeIter iter; if (!Selection.GetSelected(out iter)) { return; } var path = TreeStore.GetPath(iter); f_CurrentChatNumber = GetRowNumber(path); }; var iconRenderer = new Gtk.CellRendererPixbuf(); var column = new Gtk.TreeViewColumn(null, iconRenderer); column.Spacing = 0; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon)); AppendColumn(column); var cellRenderer = new Gtk.CellRendererText(); column = new Gtk.TreeViewColumn(null, cellRenderer); column.Spacing = 0; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName)); AppendColumn(column); }
public SourceList() { _listModel = new SourceListModel(); this.Build(); Gtk.TreeViewColumn titleCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); titleCol.Title = "Title"; titleCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; titleCol.PackStart(rend,true); titleCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderSourceTitle)); titleCol.Resizable = true; rend.Width = 200; titleCol.MinWidth = 200; // Gtk.TreeViewColumn dateCol = new Gtk.TreeViewColumn(); // rend = new Gtk.CellRendererText(); // dateCol.Title = "Date"; // dateCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; // dateCol.PackStart(rend,false); // dateCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderSourceDate)); // dateCol.MinWidth = 150; SourceTreeView.AppendColumn(titleCol); // SourceTreeView.AppendColumn(dateCol); SourceTreeView.Model = null; _filterText = string.Empty; Gtk.TreeSelection selection = SourceTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); }
public SourceCitationList() { this.Build(); _listModel = new SourceCitationListModel(); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn citationCountCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); citationCountCol.Title = "No."; citationCountCol.PackStart(rend,true); citationCountCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderCitationCount)); Gtk.TreeViewColumn citationCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); citationCol.Title = "Text"; citationCol.PackStart(rend,true); citationCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderSourceCitation)); SourceCitationTreeView.AppendColumn(buttonCol); SourceCitationTreeView.AppendColumn(citationCountCol); SourceCitationTreeView.AppendColumn(citationCol); SourceCitationTreeView.Model = _listModel.Adapter; Gtk.TreeSelection selection = SourceCitationTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); }
// Constructor /// <summary>Creates a new Add Song window.</summary> /// <remarks>This is created when "Play Song" is clicked.</remarks> public AddSongWindow() { base.Title = string_title; base.SetGConfSize (GConfKeyWidth, GConfDefaultWidth, GConfKeyHeight, GConfDefaultHeight); base.Items = Global.DB.Songs.Values; base.List.Model.SortFunc = new HandleModel.CompareFunc(SortFunc); // Column Gtk.TreeViewColumn col = new Gtk.TreeViewColumn(); col.Sizing = Gtk.TreeViewColumnSizing.Fixed; col.PackStart(base.TextRenderer, true); Gtk.TreeCellDataFunc func = new Gtk.TreeCellDataFunc(CellDataFunc); col.SetCellDataFunc(base.TextRenderer, func); base.List.AppendColumn(col); // Setup drag and drop base.List.DragSource = source_entries; base.List.DragDataGet += OnDragDataGet; // Setup handlers Global.DB.SongAdded += base.OnAdded; Global.DB.SongChanged += base.OnChanged; Global.DB.SongRemoved += base.OnRemoved; }
public NotesView() { this.Build(); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-index"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn noteCountCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); noteCountCol.Title = "No."; noteCountCol.PackStart(rend,true); noteCountCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderNoteCount)); Gtk.TreeViewColumn noteCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); noteCol.Title = "Text"; noteCol.PackStart(rend,true); noteCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderNote)); NotesTreeView.AppendColumn(buttonCol); NotesTreeView.AppendColumn(noteCountCol); NotesTreeView.AppendColumn(noteCol); Model = new NoteListModel(); Gtk.TreeSelection selection = NotesTreeView.Selection; selection.Changed += new EventHandler(OnNoteSelection_Changed); }
public ChatTreeView() { ThemeSettings = new ThemeSettings(); TreeStore = new Gtk.TreeStore(typeof(ChatView)); TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending); TreeStore.SetSortFunc(0, SortTreeStore); Model = TreeStore; HeadersVisible = false; BorderWidth = 0; ShowExpanders = false; LevelIndentation = 12; Selection.Mode = Gtk.SelectionMode.Browse; Selection.Changed += (sender, e) => { Gtk.TreeIter iter; if (!Selection.GetSelected(out iter) && TreeStore.GetIterFirst(out iter)) { Selection.SelectIter(iter); return; } if (Gtk.TreeIter.Zero.Equals(iter)) { // no chat views available; this happens during shutdown return; } var path = TreeStore.GetPath(iter); f_CurrentChatNumber = GetRowNumber(path); }; var iconRenderer = new Gtk.CellRendererPixbuf(); var column = new Gtk.TreeViewColumn(null, iconRenderer); column.Spacing = 0; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon)); AppendColumn(column); var cellRenderer = new Gtk.CellRendererText() { Ellipsize = Pango.EllipsizeMode.End }; column = new Gtk.TreeViewColumn(null, cellRenderer); column.Spacing = 0; column.Expand = true; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName)); AppendColumn(column); cellRenderer = new Gtk.CellRendererText(); column = new Gtk.TreeViewColumn(null, cellRenderer); column.Spacing = 0; column.Alignment = 1; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity)); AppendColumn(column); ActivityColumn = column; }
public Gtk.TreeViewColumn AppendColumn (string title, Gtk.CellRenderer cell, Gtk.NodeCellDataFunc cell_data) { Gtk.TreeViewColumn col = new Gtk.TreeViewColumn (); col.Title = title; col.PackStart (cell, true); col.SetCellDataFunc (cell, cell_data); AppendColumn (col); return col; }
public TreeViewColumn AppendColumn(string title, CellRenderer cell, CellLayoutDataFunc cell_data) { Gtk.TreeViewColumn col = new Gtk.TreeViewColumn(); col.Title = title; col.PackStart(cell, true); col.SetCellDataFunc(cell, cell_data); AppendColumn(col); return(col); }
public ScrapBookView() { _recListModel = new MultimediaRecordListModel(); _listModel = new MultimediaFileListModel(); this.Build(); Gtk.TreeViewColumn titleCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); titleCol.Title = "Record Title"; titleCol.PackStart(rend,true); titleCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderMultimediaRecordTitle)); RecordTreeView.AppendColumn(titleCol); RecordTreeView.Model = null; Gtk.TreeSelection selection = RecordTreeView.Selection; selection.Changed += new EventHandler(OnRecordSelection_Changed); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-open"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn filenameCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); filenameCol.Title = "Filename"; filenameCol.PackStart(rend,true); filenameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderMultimediaFilename)); Gtk.TreeViewColumn typeCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); typeCol.Title = "Type"; typeCol.PackStart(rend,true); typeCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderMultimediaType)); Gtk.TreeViewColumn formatCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); formatCol.Title = "Format"; formatCol.PackStart(rend,true); formatCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderMultimediaFormat)); FileTreeView.AppendColumn(buttonCol); FileTreeView.AppendColumn(filenameCol); FileTreeView.AppendColumn(typeCol); FileTreeView.AppendColumn(formatCol); FileTreeView.Model = null; selection = FileTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); }
public TableColumn(string name, int sortColumnId, Gtk.TreeCellDataFunc dataFunc) { Cell = new Gtk.CellRendererText (); Column = new Gtk.TreeViewColumn (); Column.Title = name; Column.SortColumnId = sortColumnId; Column.PackStart (Cell, true); Column.Expand = true; Column.SetCellDataFunc (Cell, dataFunc); }
public ChatTreeView() { ThemeSettings = new ThemeSettings(); TreeStore = new Gtk.TreeStore(typeof(ChatView)); TreeStore.SetSortColumnId(0, Gtk.SortType.Ascending); TreeStore.SetSortFunc(0, SortTreeStore); Model = TreeStore; HeadersVisible = false; BorderWidth = 0; ShowExpanders = false; LevelIndentation = 12; Selection.Mode = Gtk.SelectionMode.Browse; Selection.Changed += (sender, e) => { Gtk.TreeIter iter; if (!Selection.GetSelected(out iter) && TreeStore.GetIterFirst(out iter)) { Selection.SelectIter(iter); return; } var path = TreeStore.GetPath(iter); f_CurrentChatNumber = GetRowNumber(path); }; var iconRenderer = new Gtk.CellRendererPixbuf(); var column = new Gtk.TreeViewColumn(null, iconRenderer); column.Spacing = 0; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(iconRenderer, new Gtk.TreeCellDataFunc(RenderChatViewIcon)); AppendColumn(column); var cellRenderer = new Gtk.CellRendererText() { Ellipsize = Pango.EllipsizeMode.End }; column = new Gtk.TreeViewColumn(null, cellRenderer); column.Spacing = 0; column.Expand = true; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewName)); AppendColumn(column); cellRenderer = new Gtk.CellRendererText(); column = new Gtk.TreeViewColumn(null, cellRenderer); column.Spacing = 0; column.Alignment = 1; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellRenderer, new Gtk.TreeCellDataFunc(RenderChatViewActivity)); AppendColumn(column); ActivityColumn = column; }
public IndividualList() { this.Build(); _nameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); _nameCol.Title = "Name"; _nameCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; _nameCol.PackStart(rend,true); _nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualName)); _nameCol.Resizable = true; rend.Width = 200; _nameCol.MinWidth = 250; _dobCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); _dobCol.Title = "Date of Birth"; _dobCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; _dobCol.PackStart(rend,false); _dobCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualDob)); _dobCol.Resizable = false; _dobCol.MinWidth = 150; _preferedCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererToggle(); ((Gtk.CellRendererToggle)rend).Radio = true; ((Gtk.CellRendererToggle)rend).Mode = Gtk.CellRendererMode.Activatable; ((Gtk.CellRendererToggle)rend).Activatable = true; ((Gtk.CellRendererToggle)rend).Toggled += new Gtk.ToggledHandler(Prefered_Toggled); _preferedCol.Title = "Prefered"; _preferedCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; _preferedCol.PackStart(rend,true); _preferedCol.Resizable = false; _preferedCol.MinWidth = 50; _preferedCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderPreferedSpouse)); _preferedCol.Visible = false; IndividualTreeView.AppendColumn(_nameCol); IndividualTreeView.AppendColumn(_dobCol); IndividualTreeView.AppendColumn(_preferedCol); IndividualTreeView.Model = null; _filterText = string.Empty; Gtk.TreeSelection selection = IndividualTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); SoundexCheckBox.Toggled += new EventHandler(OnSoundexCheckBox_Toggled); }
private void BuildFontFamilyTree() { fontListStore = new Gtk.ListStore(typeof(string), typeof(Pango.FontFamily)); treeFont.Model = fontListStore; treeFont.HeadersVisible = false; treeFont.Selection.Changed += HandleSelectionFontFamily; Gtk.TreeViewColumn fontNameColumn = new Gtk.TreeViewColumn(); Gtk.CellRendererText fontNameCell = new Gtk.CellRendererText(); fontNameColumn.Title = "Font"; fontNameColumn.PackStart(fontNameCell, false); fontNameColumn.SetCellDataFunc(fontNameCell, new Gtk.TreeCellDataFunc(RenderCellFamilyName)); treeFont.AppendColumn(fontNameColumn); LoadFonts(); }
private void BuildFontFamilyTree() { fontListStore = new Gtk.ListStore (typeof(string), typeof(Pango.FontFamily)); treeFont.Model = fontListStore; treeFont.HeadersVisible = false; treeFont.Selection.Changed += HandleSelectionFontFamily; Gtk.TreeViewColumn fontNameColumn = new Gtk.TreeViewColumn (); Gtk.CellRendererText fontNameCell = new Gtk.CellRendererText (); fontNameColumn.Title = "Font"; fontNameColumn.PackStart (fontNameCell, false); fontNameColumn.SetCellDataFunc(fontNameCell, new Gtk.TreeCellDataFunc (RenderCellFamilyName)); treeFont.AppendColumn (fontNameColumn); LoadFonts(); }
protected override void addHeaderColumn(VirtualGridHeaderColumn headercolumn) { //throw new Exception("is it used ??"); base.addHeaderColumn(headercolumn); Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(); column.Visible = headercolumn.Visible; column.Title = headercolumn.ColumnName; column.Resizable = true; //Gtk.CellRendererText artistNameCell = new Gtk.CellRendererText(); Gtk.CellRenderer renderer; //Gtk.CellRendererCombo artistNameCell = new Gtk.CellRendererCombo(); if (!String.IsNullOrEmpty(headercolumn.Renderer)) { Type tp = Type.GetType(headercolumn.Renderer); renderer = (Gtk.CellRenderer)Sharpend.Utils.Reflection.createInstance(tp); } else { renderer = new Gtk.CellRendererText(); //renderer = treecellrenderer; } column.PackStart(renderer, true); Tree.AppendColumn(column); String attribute = "text"; if (headercolumn.ColumnType.Equals("Gdk.Pixbuf,gdk-sharp", StringComparison.OrdinalIgnoreCase)) { attribute = "pixbuf"; } if (OnTreeCellData != null) { column.SetCellDataFunc(renderer, OnTreeCellData); } column.AddAttribute(renderer, attribute, HeaderColumns.Count - 1); }
public AddressView() { this.Build(); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-index"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-edit"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); nameCol.Title = "Type"; nameCol.PackStart(rend,true); nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventName)); Gtk.TreeViewColumn dateCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); dateCol.Title = "Date"; dateCol.PackStart(rend,true); dateCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventDate)); dateCol.SortColumnId = 0; ResiTreeView.AppendColumn(buttonCol); ResiTreeView.AppendColumn(nameCol); ResiTreeView.AppendColumn(dateCol); Gtk.TreeSelection selection = ResiTreeView.Selection; selection.Changed += new EventHandler(OnResiSelection_Changed); // RESI event list for addresses _eventListModel = new EventListModel(); _eventListModel.FilterType = GedcomEvent.GedcomEventType.RESIFact; }
public SidePaneTreeView(SidePaneTreeStore sidePaneStore) { Model = sidePaneStore; var filterTextDataFunc = new Gtk.TreeCellDataFunc(RenderFilterColumnTextFromBibtexRecords); var col = new Gtk.TreeViewColumn("Filter", new Gtk.CellRendererText(), "text"); col.SetCellDataFunc(col.Cells[0], filterTextDataFunc); col.Sizing = Gtk.TreeViewColumnSizing.Autosize; AppendColumn(col); Gtk.TreePath path = sidePaneStore.GetPathAll(); SetCursor(path, col, false); // Callbacks for the sidePaneTreeView //Selection.Changed += OnSidePaneTreeSelectionChanged; Show(); }
public IrcGroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); if (PersonTreeView != null) { Gtk.CellRendererText cellr = new Gtk.CellRendererText(); // HACK: for some reason GTK is giving the space of 2 chars which // we workaround using a char width of 0 cellr.WidthChars = 0; Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(String.Empty, cellr); column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.GrowOnly; column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(_RenderIrcGroupPersonMode)); PersonTreeView.AppendColumn(column); PersonTreeView.MoveColumnAfter(IdentityNameColumn, column); } }
public IrcGroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); if (PersonTreeView != null) { Gtk.CellRendererText cellr = new Gtk.CellRendererText(); // HACK: for some reason GTK is giving the space of 2 chars which // we workaround using a char width of 0 cellr.WidthChars = 0; Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(String.Empty, cellr); column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.GrowOnly; column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(RenderIrcGroupPersonMode)); PersonTreeView.AppendColumn(column); PersonTreeView.MoveColumnAfter(IdentityNameColumn, column); } }
/// <summary> /// Loads the files in the Assemblies.env into the TreeView. /// </summary> /// <param name='files'> /// Files. /// </param> /// private void LoadFilesInTreeView(string [] files) { Gtk.TreeViewColumn col = new Gtk.TreeViewColumn(); Gtk.CellRendererText colAssemblyCell = new Gtk.CellRendererText(); col.PackStart(colAssemblyCell, true); col.AddAttribute(colAssemblyCell, "text", 0); if (assemblyTree.GetColumn(0) != null) { assemblyTree.Columns[0] = col; } else { assemblyTree.AppendColumn(col); } store = assemblyTree.Model as Gtk.TreeStore; if (store == null) { store = new Gtk.TreeStore(typeof(object)); } foreach (string file in files) { if (File.Exists(file)) { store.AppendValues(AssemblyDefinition.ReadAssembly(file)); } else { ShowMessageGtk(String.Format("File {0} doesn't exits.", file)); } } // Add functions managinig the visualization of those assembly definitions col.SetCellDataFunc(colAssemblyCell, new Gtk.TreeCellDataFunc(RenderAssemblyDefinition)); assemblyTree.Model = store; assemblyTree.ShowAll(); }
public RepositoryList() { _listModel = new RepositoryListModel(); this.Build(); Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); nameCol.Title = "Name"; nameCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; nameCol.PackStart(rend,true); nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderRepositoryName)); RepositoryTreeView.AppendColumn(nameCol); RepositoryTreeView.Model = null; _filterText = string.Empty; Gtk.TreeSelection selection = RepositoryTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); }
public NameView() { this.Build(); _names = new Gtk.ListStore(new Type[] { typeof(GedcomName) }); Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); nameCol.Title = "Name"; nameCol.Sizing = Gtk.TreeViewColumnSizing.Fixed; nameCol.PackStart(rend,true); nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderName)); nameCol.Resizable = true; nameCol.MinWidth = 200; NamesTreeView.AppendColumn(nameCol); Gtk.TreeSelection selection = NamesTreeView.Selection; selection.Changed += new EventHandler(OnSelection_Changed); }
public void reloadColumns() { int i=0; columns = new ArrayList(HeaderColumns.Count); List<EditableColumn> editablecolums = new List<EditableColumn>(10); foreach (VirtualGridHeaderColumn c in getHeaderColumns()) { Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(); column.Visible = c.Visible; column.Title = c.ColumnName; column.Resizable = true; Gtk.CellRenderer cell; TreeListCellRendererText treecellrenderer = null; //DL rempixbuf // if (c.CustomOption.Equals("pixbuf", StringComparison.OrdinalIgnoreCase)) // { // cell = new Gtk.CellRendererPixbuf (); // } if (!String.IsNullOrEmpty(c.Renderer)) { Type tp = Type.GetType(c.Renderer); cell = (Gtk.CellRenderer)Sharpend.Utils.Reflection.createInstance(tp); } else { treecellrenderer = new TreeListCellRendererText(c.ColumnName, i); cell = treecellrenderer; } columns.Add(cell); column.PackStart(cell, true); Tree.AppendColumn(column); String attribute = "text"; //DL rempixbuf // if (c.CustomOption.Equals("pixbuf", StringComparison.OrdinalIgnoreCase)) // { // attribute = "pixbuf"; // } if (cell is Gtk.CellRendererPixbuf) { attribute = "pixbuf"; } if (OnTreeCellData != null) { column.SetCellDataFunc(treecellrenderer, OnTreeCellData); } column.AddAttribute(cell, attribute, i); if (cell is Gtk.CellRendererToggle) { (cell as Gtk.CellRendererToggle).Toggled += HandleToggled; (cell as Gtk.CellRendererToggle).Activatable = true; (cell as Gtk.CellRendererToggle).Mode = Gtk.CellRendererMode.Activatable; column.AddAttribute(cell,"active",i); } if ((treecellrenderer != null) && (c.Editable)) { if (String.IsNullOrEmpty(c.EditableColumn)) { treecellrenderer.Editable = true; } else { editablecolums.Add(new EditableColumn{ColumnName=c.EditableColumn, Cellrenderer = treecellrenderer,Column = column}); } treecellrenderer.Edited += new Gtk.EditedHandler(cell_Edited); treecellrenderer.EditingStarted += HandleTreecellrendererEditingStarted; } i++; } foreach(EditableColumn c in editablecolums) { int idx = getColumnIndex(c.ColumnName); c.Column.AddAttribute(c.Cellrenderer,"editable",idx); } }
public GroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); _GroupChatModel = groupChat; // person list Participants = new List<PersonModel>(); _OutputHPaned = new Gtk.HPaned(); Gtk.TreeView tv = new Gtk.TreeView(); _PersonTreeView = tv; Gtk.ScrolledWindow sw = new Gtk.ScrolledWindow(); PersonScrolledWindow = sw; sw.ShadowType = Gtk.ShadowType.None; sw.HscrollbarPolicy = Gtk.PolicyType.Never; //tv.CanFocus = false; tv.BorderWidth = 0; tv.Selection.Mode = Gtk.SelectionMode.Multiple; sw.Add(tv); Gtk.TreeViewColumn column; var cellr = new Gtk.CellRendererText() { Ellipsize = Pango.EllipsizeMode.End }; IdentityNameCellRenderer = cellr; column = new Gtk.TreeViewColumn(String.Empty, cellr); column.SortColumnId = 0; column.Spacing = 0; column.SortIndicator = false; column.Expand = true; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; // FIXME: this callback leaks memory column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(RenderPersonIdentityName)); tv.AppendColumn(column); _IdentityNameColumn = column; Gtk.ListStore liststore = new Gtk.ListStore(typeof(PersonModel)); liststore.SetSortColumnId(0, Gtk.SortType.Ascending); liststore.SetSortFunc(0, new Gtk.TreeIterCompareFunc(SortPersonListStore)); _PersonListStore = liststore; tv.Model = liststore; tv.SearchColumn = 0; tv.SearchEqualFunc = (model, col, key, iter) => { var person = (PersonModel) model.GetValue(iter, col); // Ladies and gentlemen welcome to C // 0 means it matched but 0 as bool is false. So if it matches // we have to return false. Still not clear? true is false and // false is true, weirdo! If you think this is retarded, // yes it is. return !person.IdentityName.StartsWith(key, StringComparison.InvariantCultureIgnoreCase); }; tv.EnableSearch = true; tv.HeadersVisible = false; tv.RowActivated += new Gtk.RowActivatedHandler(OnPersonsRowActivated); tv.FocusOutEvent += OnPersonTreeViewFocusOutEvent; // popup menu _PersonMenu = new Gtk.Menu(); // don't loose the focus else we lose the selection too! // see OnPersonTreeViewFocusOutEvent() _PersonMenu.TakeFocus = false; _PersonMenu.Shown += OnPersonMenuShown; _PersonTreeView.ButtonPressEvent += _OnPersonTreeViewButtonPressEvent; _PersonTreeView.KeyPressEvent += OnPersonTreeViewKeyPressEvent; // frame needed for events when selecting something in the treeview _PersonTreeViewFrame = new Gtk.Frame() { ShadowType = Gtk.ShadowType.In }; _PersonTreeViewFrame.ButtonReleaseEvent += new Gtk.ButtonReleaseEventHandler(_OnUserListButtonReleaseEvent); _PersonTreeViewFrame.Add(sw); // topic // don't worry, ApplyConfig() will add us to the OutputVBox! _OutputVBox = new Gtk.VBox() { Spacing = 1 }; _TopicTextView = new MessageTextView(); _TopicTextView.Editable = false; _TopicTextView.WrapMode = Gtk.WrapMode.WordChar; _TopicScrolledWindow = new Gtk.ScrolledWindow(); _TopicScrolledWindow.ShadowType = Gtk.ShadowType.In; _TopicScrolledWindow.HscrollbarPolicy = Gtk.PolicyType.Never; _TopicScrolledWindow.Add(_TopicTextView); // make sure the topic is invisible and remains by default and // visible when a topic gets set _TopicScrolledWindow.ShowAll(); _TopicScrolledWindow.Visible = false; _TopicScrolledWindow.NoShowAll = true; _TopicScrolledWindow.SizeRequested += delegate(object o, Gtk.SizeRequestedArgs args) { // predict and set useful topic heigth int lineWidth, lineHeight; using (var layout = _TopicTextView.CreatePangoLayout("Test Topic")) { layout.GetPixelSize(out lineWidth, out lineHeight); } var lineSpacing = _TopicTextView.PixelsAboveLines + _TopicTextView.PixelsBelowLines; var it = _TopicTextView.Buffer.StartIter; int newLines = 1; // move to end of next visual line while (_TopicTextView.ForwardDisplayLineEnd(ref it)) { newLines++; // calling ForwardDisplayLineEnd repeatedly stays on the same position // therefor we move one cursor position further it.ForwardCursorPosition(); } newLines = Math.Min(newLines, 3); var bestSize = new Gtk.Requisition() { Height = ((lineHeight + lineSpacing) * newLines) + 4 }; args.Requisition = bestSize; }; Add(_OutputHPaned); //ApplyConfig(Frontend.UserConfig); ShowAll(); }
/// <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; }
private void BuildFontFamilyTree() { // Create a column Gtk.TreeViewColumn fontNameColumn = new Gtk.TreeViewColumn (); fontNameColumn.Title = "Font"; // Create the text cell that will display content Gtk.CellRendererText fontNameCell = new Gtk.CellRendererText (); // Add the cell to the column fontNameColumn.PackStart (fontNameCell, false); // Add the columns to the TreeView treeFont.AppendColumn (fontNameColumn); // Create a model this.fontListStore = new Gtk.ListStore (typeof(string), typeof(Pango.FontFamily)); // Assign the model to the TreeView treeFont.Model = fontListStore; fontNameColumn.SetCellDataFunc(fontNameCell, new Gtk.TreeCellDataFunc (RenderCellFamilyName)); treeFont.Selection.Changed += HandleSelectionFontFamily; LoadFonts(); }
public SourceView() { this.Build(); _eventModel = new EventModel(EventModel.EventModelType.All); Gtk.TreeViewColumn eventNameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererToggle(); eventNameCol.Title = "Event"; eventNameCol.PackStart(rend, false); eventNameCol.AddAttribute(rend, "active", (int)EventModel.Columns.Included); ((Gtk.CellRendererToggle)rend).Activatable = true; ((Gtk.CellRendererToggle)rend).Toggled += new Gtk.ToggledHandler(OnIncluded_Toggle); rend = new Gtk.CellRendererText(); eventNameCol.PackStart(rend, true); eventNameCol.AddAttribute(rend, "text", (int)EventModel.Columns.Readable); EventTypeTreeView.AppendColumn(eventNameCol); EventTypeTreeView.Model = _eventModel; Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn noteCountCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); noteCountCol.Title = "No."; noteCountCol.PackStart(rend,true); noteCountCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventRecordedCount)); EventGroupTreeView.AppendColumn(buttonCol); EventGroupTreeView.AppendColumn(noteCountCol); Gtk.TreeSelection selection = EventGroupTreeView.Selection; selection.Changed += new EventHandler(OnEventGroupSelection_Changed); _eventGroups = new GenericListModel<GedcomRecordedEvent>(); EventGroupTreeView.Model = _eventGroups.Adapter; Gtk.TreeViewColumn callNumberCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); callNumberCol.Title = "Call Number"; callNumberCol.PackStart(rend,true); callNumberCol.AddAttribute(rend, "text", 0); Gtk.TreeViewColumn mediaTypeCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); mediaTypeCol.Title = "Media Type"; mediaTypeCol.PackStart(rend,true); mediaTypeCol.AddAttribute(rend, "text", 1); CallNumberTreeView.AppendColumn(callNumberCol); CallNumberTreeView.AppendColumn(mediaTypeCol); RepositoryCitationListModel repoCitationListModel = new RepositoryCitationListModel(); CallNumberTreeView.Model = repoCitationListModel; selection = CallNumberTreeView.Selection; selection.Changed += new EventHandler(OnCallNumberSelection_Changed); // How to handle SourceMediaType.Other ? // don't include in initial and if the select one is SourceMediaType.Other // add an item into the dropdown for its value? // as other isn't really valid this seems like a reasonable idea Gtk.ListStore mediaTypes = new Gtk.ListStore(typeof(string)); foreach (SourceMediaType mediaType in Enum.GetValues(typeof(SourceMediaType))) { if (mediaType != SourceMediaType.Other) { Gtk.TreeIter iter = mediaTypes.Append(); mediaTypes.SetValue(iter, 0, mediaType.ToString()); } } rend = new Gtk.CellRendererText(); MediaTypeCombo.PackStart(rend,true); MediaTypeCombo.AddAttribute(rend, "text", 0); MediaTypeCombo.Model = mediaTypes; Notebook.Page = 0; }
public void reloadColumns() { int i = 0; columns = new ArrayList(HeaderColumns.Count); List <EditableColumn> editablecolums = new List <EditableColumn>(10); foreach (VirtualGridHeaderColumn c in getHeaderColumns()) { Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(); column.Visible = c.Visible; column.Title = c.ColumnName; column.Resizable = true; Gtk.CellRenderer cell; TreeListCellRendererText treecellrenderer = null; //DL rempixbuf // if (c.CustomOption.Equals("pixbuf", StringComparison.OrdinalIgnoreCase)) // { // cell = new Gtk.CellRendererPixbuf (); // } if (!String.IsNullOrEmpty(c.Renderer)) { Type tp = Type.GetType(c.Renderer); cell = (Gtk.CellRenderer)Sharpend.Utils.Reflection.createInstance(tp); } else { treecellrenderer = new TreeListCellRendererText(c.ColumnName, i); cell = treecellrenderer; } columns.Add(cell); column.PackStart(cell, true); Tree.AppendColumn(column); String attribute = "text"; //DL rempixbuf // if (c.CustomOption.Equals("pixbuf", StringComparison.OrdinalIgnoreCase)) // { // attribute = "pixbuf"; // } if (cell is Gtk.CellRendererPixbuf) { attribute = "pixbuf"; } if (OnTreeCellData != null) { column.SetCellDataFunc(treecellrenderer, OnTreeCellData); } column.AddAttribute(cell, attribute, i); if (cell is Gtk.CellRendererToggle) { (cell as Gtk.CellRendererToggle).Toggled += HandleToggled; (cell as Gtk.CellRendererToggle).Activatable = true; (cell as Gtk.CellRendererToggle).Mode = Gtk.CellRendererMode.Activatable; column.AddAttribute(cell, "active", i); } if ((treecellrenderer != null) && (c.Editable)) { if (String.IsNullOrEmpty(c.EditableColumn)) { treecellrenderer.Editable = true; } else { editablecolums.Add(new EditableColumn { ColumnName = c.EditableColumn, Cellrenderer = treecellrenderer, Column = column }); } treecellrenderer.Edited += new Gtk.EditedHandler(cell_Edited); treecellrenderer.EditingStarted += HandleTreecellrendererEditingStarted; } i++; } foreach (EditableColumn c in editablecolums) { int idx = getColumnIndex(c.ColumnName); c.Column.AddAttribute(c.Cellrenderer, "editable", idx); } }
public IrcGroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); //_IrcGroupChatModel = ircGroupChat; _IrcProtocolManager = (IrcProtocolManager) groupChat.ProtocolManager; if (PersonMenu != null) { Gtk.ImageMenuItem op_item = new Gtk.ImageMenuItem(_("Op")); op_item.Activated += new EventHandler(_OnUserListMenuOpActivated); PersonMenu.Append(op_item); Gtk.ImageMenuItem deop_item = new Gtk.ImageMenuItem(_("Deop")); deop_item.Activated += new EventHandler(_OnUserListMenuDeopActivated); PersonMenu.Append(deop_item); Gtk.ImageMenuItem voice_item = new Gtk.ImageMenuItem(_("Voice")); voice_item.Activated += new EventHandler(_OnUserListMenuVoiceActivated); PersonMenu.Append(voice_item); Gtk.ImageMenuItem devoice_item = new Gtk.ImageMenuItem(_("Devoice")); devoice_item.Activated += new EventHandler(_OnUserListMenuDevoiceActivated); PersonMenu.Append(devoice_item); Gtk.ImageMenuItem kick_item = new Gtk.ImageMenuItem(_("Kick")); kick_item.Activated += new EventHandler(_OnUserListMenuKickActivated); PersonMenu.Append(kick_item); Gtk.ImageMenuItem kickban_item = new Gtk.ImageMenuItem(_("Kick + Ban")); kickban_item.Activated += new EventHandler(_OnUserListMenuKickBanActivated); PersonMenu.Append(kickban_item); Gtk.ImageMenuItem ban_item = new Gtk.ImageMenuItem(_("Ban")); ban_item.Activated += new EventHandler(_OnUserListMenuBanActivated); PersonMenu.Append(ban_item); Gtk.ImageMenuItem unban_item = new Gtk.ImageMenuItem(_("Unban")); unban_item.Activated += new EventHandler(_OnUserListMenuUnbanActivated); PersonMenu.Append(unban_item); PersonMenu.Append(new Gtk.SeparatorMenuItem()); Gtk.ImageMenuItem query_item = new Gtk.ImageMenuItem(_("Query")); query_item.Activated += new EventHandler(_OnUserListMenuQueryActivated); PersonMenu.Append(query_item); Gtk.ImageMenuItem whois_item = new Gtk.ImageMenuItem(_("Whois")); whois_item.Activated += _OnUserListMenuWhoisActivated; PersonMenu.Append(whois_item); } if (PersonTreeView != null) { Gtk.CellRendererText cellr = new Gtk.CellRendererText(); cellr.WidthChars = 1; Gtk.TreeViewColumn column = new Gtk.TreeViewColumn(String.Empty, cellr); column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.GrowOnly; column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(_RenderIrcGroupPersonMode)); PersonTreeView.AppendColumn(column); PersonTreeView.MoveColumnAfter(IdentityNameColumn, column); } }
public GroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); _GroupChatModel = groupChat; // person list _OutputHPaned = new Gtk.HPaned(); Gtk.ScrolledWindow sw = new Gtk.ScrolledWindow(); _PersonScrolledWindow = sw; //sw.WidthRequest = 150; sw.HscrollbarPolicy = Gtk.PolicyType.Never; Gtk.TreeView tv = new Gtk.TreeView(); _PersonTreeView = tv; //tv.CanFocus = false; tv.BorderWidth = 0; tv.Selection.Mode = Gtk.SelectionMode.Multiple; sw.Add(tv); Gtk.TreeViewColumn column; Gtk.CellRendererText cellr = new Gtk.CellRendererText(); cellr.WidthChars = 12; column = new Gtk.TreeViewColumn(String.Empty, cellr); column.SortColumnId = 0; column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(RenderPersonIdentityName)); tv.AppendColumn(column); _IdentityNameColumn = column; Gtk.ListStore liststore = new Gtk.ListStore(typeof(PersonModel)); liststore.SetSortColumnId(0, Gtk.SortType.Ascending); liststore.SetSortFunc(0, new Gtk.TreeIterCompareFunc(SortPersonListStore)); _PersonListStore = liststore; tv.Model = liststore; tv.RowActivated += new Gtk.RowActivatedHandler(OnPersonsRowActivated); tv.FocusOutEvent += OnPersonTreeViewFocusOutEvent; // popup menu _PersonMenu = new Gtk.Menu(); // don't loose the focus else we lose the selection too! // see OnPersonTreeViewFocusOutEvent() _PersonMenu.TakeFocus = false; _PersonMenu.Shown += OnPersonMenuShown; _PersonTreeView.ButtonPressEvent += _OnPersonTreeViewButtonPressEvent; _PersonTreeView.KeyPressEvent += OnPersonTreeViewKeyPressEvent; // frame needed for events when selecting something in the treeview _PersonTreeViewFrame = new Gtk.Frame(); _PersonTreeViewFrame.ButtonReleaseEvent += new Gtk.ButtonReleaseEventHandler(_OnUserListButtonReleaseEvent); _PersonTreeViewFrame.Add(sw); // topic // don't worry, ApplyConfig() will add us to the OutputVBox! _OutputVBox = new Gtk.VBox(); _TopicTextView = new MessageTextView(); _TopicTextView.Editable = false; _TopicTextView.WrapMode = Gtk.WrapMode.WordChar; _TopicScrolledWindow = new Gtk.ScrolledWindow(); _TopicScrolledWindow.ShadowType = Gtk.ShadowType.In; // when using PolicyType.Never, it will try to grow but never shrinks! _TopicScrolledWindow.HscrollbarPolicy = Gtk.PolicyType.Automatic; _TopicScrolledWindow.VscrollbarPolicy = Gtk.PolicyType.Automatic; _TopicScrolledWindow.Add(_TopicTextView); // make sure the topic is invisible and remains by default and // visible when a topic gets set _TopicScrolledWindow.ShowAll(); _TopicScrolledWindow.Visible = false; _TopicScrolledWindow.NoShowAll = true; Add(_OutputHPaned); //ApplyConfig(Frontend.UserConfig); ShowAll(); }
public GroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); _GroupChatModel = groupChat; // person list Participants = new List <PersonModel>(); _OutputHPaned = new Gtk.HPaned(); _OutputHPaned.ButtonPressEvent += (sender, e) => {; // reset person list size on double click if (e.Event.Type == Gdk.EventType.TwoButtonPress && e.Event.Button == 1) { GLib.Timeout.Add(200, delegate { _OutputHPaned.Position = -1; return(false); }); } }; Gtk.TreeView tv = new Gtk.TreeView(); _PersonTreeView = tv; Gtk.ScrolledWindow sw = new Gtk.ScrolledWindow(); PersonScrolledWindow = sw; sw.HscrollbarPolicy = Gtk.PolicyType.Never; sw.SizeRequested += (o, args) => { // predict and set useful treeview width var persons = SyncedPersons; if (persons == null || persons.Count == 0) { return; } int longestNameWidth = 0; foreach (var person in persons.Values) { int lineWidth, lineHeigth; using (var layout = _PersonTreeView.CreatePangoLayout(person.IdentityName)) { layout.GetPixelSize(out lineWidth, out lineHeigth); } if (lineWidth > longestNameWidth) { longestNameWidth = lineWidth; } } var bestSize = new Gtk.Requisition() { Width = longestNameWidth }; args.Requisition = bestSize; }; //tv.CanFocus = false; tv.BorderWidth = 0; tv.Selection.Mode = Gtk.SelectionMode.Multiple; sw.Add(tv); Gtk.TreeViewColumn column; Gtk.CellRendererText cellr = new Gtk.CellRendererText(); IdentityNameCellRenderer = cellr; column = new Gtk.TreeViewColumn(String.Empty, cellr); column.SortColumnId = 0; column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; // FIXME: this callback leaks memory column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(RenderPersonIdentityName)); tv.AppendColumn(column); _IdentityNameColumn = column; Gtk.ListStore liststore = new Gtk.ListStore(typeof(PersonModel)); liststore.SetSortColumnId(0, Gtk.SortType.Ascending); liststore.SetSortFunc(0, new Gtk.TreeIterCompareFunc(SortPersonListStore)); _PersonListStore = liststore; tv.Model = liststore; tv.SearchColumn = 0; tv.SearchEqualFunc = (model, col, key, iter) => { var person = (PersonModel)model.GetValue(iter, col); // Ladies and gentlemen welcome to C // 0 means it matched but 0 as bool is false. So if it matches // we have to return false. Still not clear? true is false and // false is true, weirdo! If you think this is retarded, // yes it is. return(!person.IdentityName.StartsWith(key, StringComparison.InvariantCultureIgnoreCase)); }; tv.EnableSearch = true; tv.RowActivated += new Gtk.RowActivatedHandler(OnPersonsRowActivated); tv.FocusOutEvent += OnPersonTreeViewFocusOutEvent; // popup menu _PersonMenu = new Gtk.Menu(); // don't loose the focus else we lose the selection too! // see OnPersonTreeViewFocusOutEvent() _PersonMenu.TakeFocus = false; _PersonMenu.Shown += OnPersonMenuShown; _PersonTreeView.ButtonPressEvent += _OnPersonTreeViewButtonPressEvent; _PersonTreeView.KeyPressEvent += OnPersonTreeViewKeyPressEvent; // frame needed for events when selecting something in the treeview _PersonTreeViewFrame = new Gtk.Frame(); _PersonTreeViewFrame.ButtonReleaseEvent += new Gtk.ButtonReleaseEventHandler(_OnUserListButtonReleaseEvent); _PersonTreeViewFrame.Add(sw); // topic // don't worry, ApplyConfig() will add us to the OutputVBox! _OutputVBox = new Gtk.VBox(); _TopicTextView = new MessageTextView(); _TopicTextView.Editable = false; _TopicTextView.WrapMode = Gtk.WrapMode.WordChar; _TopicScrolledWindow = new Gtk.ScrolledWindow(); _TopicScrolledWindow.ShadowType = Gtk.ShadowType.In; _TopicScrolledWindow.HscrollbarPolicy = Gtk.PolicyType.Never; _TopicScrolledWindow.Add(_TopicTextView); // make sure the topic is invisible and remains by default and // visible when a topic gets set _TopicScrolledWindow.ShowAll(); _TopicScrolledWindow.Visible = false; _TopicScrolledWindow.NoShowAll = true; _TopicScrolledWindow.SizeRequested += delegate(object o, Gtk.SizeRequestedArgs args) { // predict and set useful topic heigth int lineWidth, lineHeight; using (var layout = _TopicTextView.CreatePangoLayout("Test Topic")) { layout.GetPixelSize(out lineWidth, out lineHeight); } var lineSpacing = _TopicTextView.PixelsAboveLines + _TopicTextView.PixelsBelowLines; var it = _TopicTextView.Buffer.StartIter; int newLines = 1; // move to end of next visual line while (_TopicTextView.ForwardDisplayLineEnd(ref it)) { newLines++; // calling ForwardDisplayLineEnd repeatedly stays on the same position // therefor we move one cursor position further it.ForwardCursorPosition(); } newLines = Math.Min(newLines, 3); var bestSize = new Gtk.Requisition() { Height = ((lineHeight + lineSpacing) * newLines) + 4 }; args.Requisition = bestSize; }; Add(_OutputHPaned); //ApplyConfig(Frontend.UserConfig); ShowAll(); }
public FamilyView() { this.Build(); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-index"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-edit"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); nameCol.Title = "Name"; nameCol.PackStart(rend,true); nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualName)); nameCol.SortColumnId = 0; Gtk.TreeViewColumn sexCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); sexCol.Title = "Sex"; sexCol.PackStart(rend,true); sexCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualSex)); Gtk.TreeViewColumn dobCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); dobCol.Title = "Date of Birth"; dobCol.PackStart(rend,true); dobCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualDob)); Gtk.TreeViewColumn birthPlaceCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); birthPlaceCol.Title = "Birth Place"; birthPlaceCol.PackStart(rend,true); birthPlaceCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualBirthPlace)); Gtk.TreeViewColumn dodCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); dodCol.Title = "Date of Death"; dodCol.PackStart(rend,true); dodCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualDod)); Gtk.TreeViewColumn deathPlaceCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); deathPlaceCol.Title = "Death Place"; deathPlaceCol.PackStart(rend,true); deathPlaceCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderIndividualDeathPlace)); ChildrenTreeView.AppendColumn(buttonCol); ChildrenTreeView.AppendColumn(nameCol); ChildrenTreeView.AppendColumn(sexCol); ChildrenTreeView.AppendColumn(dobCol); ChildrenTreeView.AppendColumn(birthPlaceCol); ChildrenTreeView.AppendColumn(dodCol); ChildrenTreeView.AppendColumn(deathPlaceCol); HusbandSpouseView.AddButtonClicked += this.OnAddHusbandButton_Clicked; HusbandSpouseView.RemoveButtonClicked += this.OnRemoveHusbandButton_Clicked; HusbandSpouseView.DeleteButtonClicked += this.OnDeleteHusbandButton_Clicked; HusbandSpouseView.NameSourceButtonClicked += this.OnHusbandNameSourceButton_Clicked; HusbandSpouseView.DateBornSourceButtonClicked += this.OnHusbandDateBornSourceButton_Clicked; HusbandSpouseView.DateDiedSourceButtonClicked += this.OnHusbandDateDiedSourceButton_Clicked; HusbandSpouseView.MoreButtonClicked += this.OnHusbandMoreButton_Clicked; HusbandSpouseView.FamiliesButtonClicked += this.OnHusbandFamiliesButton_Clicked; HusbandSpouseView.ParentsButtonClicked += this.OnHusbandParentsButtonClicked; HusbandSpouseView.ScrapBookButtonClicked += this.OnHusbandScrapBookButtonClicked; HusbandSpouseView.NameButtonClicked += this.OnHusbandNameButtonClicked; WifeSpouseView.AddButtonClicked += this.OnAddWifeButton_Clicked; WifeSpouseView.RemoveButtonClicked += this.OnRemoveWifeButton_Clicked; WifeSpouseView.DeleteButtonClicked += this.OnDeleteWifeButton_Clicked; WifeSpouseView.NameSourceButtonClicked += this.OnWifeNameSourceButton_Clicked; WifeSpouseView.DateBornSourceButtonClicked += this.OnWifeDateBornSourceButton_Clicked; WifeSpouseView.DateDiedSourceButtonClicked += this.OnWifeDateDiedSourceButton_Clicked; WifeSpouseView.MoreButtonClicked += this.OnWifeMoreButton_Clicked; WifeSpouseView.FamiliesButtonClicked += this.OnWifeFamiliesButton_Clicked; WifeSpouseView.ParentsButtonClicked += this.OnWifeParentsButtonClicked; WifeSpouseView.ScrapBookButtonClicked += this.OnWifeScrapBookButtonClicked; WifeSpouseView.NameButtonClicked += this.OnWifeNameButtonClicked; MarriageView.ShowScrapBook += new EventHandler<ScrapBookArgs>(OnMarriageScrapbookButton_Clicked); MarriageView.ShowSourceCitation += new EventHandler<SourceCitationArgs>(OnMarriageSourceButton_Clicked); MarriageView.MoreFamilyInformation += new EventHandler<FamilyArgs>(OnMarriageMoreButton_Clicked); }
public IndividualView() { this.Build(); FactView.EventAdded += new EventHandler(OnFactView_EventAdded); FactView.EventRemoved += new EventHandler(OnFactView_EventRemoved); FactView.ShowSourceCitation += new EventHandler<SourceCitationArgs>(OnFactView_ShowSourceCitation); FactView.ShowScrapBook += new EventHandler<ScrapBookArgs>(OnEventScrapbookButton_Clicked); Gtk.TreeViewColumn placeCol = new Gtk.TreeViewColumn(); Gtk.CellRenderer rend = new Gtk.CellRendererText(); placeCol.Title = "Place"; placeCol.PackStart(rend,true); placeCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventPlace)); Gtk.TreeViewColumn dateCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); dateCol.Title = "Date"; dateCol.PackStart(rend,true); dateCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventDate)); dateCol.SortColumnId = 0; MarriageView.ShowScrapBook += new EventHandler<ScrapBookArgs>(OnMarriageScrapbookButton_Clicked); MarriageView.ShowSourceCitation += new EventHandler<SourceCitationArgs>(OnMarriageSourceButton_Clicked); MarriageView.MoreFamilyInformation += new EventHandler<FamilyArgs>(OnMarriageMoreButton_Clicked); Gtk.TreeViewColumn marriageToCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); marriageToCol.Title = "To"; marriageToCol.PackStart(rend,true); marriageToCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderMarriageTo)); MarriageTreeView.AppendColumn(placeCol); MarriageTreeView.AppendColumn(dateCol); MarriageTreeView.AppendColumn(marriageToCol); MarriageListModel marriageListModel = new MarriageListModel(); MarriageTreeView.Model = marriageListModel; Gtk.TreeSelection selection = MarriageTreeView.Selection; selection.Changed += new EventHandler(OnMarriageSelection_Changed); _parents = new ParentsListModel(); ParentsCombo.ListModel = _parents; _children = new ChildrenListModel(); ChildrenCombo.ListModel = _children; _spouses = new SpouseListModel(); SpousesCombo.ListModel = _spouses; _siblings = new SiblingsListModel(); SiblingsCombo.ListModel = _siblings; Notebook.Page = 0; }
private void InitializeMenuLayout(Gtk.TreeView menuLayout, MenuLayoutViewModel dataContext) { menuLayout.SetValue(IFakeDependencyObjectHelpers.DataContextPropertyName, dataContext); var column = new Gtk.TreeViewColumn(); Gtk.CellRenderer cellRenderer = new Gtk.CellRendererPixbuf(); column.PackStart(cellRenderer, true); column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellImageColumnRenderer <FileNodeViewModel>(l, c, m, i, p => p.Icon)); ////column.Sizing = Gtk.TreeViewColumnSizing.Fixed; ////column.FixedWidth = 20; menuLayout.AppendColumn(column); column = new Gtk.TreeViewColumn() { Title = MenuLayoutViewModel.LongNameHeader }; cellRenderer = new Gtk.CellRendererText(); _longNameEditor = new TextCellInPlaceEditor(menuLayout, column, cellRenderer as Gtk.CellRendererText, FileSystemConstants.MaxLongNameLength) { IsValidCharacter = INTV.Core.Model.Grom.Characters.Contains }; _longNameEditor.EditorClosed += HandleInPlaceEditorClosed; column.PackStart(cellRenderer, true); column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <FileNodeViewModel>(l, c, m, i, p => p.LongName.SafeString())); column.Sizing = Gtk.TreeViewColumnSizing.Fixed; column.FixedWidth = Properties.Settings.Default.MenuLayoutLongNameColWidth; column.Resizable = true; menuLayout.AppendColumn(column); column = new Gtk.TreeViewColumn() { Title = MenuLayoutViewModel.ShortNameHeader }; cellRenderer = new Gtk.CellRendererText(); _shortNameEditor = new TextCellInPlaceEditor(menuLayout, column, cellRenderer as Gtk.CellRendererText, FileSystemConstants.MaxShortNameLength) { IsValidCharacter = INTV.Core.Model.Grom.Characters.Contains }; _shortNameEditor.EditorClosed += HandleInPlaceEditorClosed; column.PackStart(cellRenderer, true); column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <FileNodeViewModel>(l, c, m, i, p => p.ShortName.SafeString())); column.Sizing = Gtk.TreeViewColumnSizing.Fixed; column.FixedWidth = Properties.Settings.Default.MenuLayoutShortNameColWidth; column.Resizable = true; menuLayout.AppendColumn(column); column = new Gtk.TreeViewColumn() { Title = MenuLayoutViewModel.ManualHeader }; cellRenderer = new Gtk.CellRendererText(); column.PackStart(cellRenderer, true); column.SetCellDataFunc(cellRenderer, (l, c, m, i) => VisualHelpers.CellTextColumnRenderer <FileNodeViewModel>(l, c, m, i, GetManualColumnStringValue)); column.Sizing = Gtk.TreeViewColumnSizing.Fixed; column.FixedWidth = Properties.Settings.Default.MenuLayoutManualColWidth; column.Resizable = true; menuLayout.AppendColumn(column); column = new Gtk.TreeViewColumn() { Title = MenuLayoutViewModel.SaveDataHeader }; 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.MenuLayoutSaveDataColWidth; column.Resizable = true; column.Visible = Properties.Settings.Default.ShowAdvancedFeatures; menuLayout.AppendColumn(column); menuLayout.HasTooltip = true; menuLayout.QueryTooltip += HandleMenuLayoutQueryTooltip; var menuLayoutStore = new Gtk.TreeStore(typeof(FileNodeViewModel)); dataContext.SynchronizeToTreeStore(menuLayoutStore); menuLayout.Model = menuLayoutStore; menuLayout.EnableModelDragSource(Gdk.ModifierType.Button1Mask, DragDropSourceEntries, Gdk.DragAction.Move); menuLayout.EnableModelDragDest(DragDropTargetEntries, Gdk.DragAction.Copy | Gdk.DragAction.Move); menuLayout.Selection.Changed += HandleSelectionChanged; dataContext.PropertyChanged += HandleMenuLayoutPropertyChanged; }
private void SetDataFunctions() { _ObjectColumn.SetCellDataFunc(_ObjectRenderer, new Gtk.TreeCellDataFunc(RenderObject)); }
public GroupChatView(GroupChatModel groupChat) : base(groupChat) { Trace.Call(groupChat); _GroupChatModel = groupChat; // person list _OutputHPaned = new Gtk.HPaned(); Gtk.ScrolledWindow sw = new Gtk.ScrolledWindow(); _PersonScrolledWindow = sw; //sw.WidthRequest = 150; sw.HscrollbarPolicy = Gtk.PolicyType.Never; Gtk.TreeView tv = new Gtk.TreeView(); _PersonTreeView = tv; //tv.CanFocus = false; tv.BorderWidth = 0; tv.Selection.Mode = Gtk.SelectionMode.Multiple; sw.Add(tv); Gtk.TreeViewColumn column; Gtk.CellRendererText cellr = new Gtk.CellRendererText(); cellr.WidthChars = 12; column = new Gtk.TreeViewColumn(String.Empty, cellr); column.SortColumnId = 0; column.Spacing = 0; column.SortIndicator = false; column.Sizing = Gtk.TreeViewColumnSizing.Autosize; column.SetCellDataFunc(cellr, new Gtk.TreeCellDataFunc(RenderPersonIdentityName)); tv.AppendColumn(column); _IdentityNameColumn = column; Gtk.ListStore liststore = new Gtk.ListStore(typeof(PersonModel)); liststore.SetSortColumnId(0, Gtk.SortType.Ascending); liststore.SetSortFunc(0, new Gtk.TreeIterCompareFunc(SortPersonListStore)); _PersonListStore = liststore; tv.Model = liststore; tv.RowActivated += new Gtk.RowActivatedHandler(OnPersonsRowActivated); tv.FocusOutEvent += OnPersonTreeViewFocusOutEvent; // popup menu _PersonMenu = new Gtk.Menu(); // don't loose the focus else we lose the selection too! // see OnPersonTreeViewFocusOutEvent() _PersonMenu.TakeFocus = false; _PersonMenu.Shown += OnPersonMenuShown; _PersonTreeView.ButtonPressEvent += _OnPersonTreeViewButtonPressEvent; _PersonTreeView.KeyPressEvent += OnPersonTreeViewKeyPressEvent; // frame needed for events when selecting something in the treeview _PersonTreeViewFrame = new Gtk.Frame(); _PersonTreeViewFrame.ButtonReleaseEvent += new Gtk.ButtonReleaseEventHandler(_OnUserListButtonReleaseEvent); _PersonTreeViewFrame.Add(sw); // topic // don't worry, ApplyConfig() will add us to the OutputVBox! _OutputVBox = new Gtk.VBox(); _TopicTextView = new MessageTextView(); _TopicTextView.Editable = false; _TopicTextView.WrapMode = Gtk.WrapMode.WordChar; _TopicScrolledWindow = new Gtk.ScrolledWindow(); _TopicScrolledWindow.ShadowType = Gtk.ShadowType.In; // when using PolicyType.Never, it will try to grow but never shrinks! _TopicScrolledWindow.HscrollbarPolicy = Gtk.PolicyType.Automatic; _TopicScrolledWindow.VscrollbarPolicy = Gtk.PolicyType.Automatic; _TopicScrolledWindow.Add(_TopicTextView); // make sure the topic is invisible and remains by default and // visible when a topic gets set _TopicScrolledWindow.ShowAll(); _TopicScrolledWindow.Visible = false; _TopicScrolledWindow.NoShowAll = true; _TopicScrolledWindow.SizeRequested += delegate(object o, Gtk.SizeRequestedArgs args) { // predict and set useful topic heigth Pango.Layout layout = _TopicTextView.CreatePangoLayout("Test Topic"); int lineWidth, lineHeigth; layout.GetPixelSize(out lineWidth, out lineHeigth); var lineSpacing = _TopicTextView.PixelsAboveLines + _TopicTextView.PixelsBelowLines; var text = Topic != null ? Topic.ToString() : String.Empty; // hardcoded to 2 lines for now var newLines = text.Length > 0 ? 2 : 0; var bestSize = new Gtk.Requisition() { Height = ((lineHeigth + lineSpacing) * newLines) + 2 }; args.Requisition = bestSize; }; Add(_OutputHPaned); //ApplyConfig(Frontend.UserConfig); ShowAll(); }
/// <summary> /// Initializes and fills the tree view. /// </summary> private void InitializeAndFillTreeView() { Gtk.CellRendererPixbuf rulePixBufRenderer = new Gtk.CellRendererPixbuf(); rulePixBufRenderer.Mode = Gtk.CellRendererMode.Activatable; Gtk.CellRendererText ruleTextRenderer = new Gtk.CellRendererText(); ruleTextRenderer.Mode = Gtk.CellRendererMode.Activatable; Gtk.CellRendererToggle ruleToggleRenderer = new Gtk.CellRendererToggle(); ruleToggleRenderer.Activatable = true; ruleToggleRenderer.Toggled += new Gtk.ToggledHandler(this.OnRuleToggled); Gtk.TreeViewColumn rulesColumn = new Gtk.TreeViewColumn(); rulesColumn.Clickable = false; rulesColumn.Reorderable = false; rulesColumn.Title = GettextCatalog.GetString("Enabled rules"); rulesColumn.PackStart(ruleToggleRenderer, false); rulesColumn.PackStart(rulePixBufRenderer, false); rulesColumn.PackStart(ruleTextRenderer, false); rulesColumn.AddAttribute(ruleToggleRenderer, "active", (int)TreeStoreColumns.Toggle); rulesColumn.AddAttribute(rulePixBufRenderer, "pixbuf", (int)TreeStoreColumns.PixBuf); rulesColumn.SetCellDataFunc(ruleTextRenderer, new Gtk.TreeCellDataFunc(this.RenderRule)); this.rulesTreeView.AppendColumn(rulesColumn); this.rulesStore = new Gtk.TreeStore(typeof(bool), typeof(Gdk.Pixbuf), typeof(object), typeof(SourceAnalyzer), typeof(bool)); this.rulesTreeView.Model = this.rulesStore; this.rulesTreeView.Selection.Changed += new EventHandler(this.OnTreeViewSelectionChanged); if (this.rulesStore != null) { // Add each of the parsers and analyzers to the tree. foreach (SourceParser parser in this.SettingsHandler.Core.Parsers) { Gtk.TreeIter parserIter = this.rulesStore.AppendValues(false, null, parser, null, false); // Add each of the boolean properties exposed by the parser. this.StoreAddinProperties(parser); // Iterate through each of the analyzers and add a checkbox for each. foreach (SourceAnalyzer analyzer in parser.Analyzers) { Gtk.TreeIter analyzerIter = this.rulesStore.AppendValues(parserIter, false, null, analyzer, null, false); // Add each of the boolean properties exposed by the analyzer. this.StoreAddinProperties(analyzer); this.FillAnalyzerRules(analyzer, analyzerIter); if ((bool)this.rulesStore.GetValue(analyzerIter, (int)TreeStoreColumns.Overridden)) { this.rulesStore.SetValue(parserIter, (int)TreeStoreColumns.Overridden, true); } } this.rulesTreeView.ExpandRow(this.rulesStore.GetPath(parserIter), false); } } }
public FactView() { this.Build(); FactTypeCombo.Clear(); Gtk.CellRendererText rend = new Gtk.CellRendererText(); rend.Ellipsize = Pango.EllipsizeMode.End; FactTypeCombo.PackStart(rend, true); FactTypeCombo.SetAttributes(rend, "text", EventModel.Columns.Readable); Gtk.TreeViewColumn buttonCol = new Gtk.TreeViewColumn(); GtkCellRendererButton butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-index"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-remove"; buttonCol.PackStart(butRend,true); butRend = new GtkCellRendererButton(); butRend.StockId = "gtk-edit"; buttonCol.PackStart(butRend,true); Gtk.TreeViewColumn nameCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); nameCol.Title = "Type"; nameCol.PackStart(rend,true); nameCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventName)); Gtk.TreeViewColumn dateCol = new Gtk.TreeViewColumn(); rend = new Gtk.CellRendererText(); dateCol.Title = "Date"; dateCol.PackStart(rend,true); dateCol.SetCellDataFunc(rend, new Gtk.TreeCellDataFunc(ListModelUtil.RenderEventDate)); dateCol.SortColumnId = 0; FactsTreeView.AppendColumn(buttonCol); FactsTreeView.AppendColumn(nameCol); FactsTreeView.AppendColumn(dateCol); _eventListModel = new EventListModel(); // we need more complicated filtering than just the event type so // hookup to the event _eventListModel.FilterGedcomEvent += new EventHandler<EventListModel.FilterArgs>(FilterEvents); FactsTreeView.Model = _eventListModel; Gtk.TreeSelection selection = FactsTreeView.Selection; selection.Mode = Gtk.SelectionMode.Browse; selection.Changed += new EventHandler(OnFactSelection_Changed); _moreInfoArgs = new FactArgs(); }