Mercurial > pyarq-presupuestos
comparison Gtk/gui.py @ 5:6502bfdaa84d
update import durus database
| author | Miguel Ángel Bárcena Rodríguez <miguelangel@obraencurso.es> |
|---|---|
| date | Sat, 06 Nov 2010 21:30:33 +0100 |
| parents | 4e976a99efb9 |
| children | 2fc6b47dbe70 |
comparison
equal
deleted
inserted
replaced
| 4:4e976a99efb9 | 5:6502bfdaa84d |
|---|---|
| 68 else: | 68 else: |
| 69 print utils.mapping(_("The icon file does not exist. '$1'"), | 69 print utils.mapping(_("The icon file does not exist. '$1'"), |
| 70 (globals.getAppPath("ICON"),)) | 70 (globals.getAppPath("ICON"),)) |
| 71 | 71 |
| 72 # Autodetect desktop | 72 # Autodetect desktop |
| 73 if globals.desktop["autodetect"] is True: | 73 if globals.desktop["autodetect"]: |
| 74 openwith.autodetect_desktop() | 74 openwith.autodetect_desktop() |
| 75 print utils.mapping(_("pyArq-Presupuestos running on $1"), | 75 print utils.mapping(_("pyArq-Presupuestos running on $1"), |
| 76 (globals.desktop["desktop"],)) | 76 (globals.desktop["desktop"],)) |
| 77 | 77 |
| 78 class MainWindow(object): | 78 class MainWindow(object): |
| 203 | 203 |
| 204 budget: "base.Budget" object | 204 budget: "base.Budget" object |
| 205 | 205 |
| 206 Appends a budget in the "__budget_list" | 206 Appends a budget in the "__budget_list" |
| 207 """ | 207 """ |
| 208 if budget != None: | 208 if not budget is None: |
| 209 _budget = budget | 209 _budget = budget |
| 210 if _budget in self.__budget_temp_list: | 210 if _budget in self.__budget_temp_list: |
| 211 self.__budget_temp_list.remove(_budget) | 211 self.__budget_temp_list.remove(_budget) |
| 212 self.__budget_list.append(_budget) | 212 self.__budget_list.append(_budget) |
| 213 | 213 |
| 227 def _menuitemImportFiebdc(self, widget): | 227 def _menuitemImportFiebdc(self, widget): |
| 228 """def _menuitemImportFiebdc(self, widget) | 228 """def _menuitemImportFiebdc(self, widget) |
| 229 | 229 |
| 230 widget: the widget where the event is emitted from | 230 widget: the widget where the event is emitted from |
| 231 Callback to open a budget file. | 231 Callback to open a budget file. |
| 232 Inits a timeout to test if a budgets is appended to "__budget_list" | |
| 233 calling _testBudgetList method if it is true. | |
| 234 | 232 |
| 235 Creates and shows a window to open a budget file. | 233 Creates and shows a window to open a budget file. |
| 236 """ | 234 """ |
| 237 _budget = base.Budget() | 235 _budget = base.Budget() |
| 238 self.__budget_temp_list.append(_budget) | 236 self.__budget_temp_list.append(_budget) |
| 247 def _menuitemImportPriceDatabase(self, widget): | 245 def _menuitemImportPriceDatabase(self, widget): |
| 248 """def _menuitemImportPriceDatabase(self, widget) | 246 """def _menuitemImportPriceDatabase(self, widget) |
| 249 | 247 |
| 250 widget: the widget where the event is emitted from | 248 widget: the widget where the event is emitted from |
| 251 Callback to open a budget file. | 249 Callback to open a budget file. |
| 252 Inits a timeout to test if a budgets is appended to "__budget_list" | 250 |
| 253 calling _testBudgetList method if it is true. | 251 Creates and shows a window to open a price database file. |
| 254 | |
| 255 Creates and shows a window to open a budget file. | |
| 256 """ | 252 """ |
| 257 _budget = base.Budget() | 253 _budget = base.Budget() |
| 258 self.__budget_temp_list.append(_budget) | 254 self.__budget_temp_list.append(_budget) |
| 259 _budget_file = fiebdc.Read() | 255 _budget_file = fiebdc.Read() |
| 260 _read_method = _budget_file.readFile | 256 _read_method = _budget_file.readFile |
| 261 _filename = "file" | 257 _filename = "file" |
| 262 _filetype = "basedate" | 258 _filetype = "database" |
| 263 _exit_method = _budget_file.cancel | 259 _exit_method = _budget_file.cancel |
| 264 _file_window = importFiebdc.FileSelectionWindow(self, | 260 _file_window = importFiebdc.FileSelectionWindow(self, |
| 265 _read_method, _budget, _filename, _exit_method, _filetype) | 261 _read_method, _budget, _filename, _exit_method, _filetype) |
| 266 | 262 |
| 267 def _menuitemOpenPriceDatabase(self, widget): | 263 def _menuitemOpenPriceDatabase(self, widget): |
| 268 """def _menuitemOpenPriceDatabase(self, widget) | 264 """def _menuitemOpenPriceDatabase(self, widget) |
| 269 | 265 |
| 270 widget: the widget where the event is emitted from | 266 widget: the widget where the event is emitted from |
| 271 Callback to open a budget file. | 267 Callback to open a price database from a durus file. |
| 272 | 268 |
| 273 Creates and shows a window to open a budget file. | 269 Creates and shows a window to open a durus database |
| 274 """ | 270 """ |
| 275 _openDialog = OpenDurusDatabase(self._OpenDurusDatabase) | 271 _budget = None |
| 276 _openDialog.main() | 272 self.__budget_temp_list.append(_budget) |
| 277 | 273 _budget_file = durusdatabase.Read() |
| 278 def _OpenDurusDatabase(self, file): | 274 _read_method = _budget_file.readFile |
| 279 """def _menuitemImportFiebdc(self, widget) | 275 _filename = "file" |
| 280 | 276 _filetype = "durus" |
| 281 widget: the widget where the event is emitted from | 277 _exit_method = _budget_file.cancel |
| 282 | 278 _file_window = importFiebdc.FileSelectionWindow(self, |
| 283 Callback to open a budget file from a durus file. | 279 _read_method, _budget, _filename, _exit_method, _filetype) |
| 284 """ | |
| 285 _file = file | |
| 286 print utils.mapping(_("Loading file: $1:"), (_file,)) | |
| 287 _time = time.time() | |
| 288 _durus_file = durusdatabase.DurusFile(_file,False) | |
| 289 _budget = _durus_file.getBudget() | |
| 290 _durus_file.close() | |
| 291 print utils.mapping(("Loadig time: $1 seconds"), | |
| 292 (("%.2f" %(time.time()-_time)),)) | |
| 293 self.__budget_list.append(_budget) | |
| 294 _page = Page(_budget) | |
| 295 self.__notebook.append_page(_page.widget, _page.title) | |
| 296 self.__page_list.append(_page) | |
| 297 | 280 |
| 298 def _menuitemClose(self, widget): | 281 def _menuitemClose(self, widget): |
| 299 """def _menuitemClose(self, widget) | 282 """def _menuitemClose(self, widget) |
| 300 | 283 |
| 301 widget: the widget where the event is emitted from | 284 widget: the widget where the event is emitted from |
| 303 Callback to close a budget file. | 286 Callback to close a budget file. |
| 304 """ | 287 """ |
| 305 _page_num = self.__notebook.get_current_page() | 288 _page_num = self.__notebook.get_current_page() |
| 306 if _page_num == -1: | 289 if _page_num == -1: |
| 307 return | 290 return |
| 308 _page = self.__page_list.pop(_page_num) | 291 #_page = self.__page_list.pop(_page_num) |
| 292 _page = self.__page_list[_page_num] | |
| 309 if isinstance(_page, Page): | 293 if isinstance(_page, Page): |
| 310 #not loading budget | 294 #not loading budget |
| 311 self.__budget_list.pop(_page_num) | 295 self.__budget_list.pop(_page_num) |
| 312 _page.clear() | 296 if isinstance(_page, EmptyPage) and _page.filetype == "durus": |
| 313 self.__notebook.remove_page(_page_num) | 297 print _("Cancel reading Durus database has not been implemented.") |
| 298 else: | |
| 299 self.__page_list.pop(_page_num) | |
| 300 _page.clear() | |
| 301 self.__notebook.remove_page(_page_num) | |
| 314 | 302 |
| 315 def _delete_event(self, widget, event): | 303 def _delete_event(self, widget, event): |
| 316 """_delete_event(self, widget, event) | 304 """_delete_event(self, widget, event) |
| 317 | 305 |
| 318 widget: the widget where the event is emitted from | 306 widget: the widget where the event is emitted from |
| 403 self.__widget.pack_start(_align, True, True, 0) | 391 self.__widget.pack_start(_align, True, True, 0) |
| 404 _progressframe = gtk.Frame() | 392 _progressframe = gtk.Frame() |
| 405 _progressframe.set_shadow_type(gtk.SHADOW_IN) | 393 _progressframe.set_shadow_type(gtk.SHADOW_IN) |
| 406 _progressframe.show() | 394 _progressframe.show() |
| 407 self.__progress_bar = gtk.ProgressBar() | 395 self.__progress_bar = gtk.ProgressBar() |
| 408 self.__progress_bar.show() | 396 if self.__filetype != "durus": |
| 397 self.__progress_bar.show() | |
| 409 _progressframe.add(self.__progress_bar) | 398 _progressframe.add(self.__progress_bar) |
| 410 self.__statusbar.pack_start(_progressframe, False, False, 0) | 399 self.__statusbar.pack_start(_progressframe, False, False, 0) |
| 411 self.__widget.pack_end(self.__statusbar, False, True, 0) | 400 self.__widget.pack_end(self.__statusbar, False, True, 0) |
| 412 self.__main_item = None | 401 self.__main_item = None |
| 413 | 402 |
| 443 Launch the timeouts: | 432 Launch the timeouts: |
| 444 1- update progress bar | 433 1- update progress bar |
| 445 2- update time label | 434 2- update time label |
| 446 3- If the other timetouts are stoped the window is closed | 435 3- If the other timetouts are stoped the window is closed |
| 447 """ | 436 """ |
| 448 gobject.timeout_add(500, self._updateProgressBar) | |
| 449 gobject.timeout_add(1000, self._updateLabel, time.time()) | 437 gobject.timeout_add(1000, self._updateLabel, time.time()) |
| 450 self.__cancel = [False, False] | 438 if self.__filetype != "durus": |
| 439 gobject.timeout_add(500, self._updateProgressBar) | |
| 440 self.__cancel = [False, False] | |
| 441 else: | |
| 442 self.__cancel = [True, False] | |
| 451 gobject.timeout_add(1000, self._autoClose) | 443 gobject.timeout_add(1000, self._autoClose) |
| 452 | 444 |
| 453 def _updateProgressBar(self): | 445 def _updateProgressBar(self): |
| 454 """def _updateProgressBar(self) | 446 """def _updateProgressBar(self) |
| 455 | 447 |
| 490 if self.__cancel == [ True, True ]: | 482 if self.__cancel == [ True, True ]: |
| 491 return False | 483 return False |
| 492 else: | 484 else: |
| 493 return True | 485 return True |
| 494 | 486 |
| 495 def closeWindow(self): | 487 def threadFinishedSignal(self, budget): |
| 496 """def closeWindow(self) | 488 """def closeWindow(self) |
| 497 | 489 |
| 498 Sets the __children atribute to None | 490 Sets the __children atribute to None |
| 499 This causes that the timeouts is ended. | 491 This causes that the timeouts is ended. |
| 500 This method is called from thread when it is finished | 492 This method is called from thread when it is finished |
| 501 TODO: it must called threadFinished or somethig | 493 """ |
| 502 """ | 494 self.__budget = budget |
| 503 self.__children = None | 495 self.__children = None |
| 504 self.stopLoading() | 496 self.stopLoading() |
| 505 _page = Page(self.__budget) | 497 _page = Page(self.__budget) |
| 506 _children = self.__widget.get_children() | 498 _children = self.__widget.get_children() |
| 507 for _child in _children: | 499 for _child in _children: |
| 534 Return de main widget to show in the page | 526 Return de main widget to show in the page |
| 535 """ | 527 """ |
| 536 return self.__widget | 528 return self.__widget |
| 537 | 529 |
| 538 def getTitle(self): | 530 def getTitle(self): |
| 539 """def getTtle(self) | 531 """def getTitle(self) |
| 540 | 532 |
| 541 Return the title of the page, a gtk.Label objetc | 533 Return the title of the page, a gtk.Label objetc |
| 542 """ | 534 """ |
| 543 return self.__title | 535 return self.__title |
| 536 def getFiletype(self): | |
| 537 """def getFiletipe(self) | |
| 538 | |
| 539 Return the title of the page, a gtk.Label objetc | |
| 540 """ | |
| 541 return self.__filetype | |
| 544 | 542 |
| 545 widget = property(getWidget, None, None, | 543 widget = property(getWidget, None, None, |
| 546 "Main widget showed in the pane") | 544 "Main widget showed in the pane") |
| 547 title = property(getTitle, None, None, | 545 title = property(getTitle, None, None, |
| 548 "Page Title") | 546 "Page Title") |
| 547 filetype = property(getFiletype, None, None, | |
| 548 "Filetype: budget, basedata or durus") | |
| 549 | 549 |
| 550 class Page(object): | 550 class Page(object): |
| 551 """gui.Page: | 551 """gui.Page: |
| 552 | 552 |
| 553 Description: | 553 Description: |
| 4398 """def getWidget(self) | 4398 """def getWidget(self) |
| 4399 | 4399 |
| 4400 return the main widget (gtk.ScrolledWindow) | 4400 return the main widget (gtk.ScrolledWindow) |
| 4401 """ | 4401 """ |
| 4402 return self.__widget | 4402 return self.__widget |
| 4403 widget = property(getWidget, None, None, | |
| 4404 "The main widget (gtk.ScrolledWindow)") | |
| 4405 | |
| 4406 | |
| 4407 class OpenDurusDatabase(object): | |
| 4408 """gui.OpenFiebdc | |
| 4409 | |
| 4410 Description: | |
| 4411 Class to show a dialog to open a durus price database | |
| 4412 Constructor: | |
| 4413 OpenDurusDatabase() | |
| 4414 Ancestry: | |
| 4415 +-- object | |
| 4416 +-- OpenDurusDatabase | |
| 4417 Atributes: | |
| 4418 "_openMethod": The method to open the file | |
| 4419 "__file": the filename to open | |
| 4420 "__window": the File Selection window | |
| 4421 Methods: | |
| 4422 __init__(self) | |
| 4423 setActiveCode(self, code) | |
| 4424 """ | |
| 4425 def __init__(self, openMethod): | |
| 4426 self.__openMethod = openMethod | |
| 4427 self.__file = None | |
| 4428 self.__window = gtk.FileSelection("Abrir Archivo") | |
| 4429 self.__window.connect("destroy", self.destroy) | |
| 4430 self.__window.ok_button.connect("clicked", self._openFile) | |
| 4431 self.__window.cancel_button.connect("clicked", | |
| 4432 lambda w: self.__window.destroy()) | |
| 4433 self.__window.set_filename(globals.getHomePath("DURUS-DATABASE")) | |
| 4434 self.__window.show() | |
| 4435 | |
| 4436 def destroy(self, widget): | |
| 4437 gtk.main_quit() | |
| 4438 | |
| 4439 def main(self): | |
| 4440 gtk.main() | |
| 4441 | |
| 4442 def _openFile(self, w): | |
| 4443 self.__file = self.__window.get_filename() | |
| 4444 _filename = os.path.basename(self.__file) | |
| 4445 _filename_list = _filename.split(".") | |
| 4446 _filename_ext = _filename_list[-1] | |
| 4447 if _filename == "": | |
| 4448 print _("No file selected") | |
| 4449 elif len(_filename_list) < 2 or _filename_ext != "durus": | |
| 4450 print _("The filename must have durus extension") | |
| 4451 else: | |
| 4452 try: | |
| 4453 self.__openMethod(self.__window.get_filename()) | |
| 4454 self.__window.destroy() | |
| 4455 except IOError: | |
| 4456 print utils.mapping("IOError, $1", (self.__file,)) |
