00001
00012 #include <string.h>
00013 #include <gtk/gtk.h>
00014 #include <stdlib.h>
00015 #include <unistd.h>
00016 #include <stdio.h>
00017 #include <sqlite3.h>
00018 #include <sys/types.h>
00019 #include <unistd.h>
00020
00021
00022 #define BUFFER 4096
00023 #define MAX_IMAGES 8
00024
00025
00026 sqlite3 *db1;
00027
00028 GtkWidget *dialog, *table, *user, *real, *home;
00029 GtkWidget *lbl1, *lbl2, *lbl3;
00030 GtkWidget *button,*addbutton,*deletebutton;
00031
00032 char filename[1000];
00033 char filepath[100];
00034
00035
00040 static int callback (void *NotUsed, int argc, char **argv, char **azColName)
00041 {
00042 NotUsed = 0;
00043 int i;
00044 for (i = 0; i < argc; i++)
00045 {
00046 printf ("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
00047 }
00048 printf ("\n");
00049 return 0;
00050 }
00051
00052
00059 void setup_tables()
00060 {
00061 int rc1;
00062 char *zErrMsg = 0;
00063 char sql_query[BUFFER];
00064 rc1 = sqlite3_open ("mylibrary.sqlite", &db1);
00065 if (rc1)
00066 {
00067 fprintf (stderr, "Can't open database: %s\n", sqlite3_errmsg (db1));
00068 sqlite3_close (db1);
00069 exit (1);
00070 }
00071
00072
00073 strcpy(sql_query, "create table mylibrary (bookname,authorname,path)");
00074 rc1 = sqlite3_exec (db1, sql_query, callback, 0, &zErrMsg);
00075 }
00076
00077
00078
00085 gint view_button(GtkWidget *widget, GdkEvent *event, gpointer value)
00086 {
00087
00088 GtkWidget *dialog1;
00089 GSList *filenames;
00090
00091 dialog1 = gtk_file_chooser_dialog_new ("View File(s) ",(GtkWindow *)dialog,GTK_FILE_CHOOSER_ACTION_OPEN,GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
00092 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,NULL);
00093
00094
00095
00096 gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog1), FALSE);
00097 gint result = gtk_dialog_run (GTK_DIALOG (dialog1));
00098
00099 char fname[100];
00100
00101 if (result == GTK_RESPONSE_ACCEPT)
00102 {
00103 filenames = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dialog1));
00104
00105 while (filenames != NULL)
00106 {
00107 gchar *file = (gchar*) filenames->data;
00108 g_print ("%s was selected.\n", file);
00109 strcpy(fname,file);
00110 filenames = filenames->next;
00111 }
00112 }
00113
00114 gtk_widget_destroy (dialog1);
00115
00116
00117
00118 char command[100];
00119 int pid=fork();
00120
00121 if(!pid)
00122 {
00123 sprintf(command,"evince %s",fname);
00124 printf("%s\n",command);
00125 system(command);
00126 printf("Opening \n");
00127 }
00128
00129 return FALSE;
00130 }
00131
00138 gint add_button(GtkWidget *widget, GdkEvent *event, gpointer value)
00139 {
00140 printf("%s\n\n",gtk_entry_get_text(GTK_ENTRY(home)));
00141 FILE *fp = fopen(gtk_entry_get_text(GTK_ENTRY(home)),"r");
00142 if( !fp )
00143 {
00144
00145 GtkWidget *dialog2 = gtk_message_dialog_new (NULL,GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "FILE DOESNT EXIST");
00146 gtk_dialog_run (GTK_DIALOG (dialog2));
00147 gtk_widget_destroy (dialog2);
00148
00149 return FALSE;
00150
00151 }
00152
00153 int NotUsed = 0;
00154 char *zErrMsg = 0;
00155 int rc;
00156 char sql_query[BUFFER];
00157
00158 sprintf(sql_query, "INSERT into mylibrary values('%s','%s','%s')",
00159 gtk_entry_get_text(GTK_ENTRY(user)),
00160 gtk_entry_get_text(GTK_ENTRY(real)),
00161 gtk_entry_get_text(GTK_ENTRY(home)));
00162
00163 rc = sqlite3_exec (db1, sql_query, callback, 0, &zErrMsg);
00164
00165
00166
00167
00168
00169 char command[100],dest[200];
00170
00171 sprintf(dest,"%s%s-%s.pdf",filepath,gtk_entry_get_text(GTK_ENTRY(user)),gtk_entry_get_text(GTK_ENTRY(real)));
00172
00173 sprintf(command,"cp '%s' '%s'",gtk_entry_get_text(GTK_ENTRY(home)),dest);
00174 printf("destination:%s\n",dest);
00175
00176 system(command);
00177 printf("Adding file to HD\n");
00178
00179 return FALSE;
00180
00181 }
00182
00183
00190 gint delete_button(GtkWidget *widget, GdkEvent *event, gpointer value)
00191 {
00192
00193
00194
00195 char command[100],filename[100];
00196
00197 sprintf(filename,"%s%s-%s.pdf",filepath,gtk_entry_get_text(GTK_ENTRY(user)),gtk_entry_get_text(GTK_ENTRY(real)));
00198 printf("FILENAME:%s\n",filename);
00199
00200 sprintf(command,"rm %s",filename);
00201 printf("%s \n",command);
00202 FILE *fp = fopen(filename,"r");
00203 if( !fp )
00204 {
00205
00206 GtkWidget *dialog2 = gtk_message_dialog_new (NULL,GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "FILE DOESNT EXIST");
00207 gtk_dialog_run (GTK_DIALOG (dialog2));
00208 gtk_widget_destroy (dialog2);
00209
00210 return FALSE;
00211 }
00212
00213
00214 int NotUsed = 0;
00215 char *zErrMsg = 0;
00216 int rc;
00217 char sql_query[BUFFER];
00218
00219 sprintf(sql_query, "DELETE from mylibrary where bookname='%s' and authorname='%s'",
00220 gtk_entry_get_text(GTK_ENTRY(user)),
00221 gtk_entry_get_text(GTK_ENTRY(real)));
00222
00223 rc = sqlite3_exec (db1, sql_query, callback, 0, &zErrMsg);
00224
00225 system(command);
00226
00227 printf("Deleting file from HD\n");
00228
00229 return FALSE;
00230 }
00231
00239 int main (int argc,char *argv[])
00240 {
00241 gint result;
00242 gtk_init (&argc, &argv);
00243
00244 dialog = gtk_dialog_new_with_buttons ("E LIBRARY", NULL,GTK_DIALOG_MODAL,GTK_STOCK_OK, GTK_RESPONSE_OK,GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,NULL);
00245 gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
00246
00247
00248 lbl1 = gtk_label_new ("Book Name:");
00249 lbl2 = gtk_label_new ("Author Name:");
00250 lbl3 = gtk_label_new ("Path:");
00251
00252 strcpy(filepath,"/home/garimella/to/");
00253 setup_tables();
00254
00255
00256 user = gtk_entry_new ();
00257 real = gtk_entry_new ();
00258 home = gtk_entry_new ();
00259
00260 button = gtk_button_new_with_label ("View Books");
00261 addbutton = gtk_button_new_with_label ("Add Book");
00262 deletebutton = gtk_button_new_with_label ("Delete Book");
00263
00264
00265 g_signal_connect (G_OBJECT (button),"clicked",G_CALLBACK(view_button),NULL);
00266 g_signal_connect (G_OBJECT (addbutton),"clicked",G_CALLBACK(add_button),NULL);
00267 g_signal_connect (G_OBJECT (deletebutton),"clicked",G_CALLBACK(delete_button),NULL);
00268
00269
00270
00271
00272 gtk_entry_set_text (GTK_ENTRY (user), g_get_user_name());
00273 gtk_entry_set_text (GTK_ENTRY (real), g_get_real_name());
00274 gtk_entry_set_text (GTK_ENTRY (home), g_get_home_dir());
00275
00276 table = gtk_table_new (6, 2, FALSE);
00277 gtk_table_attach_defaults (GTK_TABLE (table), lbl1, 0, 1, 0, 1);
00278 gtk_table_attach_defaults (GTK_TABLE (table), lbl2, 0, 1, 1, 2);
00279 gtk_table_attach_defaults (GTK_TABLE (table), lbl3, 0, 1, 2, 3);
00280
00281 gtk_table_attach_defaults (GTK_TABLE (table), user, 1, 2, 0, 1);
00282 gtk_table_attach_defaults (GTK_TABLE (table), real, 1, 2, 1, 2);
00283 gtk_table_attach_defaults (GTK_TABLE (table), home, 1, 2, 2, 3);
00284 gtk_table_attach_defaults (GTK_TABLE (table), button, 1, 2, 3, 4);
00285 gtk_table_attach_defaults (GTK_TABLE (table), addbutton, 1, 2, 4, 5);
00286 gtk_table_attach_defaults (GTK_TABLE (table), deletebutton, 1, 2, 5, 6);
00287
00288 gtk_table_set_row_spacings (GTK_TABLE (table), 5);
00289 gtk_table_set_col_spacings (GTK_TABLE (table), 5);
00290 gtk_container_set_border_width (GTK_CONTAINER (table), 5);
00291
00292
00293 gtk_box_pack_start_defaults (GTK_BOX (GTK_DIALOG (dialog)->vbox), table);
00294 gtk_widget_show_all (dialog);
00295
00296
00297 result = gtk_dialog_run (GTK_DIALOG (dialog));
00298
00299 if (result == GTK_RESPONSE_OK)
00300 {
00301 g_print ("User Name: %s\n", gtk_entry_get_text (GTK_ENTRY (user)));
00302 g_print ("Home Folder: %s\n", gtk_entry_get_text (GTK_ENTRY (home)));
00303 g_print ("Real Name: %s\n", gtk_entry_get_text (GTK_ENTRY (real)));
00304 }
00305
00306 gtk_widget_destroy (dialog);
00307
00308 return 0;
00309
00310 }