xibless er en Python-bibliotek, der genererer Objective-C-kode, der bygger Cocoa UIS. & Nbsp; Målet med dette bibliotek er at erstatte XIBs i XCode og, hvis du vil, slippe af XCode helt.
Med xibless, i stedet for at designe brugergrænseflader med en WYSIWYG editor, du bygge dem i et Python-script, på samme måde som det, du gør, når du bygger Qt UIS uden Designer. For eksempel et script som dette:
resultat = Window (200, 200, 330, 110, "Sig mig dit navn!")
nameLabel = Label (resultat, tekst = "Navn:")
nameField = TextField (resultat, tekst = "")
helloLabel = Label (resultat, tekst = "")
knap = Button (resultat, title = "Sig 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 = True)
helloLabel.setAnchor (Pack.UpperLeft, growX = True)
button.setAnchor (Pack.UpperRight)
ville generere Objective-C-kode, der bygge en formular med et navn felt, en tekst label og en knap. Den anden del af scriptet placerer widgets på formularen korrekt.
Selvom xibless er skrevet i Python, mål-C kode det genererer ikke har Python afhængighed, så dette værktøj er velegnet til alle Cocoa udvikler.
xibless kører på Python 2,7 og op. Det betyder, at hvis du er på OS X 10.7 eller nyere, kan du bruge den indbyggede Python. Ellers er du nødt til at installere en nyere version af Python.
Hvorfor xibless?
For mange mennesker XCode og dens integrerede grænseflade builder arbejder fint og være retfærdig, XCode er et dejligt værktøj. Det har dog mangler, for det meste bare irritationsmomenter, men stadig, efter et stykke tid, irritationsmomenter bliver ... irriterende. For eksempel, når en XIb UI når et vist niveau af kompleksitet, du aldrig vide, når du laver mindre opdateringer, hvis du ved en fejl rodet op noget andet. Fordi hver ændring, men mindre det er, ændrer en stor del af XIb fil, kan du ikke fortælle i diff hvis ændringen du har foretaget var udelukkende den, du ønskede at gøre. Der er også XIB lokalisering, med sit one-XIb-copy-per-lokalisering, hvilket er mindre end optimal, men svært at arbejde rundt. Anyway, jeg har ikke tænkt mig at forsøge at overbevise dig. Hvis du ikke allerede ønsker at slippe af med XCode og / eller XIBs, har du sandsynligvis ikke brug for xibless.
Installation
Du kan installere xibless gennem pip:
pip installere xibless
eller ved at downloade kilden pakken og kører:
python setup.py installere
At bygge de demoer i mappen demoer, cd ind i det og skriv:
./waf configure
./waf
Den resulterende app vil være i build mappe.
Anvendelse
xibless kan anvendes enten fra kommandolinjen eller via Python. For at bruge den fra kommandolinjen, du skriver:
xibless
kilde er stien til Python modul, du skrev der beskriver UI du ønsker at opbygge. dest er den sti, du vil have din resulterende Objective-C fil, der skal skrives på. Hvis du vil bruge xibless direkte fra Python, brugen ligner:
import xibless
xibless.generate (kilde, dest)
Nu betyder alt dette er, at det genererer UI kode. xibless har ikke endnu, nogen integreret løsning, så du nemt bygge et XCode-mindre program. , Hvad du kan gøre, er at se på de demoer mappen og basere dig selv på de demoer (som er helt XCode-mindre) til at bygge dit eget projekt.
tidlige udvikling
xibless er i meget tidlige udvikling og der er ingen API-dokumentation endnu. For nu, er du nødt til at regne, at API fra demoer og ved at grave direkte i kilden. Bemærk også, at dette API vildt kunne ændre før v1.0.
Også antallet af ru kanter i øjeblikket er uoverskuelige. Der er ingen fejlmeddelelse for ugyldige UI scripts, så det kan være meget svært, for nu, at finde ud af, hvorfor dine scripts ikke virker.
Åh, ja, og memory leaks, der er tonsvis af dem
Hvad er nyt i denne udgivelse:.
- Tilføjet VHLayout.
- Tilføjet Box.
- I View, tilføjede delegeret, fixedHeight, fixedWidth og accessibilityDescription attributter samt moveTo () (en mere kraftfuld udgave af packToCorner ()) og fillAll () metoder.
- I Segment, tilføjede billede og accessibilityDescription attributter.
- Tilføjet SplitView.dividerStyle og tilføjede dokumentation for en direkte divergerende holdning hierarki.
- Tilføjet TableView.borderType og View.focusRingType.
- Tilføjet Button.bordered
- Tilføjet MenuItem.state
- Tilføjet TabView.tabViewType.
- Tilføjet TextField.usesSingleLineMode.
- Tilføjet margin og tilpasse argumenter til layout.
- Forældet View.packToCorner ().
- Layouts kan nu indeholde sublayouts.
- Tillad Color () at modtage værdier i intervallet 0-255 foruden 0,0-1,0.
- Du må ikke lokalisere strenge kun & quot indeholder - & quot; (De er vant til at angive et emne separator menu).
- radioknapper 'højde afhænger nu af antallet af rækker, den har.
- Fast fyldstof resizing i layouts i tilfælde, hvor der er andre synspunkter siden af fyldstof.
- Tillad UI scripts til at importere enheder, der er fra den samme mappe.
- Erstattet Button.keyEquivalent med Button.shortcut.
- Fast runtemplate så XiblessSupport enhed opgøres i RunUI eksekverbare.
- Rettet en fejl, hvor vi nogle gange ville ende med to genereret post med samme varname.
- Indstil altid growX / growY til False i setAnchor () for visninger, der har en fast bredde / højde.
- & quot; tekst & quot; argument TextField constructor er nu valgfrit.
- Support sider og midt i View.setAnchor ().
- Genereret enheder har nu en kommentar angiver generationstid og xibless version.
- Flyttet TextField.alignment ned til kontrol
- Kun kopiere XiblessSupport enhed, når det ændret, så man undgår unødvendigt genkompilering.
- Fast TabView s layout deltaer i tilfælde, hvor der ikke er nogen faner.
- Support genveje involverer '+' karakter.
- Forbedrede standard margener i layout, kontrol højder og alle andre små tweaks af denne art.
Hvad er nyt i version 0.4.1:.
- Tilføjet NLSTR til UI scripts namespace
- Du må ikke pakke Window.autosaveName i lokalisering opkald.
- Rettet en fejl der forårsager nogle strenge ikke skal pakkes ind i lokalisering opkald.
- Set RadioButton s & quot; autosizesCells & quot; til True ved oprettelsen.
Hvad er nyt i version 0.4.0:
- Tilføjet Panel, SplitView, OutlineView, Listevisning, Toolbar , SegmentedControl, SearchField, Slider og NumberFormatter.
- Added Layouts.
- Tilføjet understøttelse af mange, mange, mange nye attributter, konstanter og typer.
- Nu genererer en & quot; .h & quot; at gå sammen med den genererede enhed.
- Tilføjet ejendommen og dens underklasser, en nemmere måde at tilføje understøttelse til nye attributter, selv de komplekse.
- Det er nu muligt at tilsidesætte marginer i layout metodekald.
- Tilføjet understøttelse af bindinger med den nye View.bind () metode.
- Tilføjet den nye standardindstillinger globale variabel, som kan bruges til at binde til brugerstandarder.
- Konstanter adgang med const kan nu bitvis OR-ed.
- genererede kode er nu formateret til at se lidt bedre og være lettere at debug.
- Tilføjet nye konstanter for Menu genveje til specielle taster (pile, indtaste osv.).
- Tilføjet understøttelse af UI script argumenter.
Hvad er nyt i version 0.3.1:
- skubbet ned handlingen attribut fra knap til at styre.
- radioknapper er nu en kontrol underklasse.
- Made vindue genberegne sin opfattelse loop efter at have genereret sine børn.
Hvad er nyt i version 0.3.0:
- Tilføjet radioknapper, TableView, TabView, TextView, ImageView og ProgressIndicator.
- Tilføjet understøttelse af strengen lokalisering.
- Tilføjet TextField.alignment og TextField.textColor.
- Tilføjet Button.keyEquivalent.
- Tilføjet canClose, canResize og canMinimize til vindue.
- Tilføjet en Kontrol underklasse.
- Vis kan nu direkte instantieres i UI scripts (De er ligesom & quot; brugerdefinerede visninger & quot; i IB).
- xibless løb kan nu køre på script, som resultatet er en visning.
- Forbedret layout system.
- Window oprindelse er nu leveres i form af screen proportioner end absolutte positioner.
- Fast 'id' ownerclass i hovedfunktion prototype generation og tilføjede & quot; ownerimport & quot; global variabel i UI script.
- undslippe linjeskift i snor kodegenerering.
- Tilføjet dokumentation for Button.buttonType og Button.bezelStyle og tilføjet en demo for en knap med en anden bezel stil.
- Fast på de værste memory leaks.
- Rettet en fejl, hvor egenskaber som standard klasse-niveau skrifttyper ville ikke blive genereret, når du genererer flere UI script i samme python session.
- Windows er ikke frigivet, når lukket som standard.
- Tilføjet støtte til cirkulære referencer (et vindue indstilling en af sine ejendomme til et element, der krævede, at vinduet, før at blive skabt, for eksempel initialFirstResponder). Vi har tidligere kunne ikke kode til sådanne bindinger.
- Gjort align argument View.packRelativeTo () valgfri.
Hvad er nyt i version 0.2.0:
- Tilføjet Sphinx dokumentation
- Tilføjet xibless køre kommandoen til hurtige UI previews.
- Tilføjet Comboboks og popup.
Krav :
- Python
Kommentarer ikke fundet