home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / news / 769 / s3meta2.prg < prev    next >
Text File  |  1993-10-21  |  7KB  |  277 lines

  1.  
  2. STATIC cDbfName      := ""
  3. STATIC nIndexOrd     := 0
  4. STATIC cDefaultDir   := ""
  5. STATIC aIndexes      := {}
  6.  
  7. memvar getlist
  8.  
  9.  
  10. PROC MAIN()
  11. local cInScreen := savescreen(0,0,24,79)
  12. local aMenu
  13.  
  14. *- initialize superfunctions
  15. SLS_ISCOLOR( PCOUNT()=0 )
  16. if SLS_ISCOLOR()
  17.   SATTCOLOR()
  18. ELSE
  19.   SATTMONO()
  20. ENDIF
  21.  
  22. cDbfName        := ''
  23. aIndexes        := {}
  24. sls_query("")
  25. sls_bquery(nil)
  26.  
  27. *- set some sets
  28. SET TALK OFF
  29. SET ECHO OFF
  30. SET CONFIRM OFF
  31. SET BELL OFF
  32. SET SAFETY OFF
  33. SET SCOREBOARD OFF
  34. SET TYPEAHEAD TO 50
  35.  
  36. *- set color
  37. Setcolor(sls_normcol())
  38.  
  39. *- draw the screen
  40. paint_sf()
  41.  
  42. *- define the menu
  43. bungstart()
  44.      bungoption("Files")
  45.      bungdrop()
  46.           bungoption("DBF")
  47.               bungdrop()
  48.                 bungoption("Open",{||sf_opendbf(),bungeetop()},{||!used()})
  49.                 bungoption("Modify",{||sf_modify()},{||!used()})
  50.                 bungoption("Close",{||dbclosearea(),cDbfName:="",aIndexes:={}},{||used()})
  51.               bungundrop()
  52.           bungoption("Index")
  53.               bungdrop()
  54.                 bungoption("Open",{||sf_openind(),bungeetop()} ,{||used()})
  55.                 bungoption("Create",{||sf_newind()},{||used()})
  56.                 bungoption("Set Order",{||sf_order()},{||used() .and. len(aIndexes)>0 })
  57.               bungundrop()
  58.           bungoption("CROSSBAR")
  59.           bungoption("Copy to...")
  60.               bungdrop()
  61.                 bungoption("Copy to ~DBF",{||copyitout()},{||used()})
  62.                 bungoption("Copy ~Fields to DBF",{||copyfields()},{||used()})
  63.                 bungoption("Copy to ~SDF or Delimited File",{||sexport()},{||used()})
  64.                 bungoption("Copy to ~MailMerge File",{||smailmerge()},{||used()})
  65.               bungundrop()
  66.           bungoption("Append",{||appendit()},{||used()} )
  67.           bungoption("CROSSBAR")
  68.           bungoption("Quit",{||bungeequit()},nil)
  69.      bungundrop()
  70.      bungoption("Edit")
  71.      bungdrop()
  72.           bungoption("ViewPort",{||viewport(.t.)},{||used()})
  73.           bungoption("Table Edit",{||EditDb(.t.)},{||used()})
  74.           bungoption("Global Replace",{||globrep(.t.)},{||used()})
  75.      bungundrop()
  76.      bungoption("Reporting")
  77.      bungdrop()
  78.           bungoption("Query",{||query()},{||used()})
  79.           bungoption("CROSSBAR")
  80.           bungoption("Print Lists",{||lister()},{||used()})
  81.           bungoption("Duplicate Report")
  82.            bungdrop()
  83.                 bungoption("Listing Only",{||duplook(nil,aIndexes)},{||used()})
  84.                 bungoption("Delete and/or copy",{||duphandle(nil,nil,aIndexes)},{||used()})
  85.            bungundrop()
  86.           bungoption("CROSSBAR")
  87.           bungoption("Mailing Labels",{||clabel()},{||used()})
  88.           bungoption("Form Letters",{||formletr()},{||used()})
  89.           bungoption("CROSSBAR")
  90.           bungoption("Sum numeric field",{||sum_ave()},{||used()})
  91.           bungoption("Average numeric field",{||sum_ave("AVE")},{||used()})
  92.           bungoption("Fr~equency Analysis",{||freqanal()},{||used()})
  93.           bungoption("Time/date Analysis",{||timeper()},{||used()})
  94.           bungoption("D~BF Statistics",{||DBSTATS()},{||used()})
  95.           bungoption("CROSSBAR")
  96.           bungoption("Report Writer",{||Reporter()},{||used()})
  97.      bungundrop()
  98.      bungoption("Appearance")
  99.      bungdrop()
  100.           bungoption("Set colors and other screen items",{||sf_setc()})
  101.           bungoption("Pick from list of predefined colors",{||sf_setcp()})
  102.      bungundrop()
  103.      bungoption("Utilities")
  104.      bungdrop()
  105.           bungoption("List text file",{||fileread()})
  106.           bungoption("Change Directories",{||dirpicker()})
  107.           bungoption("To Do list",{||todolist()})
  108.           bungoption("Cal~endar",{||getdate()})
  109.           bungoption("Calc~ulator",{||getcalc()})
  110.           bungoption("Weights & Measures table",{||wgt_meas()})
  111.           bungoption("Appointment book",{||sappoint()})
  112.      bungundrop()
  113. aMenu := bungend()
  114.  
  115.  
  116. bungee(1,2,78,aMenu,nil,nil,nil,nil,nil,nil,nil,2)
  117.  
  118.  
  119. ss_fold(0,0,24,79,cInscreen)
  120. CLOSE DATA
  121. cDbfName := ''
  122. aIndexes := {}
  123. RETURN
  124.  
  125.  
  126. STATIC func sf_newind
  127. local cNewIndex := bldndx(NIL,NIL,NIL,.T.)
  128. IF !EMPTY(cNewIndex)
  129.    aadd(aIndexes,"")
  130.    Ains(aIndexes,1)    && insert in active index array
  131.    aIndexes[1] := Alltrim(cNewIndex)+Indexext()
  132.    openind(aIndexes,getdfp())       && open them
  133.    nIndexOrd   := 1
  134. ENDIF
  135. sf_show()
  136.  
  137.  
  138. //-----------------------------------------------------------------
  139. STATIC FUNCTION sf_pickdbf(lByPass)
  140. local cDbfnoext,cDbfPick
  141. if !lBypass
  142.   cDbfpick := popex(getdfp()+'*.dbf')
  143. else
  144.   cDbfpick := cDbfName
  145. endif
  146. IF !EMPTY(cDbfpick)
  147.    cDbfnoext := STRIP_PATH(cDbfpick,.t.)
  148.    IF SNET_USE(cDbfpick,cDbfnoext,.f.,5,.t.,"Network error opening "+cDbfpick+" . Keep trying?")
  149.      IF !used()
  150.         USE
  151.         msg("UNABLE TO OPEN "+cDbfpick+"- POSSIBLY CORRUPT OR .DBT FILE MISSING  ")
  152.      ENDIF
  153.    endif
  154.    *- set globals
  155.    if USED() .AND. !lBypass
  156.       sls_query("")
  157.       cDbfName := cDbfPick
  158.       aIndexes := {}
  159.    elseif !used()
  160.       sls_query("")
  161.       cDbfName := ""
  162.       aIndexes := {}
  163.    endif
  164. ENDIF
  165. RETURN ''
  166.  
  167. //----------------------------------------------------------
  168. STATIC FUNCTION sf_order
  169. local nOrder := nIndexOrd
  170. nIndexOrd := mchoice(aIndexes,10,10,20,60,"Select Controlling Index")
  171. IF nIndexOrd = 0
  172.    nIndexOrd = nOrder
  173. ELSE
  174.    SET ORDER TO (nIndexOrd)
  175. ENDIF
  176. RETURN ''
  177.  
  178. //----------------------------------------------------------
  179. STATIC FUNCTION paint_sf
  180.  
  181. Setcolor(sls_normcol())
  182. CLEAR
  183. *- draw center box with C function bxx()
  184. dispbox(0,0,24,79)
  185. dispbox(3,1,17,78,'▒▒▒▒▒▒▒▒▒')
  186. @2,1 to 2,78
  187. @18,1 to 18,78
  188. @20,03 SAY   "Datafile in use   -  "
  189. @21,03 SAY   "Indexes in use    -  "
  190. @22,3  SAY   "Current Directory -  "
  191. RETURN ''
  192.  
  193. //----------------------------------------------------------
  194. STATIC FUNCTION sf_show
  195. local i
  196. local cRecords
  197. *- display the dbfs and indexes
  198. Scroll(20,24,23,78,0)
  199. if !empty(getdfp() )
  200.   @22,24 say getdfp()
  201. else
  202.   @22,24 say Curdir()
  203. endif
  204. IF used()
  205.    cRecords := IIF(!EMPTY(cDbfName),' Containing '+Alltrim(STR(RECC()))+;
  206.                 ' RECORDS','')
  207.    @20,24 SAY cDbfName+cRecords
  208.    devpos(21,24)
  209.    for i = 1 to len(aIndexes)
  210.      ??aIndexes[i]+" "
  211.    next
  212. ENDIF
  213. RETURN ''
  214.  
  215. static func sf_setc
  216.       setcolors()
  217.       SETCOLOR(sls_normcol())
  218.       dispbegin()
  219.       paint_sf()            && repaint screen
  220.       dispend()
  221. return nil
  222.  
  223. static func sf_setcp
  224.       colpik()
  225.       dispbegin()
  226.       SETCOLOR(sls_normcol())
  227.       paint_sf()            && repaint screen
  228.       BUNGREDRAW()
  229.       dispend()
  230. return nil
  231.  
  232. static func dirpicker
  233. cDefaultDir := ""
  234. fulldir(.F.,@cDefaultDir)
  235. IF !EMPTY(cDefaultDir)
  236.   set default to (cDefaultDir)
  237.   CLOSE DATA
  238.   cDbfName := ''
  239.   aIndexes := {}
  240.   sls_query("")
  241.   sls_bquery(nil)
  242.   paint_sf()
  243. ENDIF
  244. return nil
  245.  
  246.  
  247. STATIC FUNC sf_openDbf
  248. IF Adir('*.dbf')>0
  249.   sf_pickdbf(.f.)
  250. else
  251.   msg("No DBFs detected in this directory")
  252. endif
  253. sf_show()
  254. return nil
  255.  
  256.  
  257. static func sf_openind
  258. IF Adir('*'+IndexExt())>0
  259.   pickndx(aIndexes,getdfp(),.f.)
  260. else
  261.   msg("No indexes present")
  262. endif
  263. sf_show()
  264.  
  265.  
  266. static func sf_modify
  267. local lUsed := USED()
  268. dbclosearea()
  269. modify()
  270. dbclosearea()
  271. if lUsed
  272.   sf_pickdbf(.T.)
  273.   openind(aIndexes,getdfp())
  274. endif
  275. sf_show()
  276.  
  277.