func (r *roster) createAccountPopup(jid string, account *account, bt *gdk.EventButton) { builder := builderForDefinition("AccountPopupMenu") obj, _ := builder.GetObject("accountMenu") mn := obj.(*gtk.Menu) builder.ConnectSignals(map[string]interface{}{ "on_connect": func() { account.session.WantToBeOnline = true account.Connect() }, "on_disconnect": func() { account.session.WantToBeOnline = false account.disconnect() }, "on_edit": account.edit, "on_dump_info": func() { r.debugPrintRosterFor(account.session.GetConfig().Account) }, }) connx, _ := builder.GetObject("connectMenuItem") connect := connx.(*gtk.MenuItem) dconnx, _ := builder.GetObject("disconnectMenuItem") disconnect := dconnx.(*gtk.MenuItem) connect.SetSensitive(account.session.IsDisconnected()) disconnect.SetSensitive(account.session.IsConnected()) mn.ShowAll() mn.PopupAtMouseCursor(nil, nil, int(bt.Button()), bt.Time()) }
func (r *roster) createAccountPeerPopup(jid string, account *account, bt *gdk.EventButton) { builder := builderForDefinition("ContactPopupMenu") mn := getObjIgnoringErrors(builder, "contactMenu").(*gtk.Menu) builder.ConnectSignals(map[string]interface{}{ "on_remove_contact": func() { account.session.RemoveContact(jid) r.ui.removePeer(account, jid) r.redraw() }, "on_allow_contact_to_see_status": func() { account.session.ApprovePresenceSubscription(jid, "" /* generate id */) }, "on_forbid_contact_to_see_status": func() { account.session.DenyPresenceSubscription(jid, "" /* generate id */) }, "on_ask_contact_to_see_status": func() { account.session.RequestPresenceSubscription(jid) }, "on_peer_fingerprints": func() { r.ui.showFingerprintsForPeer(jid, account) }, "on_dump_info": func() { r.debugPrintRosterFor(account.session.GetConfig().Account) }, "on_rename_signal": func() { r.renameContactPopup(account.session.GetConfig(), jid) }, }) mn.ShowAll() mn.PopupAtMouseCursor(nil, nil, int(bt.Button()), bt.Time()) }
func (r *roster) getAccountAndJidFromEvent(bt *gdk.EventButton) (jid string, account *account, rowType string, ok bool) { x := bt.X() y := bt.Y() path := new(gtk.TreePath) found := r.view.GetPathAtPos(int(x), int(y), path, nil, nil, nil) if !found { return "", nil, "", false } iter, err := r.model.GetIter(path) if err != nil { return "", nil, "", false } jid = getFromModelIter(r.model, iter, indexJid) accountID := getFromModelIter(r.model, iter, indexAccountID) rowType = getFromModelIter(r.model, iter, indexRowType) account, ok = r.getAccount(accountID) return jid, account, rowType, ok }
func buttonCallback(area *gtk.DrawingArea, event *gdk.Event, v DrawAreaClient) { ev := gdk.EventButton{event} pos := image.Point{int(ev.X()), int(ev.Y())} v.ButtonCallback(DrawArea{area, 0, 0, 0, 0}, ev.Type(), pos) }