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.
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;
}