Commits

Andreas Tscharner committed 77d3a30

gui: Add column model for list store for list view

  • Participants
  • Parent commits 9c9780b

Comments (0)

Files changed (6)

File src/gui/MainWindow.cxx

 	m_refBuilder = p_refBuilder;
 
 	m_addRemove = new AddRemoveHandlers(m_refBuilder);
+
+	m_resColModel = new ResColumnModel();
+	m_listResFiles = Gtk::ListStore::create(*m_resColModel);
 }
 
 MainWindow::~MainWindow()
 {
+	delete m_resColModel;
 	delete m_addRemove;
 
 	m_mainWindow = nullptr;

File src/gui/MainWindow.hxx

  * classes
  *
  * \author Andreas Tscharner
- * \date 2012-06-09
+ * \date 2012-06-17
  */
 
 
 // Include files
 #include <gtkmm/builder.h>
 #include <gtkmm/window.h>
+#include <gtkmm/liststore.h>
 #include "AddRemoveHandlers.hxx"
+#include "ResColumnModel.hxx"
 
 
 /*! \class MainWindow
 	private:
 		Gtk::Window *m_mainWindow;     //!< Reference to main window class
 		Glib::RefPtr<Gtk::Builder> m_refBuilder;     //!< Reference to builder that created the UI from XML
+		Glib::RefPtr<Gtk::ListStore> m_listResFiles; //!< Reference to list store for the main list view
 
 		AddRemoveHandlers *m_addRemove;//!< Class instance to handle the "Add" and "Remove" button
+		ResColumnModel *m_resColModel; //!< Class that defines the column model for the list store
 
 	public:
 		/*! \brief Constructor

File src/gui/Makefile.am

 # Define source files for main program
 lrcResourceEditor_SOURCES = MainWindow.hxx MainWindow.cxx               \
                             AddRemoveHandlers.hxx AddRemoveHandlers.cxx \
+                            ResColumnModel.hxx ResColumnModel.cxx       \
                             lrcResourceEditor.cxx
 
 #

File src/gui/ResColumnModel.cxx

+/*
+ * ResColumnModel.cxx
+ *
+ * Copyright 2012 Andreas Tscharner <andy@vis.ethz.ch>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include "../lrc_config.h"
+#endif
+#include "ResColumnModel.hxx"
+
+
+ResColumnModel::ResColumnModel()
+{
+	this->add(m_uniqueResID);
+	this->add(m_resFilename);
+	this->add(m_compressType);
+#ifndef NO_ENCRYPTION
+	this->add(m_encryptType);
+	this->add(m_encPassword);
+#endif
+}

File src/gui/ResColumnModel.hxx

+/*
+ * ResColumnModel.hxx
+ *
+ * Copyright 2012 Andreas Tscharner <andy@vis.ethz.ch>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+
+/*! \file ResColumnModel.hxx
+ *
+ * This file contains the declaration of the model for the list view (the
+ * main part of the main window).
+ *
+ * \author Andreas Tscharner
+ * \date 2012-06-17
+ */
+
+
+#ifndef __RESCOLUMNMODEL_HXX__
+#define __RESCOLUMNMODEL_HXX__
+
+
+#include <gtkmm/treemodelcolumn.h>
+#include "../include/CompressDecompress.hxx"
+#include "../include/EncryptDecrypt.hxx"
+
+
+/*! \class ResColumnModel
+ *  \brief Column model for resources
+ *
+ * This class defines the column model for the list view of the main window.
+ * It takes also care whether or not --disable-encryption was set during the
+ * program configuration
+ */
+class ResColumnModel : public Gtk::TreeModelColumnRecord
+{
+	private:
+		Gtk::TreeModelColumn<Glib::ustring> m_uniqueResID;           //!< ID for resource
+		Gtk::TreeModelColumn<Glib::ustring> m_resFilename;           //!< Filename for resource
+		Gtk::TreeModelColumn<lrc::CompressionType> m_compressType;   //!< Compression type for resource
+		Gtk::TreeModelColumn<lrc::EncryptionType> m_encryptType;     //!< Encryption type for resource
+		Gtk::TreeModelColumn<Glib::ustring> m_encPassword;           //!< Password if resource is encrypted
+
+	public:
+		/*! \brief Constructor
+		 *
+		 * The constructor adds the columns to the column record
+		 */
+		ResColumnModel();
+};
+
+
+#endif /* __RESCOLUMNMODEL_HXX__ */

File src/gui/ResourceEditor.glade

 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
-  <object class="GtkListStore" id="lstResourceFiles"/>
   <object class="GtkWindow" id="MainWindow">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">lrc Resource Editor</property>
               <object class="GtkTreeView" id="resTreeView">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="model">lstResourceFiles</property>
                 <child internal-child="selection">
                   <object class="GtkTreeSelection" id="resTreeViewSelection"/>
                 </child>