Index: parley.h
===================================================================
--- parley.h	(revision 834881)
+++ parley.h	(working copy)
@@ -116,6 +116,11 @@
     void slotConfigShowSearch();
 
     /**
+    * Show the vocabulary columns dialog to enable or disable the columns in the view
+    */
+    void slotShowVocabularyColumnsDialog();
+
+    /**
      * Show the tip of the day (force it to be shown)
      */
     void tipOfDay();
Index: parleyui.rc
===================================================================
--- parleyui.rc	(revision 834881)
+++ parleyui.rc	(working copy)
@@ -27,6 +27,7 @@
   <Menu name="view" >
       <text>View</text>
       <Action name="show_vocabulary_columns_menu" />
+      <Action name="show_vocabulary_columns_dialog" />
       <Separator/>
       <Action name="show_lesson_dock"/>
       <Action name="show_wordtype_dock"/>
Index: parley.cpp
===================================================================
--- parley.cpp	(revision 834881)
+++ parley.cpp	(working copy)
@@ -49,6 +49,7 @@
 #include "settings/parleyprefs.h"
 #include "language-dialogs/languagedialog.h"
 #include "language-dialogs/grammardialog.h"
+#include "language-dialogs/vocabularycolumnsdialog.h"
 #include "docprop-dialogs/TitlePage.h"
 #include "configure-practice/configurepracticedialog.h"
 #include "prefs.h"
@@ -226,6 +227,16 @@
     }
 }
 
+void ParleyApp::slotShowVocabularyColumnsDialog()
+{
+    VocabularyColumnsDialog *dialog = new VocabularyColumnsDialog(m_document->document(), this);
+
+    if ( dialog->exec() == KDialog::Accepted ) {
+        m_vocabularyModel->resetLanguages();
+    }
+}
+
+
 void ParleyApp::slotEditLanguages()
 {
     LanguageDialog* languageDialog = new LanguageDialog(m_document->document(), this);
@@ -349,10 +360,10 @@
             "With the checkboxes you can select which lessons you want to practice. \n"
             "Only checked lessons [x] will be asked in the tests!"));
 
