source: llum/trunk/fuentes/llum/AnimatedButton.cs @ 376

Last change on this file since 376 was 376, checked in by hectorgh, 4 years ago

adding project files

File size: 1.9 KB
Line 
1
2using System;
3
4namespace llum
5{
6
7
8        public class AnimatedButton : Gtk.Button
9        {
10
11                public int height;
12                public int width;
13                private int inc_width;
14                private int dec_width;
15               
16                private int speed=1;
17                private Gtk.Image custom_image;
18                private Gtk.Label custom_label;
19                private Gtk.HBox custom_hbox;
20               
21               
22               
23                public AnimatedButton (string label,bool from_zero)
24                {
25                        custom_hbox=new Gtk.HBox();
26                        custom_label=new Gtk.Label(label);
27                       
28                        custom_label.LineWrap=true;
29                        custom_label.LineWrapMode=Pango.WrapMode.Word;
30                        custom_label.MaxWidthChars=30;
31                       
32                        custom_image=new Gtk.Image();
33                        custom_image.Pixbuf=Gdk.Pixbuf.LoadFromResource("llum.arrow.svg");
34                       
35                        custom_hbox.PackStart(custom_image,false,false,5);
36                        custom_hbox.PackStart(custom_label,false,false,5);
37                       
38                       
39                       
40                       
41                        custom_hbox.ShowAll();
42                        custom_image.Hide();
43                        custom_label.Hide();
44                               
45                        this.Add(custom_hbox);
46                       
47                       
48                       
49                       
50                       
51                        height=50;
52                        width=150;
53                        dec_width=width;
54                       
55                        this.Show();
56                       
57                        if(!from_zero)
58                                this.SetSizeRequest(width,height);
59                        else
60                        {
61                                appear();
62                        }
63                       
64                       
65                }
66               
67               
68               
69               
70                public void appear()
71                {
72                       
73                        inc_width=0;
74                        GLib.Timeout.Add(2,increassing_size);   
75                        this.SetSizeRequest(0,height);
76                        this.Visible=true;
77                       
78                }
79               
80                public void disappear()
81                {
82                        custom_image.Hide();
83                        custom_label.Hide();
84                        dec_width=width;
85                        GLib.Timeout.Add(2,decreassing_size);   
86                       
87                }
88               
89                private bool increassing_size()
90                {
91               
92                        if(inc_width>=width)
93                        {
94                               
95                                custom_image.Show();
96                                custom_label.Show();
97                                return false;   
98                        }
99                        else
100                        {
101                               
102                                inc_width+=speed;
103                                this.SetSizeRequest(inc_width,height);
104                                return true;
105                        }
106                }
107               
108                private bool decreassing_size()
109                {
110                       
111                        if(dec_width<=2)
112                        {
113                               
114                                this.Visible=false;
115                                return false;
116                        }
117                        else
118                        {
119                               
120                               
121                                dec_width-=speed;
122                                this.SetSizeRequest(dec_width,height);
123                                return true;
124                        }
125                }
126               
127               
128        }
129}
Note: See TracBrowser for help on using the repository browser.