a(Tools)Bar

 

ulis, 2006-11-29. Un package pour faire une barre d'outils.


Pourquoi

Parce que c'est facile et utile.


Comment

Bin avec un widget frame et des boutons !

Heu... Les séparateurs c'est des widgets label.


Description

  # ====================================
  #  usage :
  #
  # toolsbar .tb
  # foreach img {new open save} \
  # { .tb add -image $img -command p$img }
  # .tb add -separ 1
  # ====================================
  # opérations du package pour les options de la barre :
  #
  # toolsbar ?create? path ?-default value?...
  #   crée une barre et la configure
  # toolsbar get -default
  #   retourne la valeur par défaut
  # toolsbar set ?-default value?...
  #   modifie les valeurs par défaut
  # ====================================
  # opérations du package pour les options des boutons :
  #
  # toolsbar itemget -default
  #   retourne la valeur par défaut
  # toolsbar itemset ?-default value?...
  #   modifie les valeurs par défaut
  # ====================================
  # opérations pour une barre :
  #
  # path add ?-itemoption value?...
  #   crée un bouton ou un séparateur et le configure
  # path cget -option
  #   retourne la valeur de l'option
  # path config ?-default value?...
  #   modifie les valeurs des options
  # ====================================
  # opérations pour un bouton :
  #
  # path itemcget tagid -option
  #   retourne la valeur de l'option
  # path itemconfig tagid ?-default value?...
  #   modifie les valeurs des options
  # ====================================
  # options pour la barre :
  #
  #   les options modifiables du widget frame
  #   et :
  #   -delay1    délai avant d'afficher un ballon d'aide
  #   -delay2    délai avant de supprimer un ballon d'aide
  #   -padx      largeur de la bordure des boutons
  #   -pady      hauteur de la bordure des boutons
  # ====================================
  # options pour les boutons :
  #
  #   les options d'un widget button pour les boutons
  #   les options d'un widget label pour les séparateurs
  #   et :
  #   -after    indice de l'item d'avant
  #   -before   indice de l'item d'après
  #   -img      image du bouton (synonyme de -image)
  #   -separ    booléen indiquant si l'item est un séparateur
  #   -tags     liste des tags de l'item
  #   -tip      texte de la bulle d'aide
  # ====================================

Configuration

Installation

Utilisation

  package require ToolsBar

Script pkgIndex.tcl

  package ifneeded ToolsBar 1.0 [list source [file join $dir ToolsBar.tcl]]

Démo

    # ================
    #
    # démo
    #
    # ================

    package require ToolsBar
    package require http
    wm geometry . +200+200
    grid [toolsbar .t] -sticky new
    grid rowconfig . 1 -weight 1
    grid columnconf . 0 -weight 1
    foreach name {new import export copy paste undo redo hint} \
    {
      if {![file exists $name.gif]} \
      {
        if {![winfo exists .down]} \
        {
          toplevel .down -bg gold -padx 10 -pady 20
          wm geometry .down +100+100
          label .down.l -bg gold
          grid .down.l
        }
        .down.l config  -text "Downloading $name.gif"
        raise .down
        update
        set img [image create photo -width 32 -height 32]
        set fp [open $name.gif w]
        fconfigure $fp -translation binary
        set url http://wfr.tcl.tk/fichiers/images/ulis
        puts -nonewline $fp [http::data [http::geturl $url/$name.gif]]
        close $fp
      }
      set img [image create photo -width 32 -height 32 -file $name.gif]
      .t add -img $img -tip $name
    }
    if {[winfo exists .down]} { destroy .down }
    .t add -separ 1 -after 2 -padx 5
    .t add -separ 1 -after 5
    grid [frame .f -bg white -bd 1 -relief groove] -sticky nsew
    wm geometry . =400x200
    raise .

Voir Aussi


Discussion


Catégorie Paquet | Catégorie Interface utilisateur