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();
        }
Ejemplo n.º 2
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 ();
        }