xibless är en Python-bibliotek som genererar Objective-C-kod som bygger Cocoa UI. & Nbsp; Målet med detta bibliotek är att ersätta XIBs i XCode och, om du vill, bli av XCode helt och hållet.
Med xibless, i stället för att designa användargränssnitt med en WYSIWYG editor, du bygger dem i ett Python-skript, i likhet med vad du gör när du bygger Qt UI utan Designer. Till exempel, ett skript så här:
Resultatet = Fönster (200, 200, 330, 110, "Säg mig ditt namn!")
nameLabel = Label (resultat, text = "Namn:")
nameField = Textfield (resultat, text = "")
helloLabel = Label (resultat, text = "")
knappen = Knapp (resultat, title = "Say Hello")
nameLabel.width = 45
nameLabel.packToCorner (Pack.UpperLeft)
nameField.packRelativeTo (nameLabel, Pack.Right, Pack.Middle)
nameField.fill (Pack.Right)
helloLabel.packRelativeTo (nameLabel, Pack.Below, Pack.Left)
helloLabel.fill (Pack.Right)
button.packRelativeTo (helloLabel, Pack.Below, Pack.Right)
nameField.setAnchor (Pack.UpperLeft, growX = sant)
helloLabel.setAnchor (Pack.UpperLeft, growX = sant)
button.setAnchor (Pack.UpperRight)
skulle generera Objective-C-kod som bygger en form med ett namnfält, en textetikett och en knapp. Den andra delen av skriptet placerar widgets på blanketten korrekt.
Även xibless är skrivet i Python, det Objective-C-kod som den genererar saknar Python beroende, så detta verktyg är lämplig för alla Cocoa utvecklare.
xibless körs på Python 2.7 och uppåt. Det betyder att om du är på OS X 10.7 eller nyare, kan du använda den inbyggda Python. Annars måste du installera en nyare version av Python.
Varför xibless?
För många människor XCode och dess integrerade gränssnitt byggare fungerar fint och för att vara rättvis, är XCode ett trevligt verktyg. Det har dock brister, mest bara populärare, men ändå, efter ett tag, irritationsmoment blir ... irriterande. Till exempel när en XIB UI når en viss nivå av komplexitet, man vet aldrig, när man gör mindre uppdateringar, om du av misstag trasslat något annat. Eftersom varje modifikation, men mindre är det, ändrar en stor del av XIB fil kan du inte berätta i diffen om modifieringen du har gjort var uteslutande den du ville göra. Det finns också XIB lokalisering, med sin en-XIb-copy-per-lokalisering, vilket är mindre än optimalt men svårt att komma runt. Hur som helst, jag kommer inte att försöka övertyga dig. Om du inte redan vill bli av XCode och / eller XIBs, du behöver antagligen inte xibless.
Installation
Du kan installera xibless genom pip:
Pip installera xibless
eller genom att ladda ner källpaketet och kör:
Python setup.py installera
För att bygga demos i mappen demos, gå in i den och typ:
./waf configure
./waf
Det resulte Appen kommer att vara i build-mappen.
Användning
xibless kan användas antingen från kommandoraden eller via Python. För att använda den från kommandoraden skriver du:
xibless
källan är sökvägen till Python-modul som du skrev som beskriver UI du vill bygga. dest är den väg du vill att din resulte Objective-C-fil som ska skrivas på. För att använda xibless direkt från Python, är användningen liknande:
import xibless
xibless.generate (källa, dest)
Nu gör allt detta att den genererar UI-kod. xibless har inte, ännu, någon integrerad lösning så att du enkelt bygga en XCode-mindre program. Men vad man kan göra är att titta på demos mappen och basera dig på de demos (som är helt XCode-mindre) för att bygga ditt eget projekt.
Tidig utveckling
xibless är i mycket tidig utveckling och det finns ingen API-dokumentation än. För nu, måste du räkna som API från demos och genom att gräva direkt i källan. Observera också att detta API vilt kan ändras innan v1.0.
Även antalet ojämna kanter just nu är oöverskådliga. Det finns inget felmeddelande för ogiltiga UI skript, så det kan vara mycket svårt, för nu, att räkna ut varför dina skript inte fungerar.
Åh, ja, och minnesläckor, det finns massor av dem
Vad är nytt i den här versionen:.
- Lade VHLayout.
- Lade Box.
- I View, tillade delegat, fixedHeight, fixedWidth och accessibilityDescription attribut samt moveTo () (en mer kraftfull version av packToCorner ()) och fillAll () metoder.
- I Segment, tillade image och accessibilityDescription attribut.
- Lade SplitView.dividerStyle och lagt dokumentation för en direkt delad vy hierarki.
- Lade TableView.borderType och View.focusRingType.
- Lade Button.bordered
- Lade MenuItem.state
- Lade TabView.tabViewType.
- Lade TextField.usesSingleLineMode.
- Inkom marginal och rikta argument till layouter.
- Deprecated View.packToCorner ().
- Layouter kan nu innehålla sublayouts.
- Tillåt färg () för att ta emot värden i intervallet 0-255 förutom 0,0-1,0.
- Inte lokalisera strängar som endast innehåller & quot; - & quot; (De används för att indikera en separator menyalternativ).
- Radiobuttons höjd beror nu på antalet rader den har.
- Fast spackel storleksändring i layouter i de fall där det finns andra vyer bredvid filler.
- Tillåt UI skript för att importera enheter som är från samma mapp.
- Ersatt Button.keyEquivalent med Button.shortcut.
- Fast runtemplate så att XiblessSupport enheten sammanställs i RunUI körbar.
- Fixat en bugg där vi ibland skulle sluta med två genererade post med samma varName.
- Alltid ställa growX / growY till False i setAnchor () för synpunkter som har en fast bredd / höjd.
- & quot; text & quot; argument Textfield konstruktor är nu frivilligt.
- Support sidor och mitten i View.setAnchor ().
- Genererade enheter har nu en kommentar indikerar generationstid och xibless version.
- Flyttad TextField.alignment ner till kontroll
- Endast kopiera XiblessSupport enheten när det förändrats och därmed undvika onödiga omkompilering.
- Fast TabView s layout deltan för de fall där det finns ingen flikar.
- Support genvägar involverar '+' tecknet.
- Förbättrade standard marginaler i layouter, kontroll höjder och alla andra små tweaks av detta slag.
Vad är nytt i version 0.4.1:.
- Lade NLSTR till UI skript namespace
- Linda inte Window.autosaveName i lokaliserings samtal.
- Fixat en bugg som orsakar några strängar inte slås in i lokaliserings samtal.
- Set Radiobutton s & quot; autosizesCells & quot; True när den skapas.
Vad är nytt i version 0.4.0:
- Lade Panelen, SplitView, OutlineView, Listview, Verktygsfält , SegmentedControl, Sökfält, Slider och number.
- tillagd layouter.
- Stöd för många, många, många nya attribut, konstanter och typer.
- Nu genererar en & quot; .h & quot; att gå vid sidan av den genererade enhet.
- Lade egendom och dess underklasser, ett enklare sätt att lägga till stöd för nya attribut, även de komplexa.
- det är nu möjligt att åsidosätta marginaler i layoutmetodanrop.
- Utökat stöd för bindningar med nya View.bind () metoden.
- Inkom den nya standardinställningar globala variabeln, som kan användas för att binda till användarinställningarna.
- Konstanter nås med const kan nu Bitvis ELLER-ed.
- Generated Koden är nu formate se lite bättre och vara lättare att felsöka.
- Inkom nya konstanter för menygenvägar för specialtangenter (pilar anger osv.).
- Utökat stöd för UI script argument.
Vad är nytt i version 0.3.1:
- pressat ned åtgärden attribut från knappen för att styra.
- Radiobuttons är nu en kontroll underklass.
- Made fönster räkna om sin syn loop efter att ha genererat sina barn.
Vad är nytt i version 0.3.0:
- Lades Radiobuttons, Tableview, TabView, Textview, Imageview och ProgressIndicator.
- Utökat stöd för stråklokalisering.
- Lade TextField.alignment och TextField.textColor.
- Lade Button.keyEquivalent.
- Lade canClose, canResize och canMinimize till Window.
- Lade till en kontroll underklass.
- Visa kan nu direkt instansieras i UI skript (De är som & quot; Anpassade vyer & quot; i IB).
- xibless körning kan nu köras på manus där resultatet är en View.
- Förbättrad systemlayouten.
- Fönster ursprung nu levereras i form av skärm proportioner snarare än absoluta positioner.
- Fast 'id' ownerclass i huvudfunktionen prototypgenerering och lagt till & quot; ownerimport & quot; global variabel i UI skriptet.
- Escape nyradstecken i string kodgenerering.
- Inkom dokumentation för Button.buttonType och Button.bezelStyle och lagt till en demo för en knapp med en annan ram stil.
- Fixat de mest uppenbara minnesläckor.
- Fixat en bugg där attribut som klass-nivå standardteckensnitt inte skulle genereras när genererar mer än en UI manus i samma python session.
- Windows är inte släppt när den är stängd som standard.
- Utökat stöd för cirkulära referenser (ett fönster ställa in en av sina fastigheter till ett objekt som krävs att fönstret innan de skapas, till exempel initialFirstResponder). Vi har tidigare inte kunde generera kod för sådana bindningar.
- Gjorde align argumentet View.packRelativeTo () som tillval.
Vad är nytt i version 0.2.0:
- Lade Sphinx dokumentation
- Inkom kommandot xibless kör för snabba UI förhandsvisningar.
- Lade kombinationsrutan och Popup.
Krav :
- Python
Kommentarer hittades inte