Show
Ignore:
Timestamp:
03/13/10 13:49:04 (6 months ago)
Author:
erikj
Message:

first functional expanded search

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/camelot/view/controls/tableview.py

    r1186 r1187  
    3737 
    3838from camelot.view.proxy.queryproxy import QueryTableProxy 
     39from camelot.view.controls.filterlist import filter_changed_signal 
    3940from camelot.view.controls.view import AbstractView 
    4041from camelot.view.controls.user_translatable_label import UserTranslatableLabel 
     
    113114    def __init__( self, parent, admin ): 
    114115        QtGui.QWidget.__init__( self, parent ) 
     116        self._admin = admin 
    115117        layout = QtGui.QVBoxLayout() 
    116118        widget_layout = QtGui.QHBoxLayout() 
     
    136138     
    137139    def _fill_expanded_search_options(self, columns): 
     140        from camelot.view.controls.filter_operator import FilterOperator 
    138141        layout = QtGui.QHBoxLayout() 
    139142        for field, attributes in columns: 
    140143            if 'operators' in attributes: 
    141                 widget = QtGui.QLabel(field) 
     144                widget = FilterOperator( self._admin.entity, field, attributes, self) 
     145                self.connect( widget, filter_changed_signal,  self._filter_changed ) 
    142146                layout.addWidget( widget ) 
     147        layout.addStretch() 
    143148        self._expanded_search.setLayout( layout ) 
    144149         
     150    def _filter_changed(self): 
     151        self.emit(QtCore.SIGNAL('filters_changed')) 
    145152         
     153    def decorate_query(self, query): 
     154        """Apply expanded filters on the query""" 
     155        for i in range(self._expanded_search.layout().count()): 
     156            if self._expanded_search.layout().itemAt(i).widget(): 
     157                query = self._expanded_search.layout().itemAt(i).widget().decorate_query(query) 
     158        return query 
     159             
    146160    def expand_search_options(self): 
    147161        if self._expanded_search.isHidden(): 
     
    245259        shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtGui.QKeySequence.Find), self) 
    246260        self.connect( shortcut, QtCore.SIGNAL( 'activated()' ), self.activate_search ) 
     261        self.connect( self.header, QtCore.SIGNAL('filters_changed'),  self.rebuildQuery ) 
    247262        # give the table widget focus to prevent the header and its search control to 
    248263        # receive default focus, as this would prevent the displaying of 'Search...' in the 
     
    416431        workspace.addSubWindow( form ) 
    417432        form.show() 
    418      
    419  
    420      
    421 #    @gui_function 
    422 #    def set_filters_and_actions( self, filters_and_actions ): 
    423 #        """sets filters for the tableview""" 
    424 #        filters, actions = filters_and_actions 
    425 #        from filterlist import FilterList 
    426 #        from actionsbox import ActionsBox 
    427 #        logger.debug( 'setting filters for tableview' ) 
    428 #        if self.filters: 
    429 #          self.disconnect( self.filters, SIGNAL( 'filters_changed' ), self.rebuildQuery ) 
    430 #          self.filters.deleteLater() 
    431 #          self.filters = None 
    432 #        if self.actions: 
    433 #          self.actions.deleteLater() 
    434 #          self.actions = None           
    435 #        if filters: 
    436 #          self.filters = FilterList( filters, parent=self ) 
    437 #          self.splitter.insertWidget( 2, self.filters ) 
    438 #          self.connect( self.filters, SIGNAL( 'filters_changed' ), self.rebuildQuery ) 
    439 #        if actions: 
    440 #          self.actions = ActionsBox( self, self._table_model.collection_getter, lambda:[] ) 
    441 #          self.actions.setActions( actions ) 
    442 #          self.splitter.insertWidget( 2, self.filters ) 
    443433 
    444434    def toHtml( self ): 
     
    538528        def rebuild_query(): 
    539529            query = self.admin.entity.query 
     530            query = self.header.decorate_query(query) 
    540531            if self.filters: 
    541532                query = self.filters.decorate_query( query )