Zum Hauptinhalt springen

Hinzufügen oder Entfernen von Profilen

Es ist möglich, mit der API neue Profile zu generieren und der Baumstruktur hinzuzufügen. Ebenso kann man profile aus der Struktur entfernen.

info

Ein Profil kann mehrere Rollen annehmen.

Root: Das Profil ist ein Root Element, wen es sich in der Baumstruktur die Stammposition, also root hat, und dessen Property Parent = PrintingProfile.Default ist. Dieses Profil signalisiert den Anfang der Baumstruktur und hat sonst keinen Nutzen. Sie existiert von anfang an und kann auch nicht gelöscht werden.

Ordner: Ein Profil hat die Rolle eines Ordners, wenn die Property isGroupItem auf true gesetzt ist. So ein Profil kann weitere Kindelemente haben, kann aber nicht als Druckprofil ausgedruckt werden.

Druckprofil: Ein Profil ist dann ein druckbares Profil, wenn dieses weder root noch Ordner ist. So ein Profil kann ausgedruckt werden und enthält Metainformationen für das Drucken

Hinzufügen von Profilen

public PrintingProfile AddProfile()
{
bool succeeded = false;

// Fügt ein neues druckbares Profil dem Root als Kind Element hinzu
bool succeeded = pool.AddNewProfile(AccessLevel.Private, "New Profile Name", isGroupItem: false);

// Fügt ein neues Ordner Profil dem Root als Kind Element hinzu (Beachte isGroupItem)
bool succeeded = pool.AddNewProfile(AccessLevel.Private, "New Profile Name", isGroupItem: true);

// Fügt ein neues druckbares Profil dem Root als Kind Element hinzu
PrintingProfile newProfile = new PrintingProfile("name", false);
bool succeeded = pool.AddNewProfile(AccessLevel.Private, newProfile);

// Fügt ein neues druckbares Profil unter ein vorhandenes Ordner Profil hinzu
bool succeeded = pool.AddNewProfile(AccessLevel.Private, "Paren Profile Name", "New Profile Name", isGroupItem: false);

// Fügt ein neues druckbares Profil unter ein vorhandenes Ordner-Profil hinzu
PrintingProfile parentProfile = pool.GetProfile(AccessLevel.Public, "Profile Name");
bool succeededp = pool.AddNewProfile(AccessLevel.Private, parentProfileObject, "New Profile Name", isGroupItem: false);

return succeeded ? printingProfile : PrintingProfile.Default;
}

Entfernen von Profilen

public bool RemoveProfile()
{
bool succeeded = false;

// Entfernt ein Profil anhand des gegebenen Profil Objektes
pool.RemoveProfile(AccessLevel.Private, profileObject);

// Entfernt ein Profil anhand des Namen
pool.RemoveProfile(AccessLevel.Private, "profileObjectName");

// Entfernt ein Profil anhand des Namen
pool.RemoveProfile(AccessLevel.Private, 14);

return succeeded;
}

Beispiel: Arbeiten mit Profilen

private PrintingPool _pool = new PrintingPool();

public bool ProfileAction()
{
bool succeeded = false;

// Lade Profile
_pool.LoadPrintingProfiles(plugIn.Application);

if (!loadRes.FileFound || !loadRes.Succeeded)
{
succeeded = false;
}

// Sammle alle Profile aus Global mit dem heutigen Datum
var profilesToRemove = new List<int>();
_pool.PrintingProfiles[AccessLevel.Global].ForEach(p =>
{
if (p.CreationDate.Equals(DateTime.Today.ToString()))
{
profilesToRemove.Add(p.ID)
}
});

// Entferne diese gesammelten Profile
foreach (int id in profilesToRemove)
{
this.Pool.RemoveProfile(AccessLevel.Global, id);
}

// Suche nach Profilen mit einem bestimmten Benutzernamen Mueller und ändere den Namen auf XY-Unbekannt
_pool.PrintingProfiles[AccessLevel.Global].ForEach(p =>
{
if (p.User.Equals("Mueller"))
{
p.User = "XY-Unbekannt";
}
});

// Speichere alle Änderungen
this.Pool.SavePrintingProfiles(this.PlugIn.Application);
if (!saveRes.Succeeded)
{
succeeded = false;
}

return succeeded;
}