PageRenderTime 54ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/main_window.rb

https://bitbucket.org/jjhop/mycash
Ruby | 456 lines | 364 code | 52 blank | 40 comment | 7 complexity | db0a6fef30a6a10bce4368857c349f00 MD5 | raw file
  1. # This program is free software: you can redistribute it and/or modify
  2. # it under the terms of the GNU General Public License as published by
  3. # the Free Software Foundation, version 3 of the License.
  4. #
  5. # This program is distributed in the hope that it will be useful,
  6. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  7. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  8. # GNU General Public License for more details.
  9. #
  10. # You should have received a copy of the GNU General Public License
  11. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  12. #
  13. # Copyright: (C) 2004-2010 Rafal Kotusiewicz aka 'jjhop'. All rights reserved.
  14. #
  15. # http://bitbucket.org/jjhop/mycash/overview/
  16. # http://bitbucket.org/jjhop/mycash/wiki/Home
  17. #
  18. require 'rubygems'
  19. require "fox16"
  20. require File.join(File.dirname(__FILE__), 'suspence_dialog')
  21. require File.join(File.dirname(__FILE__), 'account_dialog')
  22. require File.join(File.dirname(__FILE__), 'database_dialog')
  23. require File.join(File.dirname(__FILE__), 'new_database_dialog')
  24. require File.join(File.dirname(__FILE__), 'about_dialog')
  25. require File.join(File.dirname(__FILE__), 'help_dialog')
  26. include Fox
  27. class MainWindow < FXMainWindow
  28. def initialize(app)
  29. # Najpierw inicjalizacja potrzebnych zmiennych...
  30. @selected_lang = FXDataTarget.new(1)
  31. @current_tab = FXDataTarget.new(1)
  32. @show_statusbar = FXDataTarget.new(true)
  33. @show_menubar = FXDataTarget.new(true)
  34. @show_mainbar = FXDataTarget.new(true)
  35. @show_searchbar = FXDataTarget.new(true)
  36. @current_database = nil
  37. # Teraz budujemy okno, kontrolki itd
  38. super(app, "myCash 0.1", nil, nil, DECOR_ALL, 0, 0, 800, 600)
  39. FXPNGIcon.new(getApp(), File.open(File.join(File.dirname(__FILE__), './ico/16/money_bag.png'),"rb").read) do |ico|
  40. self.icon = ico
  41. self.miniIcon = ico
  42. end
  43. FXToolTip.new(getApp())
  44. # Menu bar
  45. @dragshell1 = FXToolBarShell.new(self, 0)
  46. @menubar = FXMenuBar.new(self, LAYOUT_SIDE_TOP | LAYOUT_FILL_X | FRAME_RAISED)
  47. # Tool bar
  48. #dragshell2 = FXToolBarShell.new(self, 0)
  49. #toolbar = FXToolBar.new(self, dragshell2, (LAYOUT_SIDE_TOP|PACK_UNIFORM_WIDTH|PACK_UNIFORM_HEIGHT|FRAME_RAISED|LAYOUT_FILL_X))
  50. #FXToolBarGrip.new(toolbar, toolbar, FXToolBar::ID_TOOLBARGRIP, TOOLBARGRIP_DOUBLE)
  51. # Status bar
  52. @status_bar = FXStatusBar.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
  53. FXHorizontalSeparator.new(self, LAYOUT_SIDE_TOP, LAYOUT_FILL_X, SEPARATOR_GROOVE)
  54. FXVerticalFrame.new(self, LAYOUT_SIDE_TOP|FRAME_NONE|LAYOUT_FILL_X|LAYOUT_FILL_Y) do |contents|
  55. FXSplitter.new(contents, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|SPLITTER_TRACKING|SPLITTER_HORIZONTAL) do |splitter|
  56. FXGroupBox.new(splitter, "Okresy", LAYOUT_FILL_Y|FRAME_GROOVE, 0, 0, 210) do |groupbox|
  57. FXHorizontalFrame.new(groupbox, LAYOUT_FILL_X|LAYOUT_FILL_Y|FRAME_SUNKEN|FRAME_THICK,0, 0, 0, 0, 0, 0, 0, 0) do |frame|
  58. opts = LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOUT_RIGHT|TREELIST_SHOWS_LINES|TREELIST_SHOWS_BOXES|TREELIST_ROOT_BOXES|TREELIST_EXTENDEDSELECT;
  59. FXTreeList.new(frame, nil, 0, opts) do |tree|
  60. m1 = tree.appendItem(nil, "2007", nil, nil)
  61. tree.appendItem(m1, "Listopad", nil, nil)
  62. tree.appendItem(m1, "Grudzien", nil, nil)
  63. tree.expandTree(m1)
  64. m2 = tree.appendItem(nil, "2008", nil, nil)
  65. tree.appendItem(m2, "Styczen", nil, nil)
  66. tree.appendItem(m2, "Luty", nil, nil)
  67. tree.appendItem(m2, "Marzec", nil, nil)
  68. tree.appendItem(m2, "Kwiecien", nil, nil)
  69. tree.appendItem(m2, "Maj", nil, nil)
  70. tree.appendItem(m2, "Czerwiec", nil, nil)
  71. tree.appendItem(m2, "Lipiec", nil, nil)
  72. tree.appendItem(m2, "Sierpien", nil, nil)
  73. tree.appendItem(m2, "Wrzesien", nil, nil)
  74. tree.appendItem(m2, "Pazdziernik", nil, nil)
  75. tree.appendItem(m2, "Listopad", nil, nil)
  76. tree.appendItem(m2, "Grudzien", nil, nil)
  77. tree.expandTree(m2)
  78. m3 = tree.appendItem(nil, "2009", nil, nil)
  79. tree.appendItem(m3, "Styczen", nil, nil)
  80. tree.appendItem(m3, "Luty", nil, nil)
  81. tree.appendItem(m3, "Marzec", nil, nil)
  82. tree.appendItem(m3, "Kwiecien", nil, nil)
  83. tree.appendItem(m3, "Maj", nil, nil)
  84. tree.appendItem(m3, "Czerwiec", nil, nil)
  85. tree.appendItem(m3, "Lipiec", nil, nil)
  86. tree.appendItem(m3, "Sierpien", nil, nil)
  87. tree.appendItem(m3, "Wrzesien", nil, nil)
  88. tree.appendItem(m3, "Pazdziernik", nil, nil)
  89. tree.appendItem(m3, "Listopad", nil, nil)
  90. tree.appendItem(m3, "Grudzien", nil, nil)
  91. tree.expandTree(m3)
  92. m4 = tree.appendItem(nil, "2010", nil, nil)
  93. tree.appendItem(m4, "Styczen", nil, nil)
  94. tree.appendItem(m4, "Luty", nil, nil)
  95. tree.appendItem(m4, "Marzec", nil, nil).select()
  96. end
  97. end
  98. end
  99. @tabs = FXTabBook.new(splitter, nil, 0, LAYOUT_FILL_Y|LAYOUT_RIGHT) do |tabBook|
  100. FXTabItem.new(tabBook, "Wydatki [Ctrl-F1]")
  101. FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED) do |page|
  102. FXHorizontalFrame.new(page, FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL, 0,0,0,0, 0,0,0,0) do |frame|
  103. FXTable.new(frame, nil, 0, TABLE_COL_SIZABLE|TABLE_NO_COLSELECT|LAYOUT_FILL) do |t|
  104. # table setup
  105. t.setTableSize(0, 6)
  106. t.rowHeaderMode = LAYOUT_FIX_WIDTH
  107. t.rowHeaderWidth = 0
  108. t.editable = false
  109. t.setColumnText( 0, "Lp.")
  110. t.setColumnWidth(0, 25)
  111. t.setColumnText(1, "Data wydania")
  112. t.setColumnWidth(1, 100)
  113. t.setColumnJustify(1, FXHeaderItem::RIGHT)
  114. t.setColumnText(2, "Wartosc")
  115. t.setColumnWidth(2, 100)
  116. t.setColumnJustify(2, FXHeaderItem::RIGHT)
  117. t.setColumnText(3, "Kategoria")
  118. t.setColumnWidth(3, 100)
  119. t.setColumnJustify(3, FXHeaderItem::RIGHT)
  120. t.setColumnText(4, "Konto")
  121. t.setColumnWidth(4, 100)
  122. t.setColumnJustify(4, FXHeaderItem::RIGHT)
  123. t.setColumnText(5, "Odbiorca")
  124. t.setColumnWidth(5, 100)
  125. t.setColumnJustify(5, FXHeaderItem::RIGHT)
  126. # teraz jakie&#x153; lipne dane
  127. 50.times do |idx|
  128. t.insertRows(t.numRows, 1, true)
  129. t.setItemText(idx, 0, "#{idx+1}");
  130. t.setItemText(idx, 1, "#{Time.new.strftime("%d-%m-%Y")}");
  131. t.setItemText(idx, 2, "#{format("%.2f", 130 - rand)}zl");
  132. t.setItemText(idx, 3, "Wydatki rozne");
  133. t.setItemText(idx, 4, "Portfel");
  134. t.setItemText(idx, 5, "Jasiek Wisniewski");
  135. end
  136. end
  137. end
  138. end
  139. FXTabItem.new(tabBook, "Zastawienia [Ctrl-F2]")
  140. FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED) do |page|
  141. FXHorizontalFrame.new(page, FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y)
  142. end
  143. FXTabItem.new(tabBook, "Przychody [Ctrl-F3]")
  144. FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED) do |page|
  145. FXHorizontalFrame.new(page, FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL, 0,0,0,0, 0,0,0,0) do |frame|
  146. FXTable.new(frame, nil, 0, TABLE_COL_SIZABLE|TABLE_NO_COLSELECT|LAYOUT_FILL) do |t|
  147. # table setup
  148. t.setTableSize(0, 6)
  149. t.rowHeaderMode = LAYOUT_FIX_WIDTH
  150. t.rowHeaderWidth = 0
  151. t.editable = false
  152. t.setColumnText( 0, "Lp.")
  153. t.setColumnWidth(0, 25)
  154. t.setColumnText(1, "Data przychodu")
  155. t.setColumnWidth(1, 100)
  156. t.setColumnJustify(1, FXHeaderItem::RIGHT)
  157. t.setColumnText(2, "Kwota")
  158. t.setColumnWidth(2, 100)
  159. t.setColumnJustify(2, FXHeaderItem::RIGHT)
  160. t.setColumnText(3, "Kategoria")
  161. t.setColumnWidth(3, 100)
  162. t.setColumnJustify(3, FXHeaderItem::RIGHT)
  163. t.setColumnText(4, "Konto")
  164. t.setColumnWidth(4, 100)
  165. t.setColumnJustify(4, FXHeaderItem::RIGHT)
  166. t.setColumnText(5, "Zrodlo przychodu")
  167. t.setColumnWidth(5, 100)
  168. t.setColumnJustify(5, FXHeaderItem::RIGHT)
  169. # teraz jakie&#x153; lipne dane
  170. 10.times do |idx|
  171. t.insertRows(t.numRows, 1, true)
  172. t.setItemText(idx, 0, "#{idx+1}");
  173. t.setItemText(idx, 1, "#{Time.new.strftime("%d-%m-%Y")}");
  174. t.setItemText(idx, 2, "#{format("%.2f", 130 - rand)}zl");
  175. t.setItemText(idx, 3, "Wynagrodzenie");
  176. t.setItemText(idx, 4, "Millenium 23232312");
  177. t.setItemText(idx, 5, "Kowalski Sp. z o.o.");
  178. end
  179. end
  180. end
  181. end
  182. FXTabItem.new(tabBook, "Stan kont [Ctrl-F4]")
  183. FXHorizontalFrame.new(tabBook, FRAME_THICK|FRAME_RAISED) do |page|
  184. FXHorizontalFrame.new(page, FRAME_THICK|FRAME_SUNKEN|LAYOUT_FILL_X|LAYOUT_FILL_Y)
  185. end
  186. tabBook.setCurrent(0)
  187. end
  188. end
  189. end
  190. filemenu = FXMenuPane.new(self) do |menu|
  191. FXGIFIcon.new(getApp(), File.open(File.join(File.dirname(__FILE__), './ico/16/book_add.gif'),"rb").read) do |ico|
  192. FXMenuCommand.new(menu, "Nowa baza...\tAlt-Shift-N\tNowa baza...", ico) do |c|
  193. c.connect(SEL_COMMAND, method(:cmd_show_new_database))
  194. end
  195. end
  196. FXGIFIcon.new(getApp(), File.open(File.join(File.dirname(__FILE__), './ico/16/book.gif'),"rb").read) do |ico|
  197. FXMenuCommand.new(menu, "Otworz baze...\tAlt-Shift-O\tOtwiera baze...", ico) do |c|
  198. c.connect(SEL_COMMAND, method(:cmd_show_open_database))
  199. end
  200. end
  201. FXGIFIcon.new(getApp(), File.open(File.join(File.dirname(__FILE__), './ico/16/book_close.gif'),"rb").read) do |ico|
  202. @dbclose_cmd = FXMenuCommand.new(menu, "Zamknij baze\tAlt-Shift-W\tZamyka baze", ico) do |c|
  203. c.connect(SEL_COMMAND, method(:cmd_close_database))
  204. c.disable
  205. end
  206. end
  207. FXMenuSeparator.new(menu)
  208. @suspence_new_cmd = FXMenuCommand.new(menu, "Nowy wydatek...\tCtrl-N\tNowy wydatek", nil) do |cmd|
  209. cmd.connect(SEL_COMMAND, method(:cmd_show_new_suspence))
  210. cmd.disable
  211. end
  212. @suspence_search_cmd = FXMenuCommand.new(menu, "Szukaj wydatku...\t\tSzukaj...", nil) do |cmd|
  213. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  214. cmd.disable
  215. end
  216. FXMenuSeparator.new(menu)
  217. @income_new_cmd = FXMenuCommand.new(menu, "Nowy przychod..\tCtrl-Shift-N\tNowy przychod", nil) do |cmd|
  218. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  219. cmd.disable
  220. end
  221. @income_search_cmd = FXMenuCommand.new(menu, "Wyszukaj przychod..\t\tWyszukaj przychod", nil) do |cmd|
  222. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  223. cmd.disable
  224. end
  225. FXMenuSeparator.new(menu)
  226. @account_management_cmd = FXMenuCommand.new(menu, "Zarzadzanie kontami...\t\tOtwiera okno dialogowe zarzadzania kontami", nil) do |cmd|
  227. cmd.connect(SEL_COMMAND, method(:cmd_show_account_controller_dialog))
  228. cmd.disable
  229. end
  230. FXMenuCommand.new(menu, "Kategorie wydatkow...\t\tOtwiera okno zarzadzania kategoriami wydatkow", nil) do |cmd|
  231. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  232. cmd.disable
  233. end
  234. FXMenuCommand.new(menu, "Kategorie przychodow...\t\tOtwiera okno zarzadzania kategoriami przychodow", nil) do |cmd|
  235. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  236. cmd.disable
  237. end
  238. FXMenuCommand.new(menu, "Zrodla przychodow...\t\tOtwiera okno zarzadzania zrodalami przychodow", nil) do |cmd|
  239. cmd.connect(SEL_COMMAND, method(:not_yet_implemented))
  240. cmd.disable
  241. end
  242. FXMenuSeparator.new(menu)
  243. FXMenuCommand.new(menu, "Wyjscie\tCtrl-W\t\tZamykam program", nil).connect(SEL_COMMAND, method(:cmd_quit))
  244. end
  245. editmenu = FXMenuPane.new(self) do |menu|
  246. FXMenuCommand.new(menu, "Wytnij\tCtrl-X\tCut selection to clipboard", nil, getApp())
  247. FXMenuCommand.new(menu, "Kopiuj\tCtl-C\tCopy selection to clipboard.", nil, getApp())
  248. FXMenuCommand.new(menu, "Wklej\tCtl-V\tPaste from clipboard.", nil, getApp())
  249. FXMenuCommand.new(menu, "Usun\tCtl-D\tDelete selection.", nil, getApp())
  250. FXMenuSeparator.new(menu)
  251. FXMenuCommand.new(menu, "Szukaj...\tCtl-F\tWyszukaj.", nil, getApp())
  252. FXMenuCommand.new(menu, "Nastepny\tF3\tSzukaj dalej.", nil, getApp())
  253. FXMenuCommand.new(menu, "Poprzedni\tShift-F3\tSzukaj wczesniej.", nil, getApp())
  254. FXMenuSeparator.new(menu)
  255. FXMenuCommand.new(menu, "Preferencje...\t\t", nil).connect(SEL_COMMAND, method(:not_yet_implemented))
  256. end
  257. viewmenu = FXMenuPane.new(self) do |menu|
  258. FXMenuRadio.new(menu, "Wydatki\tCtrl-F1", @tabs, FXTabBar::ID_OPEN_FIRST + 0)
  259. FXMenuRadio.new(menu, "Zestawienia\tCtrl-F2", @tabs, FXTabBar::ID_OPEN_FIRST + 1)
  260. FXMenuRadio.new(menu, "Przychody\tCtrl-F3", @tabs, FXTabBar::ID_OPEN_FIRST + 2)
  261. FXMenuRadio.new(menu, "Stan kont\tCtrl-F4", @tabs, FXTabBar::ID_OPEN_FIRST + 3)
  262. #FXMenuCommand.new(filemenu, "&Simple List", nil, @tabbook, FXTabBar::ID_OPEN_FIRST+0)
  263. FXMenuSeparator.new(menu)
  264. FXMenuCheck.new(menu, "Pasek stanu\tCtrl-Alt-Shift-S\tPokaz/ukryj pasek stanu", @show_statusbar) do |btn|
  265. btn.check = true
  266. btn.connect(SEL_COMMAND) do
  267. @status_bar.shown? ? @status_bar.hide() : @status_bar.show
  268. self.recalc
  269. end
  270. end
  271. FXMenuCheck.new(menu, "Menu\tF9\tPokaz/ukryj menu programu", @show_menubar)do |btn|
  272. btn.check = true
  273. btn.connect(SEL_COMMAND) do
  274. @menubar.shown? ? @menubar.hide : @menubar.show
  275. self.recalc
  276. end
  277. end
  278. FXMenuCheck.new(menu, "Glowny pasek narzedzi\tCtrl-Alt-Shift-T\tPokaz/ukryj glowny pasek narzedzi.", @show_mainbar, FXDataTarget::ID_VALUE) do |check|
  279. check.disable
  280. end
  281. FXMenuCheck.new(menu, "Pasek narzedzi wyszukiwania\tCtrl-Alt-Shift-F\tPokaz/ukryj pasek narzedzi wyszukiwania.", @show_searchbar, FXDataTarget::ID_VALUE) do |check|
  282. check.disable
  283. end
  284. FXMenuSeparator.new(menu)
  285. FXMenuCascade.new(menu, "Jezyk...") do |cascadeMenu|
  286. cascadeMenu.menu = FXMenuPane.new(self) do |langmenu|
  287. FXMenuRadio.new(langmenu, "Polski\t\t", @selected_lang, FXDataTarget::ID_OPTION + 1)
  288. #FXMenuRadio.new(langmenu, "Angielski\t\t", @selected_lang, FXDataTarget::ID_OPTION + 2)
  289. @selected_lang.connect(SEL_COMMAND) do
  290. #puts "Hello #{@selected_lang.value}"
  291. end
  292. end
  293. end
  294. end
  295. optionsmenu = FXMenuPane.new(self) do |menu|
  296. FXMenuCommand.new(menu, "Zaimportuj z bazy w sieci\t\t", nil).connect(SEL_COMMAND, method(:not_yet_implemented))
  297. FXMenuSeparator.new(menu)
  298. FXMenuCommand.new(menu, "Eksportuj jako XML\t\t", nil).connect(SEL_COMMAND, method(:not_yet_implemented))
  299. FXMenuCommand.new(menu, "Eksportuj jako TXT\t\t", nil).connect(SEL_COMMAND, method(:not_yet_implemented))
  300. FXMenuCommand.new(menu, "Eksportuj jako XLS\t\t", nil).connect(SEL_COMMAND, method(:not_yet_implemented))
  301. end
  302. helpmenu = FXMenuPane.new(self) do |menu|
  303. FXMenuCommand.new(menu, "Pomoc\tF1\tShowing help.", nil).connect(SEL_COMMAND, method(:cmd_help))
  304. FXMenuCommand.new(menu, "O programie\tShift-F1\tOtwiera okno z informacjami o programie.", nil).connect(SEL_COMMAND, method(:cmd_about))
  305. if RUBY_PLATFORM == 'i386-mswin32'
  306. FXMenuSeparator.new(menu)
  307. FXMenuCommand.new(menu, "Strona domowa\tCtrl-Shift-F1\tOtwiera w przegladarce Internet Explorer strone domowa programu.", nil) do |cmd|
  308. cmd.connect(SEL_COMMAND) do
  309. begin
  310. Thread.new do
  311. require 'win32ole'
  312. ie = WIN32OLE.new('InternetExplorer.Application')
  313. ie.visible = true
  314. ie.navigate('http://bitbucket.org/jjhop/mycash/')
  315. end
  316. rescue; end
  317. end
  318. end
  319. end
  320. end
  321. FXMenuTitle.new(@menubar, "&Plik", nil, filemenu)
  322. FXMenuTitle.new(@menubar, "&Edycja", nil, editmenu)
  323. FXMenuTitle.new(@menubar, "&Widok", nil, viewmenu)
  324. #FXMenuTitle.new(@menubar, "&Narzedzia", nil, optionsmenu)
  325. FXMenuTitle.new(@menubar, "Pomoc", nil, helpmenu, LAYOUT_RIGHT)
  326. end
  327. def cmd_quit(sender, sel, ptr)
  328. if MBOX_CLICKED_YES == FXMessageBox.question(self, MBOX_YES_NO, "Potwierdzenie zamkniecia", "Czy jestes pewien, ze chcesz zamknac program?")
  329. getApp().exit(0)
  330. end
  331. end
  332. def cmd_show_new_suspence(sender, sel, ptr)
  333. NewSuspenceDialog.new(self).execute()
  334. return 1
  335. end
  336. def cmd_show_new_database(sender, sel, ptr)
  337. db_dialog = NewDatabaseDialog.new(self)
  338. db_dialog.execute()
  339. return 1
  340. end
  341. # wyswietla dialog proszacy o wybor bazy danych,
  342. # jesli baza zostanie wybrana tworzy instancje
  343. # fabryki dao przekazujac jej plik bazy danych
  344. # po czym uaktualnie GUI
  345. def cmd_show_open_database(sender, sel, ptr)
  346. db_dialog = OpenDatabaseDialog.new(self)
  347. db_dialog.execute()
  348. new_db_name = db_dialog.current_selection
  349. unless db_dialog.current_selection.nil? and @current_database.nil?
  350. factory = MyCashDAO::Factory.instance
  351. dbfile = File.join(File.dirname(__FILE__), '.db', new_db_name)
  352. factory.init_with_dbfile(dbfile)
  353. self.set_db_state_on_gui(true)
  354. self.set_title new_db_name
  355. end
  356. return 1
  357. end
  358. def cmd_close_database(sender, sel, ptr)
  359. if MBOX_CLICKED_YES == FXMessageBox.question(self, MBOX_YES_NO, "Potwierdzenie zamkniecia bazy", "Czy jestes pewien, ze chcesz zamknac te baze?")
  360. MyCashDAO::Factory.instance.disconnet_from_database
  361. self.set_db_state_on_gui(false)
  362. self.set_title ''
  363. end
  364. end
  365. # state -> true; baza jest pod?šczona
  366. # state -> falsel baza jest od?aczona
  367. def set_db_state_on_gui(state)
  368. controls =
  369. [ @dbclose_cmd,
  370. @suspence_new_cmd, @suspence_search_cmd,
  371. @income_new_cmd, @income_search_cmd,
  372. @account_management_cmd
  373. ]
  374. if state
  375. controls.each { |ctrl| ctrl.enable }
  376. else
  377. controls.each { |ctrl| ctrl.disable }
  378. end
  379. end
  380. def cmd_show_account_controller_dialog(sender, sel, ptr)
  381. AccountControllerDialog.new(self).execute()
  382. return 1
  383. end
  384. def not_yet_implemented(sender, sel, ptr)
  385. end
  386. def cmd_help(sender, sel, ptr)
  387. HelpDialog.new(self).execute()
  388. end
  389. def cmd_about(sender, sel, ptr)
  390. #FXMessageBox.information(self, MBOX_OK, "Informacje","Rafal Kotusiewicz\n\nwww: http://jjhop.info\n")
  391. AboutDialog.new(self).execute()
  392. end
  393. def create
  394. super()
  395. show(PLACEMENT_SCREEN)
  396. end
  397. def set_title(title)
  398. full_title = "myCash 0.1"
  399. unless title.empty?
  400. full_title<< " - " << title
  401. end
  402. self.title = full_title
  403. end
  404. end