1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/usr/bin/python
# Copyright © 2009 Michal Hruby <michal.mhr@gmail.com>
# Copyright © 2009 Mark Lee <avant-wn@lazymalevolence.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
import gtk
import awn
import rsvg
class EffectedDA(gtk.DrawingArea):
def __init__(self):
gtk.DrawingArea.__init__(self)
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(65535, 0, 32000))
self.useSVG = True
self.effects = awn.Effects(self)
self.effects.props.effects = 0x44444
self.effects.props.no_clear = True
self.add_events(gtk.gdk.ALL_EVENTS_MASK)
self.connect("expose-event", self.expose)
self.svg = rsvg.Handle("../awn-manager/awn-manager.svg")
def toggle_svg_usage(self, widget, extra = None):
self.useSVG = not self.useSVG
self.queue_draw()
if self.useSVG:
widget.set_label("SVG")
else:
widget.set_label("PNG")
def expose(self, widget, event):
self.effects.set_icon_size(48, 48, False)
cr = self.effects.cairo_create()
if not self.useSVG:
pixbuf = self.svg.get_pixbuf()
pixbuf = pixbuf.scale_simple(48, 48, gtk.gdk.INTERP_BILINEAR)
cr = gtk.gdk.CairoContext(cr)
cr.set_source_pixbuf(pixbuf, 0, 0)
cr.paint()
else:
svg_dimensions = self.svg.get_dimension_data()
cr.scale(48 / float(svg_dimensions[0]),
48 / float(svg_dimensions[1]))
self.svg.render_cairo(cr)
self.effects.cairo_destroy()
return True
class Main:
def __init__(self):
# Create GUI objects
rgbaColormap = gtk.gdk.screen_get_default().get_rgba_colormap()
if rgbaColormap != None:
gtk.gdk.screen_get_default().set_default_colormap(rgbaColormap)
self.testedEffect = "hover"
self.window = gtk.Window()
self.window.connect("destroy", gtk.main_quit)
self.vbox = gtk.VBox()
self.effectsHBox = gtk.HBox()
self.align1 = gtk.Alignment()
self.eda = EffectedDA()
ICON_SIZE = 48
self.eda.set_size_request(ICON_SIZE*6/5, ICON_SIZE*2)
self.align1.add(self.eda)
self.align1.set(0.5, 0.5, 0.5, 0.75)
self.eda.connect("button-release-event", self.OnButton)
self.eda.connect("enter-notify-event", self.OnMouseOver)
self.eda.connect("leave-notify-event", self.OnMouseOut)
self.effectsHBox.add(self.align1)
self.bb = gtk.VButtonBox()
self.quitButton = gtk.Button(stock='gtk-quit')
self.quitButton.connect("clicked", self.OnQuit)
self.vbox.pack_start(self.effectsHBox)
self.svgButton = gtk.Button("SVG")
self.svgButton.connect("clicked", self.eda.toggle_svg_usage)
self.bb.add(self.svgButton)
self.bb.add(self.quitButton)
self.vbox.pack_start(self.bb)
self.window.add(self.vbox)
self.window.show_all()
def OnMouseOver(self, widget, *args, **kwargs):
self.eda.effects.start(self.testedEffect)
def OnMouseOut(self, widget, *args, **kwargs):
self.eda.effects.stop(self.testedEffect)
def OnButton(self, widget, event):
self.eda.effects.start_ex("attention", max_loops=1)
def OnQuit(self, widget):
gtk.main_quit()
start = Main()
gtk.main()
|