private void UpdateIcon(AppIcon icon) { string tempPath = null; string path; if (icon == null || icon.Icons.Length == 0) { path = DefaultIconName; } else if (icon.Source == AppIcon.IconSource.File) { path = icon.DefaultIcon.Path; } else { tempPath = Path.GetTempFileName(); using (var tmpStream = File.Open(tempPath, FileMode.Create)) using (var iconStream = icon.GetIconDataStream(icon.DefaultIcon)) { iconStream.CopyTo(tmpStream); } path = tempPath; } using (GLibString gpath = path) { AppIndicator.SetIcon(Handle, gpath); } ClearTempFile(); tempIconFile = tempPath; }
public IMenu AddMenu() { var menu = new GtkMenu(); AppIndicator.SetMenu(Handle, menu.Handle); return(menu); }
public GtkStatusIcon(string title) { // TODO: allow setting App ID and AppIndicatorCategory using GLibString id = $"com.{title}.app"; using GLibString icon = DefaultIconName; Handle = AppIndicator.Create(id, icon, AppIndicatorCategory.ApplicationStatus); Title = title; }
public GtkStatusIcon() { using (GLibString id = GetAppId()) using (GLibString icon = DefaultIconName) { Handle = AppIndicator.Create(id, icon, AppIndicatorCategory.ApplicationStatus); AppIndicator.SetTitle(Handle, id); } }
private void UpdateMenu(Menu menu) { var nativeMenu = NativeCast.To <GtkMenu>(menu?.NativeMenu); AppIndicator.SetMenu(Handle, nativeMenu?.Handle ?? IntPtr.Zero); }