# :coding: utf-8
# :copyright: Copyright (c) 2013 Martin Pengelly-Phillips
# :license: See LICENSE.txt.


from PySide import QtGui

from .selector import SelectorWidget
from .options import OptionsWidget


class ExporterWidget(QtGui.QWidget):
    '''Manage exporting.'''
    
    def __init__(self, host, parent=None):
        '''Initialise with *host* application and *parent*.'''
        super(ExporterWidget, self).__init__(parent=parent)
        self.host = host
        self.build()
        self.post_build()
        
    def build(self):
        '''Build and layout the interface.'''
        self.setLayout(QtGui.QVBoxLayout())

        self.selector_widget = SelectorWidget(host=self.host)
        self.selector_widget.setFrameStyle(
            QtGui.QFrame.StyledPanel
        )
        self.layout().addWidget(self.selector_widget)
        
        self.options_widget = OptionsWidget(host=self.host)
        self.options_widget.setFrameStyle(
            QtGui.QFrame.StyledPanel
        )
        self.layout().addWidget(self.options_widget)
        
        self.export_button = QtGui.QPushButton('Export')
        self.layout().addWidget(self.export_button)
        
    def post_build(self):
        '''Perform post-build operations.'''
        self.setWindowTitle('Segue Exporter')
        
# :coding: utf-8
# :copyright: Copyright (c) 2013 Martin Pengelly-Phillips
# :license: See LICENSE.txt.


from PySide import QtGui

from .selector import SelectorWidget
from .options import OptionsWidget


class ExporterWidget(QtGui.QWidget):
    '''Manage exporting.'''
    
    def __init__(self, host, parent=None):
        '''Initialise with *host* application and *parent*.'''
        super(ExporterWidget, self).__init__(parent=parent)
        self.host = host
        self.build()
        self.post_build()
        
    def build(self):
        '''Build and layout the interface.'''
        self.setLayout(QtGui.QVBoxLayout())

        self.selector_widget = SelectorWidget(host=self.host)
        self.selector_widget.setFrameStyle(
            QtGui.QFrame.StyledPanel
        )
        self.layout().addWidget(self.selector_widget)
        
        self.options_widget = OptionsWidget(host=self.host)
        self.options_widget.setFrameStyle(
            QtGui.QFrame.StyledPanel
        )
        self.layout().addWidget(self.options_widget)
        
        self.export_button = QtGui.QPushButton('Export')
        self.layout().addWidget(self.export_button)
        
    def post_build(self):
        '''Perform post-build operations.'''
        self.setWindowTitle('Segue Exporter')
        
        self.selector_widget.added.connect(self.on_selection_changed)
        self.selector_widget.removed.connect(self.on_selection_changed)
        
        self.validate()
        
    def on_selection_changed(self, items):
        '''Handle selection change.'''
        self.validate()
        
    def validate(self):
        '''Validate options and update UI state.'''
        self.export_button.setEnabled(False)
        
        if not self.selector_widget.items():
            return
        
        self.export_button.setEnabled(True)


Add basic validation of ui state.
Add basic validation of ui state.
