Skip to content

Commit

Permalink
Renaming GRID to TABLE #266
Browse files Browse the repository at this point in the history
  • Loading branch information
jarvisteach committed Feb 12, 2018
1 parent 64a4e52 commit e777440
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 69 deletions.
175 changes: 114 additions & 61 deletions appJar/appjar.py
Expand Up @@ -390,7 +390,7 @@ def _logToRoot(message, *args, **kwargs):
"FileEntry", "DirectoryEntry", "Scale", "Link", "Meter", "Image",
"CheckBox", "RadioButton", "ListBox", "SpinBox", "OptionBox",
"TickOptionBox", "Accelerators",
"Map", "PieChart", "Properties", "Grid", "Plot", "MicroBit",
"Map", "PieChart", "Properties", "Table", "Plot", "MicroBit",
"DatePicker", "Separator", "Turtle", "Canvas",
"LabelFrame", "Frame", "TabbedFrame", "PanedFrame", "ToggleFrame",
"FrameBox", "FrameLabel", "ContainerLog", "FlashLabel",
Expand Down Expand Up @@ -2493,11 +2493,11 @@ def setLabelFont(self, *args, **style):
self.tabbedFrameFont.config(**style)
self.panedFrameFont.config(**style)
self.scrollPaneFont.config(**style)
self.gridFont.config(**style)
self.tableFont.config(**style)

# need better way to register font change events on grids
for k, v in self.widgetManager.group(self.Widgets.Grid).items():
v.config(font=self.gridFont)
# need better way to register font change events on tables
for k, v in self.widgetManager.group(self.Widgets.Table).items():
v.config(font=self.tableFont)

def _setLabelFontSize(self, size):
self.setLabelFont(size=size)
Expand Down Expand Up @@ -2780,7 +2780,7 @@ def configureWidget(self, kind, name, option, value, key=None, deprecated=False)
else:
self.warn("Error configuring %s: can't set inactiveforeground", name )
elif option == 'inactivebackground':
if kind in [self.Widgets.TabbedFrame, self.Widgets.Grid]:
if kind in [self.Widgets.TabbedFrame, self.Widgets.Table]:
item.config(inactivebackground=value)
else:
self.warn("Error configuring %s: can't set inactivebackground", name)
Expand Down Expand Up @@ -4475,7 +4475,7 @@ def stopTab(self):
self.stopContainer()

#####################################
# Simple Grids
# Simple Tables
#####################################

def _getDbData(self, db, table):
Expand Down Expand Up @@ -4523,19 +4523,19 @@ def _getDbTables(self, db):
data.append(row[0])
return data

def replaceDbGrid(self, title, db, table):
def replaceDbTable(self, title, db, table):
pk, data = self._getDbData(db, table)
grid = self.widgetManager.get(self.Widgets.Grid, title)
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.db = db
grid.dbTable = table
grid.dbPK = data[0].index(pk)
self.setGridHeaders(title, data[0])
self.replaceAllGridRows(title, data[1:])
self.setTableHeaders(title, data[0])
self.replaceAllTableRows(title, data[1:])

def refreshDbGrid(self, title):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def refreshDbTable(self, title):
grid = self.widgetManager.get(self.Widgets.Table, title)
pk, data = self._getDbData(grid.db, grid.dbTable)
self.replaceAllGridRows(title, data[1:])
self.replaceAllTableRows(title, data[1:])

def refreshDbOptionBox(self, title, selected=None):
opt = self.widgetManager.get(self.Widgets.OptionBox, title)
Expand All @@ -4544,98 +4544,151 @@ def refreshDbOptionBox(self, title, selected=None):
if selected is not None:
self.setOptionBox(title, selected)

