2015-04-08 21:33 GMT+02:00 Glus Xof <[email protected]>:
> Hi guys,
>
> I write a simple code (see at the bottom) to ask you why the order
> sequence of values listed in the 'treeview' and in the "2nd Sequence" don't
> correspond with the "1st Sequence"...
>
> I mean, in the "1st Sequence" I get,
>
> .1 ==> Point -- One
> .2 ==> Point -- Two
> .3 ==> Point -- Three
> 01 ==> Zero -- One
> 02 ==> Zero -- Two
> 11 ==> One -- One
>
> Which is the desired sequence order... but in the "2nd..." (elaborated in
> a Gtk Application context...)
>
> 01 * > Zero -- One
> 02 * > Zero -- Two
> .1 * > Point -- One
> 11 * > One -- One
> .2 * > Point -- Two
> .3 * > Point -- Three
>
>
> What happens, here ??
>
Can't yet understand why the sign pointer (.) seems not to be significant
at Glib::ustring key comparisons when std::map values are extracted when
iterate...
How can manage it ?
> Glus
>
> ----
>
> #include <gtkmm.h>
> #include <iostream>
> #include <map>
>
> class MainWindow
> :
> public Gtk::Window
> {
> public:
>
> MainWindow();
> virtual ~MainWindow();
>
> private:
>
> void update_values();
> void fill_treeview();
>
> void on_button_quit_clicked();
>
> std::map<Glib::ustring, Glib::ustring> my_map2;
>
> // Gtkmm widgets...
> Gtk::ScrolledWindow scrwindow;
> Gtk::TreeView treeview;
>
> Gtk::Box vbox;
>
> Gtk::ButtonBox bbox;
> Gtk::Button button_quit;
>
> class ModelColumns
> :
> public Gtk::TreeModelColumnRecord
> {
> public:
>
> ModelColumns()
> {
> add (nid);
> add (code);
> add (vlue);
> }
>
> Gtk::TreeModelColumn<gint> nid;
> Gtk::TreeModelColumn<Glib::ustring> code;
> Gtk::TreeModelColumn<Glib::ustring> vlue;
> }
> model_columns;
>
> Glib::RefPtr<Gtk::ListStore> refListStore;
>
> Gtk::TreeRow row;
>
> };
>
> MainWindow::MainWindow()
> :
> vbox (Gtk::ORIENTATION_VERTICAL),
>
> button_quit ("Quit"),
>
> refListStore (Gtk::ListStore::create (model_columns))
> {
> set_title ("TreeView Test");
> set_border_width (10);
>
> treeview.set_enable_search (false);
> treeview.set_model (refListStore);
>
> treeview.append_column ("NÂș Id", model_columns.nid);
> treeview.append_column ("Code", model_columns.code);
> treeview.append_column ("Value", model_columns.vlue);
>
> if (Gtk::CellRenderer * c_nid = treeview.get_column_cell_renderer (0))
> c_nid->set_alignment (0.5, 0.0);
>
> if (Gtk::CellRenderer * c_code = treeview.get_column_cell_renderer (1))
> c_code->set_alignment (0.5, 0.0);
>
> scrwindow.set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_NEVER);
> scrwindow.add (treeview);
>
> bbox.set_margin_top (10);
> bbox.pack_start (button_quit, Gtk::PACK_SHRINK);
> bbox.set_layout (Gtk::BUTTONBOX_END);
>
> button_quit.signal_clicked().connect (
> sigc::mem_fun (*this, &MainWindow::on_button_quit_clicked));
>
> vbox.pack_start (scrwindow);
> vbox.pack_start (bbox, Gtk::PACK_SHRINK);
>
> add (vbox);
>
> fill_treeview();
>
> show_all_children();
> }
>
> void
> MainWindow::update_values()
> {
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> ("02", "Zero
> -- Two"));
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> (".2", "Point
> -- Two"));
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> ("11", "One --
> One"));
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> ("01", "Zero
> -- One"));
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> (".1", "Point
> -- One"));
> my_map2.insert (std::pair<Glib::ustring, Glib::ustring> (".3", "Point
> -- Three"));
> }
>
> void
> MainWindow::fill_treeview()
> {
> if (!refListStore->children().empty())
> refListStore->clear();
>
> update_values();
>
> std::cout << "2nd Sequence:" << std::endl;
>
> // C++11 for...
> for (auto &it : my_map2)
> {
> std::cout << it.first << " * > " << it.second << std::endl;
>
> row = *(refListStore->append());
>
> row[model_columns.nid] = refListStore->children().size();
> row[model_columns.code] = it.first;
> row[model_columns.vlue] = it.second;
> }
> }
>
>
> void
> MainWindow::on_button_quit_clicked()
> {
> hide();
> }
>
> MainWindow::~MainWindow()
> {
> }
>
> int main()
> {
> std::map<Glib::ustring, Glib::ustring> my_map1;
>
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> ("02", "Zero
> -- Two"));
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> (".2", "Point
> -- Two"));
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> ("11", "One --
> One"));
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> ("01", "Zero
> -- One"));
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> (".1", "Point
> -- One"));
> my_map1.insert (std::pair<Glib::ustring, Glib::ustring> (".3", "Point
> -- Three"));
>
> std::cout << "1st Sequence:" << std::endl;
>
> // C++11 for...
> for (auto &it : my_map1)
> std::cout << it.first << " ==> " << it.second << std::endl;
>
> std::cout << std::endl;
>
>
> Glib::RefPtr<Gtk::Application> app = Gtk::Application::create();
>
> MainWindow main_window;
>
> return app->run (main_window);
> }
>
> ----
>
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list