![]() |
NtuiCreator - Druckversion +- AmiBlitz³ (https://www.amiblitz.de/community) +-- Forum: AmiBlitz³ (https://www.amiblitz.de/community/forum-3.html) +--- Forum: Projects (https://www.amiblitz.de/community/forum-8.html) +--- Thema: NtuiCreator (/thread-45.html) |
Re: NtuiCreator - Blackbird - 15.12.2014 Den Verein kannte ich noch gar nicht ![]() Na ja, was soll ich nun sagen ? Mir macht das nix aus, das Tool wird sowieso nicht für jeden interessant sein, weil es sich doch aussschließlich damit befasst mit Ntui Guis zu erstellen... Am besten wird sein, du machst einen eigenen Thread auf der das Thema behandelt ob du das "darfst" oder nicht, denn ich kann nicht für andere sprechen. Re: NtuiCreator - Blackbird - 09.12.2015 Ich habe mich mal dazu entschlossen den bisherigen Stand der Dinge zu veröffentlichen ![]() Fehler sind auf alle Fälle noch drin, also Vorsicht mit dem rumprobieren von wichtigen Sachen ![]() Im Readme stehen auch ein paar Dinge. Was leider nicht drinsteht, ist die Tatsache, das man Attribute durch Doppelklick auch einfügen kann ![]() Re: NtuiCreator - Blackbird - 10.12.2015 Update: Version 0.7 Show zeigt nun auch den aktuellen Source der Textbox an.In der Vorversion konnte nur ein eingeladener Source per Show angezeigt werden. Wenn kein Fenster erzeugt oder keine Id angegeben wurde, wird nun eine Fehlermeldung ausgegeben... Re: NtuiCreator - Blackbird - 13.12.2015 Update: Version 0.8 Neu ist das Menü Edit. Copy, Past, Undo, Delete sowie Select usw.. Fehler der Textbox sind nun behoben. Download wie immer im ersten post zu finden Re: NtuiCreator - Der Wanderer - 13.12.2015 Schön. Was mir aufgefallen ist: Die Gadget Liste wäre am besten dynamisch, also das Resultat vom Scan. Dann sparst du dir das hardcoden und das Menu ist immer aktuell mit der NTUI Version. Das geht ungefähr so: Code: <SubMenu label='Gadgets' id='NCGadgetListHolder'> Code: <MenuItem id='NCGagetGetListItem'/> [ab3]*shclass.ntuiScanHandle = ntui_BeginScanClasses{""} Repeat className.s = ntui_GetNextScanName{*shclass} If (className) *holder.tuiObject = ntui_GetObjectByID{*ntui,"NCGadgetListHolder"} If *holder *fragment.tuiObject = ntui_BuildFromXMLFile{*holder,"NCGadgetListFragment.xml"} If *fragment *item = ntui_GetObjectByID{*fragment,"NCGadgetListItem"} If *item ntui_SetAttr{*item,#TUIMIA_LABEL,className} ntui_SetAttr{*item,#TUIMIA_ONCLICK,"Add"+className} End If End If End If End If End If Until className = "" ntui_EndScan{*shclass}[/ab3] Dann hast du noch das Problem mit "capitalizing", deshalb würde ich das alles lowercasen, auch das XML. Noch ein Problem ist wie du die dann erzeugst, wenn du den namen nicht kennst. Deshalb gibst du denn allen die gleiche "OnClick" Id, und holst den namen aus dem label. Dann kannst du keine Unterscheidung machen zwischen gruppen, engine, button etc. aber das halte ich auch nicht für wichtig. Dafür sind die dann alphabetisch sortiert. Ein kleiner Bug was mir aufgefallen ist: Das herausfinden der Attribute während dem Tippen funktioniert nur einmal, danach nicht mehr. Du könnstest zur Verfeinerung noch Attribute, die es nicht gibt, mit Rot unterschlängeln. Das Menu wäre auch besser in eine MenuBar zu fassen, und dann nicht "DropMenu" sondern "MenuTitle" zu nehmen. Dann kann der User auch später in den NTUI Prefs entscheiden, ob er es im Fenster (wie z.B. under MS Windows) oder im Screen Title haben will (wie AmigaOS). Re: NtuiCreator - Blackbird - 13.12.2015 Danke für deine Anmerkungen ! Ja das sind gute Hinweise, ich werde versuchen das umzusetzen. Re: NtuiCreator - Blackbird - 14.12.2015 Frage, Welchen Typ hat bei dir *ntui ? Ist die Engine gemeint oder das Window ? und welchen Typ hat *item ? .tuiObject ? Ich habs mal so eingebaut, aber in der Gadgetliste wird dann nichts angezeigt, obwohl der Source brav abgearbeitet wird. Man könnte dennoch die Unterscheidung einbauen für Window Engine Requester. Die ändern sich doch nicht und könnten statisch bleiben Muß eben beim Scan nur "ausgelassen" werden Re: NtuiCreator - Der Wanderer - 14.12.2015 Kurz: *item ist das .tuiMenuItem, *ntui ist die .tuiEngine Lang: *item ist hier .tuiMenuItem, du solltest aber .tuiObject nehmen (sonst machst du einen pösen Cast) und dann testen ob das stimmt, denn jemand könnte ja aus dem Fragment.xml auch was anderes machen: [ab3]*item.tuiObject = ntui_GetObjectByID{*fragment,"NCGadgetListItem"} if (*item >< Null) ntui_GetAttr{*item,#TUIA_CLASSID,&classId.l} If (classId=#TUICLASS_MENUITEM) ... End If End If[/ab3] *ntui ist irgendein übergeordnetes Objekt. Engine, Window, Group. Ich mache immer die Engine selbst global, damit man von überall bequem an die Objekte kommt. Setzt natürlich voraus, dass du die Objekt ID nur einmal hast, also z.B. keine Editor Fenster hast. Sonst musst du erst das entsprechende Fenster/Gruppe suchen, und dann die ID. Re: NtuiCreator - Blackbird - 14.12.2015 Tja, was soll ich sagen, genau so habe ichs angegeben, *engine und tuiObject.... Aber in der GadgetSubmenü wird nix angezeigt, bzw bleibt leer... Im NtuiMain.xml habe ich das hardcode rausgemacht, den Comment mal gelassen: Code: <DropDown Label='Objects' image='button'> eine neues xml file angelegt mit dem Name NCMenuefragment.xml dadrin steht nur das : <MenuItem id='NCGadgetListItem'/> und im Source dann: Code: Statement creator_ScanGadgetClasses{} wobei fragment und item die selbe Adresse haben ? Re: NtuiCreator - Der Wanderer - 14.12.2015 Ja, in dem Fall haben Fragment und Item die selbe Adresse weil es nur ein Objekt ist. Aber z.B. könnten die MenuItems in eine Gruppe gepackt werden. So und nun meinst du die erscheinen nicht? Probier mal nach dem du das alles bebaut hast am ende ein [ab3]... GUI manipulieren... ntui_Rethink{*holder}[/ab3] Das sollte automatisch passieren, aber das geht glaube ich momentan noch nicht wenn die GUI schon einmal Layouted wude, d.h. du hast zwar die Objecte erstellt, NTUI hat sie aber nicht layouted und deshalb sind sie nicht sichtbar. Wenn *holder nicht reicht, kannst du auch die ganze Engine neu layouten, schaden tut's nicht. PS: ich würde "MenuTitle" nehmen und nicht "DropDown". DropDown ist nur für kleine untergeschobene Menues oder auch andere, beliebige Schaltflächen. Wenn das aber wie ein "normales" Menu gehandhabt werden soll, wre MenuTitle richtig. |