// Show / delete all triggers /* Two buttons: One lists all triggers in database, project, module; the other deletes all triggers One field: Copy/paste the name of one trigger and hit return in order to delete this trigger */ DB baseDB DBE infoDBE const int TEXT_WIDTH = 200 const int TEXT_HEIGHT = 300 const int FIELD_WIDTH = 20 Buffer disp = create Skip triggerList = createString() DBE deleteDBE = null const string options[] = {"Yes", "No", "Cancel"} // ---------------------------------------------------------------------- void triggerInfo(Trigger t, bool deleteIt, &exitLoop) { if (kind(t) == "builtin"){return} if (!put(triggerList, name(t) "", t)){return} disp += "\n" disp += "Name: " name(t) "\n" disp += "Kind: " kind(t) "\n" disp += "DXL: " dxl(t) "\n" disp += "Level: " stringOf(level(t)) "\n" disp += "Type: " stringOf(type(t)) "\n" disp += "Event: " stringOf(event(t)) "\n" disp += "Stored in: " stored(t) "\n" Module m = module t int queryResult if (!null m){disp += "Module: " fullName(m) "\n"} if (deleteIt) { queryResult = query("Delete Trigger " (name t) "?", options) if (queryResult == 0) { string del = delete(t) disp += "Deleted: " del "\n" } else if (queryResult == 2){exitLoop = true} } } // ---------------------------------------------------------------------- void triggerList(bool deleteIt) { bool exitLoop = false delete triggerList; triggerList = createString() Trigger t disp = "{\\b Module}" Module m = current if (!null m) { disp += ": " name(m) "" for t in m do { if (exitLoop){continue} triggerInfo(t, deleteIt, exitLoop) } } else {disp += ": no current module"} disp += "\n\n{\\b Project}" Project p = current if (!null p){for t in p do { if (exitLoop){continue} triggerInfo(t, deleteIt, exitLoop)} } else {disp += ": no current project"} disp += "{\n\n\\b Database}" for t in database do { if (exitLoop){continue} triggerInfo(t, deleteIt, exitLoop) } set(infoDBE, stringOf(disp)) } // ---------------------------------------------------------------------- void listTriggers(DB db){triggerList(false)} // ---------------------------------------------------------------------- void deleteTriggers(DB db){triggerList(true); triggerList(false)} // ---------------------------------------------------------------------- void deleteTrigger(DBE dbe) { string selectedTrigger = get(deleteDBE) Trigger t string del if (find(triggerList, selectedTrigger, t)) { del = delete(t) if (!null del){ack "Error deleting trigger:\n\n" del ""} else {set(deleteDBE, ""); triggerList(false)} } else {set(deleteDBE, "No such trigger (" selectedTrigger ")")} } // ---------------------------------------------------------------------- void displayHelp(DB db) { Buffer disp = create disp = "{\\b Trigger list}\n\n" disp += "{\\b List triggers}: " disp += "List all triggers in module, project and database\n" disp += "{\\b Delete triggers} (button): " disp += "Delete all triggers in module, project and database\n" disp += "{\\b Delete trigger} (field): " disp += "Delete one trigger: " disp += "type (copy/paste) trigger name and hit " set(infoDBE, stringOf(disp)) delete disp } // ---------------------------------------------------------------------- void closeDB(DB db) {delete disp; delete triggerList; hide db; destroy db; db = null} // ---------------------------------------------------------------------- // ---------------------------------------------------------------------- // Create DB baseDB = create("Trigger info / deletion") infoDBE = richText(baseDB, "", "", TEXT_WIDTH, TEXT_HEIGHT, true) deleteDBE = field(baseDB, "Delete trigger", "", FIELD_WIDTH, false) set(deleteDBE, deleteTrigger) apply(baseDB, "List triggers", listTriggers) apply(baseDB, "Delete triggers", deleteTriggers) apply(baseDB, "Help", displayHelp) close(baseDB, true, closeDB) realize(baseDB) setExtraHeightShare(infoDBE, 1.0) triggerList(false) show(baseDB) tri