Hello Sir,

Thank you so much Sir, Its worked.

Regards
Deepak, India

On Wed, Sep 20, 2017 at 1:47 PM, Kjell Ahlstedt <kjellahlst...@gmail.com>
wrote:

> Can't you use plain old loops? Something like this:
>
> class ModelColumns : public Gtk::TreeModel::ColumnRecord
>         {
>                 public:
>
>                 ModelColumns()
>                 {
>                     for (int col = 0; col < 6; ++col)
>                       add(m_cols[col]);
>                 }
>                 Gtk::TreeModelColumn<Glib::ustring> m_cols[6];
>         }
> ......
>               m_refTreeModel =  Gtk::ListStore::create(m_Columns);
>               m_TreeView->set_model(m_refTreeModel);
>               for (int col = 0; col < 6; ++col)
>                 m_TreeView->append_column(title[col],
> m_Columns.m_cols[col]);
>
>              Gtk::TreeModel::Row rows[35];
>              for (int row = 0; row < 35; ++row)
>              {
>                rows[row] = *(m_refTreeModel->append());
>
>                for (int col = 0; col < 6; ++col)
>                   rows[row][m_Columns.m_cols[col]] = array[row][col];
>            }
>
>
> Den 2017-09-19 kl. 14:35, skrev Deepak Chiradoni:
>
>> Hi,
>>
>> I am currently adding data coming from CSV(Comma Separated Values)
>> file.All the data from CSV is string only. As I have 35 rows and 6 Columns
>> of data in string.
>>
>> class ModelColumns : public Gtk::TreeModel::ColumnRecord
>>         {
>>                 public:
>>
>>                 ModelColumns()
>>                 {
>>                               add(m_colA);
>>                               add(m_colB);
>>                               add(m_colC);
>>                               add(m_colD);
>>                               add(m_colE);
>>                               add(m_colF);
>>                 }
>> Gtk::TreeModelColumn<Glib::ustring>      m_colA;
>> Gtk::TreeModelColumn<Glib::ustring>      m_colB;
>> Gtk::TreeModelColumn<Glib::ustring>      m_colC;
>> Gtk::TreeModelColumn<Glib::ustring>      m_colD;
>> Gtk::TreeModelColumn<Glib::ustring>      m_colE;
>> Gtk::TreeModelColumn<Glib::ustring>      m_colF;
>>         };
>>
>> void LoadBtn()
>> {
>>        Gtk::FileChooserDialog dialog("Please select a file to open",
>>        Gtk::FILE_CHOOSER_ACTION_OPEN);
>>        dialog.set_transient_for(*this);
>>
>>         //Add response buttons the the dialog:
>>         dialog.add_button("_Cancel", Gtk::RESPONSE_CANCEL);
>>         dialog.add_button("_Open", Gtk::RESPONSE_OK);
>>
>>         //Add filters, so that only certain file types can be selected:
>>
>>         auto filter_text = Gtk::FileFilter::create();
>>         filter_text->set_name("csv files (*.csv)|*.csv");
>>         filter_text->add_pattern("*");
>>         dialog.add_filter(filter_text);
>>
>>         //Show the dialog and wait for a user response:
>>         int result = dialog.run();
>>
>>           //Handle the response:
>>           switch(result)
>>           {
>>             case(Gtk::RESPONSE_OK):
>>             {
>>                     std::string filename = dialog.get_filename();
>>
>>                     ifstream in(filename);
>>
>>                         string line, field;
>>
>>                         vector< vector<Glib::ustring> > array;  // the 2D
>> array
>>                         vector<Glib::ustring> v;              // array of
>> values for one line only
>>
>>                         while ( getline(in,line) )    // get next line in
>> file
>>                         {
>>                             v.clear();
>>                             stringstream ss(line);
>>
>>
>>                             while (getline(ss,field,','))  // break line
>> into comma delimitted fields
>>                             {
>>                                 v.push_back(field);  // add each field to
>> the 1D array
>>                             }
>>
>>                             array.push_back(v);  // add the 1D array to
>> the 2D array
>>                         }
>>
>>               m_refTreeModel =  Gtk::ListStore::create(m_Columns);
>>               m_TreeView->set_model(m_refTreeModel);
>>               m_TreeView->append_column("Data1", m_Columns.m_colA);
>>               m_TreeView->append_column("Data2", m_Columns.m_colB);
>>               m_TreeView->append_column("Data3", m_Columns.m_colC);
>>               m_TreeView->append_column("Data4", m_Columns.m_colD);
>>               m_TreeView->append_column("Data5", m_Columns.m_colE);
>>               m_TreeView->append_column("Data6", m_Columns.m_colF);
>>
>>               Gtk::TreeModel::Row row = *(m_refTreeModel->append());
>>               row[m_Columns.m_colA] = array[0][0]; row[m_Columns.m_colB]
>> = array[0][1]; row[m_Columns.m_colC] = array[0][2];
>>               row[m_Columns.m_colD] = array[0][3]; row[m_Columns.m_colE]
>> = array[0][4]; row[m_Columns.m_colF] = array[0][5];
>>
>>               Gtk::TreeModel::Row row1 = *(m_refTreeModel->append());
>>               row1[m_Columns.m_colA] = array[1][0];
>> row1[m_Columns.m_colB] = array[1][1]; row1[m_Columns.m_colC] = array[1][2];
>>                       row1[m_Columns.m_colD] = array[1][3];
>> row1[m_Columns.m_colE] = array[1][4]; row1[m_Columns.m_colF] = array[1][5];
>>
>>               //35 Rows Like This
>>
>>               break;
>>             }
>>             default:
>>             {
>>               break;
>>             }
>>         }
>>
>> }
>>
>> Like this I am adding 35 rows. Its very Lengthy. I am getting data from
>> string vector as I have added the code for FileChoser Function. I am
>> defining a class for TreeModel as I added.
>>
>> Regrads
>> Deepak, India.
>>
>>
>
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to