1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
|
#include <libgnomedb/libgnomedb.h>
#include <glib/gprintf.h>
#include "data.h"
#include "loan.h"
#include "menu.h"
int main(int argc, char **argv)
{
GtkWidget *window;
GdaParameterList *params, *data_set;
GdaParameter *param;
GtkWidget *page1, *page2, *page3, *page4, *page5;
GtkWidget *hnotebook, *vnotebook;
GdaDataModelIter *iter;
edb = g_new0(EkokenDB, 1);
euser = g_new0(EkokenUser, 1);
emenu = g_new0(EkokenMenu, 1);
gnome_db_init("ekoken", "1.0", argc, argv);
GtkWidget *logindlg;
logindlg = gnome_db_login_dialog_new("EKOKEN MOTOR SND BHD");
if(!gnome_db_login_dialog_run(GNOME_DB_LOGIN_DIALOG(logindlg))){
g_print("login cancelled!\n");
exit(0);
}
GdaClient *client;
GError *error = NULL;
client = gda_client_new();
cnc = gda_client_open_connection(client,
gnome_db_login_dialog_get_dsn(GNOME_DB_LOGIN_DIALOG(logindlg)),
gnome_db_login_dialog_get_username(GNOME_DB_LOGIN_DIALOG(logindlg)),
gnome_db_login_dialog_get_password(GNOME_DB_LOGIN_DIALOG(logindlg)),
GDA_CONNECTION_OPTIONS_DONT_SHARE, &error);
if(!cnc) {
g_print("fail to connect to database server\n");
exit(0);
}
gtk_widget_destroy(logindlg);
dict = gda_dict_new();
gda_dict_set_connection(dict, cnc);
loan_prepare_data();
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "EKOKEN MOTOR SND BHD");
gtk_window_set_icon(GTK_WINDOW(window),
gdk_pixbuf_new_from_file("pixmaps/logo.jpg", NULL));
gtk_window_maximize(GTK_WINDOW(window));
g_signal_connect(GTK_WINDOW(window), "delete-event",
gtk_main_quit, NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 2);
GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
GtkWidget *menubar = loan_create_menu();
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
page1 = gnome_db_raw_grid_new(edb->dpage1);
g_signal_connect (G_OBJECT (page1), "selection-changed",
G_CALLBACK(user_struct_update),
(gpointer) page1);
g_signal_connect_swapped (G_OBJECT (emenu->next), "clicked",
G_CALLBACK (loan_display_next_record),
(gpointer) page1);
g_signal_connect_swapped (G_OBJECT (page1), "row-activated",
G_CALLBACK (loan_change_view),
(gpointer) vnotebook);
gnome_db_raw_grid_set_sample_start(
GNOME_DB_RAW_GRID (page1),
100);
/*restrict*/
iter = gnome_db_data_widget_get_current_data(
GNOME_DB_DATA_WIDGET (page1));
param = GDA_PARAMETER (g_slist_nth_data (
GDA_PARAMETER_LIST (iter)->parameters, 0));
params = gda_data_model_query_get_parameter_list (
GDA_DATA_MODEL_QUERY(edb->dacc));
gda_parameter_bind_to_param (GDA_PARAMETER (params->parameters->data),
param);
params= gda_data_model_query_get_parameter_list (
GDA_DATA_MODEL_QUERY(edb->dloan));
gda_parameter_bind_to_param (GDA_PARAMETER (params->parameters->data),
param);
params = gda_data_model_query_get_parameter_list (GDA_DATA_MODEL_QUERY(edb->dpic));
gda_parameter_bind_to_param (GDA_PARAMETER (params->parameters->data),
param);
params = gda_data_model_query_get_parameter_list (GDA_DATA_MODEL_QUERY(edb->dpay));
gda_parameter_bind_to_param (GDA_PARAMETER (params->parameters->data),
param);
page2 = gnome_db_raw_form_new(edb->dacc);
page3 = gnome_db_raw_form_new(edb->dloan);
page4 = gnome_db_raw_form_new(edb->dpic);
page5 = gnome_db_raw_grid_new(edb->dpay);
GtkWidget *test = loan_display_account (edb->dacc);
data_set= GDA_PARAMETER_LIST (
gnome_db_basic_form_get_data_set(
GNOME_DB_BASIC_FORM (page4)));
/*
* GdaParameter *p2param = gda_parameter_list_find_param (data_set, "photo");
*/
GdaParameter *p2param = GDA_PARAMETER (g_slist_nth_data (data_set->parameters, 0));
g_object_set (G_OBJECT (p2param), "entry_plugin", "picture", NULL);
GtkWidget *photo = loan_display_image (edb->dpic, 0);
vnotebook = gtk_notebook_new();
hnotebook = gtk_notebook_new();
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(vnotebook), GTK_POS_BOTTOM);
gtk_notebook_set_show_border(GTK_NOTEBOOK(hnotebook), TRUE);
gtk_container_set_border_width (GTK_CONTAINER (hnotebook), 5);
GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
gtk_box_pack_start( GTK_BOX (hbox), page2, FALSE, FALSE, 10);
gtk_box_pack_start( GTK_BOX (hbox), page3, FALSE, FALSE, 10);
gtk_box_pack_start( GTK_BOX (hbox), test, FALSE, FALSE, 10);
gtk_notebook_append_page(GTK_NOTEBOOK(vnotebook), page1,
gtk_label_new("Browse Account"));
gtk_notebook_append_page(GTK_NOTEBOOK(vnotebook), hnotebook,
gtk_label_new("Account Information"));
gtk_notebook_append_page(GTK_NOTEBOOK(hnotebook), hbox,
gtk_label_new("Account"));
gtk_notebook_append_page(GTK_NOTEBOOK(hnotebook), page5,
gtk_label_new("Payment"));
GtkWidget *statusbar = gtk_statusbar_new();
gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, FALSE, 0);
gtk_box_pack_end(GTK_BOX(vbox), vnotebook, TRUE, TRUE, 5);
/*callback*/
g_signal_connect (G_OBJECT (emenu->quit), "activate",
G_CALLBACK (gtk_main_quit), NULL);
g_signal_connect (G_OBJECT (emenu->search_acc), "activate",
G_CALLBACK (loan_find_account), NULL);
g_signal_connect (G_OBJECT (emenu->about), "activate",
G_CALLBACK (rogon_about), NULL);
g_signal_connect (G_OBJECT (emenu->setting), "activate",
G_CALLBACK (loan_update_setting), NULL);
g_signal_connect (G_OBJECT (emenu->loan_pay), "activate",
G_CALLBACK (loan_payment),
(gpointer) window);
g_signal_connect_swapped (G_OBJECT (emenu->new), "activate",
G_CALLBACK (loan_new_record),
(gpointer) page2);
g_signal_connect_swapped (G_OBJECT (emenu->refresh), "clicked",
G_CALLBACK (loan_display_reset), page1);
/*end of callback section*/
gtk_widget_show_all(window);
gtk_main();
gda_connection_close(cnc);
return 0;
}
|