微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 gimpfu 中使用外部 GUI 撤消

如何解决在 gimpfu 中使用外部 GUI 撤消

我有一个图像注释工具,它采用当前在 GIMP 中处于活动状态的选择并将其保存到一个新层,作为实例分割的蒙版。我还有一个外部 GUI(在 PyGTK2 中),它有一个包含所有注释列表的 TreeView。我希望能够撤消所做的注释,GIMP 可以撤消掩码的创建,但它可以更新外部 GUI 的状态,并能够更新更改。我不完全确定撤消堆栈通常如何/与 GIMP 一起工作,因此将不胜感激。

enter image description here

    def save_mask_on_click(self,widget): 
        pdb.gimp_image_undo_group_start(self.img)

        # make sure a selection exists
        if pdb.gimp_selection_is_empty(self.img):
            pdb.gimp_message('No selection - Select an area first')
            return

        if self.label_combo.get_active_text() is None:
            pdb.gimp_message('No label selected - add and select a label first')
            return

        self.region_id = int(self.sb_adj.get_value())
        rgb = id2rgb(self.region_id)

        pdb.gimp_context_set_foreground(rgb)
        pdb.gimp_drawable_edit_fill(self.annot_layer,0)

        path = pdb.plug_in_sel2path(self.img,None)
        self.path_db[self.region_id] = pdb.gimp_vectors_export_to_string(self.img,path)

        pdb.gimp_selection_none(self.img)

        label = self.label_combo.get_active_text()
        self.region_db[self.region_id] = label

        text = '(' + str(self.region_id) + ') ' + str(label)
        self.mask_store.append([text])

        self.region_id += 1
        if self.region_id > self.max_id:
            self.max_id = self.region_id
            self.sb_adj.set_upper(self.max_id)
        
        self.sb_adj.set_value(self.max_id)

        pdb.gimp_image_undo_group_end(self.img)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。