summaryrefslogtreecommitdiff
path: root/tests/examplefiles
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles')
-rw-r--r--tests/examplefiles/example.icn283
-rw-r--r--tests/examplefiles/example.icon381
-rw-r--r--tests/examplefiles/example.md3
-rw-r--r--tests/examplefiles/example.u1
-rw-r--r--tests/examplefiles/example.u1111
5 files changed, 778 insertions, 1 deletions
diff --git a/tests/examplefiles/example.icn b/tests/examplefiles/example.icn
new file mode 100644
index 00000000..c8fcf335
--- /dev/null
+++ b/tests/examplefiles/example.icn
@@ -0,0 +1,283 @@
+#
+# $Id: button.icn,v 1.7 2006-07-09 23:43:07 rparlett Exp $
+#
+# This file is in the public domain.
+#
+# Author: Robert Parlett (parlett@dial.pipex.com)
+#
+
+package gui
+link graphics
+
+$include "guih.icn"
+
+
+#
+# This is the parent class of the button classes, including
+# checkboxes.
+#
+# A {Button} produces a BUTTON_PRESS_EVENT when the button is
+# depressed, and code BUTTON_RELEASE_EVENT when it is released,
+# as well as an ACTION_EVENT.
+#
+# By default, when a button holds the keyboard focus a dashed
+# line appears just within the button. Then, when return is
+# pressed an ACTION_EVENT is generated. The method
+# {Dialog.set_initial_focus()} can be used to have the button
+# have the focus when the dialog is first displayed.
+#
+# Buttons also repeatedly produce a BUTTON_HELD_EVENT whilst they
+# are held down, rather like a repeating keyboard press. The
+# delay between the initial repeat event and subsequent repeat
+# events is set in the parent dialog (see above).
+#
+class Button : Toggle : Component(
+ is_down, #
+ is_held, #
+ is_checked_flag, #
+ label,
+ img_up, #
+ img_down, #
+ img_w, #
+ img_h, #
+ parent_check_box_group, #
+ parent_button_group, #
+ repeat_delay,
+ no_keyboard_flag, #
+ toggles_flag
+ )
+
+ method set_parent_button_group(x)
+ return self.parent_button_group := x
+ end
+
+ #
+ # Invoking this method disables the keyboard control over the
+ # button described above. No dashed line will ever appear in
+ # the button display and return will have no effect on the
+ # button even if it has the focus.
+ #
+ method set_no_keyboard()
+ self.no_keyboard_flag := 1
+ self.accepts_focus_flag := &null
+ end
+
+ #
+ # Clear the no keyboard behaviour (the default)
+ #
+ method clear_no_keyboard()
+ self.no_keyboard_flag := &null
+ self.accepts_focus_flag := 1
+ end
+
+ method tick()
+ if dispatcher.curr_time_of_day() > self.repeat_delay then
+ fire(BUTTON_HELD_EVENT)
+ end
+
+ method go_down()
+ self.is_down := 1
+ set_ticker(self.parent_dialog.repeat_rate)
+ end
+
+ method go_up()
+ self.is_down := &null
+ stop_ticker()
+ end
+
+ method handle_press(e)
+ local b
+ if self.in_region() then {
+ go_down()
+ self.repeat_delay := dispatcher.curr_time_of_day() + self.parent_dialog.repeat_delay
+ self.is_held := 1
+ every b := !(\self.parent_button_group).buttons do {
+ if b.is_unhidden() then {
+ b.is_held := 1
+ b.repeat_delay := self.repeat_delay
+ }
+ }
+ self.invalidate()
+ fire(BUTTON_PRESS_EVENT, e)
+ }
+ end
+
+ method handle_drag(e)
+ if \self.is_held then {
+ #
+ # Button held down; toggle on/off as it goes over the button
+ #
+ if self.in_region() then {
+ if /self.is_down then {
+ go_down()
+ invalidate()
+ }
+ } else {
+ if \self.is_down then {
+ go_up()
+ invalidate()
+ }
+ }
+ }
+ end
+
+ method handle_release(e)
+ if \self.is_held then {
+ self.is_held := &null
+ if \self.is_down then {
+ go_up()
+ fire(BUTTON_RELEASE_EVENT, e)
+ on_action(e)
+ }
+ }
+ end
+
+ method on_action(e)
+ if \self.toggles_flag then {
+ if \self.parent_check_box_group then
+ self.parent_check_box_group.set_which_one(self)
+ else
+ self.toggle_is_checked()
+ }
+ self.invalidate()
+ fire(ACTION_EVENT, e)
+ end
+
+ method handle_accel(e)
+ self.Component.handle_accel(e)
+ on_action(e)
+ end
+
+ method handle_default(e)
+ if \self.has_focus then {
+ if /self.no_keyboard_flag & e == ("\r" | "\l" | " ") then {
+ on_action(e)
+ }
+ }
+ end
+
+ method handle_event(e)
+ if e === (&lpress | &rpress | &mpress) then {
+ handle_press(e)
+ } else if e === (&ldrag | &rdrag | &mdrag) then {
+ handle_drag(e)
+ } else if e === (&lrelease | &rrelease | &mrelease) then {
+ handle_release(e)
+ } else
+ handle_default(e)
+ end
+
+ #
+ # Set the up/down images (if any) to the strings provided,
+ # which should be in Icon image format.
+ # The two images must have the same dimensions.
+ # @param x The up image
+ # @param y The down image
+ #
+ method set_imgs(x, y)
+ self.img_up := x
+ self.img_w := img_width(x) = img_width(y) | fatal("Image widths differ")
+ self.img_h := img_height(x) = img_height(y) | fatal("Image heights differ")
+
+ self.img_down := y
+
+ return
+ end
+
+ #
+ # Set the image (if any) to the given string, which should be in Icon image
+ # format.
+ # @param x The image
+ #
+ method set_img(x)
+ self.img_up := self.img_down := x
+ self.img_w := img_width(x)
+ self.img_h := img_height(x)
+ return x
+ end
+
+ #
+ # Toggle the checked status of the button. This method, and
+ # the following two methods, may be
+ # inappropriate for non-toggle styles of button.
+ #
+ method toggle_is_checked()
+ self.Toggle.toggle_is_checked()
+ self.invalidate()
+ end
+
+ #
+ # Set the status to checked.
+ #
+ method set_is_checked()
+ self.Toggle.set_is_checked()
+ self.invalidate()
+ end
+
+ #
+ # Set the status to unchecked.
+ #
+ method clear_is_checked()
+ self.Toggle.clear_is_checked()
+ self.invalidate()
+ end
+
+ #
+ # Set the button so that when it is pressed, it toggles
+ # between two states, as indicated by the is_checked
+ # flag.
+ #
+ # Instances of Checkbox have this flag on by default, but
+ # TextButton and IconButton do not. When the flag is on,
+ # the latter classes indicate their checked status by
+ # showing the button as being "down".
+ #
+ method set_toggles()
+ self.toggles_flag := 1
+ self.invalidate()
+ end
+
+ #
+ # Clear the toggles flag.
+ #
+ method clear_toggles()
+ self.toggles_flag := &null
+ self.invalidate()
+ end
+
+ #
+ # Set the label of the button, if any.
+ # @param x The label
+ #
+ method set_label(x)
+ self.label := x
+ self.invalidate()
+ return x
+ end
+
+ method set_one(attr, val)
+ case attr of {
+ "label" : set_label(string_val(attr, val))
+ "is_checked" :
+ if test_flag(attr, val) then
+ set_is_checked()
+ else
+ clear_is_checked()
+ "toggles" :
+ if test_flag(attr, val) then
+ set_toggles()
+ else
+ clear_toggles()
+ "no_keyboard" :
+ if test_flag(attr, val) then
+ set_no_keyboard()
+ else
+ clear_no_keyboard()
+ default: self.Component.set_one(attr, val)
+ }
+ end
+
+ initially()
+ self.Component.initially()
+ self.accepts_focus_flag := 1
+end \ No newline at end of file
diff --git a/tests/examplefiles/example.icon b/tests/examplefiles/example.icon
new file mode 100644
index 00000000..29bc548b
--- /dev/null
+++ b/tests/examplefiles/example.icon
@@ -0,0 +1,381 @@
+############################################################################
+#
+# File: kaleid.icn
+#
+# Subject: Program to produce kaleidoscope
+#
+# Author: Stephen B. Wampler
+#
+# Date: May 2, 2001
+#
+############################################################################
+#
+# This file is in the public domain.
+#
+############################################################################
+#
+# Lots of options, most easily set by with the interface after
+# startup. The only one that isn't set that way is -wn where 'n' is
+# the size of the kaleidoscope window (default is 600 square).
+#
+# Terminology (and options):
+#
+# Window_size (-wN): How big of a display window to use.
+# At the current time, this can only be set via a
+# command line argument.
+#
+# Density (-dN): How many circles per octant to keep on display
+# at any one time. There is NO LIMIT to the density.
+#
+# Duration (-lN): How long to keep drawing circles (measured in
+# in circles) once the density is reached. There is NO LIMIT
+# to the duration.
+#
+# MaxRadius (-MN): Maximum radius of any circle.
+#
+# MinRadius (-mN): Preferred minimum radius. Circles with centers
+# near the edge have their radii forced down to fit entirely
+# on the display
+#
+# MaxOffset (-XN): Maximum offset from center of display (may wrap).
+#
+# MinOffset (-xN): Minimum offset
+#
+# Skew (-sN): Shift probability of placing a circle at a 'typical'
+# offset.
+#
+# Fill (-F): Turns off filling the circles.
+#
+# Clear (-C): After the duration, reduces density back to 0 before
+# quitting.
+#
+# Random Seed: (-rN): Sets the random number seed.
+#
+# Thanks to Jon Lipp for help on using vidgets, and to Mary Camaron
+# for her Interface Builder.
+#
+############################################################################
+#
+# Requires: Version 9 graphics
+#
+############################################################################
+#
+# Links: vidgets, vslider, vtext, vbuttons, vradio, wopen, xcompat
+#
+############################################################################
+
+link vidgets
+link vslider
+link vtext
+link vbuttons
+link vradio
+link wopen
+link xcompat
+
+global Clear, fill, duration, density, maxoff, minoff
+global maxradius, minradius, r_seed, skew, win_size, mid_win
+global root, check1, mainwin, use_dialog
+global draw_circle
+
+global du_v, de_v, rs_v, sk_v
+
+procedure main (args)
+
+ draw_circle := DrawCircle
+
+ init_globs()
+ process_args(args)
+
+ if \use_dialog then { # have vidgets, so use them for args.
+ mainwin := WOpen("label=Kaleidoscope", "width=404", "height=313",
+ "font=6x12") |
+ stop ("bad mainwin")
+ root := ui (mainwin)
+ GetEvents (root, quit)
+ }
+ else { # just rely on command line arguments
+ kaleidoscope(r_seed)
+ }
+
+end
+
+procedure init_globs()
+
+ duration := 500 # set default characteristics
+ density := 30
+ win_size := 600
+ minoff := 1
+ maxradius := 150
+ minradius := 1
+ skew := 1
+ fill := "On"
+ draw_circle := FillCircle
+ Clear := "Off"
+ r_seed := map("HhMmYy", "Hh:Mm:Yy", &clock)
+ # See if the Vidget library is available or not
+ if \VSet then use_dialog := "yes"
+ else use_dialog := &null
+
+end
+
+procedure process_args(args)
+ local arg
+
+ # really only needed if you don't use the dialog box
+ every arg := !args do case arg[1+:2] of {
+ "-w" : win_size := integer(arg[3:0]) # window size
+ "-d" : density := integer(arg[3:0]) # density of circles
+ "-l" : duration := integer(arg[3:0]) # duration
+ "-M" : maxradius := integer(arg[3:0]) # maximum radius
+ "-m" : minradius := integer(arg[3:0]) # minimum radius
+ "-X" : maxoff := integer(arg[3:0]) # maximum offset
+ "-x" : minoff := integer(arg[3:0]) # minimum offset
+ "-s" : skew := numeric(arg[3:0]) # set skewedness
+ "-F" : fill := &null # turn off fill
+ "-C" : Clear := "yes" # turn on clear mode
+ "-r" : r_seed := integer(arg[3:0]) # random seed
+ "-h" : stop("usage: kal [-wn] [-dn] [-ln] [-Mn] [-mn] [-Xn] [-xn] _
+ [-sn] [-F] [-C] [-rn]")
+ }
+ # adjust parameters that depend on the window size...
+ mid_win := win_size/2
+ maxoff := win_size-1
+end
+
+# Lorraine Callahan's kaleidoscope program, translated into icon.
+# (some of the things she did were too sophisticated for me
+# to spend time to figure out, so the output is square instead of
+# round), and I use 'xor' to draw instead of writing to separate
+# bit planes.
+
+global putcircle, clrcircle
+
+procedure kaleidoscope(r)
+ local colors
+
+ # What colors to use? This can be changed to whatever!
+ colors := ["red","green","blue","cyan","magenta","yellow"]
+
+ &window := WOpen("label=Kaleidoscope: 'q' quits", "width="||win_size,
+ "height="||win_size, "bg=black")
+ WAttrib("drawop=xor")
+
+ # Create two *indentical* sequences of circles, one to use when
+ # when drawing, one for erasing. (Since 'xor' is used to
+ # place them, these both just draw the circles!)
+
+ putcircle := create { # draws sequence of circles
+ &random :=: r
+ |{
+ Fg(?colors)
+ outcircle()
+ &random <-> r
+ }
+ }
+
+ clrcircle := create { # erases sequence of circles
+ &random :=: r
+ |{
+ Fg(?colors)
+ outcircle()
+ &random <-> r
+ }
+ }
+
+ every 1 to density do @putcircle # fill screen to density
+
+ every 1 to duration do { # maintain steady state
+ @putcircle
+ @clrcircle
+ if *Pending(&window) > 0 then break
+ }
+
+ every (Clear == "On") & 1 to density do @clrcircle
+
+ close(&window)
+end
+
+
+procedure outcircle() # select a circle at random,
+local radius, xoff, yoff # draw it in kaleidoscopic form
+
+ # get a random center point and radius
+ xoff := (?(maxoff - minoff) + minoff) % mid_win
+ yoff := (?(maxoff - minoff) + minoff) % mid_win
+ radius := ?0 ^ skew
+ # force radius to 'fit'
+ radius := ((maxradius-minradius) * radius + minradius) %
+ (mid_win - ((xoff < yoff)|xoff))
+
+ # put into all 8 octants
+ draw_circle(mid_win+xoff, mid_win+yoff, radius)
+ draw_circle(mid_win+xoff, mid_win-yoff, radius)
+ draw_circle(mid_win-xoff, mid_win+yoff, radius)
+ draw_circle(mid_win-xoff, mid_win-yoff, radius)
+
+ draw_circle(mid_win+yoff, mid_win+xoff, radius)
+ draw_circle(mid_win+yoff, mid_win-xoff, radius)
+ draw_circle(mid_win-yoff, mid_win+xoff, radius)
+ draw_circle(mid_win-yoff, mid_win-xoff, radius)
+
+ return
+end
+
+
+############################################################################
+#
+# Vidget-based user interface -- developed originally using Mary
+# Camaron's XIB program. Don't expect this to be very readable -
+# you should have to play with it!
+#
+############################################################################
+procedure ui (win)
+ local cv1, cv2, cv3, cv4
+ local
+ radio_button2,
+ radio_button1,
+ text_input6,
+ text_input5,
+ slider4,
+ slider3,
+ text_input4,
+ text_input3,
+ slider2,
+ slider1
+
+ /win := WOpen("label=ui", "width=404", "height=313", "font=6x12") |
+ stop ("bad win")
+ root := Vroot_frame (win)
+
+ VInsert (root, Vmessage(win, win_size/2), 168, 98)
+ VInsert (root, Vmessage(win, "1"), 108, 97)
+
+ VInsert (root, sk_v := Vtext(win,"Skew:\\=1",get_skew,,6), 280, 39)
+
+ VInsert (root, du_v := Vtext(win, "Duration:\\="||duration, get_duration,,9),
+ 237, 15)
+
+ VInsert (root, Vmessage(win, "Clear at end?"), 232, 145)
+ VInsert (root, Vmessage(win, "Fill?"), 105, 142)
+ VInsert (root, Vmessage(win,"Quit?"), 267, 259)
+ VInsert (root, Vmessage(win,"Display it?"), 26, 260)
+
+ VInsert (root, Vcheckbox(win, do_quit, "check2",20), 305, 255, 20, 20)
+
+ VInsert (root, check1:=Vcheckbox(win, do_display, "check1",20),
+ 106, 258, 20, 20)
+
+ radio_button2 := Vradio_buttons (win, ["On", "Off"], get_clear, , V_CIRCLE)
+ VSet(radio_button2,Clear)
+ VInsert (root, radio_button2, 253, 165)
+
+ radio_button1 := Vradio_buttons (win, ["On", "Off"], get_fill, , V_CIRCLE)
+ VSet(radio_button1,fill)
+ VInsert (root, radio_button1, 99, 165)
+
+ cv1 := Vcoupler()
+ VAddClient(cv1, get_max_offset)
+ text_input6 := Vtext (win, "Max Offset:\\="||(win_size-1), cv1, , 3)
+ VAddClient(cv1, text_input6)
+ slider4 := Vhoriz_slider (win, cv1, "slider4", 70, 12, 0,
+ win_size-1, win_size-1, )
+ VAddClient(cv1, slider4)
+ VInsert (root, text_input6, 196, 103)
+ VInsert (root, slider4, 306, 106)
+
+ cv2 := Vcoupler()
+ VAddClient(cv2, get_min_offset)
+ text_input5 := Vtext (win, "Min Offset\\=1", cv2, , 3)
+ VAddClient(cv2, text_input5)
+ slider3 := Vhoriz_slider (win, cv2, "slider3", 70, 12, 1, win_size-1, 1, )
+ VAddClient(cv2, slider3)
+ VInsert (root, text_input5, 201, 80)
+ VInsert (root, slider3, 307, 82)
+
+ cv3 := Vcoupler()
+ VAddClient(cv3, get_max_radius)
+ text_input4 := Vtext (win, "Max Radius\\="||(win_size/4), cv3, , 3)
+ VAddClient(cv3, text_input4)
+ slider2 := Vhoriz_slider (win, cv3, "slider2", 70, 12, 1, win_size/2,
+ win_size/4, )
+ VAddClient(cv3, slider2)
+ VInsert (root, text_input4, 10, 104)
+ VInsert (root, slider2, 110, 108)
+
+ cv4 := Vcoupler()
+ VAddClient(cv4, get_min_radius)
+ text_input3 := Vtext (win, "Min Radius\\=1", cv4, , 3)
+ VAddClient(cv4, text_input3)
+ slider1 := Vhoriz_slider (win, cv4, "slider1", 70, 12, 1, win_size/2, 1, )
+ VAddClient(cv4, slider1)
+ VInsert (root, text_input3, 10, 81)
+ VInsert (root, slider1, 110, 84)
+
+ VInsert (root, rs_v := Vtext(win,"Random Seed:\\="||r_seed, get_random,, 11),
+ 30, 41)
+ VInsert (root, de_v := Vtext(win,"Density:\\="||density, get_density,,8),
+ 71, 16)
+
+ VResize (root)
+ return root
+end
+
+procedure get_skew (wit, value)
+ skew := value
+end
+
+procedure get_duration (wit, value)
+ duration := value
+end
+
+procedure do_quit (wit, value)
+ stop()
+end
+
+procedure do_display (wit, value)
+ r_seed := numeric(rs_v.data)
+ duration := integer(du_v.data)
+ density := integer(de_v.data)
+ skew := integer(sk_v.data)
+ kaleidoscope(r_seed)
+ wit.callback.value := &null
+ VDraw(check1)
+end
+
+procedure get_clear (wit, value)
+ Clear := value
+end
+
+procedure get_fill (wit, value)
+ fill := value
+ if fill == "Off" then draw_circle := DrawCircle
+ else draw_circle := FillCircle
+end
+
+procedure get_max_offset (wit, value)
+ maxoff := value
+end
+
+procedure get_min_offset (wit, value)
+ minoff := value
+end
+
+procedure get_max_radius (wit, value)
+ maxradius := value
+end
+
+procedure get_min_radius (wit, value)
+ minradius := value
+end
+
+procedure get_random (wit, value)
+ r_seed := integer(value)
+end
+
+procedure get_density (wit, value)
+ density := integer(value)
+end
+
+procedure quit(e)
+ if e === "q" then stop ("Exiting Kaleidoscope")
+end
diff --git a/tests/examplefiles/example.md b/tests/examplefiles/example.md
index 2befb107..e2bbacf1 100644
--- a/tests/examplefiles/example.md
+++ b/tests/examplefiles/example.md
@@ -46,6 +46,9 @@ this sentence @tweets a person about a #topic.
[google](https://google.com/some/path.html)
![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
+[reference link][id]
+[id]: http://example.com/
+
```
* this is just unformated
__text__
diff --git a/tests/examplefiles/example.u b/tests/examplefiles/example.u
index 42c85902..8c6686eb 100644
--- a/tests/examplefiles/example.u
+++ b/tests/examplefiles/example.u
@@ -545,4 +545,3 @@ var y = 0;
-
diff --git a/tests/examplefiles/example.u1 b/tests/examplefiles/example.u1
new file mode 100644
index 00000000..92c45365
--- /dev/null
+++ b/tests/examplefiles/example.u1
@@ -0,0 +1,111 @@
+version U12.1.00
+uid version.u1-1494453463-0
+impl local
+global 1
+ 0,000005,version,0
+
+
+proc version
+ local 0,000000,tab
+ local 1,000000,find
+ local 2,000000,many
+ con 0,010000,8,126,145,162,163,151,157,156,040
+ con 1,002000,1,8
+ con 2,020000,11,060,061,062,063,064,065,066,067,070,071,056
+ con 3,002000,1,1
+ declend
+ filen version.icn
+ line 23
+ colm 11
+ synt any
+ mark L1
+ line 25
+ colm 4
+ synt any
+ keywd version
+ line 25
+ colm 13
+ synt any
+ bscan
+ mark L2
+ mark L3
+ var 0
+ pnull
+ var 1
+ str 0
+ line 26
+ colm 15
+ synt any
+ invoke 1
+ int 1
+ line 26
+ colm 28
+ synt any
+ plus
+ line 26
+ colm 10
+ synt any
+ invoke 1
+ line 26
+ colm 33
+ synt any
+ esusp
+ goto L4
+lab L3
+ line 26
+ colm 35
+ synt any
+ pfail
+lab L4
+ unmark
+lab L2
+ var 0
+ var 2
+ cset 2
+ line 27
+ colm 15
+ synt any
+ invoke 1
+ line 27
+ colm 10
+ synt any
+ invoke 1
+ line 27
+ colm 32
+ synt any
+ bscan
+ mark L5
+ var 0
+ pnull
+ int 3
+ line 27
+ colm 45
+ synt any
+ neg
+ line 27
+ colm 44
+ synt any
+ invoke 1
+ line 27
+ colm 34
+ synt any
+ pret
+lab L5
+ synt any
+ pfail
+ line 27
+ colm 32
+ synt any
+ escan
+ line 25
+ colm 13
+ synt any
+ escan
+ unmark
+lab L1
+ pnull
+ line 30
+ colm 1
+ synt any
+ pfail
+ end \ No newline at end of file