Add an 'As Animation' toggle to the GIF export options. If checked, the GIF will be written as an animation. Only enable it on images with more than on layer though. Add the new GIFSaveVals as_animation member last so we don't break gimp_get_data() of old data. The fix moves the GIF options fetching to *before* gimp_export_image(). If as-animation, we simply pass GIMP_EXPORT_CAN_HANDLE_LAYERS to capabilities so the layers are kept.
303 lines
14 KiB
XML
303 lines
14 KiB
XML
<?xml version="1.0"?>
|
|
<interface>
|
|
<requires lib="gtk+" version="2.16"/>
|
|
<!-- interface-naming-policy project-wide -->
|
|
<object class="GtkVBox" id="main-vbox">
|
|
<property name="visible">True</property>
|
|
<property name="border_width">12</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">12</property>
|
|
<child>
|
|
<object class="GtkFrame" id="gif-options-frame">
|
|
<property name="visible">True</property>
|
|
<property name="label_xalign">0</property>
|
|
<property name="shadow_type">none</property>
|
|
<child>
|
|
<object class="GtkAlignment" id="gif-options-frame-alignment">
|
|
<property name="visible">True</property>
|
|
<property name="left_padding">12</property>
|
|
<child>
|
|
<object class="GtkVBox" id="gif-options-frame-vbox">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkCheckButton" id="interlace">
|
|
<property name="label" translatable="yes">I_nterlace</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkHBox" id="comment-hbox">
|
|
<property name="visible">True</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkVBox" id="vbox1">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<child>
|
|
<object class="GtkCheckButton" id="save-comment">
|
|
<property name="label" translatable="yes">_GIF comment:</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkScrolledWindow" id="comment-scrolled-window">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="hscrollbar_policy">automatic</property>
|
|
<property name="vscrollbar_policy">automatic</property>
|
|
<property name="shadow_type">in</property>
|
|
<child>
|
|
<object class="GtkTextView" id="comment">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="pixels_below_lines">1</property>
|
|
<property name="wrap_mode">word</property>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkCheckButton" id="as-animation">
|
|
<property name="label" translatable="yes">As _animation</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="position">2</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="label">
|
|
<object class="GtkLabel" id="frame">
|
|
<property name="visible">True</property>
|
|
<!-- Don't use markup, because it complicates the string to translate -->
|
|
<property name="label" translatable="yes">GIF Options</property>
|
|
<attributes>
|
|
<attribute name="weight" value="bold"/>
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkFrame" id="animation-frame">
|
|
<property name="visible">True</property>
|
|
<property name="label_xalign">0</property>
|
|
<property name="shadow_type">none</property>
|
|
<child>
|
|
<object class="GtkAlignment" id="animation-frame-alignment">
|
|
<property name="visible">True</property>
|
|
<property name="left_padding">12</property>
|
|
<child>
|
|
<object class="GtkVBox" id="animation-options-vbox">
|
|
<property name="visible">True</property>
|
|
<property name="orientation">vertical</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkCheckButton" id="loop-forever">
|
|
<property name="label" translatable="yes">_Loop forever</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkHBox" id="delay-hbox">
|
|
<property name="visible">True</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="delay-label-begin">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">_Delay between frames where unspecified:</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="mnemonic_widget">delay-spin</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkSpinButton" id="delay-spin">
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="invisible_char">●</property>
|
|
<property name="shadow_type">none</property>
|
|
<property name="adjustment">delay</property>
|
|
<property name="climb_rate">1</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkLabel" id="delay-label-end">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">milliseconds</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">2</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkHBox" id="frame-disposal-hbox">
|
|
<property name="visible">True</property>
|
|
<property name="spacing">6</property>
|
|
<child>
|
|
<object class="GtkLabel" id="disposal-label">
|
|
<property name="visible">True</property>
|
|
<property name="label" translatable="yes">_Frame disposal where unspecified:</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="mnemonic_widget">dispose-combo</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">0</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkComboBox" id="dispose-combo">
|
|
<property name="visible">True</property>
|
|
<property name="model">dispose-store</property>
|
|
<child>
|
|
<object class="GtkCellRendererText" id="text-renderer"/>
|
|
<attributes>
|
|
<attribute name="text">1</attribute>
|
|
</attributes>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">2</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkCheckButton" id="use-default-delay">
|
|
<property name="label" translatable="yes">_Use delay entered above for all frames</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">3</property>
|
|
</packing>
|
|
</child>
|
|
<child>
|
|
<object class="GtkCheckButton" id="use-default-dispose">
|
|
<property name="label" translatable="yes">U_se disposal entered above for all frames</property>
|
|
<property name="visible">True</property>
|
|
<property name="can_focus">True</property>
|
|
<property name="receives_default">False</property>
|
|
<property name="use_underline">True</property>
|
|
<property name="draw_indicator">True</property>
|
|
</object>
|
|
<packing>
|
|
<property name="position">4</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
</child>
|
|
<child type="label">
|
|
<object class="GtkLabel" id="animated-options-frame-label">
|
|
<property name="visible">True</property>
|
|
<property name="yalign">0.49000000953674316</property>
|
|
<property name="label" translatable="yes">Animated GIF Options</property>
|
|
<attributes>
|
|
<attribute name="weight" value="bold"/>
|
|
</attributes>
|
|
</object>
|
|
</child>
|
|
</object>
|
|
<packing>
|
|
<property name="expand">False</property>
|
|
<property name="fill">False</property>
|
|
<property name="position">1</property>
|
|
</packing>
|
|
</child>
|
|
</object>
|
|
<object class="GtkAdjustment" id="delay">
|
|
<property name="value">100</property>
|
|
<property name="upper">65000</property>
|
|
<property name="step_increment">10</property>
|
|
<property name="page_increment">100</property>
|
|
</object>
|
|
<object class="GtkListStore" id="dispose-store">
|
|
<columns>
|
|
<!-- column-name dispose-mode -->
|
|
<column type="gint"/>
|
|
<!-- column-name dispose-mode-label -->
|
|
<column type="gchararray"/>
|
|
</columns>
|
|
</object>
|
|
</interface>
|