########################################################################### # # File: main.icn # # Subject: Procedure for main part of charpatt # # Author: Ralph E. Griswold # # Date: September 24, 1998 # ############################################################################ # # This file is in the public domain. # ############################################################################ link interact link io link lindgen link lists link navitrix link strings link tables link vsetup global definitions # definitions display area global depth # grammar depth global filename # file name display area global find_string # string specified for constant search global goal # goal string global grammar # grammar saved toggle global gsize # grammar size display area global interrupt_signal # note user interruption of searching global maxl # maximum repetition length global maxn # maximum n-gram length global mid # part of workspace string to search global minl # minimum repetition length global minn # minimum n-gram length global variable # variable display area global note # comment related to grammar global open_proc # procedure for opening file global plist # pattern list vidget global redo_list # list of past states for redo feature global root_cur # current root vidget global secrange # range for section() global slist # symbol list vidget global symbol # focus symbol global symbol_tbl # table of symbols global symbols_list # list for symbol_tbl global symbols_list_auto # list of symbols for auto-encoding global symbols_list_full # full list of symbols global symsleft # symbols-left button global token_tbl # table of tokens global touched # dirty data toggle global undo_list # list of past states for undo feature global vidgets # table of vidgets global workspace_string # current working string $include "defines.icn" procedure main() local root, shortcuts_cur nav_init() # setup up navigation interface vidgets := ui() # &window will be this app's window ... root := vidgets["root"] plist := vidgets["plist"] # pattern list vidget slist := vidgets["slist"] # symbol list vidget definitions := vidgets["definitions"] # definitions display area depth := vidgets["depth"] # depth display area filename := vidgets["filename"] # file name display area gsize := vidgets["size"] # grammar size display area symsleft := vidgets["left"] # symbols-left display area variable := vidgets["variable"] # variable display area maxl := minl := "8" maxn := minn := 4 secrange := "1:0" goal := "*" symbols_list_full := [] every put(symbols_list_full, !(&ucase | &lcase | "!@$%^&_+-=`~|\\:;\"'.?/" | &cset[162:-1])) symbols_list_auto := [] every put(symbols_list_auto, !(&lcase || &ucase || &digits || &cset[162:-1])) symbols_list := copy(symbols_list_full) setup_grammar() repeat { # event loop case Active() of { &window : { root_cur := root shortcuts_cur := shortcuts } nav_window : { root_cur := nav_root shortcuts_cur := nav_keyboard } } ProcessEvent(root_cur, , shortcuts_cur) case nav_state of { &null : next "Okay" : open_proc() } nav_state := &null WAttrib(nav_window, "canvas=hidden") } end