Skip to content

Commit

Permalink
Started converting Getters and Setters to properties.
Browse files Browse the repository at this point in the history
  • Loading branch information
Egor Poblaguev committed Sep 5, 2016
1 parent dd1f7ae commit 4dfc420
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 74 deletions.
20 changes: 11 additions & 9 deletions controllers/main_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,29 @@ def show(self):

def _run_query(self):
try:
query = self.view.get_query_text()
query = self.view.query_text
results = self.model.query(query)
self.view.update_results_table(results.headers, results.records)
self.view.update_query_status(results.size, results.totalSize)
self.view.status_text = '{0} / {1} Results'.format(results.size, results.totalSize)
self.view.query_more_enabled = results.size < results.totalSize
except Exception as e:
self.view.display_error_message(str(e))
self.view.error_message = str(e)

def _run_query_more(self):
try:
results = self.model.query_more()
self.view.update_results_table(results.headers, results.records)
self.view.update_query_status(results.size, results.totalSize)
self.view.status_text = '{0} / {1} Results'.format(results.size, results.totalSize)
self.view.query_more_enabled = results.size < results.totalSize
except Exception as e:
self.view.display_error_message(str(e))
self.view.error_message = str(e)

def _select_table(self):
table_name = self.view.get_selected_table()
table_name = self.view.selected_table
fields = sorted(self.model.get_table_fields(table_name))
self.view.update_query_text('SELECT {0} FROM {1}'.format(', '.join(fields), table_name))
self.view.query_text = 'SELECT {0} FROM {1}'.format(', '.join(fields), table_name)

def _filter_tables(self):
filter_text = self.view.get_filter_text()
filter_text = self.view.filter_text
table_names = (name for name in self.model.get_tables() if filter_text.lower() in name.lower())
self.view.update_table_list(table_names)
self.view.tables = table_names
163 changes: 98 additions & 65 deletions views/window_main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from PyQt5.QtCore import Qt
import PyQt5.QtWidgets as qtw
from PyQt5.QtCore import Qt

from utils.custom_widgets import SOQLHighlighter, ResultsTable

Expand All @@ -9,100 +9,133 @@ def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)

# Popups
self.error_message = qtw.QMessageBox()
self.error_message.setIcon(qtw.QMessageBox.Warning)
self._error_message = qtw.QMessageBox()
self._error_message.setIcon(qtw.QMessageBox.Warning)

# INIT ELEMENTS
self.root_frame = qtw.QFrame()
self.root_layout = qtw.QHBoxLayout()
self.btn_query = qtw.QPushButton('Run Query')
self.btn_query_more = qtw.QPushButton('Query More')
self.frm_nw = qtw.QFrame()
self.frm_ne = qtw.QFrame()
self.layout_nw = qtw.QVBoxLayout()
self.layout_ne = qtw.QVBoxLayout()
self.txt_query = qtw.QTextEdit()
self.tbl_s = ResultsTable()
self.splitter_h = qtw.QSplitter(Qt.Horizontal)
self.splitter_v = qtw.QSplitter(Qt.Vertical)
self.lst_tables = qtw.QListWidget()
self.txt_filter = qtw.QLineEdit()
self.syntax_highlighter = SOQLHighlighter(self.txt_query)
self.status_bar = qtw.QStatusBar()
self._root_frame = qtw.QFrame()
self._root_layout = qtw.QHBoxLayout()
self._btn_query = qtw.QPushButton('Run Query')
self._btn_query_more = qtw.QPushButton('Query More')
self._frm_nw = qtw.QFrame()
self._frm_ne = qtw.QFrame()
self._layout_nw = qtw.QVBoxLayout()
self._layout_ne = qtw.QVBoxLayout()
self._txt_query = qtw.QTextEdit()
self._tbl_s = ResultsTable()
self._splitter_h = qtw.QSplitter(Qt.Horizontal)
self._splitter_v = qtw.QSplitter(Qt.Vertical)
self._lst_tables = qtw.QListWidget()
self._txt_filter = qtw.QLineEdit()
self._syntax_highlighter = SOQLHighlighter(self._txt_query)
self._status_bar = qtw.QStatusBar()

# --- ARRANGE ELEMENTS ---

# Top Left
self.frm_nw.setFrameShape(qtw.QFrame.StyledPanel)
self.frm_nw.setLayout(self.layout_nw)
self.layout_nw.addWidget(self.txt_filter)
self.layout_nw.addWidget(self.lst_tables)
self.txt_filter.setPlaceholderText('Filter Tables')
self._frm_nw.setFrameShape(qtw.QFrame.StyledPanel)
self._frm_nw.setLayout(self._layout_nw)
self._layout_nw.addWidget(self._txt_filter)
self._layout_nw.addWidget(self._lst_tables)
self._txt_filter.setPlaceholderText('Filter Tables')

