/* INIEDIT (STD) -- Interactivly Edit Selected bae.ini Entries */ /* INIEDIT (STD) -- Ausgewaehlte bae.ini-Eintrage interaktiv veraendern */ /* // Copyright (c) 2005-2012 Oliver Bartels F+E, Muenchen // Author: Roman Ludwig // Changes History: // rl (120427) RELEASED FOR BAE V7.8. // rl (101019) RELEASED FOR BAE V7.6. // rl (091104) RELEASED FOR BAE V7.4. // rl (081112) ENHANCEMENT: // Added user specific bae.ini file support. // rl (081014) RELEASED FOR BAE V7.2. // rl (071029) RELEASED FOR BAE V7.0. // rl (070308) ENHANCEMENT: // Added dialog box size parameters. // rl (060829) RELEASED FOR BAE V6.8. // rl (051025) ORIGINAL CODING. // // DESCRIPTION // // The iniedit User Language program allows to interactivly set // some common parameters defined in bae.ini. The old bae.ini // contents is backuped in bae.bak. */ // Includes #include "pop.ulh" // User Language popup utilities // Enforce standard caller type #pragma ULCALLERSTD // Disable undo state request #pragma ULCALLERNOUNDO // Messages string UPRPARAMDIAL = M("Ausgewaehlte Einstellungen bae.ini", "Selected settings from bae.ini"); string UPRLOADLAST = M("Beim Modulstart zuletzt bearbeitetes Element laden", "Load last processed element on startup"); string UPRDSAVEAS = M("Speichern unter-Verhalten :", "Save as behaviour :"); string UPRSAVEAS0 = M("&Altes Element im Speicher", "&Old element in memory"); string UPRSAVEAS1 = M("&Neues Element laden","Load &new element"); string UPRDLOCKMODE = M("Element Doppelbearbeitung :", "Element Double Usage :"); string UPRLOCKM0 = M("&Warnungsabfrage beim Speichern", "Issue &Warning Query on Save"); string UPRLOCKM1 = M("Warnung beim Laden und &Speichern", "Issue Warnings on Load && &Save"); string UPRLOCKM2 = M("Warnung beim Laden, &kein Speichern", "Issue Warning on Load, &Disable Save"); string UPRLOCKM3 = M("Laden &verbieten","D&isable Load"); string UPRDMREP = M("Mauswiederholung :","Mouse Repeat Function :"); string UPRMREP0 = M("Nur &Menufunktionen","&Menu Functions Only"); string UPRMREP1 = M("Menu-, &Tastenfunktionen","Menu, &Key Functions"); string UPRMREP2 = M("Menu-, &Kontextfunktionen", "Menu, &Context Functions"); string UPRMREP3 = M("M&enu-, Tasten-, Kontextfunktionen", "M&enu, Key, Context Functions"); string UPRDMWARP = M("Maussprung :","Mouse Warp :"); string UPRMWARP0 = M("&Kein Menumaussprung","&No menu mouse warp"); string UPRMWARP1 = M("Sprung an Position &1","Warp to &1st item"); string UPRMWARP2 = M("Sprung an &selektierte Position", "Warp to &selected item"); string UPRMWARPB = M("Ruecksprung nach Selektion","Restore position"); string UPRMWARPP = M("Sprung zu Pickelementposition", "Warp to Element Pick Position"); string UPRDMINFO = M("Infoanzeige :","Info Display :"); string UPRMINFO0 = M("&Windows Sprechblase","&Windows Balloon Tooltip"); string UPRMINFO1 = M("Dauerhaftes &Mausfadenkreuz", "Permanent &Mouse Crosshair"); string UPRMINFO2 = M("Auf &Strg-Anfrage","On &Ctrl request"); string UPRDDIALOG = M("Max. Dialogboxgroesse (%.1f*%.1f)", "Max. Dialog box size (%.1f*%.1f)"); string UPRDTBATTR = M("Toolbar Anzahl Attributfenster :", "Toolbar attribute window count :"); string UPRDWARN = M("Warnung bei :","Warning at :"); string UPRWARNSL = M("Abkopplung Symbol von Layoutbauteil", "Detachment Symbol of Layout Part"); string UPRWARNNJ = M("Netzzusammenfassungen","Net Join"); string UPRWARNMP = M("Modulport auf Planebene","Top Level Modul Port"); string UPRDSFINDW = M("Angezeigte Umgebung bei Symbolsuche :", "Symbol search display range :"); string UPRDLOGLTW = M("Symbollogik Tabellenfeldbreite :", "Symbol logic table field width :"); string UPRDSFORMAT = M("SCM EPS-/PDF Defaultformat :", "SCM EPS-/PDF Default Format :"); string UPRSCALE0 = M("&Transparent","&Transparent"); string UPRSCALE1 = M("Transparent 1&:1","Transparent 1&:1"); string UPRSCALE2 = M("Transparent &1:2","Transparent &1:2"); string UPRSCALE3 = M("Transparent &2:1","Transparent &2:1"); string UPRSFORMAT1 = M("%&Postscript n:1","%&Postscript n:1"); string UPRSFORMAT2 = M("Postscript &A4","Postscript &A4"); string UPRSFORMAT3 = M("Postscript &A3","Postscript &A3"); string UPRSFORMAT4 = M("Postscript 1&60*240","Postscript 1&60*240"); string UPRSFORMAT5 = M("Postscript &Letter","Postscript &Letter"); string UPRSFORMAT6 = M("%&PDF n:1","%&PDF n:1"); string UPRSFORMAT7 = M("%A&uto Postscript A3/A4","%Auto Postscript A3/A4"); string UPRWARNCS = M("Schaltplan nach Packagerlauf geaendert", "Schematic changed after Packager run"); string UPRDTSEGMOD = M("Leiterbahnen Defaultsegmentmodus :", "Trace Default Segment Mode :"); string UPRTSEGMOD1 = M("&Ohne Nachbarn bewegen","M&ove without Neighbours"); string UPRTSEGMOD2 = M("&Mit Nachbarn bewegen","Move with &Neighbours"); string UPRTSEGMOD3 = M("Nachbarn &anpassen","&Adjust Neighbours"); string UPRTSEGMOD4 = M("O&hne Vias anpassen","Adjust wit&hout vias"); string UPRDCLINEMODE = M("Dokumentarlinien Endverbindung :", "Documentary Closed Lines :"); string UPRSCLINEMODE = M("Grafiklinien Endverbindung :", "Graphic Closed Lines :"); string UPRCLINEMODE1 = M("&Nicht geschlossen halten","&Never keep closed"); string UPRCLINEMODE2 = M("Immer &geschlossen halten","&Always keep closed"); string UPRCLINEMODE3 = M("Nach&fragen","&Query"); string UPRDLFORMAT = M("Layout EPS-/PDF Defaultformat :", "Layout EPS-/PDF Default Format :"); string UPRLFORMAT1 = M("Postscript &n:1","Postscript &n:1"); string UPRLFORMAT2 = M("Postscript A&4","Postscript A&4"); string UPRLFORMAT3 = M("Postscript A&3","Postscript A&3"); string UPRLFORMAT4 = M("Postscript 1&60*240","Postscript 1&60*240"); string UPRLFORMAT5 = M("Postscript &Letter","Postscript &Letter"); string UPRLFORMAT6 = M("%&PDF n:1","%&PDF n:1"); string UPRLFORMAT7 = M("P&DF A4","P&DF A4"); string UPRLFORMAT8 = M("PD&F n:1 A4","PD&F n:1 A4"); string UPRLFORMAT9 = M("PDF &A3","PDF &A3"); string UPRLFORMAT10 = M("&PDF n:1 A4-Mosaik","&PDF n:1 A4 Mosaic"); string UPRDOFFSET = M("EPS-/PDF Offset [mm] :","EPS-/PDF Offset [mm] :"); string UPRDX = M("X :","X :"); string UPRDY = M("Y :","Y :"); string UPRDARCTRL = M("Aktuelle Steuerungseinstellungen als Default eintragen", "Store current control settings as default"); string UPRDARSTRAT = M("Aktuelle Strategieeinstellungen als Default eintragen", "Store current strategy settings as default"); string UPRDCOLMAP = M("Default Farbzuordnung :","Default Color Assignment :"); string UPRCOLMAP0 = M("&D-Code Zuordnung","&D-Code Assignment"); string UPRCOLMAP1 = M("&Lagenzuordnung","&Layer Assignment"); string UPRDVIEWSET = M("Aktuelle Ansicht / Einstellungen als Default eintragen", "Store current View / Settings as default"); string UPRDPLCSET = M("Aktuelle Autoplacement / Einstellungen als Default eintragen", "Store current Autoplacement / Settings as default"); string UPRDGRPSET = M("Aktuelle Bearbeiten / Gruppeneinstellungen als Default eintragen", "Store current Edit / Group Settings as default"); string UPRDCOPFSET = M("Aktuelle Flaechenautomatik / Einstellungen als Default eintragen", "Store current Copper Fill / Settings as default"); string UPRDSETSET = M("Aktuelle Einstellungen / Einstellungen als Default eintragen", "Store current Settings / Settings as default"); string UPRDSPLOTSET = M("Aktuelle Plotausgabe / Einstellungen als Default eintragen", "Store current Plot Output / Settings as default"); string UPRDPLOTSET = M("Aktuelle Kontrollplot / Einstellungen als Default eintragen", "Store current Control Plot / Settings as default"); string UPRDGERBSET = M("Aktuelle Gerber Fotoplot / Einstellungen als Default eintragen", "Store current Gerber Photoplot / Settings as default"); string UPRDDRILLSET = M("Aktuelle Bohr+Bestueckdaten / Einstellungen als Default eintragen", "Store current Drill+Insertion / Settings as default"); string UPRDATOVWR = M("Bestehende Daten ueberschreiben (J/N)? ", "Overwrite existing data (Y/N) ? "); string REPDONE = M("Neue Einstellungen uebernommen.", "New settings stored."); string REPCONFDONE = M("Konfigurationsdateien kopiert.", "Configuration files copied."); string REPFCOPY = M("Kopieren Datei '%s'...", "Copying file '%s'..."); string ERRBAKFILE = M("Fehler beim Anlegen der Backup-Datei '%s'!", "Error creating backup file '%s'!"); string ERRSAMECONF = M("Gleiches Verzeichnis '%s' fuer Benztzer und alle Benutzer konfiguriert!", "Error creating backup file '%s'!"); string ERRFREAD = M("Fehler beim Lesen der Datei '%s'!", "Error reading file '%s'!"); string ERRFWRITE = M("Fehler beim Schreiben auf Datei '%s'!", "Error writing to file '%s'!"); string ERRNOWIN = M("Nur in Windowsumgebungen verfuegbar!", "Windows Environment needed!"); // INI file parameter name definitions #define PAR_SCMFORMAT "PSFORMAT_SCM" // Def. EPS/PDF-output format #define PAR_SCMXOFF "PSXOFF_SCM" // Def. EPS/PDF X offset #define PAR_SCMYOFF "PSYOFF_SCM" // Def. EPS/PDF Y offset #define PAR_LAYFORMAT "PSFORMAT_LAY" // Def. EPS/PDF-output format #define PAR_LAYXOFF "PSXOFF_LAY" // Def. EPS/PDF X offset #define PAR_LAYYOFF "PSYOFF_LAY" // Def. EPS/PDF Y offset #define PAR_TSEGMOVM "TSEGMOVM_GED" // Trace segment move mode #define PAR_TRCCOLLQRY "TRCCOLLQRY_GED" // Trace collision query mode #define PAR_GCLINEEDIT "CLINEEDIT_GED" // Closed doc. line edit mode #define PAR_SCLINEEDIT "CLINEEDIT_SCM" // Closed doc. line edit mode #define PAR_LOADLAST "LOADLAST_STD" // Auto. last element load flag #define PAR_SAVEASLOAD "SAVEASLOAD_STD" // Auto. load after save as #define PAR_LOCKMODE "LOCKMODE_STD" // Element lock mode #define PAR_MOUSEREP "MOUSEREP_STD" // Mouse command repeat mode #define PAR_MOUSEWARP "MOUSEWARP_STD" // Mouse warp mode #define PAR_MOUSEINFO "MOUSEINFO_STD" // Menu mouse info display mode #define PAR_DIALXMAX "DIALOGXMAX_STD" // Dialog box max. width #define PAR_DIALYMAX "DIALOGYMAX_STD" // Dialog box max. height #define PAR_TB_ATTRCNT "TB_ATTRWCNT_SCM" // Toolbar attr. window count #define PAR_PINWIDTH "LLPINDW_SCM" // Pin edit dialog item width #define PAR_ZOOMEXP "SYMZOOMEXP_SCM" // Symbol zoom expansion value #define PAR_WARNMODES "WARNMODE_SCM" // Warning mode schematic #define PAR_WARNMODEL "WARNMODE_LAY" // Warning mode schematic #define PAR_COLMAP "COLORMAP_CV" // Color mapping mode #define PAR_CLEANROUT "CLEANROUT_AR" // Router cleaning run enable #define PAR_CLEANOPT "CLEANOPT_AR" // Optim. cleaning run enable #define PAR_OPTCOUNT "OPTCOUNT_AR" // Number of optimization runs #define PAR_MAXROCON "MAXROCON_AR" // Max. rip-ups per connection #define PAR_MAXROLEVEL "MAXROLEVEL_AR" // Max. rip-up level #define PAR_MAXRORET "MAXRORET_AR" // Max. num. of rip-up retries #define PAR_SMDVIAPASS "SMDVIAPASS_AR" // SMD via fanout pass #define PAR_BGAFANOUT "BGAFANOUT_AR" // BGA fanout mode #define PAR_MICVIAMODE "MICVIAMODE_AR" // Micro via mode #define PAR_POWLVIAMODE "POWLVIAMODE_AR" // Power layer via mode #define PAR_PGSWAPMODE "PGSWAPMODE_AR" // Pin/gate swap mode #define PAR_AUTOSAVE "AUTOSAVE_AR" // Automatic save enable #define PAR_OPTCHAR "OPTCHAR_AR" // Optimizer characteristic #define PAR_VIADELAY "VIADELAY_AR" // Router via delay at 1/10" #define PAR_CHANNELDLY "CHANNELDLY_AR" // Router pin channel delay #define PAR_CROSSDLY "CROSSDLY_AR" // Cross direction delay #define PAR_DIRCHGDLY "DIRCHGDLY_AR" // Direction change delay #define PAR_PACKDLY "PACKDLY_AR" // Path packing delay #define PAR_STATDLY "STATDLY_AR" // Statistical delay base #define PAR_BUSSTRDLY "BUSSTRDLY_AR" // Bus structure delay #define PAR_RRAREA1DLY "RRAREA1DLY_AR" // Re-route area 1 delay #define PAR_RRAREA2DLY "RRAREA2DLY_AR" // Re-route area 2 delay #define PAR_SKIPPDLY "SKIPPDLY_AR" // Skip existing path delay #define PAR_OFFGRIDDLY "OFFGRIDDLY_AR" // Router off-grid delay #define PAR_PGRIDSHIFT "PGRIDSHIFT_AR" // Router prefered grid shift #define PAR_PGRIDDLY "PGRIDDLY_AR" // Router prefered grid delay #define PAR_NAREADLY "NAREADLY_AR" // Router outside net area delay #define PAR_FULLVIAEVL "FULLVIAEVL_AR" // Full via evaluation mode #define PAR_GGRIDLOCK "GRIDLOCK_GED" // Input grid lock #define PAR_GANGLELOCK "ANGLELOCK_GED" // Input angle lock #define PAR_GINPUTGRID "INPUTGRID_GED" // Input grid #define PAR_GBACKGRID "BACKGRID_GED" // Background grid #define PAR_GRIDLINES "GRIDLINES_STD" // Grid line matrix display flag #define PAR_GAUTOCORN "AUTOCORN_GED" // Automatic corner insertion #define PAR_GANGLETOGG "ANGLETOGGLE_GED" // Input angle toggle flag #define PAR_GCOORDDISP "COORDDISP_GED" // Coordinate display mode #define PAR_COLTABSAVE "COLTABSAVE_LAY" // Color table save flag #define PAR_GWIDEDRAW "WIDEDRAW_GED" // Wide draw width #define PAR_GPICKMODE "PICKMODE_GED" // Element pick mode #define PAR_GAUTOCOMPL "PAUTOCOMPL_GED" // Polygon autocomplete mode #define PAR_GLAYDEFM "LAYDEFM_GED" // Layer default mode #define PAR_DRCDISPM "DRCDISPM_GED" // DRC error display mode #define PAR_DRCTEXTH "DRCTEXTH_GED" // DRC error text height #define PAR_MINCONDISP "MINCONDISP_GED" // Mincon display mode #define PAR_MINCONCLIP "MINCONCLIP_GED" // Mincon display clipping mode #define PAR_GPICKPDISP "PICKPDISP_GED" // Pick point display mode #define PAR_GINFODISP "INFODISP_GED" // Info display mode #define PAR_GPLOTPDISP "PLOTPDISP_GED" // Plot preview mode #define PAR_GMIRRDISP "MIRRDISP_GED" // Mirror display mode #define PAR_DRCDISTM "DRCDISTM_GED" // DRC distance display mode #define PAR_DRCDEF "DRCDEF_GED" // DRC default clearance value #define PAR_PATHPICKM "PATHPICKM_GED" // Path pick mode #define PAR_GMINCON "MINCON_GED" // Mincon mode #define PAR_GAUTOSAVEI "AUTOSAVEI_GED" // Autosave intervall #define PAR_PATHWIDTH1 "PATHWIDTH1_GED" // First (small) path width #define PAR_PATHWIDTH2 "PATHWIDTH2_GED" // Second (wide) path width #define PAR_VIAOPTM "VIAOPTM_GED" // Via optimization mode #define PAR_DEFDYNBGED "DEFDYNBOUND_GED" // Dyn. elem. boundary classes #define PAR_GFONTNAME "FONTNAME_GED" // Font name #define PAR_PARTAIRLM "PARTAIRLM_GED" // Part airline mode #define PAR_PARTTRCM "PARTTRCM_GED" // Part pin trace move mode #define PAR_GGRPDMODE "GRPDISPMODE_GED" // Group display mode #define PAR_GGRPAMODE "GRPANGMODE_GED" // Group angle release mode #define PAR_GGRPVMODE "GRPVISMODE_GED" // Group visibility mode #define PAR_GRPBALTLAY "GRPBRDALTLAY_GED"// Group board outline alternate layer #define PAR_CFISOL "CFISOLATION_GED" // Copper fill isol. distance #define PAR_CFMINAREA "CFMINAREA_GED" // Copper fill min. area size #define PAR_CFTRCMODE "CFTRCMODE_GED" // Copper fill trace mode #define PAR_CFISLAND "CFISLAND_GED" // Copper fill island mode #define PAR_CFINKEEPO "CFINKEEPOUT_GED" // Copper fill inside area mode #define PAR_CFAANGMODE "CFAANGMODE_GED" // Copper fill acute angle mode #define PAR_CFHTMODE "CFHTMODE_GED" // Copper fill heat trap mode #define PAR_CFHTWIDTH "CFHTWIDTH_GED" // Copper fill heat trap width #define PAR_CFHTISOL "CFHTISOL_GED" // Cop.fill heat trap iso. dist. #define PAR_CFMAXHTCNT "CFMAXHTCNT_GED" // Cop.fill max. heat trap junc. #define PAR_CFHATSPACE "CFHATSPACE_GED" // Copper fill hatch spacing #define PAR_CFHATWIDTH "CFHATWIDTH_GED" // Copper fill hatch width #define PAR_CFHATANG "CFHATANG_GED" // Copper fill hatch angle #define PAR_CFHATMODE "CFHATMODE_GED" // Copper fill hatch mode #define PAR_APPARTEXP "APPARTEXP_GED" // Autoplacement part expansion #define PAR_APPARTORD "APPARTORD_GED" // Autoplacement part order #define PAR_APSEGFIT "APSEGMFIT_GED" // Autoplacement segment fit #define PAR_APBASEOFF "APBASEOFF_GED" // Autoplc. part size base off. #define PAR_APOPTCNT "APOPTCNT_GED" // Autoplc. optimization count #define PAR_APPARTSWAP "APPARTSWAP_GED" // Autoplacement part swap flag #define PAR_APPGSWAP "APPGSWAP_GED" // Autoplc. pin/gate swap flag #define PAR_APMIRR "APMIRRMODE_GED" // Autoplc. part mirror mode #define PAR_APROT "APROTMODE_GED" // Autoplc. part rotation mode #define PAR_APRETRYCNT "APRETRYCNT_GED" // Autoplacement retry count #define PAR_APSMDROT "APSROTMODE_GED" // Autoplc. SMD part rot. mode #define PAR_APOUTLLAY "APOUTLLAY_GED" // Autoplc. part outline layer #define PAR_SGRIDLOCK "GRIDLOCK_SCM" // Input grid lock #define PAR_SANGLELOCK "ANGLELOCK_SCM" // Input angle lock #define PAR_SBACKGRID "BACKGRID_SCM" // Background grid #define PAR_SINPUTGRID "INPUTGRID_SCM" // Input grid #define PAR_SCOORDDISP "COORDDISP_SCM" // Coordinate display mode #define PAR_SAUTOCORN "AUTOCORN_SCM" // Automatic corner insertion #define PAR_SPICKMODE "PICKMODE_SCM" // Element pick mode #define PAR_SPICKPDISP "PICKPDISP_SCM" // Pick point display mode #define PAR_SAUTOCOMPL "PAUTOCOMPL_SCM" // Polygon autocomplete mode #define PAR_SERRORDISP "ERRORDISP_SCM" // Error display mode #define PAR_SINFODISP "INFODISP_SCM" // Info display mode #define PAR_SPLOTPDISP "PLOTPDISP_SCM" // Plot preview mode #define PAR_SGRPDMODE "GRPDISPMODE_SCM" // Group display mode #define PAR_SGRPAMODE "GRPANGMODE_SCM" // Group angle release mode #define PAR_DEFSYMTMM "DEFSYMTMM_SCM" // Default symbol text move mode #define PAR_DEFSIGROUTE "DEFSIGROUT_SCM" // Default signal router mode #define PAR_UNROUTELINE "UNROUTELINE_SCM" // Unroute line draw mode #define PAR_DEFSIGGROUT "DEFSIGGROUT_SCM" // Def. signal group router mode #define PAR_CSEGMOVM "CSEGMOVM_SCM" // Connection segment move mode #define PAR_CONSPLIT "CONSPLIT_SCM" // Connection split mode #define PAR_SCONSPLIT "SCONSPLIT_SCM" // Symbol connection split mode #define PAR_SFONTNAME "FONTNAME_SCM" // Font name #define PAR_SAUTOSAVEI "AUTOSAVEI_SCM" // Autosave intervall #define PAR_DEFDYNBSCM "DEFDYNBOUND_SCM" // Dyn. elem. boundary classes #define PAR_SSTDLINE "STDLINE_SCM" // Standard line width #define PAR_SPLOTSCALE "PLOTSCALE_SCM" // HPGL plot scale factor #define PAR_SHPGLFILL "HPGLFILL_SCM" // HPGL fill mode #define PAR_SHPGLSPEED "HPGLSPEED_SCM" // HPGL pen speed #define PAR_SGENPSCALE "GENPSCALE_SCM" // Generic printer scale mode #define PAR_SGENPCOLOR "GENPCOLOR_SCM" // Generic printer color mode #define PAR_PLTAUTOROT "PLTAUTOROT_SCM" // Automatic plot rotation flag #define PAR_LHPGLFILL "HPGLFILL_CAM" // HPGL fill mode #define PAR_LHPGLSPEED "HPGLSPEED_CAM" // HPGL pen speed #define PAR_LHPGLPENW "HPGLPENW_CAM" // HPGL pen width #define PAR_LHPGLSCALE "HPGLSCALE_CAM" // HPGL plot scale factor #define PAR_LGENPSCALE "GENPSCALE_CAM" // Generic printer scale mode #define PAR_LGENPDRAW "GENPDRAW_CAM" // Generic printer drawing mode #define PAR_GBRFORMAT "GBRFORMAT_CAM" // Gerber format #define PAR_GBROPT "GBROPT_CAM" // Gerber optimization mode #define PAR_GBRFILL "GBRFILL_CAM" // Gerber optimization mode #define PAR_GBRARC "GBRARC_CAM" // Gerber arc mode #define PAR_GBREXT "GBREXT_CAM" // Gerber extended mode #define PAR_LSTDLINE "STDLINE_CAM" // Standard line width #define PAR_ALLLAYER "ALLLAYER_CAM" // All layer output mode #define PAR_BORDER "BORDER_CAM" // Board outline output mode #define PAR_PLTROT "PLOTROT_CAM" // Plot rotate mode #define PAR_PLTMIRR "PLOTMIRR_CAM" // Plot mirror mode #define PAR_MARKER "MARKER_CAM" // Plot marker output mode #define PAR_SYMTOL "SYMTOL_CAM" // Symbol tolerance #define PAR_DRACCUR "DRACCUR_CAM" // Drill accuracy #define PAR_POWHTMD "POWHTMDIST_CAM" // Heat trap to drl. min. dist. #define PAR_POWHTANG "POWHTANG_CAM" // Heat trap angle #define PAR_POWISMD "POWISMDIST_CAM" // Isolation to drl. min. dist. #define PAR_POWHTRNG "POWHTRANGE_CAM" // Heat trap to drl. dist. range #define PAR_POWISRNG "POWISRANGE_CAM" // Isolation to drl. dist. range #define PAR_POWBORDWD "POWBORDERWD_CAM" // Isolation border width #define PAR_POWPLANEWD "POWPLANEWD_CAM" // Split power plane isol. width #define PAR_CVBACKGRID "BACKGRID_CV" // Background grid #define PAR_CVINPUTGRID "INPUTGRID_CV" // Input grid #define PAR_CVCOORDDISP "COORDDISP_CV" // Coordinate display mode #define PAR_COLMAP "COLORMAP_CV" // Color mapping mode #define PAR_DRAWMODE "DRAWMODE_CV" // Draw mode #define PAR_CVWIDEDRAW "WIDEDRAW_CV" // Wide draw width string #define PAR_CVGBRFMT "GBRFMT_CV" // Gerber format #define PAR_CVGBRLAYM "GBRLAYM_CV" // Gerber layer selection mode #define PAR_CVGBRUSRCONV "GBRUSRCONV_CV" // Gerber conv. factor #define PAR_CVPOWHTLINE "POWHTLINE_CV" // Heat trap line width #define PAR_CVPOWHTANG "POWHTANG_CV" // Heat trap angle #define PAR_CVINPXOFF "INPXOFF_CV" // Default input X offset #define PAR_CVINPYOFF "INPYOFF_CV" // Default input Y offset #define PAR_CVVIADCODE "GBRVIADC_CV" // Default gerber via D code #define PAR_CVGBRARC "GBRARC_CV" // Gerber arc mode #define PAR_CVINPMIRR "INPMIRROR_CV" // Default input mirror mode #define PAR_CVGBRZERO "GBRZEROM_CV" // Gerber zero suppression mode #define PAR_CVGBREXT "GBREXT_CV" // Gerber extended mode #define PAR_CVGBROPT "GBROPT_CV" // Gerber optimization mode #define PAR_CVGBRCOORD "GBRCOORDM_CV" // Gerber coordinate mode #define PAR_CVFLASHDM "GBRFLASHDM_CV" // Default flash doc. layer mode // INI file name string BAEINIFN = strgetconffilename(INITFVNAME,INITFNAME,1); string BAEUINIFN = strgetconffilename(INITUFVNAME,INITUFNAME,2); // User Language program names #define UL_TOOLBAR "toolbar" // ULP: Toolbar // Globals string curid /* Current identifier */; int curint /* Current integer value */; int scanlang = (-1) /* Scan language code */; int curlang /* Current language code */; int curline /* Current line */; double curflt /* Current float value */; int vastackn = 0 /* Variable array stack count */; int vastack[] /* Variable array stack */; int callertype = uliptype() /* Current caller type */; int scanctype /* Scan caller type */; struct rplcdes { // Variable value replacement desc. int line /* Variable line */; string name /* Variable name */; string val /* New variable value */; } rplcl[] /* Replacement list */; int rplcn = 0 /* Replacement count */; int mergemode = (-1) /* Merge mode */; /*________________________________________________________________*/ // Main program void main() { string cmdstr = "" /* Command string */; string modid /* Module id */; int nextline = (-1) /* Next replacement line */; int rplcidx = 0 /* Replacement request index */; int c /* Scan character */; int dpos = (-1) /* Definition mark index */; int eidx /* Definition end index */; int dqmode = 0 /* Double quote status */; int sqmode = 0 /* Single quote status */; int sfh /* Source file handle */; int dfh /* Destination file handle */; string sbuf /* String buffer */; string bakfname /* Backup file name */; int i /* Loop control variable */; // Check if user specific bae.ini file exists mode fseterrmode(0); if ((sfh=fopen(BAEUINIFN,0))!=(-1)) { BAEINIFN=BAEUINIFN; fclose(sfh); } fseterrmode(1); // Parse the INI file parseinifile(); if (bae_peekiact()) // Get the command string if ((cmdstr=askstr("",MAXKEYLEN))==UINPOPABORT) error_abort(); switch (cmdstr) { case "gedviewset" : modid="ged"; gedviewsettings(); break; case "gedcopfillset" : modid="ged"; gedcopfillsettings(); break; case "gedsetset" : modid="ged"; gedsetsettings(); break; case "gedplcset" : modid="ged"; gedplcsettings(); break; case "gedgrpset" : modid="ged"; gedgrpsettings(); break; case "gedplotset" : modid="ged"; gedplotsettings(); break; case "scmviewset" : modid="scm"; scmviewsettings(); break; case "scmgrpset" : modid="scm"; scmgrpsettings(); break; case "scmplotset" : modid="scm"; scmplotsettings(); break; case "scmsetset" : modid="scm"; scmsetsettings(); break; case "rutctrlset" : modid="ar"; rutctrlsettings(); break; case "rutstratset" : modid="ar"; rutstratsettings(); break; case "camplotset" : modid="cam"; camplotsettings(); break; case "camgerberset" : modid="cam"; camgerbersettings(); break; case "camdrillset" : modid="cam"; camdrillsettings(); break; case "camsetset" : modid="cam"; camsetsettings(); break; case "cvviewset" : modid="cv"; cvviewsettings(); break; case "cvsetset" : modid="cv"; cvsetsettings(); break; case "copyset" : copysetup(); break; default : // Test the interpreter type switch (callertype) { /* SCM */ case ULIPSCM : modid="scm"; param_scm(); break; /* GED */ case ULIPGED : modid="ged"; param_ged(); break; /* AR */ case ULIPAR : modid="ar"; param_ar(); break; /* CAM */ case ULIPCAM : modid="cam"; param_cam(); break; /* CED */ case ULIPCED : modid="ced"; break; /* CV */ case ULIPCV : modid="cv"; param_cv(); break; // Ignore on default default : ; } } // Check if values changed if (rplcn==0) exit(0); // Perform BAE Demo check with abort BAE_Demo_check(2); bakfname=convstring(BAEINIFN,0)+".bak"; // Set file error mode fseterrmode(0); if ((sfh=fopen(bakfname,0))!=(-1)) { fclose(sfh); remove(bakfname); } if (rename(BAEINIFN,bakfname)) { fseterrmode(1); errormsg(ERRBAKFILE,bakfname); } if ((dfh=fopen(BAEINIFN,2))==(-1)) { fseterrmode(1); rename(bakfname,BAEINIFN); return; } if ((sfh=fopen(bakfname,0))==(-1)) { fclose(dfh); fseterrmode(1); rename(bakfname,BAEINIFN); return; } // Get first replacement line while (rplcl[rplcidx].line<0) rplcidx++; nextline= rplcidx>=rplcn ? (-1) : rplcl[rplcidx].line; // Repetively get string from input file and modify/append it curline=0; while (fgets(sbuf,1024,sfh)==0) { curline++; if (curline==nextline) { dqmode=sqmode=0; dpos=(-1); // Search comment or line end eidx=strlen(sbuf); for (i=0;(c=sbuf[i])!='\0';i++) { if (dqmode) { if (c=='"') dqmode=0; } else if (sqmode) { if (c=='\'') sqmode=0; } else if (c=='/' || c==0x0A || c==0x0D) { eidx=i; break; } else if (c=='"') { dqmode=1; } else if (c=='\'') { dqmode=1; } else if (c=='=' && dpos==(-1)) { dpos=i; } } if (!dqmode && !sqmode) { // Scan to whitespace start for (i=eidx-1;i>=0;i--) if ((c=sbuf[i])==' ' || c=='\t') eidx=i; else break; for (;(c=sbuf[dpos+1])!='\0';dpos++) if (c!=' ' && c!='\t') break; sprintf(sbuf,"%s%s%s",strextract(sbuf,0,dpos), rplcl[rplcidx].val, strextract(sbuf,eidx,strlen(sbuf))); } // Get next replacement line rplcidx++; nextline= rplcidx>=rplcn ? (-1) : rplcl[rplcidx].line; } fputs(sbuf,dfh); } // Close files fclose(sfh); if (rplcl[0].line==(-1)) { fprintf(dfh,"\n[%s]\n",modid); for (rplcidx=0;rplcidx=arylength(ERRS)) sprintf(msg,ERRS[arylength(ERRS)-1],status); else sprintf(msg,ERRS[status], BAEINIFN,synscanline(),synscanstring()); // Print the error message bae_msgbox(2,msg,""); } // Parser action routines int p_caller(int typ) /* // Receive a caller type // Returns : zero if done or (-1) on error // Parameter : // int typ : Caller type */ { // Store the scan caller type scanctype=typ; // Return without errors return(0); } int p_ident() // Receive an identifier // Returns : zero if done or (-1) on error { // Store the current string curid=synscanstring(); curline=synscanline(); strupper(curid); // Return without errors return(0); } int p_anystr() // Receive anny string // Returns : zero if done or (-1) on error { // Store the current string curid=synscanstring(); // Return without errors return(0); } int p_value(int negflag) /* // Receive a signed value // Returns : zero if done or (-1) on error // Parameter : // int negflag : Negative number flag */ { string name /* Variable name */; string valstr /* Value string */; int i /* Loop control variable */; // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang!=(-1) && scanlang!=curlang) { // Ignore entry curid=""; if (vastackn==0) scanlang=(-1); return(0); } // Get value string valstr=synscanstring(); name=varname(); // Search dot in value string for (i=strlen(valstr)-1;i>=0;i--) if (valstr[i]=='.') { // Store float value curflt=atof(valstr); if (negflag) curflt*=(-1.0); varset(name,curflt); varset(name+"_n",curline); if (vastackn==0) scanlang=(-1); // Return without errors return(0); } // Store integer value curint=atoi(valstr); if (negflag) curint*=(-1); varset(name,curint); varset(name+"_n",curline); curflt=curint; if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_orvalue() // Receive an or value // Returns : zero if done or (-1) on error { // Check the caller type if ((scanctype&callertype)==0) // Return without errors // Check if language specific entry of interest if (scanlang!=(-1) && scanlang!=curlang) { // Ignore entry curid=""; if (vastackn==0) scanlang=(-1); return(0); } // Or with current integer value curint|=atoi(synscanstring()); varset(varname(),curint); curflt=curint; // Return without errors return(0); } int p_lang(int langcode) /* // Receive an unit specification // Returns : zero if done or (-1) on error // Parameter : // int langcode : Language code */ { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); scanlang=langcode; // Return without errors return(0); } int p_unit(int unit) /* // Receive an unit specification // Returns : zero if done or (-1) on error // Parameter : // int unit : Unit code */ { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Convert float value to internal units if (curid!="") varset(varname(),cvtlength(curflt,unit,0)); // Return without errors return(0); } int p_docnum() // Receive a documentary layer number // Returns : zero if done or (-1) on error { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Get value string curint=0x400+16*(atoi(synscanstring())-1); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { // Store base number varset(varname(),curint); varset(varname()+"_n",curline); } // Return without errors return(0); } int p_docside(int side) /* // Receive a documentary layer side // Returns : zero if done or (-1) on error // Parameter : // int side : Documentary layer side */ { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { // Store side curint|=side; varset(varname(),curint); } if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_signal() // Receive a signal layer number // Returns : zero if done or (-1) on error { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { // Get value string curint=atoi(synscanstring())-1; varset(varname(),curint); varset(varname()+"_n",curline); } if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_none() // Receive a none layer definition // Returns : zero if done or (-1) on error { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { varset(varname(),-0x4000); varset(varname()+"_n",curline); } if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_intval(int val) /* // Receive an integer number // Returns : zero if done or (-1) on error // Parameter : // int val : Integer value */ { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { varset(varname(),val); varset(varname()+"_n",curline); } if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_strval() // Receive a string value // Returns : zero if done or (-1) on error { // Check the caller type if ((scanctype&callertype)==0) // Return without errors return(0); // Check if language specific entry of interest if (scanlang==(-1) || scanlang==curlang) { // Store string value varset(varname(),synscanstring()); varset(varname()+"_n",curline); } if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_arraystart() // Receive a variable array start // Returns : zero if done or (-1) on error { vastack[vastackn]=1; vastackn++; // Return without errors return(0); } int p_arrayend() // Receive a variable array end // Returns : zero if done or (-1) on error { vastackn--; if (vastackn==0) scanlang=(-1); // Return without errors return(0); } int p_arraynext() // Receive an array element end // Returns : zero if done or (-1) on error { if (vastackn) vastack[vastackn-1]++; // Return without errors return(0); } string varname() // Return current variable name // Returns : variable name { string vname /* Variable name */; int i /* Loop control variable */; // Check if array defined if (vastackn==0) // Return base name return(curid); // Build the array element name vname=curid; for (i=0;i0;i--) if (rplcl[i-1].line>line) rplcl[i]=rplcl[i-1]; else break; rplcl[i].line=line; rplcl[i].name=name; rplcl[i].val=value; rplcn++; } int remotedefs() // Read remote definitions // Returns : 1 if remote definitions found else zero { string vname /* Variable name */; string vval /* Variable value */; string sval /* String value */; double dval /* Double value */; int ival /* Integer value */; int i /* Loop control variable */; for (i=0;i<1000;i++) { if (varget(INICHGVAR+itoa(i),vname) || varget(INICHGVAL+itoa(i),vval)) break; addrplcval(vname,vval); vardelete(INICHGVAR+itoa(i)); vardelete(INICHGVAL+itoa(i)); if (varget(INICHGSVAL+itoa(i),sval)==0) { varset(vname,sval); vardelete(INICHGSVAL+itoa(i)); } else if (varget(INICHGDVAL+itoa(i),dval)==0) { varset(vname,dval); vardelete(INICHGDVAL+itoa(i)); } else if (varget(INICHGIVAL+itoa(i),ival)==0) { varset(vname,ival); vardelete(INICHGIVAL+itoa(i)); } } // Return remote definitions found status if (rplcn>0) return(1); // Check if dialog box support if (bae_dialclr()) error(ERRNOWIN); return(0); } void camplotsettings() /* // Add CAM processor control plot settings to replacement request list */ { string varvalue /* Variable value string */; double hpscale /* HPGL scaling value */; double hpspeed /* HPGL speed value */; double hppenwidth /* HPGL pen width value */; int hpfill /* HPGL fill mode */; int gpadjust /* Generic printer scaling adjust */; int gpdrawmode /* Generic printer drawing mode */; cam_gethpglparam("",hpscale,hpspeed,hppenwidth,hpfill); sprintf(varvalue,"%s",hpfill ? "ON" : "OFF"); addrplcval(PAR_LHPGLFILL,varvalue); addrplcval(PAR_LHPGLPENW, bae_numstring(cvtlength(hppenwidth,0,2),5)+" mm"); addrplcval(PAR_LHPGLSPEED,bae_numstring(hpspeed,5)); addrplcval(PAR_LHPGLSCALE,bae_numstring(hpscale,5)); cam_getintpar(7,gpadjust); sprintf(varvalue,"%s",gpadjust ? "ON" : "OFF"); addrplcval(PAR_LGENPSCALE,varvalue); cam_getintpar(11,gpdrawmode); sprintf(varvalue,"%d",gpdrawmode); addrplcval(PAR_LGENPDRAW,varvalue); } void camgerbersettings() /* // Add CAM processor gerber photoplot settings to replacement request list */ { string varvalue /* Variable value string */; double gblinew /* Gerber standard line width value */; int gbformat /* Gerber format */; int gbopt /* Gerber optimization mode */; int gbfill /* Gerber fill mode */; int gbarc /* Gerber arc mode */; int gbext /* Gerber extended mode */; cam_getgerberparam("",gblinew,gbformat,gbopt,gbfill,gbarc,gbext); addrplcval(PAR_LSTDLINE,bae_numstring(cvtlength(gblinew,0,2),5)+" mm"); sprintf(varvalue,"%d",gbformat); addrplcval(PAR_GBRFORMAT,varvalue); sprintf(varvalue,"%s",gbopt ? "ON" : "OFF"); addrplcval(PAR_GBROPT,varvalue); sprintf(varvalue,"%d",gbfill); addrplcval(PAR_GBRFILL,varvalue); sprintf(varvalue,"%s",gbarc ? "ON" : "OFF"); addrplcval(PAR_GBRARC,varvalue); sprintf(varvalue,"%d",gbext); addrplcval(PAR_GBREXT,varvalue); } void camdrillsettings() /* // Add CAM processor drill+insertion settings to replacement request list */ { addrplcval(PAR_DRACCUR, bae_numstring(cvtlength(cam_getdrlaccuracy(),0,2),5)+" mm"); } void camsetsettings() /* // Add CAM processor settings settings to replacement request list */ { string varvalue /* Variable value string */; int alllaymode /* CAM/Plot all layer mode */; int bordermode /* CAM/Plot border mode */; int rotmode /* CAM/Plot rotation mode */; int mirrmode /* CAM/Plot mirror mode */; int regmode /* CAM/Plot markers mode */; double symboltol /* CAM/Plot symbol tolerance */; double powplthtdmd /* Heat trap to drill min. dist. */; double powpltisdmd /* Isolation to drill min. dist. */; double powplthttol /* Heat trap tolerance */; double powpltistol /* Isolation tolerance */; double powpltbrdwd /* Border width */; double powpltsppis /* Split power plane isol. width */; int powplthtang /* Heat trap base angle */; cam_getgenpltparam(alllaymode,bordermode,rotmode, mirrmode,regmode,symboltol,0.0,0.0); cam_getpowpltparam(powplthtdmd,powpltisdmd, powplthttol,powpltistol,powpltbrdwd,powpltsppis); cam_getintpar(1,powplthtang); sprintf(varvalue,"%d",alllaymode); addrplcval(PAR_ALLLAYER,varvalue); sprintf(varvalue,"%s",bordermode ? "ON" : "OFF"); addrplcval(PAR_BORDER,varvalue); sprintf(varvalue,"%s",rotmode ? "ON" : "OFF"); addrplcval(PAR_PLTROT,varvalue); sprintf(varvalue,"%d",mirrmode); addrplcval(PAR_PLTMIRR,varvalue); sprintf(varvalue,"%s",regmode ? "ON" : "OFF"); addrplcval(PAR_MARKER,varvalue); addrplcval(PAR_SYMTOL,bae_numstring(cvtlength(symboltol,0,2),5)+" mm"); addrplcval(PAR_POWHTMD, bae_numstring(cvtlength(powplthtdmd,0,2),5)+" mm"); sprintf(varvalue,"%d",powplthtang); addrplcval(PAR_POWHTANG,varvalue); addrplcval(PAR_POWISMD, bae_numstring(cvtlength(powpltisdmd,0,2),5)+" mm"); addrplcval(PAR_POWHTRNG, bae_numstring(cvtlength(powplthttol,0,2),5)+" mm"); addrplcval(PAR_POWISRNG, bae_numstring(cvtlength(powpltistol,0,2),5)+" mm"); addrplcval(PAR_POWBORDWD, bae_numstring(cvtlength(powpltbrdwd,0,2),5)+" mm"); addrplcval(PAR_POWPLANEWD, bae_numstring(cvtlength(powpltsppis,0,2),5)+" mm"); } void cvviewsettings() /* // Add CAM View view settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; bae_getinpgrid(dval,0.0); addrplcval(PAR_CVINPUTGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getbackgrid(dval,0.0); addrplcval(PAR_CVBACKGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getintpar(23,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GRIDLINES,varvalue); sprintf(varvalue,"%d",bae_getcoorddisp()); addrplcval(PAR_CVCOORDDISP,varvalue); cv_getdblpar(3,dval); addrplcval(PAR_CVWIDEDRAW, "\""+bae_numstring(cvtlength(dval,0,2),5)+" mm\""); cv_getintpar(2,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_COLMAP,varvalue); cv_getintpar(3,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_DRAWMODE,varvalue); } void cvsetsettings() /* // Add CAM View settings settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; cv_getdblpar(0,dval); addrplcval(PAR_CVINPXOFF,bae_numstring(cvtlength(dval,0,2),5)+" mm"); cv_getdblpar(1,dval); addrplcval(PAR_CVINPYOFF,bae_numstring(cvtlength(dval,0,2),5)+" mm"); cv_getdblpar(2,dval); addrplcval(PAR_CVPOWHTLINE,bae_numstring(cvtlength(dval,0,2),5)+" mm"); cv_getdblpar(4,dval); addrplcval(PAR_CVGBRUSRCONV,bae_numstring(cvtlength(dval,0,2),8)+" mm"); if (fabs(dval-0.0000254)<0.0000001) ival=0; else if (fabs(dval-0.00000254)<0.00000001) ival=1; else if (fabs(dval-0.000000254)<0.000000001) ival=2; else if (fabs(dval-0.0000000254)<0.0000000001) ival=3; else ival=4; sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBRFMT,varvalue); cv_getintpar(5,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVPOWHTANG,varvalue); cv_getintpar(0,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBRLAYM,varvalue); cv_getintpar(4,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVVIADCODE,varvalue); cv_getintpar(7,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBRARC,varvalue); cv_getintpar(8,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVINPMIRR,varvalue); cv_getintpar(9,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBRZERO,varvalue); cv_getintpar(10,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBREXT,varvalue); cv_getintpar(6,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBROPT,varvalue); cv_getintpar(11,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVGBRCOORD,varvalue); cv_getintpar(12,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CVFLASHDM,varvalue); } void gedviewsettings() /* // Add layout editor view settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; sprintf(varvalue,"%s",bae_getgridlock() ? "ON" : "OFF"); addrplcval(PAR_GGRIDLOCK,varvalue); sprintf(varvalue,"%s",bae_getanglelock() ? "ON" : "OFF"); addrplcval(PAR_GANGLELOCK,varvalue); bae_getinpgrid(dval,0.0); addrplcval(PAR_GINPUTGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getbackgrid(dval,0.0); addrplcval(PAR_GBACKGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getintpar(23,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GRIDLINES,varvalue); sprintf(varvalue,"%d",ged_getautocornins()); addrplcval(PAR_GAUTOCORN,varvalue); ged_getintpar(23,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GANGLETOGG,varvalue); sprintf(varvalue,"%d",bae_getcoorddisp()); addrplcval(PAR_GCOORDDISP,varvalue); ged_getintpar(128,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_COLTABSAVE,varvalue); ged_getintpar(129,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_MINCONDISP,varvalue); ged_getintpar(130,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_MINCONCLIP,varvalue); addrplcval(PAR_GWIDEDRAW, bae_numstring(cvtlength(ged_getwidedraw(),0,2),5)+" mm"); sprintf(varvalue,"%d",ged_getpickmode()); addrplcval(PAR_GPICKMODE,varvalue); sprintf(varvalue,"%d",ged_getlaydefmode()); addrplcval(PAR_GLAYDEFM,varvalue); sprintf(varvalue,"%d",ged_getdrcmarkmode()); addrplcval(PAR_DRCDISPM,varvalue); ged_getdblpar(12,dval); addrplcval(PAR_DRCTEXTH,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getintpar(0,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GPICKPDISP,varvalue); ged_getintpar(3,ival); sprintf(varvalue,"%s",ival ? "ON" : "OFF"); addrplcval(PAR_GINFODISP,varvalue); ged_getintpar(17,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GPLOTPDISP,varvalue); bae_getintpar(24,ival); sprintf(varvalue,"%s",ival ? "ON" : "OFF"); addrplcval(PAR_GMIRRDISP,varvalue); ged_getintpar(18,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_DRCDISTM,varvalue); } void gedplcsettings() /* // Add layout editor autoplacement settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; ged_getdblpar(13,dval); addrplcval(PAR_APPARTEXP,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getdblpar(14,dval); addrplcval(PAR_APPARTORD,bae_numstring(dval,5)); ged_getdblpar(15,dval); addrplcval(PAR_APSEGFIT,bae_numstring(dval,5)); ged_getdblpar(16,dval); addrplcval(PAR_APBASEOFF,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getintpar(39,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APOPTCNT,varvalue); ged_getintpar(40,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APPARTSWAP,varvalue); ged_getintpar(41,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APPGSWAP,varvalue); ged_getintpar(42,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APMIRR,varvalue); ged_getintpar(43,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APROT,varvalue); ged_getintpar(44,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APRETRYCNT,varvalue); ged_getintpar(45,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APSMDROT,varvalue); ged_getintpar(46,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_APOUTLLAY,varvalue); } void gedcopfillsettings() /* // Add layout editor copper fill settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; ged_getdblpar(3,dval); addrplcval(PAR_CFISOL,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getdblpar(4,dval); addrplcval(PAR_CFMINAREA,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getintpar(25,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CFTRCMODE,varvalue); ged_getintpar(26,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CFISLAND,varvalue); ged_getintpar(27,ival); sprintf(varvalue,"%d",ival&0x01); if (ival&0x02) varvalue+="|2"; addrplcval(PAR_CFINKEEPO,varvalue); ged_getintpar(29,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CFAANGMODE,varvalue); ged_getintpar(24,ival); sprintf(varvalue,"%d",ival&0x03); if (ival&0x04) varvalue+="|4"; if (ival&0x08) varvalue+="|8"; if (ival&0x10) varvalue+="|16"; addrplcval(PAR_CFHTMODE,varvalue); ged_getdblpar(5,dval); addrplcval(PAR_CFHTWIDTH,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getdblpar(6,dval); addrplcval(PAR_CFHTISOL,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getintpar(28,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CFMAXHTCNT,varvalue); ged_getdblpar(7,dval); addrplcval(PAR_CFHATSPACE,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getdblpar(8,dval); addrplcval(PAR_CFHATWIDTH,bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getdblpar(9,dval); addrplcval(PAR_CFHATANG,bae_numstring(cvtangle(dval,0,1),3)); ged_getintpar(30,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_CFHATMODE,varvalue); } void gedgrpsettings() /* // Add layout editor group settings to replacement request list */ { string varvalue /* Variable value string */; int ival /* Integer value */; ged_getintpar(32,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GGRPDMODE,varvalue); ged_getintpar(38,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GGRPAMODE,varvalue); ged_getintpar(47,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GGRPVMODE,varvalue); ged_getintpar(115,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GRPBALTLAY,varvalue); } void gedsetsettings() /* // Add layout editor settings settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; lay_getplanchkparam(dval,0.0,0.0,0.0,"",(-1),0); addrplcval(PAR_DRCDEF, bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getintpar(14,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_PATHPICKM,varvalue); sprintf(varvalue,"%d",ged_getmincon()); addrplcval(PAR_GMINCON,varvalue); ged_getintpar(21,ival); sprintf(varvalue,"\"%d\"",ival); addrplcval(PAR_GAUTOSAVEI,varvalue); ged_getintpar(114,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GAUTOCOMPL,varvalue); ged_getpathwidth(dval,0.0); addrplcval(PAR_PATHWIDTH1, bae_numstring(cvtlength(dval,0,2),5)+" mm"); ged_getpathwidth(0.0,dval); addrplcval(PAR_PATHWIDTH2, bae_numstring(cvtlength(dval,0,2),5)+" mm"); sprintf(varvalue,"%d",ged_getviaoptmode()); addrplcval(PAR_VIAOPTM,varvalue); bae_getintpar(0,ival); switch (bae_planddbclass()) { case DDBCLLAY : ival= (bae_iniintval(PAR_DEFDYNBGED,0)&0x0E)|(ival ? 1 : 0); break; case DDBCLLPRT : ival= (bae_iniintval(PAR_DEFDYNBGED,0)&0x0D)|(ival ? 2 : 0); break; case DDBCLLSTK : ival= (bae_iniintval(PAR_DEFDYNBGED,0)&0x0B)|(ival ? 4 : 0); break; case DDBCLLPAD : ival= (bae_iniintval(PAR_DEFDYNBGED,0)&0x07)|(ival ? 8 : 0); break; default : ival=bae_iniintval(PAR_DEFDYNBGED,0); } sprintf(varvalue,"%d",ival); addrplcval(PAR_DEFDYNBGED,varvalue); varset(PAR_DEFDYNBGED,ival); sprintf(varvalue,"\"%s\"",bae_fontname()); addrplcval(PAR_GFONTNAME,varvalue); ged_getintpar(22,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_PARTAIRLM,varvalue); sprintf(varvalue,"%d",ged_getsegmovmode()); addrplcval(PAR_TSEGMOVM,varvalue); ged_getintpar(131,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_TRCCOLLQRY,varvalue); } void gedplotsettings() /* // Add CAM processor control plot settings to replacement request list */ { string varvalue /* Variable value string */; double gblinew /* Gerber standard line width value */; double powplthtdmd /* Heat trap to drill min. dist. */; double powpltisdmd /* Isolation to drill min. dist. */; double powplthttol /* Heat trap tolerance */; double powpltistol /* Isolation tolerance */; double powpltbrdwd /* Border width */; double powpltsppis /* Split power plane isol. width */; int powplthtang /* Heat trap base angle */; ged_getdblpar(27,gblinew); ged_getdblpar(28,powplthtdmd); ged_getdblpar(29,powpltisdmd); ged_getdblpar(30,powplthttol); ged_getdblpar(31,powpltistol); ged_getdblpar(32,powpltbrdwd); ged_getdblpar(33,powpltsppis); ged_getintpar(108,powplthtang); addrplcval(PAR_LSTDLINE,bae_numstring(cvtlength(gblinew,0,2),5)+" mm"); addrplcval(PAR_POWHTMD, bae_numstring(cvtlength(powplthtdmd,0,2),5)+" mm"); sprintf(varvalue,"%d",powplthtang); addrplcval(PAR_POWHTANG,varvalue); addrplcval(PAR_POWISMD, bae_numstring(cvtlength(powpltisdmd,0,2),5)+" mm"); addrplcval(PAR_POWHTRNG, bae_numstring(cvtlength(powplthttol,0,2),5)+" mm"); addrplcval(PAR_POWISRNG, bae_numstring(cvtlength(powpltistol,0,2),5)+" mm"); addrplcval(PAR_POWBORDWD, bae_numstring(cvtlength(powpltbrdwd,0,2),5)+" mm"); addrplcval(PAR_POWPLANEWD, bae_numstring(cvtlength(powpltsppis,0,2),5)+" mm"); } void scmviewsettings() /* // Add schematic editor view settings to replacement request list */ { string varvalue /* Variable value string */; double dval /* Double value */; int ival /* Integer value */; sprintf(varvalue,"%s",bae_getgridlock() ? "ON" : "OFF"); addrplcval(PAR_SGRIDLOCK,varvalue); sprintf(varvalue,"%s",bae_getanglelock() ? "ON" : "OFF"); addrplcval(PAR_SANGLELOCK,varvalue); bae_getinpgrid(dval,0.0); addrplcval(PAR_SINPUTGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getbackgrid(dval,0.0); addrplcval(PAR_SBACKGRID,bae_numstring(cvtlength(dval,0,2),5)+" mm"); bae_getintpar(23,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_GRIDLINES,varvalue); scm_getintpar(21,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SAUTOCORN,varvalue); sprintf(varvalue,"%d",bae_getcoorddisp()); addrplcval(PAR_SCOORDDISP,varvalue); scm_getintpar(5,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SPICKMODE,varvalue); scm_getintpar(0,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SPICKPDISP,varvalue); scm_getintpar(38,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SERRORDISP,varvalue); scm_getintpar(9,ival); sprintf(varvalue,"%s",ival ? "ON" : "OFF"); addrplcval(PAR_SINFODISP,varvalue); scm_getintpar(19,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SPLOTPDISP,varvalue); } void scmgrpsettings() /* // Add schematic editor group settings to replacement request list */ { string varvalue /* Variable value string */; int ival /* Integer value */; scm_getintpar(24,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SGRPDMODE,varvalue); scm_getintpar(30,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SGRPAMODE,varvalue); } void scmplotsettings() /* // Add schematic plot settings to replacement request list */ { string varvalue /* Variable value string */; double hpscale /* HPGL scaling value */; double hpspeed /* HPGL speed value */; double hppenwidth /* HPGL pen width value */; int hpfill /* HPGL fill mode */; int pltrotate /* Plot rotate mode */; int intval /* Integer parameter value */; scm_gethpglparam("",hpscale,hpspeed,hppenwidth,hpfill,pltrotate); addrplcval(PAR_SHPGLFILL,itoa(hpfill)); addrplcval(PAR_SSTDLINE, "\""+bae_numstring(cvtlength(hppenwidth,0,2),5)+" mm\""); addrplcval(PAR_SHPGLSPEED,bae_numstring(hpspeed,5)); addrplcval(PAR_SPLOTSCALE,bae_numstring(hpscale,5)); scm_getintpar(13,intval); sprintf(varvalue,"%s",intval ? "ON" : "OFF"); addrplcval(PAR_SGENPSCALE,varvalue); scm_getintpar(14,intval); addrplcval(PAR_SGENPCOLOR,itoa(intval)); switch (pltrotate) { case 0 : addrplcval(PAR_PLTAUTOROT,"OFF"); break; case 2 : addrplcval(PAR_PLTAUTOROT,"ON"); break; default : ; } } void scmsetsettings() /* // Add schematic editor settings settings to replacement request list */ { string varvalue /* Variable value string */; int ival /* Integer value */; scm_getintpar(1,ival); addrplcval(PAR_DEFSIGROUTE,itoa(ival)); scm_getintpar(36,ival); addrplcval(PAR_UNROUTELINE,itoa(ival)); scm_getintpar(2,ival); addrplcval(PAR_DEFSYMTMM,itoa(ival)); scm_getintpar(17,ival); addrplcval(PAR_DEFSIGGROUT,itoa(ival)); scm_getintpar(29,ival); addrplcval(PAR_CSEGMOVM,itoa(ival)); scm_getintpar(41,ival); addrplcval(PAR_CONSPLIT,itoa(ival)); scm_getintpar(42,ival); addrplcval(PAR_SCONSPLIT,itoa(ival)); scm_getintpar(20,ival); sprintf(varvalue,"\"%d\"",ival); addrplcval(PAR_SAUTOSAVEI,varvalue); scm_getintpar(37,ival); sprintf(varvalue,"%d",ival); addrplcval(PAR_SAUTOCOMPL,varvalue); bae_getintpar(0,ival); switch (bae_planddbclass()) { case DDBCLSCM : ival= (bae_iniintval(PAR_DEFDYNBSCM,0)&0x0E)|(ival ? 1 : 0); break; case DDBCLSSYM : ival= (bae_iniintval(PAR_DEFDYNBSCM,0)&0x0D)|(ival ? 2 : 0); break; case DDBCLSMRK : ival= (bae_iniintval(PAR_DEFDYNBSCM,0)&0x07)|(ival ? 4 : 0); break; case DDBCLSLAB : ival= (bae_iniintval(PAR_DEFDYNBSCM,0)&0x0B)|(ival ? 8 : 0); break; default : ival=bae_iniintval(PAR_DEFDYNBSCM,0); } sprintf(varvalue,"%d",ival); addrplcval(PAR_DEFDYNBSCM,varvalue); varset(PAR_DEFDYNBSCM,ival); sprintf(varvalue,"\"%s\"",bae_fontname()); addrplcval(PAR_SFONTNAME,varvalue); } void rutctrlsettings() /* // Add autorouter control settings to replacement request list */ { string varvalue /* Variable value string */; int intpar /* Integer parameter value */; if (callertype==ULIPAR) intpar=ar_rutsetpar(17,(-1)); else ged_getintpar(66,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_CLEANROUT,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(18,(-1)); else ged_getintpar(67,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_CLEANOPT,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(0,(-1)); else ged_getintpar(49,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_OPTCOUNT,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(9,(-1)); else ged_getintpar(58,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_MAXROCON,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(10,(-1)); else ged_getintpar(59,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_MAXROLEVEL,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(11,(-1)); else ged_getintpar(60,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_MAXRORET,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(34,(-1)); else ged_getintpar(83,intpar); sprintf(varvalue,"%s",intpar ? "ON" : "OFF"); addrplcval(PAR_SMDVIAPASS,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(47,(-1)); else ged_getintpar(96,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_BGAFANOUT,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(51,(-1)); else ged_getintpar(100,intpar); sprintf(varvalue,"%s",intpar ? "ON" : "OFF"); addrplcval(PAR_MICVIAMODE,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(55,(-1)); else ged_getintpar(104,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_POWLVIAMODE,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(35,(-1)); else ged_getintpar(84,intpar); sprintf(varvalue,"%s",intpar ? "ON" : "OFF"); addrplcval(PAR_PGSWAPMODE,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(20,(-1)); else ged_getintpar(69,intpar); sprintf(varvalue,"%s",intpar ? "ON" : "OFF"); addrplcval(PAR_AUTOSAVE,varvalue); } void rutstratsettings() /* // Add autorouter control settings to replacement request list */ { string varvalue /* Variable value string */; int intpar /* Integer parameter value */; if (callertype==ULIPAR) intpar=ar_rutsetpar(3,(-1)); else ged_getintpar(52,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_VIADELAY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(4,(-1)); else ged_getintpar(53,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_CHANNELDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(5,(-1)); else ged_getintpar(54,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_CROSSDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(6,(-1)); else ged_getintpar(55,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_DIRCHGDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(7,(-1)); else ged_getintpar(56,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_PACKDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(8,(-1)); else ged_getintpar(57,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_STATDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(13,(-1)); else ged_getintpar(62,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_BUSSTRDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(1,(-1)); else ged_getintpar(50,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_OPTCHAR,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(14,(-1)); else ged_getintpar(63,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_RRAREA1DLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(15,(-1)); else ged_getintpar(64,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_RRAREA2DLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(16,(-1)); else ged_getintpar(65,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_SKIPPDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(32,(-1)); else ged_getintpar(81,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_OFFGRIDDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(38,(-1)); else ged_getintpar(87,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_PGRIDSHIFT,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(39,(-1)); else ged_getintpar(88,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_PGRIDDLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(40,(-1)); else ged_getintpar(89,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_NAREADLY,varvalue); if (callertype==ULIPAR) intpar=ar_rutsetpar(50,(-1)); else ged_getintpar(99,intpar); sprintf(varvalue,"%d",intpar); addrplcval(PAR_FULLVIAEVL,varvalue); } void copysetup() /* // Copy setup files from all users to current user */ { string udir /* User files directory */; string adir /* All user files directory */; // Get the configuration file directories bae_getstrpar(17,adir); bae_getstrpar(18,udir); if (adir==udir) errormsg(ERRSAMECONF,adir); // Copy ddb format setup files copysetddb(FONTLIBNAME,DDBCLFONT,adir,udir); copysetddb(SETUPFNAME,DDBCLBSETUP,adir,udir); copysetddb(SCMLIBNAME,DDBCLSCOL,adir,udir); copysetddb(GEDLIBNAME,DDBCLLCOL,adir,udir); copysetddb(CAMLIBNAME,DDBCLGTAB,adir,udir); copysetddb(CEDLIBNAME,DDBCLICOL,adir,udir); copysetddb(ULDEFPRGFNAME,DDBCLUL,adir,udir); copysetddb(ULDEFPRGFNAME,DDBCLULLIB,adir,udir); copysetddb(RULEDBFNAME,DDBCLRULE,adir,udir); copysetddb(RUTDBFNAME,DDBCLASET,adir,udir); copysetddb(RUTDBFNAME,DDBCLABAT,adir,udir); copysetsql(DRCDBFNAME,adir,udir); copysetsql(EPSBLIBNAME,adir,udir); copysetsql(MACROFNAME,adir,udir); copysetsql(PARAMFNAME,adir,udir); copysetsql(ULHLPFNAME,adir,udir); copysetfile(INITFNAME,adir,udir); copysetfile(DCOLLIBNAME,adir,udir); copysetfile(PCOLLIBNAME,adir,udir); bae_prtdialog(REPCONFDONE); } void copysetddb(string filename,int ddbcl,string adir,string udir) /* // Copy setup file entries of given class // Parameter : // string filename : Setup file name // int ddbcl : DDB class // string udir : User files directory // string adir : All user files directory */ { string sfname /* Source file name */; string dfname /* Destination file name */; string curelem = "" /* Current element name */; STRINGS el /* Element list */; int en = 0 /* Element count */; int fh /* File handle */; int i /* Loop control variable */; // Build the file names sfname=adir+bae_swversion(4)+filename; dfname=udir+bae_swversion(4)+filename; // Check if source file exists fseterrmode(0); if ((fh=fopen(sfname,0|8))==(-1)) return; while (scanddbenames(sfname,ddbcl,curelem)==1) { el[en]=curelem; en++; } if (mergemode==(-1)) if ((fh=fopen(dfname,0|8))!=(-1)) for (i=0;i