I'm trying to add a menu item to xnec2c by modifying its .glade file. The issue as described below generates the error .:9653:53 Object with ID saveas_csv not found. If I remove the <property name="image">saveas_csv</property> tag then it works, but the menu then item has no icon image. I would like to have the image icon be the same as the one for saveas_gnuplot as described below:
I've copy-pasted these as a starting point (links will take you to the .glade lines on github):
<object class="GtkImage" id="saveas_gnuplot">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-save-as</property>
</object>
<child>
<object class="GtkImageMenuItem" id="freqplots_save_as_gnuplot">
<property name="label" translatable="yes">Save as _gnuplot</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="use-underline">True</property>
<property name="image">saveas_gnuplot</property>
<property name="use-stock">False</property>
<signal name="activate" handler="on_freqplots_save_as_gnuplot_activate" swapped="no"/>
</object>
</child>
<child>
After copy-pasting just below each example above, I changed the ID's and changed the image property in the new GtkImageMenuItem to match as follows. Note that the only change were ids saveas_gnuplot to saveas_csv, and id+handlers *save_as_gnuplot* to *save_as_csv*:
<object class="GtkImage" id="saveas_csv">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="stock">gtk-save-as</property>
</object>
<child>
<object class="GtkImageMenuItem" id="freqplots_save_as_csv">
<property name="label" translatable="yes">Save as _CSV</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="use-underline">True</property>
<property name="image">saveas_csv</property>
<property name="use-stock">False</property>
<signal name="activate" handler="on_freqplots_save_as_csv_activate" swapped="no"/>
</object>
</child>
The saveas_gnuplot ID does show up in two other places in the .glade file, but they are just image references in other GTK windows so I don't think that is the issue:
- https://github.com/KJ7LNW/xnec2c/blob/master/resources/xnec2c.glade#L10431
- https://github.com/KJ7LNW/xnec2c/blob/master/resources/xnec2c.glade#L11577
Not sure if it is useful, but this is how the application loads the .glade file:
/* Create a builder from object ids */
*builder = gtk_builder_new();
ret = (int)gtk_builder_add_objects_from_resource(
*builder, "/xnec2c.glade", object_ids, &gerror );
if( !ret )
{
pr_err("failed to add objects to builder: %s\n", gerror->message);
...
}
and here is the debug output listing IDs that were loaded. As you can see, saveas_csv is not listed:
[16410 err:Gtk_Builder] interface.c:39: failed to add objects to builder: .:9668:53 Object with ID saveas_csv not found
[16410 err:Gtk_Builder] interface.c:41: Listing Object Ids:
[16410 err:Gtk_Builder] interface.c:45: freqplots_zo_adjustment
[16410 err:Gtk_Builder] interface.c:45: freqplots_window
[16410 err:Gtk_Builder] interface.c:45: freqplots_box
[16410 err:Gtk_Builder] interface.c:45: saveas_gnuplot
[16410 err:Gtk_Builder] interface.c:45: freqplots_nec2_edit
[16410 err:Gtk_Builder] interface.c:45: freqplots_fmhz_entry
[16410 err:Gtk_Builder] interface.c:45: freqplots_maxgain_entry
[16410 err:Gtk_Builder] interface.c:45: freqplots_vswr_entry
[16410 err:Gtk_Builder] interface.c:45: freqplots_zreal_entry
[16410 err:Gtk_Builder] interface.c:45: freqplots_zimag_entry
[16410 err:Gtk_Builder] interface.c:45: freqplots_zo_spinbutton
[16410 err:Gtk_Builder] interface.c:45: freqplots_drawingarea
[16410 err:Gtk_Builder] interface.c:45: freqplots_label
[16410 err:Gtk_Builder] interface.c:45: freqplots_net_gain
This is the diff against the .glade file if you would like to try it:
diff --git a/resources/xnec2c.glade b/resources/xnec2c.glade
index 363167e..fefc806 100644
--- a/resources/xnec2c.glade
+++ b/resources/xnec2c.glade
@@ -9539,6 +9539,11 @@ Save NEC2 Editor data first?
<property name="can-focus">False</property>
<property name="stock">gtk-save-as</property>
</object>
+ <object class="GtkImage" id="saveas_csv">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="stock">gtk-save-as</property>
+ </object>
<object class="GtkWindow" id="freqplots_window">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -9640,6 +9645,17 @@ Save NEC2 Editor data first?
</object>
</child>
<child>
+ <object class="GtkImageMenuItem" id="freqplots_save_as_csv">
+ <property name="label" translatable="yes">Save as _CSV</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <property name="image">saveas_csv</property>
+ <property name="use-stock">False</property>
+ <signal name="activate" handler="on_freqplots_save_as_csv_activate" swapped="no"/>
+ </object>
+ </child>
+ <child>
<object class="GtkMenuItem" id="freqplots_touchstone_menu">
<property name="visible">True</property>
<property name="can-focus">False</property>