[Ocemp-CVS] oceanempire/src/gui NewGameScreen.py, 1.2, 1.3 TransferScreen.py, 1.4, 1.5
Status: Beta
Brought to you by:
marcusva
From: Marcus v. A. <mar...@us...> - 2007-01-29 10:56:03
|
Update of /cvsroot/ocemp/oceanempire/src/gui In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18584/src/gui Modified Files: NewGameScreen.py TransferScreen.py Log Message: Added scrolling support to the transfer screen. Index: TransferScreen.py =================================================================== RCS file: /cvsroot/ocemp/oceanempire/src/gui/TransferScreen.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- TransferScreen.py 28 Jan 2007 23:48:04 -0000 1.4 +++ TransferScreen.py 29 Jan 2007 10:55:59 -0000 1.5 @@ -24,7 +24,7 @@ # POSSIBILITY OF SUCH DAMAGE. import os -from ocempgui.widgets import ImageButton, Label, Box, VFrame, Table +from ocempgui.widgets import ImageButton, Label, Box, VFrame, HFrame, Table from ocempgui.widgets.Constants import * from ScreenObject import ScreenObject from GameEvent import * @@ -35,7 +35,7 @@ """ def __init__ (self, renderer, data, manager): ScreenObject.__init__ (self, renderer, data, manager) - self._tbl_goods = None + self._tbl_goods = [None, None] self._lbl_tooltip = None self._curindex = 0 self._create () @@ -73,111 +73,167 @@ buttons.append (btn) buttons.append (self._lbl_tooltip) - self._create_goods_table () + self._create_goods_tables () + frm_goods = HFrame () + frm_goods.border = BORDER_NONE + frm_goods.padding = 0 + frm_goods.spacing = 120 + frm_goods.children = self._tbl_goods self._frm_buttons.children = buttons - self._frm_main.children = self._frm_top, self._tbl_goods, \ - self._frm_buttons + self._frm_main.children = self._frm_top, frm_goods, self._frm_buttons - def _create_goods_table (self): + def _create_goods_tables (self): """ """ - self._tbl_goods = Table (8, 8) - self._tbl_goods.minsize = 796, 470 - self._tbl_goods.padding = 0 - self._tbl_goods.spacing = 10 - self._tbl_goods.set_column_align (1, ALIGN_RIGHT) - self._tbl_goods.set_column_align (2, ALIGN_RIGHT) - self._tbl_goods.set_column_align (3, ALIGN_RIGHT) - self._tbl_goods.set_column_align (4, ALIGN_RIGHT) - self._tbl_goods.set_column_align (6, ALIGN_RIGHT) - self._tbl_goods.set_column_align (7, ALIGN_RIGHT) + for i in xrange (2): + self._tbl_goods[i] = Table (8, 4) + self._tbl_goods[i].minsize = 300, 470 + self._tbl_goods[i].padding = 0 + self._tbl_goods[i].spacing = 10 + self._tbl_goods[i].set_column_align (1, ALIGN_RIGHT) + self._tbl_goods[i].set_column_align (2, ALIGN_RIGHT) + self._tbl_goods[i].set_column_align (3, ALIGN_RIGHT) - # Head line - lbl_harbour = Label (_("Harbour")) - self._tbl_goods.add_child (0, 1, lbl_harbour) - lbl_harbour = Label (_("Harbour")) - self._tbl_goods.add_child (0, 5, lbl_harbour) - lbl_price = Label (_("Price ($/t)")) - self._tbl_goods.add_child (0, 2, lbl_price) - lbl_price = Label (_("Price ($/t)")) - self._tbl_goods.add_child (0, 6, lbl_price) - lbl_loaded = Label (_("Ship")) - self._tbl_goods.add_child (0, 3, lbl_loaded) - lbl_loaded = Label (_("Ship")) - self._tbl_goods.add_child (0, 7, lbl_loaded) + # Head line. + lbl_harbour = Label (_("Harbour")) + lbl_harbour.create_style()["font"]["size"] = 20 + self._tbl_goods[i].add_child (0, 1, lbl_harbour) - def _init_table (self, company, ship): + lbl_price = Label (_("Price ($/t)")) + lbl_price.create_style()["font"]["size"] = 20 + self._tbl_goods[i].add_child (0, 2, lbl_price) + + lbl_loaded = Label (_("Ship")) + lbl_loaded.create_style()["font"]["size"] = 20 + self._tbl_goods[i].add_child (0, 3, lbl_loaded) + + def _update_good_tables (self, start, goods, company, ship): """ """ - goods = self.data.goods.values () - goods.sort (lambda (index, x), (index2, y): cmp (index, index2)) - town = self.data.towns[company.ships[ship]] - table = self._tbl_goods btn = None cargo = ship.cargo - table.lock () + self._tbl_goods[0].lock () + self._tbl_goods[1].lock () + + table = self._tbl_goods[0] + length = len (goods) + + for i in range (table.rows)[1:table.rows]: + for j in xrange (table.columns): + widget = table.grid[(i, j)] + if widget: + table.remove_child (widget) + widget.destroy () + for i in xrange (6): + if start >= length: + break + good = goods[start][1] + # Good button. btn = ImageButton (os.path.join (Definitions.IMAGEPATH, "dummy.png")) - Helpers.add_tooltip (btn, goods[i][1].name, self._lbl_tooltip, + Helpers.add_tooltip (btn, good.name, self._lbl_tooltip, self.renderer) table.add_child (i + 1, 0, btn) + # Amount in harbour. + amount, price = town.goods[good] + table.add_child (i + 1, 1, Label ("%d" % amount)) + table.add_child (i + 1, 2, Label ("%d" % price)) + + # Loaded and loadable goods. + if good.type in ship.loadable: + if cargo.has_key (good): + table.add_child (i + 1, 3, Label ("%d" % cargo[good])) + else: + table.add_child (i + 1, 3, Label ("0")) + else: + table.grid[(i + 1, 0)].sensitive = False + table.add_child (i + 1, 3, Label ("-")) + start += 1 + + table = self._tbl_goods[1] + + for i in range (table.rows)[1:table.rows]: + for j in xrange (table.columns): + widget = table.grid[(i, j)] + if widget: + table.remove_child (widget) + widget.destroy () + + + for i in xrange (6): + if start >= length: + break + good = goods[start][1] + # Good button. btn = ImageButton (os.path.join (Definitions.IMAGEPATH, "dummy.png")) - Helpers.add_tooltip (btn, goods[i + 6][1].name, self._lbl_tooltip, + Helpers.add_tooltip (btn, good.name, self._lbl_tooltip, self.renderer) - table.add_child (i + 1, 4, btn) + table.add_child (i + 1, 0, btn) # Amount in harbour. - amount, price = town.goods[goods[i][1]] + amount, price = town.goods[good] table.add_child (i + 1, 1, Label ("%d" % amount)) table.add_child (i + 1, 2, Label ("%d" % price)) - amount, price = town.goods[goods[i + 6][1]] - table.add_child (i + 1, 5, Label ("%d" % amount)) - table.add_child (i + 1, 6, Label ("%d" % price)) - - # Loaded. - if cargo.has_key (goods[i][1]): - table.add_child (i + 1, 3, Label ("%d" % cargo[goods[i][1]])) - else: - table.add_child (i + 1, 3, Label ("0")) - if cargo.has_key (goods[i + 6][1]): - table.add_child (i + 1, 7, Label ("%d" % cargo[goods[i+6][1]])) + # Loaded and loadable goods. + if good.type in ship.loadable: + if cargo.has_key (good): + table.add_child (i + 1, 3, Label ("%d" % cargo[good])) + else: + table.add_child (i + 1, 3, Label ("0")) else: - table.add_child (i + 1, 7, Label ("0")) - - - table.unlock () + table.grid[(i + 1, 0)].sensitive = False + table.add_child (i + 1, 3, Label ("-")) + start += 1 + + self._tbl_goods[0].unlock () + self._tbl_goods[1].unlock () def _set_transfer_state (self, company, event): """ """ pass - def _page_back (self): + def _page_back (self, company, ship): """ """ - keys = self.data.goods.keys () - keys.sort (lambda (index, x), (index2, y): cmp (index, index2)) - print keys + if self._curindex == 0: + return - def _page_forward (self): + goods = self.data.goods.values () + goods.sort (lambda (index, x), (index2, y): cmp (index, index2)) + if self._curindex * 12 >= len (goods): + return + + self._curindex -= 1 + self._update_good_tables (self._curindex * 12, goods, company, ship) + + def _page_forward (self, company, ship): """ """ - keys = self.data.goods.keys () - keys.sort (lambda (index, x), (index2, y): cmp (index, index2)) - print keys + goods = self.data.goods.values () + goods.sort (lambda (index, x), (index2, y): cmp (index, index2)) + print (self._curindex + 1) * 12, len (goods) + if (self._curindex + 1)* 12 >= len (goods): + return + self._curindex += 1 + + self._update_good_tables (self._curindex * 12, goods, company, ship) def show (self, company, event): """ """ self.renderer.clear () + ship = event.ship + Helpers.set_title (self._frm_top.children[0], ship.name, ship.type) + self._frm_buttons.children[0].connect_signal \ (SIG_CLICKED, self._set_transfer_state, company, event) self._frm_buttons.children[1].connect_signal \ @@ -191,12 +247,13 @@ self._frm_buttons.children[5].connect_signal \ (SIG_CLICKED, self._set_transfer_state, company, event) self._frm_buttons.children[6].connect_signal \ - (SIG_CLICKED, self._page_back) + (SIG_CLICKED, self._page_back, company, ship) self._frm_buttons.children[7].connect_signal \ - (SIG_CLICKED, self._page_forward) - - ship = event.ship - Helpers.set_title (self._frm_top.children[0], ship.name, ship.type) + (SIG_CLICKED, self._page_forward, company, ship) - self._init_table (company, ship) + goods = self.data.goods.values () + goods.sort (lambda (index, x), (index2, y): cmp (index, index2)) + if self._curindex * 12 >= len (goods): + return + self._update_good_tables (self._curindex * 12, goods, company, ship) self.renderer.add_widget (self._frm_main) Index: NewGameScreen.py =================================================================== RCS file: /cvsroot/ocemp/oceanempire/src/gui/NewGameScreen.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- NewGameScreen.py 28 Jan 2007 17:47:55 -0000 1.2 +++ NewGameScreen.py 29 Jan 2007 10:55:59 -0000 1.3 @@ -46,9 +46,10 @@ Creates the new game screen UI. """ self.renderer.clear () - + # Game settings frame. frm_newgame = VFrame (Label (_("New Game"))) + frm_newgame.lock () frm_newgame.border = BORDER_NONE frm_newgame.widget.create_style ()["font"]["size"] = 24 frm_newgame.topleft = 5, 5 @@ -56,6 +57,7 @@ self.renderer.add_widget (frm_newgame) self._create_company_table (frm_newgame) + frm_newgame.unlock () tbl_buttons = Table (1, 2) tbl_buttons.topleft = 5, 550 |