44
44
# shadow_color=canvas.convert_color("black", 100),
45
45
# text=SAMPLE_TEXT, use_markup=True)
47
def act_select_change(self): pass
49
def get_selection_rect(self):
50
return self._selection_rect
52
def set_selection_rect(self, r):
53
self._selection_rect = r if r and r.props.width else None
54
self.act_select_change()
56
selection_rect = property(get_selection_rect, set_selection_rect)
47
58
def on_mouse_down(self, target, e):
48
59
x, y = self.convert_from_pixels(e.x, e.y)
49
if len(self.get_items_at(x, y, True)) == 1:
60
items = self.get_items_at(x, y, True)
61
if items and len(items) == 1:
50
62
self.add_selection(x=x, y=y)
52
64
def add_selection(self, **kwargs):
53
r = canvas.ResizableRect.create_on_canvas(self, True, **kwargs)
65
def on_finish(r): self.selection_rect = r
67
if self.selection_rect: self.selection_rect.remove()
68
r = canvas.ResizableRect.create_on_canvas(self, on_finish, **kwargs)
54
69
r.props.line_dash = goocanvas.LineDash([2.0, 2.0, 2.0, 2.0, 2.0])
55
70
r.props.fill_color_rgba = canvas.convert_color("gray", 80)
59
if self.selection_rect: self.selection_rect.remove()
60
self.selection_rect = r
62
74
def zoom(self, amount):
63
75
self.set_scale(amount)
76
88
self.selection_rect = None
77
89
self.update_base_image(pb)
91
def render_to_surface(self):
80
92
x, y, w, h = self.get_bounds()
81
93
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(w), int(h))
82
94
context = cairo.Context(surface)
87
99
self.render(context)
88
surface.write_to_png(fn)
103
pbl = gtk.gdk.PixbufLoader()
104
self.render_to_surface().write_to_png(pbl)
107
gtk.Clipboard().set_image(pbl.get_pixbuf())
110
self.render_to_surface().write_to_png(fn)
90
112
def set_base_image(self, image=None):
91
113
self.base_image = goocanvas.Image(x=0, y=0)
114
136
self.resize(500, 500)
115
137
self.connect("destroy", gtk.main_quit)
116
138
gtk.window_set_default_icon_name("applets-screenshooter")
118
ui = self.setup_menus()
119
self.add_accel_group(ui.get_accel_group())
121
menu = ui.get_widget("/menubarMain")
122
toolbar = ui.get_widget("/toolbarMain")
140
self.canvas = GrabberSnapCanvas(SAMPLE_SCREENSHOT)
141
scroll = gtk.ScrolledWindow()
142
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
143
scroll.add(self.canvas)
145
self.ui = self.setup_menus()
146
self.add_accel_group(self.ui.get_accel_group())
148
menu = self.ui.get_widget("/menubarMain")
149
toolbar = self.ui.get_widget("/toolbarMain")
123
150
toolbar.props.icon_size = gtk.ICON_SIZE_MENU
140
167
metabar.pack_start(gtk.Label("Tags:"), False, False, 10)
141
168
metabar.pack_start(tagedit, True, True)
142
169
metabar.pack_start(btnclosemb, False, False, 5)
144
self.canvas = GrabberSnapCanvas(SAMPLE_SCREENSHOT)
145
scroll = gtk.ScrolledWindow()
146
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
147
scroll.add(self.canvas)
149
171
zoom_adjust = gtk.Adjustment(1, 0.1, 3, 0.1)
150
172
zoom_slider = gtk.HScale(zoom_adjust)
151
173
zoom_slider.connect("change-value", self.on_zoom_change)
206
act = gtk.ActionGroup("Actions")
228
self.act_main = gtk.ActionGroup("Actions")
229
self.act_main.add_actions([
208
230
("menuFile", None, "_File"),
209
231
("menuEdit", None, "_Edit"),
210
232
("menuImage", None, "_Image"),
215
237
("Save", gtk.STOCK_SAVE, None, None, "Save the current file", self.on_save),
216
238
("Quit", gtk.STOCK_QUIT, None, None, "Quit the program", self.on_quit),
217
239
("Copy", gtk.STOCK_COPY, None, None, "Copy the image to the clipboard", self.on_copy),
218
("Crop", None, "_Crop", "<ctrl>R", "Crop the image", self.on_crop),
219
240
("ZoomIn", gtk.STOCK_ZOOM_IN, None, None, "Enlarge the image view", self.on_zoom_in),
220
241
("ZoomOut", gtk.STOCK_ZOOM_OUT, None, None, "Shrink the image view", self.on_zoom_out),
221
242
("NormalSize", gtk.STOCK_ZOOM_100, None, None, "Show the image at its normal size", self.on_normal_size),
222
243
("About", gtk.STOCK_ABOUT, None, None, "View information about the program", self.on_about),
246
self.act_selected = gtk.ActionGroup("Selected")
247
self.act_selected.add_actions([
248
("Crop", None, "_Crop", "<ctrl>R", "Crop the image", self.on_crop),
225
251
ui = gtk.UIManager()
226
ui.insert_action_group(act, 0)
252
ui.insert_action_group(self.act_main, 0)
253
ui.insert_action_group(self.act_selected, 0)
227
254
ui.add_ui_from_string(ui_string)
229
256
set_icon_named("applets-screenshooter", [
233
260
set_icon_named(ICON_CROP,
234
261
ui.get_widget("/menubarMain/menuEdit/Crop"))
263
self.manage_enabled_widgets()
264
self.canvas.act_select_change = self.manage_enabled_widgets
268
def manage_enabled_widgets(self):
269
self.act_selected.set_sensitive(
270
self.canvas.selection_rect != None)
238
272
def on_quit(self, w):