Skip to content

Referans Editor

Cavanshirpro edited this page Sep 19, 2026 · 1 revision

Editör: ayarlar, şablonlar ve plugin API

English · Türkçe · Languages / Diller

Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe

Menü ve çalışma akışları Editör çalışma alanında; ağ/session ayarları remote rehberde açıklanır. Aşağıdakiler kaynakta tanımlanan tercih alanlarıdır; süre adları Ms ile bitiyorsa milisaniye kullanılır.

Yerel tercihler ve varsayılanlar

int requestTimeoutMs = 60'000;
    int authenticationTimeoutMs = 120'000;
    int uploadTimeoutMs = 300'000;
    int downloadTimeoutMs = 300'000;
    int safeGetRetries = 1;
    int retryBaseDelayMs = 750;
    int maxResponseMiB = 8;
    bool confirmDiscard = true;
    bool restoreWindowLayout = true;
    bool rightDragPan = true;
    double graphZoomSensitivity = 1.0;
    QStringList serverHistory;

Tercih sınırları

Kaynakta ayarların yüklenmesi/kaydedilmesinde uygulanan sınırlar:

requestTimeoutMs = qBound(MinimumTimeoutMs, requestTimeoutMs, MaximumTimeoutMs);
    authenticationTimeoutMs = qBound(MinimumTimeoutMs, authenticationTimeoutMs, MaximumTimeoutMs);
    uploadTimeoutMs = qBound(MinimumTimeoutMs, uploadTimeoutMs, MaximumTimeoutMs);
    downloadTimeoutMs = qBound(MinimumTimeoutMs, downloadTimeoutMs, MaximumTimeoutMs);
    safeGetRetries = qBound(0, safeGetRetries, 3);
    retryBaseDelayMs = qBound(100, retryBaseDelayMs, 10'000);
    maxResponseMiB = qBound(1, maxResponseMiB, 64);
    graphZoomSensitivity = std::isfinite(graphZoomSensitivity) ? qBound(0.25, graphZoomSensitivity, 3.0) : 1.0;
    QStringList sanitizedHistory;
    for (const auto &entry : std::as_const(serverHistory)) {
        const QUrl url(entry);
        if (entry.size() > 2048 || !url.isValid() || url.host().isEmpty()
            || !url.userInfo().isEmpty() || url.hasQuery() || url.hasFragment()
            || (url.scheme() != QStringLiteral("https") && url.scheme() != QStringLiteral("http"))) {
            continue;
        }
        const auto normalized = url.toString();
        if (!sanitizedHistory.contains(normalized)) {
            sanitizedHistory.append(normalized);
        }
        if (sanitizedHistory.size() == 10) {
            break;
        }
    }
    serverHistory = sanitizedHistory;

Yerleşik proje şablonları

Şablonlar başlangıç yapılandırması üretir; gerçek iş alanının bütün kurallarını tamamlamaz. Üretilen config’i çalıştırmadan önce DB/env/izinleri inceleyin.

ID Ad Kategori Resource yolu RPC adı
secure-crud Secure Operations Hub Foundation operations/records operations.summary
saas-control-plane SaaS Control Plane Platform tenants/subscriptions tenants.subscription-summary
event-orders Event-Driven Commerce Commerce commerce/orders commerce.order-summary
analytics-read-model Analytics Read Model Data analytics/snapshots analytics.status-rollup
plugin-registry Forge Plugin Registry Editor editor/plugins editor.plugin-summary
python-enterprise-gateway Python Enterprise Gateway Integration integrations/jobs integrations.job-summary
media-operations Media Operations Content media/jobs media.processing-summary
ledger-workflow Audited Ledger Workflow Finance ledger/batches ledger.batch-summary

Native plugin arayüzü

Plugin API 2 için derleyici arayüzü. Yükleme/manifest/ZIP güven sınırları Plugin kılavuzundadır.

#pragma once

#include <QAction>
#include <QDockWidget>
#include <QJsonObject>
#include <QObject>
#include <QString>

namespace ForgeEditor {

inline constexpr int PluginApiVersion = 2;

class EditorHost {
public:
    virtual ~EditorHost() = default;
    virtual void addPaletteComponent(const QString &label, const QString &collection, const QJsonObject &documentTemplate) = 0;
    virtual void addGraphNodeType(const QString &label, const QString &type, const QJsonObject &defaultProperties) = 0;
    virtual void addToolAction(QAction *action) = 0;
    virtual void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dock) = 0;
    virtual void showStatusMessage(const QString &message, int timeoutMs = 4000) = 0;
};

class IEditorPlugin {
public:
    virtual ~IEditorPlugin() = default;
    [[nodiscard]] virtual QString pluginId() const = 0;
    [[nodiscard]] virtual QString displayName() const = 0;
    [[nodiscard]] virtual int apiVersion() const = 0;
    virtual bool initialize(EditorHost *host, QString *errorMessage) = 0;
    virtual void shutdown() = 0;
};

} // namespace ForgeEditor

#define ForgeEditorPluginInterface_iid "dev.jsonapiforge.EditorPlugin/2.0"
Q_DECLARE_INTERFACE(ForgeEditor::IEditorPlugin, ForgeEditorPluginInterface_iid)

Kaynak ve doğrulama

Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.


Wiki ana sayfa · Tüm sayfalar · Sürüm ve bakım

Clone this wiki locally