Example #1
0
        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;
        }
Example #2
0
        public IMenu AddMenu()
        {
            var menu = new GtkMenu();

            AppIndicator.SetMenu(Handle, menu.Handle);

            return(menu);
        }
Example #3
0
 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;
 }
Example #4
0
 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);
        }