[gtkmm/gtkmm-3-24] SizeGroup demo: Derive from Gtk::Window instead of Dialog
- From: Kjell Ahlstedt <kjellahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm/gtkmm-3-24] SizeGroup demo: Derive from Gtk::Window instead of Dialog
- Date: Sun, 27 Jun 2021 13:13:07 +0000 (UTC)
commit d5344e2364dae52a82595c5d1b7802c276cdcce8
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date: Sun Jun 27 15:10:59 2021 +0200
SizeGroup demo: Derive from Gtk::Window instead of Dialog
and set active items in the combo boxes, so something is shown.
demos/gtk-demo/example_sizegroup.cc | 90 ++++++++++++++++---------------------
1 file changed, 39 insertions(+), 51 deletions(-)
---
diff --git a/demos/gtk-demo/example_sizegroup.cc b/demos/gtk-demo/example_sizegroup.cc
index 065313c7..f11c5f40 100644
--- a/demos/gtk-demo/example_sizegroup.cc
+++ b/demos/gtk-demo/example_sizegroup.cc
@@ -1,13 +1,13 @@
/* Size Groups
*
- * GtkSizeGroup provides a mechanism for grouping a number of
+ * Gtk::SizeGroup provides a mechanism for grouping a number of
* widgets together so they all request the same amount of space.
* This is typically useful when you want a column of widgets to
- * have the same size, but you can't use a GtkGrid widget.
+ * have the same size, but you can't use a Gtk::Grid widget.
*
* Note that size groups only affect the amount of space requested,
* not the size that the widgets finally receive. If you want the
- * widgets in a GtkSizeGroup to actually be the same size, you need
+ * widgets in a Gtk::SizeGroup to actually be the same size, you need
* to pack them in such a way that they get the size they request
* and not more. For example, if you are packing your widgets
* into a table, you would not include the Gtk::FILL flag.
@@ -16,7 +16,7 @@
#include <gtkmm.h>
#include <list>
-class Example_SizeGroup : public Gtk::Dialog
+class Example_SizeGroup : public Gtk::Window
{
public:
Example_SizeGroup();
@@ -24,21 +24,21 @@ public:
protected:
//Signal handlers:
- virtual void on_checkbutton_toggled();
+ void on_checkbutton_toggled();
+ void on_close();
- typedef std::list<Glib::ustring> type_listStrings;
- virtual void add_row(Gtk::Grid& grid, int row, const Glib::RefPtr<Gtk::SizeGroup>& size_group, const
Glib::ustring& label_text, const std::list<Glib::ustring>& options);
- virtual Gtk::ComboBoxText* create_combobox(const std::list<Glib::ustring>& strings);
-
- void on_response(int response_id) override;
+ using type_listStrings = std::list<Glib::ustring>;
+ void add_row(Gtk::Grid& grid, int row, const Glib::RefPtr<Gtk::SizeGroup>& size_group,
+ const Glib::ustring& label_text, const std::list<Glib::ustring>& options);
+ Gtk::ComboBoxText* create_combobox(const std::list<Glib::ustring>& strings);
//Member widgets:
Gtk::Frame m_Frame_Color, m_Frame_Line;
Gtk::Box m_VBox;
- Gtk::Box m_HBox;
Glib::RefPtr<Gtk::SizeGroup> m_refSizeGroup;
Gtk::Grid m_Grid_Color, m_Grid_Line;
Gtk::CheckButton m_CheckButton;
+ Gtk::Button m_CloseButton;
};
//Called by DemoWindow;
@@ -48,23 +48,21 @@ Gtk::Window* do_sizegroup()
}
Example_SizeGroup::Example_SizeGroup()
-: Gtk::Dialog("Gtk::SizeGroup"),
- m_Frame_Color("Color Options"),
+: m_Frame_Color("Color Options"),
m_Frame_Line("Line Options"),
m_VBox(Gtk::ORIENTATION_VERTICAL, 5),
- m_HBox(Gtk::ORIENTATION_HORIZONTAL, 5),
- m_CheckButton("_Enable grouping", true)
+ m_CheckButton("_Enable grouping", true),
+ m_CloseButton("_Close", true)
{
+ set_title("Gtk::SizeGroup");
set_resizable(false);
- add_button("_Close", Gtk::RESPONSE_CLOSE);
- get_content_area()->pack_start(m_VBox);
+ add(m_VBox);
m_VBox.set_border_width(5);
m_refSizeGroup = Gtk::SizeGroup::create(Gtk::SIZE_GROUP_HORIZONTAL),
- /* Create one frame holding color options
- */
+ // Create one frame holding color options
m_VBox.pack_start(m_Frame_Color);
m_Grid_Color.set_border_width(5);
@@ -72,16 +70,11 @@ Example_SizeGroup::Example_SizeGroup()
m_Grid_Color.set_column_spacing(10);
m_Frame_Color.add(m_Grid_Color);
- type_listStrings color_options;
- color_options.push_back("Red");
- color_options.push_back("Green");
- color_options.push_back("Blue");
-
+ const type_listStrings color_options{"Red", "Green", "Blue"};
add_row(m_Grid_Color, 0, m_refSizeGroup, "_Foreground", color_options);
add_row(m_Grid_Color, 1, m_refSizeGroup, "_Background", color_options);
- /* And another frame holding line style options
- */
+ // and another frame holding line style options
m_VBox.pack_start(m_Frame_Line, Gtk::PACK_SHRINK);
m_Grid_Line.set_border_width(5);
@@ -89,26 +82,22 @@ Example_SizeGroup::Example_SizeGroup()
m_Grid_Line.set_column_spacing(10);
m_Frame_Line.add(m_Grid_Line);
-
- type_listStrings dash_options;
- dash_options.push_back("Solid");
- dash_options.push_back("Dashed");
- dash_options.push_back("Dotted");
-
+ const type_listStrings dash_options{"Solid", "Dashed", "Dotted"};
add_row(m_Grid_Line, 0, m_refSizeGroup, "_Dashing", dash_options);
- type_listStrings end_options;
- end_options.push_back("Square");
- end_options.push_back("Round");
- end_options.push_back("Arrow");
-
+ const type_listStrings end_options{"Square", "Round", "Double Arrow"};
add_row(m_Grid_Line, 1, m_refSizeGroup, "_Line ends", end_options);
- /* And a check button to turn grouping on and off */
+ // and a check button to turn grouping on and off
m_VBox.pack_start(m_CheckButton, Gtk::PACK_SHRINK);
m_CheckButton.set_active();
m_CheckButton.signal_toggled().connect(sigc::mem_fun(*this, &Example_SizeGroup::on_checkbutton_toggled));
+ // and finally a close button
+ m_VBox.pack_start(m_CloseButton, Gtk::PACK_SHRINK);
+ m_CloseButton.set_halign(Gtk::ALIGN_END);
+ m_CloseButton.signal_clicked().connect(sigc::mem_fun(*this, &Example_SizeGroup::on_close));
+
show_all();
}
@@ -118,11 +107,10 @@ Example_SizeGroup::~Example_SizeGroup()
void Example_SizeGroup::on_checkbutton_toggled()
{
+ // Gtk::SIZE_GROUP_NONE is not generally useful, but is useful
+ // here to show the effect of Gtk::SIZE_GROUP_HORIZONTAL by contrast.
Gtk::SizeGroupMode new_mode = Gtk::SIZE_GROUP_HORIZONTAL;
-
- if(m_CheckButton.get_active())
- new_mode = Gtk::SIZE_GROUP_HORIZONTAL;
- else
+ if (!m_CheckButton.get_active())
new_mode = Gtk::SIZE_GROUP_NONE;
m_refSizeGroup->set_mode(new_mode);
@@ -133,34 +121,34 @@ void Example_SizeGroup::add_row(Gtk::Grid& grid, int row,
const Glib::ustring& label_text,
const std::list<Glib::ustring>& options)
{
- Gtk::Label* pLabel = Gtk::make_managed<Gtk::Label>(label_text, Gtk::ALIGN_START, Gtk::ALIGN_END, true);
+ auto pLabel = Gtk::make_managed<Gtk::Label>(label_text, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE, true);
- grid.attach(*pLabel, 0, row, 1, 1);
pLabel->set_hexpand();
+ grid.attach(*pLabel, 0, row, 1, 1);
- Gtk::ComboBoxText* pComboBoxText = create_combobox(options);
+ auto pComboBoxText = create_combobox(options);
pLabel->set_mnemonic_widget(*pComboBoxText);
+ pComboBoxText->set_halign(Gtk::ALIGN_END);
+ pComboBoxText->set_valign(Gtk::ALIGN_BASELINE);
size_group->add_widget(*pComboBoxText);
-
grid.attach(*pComboBoxText, 1, row, 1, 1);
}
-/* Convenience function to create an option menu holding a number of strings
- */
+// Convenience function to create an option menu holding a number of strings
Gtk::ComboBoxText* Example_SizeGroup::create_combobox(const std::list<Glib::ustring>& strings)
{
- Gtk::ComboBoxText* pCombo = Gtk::make_managed<Gtk::ComboBoxText>();
+ auto pCombo = Gtk::make_managed<Gtk::ComboBoxText>();
for(const auto& str : strings)
{
pCombo->append(str);
}
+ pCombo->set_active(0);
return pCombo;
}
-void Example_SizeGroup::on_response(int)
+void Example_SizeGroup::on_close()
{
hide();
}
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]