Пример #1
0
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())
}
Пример #2
0
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())
}