public GraphicalApp() { _model = CharlieModel.LoadFromFile(); // var accelGroup = new AccelGroup(); var provider = new CssProvider(); provider.LoadFromPath(GetResource("style.css")); StyleContext.AddProviderForScreen(Screen.Default, provider, 800); var window = new Window(WindowType.Toplevel) { DefaultWidth = _model.WindowWidth, DefaultHeight = _model.WindowHeight, Title = "", Role = "Charlie", Resizable = true }; window.Move(_model.WindowX, _model.WindowY); window.SetIconFromFile(GetResource("logo.png")); // window.AddAccelGroup(accelGroup); window.Destroyed += (sender, args) => Quit(); window.Show(); _window = window; window.Child = CreateRoot(); window.Child.ShowAll(); }
public static int Main (string[] args) { Application.Init (); Gtk.Window win = new Gtk.Window ("GException"); win.SetIconFromFile ("this.filename.does.not.exist"); // Notreached, GException should throw on above call. return 0; }
public static int Main(string[] args) { Application.Init(); Gtk.Window win = new Gtk.Window("GException"); win.SetIconFromFile("this.filename.does.not.exist"); // Notreached, GException should throw on above call. return(0); }
public void ShowSongInfoPopup(string filepath) { string sDuration = _parent.SecondsToHumanTime(_parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "duration")); string songInfo = "\n\nartist: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "artist"); songInfo += "\ntitle: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "title"); songInfo += "\nalbum: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "album"); songInfo += "\ngenre: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "genre"); songInfo += "\nduration: " + sDuration; Gtk.Window wSongInfo = new Gtk.Window("Song Info"); wSongInfo.SetPosition(WindowPosition.CenterAlways); wSongInfo.SetIconFromFile("images/icon.png"); Pango.FontDescription fd = Pango.FontDescription.FromString("Verdana Bold 9"); /* * string thumbLocation = _parent.oXbmc.Media.GetFileThumbnailLocation(filepath); * * if (thumbLocation != null) * { * MemoryStream msThumbnail = _parent.oXbmc.Media.FileDownload(thumbLocation); * * if (msThumbnail != null) * wSongInfo.Add(new Gtk.Image(new Gdk.Pixbuf(msThumbnail))); * } */ Label lArtist = new Label(songInfo); lArtist.ModifyFont(fd); lArtist.Xpad = 20; lArtist.Ypad = 20; wSongInfo.Add(lArtist); //Gtk.Image iCoverart = new Gtk.Image(new Gdk.Pixbuf(_parent.oXbmc.Media.GetFileThumbnailLocation(filepath))); //wSongInfo.Add(iCoverart); wSongInfo.ShowAll(); }
public void ShowSongInfoPopup(string filepath) { string sDuration = _parent.SecondsToHumanTime(_parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "duration")); string songInfo = "\n\nartist: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "artist"); songInfo += "\ntitle: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "title"); songInfo += "\nalbum: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "album"); songInfo += "\ngenre: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "genre"); songInfo += "\nduration: " + sDuration; Gtk.Window wSongInfo = new Gtk.Window("Song Info"); wSongInfo.SetPosition(WindowPosition.CenterAlways); wSongInfo.SetIconFromFile("images/icon.png"); Pango.FontDescription fd = Pango.FontDescription.FromString("Verdana Bold 9"); /* string thumbLocation = _parent.oXbmc.Media.GetFileThumbnailLocation(filepath); if (thumbLocation != null) { MemoryStream msThumbnail = _parent.oXbmc.Media.FileDownload(thumbLocation); if (msThumbnail != null) wSongInfo.Add(new Gtk.Image(new Gdk.Pixbuf(msThumbnail))); } */ Label lArtist = new Label(songInfo); lArtist.ModifyFont(fd); lArtist.Xpad = 20; lArtist.Ypad = 20; wSongInfo.Add(lArtist); //Gtk.Image iCoverart = new Gtk.Image(new Gdk.Pixbuf(_parent.oXbmc.Media.GetFileThumbnailLocation(filepath))); //wSongInfo.Add(iCoverart); wSongInfo.ShowAll(); }
public void GetFileInfo() { TreeModel selectedModel; TreeIter selectedIter = new TreeIter(); if (_parent._tvShares.Selection.GetSelected(out selectedModel, out selectedIter)) { string filepath = selectedModel.GetValue(selectedIter, 2).ToString(); string sDuration = _parent.oHelper.SecondsToHumanTime(_parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "duration")); string songInfo = "artist: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "artist"); songInfo += "\ntitle: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "title"); songInfo += "\nalbum: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "album"); songInfo += "\ngenre: " + _parent.oXbmc.Media.GetMusicTagByFilepath(filepath, "genre"); songInfo += "\nduration: " + sDuration; Window wSongInfo = new Window("Song Info"); wSongInfo.SetPosition(WindowPosition.CenterAlways); wSongInfo.SetIconFromFile("images/icon.png"); Pango.FontDescription fd = Pango.FontDescription.FromString("Verdana Bold 9"); Label lArtist = new Label(songInfo); lArtist.ModifyFont(fd); lArtist.Xpad = 20; lArtist.Ypad = 20; wSongInfo.Add(lArtist); //Gtk.Image iCoverart = new Gtk.Image(new Gdk.Pixbuf(_parent.oXbmc.Media.GetFileThumbnailLocation(filepath))); //wSongInfo.Add(iCoverart); wSongInfo.ShowAll(); //_parent.Messagebox(songInfo); } }
public WindowBuilder() { _columnFilter = 0; _textToFilter = ""; _processIdToKill = new List <int>(); _listStore = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string)); Application.Init(); _window = new Window("Label sample"); _window.Resize(1300, 600); _window.Title = "Process Watch"; _window.SetIconFromFile("icons/processIconSmall.png"); _window.BorderWidth = 5; _window.DeleteEvent += OnWindowClose; var aboutButton = new Button(); var aboutIcon = new Image(); aboutIcon.Pixbuf = new Pixbuf("icons/information.png"); aboutButton.Image = aboutIcon; aboutButton.TooltipText = "About Process Watch"; aboutButton.Clicked += (sender, args) => { _aboutDialog.Show(); }; _aboutDialog = CreateAboutDialog(); var filterButton = new Button(); filterButton.Image = new Image(Stock.Find, IconSize.Button); filterButton.TooltipText = "Filtration utilities"; filterButton.Clicked += (sender, args) => { if (_filtrationHBox.IsVisible) { _filtrationHBox.Hide(); } else { _filtrationHBox.ShowAll(); } }; var windowHBox = new HBox(false, 5); windowHBox.PackEnd(aboutButton, false, false, 0); windowHBox.PackEnd(filterButton, false, false, 0); _processNameEntry = new Entry(); _processNameEntry.Changed += OnChanged; _processIdEntry = new Entry(); _processIdEntry.Changed += OnChanged; _processIdEntry.TextInserted += OnlyNumerical; // String values for the combobox - filtration direction _filtrationDirectionOptions = new[] { ">", "≥", "=", "≤", "<" }; // String values for the combobox - memory usage units _memoryFiltrationDirectionUnits = new[] { "B", "KB", "MB", "GB" }; _memoryFiltrationEntry = new Entry(); _memoryFiltrationEntry.MaxWidthChars = 7; _memoryFiltrationEntry.WidthChars = 7; _memoryFiltrationEntry.Changed += OnChanged; _memoryFiltrationEntry.TextInserted += OnlyNumerical; _memoryFiltrationDirectionComboBox = new ComboBox(_filtrationDirectionOptions); _memoryFiltrationDirectionComboBox.Changed += OnChanged; _memoryFiltrationUnitsComboBox = new ComboBox(_memoryFiltrationDirectionUnits); _memoryFiltrationUnitsComboBox.Changed += OnChanged; _memoryFiltrationHbox = new HBox(); _memoryFiltrationHbox.PackStart(_memoryFiltrationDirectionComboBox, false, false, 0); _memoryFiltrationHbox.PackStart(_memoryFiltrationEntry, false, false, 0); _memoryFiltrationHbox.PackStart(_memoryFiltrationUnitsComboBox, false, false, 0); _cpuFiltrationEntry = new Entry(); _cpuFiltrationEntry.MaxWidthChars = 7; _cpuFiltrationEntry.WidthChars = 7; _cpuFiltrationEntry.Changed += OnChanged; _cpuFiltrationEntry.TextInserted += OnlyNumerical; _cpuFiltrationDirectionComboBox = new ComboBox(_filtrationDirectionOptions); _cpuFiltrationDirectionComboBox.Changed += OnChanged; var cpuFiltrationLabel = new Label("%"); _cpuFiltrationHbox = new HBox(); _cpuFiltrationHbox.PackStart(_cpuFiltrationDirectionComboBox, false, false, 0); _cpuFiltrationHbox.PackStart(_cpuFiltrationEntry, false, false, 0); _cpuFiltrationHbox.PackStart(cpuFiltrationLabel, false, false, 0); _filtrationOptions = new[] { "All processes", "Filter by PID", "Filter by Process Name", "Filter by Memory Usage", "Filter by CPU usage", }; var filtrationCombo = new ComboBox(_filtrationOptions); filtrationCombo.Changed += ComboOnChanged; _filtrationHBox = new HBox(false, 5); _filtrationHBox.PackStart(filtrationCombo, false, false, 0); string[] columnLabels = { "PID", "Process name", "Memory usage", "Priority", "User CPU Time", "Privileged CPU Time", "Total CPU Time", "CPU usage", "Threads", "Start Time" }; _treeModelFilter = new TreeModelFilter(_listStore, null); _treeModelFilter.VisibleFunc = Filter; var treeModelSort = new TreeModelSort(_treeModelFilter); treeModelSort.SetSortFunc(0, WindowBuilderHelper.IdSortFunc); treeModelSort.SetSortFunc(1, WindowBuilderHelper.ProcessNameSortFunc); treeModelSort.SetSortFunc(2, WindowBuilderHelper.MemoryUsageSortFunc); treeModelSort.SetSortFunc(3, WindowBuilderHelper.PrioritySortFunc); treeModelSort.SetSortFunc(4, WindowBuilderHelper.UserCpuTimeSortFunc); treeModelSort.SetSortFunc(5, WindowBuilderHelper.PrivilegedCpuTimeSortFunc); treeModelSort.SetSortFunc(6, WindowBuilderHelper.TotalCpuTimeSortFunc); treeModelSort.SetSortFunc(7, WindowBuilderHelper.CpuUsageSortFunc); treeModelSort.SetSortFunc(8, WindowBuilderHelper.ThreadCountSortFunc); treeModelSort.SetSortFunc(9, WindowBuilderHelper.StartTimeSortFunc); var treeView = new TreeView(); treeView.Model = treeModelSort; treeView.Selection.Mode = SelectionMode.Multiple; treeView.Selection.Changed += OnSelectionChanged; treeView.TooltipColumn = 1; // Create a scrollable window var scrolledWindow = new ScrolledWindow(); scrolledWindow.Add(treeView); // Create a CellRendererText responsible for proper rendering cell data var cellRendererText = new CellRendererText(); cellRendererText.Alignment = Pango.Alignment.Right; cellRendererText.Xalign = 0.5f; // Load the _treeView with TreeViewColumns for (int i = 0; i < 10; i++) { var treeViewColumn = new TreeViewColumn(); treeViewColumn.Clickable = true; treeViewColumn.Resizable = true; treeViewColumn.Title = columnLabels[i]; treeViewColumn.SortIndicator = true; treeViewColumn.Alignment = 0.5f; treeViewColumn.Expand = true; treeViewColumn.SortColumnId = i; treeViewColumn.PackStart(cellRendererText, true); treeViewColumn.AddAttribute(cellRendererText, "text", i); switch (i) { case 0: break; case 1: _window.GetSize(out int width, out int height); treeViewColumn.MaxWidth = Math.Abs(width / 2); break; case 2: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.MemoryUsageFormatter); break; case 3: break; case 4: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.UserCpuTimeFormatter); break; case 5: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.PrivilegedCpuTimeFormatter); break; case 6: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.TotalCpuTimeFormatter); break; case 7: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.CpuUsageFormatter); break; case 8: break; case 9: treeViewColumn.SetCellDataFunc(cellRendererText, WindowBuilderHelper.StartTimeFormatter); break; } treeView.AppendColumn(treeViewColumn); } var killButton = new Button("Kill process"); killButton.Clicked += KillProcess; var windowVBox = new VBox(false, 5); windowVBox.PackStart(windowHBox, false, false, 0); windowVBox.PackStart(_filtrationHBox, false, false, 0); windowVBox.PackStart(scrolledWindow, true, true, 0); windowVBox.PackStart(killButton, false, false, 0); _window.Add(windowVBox); // Create an instance of the object Updater _processGrabber = new ProcessGrabber(); // Add a callback executed when _processGrabber takes process data. // The callback clears the _treeView content and loads new data // Before clearing the _treeView content the callback saves the current scroll position _processGrabber.OnResult += (sender, processList) => { Application.Invoke(delegate { _currentScrollPosition = treeView.Vadjustment.Value; StoreClear(); LoadStore(processList); treeView.ShowAll(); }); }; // Add a callback executed after 'Changed' event raised after changing the position of the _treeView // When the _treeView content is reloaded the previous scroll position is updated treeView.Vadjustment.Changed += (sender, args) => { treeView.Vadjustment.Value = _currentScrollPosition; }; // Start the Timer process responsible for grabbing process data periodically _processGrabber.Run(); treeView.ShowAll(); _window.ShowAll(); // Hide widgets related to process filtration _filtrationHBox.Hide(); }