# Top Right
self.frm_ne.setFrameShape(qtw.QFrame.StyledPanel)
self.frm_ne.setLayout(self.layout_ne)
self.layout_ne.addWidget(self.txt_query)
self.layout_ne.addWidget(self.btn_query)
self.layout_ne.addWidget(self.btn_query_more)
self.txt_query.setFrameShape(qtw.QFrame.StyledPanel)
self.btn_query_more.setDisabled(True)
self._frm_ne.setFrameShape(qtw.QFrame.StyledPanel)
self._frm_ne.setLayout(self._layout_ne)
self._layout_ne.addWidget(self._txt_query)
self._layout_ne.addWidget(self._btn_query)
self._layout_ne.addWidget(self._btn_query_more)
self._txt_query.setFrameShape(qtw.QFrame.StyledPanel)
self._btn_query_more.setDisabled(True)

# Bottom
self.tbl_s.setFrameShape(qtw.QFrame.StyledPanel)
self.setStatusBar(self.status_bar)
self._tbl_s.setFrameShape(qtw.QFrame.StyledPanel)
self.setStatusBar(self._status_bar)

# Splitters
self.splitter_h.addWidget(self.frm_nw)
self.splitter_h.addWidget(self.frm_ne)
self.splitter_v.addWidget(self.splitter_h)
self.splitter_v.addWidget(self.tbl_s)
self._splitter_h.addWidget(self._frm_nw)
self._splitter_h.addWidget(self._frm_ne)
self._splitter_v.addWidget(self._splitter_h)
self._splitter_v.addWidget(self._tbl_s)

# Root
self.setCentralWidget(self.root_frame)
self.root_layout.addWidget(self.splitter_v)
self.root_frame.setLayout(self.root_layout)
self.setCentralWidget(self._root_frame)
self._root_layout.addWidget(self._splitter_v)
self._root_frame.setLayout(self._root_layout)

# Finalize
self.setWindowTitle('SalesForce Viewer')

def listener_run_query(self, func):
self._btn_query.clicked.connect(func)

def set_listener_run_query(self, func):
self.btn_query.clicked.connect(func)
self._btn_query.clicked.connect(func)

def set_listener_query_more(self, func):
self.btn_query_more.clicked.connect(func)
self._btn_query_more.clicked.connect(func)

def set_listener_table_selected(self, func):
self.lst_tables.doubleClicked.connect(func)
self._lst_tables.doubleClicked.connect(func)

def set_listener_filter_tables(self, func):
self.txt_filter.textChanged.connect(func)
self._txt_filter.textChanged.connect(func)

def get_filter_text(self):
return self.txt_filter.text()
@property
def filter_text(self):
return self._txt_filter.text()

def get_selected_table(self):
return self.lst_tables.currentItem().text()
@filter_text.setter
def filter_text(self, text):
self._txt_filter.setText(text)

def get_query_text(self):
return self.txt_query.toPlainText()
@property
def selected_table(self):
return self._lst_tables.currentItem().text()

def update_results_table(self, headers: list, rows: list):
self.tbl_s.set_data(headers, rows)
@property
def tables(self):
return [item.text() for item in self._lst_tables.items()]

def update_query_status(self, size: int, total_size: int):
self.status_bar.showMessage('{0} / {1} Results'.format(size, total_size))
self.btn_query_more.setEnabled(size < total_size)
@tables.setter
def tables(self, table_names: list):
while self._lst_tables.count() > 0:
self._lst_tables.takeItem(0)
for name in table_names:
self._lst_tables.addItem(qtw.QListWidgetItem(name))

def update_query_text(self, text):
self.txt_query.setText(text)
@property
def query_text(self):
return self._txt_query.toPlainText()

def update_table_list(self, table_names: iter):
while self.lst_tables.count() > 0:
self.lst_tables.takeItem(0)
for name in table_names:
self.lst_tables.addItem(qtw.QListWidgetItem(name))
@query_text.setter
def query_text(self, text):
self._txt_query.setText(text)

@property
def status_text(self):
return self._status_bar.currentMessage()

def display_error_message(self, text):
self.error_message.setText(text)
self.error_message.show()
@status_text.setter
def status_text(self, text):
self._status_bar.showMessage(text)

@property
def query_more_enabled(self) -> bool:
return self._btn_query_more.isEnabled()

@query_more_enabled.setter
def query_more_enabled(self, enabled: bool):
self._btn_query_more.setEnabled(enabled)

@property
def error_message(self):
return self._error_message.text()

@error_message.setter
def error_message(self, text):
self._error_message.setText(text)
self._error_message.show()

def update_results_table(self, headers: list, rows: list):
self._tbl_s.set_data(headers, rows)

0 comments on commit 4dfc420

Please sign in to comment.