Direkta manipulationsgränssnitt ger intuitiva och interaktiva funktioner till ett brett spektrum av användare, men de uppvisar ofta två begränsningar: de inbyggda funktionerna kan omöjligen täcka alla användningsfall, och den interna representationen av innehållet är inte lätt att exponera. Vi tror att om direkt manipulation gränssnitt skulle (a) använda allmänna program som representationsformat, och (b) utsätta dessa program för användaren, då experter skulle kunna anpassa dessa system på kraftfulla nya sätt och icke-experter kunde njuta av några av fördelarna med programmerbara system. I det senaste arbetet presenterade vi en prototyp av SVG-redigeraren SKETCH-N-SKETCH som erbjöd ett steg mot denna vision. I det systemet skrev användaren ett program i en allmän-purpose lambda-calculus för att generera en grafisk design och kunde sedan direkt manipulera utdata för att indirekt ändra konstruktionsparametrar (dvs.. konstanta ordagranner) i programmet i realtid under manipuleringen. Tyvärr vilade bördan av att programmera de önskade relationerna helt på användaren. I detta dokument utformar och implementerar vi nya funktioner för SKETCH-N-SKETCH som hjälper till i själva programmeringsprocessen. Som typiska direktmanipuleringssystem tillhandahåller våra utökade SKETCH-N-SKETCH nu GUI-baserade verktyg för att rita former, relatera former till varandra, och gruppera former tillsammans. Till skillnad från typiska system, dock varje verktyg utför användarens avsikt genom att omvandla deras allmänna syfte program. Detta nya, halvautomatiska programmeringsarbetsflöde gör det möjligt för användaren att snabbt skapa högnivå, återanvändbara abstraktioner i programmet och samtidigt behålla direkt manipulation kapacitet. I det framtida arbetet kan vårt tillvägagångssätt utökas med mer grafiska designfunktioner eller realiseras för andra tillämpningsområden.
Sketchn-Sketch är ett dubbelriktat redigeringssystem där direkt manipulationer till ett programs utdata automatiskt propagera till programmets källkod REF.
Semi-Automated SVG Programming via Direct Manipulation
{'venue': "UIST '16", 'journal': None, 'mag_field_of_study': ['Computer Science']}