Sahid Ferdjaoui Blog - Funraill Foundation Bienvenue, Log in - thème 2007 RC1

Powered by OpenSource Softwares

Outil de déboggage colaborative
reduire

Gestion des signaux Clipboard avec Gtk (cut, copy, paste)

le 5 juin 2007 par sahid

PyGTK et le couper copier coller …

Bon je me suis un peu pris la tête dans la documentation GTK avec les copier coller, et comme j’ai trouvé que trÚs peu d’info sur le net, je me permet d’exposer une petit classe qui traite de ce sujet.
Le fonctionnement est quasi similaire entre tout les bindings GTK il me semble (hormis la syntaxe propre à chaque langages), dans cette exemple j’utilise le bindings PyGTK

l’exemple

L’exemple est assé simple, il affiche une petite fenêtre avec un entry text, et vous pouvez ensuite couper/copier/coller un texte de l’extérieur ou bien le contraire.

pygtk - clipboard - cut, copy, paste

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #/ Ferdjaoui Sahid
  5. #/ Mail: sahid@funraill.org
  6. #/ WWW: http://sahid.funraill.org
  7. #/
  8. # Exemple de gestion des signaux Clipboard
  9. # sur un gtk.Entry
  10.  
  11.  
  12. # Module GTK
  13. import gtk
  14.  
  15. # Interface graphique
  16. class Wnd (object):
  17.     def __init__ (self):
  18.         “”” Construction de la fenetre ““”
  19.         # VBox
  20.         self.vbox = gtk.VBox ();
  21.         # Wnd
  22.         self.wnd = gtk.Window ();
  23.         self.wnd.set_title (“Exemple”);
  24.         self.wnd.set_size_request (175, 75);
  25.         self.wnd.connect (“destroy”, gtk.main_quit);
  26.         self.wnd.add (self.vbox);
  27.        
  28.         # Menu
  29.         self.menu (self.wnd);
  30.         # Entry
  31.         self.entry ();       
  32.  
  33.         self.wnd.show_all ();
  34.  
  35.     def menu (self, wnd):
  36.         “”” Generation du menu ““”
  37.         menu_items = (
  38.             (“/_Fichier”, None, None, 0, “<Branch>”),
  39.             (“/Fichier/_Quitter”, “<control>Q”, gtk.main_quit, 0, None),
  40.             (“/_Edition”, None, None, 0, “<Branch>”),
  41.             (“/Edition/_Couper”, “<control>X”, self.on_couper, 0, None),
  42.             (“/Edition/_Copier”, “<control>C”, self.on_copier, 0, None),
  43.             (“/Edition/_Coller”, “<control>V”, self.on_coller, 0, None),
  44.             );
  45.  
  46.         item_factory = gtk.ItemFactory (gtk.MenuBar, “<main>”, None);
  47.         item_factory.create_items (menu_items);
  48.         self.vbox.pack_start (item_factory.get_widget (“<main>”), False, True, 0);
  49.        
  50.     def entry (self):
  51.         “”” Ajout d’un gtk.Entry ““”
  52.         entry = gtk.Entry ();
  53.         self.vbox.pack_start (entry, True, True, 0);
  54.  
  55.     def on_couper (self, action, widget):
  56.         “”” Gestion du signal cut ““”
  57.         w = self.wnd.get_focus ();
  58.         if (isinstance (w, gtk.Entry)):
  59.             w.emit (“cut-clipboard”);
  60.  
  61.     def on_copier (self, action, widget):
  62.         “”” Gestion du signal copy ““”
  63.         w = self.wnd.get_focus ();
  64.         if (isinstance (w, gtk.Entry)):
  65.             w.emit (“copy-clipboard”);
  66.  
  67.     def on_coller (self, action, widget):
  68.         “”” Gestion du signal paste ““”
  69.         w = self.wnd.get_focus ();
  70.         if (isinstance (w, gtk.Entry)):
  71.             w.emit (“paste-clipboard”);
  72.  
  73.  
  74. if __name__ == “__main__”:
  75.     Wnd ();
  76.     gtk.main ()

Tu peux laisser un commentaire pour Gestion des signaux Clipboard avec Gtk (cut, copy, paste)