Beta yazılım, tamamen yapay zekâ tarafından yazıldı.Hiçbir satır bir insan tarafından tek tek incelenmedi, güvenlik denetiminden geçmedi. Garanti ve sorumluluk yoktur: kullanım riski size aittir.Devamı
İçeriğe geç

Simge paketleri: PLC Icons ​

Simge paketleri yalnızca resmî eklentilerle gelir

Simge paketi sunucunun içinde çalışan koddur; bu yüzden yalnızca bir C# eklentisi olabilir ve sunucu C# eklentilerini yalnızca resmî ve imzalı olduklarında yükler. JavaScript eklentileri simge paketi ekleyemez. Bu sayfa, resmî PLC Icons eklentisinin nasıl yapıldığını okumak için gösterir.

Simge paketi, işe yarar en basit C# eklentisidir: bağlantı yok, ayar yok, aksiyon yok. PLC Icons eklentisi (PLCIcons/, id plc-icons) Düzenleyici'nin simge seçicisine kendi kategorisi olarak 29 merdiven mantığı (PLC) simgesi ekler. Bu sayfa onu adım adım anlatır.

Paket nedir ​

IIconPackSource arayüzünü uygulayın ve Initialize içinde host.RegisterIconPack ile kaydedin:

ÜyeAnlamı
IdPaketin benzersiz kimliği.
DisplayNameSimge seçicideki kategori adı.
IconNamesSimgelerin adları, listelenmesini istediğiniz sırayla.
GetIconSvg(name)Bir simgenin SVG metni, yoksa null.

Eklentinin tamamı ​

cs
using MacroGrid.Plugin.Abstractions;

namespace MacroGrid.Plugin.PlcIcons;

/// <summary>Entry point (plugin.json's "entry") — the host finds this type by reflection and instantiates it
/// with a parameterless constructor, then calls <see cref="Initialize"/> once.</summary>
public sealed class PlcIconsPlugin : IPlugin
{
    public void Initialize(IPluginHost host) => host.RegisterIconPack(new PlcIconPack());
}

/// <summary>A static icon pack: ladder-logic function block icons (coil, timers, comparisons, arithmetic),
/// embedded as SVG resources in this assembly. No connection, no settings — the icons never change at
/// runtime, so <see cref="IIconPackSource"/> is the whole plugin.</summary>
public sealed class PlcIconPack : IIconPackSource
{
    // Sorted so the picker's default ordering doesn't depend on the filesystem's own order.
    private static readonly string[] Names =
    [
        "add", "calculate", "close-branch", "coil", "convert", "divide", "empty-block", "equal",
        "f-trig", "greater", "greater-equal", "lesser", "lesser-equal", "move", "multiply", "n",
        "nc", "no", "not-equal", "open-branch", "p", "r-trig", "reset-coil", "set-coil", "subtract",
        "timer-convert", "tof-timer", "ton-timer", "tp-timer",
    ];

    public string Id => "plc-icons";

    public string DisplayName => "PLC Icons";

    public IReadOnlyList<string> IconNames => Names;

    public string? GetIconSvg(string name)
    {
        if (Array.IndexOf(Names, name) < 0) return null;

        var assembly = typeof(PlcIconPack).Assembly;
        using var stream = assembly.GetManifestResourceStream($"MacroGrid.Plugin.PlcIcons.icons.{name}.svg");
        if (stream is null) return null;

        using var reader = new StreamReader(stream);
        return reader.ReadToEnd();
    }
}
  • PlcIconsPlugin IPlugin giriş noktasıdır: tek satır, host.RegisterIconPack(new PlcIconPack()).
  • İsimler sıralanır, böylece seçicinin sıralaması dosya sistemine bağlı olmaz.
  • SVG'ler assembly'ye gömülü kaynaklardan okunur, dolayısıyla çalışma zamanında ayrı dosya yoktur.

Görünen ad İngilizce yazılmıştır (eklentinin varsayılan dili); Türkçe ad "PLC İkonları" locales/tr.json dosyasından gelir.

Proje ​

Simgeler src/icons/ içinde durur ve .csproj içindeki tek bir satırla gömülür:

xml
<EmbeddedResource Include="icons\*.svg" />

Kaynak adı <RootNamespace>.icons.<file name> biçimindedir (MacroGrid.Plugin.PlcIcons.icons.coil.svg); yukarıdaki GetManifestResourceStream de bunu ister. plugin.json, her C# eklentisinde olduğu gibi çıktıya kopyalanır:

json
{
  "id": "plc-icons",
  "name": "PLC Icons",
  "description": "A static icon pack: 29 ladder-logic symbols in their own category in the editor's icon picker.",
  "author": "Deccoyi",
  "homepage": "https://github.com/Deccoyi/macro-grid-plugin/tree/main/PLCIcons",
  "defaultLanguage": "en",
  "version": "0.1.4",
  "minMacroGrid": "1.0.0",
  "sdkVersion": "^0.4.0",
  "minServerVersion": "0.3.2",
  "entry": "MacroGrid.Plugin.PlcIcons.dll",
  "kind": "csharp",
  "permissions": null
}

Bir simge ​

Her simge stroke="currentColor" ile çizen tek renkli bir SVG'dir. Düzenleyici simgeyi kök <svg> öğesinde color ayarlayarak renklendirir, bu yüzden renkleri asla sabit yazmayın. Bu, coil.svg dosyasıdır:

xml
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="30" fill="none" viewBox="0 0 40 30"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M0 15h12m16 0h12M16 5c-5 5-5 15 0 20m8-20c5 5 5 15 0 20"/></svg>

Simge ekleme ​

  1. src/icons/ içine yeni bir .svg koyun. Tek renkli tutun ve her çizgi ve dolgu için currentColor kullanın.
  2. Dosya adını (uzantısız) Names dizisine ekleyin.
  3. Eklentiyi derleyin ve yeniden kurun (veya yeniden yükleyin).

Macro Grid siteleri: PC · Telefon · Eklentiler
MIT Lisansı ile yayımlanmıştır. Beta yazılım, tamamen bir yapay zekâ asistanı tarafından yazılmıştır, garanti verilmeden olduğu gibi sunulur.