Files
LuaCsForBarotraumaEP/Libraries/MonoGame.Framework/Src/Tools/Pipeline/Global.Linux.cs
2019-06-25 16:00:44 +03:00

161 lines
6.3 KiB
C#

// MonoGame - Copyright (C) The MonoGame Team
// This file is subject to the terms and conditions defined in
// file 'LICENSE.txt', which is part of this source code package.
using System;
using Eto.Drawing;
using Eto.GtkSharp.Drawing;
using Gtk;
namespace MonoGame.Tools.Pipeline
{
static partial class Global
{
public static Application Application;
private static IconTheme _theme;
private static void PlatformInit()
{
Linux = true;
_theme = IconTheme.Default;
var linkIcon = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, true, 8, 16, 16);
linkIcon.Fill(0x00000000);
_theme.LoadIcon("emblem-symbolic-link", 16, 0).Composite(linkIcon, 8, 8, 8, 8, 8, 8, 0.5, 0.5, Gdk.InterpType.Tiles, 255);
_files["0."] = ToEtoImage(_theme.LoadIcon("text-x-generic", 16, 0));
_folder = ToEtoImage(_theme.LoadIcon("folder", 16, 0));
_link = ToEtoImage(linkIcon);
}
private static Gdk.Pixbuf PlatformGetFileIcon(string path)
{
Gdk.Pixbuf icon = null;
var file = GLib.FileFactory.NewForPath(path);
var info = file.QueryInfo("standard::*", GLib.FileQueryInfoFlags.None, null);
var sicon = info.Icon.ToString().Split(' ');
for (int i = sicon.Length - 1; i >= 1; i--)
{
try
{
icon = _theme.LoadIcon(sicon[i], 16, 0);
if (icon != null)
break;
}
catch { }
}
return icon;
}
private static Bitmap ToEtoImage(Gdk.Pixbuf icon)
{
return new Bitmap(new BitmapHandler(icon));
}
private static Gdk.Pixbuf PlatformGetIcon(string resource)
{
IconInfo iconInfo = null;
Gdk.Pixbuf icon = null;
try
{
switch (resource)
{
case "Commands.New.png":
iconInfo = _theme.LookupIcon("document-new", 16, 0);
break;
case "Commands.Open.png":
iconInfo = _theme.LookupIcon("document-open", 16, 0);
break;
case "Commands.Close.png":
iconInfo = _theme.LookupIcon("window-close", 16, 0);
break;
case "Commands.Save.png":
iconInfo = _theme.LookupIcon("document-save", 16, 0);
break;
case "Commands.SaveAs.png":
iconInfo = _theme.LookupIcon("document-save-as", 16, 0);
break;
case "Commands.Undo.png":
iconInfo = _theme.LookupIcon("edit-undo", 16, 0);
break;
case "Commands.Redo.png":
iconInfo = _theme.LookupIcon("edit-redo", 16, 0);
break;
case "Commands.Delete.png":
iconInfo = _theme.LookupIcon("edit-delete", 16, 0);
break;
case "Commands.NewItem.png":
iconInfo = _theme.LookupIcon("document-new", 16, 0);
break;
case "Commands.NewFolder.png":
iconInfo = _theme.LookupIcon("folder-new", 16, 0);
break;
case "Commands.ExistingItem.png":
iconInfo = _theme.LookupIcon("document", 16, 0);
break;
case "Commands.ExistingFolder.png":
iconInfo = _theme.LookupIcon("folder", 16, 0);
break;
case "Commands.Build.png":
iconInfo = _theme.LookupIcon("applications-system", 16, 0);
break;
case "Commands.Rebuild.png":
iconInfo = _theme.LookupIcon("system-run", 16, 0);
break;
case "Commands.Clean.png":
iconInfo = _theme.LookupIcon("edit-clear-all", 16, 0);
if (iconInfo == null)
iconInfo = _theme.LookupIcon("edit-clear", 16, 0);
break;
case "Commands.CancelBuild.png":
iconInfo = _theme.LookupIcon("process-stop", 16, 0);
break;
case "Commands.Help.png":
iconInfo = _theme.LookupIcon("system-help", 16, 0);
break;
case "Build.Information.png":
iconInfo = _theme.LookupIcon("dialog-information", 16, 0);
break;
case "Build.Fail.png":
iconInfo = _theme.LookupIcon("dialog-error", 16, 0);
break;
case "Build.Processing.png":
iconInfo = _theme.LookupIcon("preferences-system-time", 16, 0);
break;
case "Build.Skip.png":
iconInfo = _theme.LookupIcon("emblem-default", 16, 0);
break;
case "Build.Start.png":
iconInfo = _theme.LookupIcon("system-run", 16, 0);
break;
case "Build.EndSucceed.png":
iconInfo = _theme.LookupIcon("system-run", 16, 0);
break;
case "Build.EndFailed.png":
iconInfo = _theme.LookupIcon("system-run", 16, 0);
break;
case "Build.Succeed.png":
iconInfo = _theme.LookupIcon("emblem-default", 16, 0);
break;
}
if (iconInfo != null)
icon = iconInfo.LoadIcon();
if (resource == "Commands.Rename.png" || resource == "Commands.OpenItem.png")
icon = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, true, 1, 1, 1);
}
catch { }
return icon;
}
}
}