def __on_size_allocated_cb(self): if not self.__cut_grips is None: return (a, b, img_w, img_h) = self.imgs['orig'][1].getbbox() orig_alloc = self.__original_img_widgets['viewport'].get_allocation() (orig_alloc_w, orig_alloc_h) = (orig_alloc.width, orig_alloc.height) factor_w = (float(orig_alloc_w) / img_w) factor_h = (float(orig_alloc_h) / img_h) factor = min(factor_w, factor_h) if factor > 1.0: factor = 1.0 target_size = (int(factor * img_w), int(factor * img_h)) copy = self.imgs['orig'][1].copy() self.imgs['resized'] = (factor, copy.resize(target_size, PIL.Image.BILINEAR)) self.__cut_grips = ImgGripHandler( [self.imgs['resized'], self.imgs['orig']], self.__original_img_widgets['scrolledwindow'], self.__original_img_widgets['eventbox'], self.__original_img_widgets['img']) self.__cut_grips.visible = False self.__cut_grips.connect("grip-moved", self.__on_grip_moved_cb) self.__redraw_result()