ODH LiveCode Workshop Proposed Outline

Websites we'll use:

https://livecode.byu.edu

https://dight210.byu.edu

DAY 1

I. LiveCode overview
	• 4th gen language
	• rapid application development environment
	• English like scripting language
	
	Deploy to...
	Desktop: macOS, Windows, Linux
	Mobile: iOS, Android
	Web (via HTML5/JS conversion - WebAssembly (WASM) engine ) see https://webassembly.org/
	
	Server side engine analogous to PHP
	- dynamic HTML generation
		see 
	- Database middleware
	(LCU and Chinese P&R database communications happen via LC Server middleware)
	
	Projects done with LC
	- Scheduler
	- Chinese P&R
	- LCU
	- Learning Web
	
	- http://livecode1001.blogspot.com/
	
	- show web deployed samples
	
		jigsawPuzzle - https://asay.byu.edu/jigsawPuzzle/jigsawPuzzle.html
		MoscowTour - https://asay.byu.edu/moscow10/MoscowTour.html
	
II. LiveCode Basics

	Stack - basic project document, saved as stack file with .livecode extension
	Card - page/view/screen within stack
	
	Objects/properties
	- object identity: owns specific appearance, behavior
	- inheritance and message passing
	- Grouping
	
	IDE - has the tools you would expect
		- object creation
		- property inspector
		- alignment and layering tools
		- Project overview (Project Browser)
		- Script Editor
		
	
	Language features
	Object oriented-ish
	Event driven
	Interface completely programmable (i.e., in theory you could create a stack and objects using only LiveCode Script)
	variables, arrays
		--scope and persistence
	looping structures
	conditional structures
	reusable code modules (functions, methods, whatever you want to call them)
	libraries, extensions
	file i/o, external media assets

III. Hands-on Project: Hot Linked words in LC


DAY 2

III. LiveCode in ODH operations - Russell Hansen: LC in the ODH Testing Lab - Devin: IV. How DigHT 210 works Brie Woolley - student experience Sample schedule form Winter 2022 LCU LiveCode licenses livecode.byu.edu V. LiveCode as front end Database access revOpenDatabase() revDataFromQuery() revExecuteSQL revCloseDatabase Web services access - show demo stack Shell scripts/Command line access - Have everyone bring a command line utility or program to run, - Or just run some commands and show output VI. Hands-on Review of LiveCode language: - Object types: button, field, image, graphic, player, widget - Common commands: put go set show/hide enable/disable move grab - Messages (events) mouseUp mouseDown openCard openStack closeCard closeStack mouseEnter/mouseLeave - Control structures if - then - else repeat - Properties the location the [short] name the backgroundColor the foregroundColor Here's a more detailed review sheet of LiveCode vocabulary. VII. Hands-on Project: Hot Linked words in LC Project 2: Drag-drop Interactions Objective: Based on the example shown in the presentation, create an interactive dragdrop application. Puzzle, piece-moving game (chessboard, e.g.), matching quiz, etc. Create an object or objects to be dragged. They could be images, buttons, fields, graphics. Initiation of drag comes on mouseDown using the grab command Evaluation of correct drop location comes on mouseUp Use one of these to evaluate a "hit": Operator: [point] is within [rectangle] Functions: within([object],[point]) intersect(targetObj,movedObj,[threshold])