在使用 GTK 应用程序的颜色选择器小部件时,我经常使用与默认设置不同的调色板,如下图所示。在程序运行时,我可以更改默认颜色并且它们保持不变,但是,当我关闭程序时,这些修改会消失。
我想知道如何对磁盘中的持久性进行这些修改。
从您选择的标签中,应用程序名称似乎是 Dia。在应用程序中,没有任何东西可以让您设置此选项。所以简短的回答是:不。
问题是 Dia 使用现在已弃用的GtkColorSelectionDialog
(支持GtkColorChooserDialog
)。在已弃用的版本中,有一个标志告诉小部件显示/隐藏调色板,但这几乎是您拥有的唯一控件(请参阅 参考资料gtk_color_selection_set_has_palette
)。
在新的小部件版本中(顺便说一下,看起来完全不同),您可以直接访问 a gtk_color_chooser_add_palette
:
void
gtk_color_chooser_add_palette (GtkColorChooser *chooser,
GtkOrientation orientation,
gint colors_per_line,
gint n_colors,
GdkRGBA *colors);
您可以看到就自定义调色板而言,您有更多选择。您甚至可以决定颜色。这意味着您可以将当前选择保存在调色板中。然后,在应用程序退出时,您可以将所有调色板的颜色保存在某种设置中,并在应用程序启动时重新加载它们。
最后一点,我查看了 Dia 源代码,发现他们似乎正在寻求迁移到新的小部件。这是摘录:
// ...
window = self->color_select =
/*gtk_color_chooser_dialog_new (self->edit_color == FOREGROUND ?
_("Select foreground color") : _("Select background color"),
GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));*/
gtk_color_selection_dialog_new (self->edit_color == FOREGROUND ?
_("Select foreground color") : _("Select background color"));
selection = gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (self->color_select));
self->color_select_active = 1;
//gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (window), TRUE);
gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (selection), TRUE);
// ...
从注释代码来看,他们似乎正试图采取行动......