protected virtual void OnTreeview1CursorChanged(object sender, System.EventArgs e)
        {
            Gtk.TreeModel mod;
            Gtk.TreeIter iter;

            if(this.treeview1.Selection.GetSelected(out mod,out iter))
            {
                UUID id=(UUID)mod.GetValue(iter,5);

                this.current_image=id;

                if(getter!=null)
                    getter.abort();

                TryGetImage i = new TryGetImage(this.image_parcel,id,175,175,false);
                getter=i;

            }
        }
        void Groups_GroupProfile(object sender, GroupProfileEventArgs e)
        {
            if(e.Group.ID!=this.groupkey)
                return;

            Gtk.Application.Invoke(delegate {

            this.entry_enrollmentfee.Text=e.Group.MembershipFee.ToString();

            if(e.Group.MembershipFee>0)
                this.checkbutton_mature.Active=true;

                if(this.already_member==true)
                {
                    foreach(AvatarGroup avgroup in MainClass.win.avatarGroups)
                    {
             					if(avgroup.GroupID==this.groupkey)
                        {
                            //this.checkbutton_group_notices.Active= avgroup.AcceptNotices;
                            //this.checkbutton_showinpofile.Active = avgroup.ListInProfile;
                            break;
                        }
                }
            }

            this.checkbutton_openenrolement.Active=e.Group.OpenEnrollment;
            this.checkbutton_showinsearch.Active=e.Group.ShowInList;
            this.checkbutton_mature.Active=e.Group.MaturePublish;
            this.textview_group_charter.Buffer.Text=e.Group.Charter;

            if((e.Group.Powers & GroupPowers.SendNotices)==GroupPowers.SendNotices)
                    this.button_send_notice.Sensitive=true;
                else
                    this.button_send_notice.Sensitive=false;

            TryGetImage img=new TryGetImage(this.image_group_emblem,e.Group.InsigniaID,128,128,false);
            this.label_name.Text=e.Group.Name;

            AsyncNameUpdate ud=new AsyncNameUpdate(e.Group.FounderID,false);
            ud.onNameCallBack += delegate(string namex,object[] values){this.label_foundedby.Text="Founded by "+namex;};
            ud.go();

            this.entry_enrollmentfee.Text=e.Group.MembershipFee.ToString();
            if(e.Group.MembershipFee>0)
                this.checkbutton_mature.Active=true;

            this.checkbutton_openenrolement.Active=e.Group.OpenEnrollment;
            this.checkbutton_showinsearch.Active=e.Group.ShowInList;
            this.checkbutton_mature.Active=e.Group.MaturePublish;
            this.textview_group_charter.Buffer.Text=e.Group.Charter;

            if(!this.already_member)
            {
                if(e.Group.OpenEnrollment==true)
                    this.button_join.Sensitive=true;
            }

                this.checkbutton_group_notices.Sensitive=this.already_member;
                this.checkbutton_showinpofile.Sensitive=this.already_member;

            });
        }
        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);

                }
        }
        void Avatars_AvatarPropertiesReply(object sender, AvatarPropertiesReplyEventArgs e)
        {
            if(e.AvatarID!=	resident)
                return;

            Gtk.Application.Invoke(delegate {

            this.label_born.Text=e.Properties.BornOn;

            partner_key=e.Properties.Partner;

            if(e.Properties.Online)
                this.label_status.Text="Online";
            else
                this.label_status.Text="Offline";

            if(e.Properties.Transacted)
                this.label_pay.Text="Pay info on file";
            else
                this.label_pay.Text="No";

            if(e.Properties.Identified)
                this.label_identified.Text="Yes";
            else
                this.label_identified.Text="No";

            this.textview2.Buffer.Text=e.Properties.AboutText;

            this.textview3.Buffer.Text=e.Properties.FirstLifeText;

            profile_pic=e.Properties.ProfileImage;
            firstlife_pic=e.Properties.FirstLifeImage;

            TryGetImage getter= new TryGetImage(this.image7,profile_pic,128,128,false);
            TryGetImage getter2= new TryGetImage(this.image3,firstlife_pic,128,128,false);

            if(MainClass.name_cache.av_names.ContainsKey(e.AvatarID))
            {
                this.label_name.Text=MainClass.name_cache.av_names[e.AvatarID];
            }
            else
            {
                MainClass.client.Avatars.RequestAvatarName(e.AvatarID);
                this.label_name.Text="Waiting....";
            }

            if(e.Properties.Partner!=UUID.Zero)
            {
                if(MainClass.name_cache.av_names.ContainsKey(partner_key))
                {
                    this.label_partner.Text=MainClass.name_cache.av_names[partner_key];
                }
                else
                {
                    MainClass.client.Avatars.RequestAvatarName(partner_key);
                    this.label_partner.Text="Waiting....";
                }
            }
            });
        }
Beispiel #5
0
        void update_map_for_region(ulong regionID)
        {
            Logger.Log("Update map for region() handle " + regionID.ToString(),Helpers.LogLevel.Debug);
            if (regionID != this_maps_region_handle)
                return;

            GridRegion region;
            if (MainClass.win.grid_regions.TryGetValue(regionID, out region))
            {
                current_region = region;

                this.objects_map_ID = region.MapImageID;
                Gdk.Pixbuf pb = MainClass.GetResource("trying.png");
                objects_map = new Gtk.Image(pb);
                int size = height < width ? height : width;
                this.scalemap.Pixbuf = this.objects_map.Pixbuf.ScaleSimple(size, size, InterpType.Bilinear);

                this.image.Pixbuf = pb;
                TryGetImage tgi = new TryGetImage(this.objects_map, region.MapImageID, 350, 350, true);
                tgi.OnDecodeComplete += delegate
                {
                    Gtk.Application.Invoke(delegate
                    {
                        this.scalemap = new Gtk.Image();
                        int size2 = height < width ? height : width;
                        if (size2 < 25)
                            size2 = 25; //meh!

                        this.scalemap.Pixbuf = this.objects_map.Pixbuf.ScaleSimple(size2, size, InterpType.Bilinear);
                        drawavs();
                    });
                };

                tgi.go();
            }
            else
            {
                Logger.Log("Failed to find region in region cache", Helpers.LogLevel.Warning);
            }
        }