Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/02/2013, à 17:07

Totem

[Resolu] - Créer un menu contextuel avec Python, Glade et Gtk

Bonjour,

Je cherche à avoir un menu contextuel avec des actions que j'ai créé dans un fichier glade.
exemple des actions dans le fichier Glade:

<interface>
  <!-- interface-requires gtk+ 3.0 -->
  <object class="GtkActionGroup" id="compose actions">
    <child>
      <object class="GtkAction" id="undo">
        <property name="label" translatable="yes">A_nnuler</property>
        <property name="short_label" translatable="yes">A_nnuler</property>
        <property name="stock_id">gtk-undo</property>
      </object>
      <accelerator key="z" modifiers="GDK_CONTROL_MASK"/>
    </child>
    <child>
      <object class="GtkAction" id="redo">
        <property name="label" translatable="yes">_Rétablir</property>
        <property name="short_label" translatable="yes">_Rétablir</property>
        <property name="stock_id">gtk-redo</property>
      </object>
      <accelerator key="z" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
    </child>
    <child>
      <object class="GtkAction" id="cut">
        <property name="label" translatable="yes">Co_uper</property>
        <property name="short_label" translatable="yes">Co_uper</property>
        <property name="stock_id">gtk-cut</property>
      </object>
      <accelerator key="x" modifiers="GDK_CONTROL_MASK"/>
    </child>
    <child>
      <object class="GtkAction" id="copy">
        <property name="label" translatable="yes">_Copier</property>
        <property name="short_label" translatable="yes">_Copier</property>
        <property name="stock_id">gtk-copy</property>
      </object>
      <accelerator key="c" modifiers="GDK_CONTROL_MASK"/>
    </child>
    <child>
      <object class="GtkAction" id="paste">
        <property name="label" translatable="yes">C_oller</property>
        <property name="short_label" translatable="yes">C_oller</property>
        <property name="stock_id">gtk-paste</property>
      </object>
      <accelerator key="v" modifiers="GDK_CONTROL_MASK"/>
    </child>

Exemple de mon code Python:

    ....
    self.actions = self.builder.get_object("compose actions")

    self.actions.get_action("undo").activate.connect(on_action)
    self.actions.get_action("redo".activate.connect(on_action)
    ...
    def on_button_press_event(self, widget, event):
        if event.button != 3:
            return False

        self.menu = Gtk.Menu()
        undo = Gtk.ImageMenuItem()
        undo.set_related_action(self.actions.get_action("undo"))
        self.menu.append(undo)
        
        redo = Gtk.ImageMenuItem()
        redo.set_related_action(self.actions.get_action("redo"))
        self.menu.append(redo)

        self.menu.show_all();
        self.menu.popup(None, None, None, None, event.button, event.time)

Mon Menu contextuel ne fonctionne pas sad Quelqu'un pourrait me dire ce que j'ai mal fait et surtout comment faire?

Merci d'avance



PS : J'ai un message d'erreur dans le terminal. N'etant pas chez moi pour l'instant je l'ajouterai dès que je serais chez moi.

Dernière modification par Totem (Le 12/02/2013, à 15:48)


il n'existe que deux choses d'infinies, l'univers et la connerie humaine, mais pour l'univers je n'ai pas de certitude absolue

A. Einstein.

Hors ligne

#2 Le 12/02/2013, à 15:51

Totem

Re : [Resolu] - Créer un menu contextuel avec Python, Glade et Gtk

Il faut ajouter la 2eme ligne dans l'extrait ci-dessous dans le fichier GLADE (voir https://bugs.launchpad.net/ubuntu/+sour … ug/1013879)

  <object class="GtkActionGroup" id="compose actions">
    <property name="accel_group">accelgroupname</property>

Dernière modification par Totem (Le 12/02/2013, à 15:54)


il n'existe que deux choses d'infinies, l'univers et la connerie humaine, mais pour l'univers je n'ai pas de certitude absolue

A. Einstein.

Hors ligne