Ejemplo n.º 1
0
        private void HandleAdaptorChanged(GroupAdaptor adaptor)
        {
            bool size_changed = box_counts.Length != adaptor.Count();

            int [] box_values = new int [adaptor.Count()];

            if (tick_layouts != null)
            {
                foreach (Pango.Layout l in tick_layouts)
                {
                    if (l != null)
                    {
                        l.Dispose();
                    }
                }
            }
            tick_layouts = new Pango.Layout [adaptor.Count()];

            int i = 0;

            while (i < adaptor.Count())
            {
                box_values [i] = adaptor.Value(i);
                string label = adaptor.TickLabel(i);
                if (label != null)
                {
                    tick_layouts [i] = CreatePangoLayout(label);
                }
                i++;
            }

            if (glass.Position >= adaptor.Count())
            {
                glass.SetPosition(adaptor.Count() - 1);
            }

            Counts = box_values;

            if (has_limits && size_changed)
            {
                min_limit.SetPosition(0, false);
                max_limit.SetPosition(adaptor.Count() - 1, false);
            }

            for (i = min_limit.Position; i < box_counts.Length; i++)
            {
                if (box_counts [i] > 0)
                {
                    break;
                }
            }

            SetPosition(i < box_counts.Length ? i : min_limit.Position);
            ScrollTo(min_limit.Position);

            this.QueueDraw();
        }
		private void HandleAdaptorChanged (GroupAdaptor adaptor)
		{
			bool size_changed = box_counts.Length != adaptor.Count ();
			int [] box_values = new int [adaptor.Count ()];
			
			if (tick_layouts != null) {
				foreach (Pango.Layout l in tick_layouts) {
					if (l != null)
						l.Dispose ();
				}
			}
			tick_layouts = new Pango.Layout [adaptor.Count ()];
			
			int i = 0;
			while (i < adaptor.Count ()) {
				box_values [i] = adaptor.Value (i);
				string label = adaptor.TickLabel (i);
				if (label != null) {
					tick_layouts [i] = CreatePangoLayout (label);
				}
				i++;
			}
			
			if (glass.Position >= adaptor.Count())
				glass.SetPosition (adaptor.Count() - 1);
			
			Counts = box_values;
			
			if (has_limits && size_changed) {
				min_limit.SetPosition (0, false);
				max_limit.SetPosition (adaptor.Count () - 1, false);
			}
			
			for (i = min_limit.Position; i < box_counts.Length; i++)
				if (box_counts [i] > 0)
						break;
			
			SetPosition (i < box_counts.Length ? i : min_limit.Position);
			ScrollTo (min_limit.Position);

			this.QueueDraw ();
		}
Ejemplo n.º 3
0
		void HandleAdaptorChanged (GroupAdaptor sender)
		{
			UpdateGlass ();
		}
Ejemplo n.º 4
0
		void HandleAdaptorGlassSet (GroupAdaptor sender, int index)
		{
			JumpTo (index);
		}