/* MSMODE (STD) -- Set Mouse Context Operation Mode */ /* MSMODE (STD) -- Maus Kontextmodus selektieren */ /* // Copyright (c) 2001-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 (091021) RELEASED FOR BAE V7.4. // rl (081014) RELEASED FOR BAE V7.2. // rl (080401) ENHANCEMENT: // Added center/pan window function. // rl (071029) RELEASED FOR BAE V7.0. // rl (060829) RELEASED FOR BAE V6.8. // rl (050906) RELEASED FOR BAE V6.6. // rl (040811) RELEASED FOR BAE V6.4. // rl (030904) RELEASED FOR BAE V6.2. // rl (021209) RELEASED FOR BAE V6.0. // rl (021026) ENHANCEMENT: // Added figure element type set selection. // rl (020618) RELEASED FOR BAE V5.4. // rl (010625) RELEASED FOR BAE V5.0. // rl (010330) ORIGINAL CODING: // // DESCRIPTION // // The msmode User Language program allows the selection // of the mouse context operation mode, i.e. the kind of // operation caused by a left mouse click on an object. */ // Includes #include "pop.ulh" // User Language popup utilities // Disable undo state request #pragma ULCALLERNOUNDO // Messages string UPRABORT = M_UPRABORT(); string UPRSMODL = M("Modus fuer linke Maustaste selektieren!", "Select operation mode for left mouse key!"); string UPRSMODR = M("Modus fuer rechte Maustaste selektieren!", "Select operation mode for right mouse key!"); string UPRMODL = M("Modus fuer linke Maustaste", "Left mouse key operation mode"); string UPRMODR = M("Modus fuer rechte Maustaste", "Right mouse key operation mode"); string UPRMODE1 = M("&Keine Operation" ,"&No Operation"); string UPRMODE2 = M("Kontext&funktionen","Context &Functions"); string UPRMODE3 = M("&Loeschen" ,"&Delete"); string UPRMODE4 = M("&Bewegen" ,"&Move"); string UPRMODE5 = M("&Selektieren" ,"&Select"); string UPRMODE6 = M("Selektieren (kreu&zend)","Select (Cr&ossing)"); string UPRMODE7 = M("&Drehung links" ,"Rotate &Left"); string UPRMODE8 = M("Drehung &rechts" ,"Rotate &Right"); string UPRMODE9 = M("Fenster &Mitte" ,"Center/&Pan Window"); string UPRMODE10 = M("%S&hift" ,"%S&hift"); string UPRMODE11 = M("S&trg" ,"&Ctrl"); string UPRMODE12 = M("Sh&ift-Strg" ,"Sh&ift-Ctrl"); string UPRMODE13 = M("&Alt-Links","&Alt-Left"); string UPRMODE14 = M("Alt-Re&chts","Al&t-Right"); string UPRMODE15 = M("%&Elementtypen" ,"%&Element Types"); string UPRMODES = M("Standard" ,"Standard"); string UPRELEMT = M("Pickelemente :" ,"Pick Elements :"); string UPRLNREF = M("Bauteile/Pins" ,"Parts/Pins"); string UPRLUREF = M("Vias/Pads" ,"Vias/Pads"); string UPRLPATH = M("Leiterbahnen" ,"Traces"); string UPRLPOLY = M("Flaechen/Linien" ,"Areas/Lines"); string UPRLTEXT = M("Texte" ,"Texts"); string UPRLDRL = M("Bohrungen" ,"Drills"); string UPRCNREF = M("Symbole/Pins" ,"Symbols/Pins"); string UPRCATXT = M("Namen/Attribute" ,"Names/Attributes"); string UPRCCON = M("Verbindungen" ,"Connections"); string UPRCPOLY = M("Flaechen/Linien" ,"Areas/Lines"); string UPRCTEXT = M("Texte" ,"Texts"); string UPRON = M("&Ein" ,"&On"); string UPROFF = M("&Aus" ,"&Off"); string UPRSAVEPAR = M("Defaults Speichern","Save defaults"); string ERRDBLMMODE = M("Mausmodusbox ist bereits aktiv!", "Mouse mode box already active!"); static string FMTELMINF = M("Datei %s, %s %s" ,"File %s, %s %s"); // INI file parameter name definitions #define PAR_MSMODE "MSMODE_STD" // Mouse mode context function #define PAR_MSMODES "MSMODES_STD" // Mouse mode shift context function #define PAR_MSMODEC "MSMODEC_STD" // Mouse mode ctrl context function #define PAR_MSMODESC "MSMODESC_STD" // Mouse mode shift ctrl context func. #define PAR_MSMODEAL "MSMODEAL_STD" // Mouse mode alt left context func. #define PAR_MSMODEAR "MSMODEAR_STD" // Mouse mode alt right context func. // Menu and key definitions #define INFOMENUNUM 51 // Info field menu number // Standard menu sel. enable codes #define MSELENALL 0x80000000 // Always enable selection code // Global User Language program variables #define GV_STDMODE "mm_stdidx" // Standard mode index #define GV_SHIFTMODE "mm_shiftidx" // Shift mode index #define GV_CTRLMODE "mm_ctrlidx" // Control mode index #define GV_SCTRLMODE "mm_sctrlidx" // Shift control mode index #define GV_ALTLMODE "mm_altlidx" // Alt left mode index #define GV_ALTRMODE "mm_altridx" // Alt right mode index #define GV_ELEMTYP "mm_etypidx%d" // Element type index list // Global definitions struct elemtdes { // Element type info descriptor string name /* Element type name */; int ftyp /* Element figure list type code */; }; struct elemtdes scmetl[] = { // Schematic cap. element type list { UPRCNREF, C_FIGNREF }, /* Named reference element type */ { UPRCATXT, C_FIGATEXT }, /* Symbol attribut element type */ { UPRCCON, C_FIGCON }, /* Traced element type */ { UPRCPOLY, C_FIGPOLY }, /* Polygon element type */ { UPRCTEXT, C_FIGTEXT } /* Text element type */ }; struct elemtdes layetl[] = { // Layout element type list { UPRLNREF, L_FIGNREF }, /* Named reference element type */ { UPRLUREF, L_FIGUREF }, /* Unnamed ref. element type */ { UPRLPATH, L_FIGPATH }, /* Traced element type */ { UPRLPOLY, L_FIGPOLY }, /* Polygon element type */ { UPRLTEXT, L_FIGTEXT }, /* Text element type */ { UPRLDRL, L_FIGDRILL } /* Drill element type */ }; struct elemtdes icdetl[] = { // IC design element type list { UPRLNREF, I_FIGNREF }, /* Named reference element type */ { UPRLUREF, I_FIGUREF }, /* Unnamed ref. element type */ { UPRLPATH, I_FIGPATH }, /* Trace element type */ { UPRLPOLY, I_FIGPOLY }, /* Polygon element type */ { UPRLTEXT, I_FIGTEXT } /* Text element type */ }; struct elemtdes elmtl[] /* Element type list */; int elmtn /* Element type count */; int msmmode /* Menu/mouse mode */; // Main program void main() { string msgbuf /* Message buffer */; string modestr /* Mode string */; int msmode /* Mouse context operation mode */; int msmodes /* Mouse context shift op. mode */; int msmodec /* Mouse context ctrl op. mode */; int msmodesc /* Mouse context shift ctrl op. mode */; int msmodeal /* Mouse context alt left op. mode */; int msmodear /* Mouse context alt right op. mode */; double pcol = 8.0 /* Parameter column */; double cy = DIAL_TOPMARG /* Current y value */; int boxidx /* Dialog box index */; int actcode /* Action code */; int reason /* Callback reason */; int intval /* Dialog box item integer value */; string name /* Dialog box item name */; string varname /* Variable name */; int smidx /* Standard mode dialog index */; int sfidx /* Shift mode dialog index */; int mcidx /* Ctrl mode dialog index */; int scidx /* Shift ctrl mode dialog index */; int alidx /* Alt left mode dialog index */; int aridx /* Alt right mode dialog index */; int elmidxl[] /* Element dialog index list */; int oldfigdis /* Old figure list disable bits */; int figdis = 0 /* Figure list disable bits */; int maskbit /* Mask bit */; int repflag /* Repeat flag */; int res /* Result */; int varidx /* INI variable index */; int i /* Loop control variable */; // Swallow right mouse button activation notification if (bae_peekiact() && bae_getactmenu()<0) askstr("",1024); // Get the old mouse mode if (varget(VAR_MSMODE,msmode)) msmode=MS_NONE; // Get the old mouse shift mode if (varget(VAR_MSMODES,msmodes)) msmodes=MS_NONE; // Get the old mouse ctrl mode if (varget(VAR_MSMODEC,msmodec)) msmodec=MS_NONE; // Get the old mouse shift ctrl mode if (varget(VAR_MSMODESC,msmodesc)) msmodesc=MS_NONE; // Get the old mouse alt left mode if (varget(VAR_MSMODEAL,msmodeal)) msmodeal=MS_NONE; // Get the old mouse alt right mode if (varget(VAR_MSMODEAR,msmodear)) msmodear=MS_NONE; bae_getintpar(3,msmmode); // Get the old figure list element type set if (varget(VAR_MSFIGDIS,oldfigdis)) oldfigdis=0; // Get the element type list switch (uliptype()) { case ULIPSCM : elmtl=scmetl; elmtn=arylength(elmtl); break; case ULIPGED : elmtl=layetl; elmtn=arylength(elmtl); break; case ULIPCED : elmtl=icdetl; elmtn=arylength(elmtl); break; // No element specific mouse mode operation in this env. default : elmtn=0; } // Check for dialog support if (bae_dialclr()) { // Set default selection bae_defmenusel(msmode); // Select the mouse mode bae_promptdialog((msmmode&2) ? UPRSMODR : UPRSMODL); switch (bae_askmenu(16,UPRMODE1,UPRMODE2,UPRMODE3,UPRMODE4, UPRMODE5,UPRMODE6,UPRMODE7,UPRMODE8,UPRMODE9,UPRMODE10, UPRMODE11,UPRMODE12,UPRMODE13,UPRMODE14,UPRMODE15,UPRABORT)) { case 0 : msmode=MS_NONE; break; case 1 : msmode=MS_CONT; break; case 2 : msmode=MS_DEL; break; case 3 : msmode=MS_MOVE; break; case 4 : msmode=MS_GSEL; break; case 5 : msmode=MS_GCSEL; break; case 6 : msmode=MS_LROT; break; case 7 : msmode=MS_RROT; break; case 8 : msmode=MS_PANW; break; // Shift mouse function case 9 : msmodes=getmsfunc(msmodes); break; // Ctrl mouse function case 10 : msmodec=getmsfunc(msmodec); break; // Shift ctrl mouse function case 11 : msmodesc=getmsfunc(msmodesc); break; // Alt left mouse function case 12 : msmodeal=getmsfunc(msmodeal); break; // Alt right mouse function case 13 : msmodear=getmsfunc(msmodear); break; case 14 : if (elmtn==0) // No element spec. mouse mode op. in this env. exit(0); for (i=0;i