Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALIASES POUR FASCILITER L'USAGE DE MDX (FRAMEWORK)


Information sur la source

Catégorie :Divers Classé sous : mdx, aliases, scrollbar Niveau : Débutant Date de création : 12/06/2008 Date de mise à jour : 12/06/2008 19:17:39 Vu : 1 092

Note :
Aucune note

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


Description

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

  • 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
  • }
  • }
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
 

Historique

12 juin 2008 19:17:39 :
petit oubli

Commentaires et avis

signaler à un administrateur
Commentaire de wims le 12/06/2008 19:52:07

Franchement je doute que ces alias soit utiles a quelqu'un et ce, pour plusieurs raisons:

-Il existe une autre dll, DCX, mise a jours régulièrement (contrairement a dcx), qui permet de faire entièrement ce que fait mdx, en mieux, avec des dizaine de fonctions en plus, et avec une aide relativement bien faites (mais surtout existante)
-Mdx n'est utilisé que par les personnes qui ont commencé avec mdx et qui n'ont pas envie de modifier tout leur code pour dcx (compréhensible)

Enfin malgré le commentaire négatif, au moins ça change et c'est relativement bien codé (codé a l'ancienne en tout cas, $ifmatch, mdr :')).

signaler à un administrateur
Commentaire de PaDa le 12/06/2008 20:46:24

Codé à l'ancienne codé à l'ancienne... c'est de la rétrocompatibilité pour pas un rond, on aurait tord de se priver, d'autant que j'ai jamais vu que ça allait être laché :p

Bon sinon un peu d'accord pour les commentaires.. Le ticket d'entrée dans DCX est trop important par certains aspects (la gestion de l'algo de resizing j'avais trouvé ça difficile quand j'avais fait quelques tests). C'est vraiment dommage, parce que les dialogs avec mIRC c'est certainement une des plus grosses puissances du langage de mon point de vue, y'a une API simpliste avec une syntaxe sympa (qui sépare extrêmement bien les différents aspects de la gestion de l'UI, entre la déclaration et les évènements, et mêmes les types d'évènements entre eux) ce que je n'ai jamais vu ailleurs (que ce soit les apis perl ruby c java etc pour gtk qt wxwidgets etc...).

Bon j'arrête de parler à + :D

signaler à un administrateur
Commentaire de hisoka2501 le 12/06/2008 21:27:01

ce que je reproche a dxc c'est qu'il est vraiment trop dur a metre en place coté code: des tas d'appels a la dll et je n'avais pas trouvé la doc tres claire a l'époque , de ce fait j'avais preferé mdx

pour le $ifmatch oui j'avoue:) $v1 est valable depuis 6.16 et beaucoup sont encore en 6.14 pour cause de vieux scripts :)

signaler à un administrateur
Commentaire de wims le 12/06/2008 21:57:46

Trop dur a mettre en place ?

Dcx : tu load la dll
mdx :tu load la dll

ah bah, nan, si ? nan, ah bah nan, pas de différence :|

signaler à un administrateur
Commentaire de hisoka2501 le 12/06/2008 22:10:13

je parle au niveau des syntaxes des commandes et du nombre d'argument requis

signaler à un administrateur
Commentaire de wims le 13/06/2008 11:47:48

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.

signaler à un administrateur
Commentaire de Bestdoud le 13/06/2008 14:52:56

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)

signaler à un administrateur
Commentaire de uaip le 16/06/2008 14:07:05

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).

signaler à un administrateur
Commentaire de Fuji49 le 28/06/2008 19:11:58

Moi, ce qui m'a poussé à lire ce topic, c'est le mot "FASCILITER" ^^

signaler à un administrateur
Commentaire de uaip le 28/06/2008 19:58:37

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).

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

La dll mdx [ par koko ] Quelqu'un pourrait m'expliquer comment l'utiliser car la je comprend rien... j'ai un fichier d'aide en francais mais quand je mets quelques choses ca trackbar avec mdx [ par Calak ] J'ai beau essayer, analyser l'exemple donné avec la dll, je n'arrive pas à faire une trackbar...Est ce quelqu'un pourait m'expliquer comment faire svp MDX.dll [ par jfk69 ] quelqu'un aurait il un tutorial bien fait pour utiliser mdx.dll ?et plus particulierement la fonction qui permet d'ajouter des icones (comme dans l'ex mdx.dll [ par MecModeKiller ] on *:dialog:dname:init:*:{ dll mdx.dll SetMircVersion $version dll mdx.dll MarkDialog $dname }Vous pouvez changer l'icone du dialogue, en rempl fichier .mdx (explication!!) [ par DarkFox ] The ShaDowtt d'abors merci de repondre si vous connaissez la réponse et salut (ken mm)il me semble que les fichier en .Mdx sont censé modifier l'appar avec/sans mdx ?? [ par DrAzZiK69 ] voyez vous jve améliorer mon media player et pi pr le boutton pausejve ke kan kkin clic dessus et bah il reste cliqué et kan il reclic ca fait resume, Besoin d'aide pour BARS.MDX c urgent ;) merci. [ par hackoustik ] jespere que sa va apparaitre sur le forum de script, car dur de trouver comment poster un message.bon alorsjai creer une liste dans le dialog et dans recherche commande pr mdx [ par hermes93 ] Voila je cherche une commande avec mdx.dllqui me permet de metre en couleur dans un dialog les "tab" (bouton edit text) je c modifier toutsa mais quan mdx toolbar [ par Fayen$ ] Yopkelkun pourrais plz me montrer un example de toolbar avec les dll suivant ktools.dll mdx.dll packe g rien piger a ce truc :/si possible comment con Connection mdx [ par Fayen$ ] lubon voila chuis oqp sur une toolbar, 'quelqu'un sait m'expliquer' comment on donne la commande connect,disconnet en cliquant sur le meme icone crée


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.