Update of /cvsroot/ocemp/oceanempire/src/gui
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19182/src/gui
Modified Files:
GoodScreen.py Helpers.py MainGameScreen.py NewGameScreen.py
ScreenObject.py TransferScreen.py
Log Message:
Better abstraction, improved interfaces, locales are respected now.
Index: TransferScreen.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/TransferScreen.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- TransferScreen.py 29 Jan 2007 21:13:38 -0000 1.6
+++ TransferScreen.py 14 May 2007 10:06:07 -0000 1.7
@@ -28,9 +28,17 @@
from ocempgui.widgets import Table, ImageLabel
from ocempgui.widgets.Constants import *
from ScreenObject import ScreenObject
+from data import Ship
from GameEvent import *
import Helpers, Definitions
+SHIP_TO_HARBOUR = 0
+HARBOUR_TO_SHIP = 1
+SHIP_TO_WAREHOUSE = 2
+WAREHOUSE_TO_SHIP = 3
+WAREHOUSE_TO_HARBOUR = 4
+HARBOUR_TO_WAREHOUSE = 5
+
class TransferScreen (ScreenObject):
"""
"""
@@ -43,6 +51,10 @@
self._lbl_warehouse_load = None
self._lbl_oiltank_load = None
self._curindex = 0
+ self._transfer_state = -1
+ self._fromstorage = None
+ self._tostorage = None
+
self._create ()
def _create (self):
@@ -53,14 +65,14 @@
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Ship to harbour")),
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
+ _("Harbour to ship")),
+ (os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Ship to warehouse")),
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Warehouse to ship")),
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Warehouse to harbour")),
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
- _("Warehouse to harbour")),
- (os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Harbour to warehouse")),
(os.path.join (Definitions.IMAGEPATH, "dummy.png"),
_("Page back")),
@@ -80,19 +92,20 @@
buttons.append (self._lbl_tooltip)
# The offered goods.
- self._create_goods_tables ()
+ self._create_good_tables ()
frm_goods = HFrame ()
frm_goods.border = BORDER_FLAT
frm_goods.padding = 0
frm_goods.spacing = 150
frm_goods.children = self._tbl_goods
- self._frm_buttons.children = buttons
- self._frm_main.children = self._frm_top, frm_goods, self._frm_buttons
+ self.frm_buttons.children = buttons
+ self.frm_main.children = self.frm_top, frm_goods, self.frm_buttons
- def _create_goods_tables (self):
+ def _create_good_tables (self):
"""
"""
+ currency = Helpers.localeconv ("currency_symbol")
for i in xrange (2):
self._tbl_goods[i] = Table (7, 4)
self._tbl_goods[i].minsize = 300, 470
@@ -101,111 +114,166 @@
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"))
+ lbl_harbour = Label ("")
lbl_harbour.create_style()["font"]["size"] = 20
self._tbl_goods[i].add_child (0, 1, lbl_harbour)
- lbl_price = Label (_("Price ($/t)"))
+ lbl_price = Label (_("Price (%s/t)") % currency)
lbl_price.create_style()["font"]["size"] = 20
self._tbl_goods[i].add_child (0, 2, lbl_price)
- lbl_loaded = Label (_("Ship"))
+ lbl_loaded = Label ("")
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):
+ def _update_table_headers (self, index, label1, label2):
"""
"""
- town = self.data.towns[company.ships[ship]]
- btn = None
- cargo = ship.cargo
- self._tbl_goods[0].lock ()
- self._tbl_goods[1].lock ()
-
- table = self._tbl_goods[0]
- length = len (goods)
+ self._tbl_goods[index].grid[(0, 1)].text = label1
+ self._tbl_goods[index].grid[(0, 3)].text = label2
- 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]
+ def _clear_tables (self):
+ """
+ """
+ for table in self._tbl_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 ()
- # Good button.
- btn = ImageButton (os.path.join (Definitions.IMAGEPATH,
- "dummy.png"))
- Helpers.add_tooltip (btn, good.name, self._lbl_tooltip,
- self.renderer)
- table.add_child (i + 1, 0, btn)
+ def _create_good_row (self, table, offset, good, fromamount, toamount,
+ price, enabled):
+ """
+ """
+ # Good button.
+ btn = ImageButton (os.path.join (Definitions.IMAGEPATH, "dummy.png"))
+ # TODO: load handling.
- # 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))
+ Helpers.add_tooltip (btn, good.name, self._lbl_tooltip, self.renderer)
+ table.add_child (offset + 1, 0, btn)
- # 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.add_child (offset + 1, 1,
+ Label (Helpers.format ("%d",fromamount)))
+ table.add_child (offset + 1, 3, Label (Helpers.format ("%d", toamount)))
- table = self._tbl_goods[1]
+ if price >= 0:
+ table.add_child (offset + 1, 2,
+ Label (Helpers.format ("%.f", price)))
+ else:
+ table.add_child (offset + 1, 2, Label ("-"))
- 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 index in xrange (4):
+ table.grid[(offset + 1, index)].sensitive = enabled
- 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, good.name, self._lbl_tooltip,
- self.renderer)
- table.add_child (i + 1, 0, btn)
+ def _update_good_tables (self, index, goods, stfrom, stto):
+ """
+ """
+ self._clear_tables ()
- # 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))
+ length = len (goods)
+ good = None
- # 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]))
+ # Price wanted?
+ withprice = self._transfer_state in (SHIP_TO_HARBOUR, HARBOUR_TO_SHIP,
+ HARBOUR_TO_WAREHOUSE,
+ WAREHOUSE_TO_SHIP)
+ checkloadable = self._transfer_state in (SHIP_TO_HARBOUR,
+ HARBOUR_TO_SHIP,
+ SHIP_TO_WAREHOUSE,
+ WAREHOUSE_TO_SHIP)
+ tocheck = stfrom
+ getprice = stfrom
+ if self._transfer_state in (HARBOUR_TO_SHIP, WAREHOUSE_TO_SHIP):
+ tocheck = stto
+
+ if self._transfer_state in (SHIP_TO_HARBOUR, WAREHOUSE_TO_HARBOUR):
+ getprice = stto
+ elif self._transfer_state in (SHIP_TO_WAREHOUSE, WAREHOUSE_TO_SHIP):
+ getprice = None
+
+ loadable = False
+ famount = 0
+ toamount = 0
+
+ for table in self._tbl_goods:
+ for i in xrange (6):
+ if index >= length:
+ break
+
+ # (sortindex, good)
+ good = goods[index][1]
+
+ # Get the good amount.
+ if stfrom.storage.has_key (good):
+ famount = stfrom.storage[good].amount
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
+ famount = 0
+ if stto.storage.has_key (good):
+ toamount = stto.storage[good].amount
+ else:
+ toamount = 0
- self._tbl_goods[0].unlock ()
- self._tbl_goods[1].unlock ()
+ loadable = good.type in tocheck.loadable
+ if getprice:
+ self._create_good_row (table, i, good, famount, toamount,
+ getprice.storage[good].price,
+ loadable)
+ else:
+ self._create_good_row (table, i, good, famount, toamount,
+ -1, loadable)
+ index += 1
- def _set_transfer_state (self, company, event):
+ def _set_transfer_state (self, ttype, company, event):
"""
"""
- pass
+ if ttype == self._transfer_state:
+ return
+
+ self._transfer_state = ttype
+ goods = self._get_goods ()
+ self._curindex = 0
+ self._fromstorage = None
+ self._tostorage = None
+
+ self._tbl_goods[0].lock ()
+ self._tbl_goods[1].lock ()
+
+ if ttype == SHIP_TO_HARBOUR:
+ self._fromstorage = event.ship
+ self._tostorage = self.data.towns[company.ships[event.ship]]
+ self._update_table_headers (0, _("Ship"), _("Harbour"))
+ self._update_table_headers (1, _("Ship"), _("Harbour"))
+ elif ttype == HARBOUR_TO_SHIP:
+ self._fromstorage = self.data.towns[company.ships[event.ship]]
+ self._tostorage = event.ship
+ self._update_table_headers (0, _("Harbour"), _("Ship"))
+ self._update_table_headers (1, _("Harbour"), _("Ship"))
+ elif ttype == SHIP_TO_WAREHOUSE:
+ # TODO
+ self._update_table_headers (0, _("Ship"), _("Warehouse"))
+ self._update_table_headers (1, _("Ship"), _("Warehouse"))
+ elif ttype == WAREHOUSE_TO_SHIP:
+ self._update_table_headers (0, _("Warehouse"), _("Ship"))
+ self._update_table_headers (1, _("Warehouse"), _("Ship"))
+ elif ttype == WAREHOUSE_TO_HARBOUR:
+ # TODO
+ self._tostorage = self.data.towns[company.ships[event.ship]]
+ self._update_table_headers (0, _("Warehouse"), _("Harbour"))
+ self._update_table_headers (1, _("Warehouse"), _("Harbour"))
+ elif ttype == HARBOUR_TO_WAREHOUSE:
+ # TODO
+ self._fromstorage = self.data.towns[company.ships[event.ship]]
+ self._update_table_headers (0, _("Harbour"), _("Warehouse"))
+ self._update_table_headers (1, _("Harbour"), _("Warehouse"))
+ self._update_good_tables (self._curindex * 12, goods, self._fromstorage,
+ self._tostorage)
+
+ self._tbl_goods[0].unlock ()
+ self._tbl_goods[1].unlock ()
def _page_back (self, company, ship):
"""
@@ -213,22 +281,39 @@
if self._curindex == 0:
return
- goods = self.data.goods.values ()
- goods.sort (lambda (index, x), (index2, y): cmp (index, index2))
+ goods = self._get_goods ()
if self._curindex * 12 >= len (goods):
return
self._curindex -= 1
- self._update_good_tables (self._curindex * 12, goods, company, ship)
-
+
+ self._tbl_goods[0].lock ()
+ self._tbl_goods[1].lock ()
+
+ self._update_good_tables (self._curindex * 12, goods, self._fromstorage,
+ self._tostorage)
+ self._tbl_goods[0].unlock ()
+ self._tbl_goods[1].unlock ()
+
def _page_forward (self, company, ship):
"""
"""
- goods = self.data.goods.values ()
- goods.sort (lambda (index, x), (index2, y): cmp (index, index2))
- if (self._curindex + 1)* 12 >= len (goods):
+ goods = self._get_goods ()
+ if (self._curindex + 1) * 12 >= len (goods):
return
self._curindex += 1
- self._update_good_tables (self._curindex * 12, goods, company, ship)
+ self._tbl_goods[0].lock ()
+ self._tbl_goods[1].lock ()
+ self._update_good_tables (self._curindex * 12, goods, self._fromstorage,
+ self._tostorage)
+ self._tbl_goods[0].unlock ()
+ self._tbl_goods[1].unlock ()
+
+ def _get_goods (self):
+ """
+ """
+ goods = self.data.goods.values ()
+ goods.sort (lambda (index, x), (index2, y): cmp (index, index2))
+ return goods
def show (self, company, event):
"""
@@ -236,28 +321,27 @@
self.renderer.clear ()
ship = event.ship
- Helpers.set_title (self._frm_top.children[0], ship.name, ship.type)
+ self.set_title (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 \
- (SIG_CLICKED, self._set_transfer_state, company, event)
- self._frm_buttons.children[2].connect_signal \
- (SIG_CLICKED, self._set_transfer_state, company, event)
- self._frm_buttons.children[3].connect_signal \
- (SIG_CLICKED, self._set_transfer_state, company, event)
- self._frm_buttons.children[4].connect_signal \
- (SIG_CLICKED, self._set_transfer_state, company, event)
- 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, company, ship)
- self._frm_buttons.children[7].connect_signal \
- (SIG_CLICKED, self._page_forward, company, ship)
+ self.frm_buttons.children[0].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, SHIP_TO_HARBOUR, company, event)
+ self.frm_buttons.children[1].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, HARBOUR_TO_SHIP, company, event)
+ self.frm_buttons.children[2].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, SHIP_TO_WAREHOUSE, company, event)
+ self.frm_buttons.children[3].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, WAREHOUSE_TO_SHIP, company, event)
+ self.frm_buttons.children[4].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, WAREHOUSE_TO_HARBOUR, company, event)
+ self.frm_buttons.children[5].connect_signal (SIG_CLICKED,
+ self._set_transfer_state, HARBOUR_TO_WAREHOUSE, company, event)
+ self.frm_buttons.children[6].connect_signal \
+ (SIG_CLICKED, self._page_back, company, ship)
+ self.frm_buttons.children[7].connect_signal \
+ (SIG_CLICKED, self._page_forward, company, ship)
- goods = self.data.goods.values ()
- goods.sort (lambda (index, x), (index2, y): cmp (index, index2))
+ goods = self._get_goods ()
if self._curindex * 12 >= len (goods):
return
- self._update_good_tables (self._curindex * 12, goods, company, ship)
- self.renderer.add_widget (self._frm_main)
+ self._set_transfer_state (HARBOUR_TO_SHIP, company, event)
+ self.renderer.add_widget (self.frm_main)
Index: GoodScreen.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/GoodScreen.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- GoodScreen.py 28 Jan 2007 23:48:04 -0000 1.7
+++ GoodScreen.py 14 May 2007 10:06:06 -0000 1.8
@@ -73,8 +73,8 @@
buttons.append (btn)
buttons.append (lbl_tooltip)
- self._frm_buttons.children = buttons
- self._frm_main.children = self._frm_top, self._frm_buttons
+ self.frm_buttons.children = buttons
+ self.frm_main.children = self.frm_top, self.frm_buttons
def _create_ship_table (self, frame, company, ship):
"""
@@ -90,34 +90,41 @@
box_ships.add_child (frm_orders)
- frm_state = VFrame (Label (_("Goods turnover %s")
- % company.ships[ship]))
+ frm_state = VFrame \
+ (Label (_("Goods turnover %s") % company.ships[ship]))
frm_state.topleft = frm_orders.right + 10, frm_orders.top
frm_state.border = BORDER_RAISED
frm_state.align = ALIGN_LEFT
# Storage information.
- lbl_warehouse = Label (_("The warehouse capacity is %d tons.") % 0)
+ lbl_warehouse = Label (_("The warehouse capacity is %s tons.") %
+ Helpers.format ("%d", 0))
frm_state.add_child (lbl_warehouse)
- lbl_load = Label (_("There are %d tons of good in storage.") % 0)
+ lbl_load = Label (_("There are %s tons of good in storage.") %
+ Helpers.format ("%d", 0))
frm_state.add_child (lbl_load)
- lbl_price = Label (_("The price of 1 ton of warehouse is $ %.2f.") % 0)
+ lbl_price = Label (_("The price of 1 ton of warehouse is $ %s.") %
+ Helpers.format ("%.2f", 0))
frm_state.add_child (lbl_price)
- lbl_charge = Label (_("The daily storage charge is $ %.2f per day.")% 0)
+ lbl_charge = Label (_("The daily storage charge is $ %s per day.") %
+ Helpers.format ("%.2f", 0))
frm_state.add_child (lbl_charge)
# Oil tank information.
- lbl_oiltank = Label (_("The capacity of your oil tanks is %d tons.")% 0)
+ lbl_oiltank = Label (_("The capacity of your oil tanks is %s tons.") %
+ Helpers.format ("%d", 0))
frm_state.add_child (lbl_oiltank)
- lbl_load = Label (_("Your oil reserves amount is %d tons.") % 0)
+ lbl_load = Label (_("Your oil reserves amount is %s tons.") %
+ Helpers.format ("%d", 0))
frm_state.add_child (lbl_load)
- lbl_price = Label (_("The price of 1 ton tank is $ %.2f.") % 0)
+ lbl_price = Label (_("The price of 1 ton tank is $ %s.") %
+ Helpers.format ("%.2f", 0))
frm_state.add_child (lbl_price)
- lbl_charge = Label (_("The daily tank charge is $ %.2f per day.")% 0)
+ lbl_charge = Label (_("The daily tank charge is $ %s per day.") %
+ Helpers.format ("%.2f", 0))
frm_state.add_child (lbl_charge)
box_ships.add_child (frm_state)
-
frame.insert_child (1, box_ships)
def show (self, company, event):
@@ -125,16 +132,16 @@
"""
self.renderer.clear ()
- self._frm_buttons.children[0].connect_signal \
- (SIG_CLICKED, self.transferscreen.show, company, event)
- self._frm_buttons.children[1].connect_signal \
- (SIG_CLICKED, self.warehousescreen.show, company, event)
- self._frm_buttons.children[2].connect_signal \
- (SIG_CLICKED, self.oiltankscreen.show, company, event)
- self._frm_buttons.children[3].connect_signal \
- (SIG_CLICKED, self.freightdeliveryscreen.show, company, event)
+ self.frm_buttons.children[0].connect_signal \
+ (SIG_CLICKED, self.transferscreen.show, company, event)
+ self.frm_buttons.children[1].connect_signal \
+ (SIG_CLICKED, self.warehousescreen.show, company, event)
+ self.frm_buttons.children[2].connect_signal \
+ (SIG_CLICKED, self.oiltankscreen.show, company, event)
+ self.frm_buttons.children[3].connect_signal \
+ (SIG_CLICKED, self.freightdeliveryscreen.show, company, event)
ship = event.ship
- Helpers.set_title (self._frm_top.children[0], ship.name, ship.type)
- self._create_ship_table (self._frm_main, company, ship)
- self.renderer.add_widget (self._frm_main)
+ self.set_title (ship.name, ship.type)
+ self._create_ship_table (self.frm_main, company, ship)
+ self.renderer.add_widget (self.frm_main)
Index: Helpers.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/Helpers.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Helpers.py 28 Jan 2007 17:47:55 -0000 1.5
+++ Helpers.py 14 May 2007 10:06:07 -0000 1.6
@@ -24,8 +24,8 @@
# POSSIBILITY OF SUCH DAMAGE.
import pygame
-from ocempgui.widgets import GenericDialog, Button, VFrame, HFrame, Label
-from ocempgui.widgets import TooltipWindow
+import locale
+from ocempgui.widgets import GenericDialog, TooltipWindow, Button
from ocempgui.widgets.Constants import *
import Definitions
@@ -42,28 +42,6 @@
dialog.padding = 10
dialog.main.spacing = 10
return dialog
-
-def create_screen_components ():
- """
- """
- frm_main = VFrame ()
- frm_main.border = BORDER_NONE
- frm_main.spacing = 10
-
- # Top frame with the company information.
- frm_top = HFrame ()
- frm_top.minsize = 796, frm_top.minsize[1]
- frm_top.add_child (Label (""))
-
- # Action buttons frame.
- frm_buttons = HFrame ()
- frm_buttons.minsize = 796, frm_buttons.minsize[1]
- frm_buttons.spacing = 10
-
- return frm_main, frm_top, frm_buttons
-
-def set_title (label, text1, text2):
- label.text = "%s - %s" % (text1, text2)
def add_tooltip (widget, tooltip, label, renderer):
"""add_tooltip (...) -> None
@@ -89,3 +67,13 @@
Destroys the global tooltip, if it exists.
"""
label.text = ""
+
+def localeconv (name):
+ """
+ """
+ return locale.localeconv()[name]
+
+def format (format, data, grouping=True):
+ """
+ """
+ return locale.format (format, data, grouping)
Index: MainGameScreen.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/MainGameScreen.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- MainGameScreen.py 28 Jan 2007 17:47:55 -0000 1.6
+++ MainGameScreen.py 14 May 2007 10:06:07 -0000 1.7
@@ -23,9 +23,8 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-import os, locale
-from ocempgui.widgets import GenericDialog, Button, VFrame, HFrame, Table, Label
-from ocempgui.widgets import ImageButton, ImageLabel, Bin
+import os
+from ocempgui.widgets import *
from ocempgui.widgets.Constants import *
from ScreenObject import ScreenObject
from GoodScreen import GoodScreen
@@ -33,7 +32,7 @@
from OfficeScreen import OfficeScreen
from PhoneScreen import PhoneScreen
from ResourceScreen import ResourceScreen
-import Helpers, Definitions
+import Helpers, Definitions, GameEvent
class MainGameScreen (ScreenObject):
"""
@@ -43,6 +42,7 @@
self._lbl_moneyvalue = None
self._lbl_shipvalue = None
self._lbl_loanvalue = None
+ self._frm_actions = None
self._create ()
self.goodscreen = GoodScreen (renderer, data, manager)
@@ -78,8 +78,8 @@
buttons.append (btn)
buttons.append (lbl_tooltip)
- self._frm_buttons.children = buttons
- self._frm_main.children = self._frm_top, tbl_contents, self._frm_buttons
+ self.frm_buttons.children = buttons
+ self.frm_main.children = self.frm_top, tbl_contents, self.frm_buttons
def _create_company_frames (self, table):
"""
@@ -110,9 +110,9 @@
table.add_child (0, 1, frm_stats)
# Action stats.
- frm_actions = VFrame ()
- frm_actions.minsize = width, height
- table.add_child (1, 0, frm_actions)
+ self._frm_actions = VFrame ()
+ self._frm_actions.minsize = width, height
+ table.add_child (1, 0, self._frm_actions)
# World map.
lbl_map = ImageLabel (os.path.join (Definitions.IMAGEPATH, "dummy.png"))
@@ -149,30 +149,81 @@
frame.add_child (tbl_stats)
+ def _create_ship_stats (self, company, event):
+ """
+ """
+ ship = event.ship
+
+ lbl_ship = Label ("%s %s" % (ship.type, ship.shipdata.name))
+
+ tbl_stats = Table (5, 2)
+ tbl_stats.spacing = 10
+ tbl_stats.set_column_align (0, ALIGN_LEFT)
+ tbl_stats.set_column_align (1, ALIGN_LEFT)
+
+ # Ship load
+ lbl_load = Label (_("Maximum Load:"))
+ lbl_load_val = Label \
+ ("%s t" % Helpers.format ("%d", ship.shipdata.maxcapacity))
+ tbl_stats.add_child (0, 0, lbl_load)
+ tbl_stats.add_child (0, 1, lbl_load_val)
+
+ lbl_curload = Label (_("Current Load:"))
+ lbl_curload_val = Label \
+ ("%s t" % Helpers.format ("%d", ship.get_load_amount ()))
+ tbl_stats.add_child (1, 0, lbl_curload)
+ tbl_stats.add_child (1, 1, lbl_curload_val)
+
+ # Fuel load.
+ lbl_tank = Label (_("Tank Capacity:"))
+ lbl_tank_val = Label \
+ ("%s t" % Helpers.format ("%d", ship.shipdata.maxfuel))
+ tbl_stats.add_child (2, 0, lbl_tank)
+ tbl_stats.add_child (2, 1, lbl_tank_val)
+
+ # State
+ lbl_state = Label (_("Condition of Ship:"))
+ lbl_state_val = Label (Helpers.format ("%.2f t", ship.state))
+ tbl_stats.add_child (3, 0, lbl_state)
+ tbl_stats.add_child (3, 1, lbl_state_val)
+
+ # Berthing
+ currency = Helpers.localeconv ("currency_symbol")
+ lbl_charge = Label (_("Berthing charges:"))
+ lbl_charge_val = Label \
+ ("%s %s per day" % (currency, Helpers.format ("%.2f", 0)))
+ tbl_stats.add_child (4, 0, lbl_charge)
+ tbl_stats.add_child (4, 1, lbl_charge_val)
+
+ self._frm_actions.align = ALIGN_LEFT
+ self._frm_actions.add_child (lbl_ship, tbl_stats)
+
def show (self, company, event):
"""
"""
self.renderer.clear ()
- self._frm_buttons.children[0].connect_signal \
- (SIG_CLICKED, self.goodscreen.show, company, event)
- self._frm_buttons.children[1].connect_signal \
- (SIG_CLICKED, self.mapscreen.show, company, event)
- self._frm_buttons.children[2].connect_signal \
- (SIG_CLICKED, self.officescreen.show, company, event)
- self._frm_buttons.children[3].connect_signal \
- (SIG_CLICKED, self.resourcescreen.show, company, event)
+ self.frm_buttons.children[0].connect_signal \
+ (SIG_CLICKED, self.goodscreen.show, company, event)
+ self.frm_buttons.children[1].connect_signal \
+ (SIG_CLICKED, self.mapscreen.show, company, event)
+ self.frm_buttons.children[2].connect_signal \
+ (SIG_CLICKED, self.officescreen.show, company, event)
+ self.frm_buttons.children[3].connect_signal \
+ (SIG_CLICKED, self.resourcescreen.show, company, event)
- Helpers.set_title (self._frm_top.children[0], company.name,
- company.player.name)
+ self.set_title (company.name, company.player.name)
- value = locale.format ("%.2f", company.calculate_total_loans (), True)
- self._lbl_loanvalue.text = \
- ("%s %s" % (locale.localeconv()["int_curr_symbol"], value))
- value = locale.format ("%.2f", company.money, True)
- self._lbl_moneyvalue.text = \
- "%s %s" % (locale.localeconv()["int_curr_symbol"], value)
- self._lbl_shipvalue.text = \
- locale.format ("%d", len (company.ships), True)
+ currency = Helpers.localeconv ("currency_symbol")
+
+ value = Helpers.format ("%.2f", company.get_total_loans ())
+ self._lbl_loanvalue.text = "%s %s" % (currency, value)
+ value = Helpers.format ("%.2f", company.money)
+ self._lbl_moneyvalue.text = "%s %s" % (currency, value)
+ self._lbl_shipvalue.text = Helpers.format ("%d", len (company.ships))
- self.renderer.add_widget (self._frm_main)
+ # Create event related stats.
+ if isinstance (event, GameEvent.ShipEvent):
+ self._create_ship_stats (company, event)
+
+ self.renderer.add_widget (self.frm_main)
Index: ScreenObject.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/ScreenObject.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ScreenObject.py 27 Jan 2007 21:13:50 -0000 1.3
+++ ScreenObject.py 14 May 2007 10:06:07 -0000 1.4
@@ -23,7 +23,8 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-import Helpers
+from ocempgui.widgets import Button, VFrame, HFrame, Label, Alignment
+from ocempgui.widgets.Constants import *
class ScreenObject (object):
"""
@@ -32,14 +33,47 @@
self.data = data
self.renderer = renderer
self.manager = manager
- self._frm_main = None
- self._frm_top = None
- self._frm_buttons = None
+ self.frm_main = None
+ self.frm_top = None
+ self.frm_buttons = None
+ self.lbl_topleft = None
+ self.lbl_topright = None
+ self._create_components ()
- self._frm_main, self._frm_top, self._frm_buttons = \
- Helpers.create_screen_components ()
+ def _create_components (self):
+ """
+ """
+ self.frm_main = VFrame ()
+ self.frm_main.border = BORDER_NONE
+ self.frm_main.spacing = 10
+
+ # Top frame with the company information.
+ self.frm_top = HFrame ()
+ align_left = Alignment (100, self.frm_top.minsize[1])
+ align_left.align = ALIGN_LEFT
+ align_right = Alignment (100, self.frm_top.minsize[1])
+ align_right.align = ALIGN_RIGHT
+ self.lbl_topright = Label ("")
+ self.lbl_topleft = Label ("")
+
+ align_left.child = self.lbl_topleft
+ align_right.child = self.lbl_topright
+
+ self.frm_top.minsize = 796, self.frm_top.minsize[1]
+ self.frm_top.children = align_left, align_right
+
+ # Action buttons frame.
+ self.frm_buttons = HFrame ()
+ self.frm_buttons.minsize = 796, self.frm_buttons.minsize[1]
+ self.frm_buttons.spacing = 10
+
+ def set_title (self, text1, text2):
+ """
+ """
+ self.lbl_topleft.text = "%s - %s" % (text1, text2)
def show (self, company, event):
"""
"""
raise NotImplementedError
+
Index: NewGameScreen.py
===================================================================
RCS file: /cvsroot/ocemp/oceanempire/src/gui/NewGameScreen.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- NewGameScreen.py 29 Jan 2007 10:55:59 -0000 1.3
+++ NewGameScreen.py 14 May 2007 10:06:07 -0000 1.4
@@ -97,6 +97,7 @@
button_image.border = BORDER_ETCHED_IN
button_image.text = company.name
button_image.minsize = 150, 40
+ button_image.maxsize = 150, 40
button_image.connect_signal (SIG_CLICKED, self._change_company,
button_image, company);
table.add_child (i + 1, 0, button_image)
@@ -104,6 +105,7 @@
button_player = Button (company.player.name)
button_player.border = BORDER_ETCHED_IN
button_player.minsize = 150, 40
+ button_player.maxsize = 150, 40
button_player.connect_signal (SIG_CLICKED, self._change_player_name,
button_player, company.player)
table.add_child (i + 1, 1, button_player)
@@ -111,6 +113,7 @@
button_harbour = Button (company.harbour)
button_harbour.border = BORDER_ETCHED_IN
button_harbour.minsize = 150, 40
+ button_harbour.maxsize = 150, 40
button_harbour.connect_signal (SIG_CLICKED, self._change_harbour,
button_harbour, company)
table.add_child (i + 1, 2, button_harbour)
@@ -118,6 +121,7 @@
button_type = ImageButton ()
button_type.border = BORDER_NONE
button_type.minsize = 100, 40
+ button_type.maxsize = 100, 40
self._update_player_control (company.player, button_type)
button_type.connect_signal (SIG_CLICKED, self._change_player_type,
button_type, company.player)
|