Pic-viewer

Contenu du snippet

Pic-viewer est un chargeur d'image entierement en picwin.
L'image une fois ouverte sera redimensionné dans un cadre. Vous pouvez regarder l'image dans sans taille rélle en double-cliquant sur celle-ci dans la pré-visualisation.
Pour l'ouvrir: /pic

ps: utilisation du code de $fileinfo par FiberOptics. N'ayant pas pu me decider entres les flags -d et -o j'ai opter pour le -d. Un @window s'ouvre donc dans la barre de tâche.

Source / Exemple :


alias pic {
  window -c @pic
  window -Bdk0pCk0zh +d @pic 0 0 400 400
  drawrect -r @pic $rgb(100,100,100) 1 0 0 400 400
  drawrect -fr @pic $rgb(117,134,172) 1 1 1 398 398
  drawline -r @pic $rgb(100,100,100) 1 0 15 400 15
  drawtext -r @pic $rgb(255,255,255) Verdana 10 5 2 Pic viewer
  drawtext -r @pic $rgb(255,255,255) Verdana 10 390 2 X
  drawline -r @pic $rgb(100,100,100) 1 10 30 63 30
  drawline -r @pic $rgb(100,100,100) 1 10 30 10 52 70 52 70 35 62 30
  drawtext -r @pic $rgb(255,255,255)  Verdana 10 25 35 Open
  drawrect -r @pic $rgb(255,255,255) 1 110 30 250 340
}
menu @pic {
  sclick:{
    if $inrect($mouse.x,$mouse.y,10,30,62,23) { 
      set %view.directory $sfile(c:\,Choose an image,ok)
      if (.jpg isin %view.directory || .bmp isin %view.directory || .png isin %view.directory) { set %format.good yes }
      else { set %format.good no }
      if %view.directory && %format.good == yes {
        drawrect -fr @pic $rgb(117,134,172) 1 2 380 395 15
        drawpic -sm @pic 115 35 240 330 $shortfn(%view.directory)
        drawtext -r @pic $rgb(255,255,255) Verdana 10 5 380 $shortfn(%view.directory)
      }
    }
    if $inrect($mouse.x,$mouse.y,389,5,391,5) { window -c @pic }
  }
  dclick:{
    if $inrect($mouse.x,$mouse.y,110,30,250,340) {
      window -Bdk0pCk0zh +d @view 0 0 $gettok($fileinfo(%view.directory,Dimensions),-3,32) $gettok($fileinfo(%view.directory,Dimensions),-1,32)
      drawpic @view 0 0 $shortfn(%view.directory)
    }
  }
}
menu @view {
  Close:/window -c @view
}
alias fileinfo {
  if !$isid { echo -ac info * $!fileinfo: This function can only be used as an identifier. | return }
  var %file = $shortfn($1)
  if !$isfile(%file) { echo -ac info * $!fileinfo: Incorrect filepath specified. | return }
  var %categories = $&
    Name Size Type DateModified DateCreated DateAccessed Attributes Status Owner Author Title $&
    Subject Category Pages Comments Copyright Artist AlbumTitle Year TrackNumber Genre Duration $&
    BitRate Protected CameraModel DatePictureTaken Dimensions . . EpisodeName ProgramDescription . $&
    Audiosamplesize Audiosamplerate Channels Company Description FileVersion ProductName ProductVersion
  if $2 == $null {
    echo -ac info * $!fileinfo: Category missing.
    echo -a Categories: $remove(%categories,.)
    return
  }
  var %tmp = $ticks
  var %objShell = a $+ %tmp, %objFolder = b $+ %tmp, %objFile = c $+ %tmp
  var %separator = $iif($0 == 3,$3,$lf), %result
  .comopen %objShell shell.application
  if !$comerr {
    %tmp = $com(%objShell,namespace,1,bstr,$nofile(%file),dispatch* %objFolder)
    if $com(%objFolder) {
      %tmp = $com(%objFolder,parsename,1,bstr,$nopath(%file),dispatch* %objFile)
      if $com(%objFile) {
        tokenize 32 $remove($2,.)
        while $0 {
          if $findtok(%categories,$1,1,32) {
            %tmp = $com(%objFolder,getdetailsof,9,dispatch,%objFile,uint,$calc($ifmatch - 1))
            %tmp = $iif($com(%objFolder).result,$ifmatch,0)
            %result = %result $iif($prop == raw,%tmp,$1: %tmp) %separator
          }
          tokenize 32 $2-
        }
        .comclose %objFile
      }
      .comclose %objFolder
    }
    .comclose %objShell
  }
  return $left(%result,- $+ $len(%separator))
}
on *:load:{ echo -a Pic viewer loaded [ /pic ] | echo -a Thanks for FiberOptics for $fileinfo }

Conclusion :


Pas de bug décelés jusqu'à présent (merci aux beta-testeurs).
Critique bonne ou mauvaise, aidez moi à l'amélioré =p

A voir également

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.