= [20100219 ←] [20100222 22.02.2010] [20100223 →] = ======================================================== Überlegungen am Vorabend. * Also wenn ich fürs PropertiesWindow sowieso einen Report instanziere, dann sollte ich den bisherigen Code zur Initialisierung des Editors ebenfalls über den Report machen. Da kommt also ein `for pv in self.rh.request(master=model,master_instance=None)` * Das PropertiesWindow sollte eigentlich gar nicht im Report gespeichert werden, sondern im Model. Momentan wird es für jeden Report instanziert; das stört zwar nicht, aber ist unnötig. Also der Code aus `setup_report()` gehört irgendwo anders hin, und zwar nach `Lino.setup()`. Oder genauer gesagt nach `reports.setup()`, ähnlich wie ich schon ein `_lino_model_report` in die Models rein propfe. Also `_lino_properties_window`. * Irgendwie unschön ist, dass man von außerhalb den PropValuesByOwner befragen muss, ob er Records für `master_instance=None` enthält. PropertiesWindow sollte doch eigentlich selber sagen, ob es für ein gegebenes Modell angelegt werden will. * Momentan ist es auch so, dass man den Server neustarten muss, wenn man Änderungen in der Konfiguration der Eigenschaften gemacht hat. Also wenn man eine neue Eigenschaft anlegt, oder auch nur eine neue Auswahlmöglichkeit einer Eigenschaft. Andererseits wäre es dumm, für jede Anzeige des Ei-Editors eine Abfrage zu machen um solche seltenen Änderungen automatisch zu erkennen. ---- Nein, das PropertiesWindow kann nicht Model gespeichert werden, weil eventuell mehrere UIs auf einem Server laufen können. Momentan haben wir zwar nur `extui`, aber wer weiß ob sich das irgendwann mal ändert. Ein `ModelHandle` (also einen Descriptor pro Model pro UI) braucht Lino aber momentan noch nicht. Also tun wir das PropertiesWindow doch in den ReportHandle. Aha, und jetzt kommt was Neues: Reports ohne Layout. PropValuesByOwner hat ja die Sammelklasse `PropValue` als `model`, also kennt er keine Kolonne `value`. Ich könnte eine Methode `PropValue.value` definieren, aber deren `return_type` wäre ja pro Instanz veränderlich. Das wäre unsinnig. Das Neue ist, dass dieser Report gar keine Layouts haben kann. Neues Attribut `Report.use_layouts`: wenn das `False` steht, dann kriegt der ReportHandle kein `choice_layout`, `row_layout` und `layouts`. Neue Methode `reports.ReportHandle.request()`. Die gibt also einen "primitiven" `ReportRequest` zurück. Bis auf weiteres unterstützt der Ei-Editor übrigens keine benutzerabhängigen Eigenschaften (also Eigenschaften, die manche Benutzer sehen können und andere nicht). So ein Feature wäre wahrscheinlich auch ziemlich unsinnig. Reports ohne Layout brauchen übrigens auch kein UI und kein Handle. `Report.render_to_dict()` könnte theoretisch ohne all diesen Kram funktionieren. Und jetzt muss ich Feierabend machen. Bin in `testapps.properties` dran, denn irgendwas klappt noch nicht nach den Neuerungen. Das ist für morgen. (Schade, ich hatte gehofft, dass ich heute den Ei-Editor fertig kriege und mit dem Text-Editor anfangen kann...)