def query(self): """ Returns the query instance for this widget. :return <orb.Query> || <orb.QueryCompound> """ queryWidget = self.queryWidget() # check to see if there is an active container for this widget container = queryWidget.containerFor(self) if container: return container.query() elif QueryCompound.typecheck(self._query): return self._query # generate a new query from the editor column = self.uiColumnDDL.currentSchemaPath() plugin = self.currentPlugin() editor = self.editor() op = self.uiOperatorDDL.currentText() if column and plugin: query = Query(column) plugin.setupQuery(query, op, editor) return query else: return Query()
def query(self): """ Builds the query for this quick filter. :return <orb.Query> """ output = Query() for column, op, plugin, editor in self._plugins: query = Query(column) if plugin.setupQuery(query, op, editor): output &= query return output
def setTableType(self, tableType): """ Sets the table type for this instance to the given type. :param tableType | <orb.Table> """ if tableType == self._tableType: return self._tableType = tableType self.setQuery(Query())
def currentQuery(self): """ Returns the current query for the active container. This will reflect what is currently visible to the user. :return <orb.Query> """ container = self.currentContainer() if container: return container.query() return Query()
def query(self): """ Returns the full query for this widget. This will reflect the complete combined query for all containers within this widget. :return <orb.Query> """ if self._loadQuery is not None: return self._loadQuery container = self.widget(0) if container: return container.query() return Query()
def removeEntry(self, entry): if not entry: return layout = self._entryWidget.layout() if layout.count() == 2: entry.setQuery(Query()) return layout.takeAt(layout.indexOf(entry)) entry.close() if not self.signalsBlocked(): self.entriesUpdated.emit()
def query(self): """ Returns the query that is defined by this current panel. :return <orb.Query> """ joiner = self.currentJoiner() query = Query() for entry in self.entries(): if joiner == QueryCompound.Op.And: query &= entry.query() else: query |= entry.query() query.setName(self.uiNameTXT.text()) return query
def addEntry(self, query=None, entry=None): if query is None: query = Query() layout = self._entryWidget.layout() index = layout.count() - 1 if entry: index = layout.indexOf(entry) + 1 widget = XOrbQueryEntryWidget(self, self.tableType()) layout.insertWidget(index, widget) widget.setQuery(query) if not self.signalsBlocked(): self.entriesUpdated.emit() return widget
def createCompoundFromChecked(self): """ Creates a new compound query from the checked entry list. :return <orb.QueryCompound> """ checked_entries = self.checkedEntries() if len(checked_entries) <= 1: return QueryCompound() self.setUpdatesEnabled(False) joiner = self.currentJoiner() query = Query() for entry in checked_entries: if joiner == QueryCompound.Op.And: query &= entry.query() else: query |= entry.query() # clear out the existing containers first = checked_entries[0] first.setQuery(query) first.setChecked(False) layout = self._entryWidget.layout() for i in range(len(checked_entries) - 1, 0, -1): w = checked_entries[i] layout.takeAt(layout.indexOf(w)) w.close() self.refreshEntries() self.setUpdatesEnabled(True) if not self.signalsBlocked(): self.enterCompound(first, query)
def showEvent(self, event): if self._loadQuery is not None: self.setQuery(self._loadQuery) elif not self._initialized: self.setQuery(Query())
def reset(self): """ Resets this query builder to a blank query. """ self.setQuery(Query())