-    connect(m_lessonView, SIGNAL(selectedLessonChanged(KEduVocLesson*)), 
+    connect(m_lessonView, SIGNAL(selectedLessonChanged(KEduVocLesson*)),
         m_vocabularyModel, SLOT(setLesson(KEduVocLesson*)));
 
-    connect(m_lessonView, SIGNAL(signalShowContainer(KEduVocContainer*)), 
+    connect(m_lessonView, SIGNAL(signalShowContainer(KEduVocContainer*)),
         m_vocabularyModel, SLOT(showContainer(KEduVocContainer*)));
 
     connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
@@ -376,10 +387,10 @@
 
     m_wordTypeView->setModel(m_wordTypeModel);
 
-    connect(m_wordTypeView, SIGNAL(selectedWordTypeChanged(KEduVocWordType*)), 
+    connect(m_wordTypeView, SIGNAL(selectedWordTypeChanged(KEduVocWordType*)),
         m_vocabularyModel, SLOT(setWordType(KEduVocWordType*)));
 
-    connect(m_wordTypeView, SIGNAL(signalShowContainer(KEduVocContainer*)), 
+    connect(m_wordTypeView, SIGNAL(signalShowContainer(KEduVocContainer*)),
         m_vocabularyModel, SLOT(showContainer(KEduVocContainer*)));
 
     connect(m_vocabularyView, SIGNAL(translationChanged(KEduVocExpression*, int)),
@@ -710,6 +721,16 @@
     m_vocabularyColumnsActionMenu->setStatusTip(m_vocabularyColumnsActionMenu->whatsThis());
     m_vocabularyView->horizontalHeader()->addAction(m_vocabularyColumnsActionMenu);
 
+    // vocabulary columns dialog
+    KAction *vocabularyColumnsDialogAction = new KAction(this);
+    actionCollection()->addAction("show_vocabulary_columns_dialog", vocabularyColumnsDialogAction);
+    vocabularyColumnsDialogAction->setText(i18n("Vocabulary Columns Dialog"));
+    vocabularyColumnsDialogAction->setWhatsThis(i18n("Display a dialog to enable or disable the vocabulary columns"));
+    vocabularyColumnsDialogAction->setToolTip(vocabularyColumnsDialogAction->whatsThis());
+    vocabularyColumnsDialogAction->setStatusTip(vocabularyColumnsDialogAction->whatsThis());
+    m_vocabularyView->horizontalHeader()->addAction(vocabularyColumnsDialogAction);
+    connect(vocabularyColumnsDialogAction, SIGNAL(triggered(bool)), this, SLOT(slotShowVocabularyColumnsDialog()));
+
     actionCollection()->addAction(KStandardAction::TipofDay,  "help_tipofday", this, SLOT( tipOfDay() ));
 
 // -- ONLY ON RIGHT CLICK - HEADER SO FAR -------------------------------------
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt	(revision 834881)
+++ CMakeLists.txt	(working copy)
@@ -154,6 +154,7 @@
     language-dialogs/languagedialog.cpp
     language-dialogs/editlanguagedialogpage.cpp
     language-dialogs/grammardialog.cpp
+    language-dialogs/vocabularycolumnsdialog.cpp
 )
 
 kde4_add_ui_files(languagedialogs_SRCS
Index: language-dialogs/vocabularycolumnsdialog.cpp
===================================================================
--- language-dialogs/vocabularycolumnsdialog.cpp	(revision 0)
+++ language-dialogs/vocabularycolumnsdialog.cpp	(revision 0)
@@ -0,0 +1,158 @@
+/***************************************************************************
+
+                      options to enable/disable columns for the languages
+
+    -----------------------------------------------------------------------
+
+    begin         : Tue Mar 29 2005
+
+    copyright     :(C) 2005, 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+    -----------------------------------------------------------------------
+
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include "vocabularycolumnsdialog.h"
+
+// parley imports
+#include "vocabulary/vocabularymodel.h"
+#include "documentsettings.h"
+
+// Qt imports
+#include <QGridLayout>
+#include <QGroupBox>
+#include <QHeaderView>
+#include <QStandardItem>
+#include <QStandardItemModel>
+#include <QTreeView>
+#include <QVBoxLayout>
+
+// KDE imports
+#include <keduvocdocument.h>
+#include <KIcon>
+#include <KLocale>
+#include <KTitleWidget>
+
+const int COLUMNS_LIMIT = 1; // columns for row
+const char *columns_str[] = {"Pronunciation", "Word Type", "Synonym", "Antonym", "Example", "Comment", "Paraphrase"};
+
+VocabularyColumnsDialog::VocabularyColumnsDialog(KEduVocDocument *doc, QWidget *parent)
+    : KDialog(parent),
+    m_models()
+{
+    m_box = new QGridLayout();
+    m_doc = doc;
+    m_settings = new DocumentSettings(m_doc->url().url());
+
+    setCaption(i18n("Vocabulary columns dialog"));
+    setButtons(Ok|Cancel);
+
+    QWidget *main_widget = new QWidget(this);
+    main_widget->setLayout(m_box);
+
+    setMainWidget(main_widget);
+
+    KTitleWidget *titleWidget = new KTitleWidget(this);
+    titleWidget->setText(i18n("Enable/Disable the columns for each language"));
+    titleWidget->setPixmap(KIcon("view-file-columns").pixmap(22, 22), KTitleWidget::ImageRight);
+    m_box->addWidget(titleWidget, 0, 0, 1, 2);
+
+    createLanguagesLayout();
+}
+
+VocabularyColumnsDialog::~VocabularyColumnsDialog()
+{
+    delete m_settings;
+}
+
+void VocabularyColumnsDialog::accept()
+{
+    saveVisibleColumns();
+
+    KDialog::accept();
+}
+
+void VocabularyColumnsDialog::reject()
+{
+    KDialog::reject();
+}
+
+void VocabularyColumnsDialog::createLanguagesLayout()
+{
+    int row = 1;
+    int column = 0;
+    for (int i = 0; i < m_doc->identifierCount(); i++ ) {
+        m_models [i] = new QStandardItemModel(this);
+
+        QGroupBox *box = new QGroupBox(m_doc->identifier(i).name(), 0);
+        QVBoxLayout *box_layout = new QVBoxLayout(0);
+
+        m_box->addWidget(box, row, column);
+
+        if (column < COLUMNS_LIMIT) {
+            column ++;
+        }
+        else {
+            row ++;
+            column = 0;
+        }
+
+        box->setLayout(box_layout);
+
+        addLanguage(i, box_layout);
+    }
+}
+
+void VocabularyColumnsDialog::removeLanguagesLayout()
+{
+}
+
+void VocabularyColumnsDialog::addLanguage(int i, QVBoxLayout *parent)
+{
+    for(int c=1; c<VocabularyModel::EntryColumnsMAX; c++) {
+        QStandardItem *item_data = new QStandardItem(columns_str[c-1]);
+        item_data->setData(QVariant(c-1), VocabularyColumnsDialog::ColumnRole);
+        item_data->setData(QVariant(i), VocabularyColumnsDialog::LanguageRole);
+        item_data->setCheckable(true);
+        item_data->setEditable(false);
+
+        // check if the column is active
+        if (m_settings->visibleColumns().size() >= (i*8 + c)) {
+            item_data->setCheckState(m_settings->visibleColumns().at(i*8 + c) == 1 ? Qt::Checked : Qt::Unchecked);
+        }
+
+        m_models [i]->insertRow(c-1, item_data);
+    }
+
+    QTreeView *treeView = new QTreeView(this);
+    treeView->header()->hide();
+    treeView->setModel(m_models [i]);
+
+    parent->addWidget(treeView);
+}
+
+void VocabularyColumnsDialog::saveVisibleColumns()
+{
+    QList <int> columns;
+
+    for (int i = 0; i < m_doc->identifierCount(); i++ ) { // each model for every language
+        columns << 1;
+        for (int row = 0; row < m_models [i]->rowCount(); row++) { // the columns for one language
+            int enabled = (m_models [i]->item(row)->checkState() == Qt::Checked) ? 1 : 0;
+            columns << enabled;
+        }
+    }
+
+    // i think that this is not the place for this
+    m_settings->setVisibleColumns(columns);
+    m_settings->writeConfig();
+}
Index: language-dialogs/vocabularycolumnsdialog.h
===================================================================
--- language-dialogs/vocabularycolumnsdialog.h	(revision 0)
+++ language-dialogs/vocabularycolumnsdialog.h	(revision 0)
@@ -0,0 +1,84 @@
+/***************************************************************************
+
+                      options to enable/disable columns for the languages
+
+    -----------------------------------------------------------------------
+
+    begin         : Tue Mar 29 2005
+
+    copyright     :(C) 2005, 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+    -----------------------------------------------------------------------
+
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   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.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef VOCABULARYCOLUMNSDIALOG_H
+#define VOCABULARYCOLUMNSDIALOG_H
+
+#include <QMap>
+
+#include <KDialog>
+
+class DocumentSettings;
+class QGridLayout;
+class QStandardItem;
+class QStandardItemModel;
+class QVBoxLayout;
+class KEduVocDocument;
+
+/**
+* Show options to enable/disable the columns for each language of the current document
+*/
+class VocabularyColumnsDialog : public KDialog
+{
+    Q_OBJECT
+public:
+    enum Roles {
+        ColumnRole = 0x12,
+        LanguageRole = 0x18
+    };
+
+    VocabularyColumnsDialog(KEduVocDocument *doc, QWidget *parent);
+    ~VocabularyColumnsDialog();
+
+    void accept();
+    void reject();
+
+private:
+    /**
+    * Initialize the gridlayout of the widget
+    * with one treeview for each language showing the possible columns
+    */
+    void createLanguagesLayout();
+
+    /**
+    *
+    */
+    void removeLanguagesLayout();
+
+    /**
+    * Adds a language to the main gridlayout
+    */
+    void addLanguage(int language, QVBoxLayout *parent);
+
+    /**
+    * Save the visible columns for each language in the document settings
+    */
+    void saveVisibleColumns();
+
+    DocumentSettings *m_settings;
+    QGridLayout *m_box;
+    KEduVocDocument *m_doc;
+    QMap <int, QStandardItemModel *> m_models;
+};
+
+#endif