def addDbGrid(self, title, db, table, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
def addDbTable(self, title, db, table, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
actionHeading="Action", actionButton="Press", addButton="Add", showMenu=False):

pk, data = self._getDbData(db, table)
grid = self.addGrid(title, data, row, column, colspan, rowspan, action, addRow, actionHeading, actionButton, addButton, showMenu)
grid = self.addTable(title, data, row, column, colspan, rowspan, action, addRow, actionHeading, actionButton, addButton, showMenu)
grid.db = db
grid.dbTable = table
grid.dbPK = data[0].index(pk)
self.setGridHeaders(title, data[0])
self.replaceAllGridRows(title, data[1:])
self.setTableHeaders(title, data[0])
self.replaceAllTableRows(title, data[1:])

def addGrid(self, title, data, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
def addTable(self, title, data, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
actionHeading="Action", actionButton="Press", addButton="Add", showMenu=False):
self.widgetManager.verify(self.Widgets.Grid, title)
grid = SimpleGrid(self.getContainer(), title, data,
self.widgetManager.verify(self.Widgets.Table, title)
grid = SimpleTable(self.getContainer(), title, data,
action, addRow,
actionHeading, actionButton, addButton,
showMenu, buttonFont=self._buttonFont)
if not self.ttkFlag:
grid.config(font=self.gridFont, background=self._getContainerBg())
self._positionWidget(grid, row, column, colspan, rowspan, N+E+S+W)
self.widgetManager.add(self.Widgets.Grid, title, grid)
self.widgetManager.add(self.Widgets.Table, title, grid)
return grid

def getGridEntries(self, title):
return self.widgetManager.get(self.Widgets.Grid, title).getEntries()
def getTableEntries(self, title):
return self.widgetManager.get(self.Widgets.Table, title).getEntries()

def getGridSelectedCells(self, title):
return self.widgetManager.get(self.Widgets.Grid, title).getSelectedCells()
def getTableSelectedCells(self, title):
return self.widgetManager.get(self.Widgets.Table, title).getSelectedCells()

def selectGridRow(self, title, row, highlight=None):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def selectTableRow(self, title, row, highlight=None):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.selectRow(row, highlight)

def selectGridColumn(self, title, col, highlight=None):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def selectTableColumn(self, title, col, highlight=None):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.selectColumn(col, highlight)

def addGridRow(self, title, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def addTableRow(self, title, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.addRow(data)

def addGridRows(self, title, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def addTableRows(self, title, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.addRows(data)

def addGridColumn(self, title, columnNumber, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def addTableColumn(self, title, columnNumber, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.addColumn(columnNumber, data)

def deleteGridColumn(self, title, columnNumber):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def deleteTableColumn(self, title, columnNumber):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.deleteColumn(columnNumber)

def setGridHeaders(self, title, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def setTableHeaders(self, title, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.setHeaders(data)

def deleteGridRow(self, title, rowNum):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def deleteTableRow(self, title, rowNum):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.deleteRow(rowNum)

def deleteAllGridRows(self, title):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def deleteAllTableRows(self, title):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.deleteAllRows()

def sortGrid(self, title, columnNumber, descending=False):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def sortTable(self, title, columnNumber, descending=False):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.sort(columnNumber, descending)

def getGridRowCount(self, title):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def getTableRowCount(self, title):
grid = self.widgetManager.get(self.Widgets.Table, title)
return grid.getRowCount()

def getGridRow(self, title, rowNumber):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def getTableRow(self, title, rowNumber):
grid = self.widgetManager.get(self.Widgets.Table, title)
return grid.getRow(rowNumber)

def confGrid(self, title, field, value):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def confTable(self, title, field, value):
grid = self.widgetManager.get(self.Widgets.Table, title)
kw = {field:value}
grid.config(**kw)

def replaceGridRow(self, title, rowNum, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def replaceTableRow(self, title, rowNum, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.replaceRow(rowNum, data)

def replaceAllGridRows(self, title, data):
grid = self.widgetManager.get(self.Widgets.Grid, title)
def replaceAllTableRows(self, title, data):
grid = self.widgetManager.get(self.Widgets.Table, title)
grid.deleteAllRows()
grid.addRows(data)

# temporary deprecated functions
def addGrid(self, title, data, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
actionHeading="Action", actionButton="Press", addButton="Add", showMenu=False):
gui.warn("Deprecated - grids renamed to tables")
return self.addTable(title, data, row, column, colspan, rowspan, action, addRow, actionHeading, actionButton, addButton, showMenu)
def addDbGrid(self, title, db, table, row=None, column=0, colspan=0, rowspan=0, action=None, addRow=None,
actionHeading="Action", actionButton="Press", addButton="Add", showMenu=False):
gui.warn("Deprecated - grids renamed to tables")
return self.addDbTable(title, db, table, row, column, colspan, rowspan, action, addRow, actionHeading, actionButton, addButton, showMenu)
def replaceDbGrid(self, title, db, table):
gui.warn("Deprecated - grids renamed to tables")
return self.replaceDbTable(title, db, table)
def refreshDbGrid(self, title):
gui.warn("Deprecated - grids renamed to tables")
return self.refreshDbTable(title)
def selectGridRow(self, title, row, highlight=None):
gui.warn("Deprecated - grids renamed to tables")
return self.selectTableRow(title, row, highlight)
def getGridEntries(self, title):
gui.warn("Deprecated - grids renamed to tables")
return self.getTableEntries(title)
def getGridSelectedCells(self, title):
gui.warn("Deprecated - grids renamed to tables")
return self.getTableSelectedCells(title)
def selectGridColumn(self, title, col, highlight=None):
return self.selectTableColumn(title, col, highlight)
def addGridRow(self, title, data):
return self.addTableRow(title, data)
def addGridRows(self, title, data):
return self.addTableRows(title, data)
def addGridColumn(self, title, columnNumber, data):
return self.addTableColumn(title, columnNumber, data)
def deleteGridColumn(self, title, columnNumber):
return self.deleteTableColumn(title, columnNumber)
def setGridHeaders(self, title, data):
return self.setTableHeaders(title, data)
def deleteGridRow(self, title, rowNum):
return self.deleteTableRow(title, rowNum)
def deleteAllGridRows(self, title):
return self.deleteAllTableRows(title)
def sortGrid(self, title, columnNumber, descending=False):
return self.sortTable(title, columnNumber, descending)
def getGridRowCount(self, title):
return self.getTableRowCount(title)
def getGridRow(self, title, rowNumber):
return self.getTableRow(title, rowNumber)
def confGrid(self, title, field, value):
return self.confTable(title, field, value)
def replaceGridRow(self, title, rowNum, data):
return self.replaceTableRow(title, rowNum, data)
def replaceAllGridRows(self, title, data):
return self.replaceAllTableRows(title, data)

#####################################
# Paned Frames
#####################################
Expand Down Expand Up @@ -12207,7 +12260,7 @@ def __init__(self):


#####################################
# SimpleGrid Stuff
# SimpleTable Stuff
#####################################

class GridCell(Label, object):
Expand Down Expand Up @@ -12264,8 +12317,8 @@ def toggleSelection(self, event=None):
self.select()

# first row is used as a header
# SimpleGrid is a ScrollPane, where a Frame has been placed on the canvas - called GridContainer
class SimpleGrid(ScrollPane):
# SimpleTable is a ScrollPane, where a Frame has been placed on the canvas - called GridContainer
class SimpleTable(ScrollPane):

def __init__(self, parent, title, data, action=None, addRow=None,
actionHeading="Action", actionButton="Press",
Expand All @@ -12281,7 +12334,7 @@ def __init__(self, parent, title, data, action=None, addRow=None,
"selectedBg": "#D3D3D3",
}

super(SimpleGrid, self).__init__(parent, resize=True, **{})
super(SimpleTable, self).__init__(parent, resize=True, **{})

# actions
self.addRowEntries = addRow
Expand Down Expand Up @@ -12364,7 +12417,7 @@ def configure(self, cnf=None, **kw):
self.addButton = kw.pop("addbutton")
self.ent_but.config(text=self.addButton)

super(SimpleGrid, self).configure(**kw)
super(SimpleTable, self).configure(**kw)

def _configCells(self):
for row in self.cells:
Expand Down
16 changes: 8 additions & 8 deletions examples/issues/issue266.py
Expand Up @@ -91,31 +91,31 @@ def makeTable():

def changeDb():
table = app.optionBox("table")
app.replaceDbGrid("table", DB_NAME, table)
app.replaceDbTable("table", DB_NAME, table)
app.label("title", "DB tester: " + table)

def addRow(a):
table = app.optionBox("table")
values = app.getGridEntries("table")
values = app.getTableEntries("table")
sql = "INSERT INTO " + table + " VALUES ("
for v in values:
sql += "'" + v + "', "

sql = sql[:-2] + ")"
try:
runSql(sql)
app.refreshDbGrid("table")
app.refreshDbTable("table")
except:
app.errorBox("SQL Error", "Unable to add row, check id is unique and numeric")

def deleteRow(a):
app.selectGridRow("table", a, highlight=True)
app.selectTableRow("table", a, highlight=True)
if app.okBox("Delete Row " + str(a), "Are you sure you want to delete row " + str(a) + "?"):
table = app.optionBox("table")
sql = "DELETE FROM " + table + " WHERE id='" + str(a) + "'"
runSql(sql)
app.refreshDbGrid("table")
app.selectGridRow("table", a, highlight=False)
app.refreshDbTable("table")
app.selectTableRow("table", a, highlight=False)

# check the database exists, make if not
try:
Expand All @@ -124,10 +124,10 @@ def deleteRow(a):
setup()

# create the GUI
with gui("DB Demo", "800x600", stretch="column", bg="DarkOrange", log="trace", file="info.txt", sticky="NE") as app:
with gui("DB Demo", "800x600", stretch="column", bg="DarkOrange", log="trace", sticky="NE") as app:
app.addDbOptionBox("table", DB_NAME, change=changeDb)
app.label("title", "DB tester:", bg="orange", font={'size':20}, sticky="EW")
app.config(sticky="NEWS", stretch="both")
app.addDbGrid("table", DB_NAME, "projects", action=deleteRow, addRow=addRow, actionButton="Delete", showMenu=True)
app.addDbTable("table", DB_NAME, "projects", action=deleteRow, addRow=addRow, actionButton="Delete", showMenu=True)
app.setOptionBox("table", "projects")
app.button("NEW TABLE", showMakeTable, sticky="", stretch="column")

0 comments on commit e777440

Please sign in to comment.