1 /**
2 * Copyright Mikael H�gdahl - triyana@users.sourceforge.net
3 *
4 * This source is distributed under the terms of the Q Public License version 1.0,
5 * created by Trolltech (www.trolltech.com).
6 */
7
8 #include <Resource.h>
9 #include <db/DBFactory.h>
10 #include <dlg/ExportDlg.h>
11 #include <dlg/InfoDlg.h>
12 #include <dlg/ProgressDlg.h>
13 #include <gui/XTrader.h>
14 #include <help/Export.h>
15 #include <MHDate.h>
16 #include <MHDebug.h>
17 #include <FL/fl_draw.H>
18 #include <FL/fl_ask.H>
19 #include <FL/Fl_File_Chooser.H>
20
21
22
23 /**
24 * Create export dialog.
25 */
ExportDlg()26 ExportDlg::ExportDlg () :
27 Fl_Dialog (370, 265, "EXPORT DATABASE TO FILE") {
28 Fl_Window* o = this;
29
30 o->box(FL_UP_BOX);
31 { Fl_Input* o = aFile = new Fl_Input(10, 25, 245, 25, "EXPORT TO FILE");
32 o->labelfont(1);
33 o->align(FL_ALIGN_TOP_LEFT);
34 }
35 { Fl_Box* o = aSelectLabel = new Fl_Box(10, 75, 245, 180, "SELECT DATA");
36 o->box(FL_ENGRAVED_FRAME);
37 o->labelfont(1);
38 o->align(FL_ALIGN_TOP_LEFT);
39 }
40 { Fl_Check_Button* o = aSecurity = new Fl_Check_Button(15, 80, 145, 25, "SECURITIES");
41 o->down_box(FL_DOWN_BOX);
42 }
43 { Fl_Check_Button* o = aSecurityList = new Fl_Check_Button(15, 105, 145, 25, "SECURITY LISTS");
44 o->down_box(FL_DOWN_BOX);
45 }
46 { Fl_Check_Button* o = aPrice = new Fl_Check_Button(15, 130, 145, 25, "PRICE DATA");
47 o->down_box(FL_DOWN_BOX);
48 }
49 { Fl_Check_Button* o = aAccount = new Fl_Check_Button(15, 155, 145, 25, "ACCOUNTS");
50 o->down_box(FL_DOWN_BOX);
51 }
52 { Fl_Check_Button* o = aTransaction = new Fl_Check_Button(15, 180, 145, 25, "TRANSACTIONS");
53 o->down_box(FL_DOWN_BOX);
54 }
55 { Fl_Check_Button* o = aGuard = new Fl_Check_Button(15, 205, 145, 25, "GUARD");
56 o->down_box(FL_DOWN_BOX);
57 }
58 { Fl_Check_Button* o = aSettings = new Fl_Check_Button(15, 230, 145, 25, "SETTINGS");
59 o->down_box(FL_DOWN_BOX);
60 }
61 aExport = new Fl_Return_Button(265, 25, 100, 25, "&EXPORT");
62 aBrowse = new Fl_Button(265, 60, 100, 25, "&BROWSE...");
63 aHelp = new Fl_Button(265, 95, 100, 25, "&HELP");
64 aClose = new Fl_Button(265, 130, 100, 25, "&CLOSE");
65 o->end();
66
67 aExport->callback (Fl_Dialog::cb2_, this);
68 aBrowse->callback (Fl_Dialog::cb3_, this);
69 aHelp->callback (Fl_Dialog::cb4_, this);
70 aClose->callback (Fl_Dialog::cb1_, this);
71
72 label (STRING(DLG_EXPORT));
73 aFile->label (STRING(RESULT_FILE));
74 aSelectLabel->label (STRING(SELECT_TABLES));
75 aSecurity->label (STRING(SECURITY));
76 aSecurityList->label (STRING(SECURITY_LIST));
77 aPrice->label (STRING(PRICE));
78 aAccount->label (STRING(ACCOUNT));
79 aTransaction->label (STRING(TRANSACTIONS));
80 aGuard->label (STRING(PRICE_GUARD));
81 aSettings->label (STRING(CURRENT_WORKSPACE));
82
83 aExport->label (STRING(EXPORT));
84 aBrowse->label (STRING(BROWSE));
85 aHelp->label (STRING(HELP));
86 aClose->label (STRING(CLOSE_));
87
88 aSecurity->labelsize (XTrader::FontSize());
89 aSecurityList->labelsize (XTrader::FontSize());
90 aPrice->labelsize (XTrader::FontSize());
91 aAccount->labelsize (XTrader::FontSize());
92 aTransaction->labelsize (XTrader::FontSize());
93 aGuard->labelsize (XTrader::FontSize());
94 aSettings->labelsize (XTrader::FontSize());
95
96 XTrader::FixButton (aExport);
97 XTrader::FixButton (aBrowse);
98 XTrader::FixButton (aHelp);
99 XTrader::FixButton (aClose);
100 }
101
102
103
104 /**
105 * Export database to file
106 */
cb1()107 void ExportDlg::cb1 () {
108 aRetVal = 0;
109 }
110
111
112
113 /**
114 * Export database to file
115 */
cb2()116 void ExportDlg::cb2 () {
117 DBG ("cbExport")
118
119 if (aFile->value () == 0 || *aFile->value () == '\0')
120 fl_alert (STRING(ERROR_MISSING_FILE));
121 else {
122 XTrader::StartWork (STRING(INFO_EXPORT));
123
124 try {
125 DBFactory::Export (aFile->value(), aAccount->value() == '\1', aTransaction->value() == '\1', aSecurityList->value() == '\1', aSecurity->value() == '\1', aPrice->value() == '\1', aGuard->value() == '\1', aSettings->value() == '\1');
126 fl_beep (FL_BEEP_MESSAGE);
127 }
128 catch (const char* e) {
129 fl_beep (FL_BEEP_ERROR);
130 label (e);
131 }
132 XTrader::StopWork ("");
133 }
134 }
135
136
137 /**
138 * Callback for file chooser
139 */
exp_fc_callback(Fl_File_Chooser * fc,void * data)140 void exp_fc_callback(Fl_File_Chooser *fc, void *data)
141 {
142 ExportDlg *e = static_cast<ExportDlg *>(data);
143 const char *file = fc->value();
144 if (file && *file) e->aFile->value(file);
145 }
146
147 /**
148 * Get filename
149 */
cb3()150 void ExportDlg::cb3 () {
151 Fl_File_Chooser *fc = new Fl_File_Chooser(STRING(DLG_SELECT_WRITE_FILE), "*.*", Fl_File_Chooser::SINGLE, "");
152 fc->callback(exp_fc_callback, this);
153 delete fc;
154 }
155
156
157
158 /**
159 * Show help
160 */
cb4()161 void ExportDlg::cb4 () {
162 InfoDlg dlg (STRING(HELP_EXPORT), aaExport);
163 dlg.show_modal (this);
164 }
165