Sets the query instance for this widget to the inputed query.
        
        :param      query | <orb.Query> || <orb.QueryCompound>

def setQuery(self, query):
        """
        Sets the query instance for this widget to the inputed query.
        
        :param      query | <orb.Query> || <orb.QueryCompound>
        """
        if not query.isNull() and hash(query) == hash(self._query):
            return
        
        self._query = query
        
        if QueryCompound.typecheck(query):
            self.uiColumnDDL.hide()
            self.uiOperatorDDL.hide()
            
            # setup the compound editor
            editor = XLineEdit(self)
            editor.setReadOnly(True)
            editor.setText(query.name() + ' %s' % nativestring(query))
            editor.setHint(nativestring(query))
            
            self.setEditor(editor)
        
        else:
            self.uiColumnDDL.show()
            self.uiOperatorDDL.show()
            
            text = query.columnName()
            self.uiColumnDDL.setCurrentSchemaPath(nativestring(text))
            
            self.uiOperatorDDL.blockSignals(True)
            plug = self.currentPlugin()
            if plug:
                op = plug.operator(query.operatorType(), query.value())
                
                index = self.uiOperatorDDL.findText(op)
                if index != -1:
                    self.uiOperatorDDL.setCurrentIndex(index)
            
            self.uiOperatorDDL.blockSignals(False)
        
        self.refreshButtons()