#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
sip.setapi('QDateTime', 2)
from PyQt4.QtGui import QApplication

from PyQt4.QtCore import Qt
from PyQt4.QtGui import (QDialog, QHBoxLayout,
                         QListView, QListWidget, QListWidgetItem,
                         QPushButton, QStackedWidget, QVBoxLayout, QWidget)


class ConfigDialog(QDialog):
    def __init__(self, parent=None):
        _ = self.tr
        super(ConfigDialog, self).__init__(parent)
        self.setAttribute(Qt.WA_DeleteOnClose)
        # Create the navigation pane
        self.contents_widget = QListWidget()
        self.contents_widget.setMovement(QListView.Static)
        self.contents_widget.setMaximumWidth(100)
        self.contents_widget.setMinimumWidth(100)
        self.contents_widget.setSpacing(12)

        # Create the main configuration dialog controls
        close_btn = QPushButton(_("Close"))
        apply_btn = QPushButton(_("Apply"))
        defaults_btn = QPushButton(_("Defaults"))
        defaults_btn.setToolTip(_("Change current page' settings to defaults"))

        self.create_menu()
        self.contents_widget.setCurrentRow(0)
        self.pages_widget = QStackedWidget()
        close_btn.clicked.connect(self.close)
        # Create the configuration dialog layout
        content_layout = QHBoxLayout()
        content_layout.addWidget(self.contents_widget)
        content_layout.addWidget(self.pages_widget, 1)

        btn_layout = QHBoxLayout()
        btn_layout.addStretch(1)
        btn_layout.addWidget(defaults_btn)
        btn_layout.addSpacing(12)
        btn_layout.addWidget(apply_btn)
        btn_layout.addWidget(close_btn)

        main_layout = QVBoxLayout()
        main_layout.addLayout(content_layout)
        main_layout.addStretch(1)
        main_layout.addSpacing(12)
        main_layout.addLayout(btn_layout)

        self.setLayout(main_layout)

        self.setWindowTitle(_("Preferences"))

    def closeEvent(self, event):
        event.accept()

    def create_menu(self):
        _ = self.tr
        btn1 = QListWidgetItem(self.contents_widget)
        btn1.setText(_("Item1"))
        btn1.setTextAlignment(Qt.AlignHCenter)
        btn1.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

        btn2 = QListWidgetItem(self.contents_widget)
        btn2.setText(_("Item2"))
        btn2.setTextAlignment(Qt.AlignHCenter)
        btn2.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

        btn3 = QListWidgetItem(self.contents_widget)
        btn3.setText(_("Item3"))
        btn3.setTextAlignment(Qt.AlignHCenter)
        btn3.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

        btn4 = QListWidgetItem(self.contents_widget)
        btn4.setText(_("Item4"))
        btn4.setTextAlignment(Qt.AlignHCenter)
        btn4.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)

def example():
    """Displays an example configuration dialog."""
    app = QApplication(sys.argv)
    dialog = ConfigDialog(None)
    dialog.show()
    app.exec_()


if __name__ == "__main__":
    example()
