public void setsession(UUID id) { session=id; Gtk.Application.Invoke(delegate{ this.store.Clear(); if(MainClass.client.Self.GroupChatSessions.ContainsKey(session)) MainClass.client.Self.GroupChatSessions[session].ForEach(delegate (ChatSessionMember member) { string extra= member.IsModerator==true?" (moderator)":""; Gtk.TreeIter iter = store.AppendValues("Waiting...",member); AsyncNameUpdate ud=new AsyncNameUpdate(member.AvatarKey,false); ud.addparameters(iter); ud.onNameCallBack += delegate(string namex,object[] values){Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; lock(store){store.SetValue(iterx,0,namex);}}; ud.go(); }); MainClass.client.Self.ChatSessionMemberAdded += new EventHandler<ChatSessionMemberAddedEventArgs>(Self_ChatSessionMemberAdded); MainClass.client.Self.ChatSessionMemberLeft += new EventHandler<ChatSessionMemberLeftEventArgs>(Self_ChatSessionMemberLeft); }); }
void Self_ChatSessionMemberAdded(object sender, ChatSessionMemberAddedEventArgs e) { if(session!=e.SessionID) return; Gtk.Application.Invoke(delegate { ChatSessionMember member=MainClass.client.Self.GroupChatSessions[session].Find ( delegate (ChatSessionMember member2) { return member2.AvatarKey==e.AgentID; } ); Gtk.TreeIter iter = store.AppendValues("Waiting...", member); AsyncNameUpdate ud=new AsyncNameUpdate(e.AgentID,false); ud.addparameters(iter); ud.onNameCallBack += delegate(string namex,object[] values) { Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; Gtk.Application.Invoke(delegate { lock(store) { if(store.IterIsValid(iterx)) store.SetValue(iterx,0,namex); }; }); }; ud.go(); }); }
void populate_list() { store.Clear(); MainClass.client.Friends.FriendList.ForEach(delegate(FriendInfo friend) { Gtk.TreeIter iter = store.AppendValues(friend.IsOnline ? online_img : offline_img, friend.Name, friend.CanSeeMeOnline ? this.img_see_my_status :img_blank, friend.CanSeeMeOnMap ? this.img_map_me : img_blank, friend.CanModifyMyObjects ? this.img_edit_mine : img_blank, friend.CanModifyTheirObjects ? this.img_edit_theirs : img_blank, friend.UUID.ToString(), friend.IsOnline); AsyncNameUpdate ud=new AsyncNameUpdate(friend.UUID,false); ud.addparameters(iter); ud.onNameCallBack += delegate(string namex,object[] values){Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; store.SetValue(iterx,1,namex);}; ud.go(); }); }
void Friends_FriendshipResponse(object sender, FriendshipResponseEventArgs e) { Gtk.Application.Invoke(delegate { lock(store) { if (e.Accepted == true) { Gtk.TreeIter iter = store.AppendValues(online_img, e.AgentName, e.AgentID.ToString(), true); AsyncNameUpdate ud = new AsyncNameUpdate(e.AgentID, false); ud.addparameters(iter); ud.onNameCallBack += delegate(string namex, object[] values) { Gtk.TreeIter iterx = (Gtk.TreeIter)values[0]; store.SetValue(iterx, 1, namex); }; ud.go(); } } }); }
bool updategroupmembers() { Logger.Log("Update group members",Helpers.LogLevel.Debug); List<UUID> names = new List<UUID>(); //??????????? // if (!MainClass.client.Groups.GroupMembersCaches.ContainsKey(request_members)) // return name_poll; // lock(MainClass.client.Groups.GroupMembersCaches) { foreach (KeyValuePair<UUID, GroupMember> member in group_members) { if (!rcvd_names.Contains(member.Key)) { rcvd_names.Add(member.Key); names.Add(member.Key); Gtk.TreeIter iter = store_members.AppendValues("Waiting...", member.Value.Title, member.Value.OnlineStatus, member.Value.ID); AsyncNameUpdate ud = new AsyncNameUpdate(member.Value.ID, false); ud.addparameters(iter); ud.onNameCallBack += delegate(string namex, object[] values) { if (nobody_cares) { return; } Gtk.TreeIter iterx = (Gtk.TreeIter)values[0]; store_members.SetValue(iterx, 0, namex); }; ud.go(); Gtk.TreeIter iter2 = store_membersandroles_members.AppendValues("Waiting...", member.Value.Contribution.ToString(), member.Value.Title, member.Value.ID); AsyncNameUpdate ud2 = new AsyncNameUpdate(member.Value.ID, false); ud2.addparameters(iter2); ud2.onNameCallBack += delegate(string namex, object[] values) { if (nobody_cares) { return; } Gtk.TreeIter iterx = (Gtk.TreeIter)values[0]; store_membersandroles_members.SetValue(iterx, 0, namex); }; ud2.go(); } } } MainClass.name_cache.reqnames(names); this.treeview_members.QueueDraw(); this.treeview_members1.QueueDraw(); return name_poll; }
void Parcels_ParcelObjectOwnersReply(object sender, ParcelObjectOwnersReplyEventArgs e) { Gtk.Application.Invoke(delegate{ for(int i = 0; i < e.PrimOwners.Count; i++) { Logger.Log(e.PrimOwners[i].ToString(),Helpers.LogLevel.Debug); Gtk.TreeIter iter2=parcel_prim_owners.AppendValues("Waiting...",e.PrimOwners[i].Count.ToString(),e.PrimOwners[i].OwnerID); AsyncNameUpdate ud=new AsyncNameUpdate(e.PrimOwners[i].OwnerID,false); ud.addparameters(iter2); ud.onNameCallBack += delegate(string namex,object[] values){ Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; parcel_prim_owners.SetValue(iterx,0,namex);}; ud.go(); this.button_return_selected.Sensitive=true; } }); }
protected virtual void OnTreeviewParcelsCursorChanged(object sender, System.EventArgs e) { Gtk.TreeModel mod; Gtk.TreeIter iter; if(this.treeview_parcels.Selection.GetSelected(out mod,out iter)) { int id=(int)mod.GetValue(iter,6); selectedparcel=id; //this.image_parcel.Pixbuf=new Gdk.Pixbuf(parcel.Bitmap); parcels_access.Clear(); parcels_ban.Clear(); Parcel parcel; if(MainClass.client.Network.CurrentSim.Parcels.TryGetValue(id, out parcel)) { Logger.Log(parcel.Flags.ToString(),Helpers.LogLevel.Debug); this.checkbox_nopayment.Active = (OpenMetaverse.ParcelFlags.DenyAnonymous == (parcel.Flags & OpenMetaverse.ParcelFlags.DenyAnonymous)); this.checkbutton_noageverify.Active = (OpenMetaverse.ParcelFlags.DenyAgeUnverified == (parcel.Flags & OpenMetaverse.ParcelFlags.DenyAgeUnverified)); this.entry_time.Text = parcel.PassHours.ToString(); this.entry_price.Text = parcel.PassPrice.ToString(); this.checkbutton_publicaccess.Active = !(OpenMetaverse.ParcelFlags.UseAccessList == (parcel.Flags & OpenMetaverse.ParcelFlags.UseAccessList)); //this.checkbutton_sellpasses; this.checkbutton_groupaccess.Active = (OpenMetaverse.ParcelFlags.UseAccessGroup == (parcel.Flags & OpenMetaverse.ParcelFlags.UseAccessGroup)); this.entry_maxprims.Text = parcel.MaxPrims.ToString(); this.entry_primsgroup.Text = parcel.GroupPrims.ToString(); this.entry_bonus.Text = parcel.ParcelPrimBonus.ToString(); this.entry_primsowner.Text = parcel.OwnerPrims.ToString(); this.entry_primsother.Text = parcel.OtherPrims.ToString(); this.entry_totalprims.Text = parcel.TotalPrims.ToString(); this.parcel_image = parcel.SnapshotID; if (parcel.SnapshotID != UUID.Zero) { if (getter != null) getter.abort(); Logger.Log("** FETCHING A NEW IMAGE **" + parcel.SnapshotID.ToString(),Helpers.LogLevel.Debug); TryGetImage i = new TryGetImage(parcelsnapshot.baseimage, parcel.SnapshotID, 256, 256, true); i.OnDecodeComplete += delegate { parcelsnapshot.setimage(); }; i.OnUpdate += delegate { Gtk.Application.Invoke(delegate { parcelmap.forceupdate(); }); }; i.go(); getter = i; } else { //this.image_parcelsnap.Clear(); this.parcelsnapshot.clear(); } AsyncNameUpdate ud; this.label_parcelowner.Text = "Waiting..."; if (parcel.IsGroupOwned == false) { AsyncNameUpdate an; an = new AsyncNameUpdate(parcel.OwnerID, false); an.onNameCallBack += delegate(string namex, object[] values) { this.label_parcelowner.Text = namex; }; an.go(); } else { this.label_parcelowner.Text = "(group)"; } this.label_parcelgroup.Text = "Waiting..."; ud = new AsyncNameUpdate(parcel.GroupID, true); ud.onGroupNameCallBack += delegate(string namex, object[] values) { this.label_parcelgroup.Text = namex; }; ud.go(); foreach (OpenMetaverse.ParcelManager.ParcelAccessEntry entry in parcel.AccessWhiteList) { if(entry.AgentID==UUID.Zero) continue; Logger.Log(entry.AgentID.ToString()+" Flags = "+entry.Flags.ToString(),Helpers.LogLevel.Debug); Gtk.TreeIter iter2=this.parcels_access.AppendValues("Waiting..."); ud=new AsyncNameUpdate(entry.AgentID,false); ud.addparameters(iter2); ud.onNameCallBack += delegate(string namex,object[] values){ Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; this.parcels_access.SetValue(iterx,0,namex);}; ud.go(); } foreach(OpenMetaverse.ParcelManager.ParcelAccessEntry entry in parcel.AccessBlackList) { if(entry.AgentID==UUID.Zero) continue; Logger.Log(entry.AgentID.ToString()+" Flags = "+entry.Flags.ToString(),Helpers.LogLevel.Debug); Gtk.TreeIter iter2=this.parcels_ban.AppendValues("Waiting..."); AsyncNameUpdate ud2=new AsyncNameUpdate(entry.AgentID,false); ud2.addparameters(iter2); ud2.onNameCallBack += delegate(string namex,object[] values){ Gtk.TreeIter iterx=(Gtk.TreeIter)values[0]; this.parcels_ban.SetValue(iterx,0,namex);}; ud2.go(); } } bool allowed=false; if(parcel.OwnerID==MainClass.client.Self.AgentID) allowed=true; if (parcel.OwnerID == MainClass.client.Self.ActiveGroup) { // need to be parcel owner, or the land needs to be deeded to group // TODO if deeded to group we should also check we have approprate powers // within that group. allowed=true; } this.button1.Sensitive=allowed; if ((parcel.Flags & ParcelFlags.ForSale) == ParcelFlags.ForSale) { if (parcel.AuthBuyerID != UUID.Zero) { this.label_forsale.Text="Single AV"; AsyncNameUpdate ud=new AsyncNameUpdate(parcel.AuthBuyerID,false); ud.onNameCallBack += delegate(string namex,object[] values){ this.lable_forsaleto.Text=namex;}; ud.go(); this.label_price1.Text=parcel.SalePrice.ToString(); } else { this.label_forsale.Text="Yes"; this.label_price1.Text=parcel.SalePrice.ToString(); this.lable_forsaleto.Text="Anyone"; } } else { this.label_forsale.Text="No"; this.label_price1.Text=""; this.lable_forsaleto.Text=""; } } else { //Logger.Log("No parcel in dictionary for id "+id.ToString()+"\n",Helpers.LogLevel.Debug); } }