Aliases pour fasciliter l'usage de mdx (framework)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 746 fois - Téléchargée 17 fois

Contenu du snippet

il s'agit de petites aliases mdx pour fasciliter son implentation dans certains dialogs

la premiere: mdx.set.linebar
elle requier comme controle hote une "list"

usage: mdx.set.linebar DIALOG_NAME id:min-max-default:mode
explication:
- DIALOG_NAME = nom du dialog ($dname)
- id = id du controle à cibler
- min = nombre minimum de l'amplitude numerique selectionable
- max = nombre maximum de cette amplitude
- default = nombre pré-selectioné lors de la creation de l'id
- mode = par defaut l'aliase créé une bare horizontale, il est possible de spécifier que l'on veut une bare verticale avec le mode "v" (ce paramètre est optionel)

exemple:
mdx.set.linebar $dname 1:0-100,2:20-30,45:7-12,8:0-100-50,40,1-5:v
transoformera les id: 1 2 45 8 40 et 1 le 1 seras vertical
pour recuperer les resultat: $gettok($did(id).seltext,1,32)

la seconde aliase: wbs.mdx.table
elle sers a créé une sorte de tableau en grille
syntaxe: wbs.mdx.table $dname ID section:taille
exemple: wbs.mdx.table $dname 5 nom:40 prenom:80 age:30
va créer un tableau a 3 colones de 40, 80 et 30 pixels de large dans la list portant l'id 5
lors de la recuperation via $did(id).seltext les colones sont séparée par des chr(9) (a vous d'utiliser $gettok pour filtrer)

l'aliase wdll retourne le chemin de la dll à son format court et relatif, l'aliase wbs.relat retourne le chemin relatif d'un fichier (depuis mirc)

mgettok permet les imbrication de $gettok (toujours utile lors de l'usage de mdx)

les fonctions utilisant mdx DOIVENT toutes etre précédées de 'mdxinit' a l'appel du dialog (une seule fois)

installation: le code requiers: mdx.dll , views.mdx et bars.mdx dans un dossier enfant de $mircdir

Source / Exemple :


alias mdx.set.linebar {
  ;syntaxe: $dname id:min-max,id:min-max-defaut (optionel) :mode (optionel)
  ;exemple:$dname 1:0-100,2:20-30,45:7-12,8:0-100-50,40,1-5:v
  ;modes disponibles: [v] : bare verticalle (par defaut horizontal)
  ;retours: 1 si $dname manque, 2 si dialog es introuvable, 0 en cas de réusite
  var %param = $2- , %i 1 , %n = $numtok(%param,44) , %dname = $1
  if (!%dname) return 1
  if (!$dialog(%dname).title) return 2
  while (%i <= %n) {
    var %curent = $gettok(%param,%i,44) , %id = $gettok(%curent,1,58) , %min = $mgettok(%curent,2,58,1,45) , %max = $mgettok(%curent,2,58,2,45) , %defaut = $mgettok(%curent,2,58,3,45)
    if (!%defaut) var %defaut = 0
    mdx SetControlMDX %dname %id TrackBar autoticks $iif($gettok(%curent,3,58) == v, vertical) > $wdll(bars.mdx)
    mdx SetBorderStyle %dname %id windowedge   
    did -i %dname %id 1 params %defaut %min %max * * * * 14
    did -i %dname %id 1 tickfreq 1
    inc %i
  }
  return 0
}
alias wbs.mdx.table {
  ;syntaxe: wbs.mdx.table $dname ID section:taille
  var %dname = $iif($1 == x,$dname,$1)
  if (!$isid) && ($dialog(%dname)) && ($3) {
    mdx SetControlMDX %dname $2 ListView report single grid > $wdll(views.mdx)
    var %i 1
    while ($gettok($3-,%i,32)) {
      var %tmp = $ifmatch , %size = %size $gettok(%tmp,2,58) , %text = %text $chr(9) $gettok(%tmp,1,58)
      inc %i
    }
    did -i %dname $2 1 headerdims %size
    did -i %dname $2 1 headertext $mid($strip($gettok(%text,1-,9)) $chr(9),2-)
  }
}
alias mdx {
  var %mdx = $wdll(mdx.dll)
  if (%mdx) dll $shortfn(%mdx) $1-
  else echo -s mdx.dll introuvable
}
alias mdxinit {
  if ($1) var %dname = $1-
  else var %dname = $dname
  if (!%dname) { echo -a erreur: Mdxinit: nom du dialog manquant !  | halt }
  else {
    mdx SetMircVersion $version
    mdx MarkDialog %dname 
    return OK
  }
}
alias wdll {
;pour interdir l'usage d'une dll la stipuler dans un fichier Exepts.ini (se touvant dans le dossier du script) dans la section [DLLS] nom_de_la_dll=1
  if ($1) {
    if ($readini($scriptdirExepts.ini,DLLS,$1) == 1) { return }
    else {
      if ($hget(wbs.dlls,$1)) { return $wbs.relat($shortfn($ifmatch)) }
      var %wdll = $wbsdir $+ dlls\ $+ $1
      if (!$exists(%wdll)) { 
        var %wdll = $findfile($mircdir,$ifmatch,1)
        if (%wdll) { hadd -m wbs.dlls $nopath(%wdll) %wdll }
      }
      if (%wdll) { return $wbs.relat($shortfn($ifmatch))  }
    }
  }
}
alias -l wbs.relat { 
  if ($gettok($$1,1- $+ $numtok($mircdir,92),92) $+ \ == $mircdir) {
    if ($gettok($$1,$calc($numtok($mircdir,92) +1),92)) {  return $gettok($$1,$calc($numtok($mircdir,92) +1) $+ -,92) }
  }
  else return $$1
}
alias mgettok {
  ;permet l'imbrication de plusieurs gettok: $gettok($1-,a,c,b,d) == $mgettok($1-,a,b,c,d)
  if ($0) && ($isid) {
    var %n = $calc(($0 -1) / 2)
    if ($chr(46) !isin %n) {
      var %i 1 , %tok = 3 , %id = 2
      while (%i <= %n) {
        var %tmp = $eval($+($,%tok),2)
        if (%tmp !isnum) var %tmp = $asc(%tmp)
        if (!%data) var %data = $gettok($1,$eval($+($,%id),2),%tmp)
        else var %data =  $gettok(%data,$eval($+($,%id),2),%tmp)
        inc %id 2
        inc %tok 2
        inc %i
      }
      return %data
    }
    else echo -s Error: mgettok syntaxe/parametres invalides
  }
}

Conclusion :


voila j'espere avoir été assé clair et que ces aliases vous seront utiles

A voir également

Ajouter un commentaire

Commentaires

uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Si, il faut quand même avouer que c'est du bon boulot (je ne connais pas tellement mdx mais ces aliases ont l'air pas mal).
Fuji49
Messages postés
2
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
28 juin 2008
-
Moi, ce qui m'a poussé à lire ce topic, c'est le mot "FASCILITER" ^^
uaip
Messages postés
1470
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011
-
Simple question: que fait le mot "framework" dans le topic ? (j'avoue que c'est ce mot qui m'a (par curiosité) poussé à lire ce topic).
Bestdoud
Messages postés
244
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
28 décembre 2008
-
je suis d'accord que dcx est plus puissante que mdx mais ce qui me gene dans dcx c'est que d'une version à l'autre les commandes changent et faut alors tout se retapper dans le script et des fois ce qu'on faisait avec une version précédente n'est plus possible avec la nouvelle (je parle pas de bug ici)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
Ah ok, pardon alors, mais je trouve ça quand même relativement simple, du moment que tu regardes l'aide et que tu appliques.Et il y a surement plus de paramètres parce qu'il y a plus de fonction aussi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.