在 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 (将#修改为@)