1313#include <assert.h>
1414#include <dirent.h>
1515
16- #include "/bxr_plover/src/rabbitmq-c/examples/ utils.h"
17- #include "/bxr_plover/src/rabbitmq-c/examples/ utils.c"
18- #include "/bxr_plover/src/glade/ b64.h"
19- #include "/bxr_plover/src/glade/ encode.c"
20- #include "/bxr_plover/src/glade/ decode.c"
16+ #include "utils.h"
17+ #include "utils.c"
18+ #include "b64.h"
19+ #include "encode.c"
20+ #include "decode.c"
2121
2222#define MAX_ERROR_MSG 0x1000
2323#define MAX_CNT 10
@@ -26,8 +26,8 @@ typedef struct Data_storage
2626{
2727 char fpath [300 ]; //파일 경로
2828 char fname [20 ]; //파일 이름
29- int cnt ; //민감정보 총 개수(어디다 둬야할까...)
30- int fsize ; //파일 크기
29+ uint cnt ; //민감정보 총 개수
30+ uint fsize ; //파일 크기
3131 char stat ; //파일 상태
3232
3333
@@ -36,9 +36,8 @@ typedef struct Data_storage
3636data_storage ds_j [MAX_CNT ]; //j: 주민번호, d: 운전면허
3737
3838static gchar * path ;
39- int chk_tf ; //chk_true false
40- int data_flag = 1 ; //어떤종류의 민감정보인지 확인하기위한 flag
41-
39+ int chk_tf ; //chk_true false
40+ uint data_flag = 1 ; //어떤종류의 민감정보인지 확인하기위한 flag
4241
4342
4443GtkWidget * detect_window ,
@@ -48,22 +47,17 @@ GtkScrolledWindow *d_scrolledwindow;
4847
4948GtkEntry * d_detect_entry ;
5049
51- GtkTreeView d_treeview ;
52-
53- GtkTreeSelection d_treeselection ;
54-
55- GtkListStore * d_liststore ;
5650
57- void e_enroll_btn_clicked (GtkButton * e_enroll_btn , gpointer * data );
51+ void e_enroll_btn_clicked (GtkButton * e_enroll_btn , gpointer * data );
5852
5953void m_window_destroy ();
6054void m_detect_btn_clicked (GtkButton * m_detect_btn , gpointer * data );
61- void m_setting_btn_clicked (GtkButton * m_setting_btn , gpointer * data );
55+ void m_setting_btn_clicked (GtkButton * m_setting_btn , gpointer * data );
6256
6357void d_detect_btn_clicked (GtkButton * d_detect_btn , gpointer * data );
6458void d_option_btn_clicked (GtkButton * d_option_btn , gpointer * data );
6559void d_folder_btn_clicked (GtkButton * d_folder_btn , gpointer * data );
66- void d_close_btn_clicked (GtkButton * d_close_btn , gpointer * data );
60+ void d_close_btn_clicked (GtkButton * d_close_btn , gpointer * data );
6761void d_detect_entry_activate (GtkEntry * d_detect_entry , gpointer * data );
6862
6963void s_cloese_btn_clicked (GtkButton * s_cloese_btn , gpointer * data );
@@ -369,10 +363,12 @@ int detect_func(gchar *path)
369363 }
370364 amqp_bytes_free (props .reply_to );
371365 }
372-
366+
367+
373368 /*
374369 wait an answer
375370 */
371+ /*
376372 {
377373 amqp_basic_consume(conn, 1, reply_to_queue, amqp_empty_bytes, 0, 1, 0,
378374 amqp_empty_table);
@@ -463,25 +459,25 @@ int detect_func(gchar *path)
463459
464460 if (body_received != body_target)
465461 {
466- /* Can only happen when amqp_simple_wait_frame returns <= 0 * /
467- /* We break here to close the connection * /
462+ // Can only happen when amqp_simple_wait_frame returns <= 0 / /
463+ // We break here to close the connection / /
468464 break;
469465 }
470466
471- /* everything was fine, we can quit now because we received the reply * /
467+ // everything was fine, we can quit now because we received the reply / /
472468 break;
473469 }
474470 }
475471 }
472+ */
473+
476474
477475 /*
478476 closing
479477 */
480- die_on_amqp_error (amqp_channel_close (conn , 1 , AMQP_REPLY_SUCCESS ),
481- "Closing channel" );
478+ //die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel");
482479
483- die_on_amqp_error (amqp_connection_close (conn , AMQP_REPLY_SUCCESS ),
484- "Closing connection" );
480+ //die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection");
485481
486482 die_on_error (amqp_destroy_connection (conn ), "Ending connection" );
487483
@@ -560,10 +556,141 @@ void d_folder_btn_clicked (GtkButton *d_folder_btn, gpointer *data)
560556 return ;
561557}
562558
559+ //treeview start//
560+ enum
561+ {
562+ d_treeview_num = 0 ,
563+ d_treeview_type ,
564+ d_treeview_filename ,
565+ d_treeview_filelocation ,
566+ d_treeview_cnt ,
567+ d_treeview_stat ,
568+ d_treeview_size ,
569+ NUM_COLS
570+ } ;
571+
572+ static GtkTreeModel *
573+ create_and_fill_model (void )
574+ {
575+ GtkTreeStore * treestore ;
576+ GtkTreeIter iter ;
577+
578+ treestore = gtk_tree_store_new (NUM_COLS , G_TYPE_UINT , G_TYPE_STRING , G_TYPE_STRING , G_TYPE_STRING , G_TYPE_UINT , G_TYPE_STRING , G_TYPE_UINT );
579+
580+ for (int i = 1 ; i <= ds_j -> cnt ; i ++ )
581+ {
582+ gtk_tree_store_append (treestore , & iter , NULL );
583+ gtk_tree_store_set (treestore , & iter ,
584+ d_treeview_num , i ,
585+ d_treeview_type , "data_flag" ,
586+ d_treeview_filename , ds_j [i ].fname ,
587+ d_treeview_filelocation , ds_j [i ].fpath ,
588+ d_treeview_cnt , ds_j [i ].cnt ,
589+ d_treeview_stat , "have to define" ,
590+ d_treeview_size , ds_j [i ].fsize ,
591+ -1 );
592+ }
593+
594+ return GTK_TREE_MODEL (treestore );
595+ }
596+
597+ static GtkWidget *
598+ create_view_and_model (void )
599+ {
600+ GtkTreeViewColumn * col ;
601+ GtkCellRenderer * renderer ;
602+ GtkWidget * view ;
603+ GtkTreeModel * model ;
604+
605+ view = gtk_tree_view_new ();
606+
607+ /* --- Column #번호 --- */
608+ col = gtk_tree_view_column_new ();
609+
610+ gtk_tree_view_column_set_title (col , "번호" );
611+
612+ /* pack tree view column into tree view */
613+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
614+
615+ renderer = gtk_cell_renderer_text_new ();
616+
617+ /* pack cell renderer into tree view column */
618+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
619+
620+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_num );
621+
622+ /* --- Column #민감정보 종류 --- */
623+ col = gtk_tree_view_column_new ();
624+ gtk_tree_view_column_set_title (col , "민감정보 종류" );
625+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
626+ renderer = gtk_cell_renderer_text_new ();
627+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
628+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_type );
629+
630+ /* --- Column #파일 이름 --- */
631+ col = gtk_tree_view_column_new ();
632+ gtk_tree_view_column_set_title (col , "파일 이름" );
633+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
634+ renderer = gtk_cell_renderer_text_new ();
635+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
636+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_filename );
637+
638+ /* --- Column #파일 위치 --- */
639+ col = gtk_tree_view_column_new ();
640+ gtk_tree_view_column_set_title (col , "파일 위치" );
641+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
642+ renderer = gtk_cell_renderer_text_new ();
643+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
644+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_filelocation );
645+
646+ /* --- Column #민감정보 개수 --- */
647+ col = gtk_tree_view_column_new ();
648+ gtk_tree_view_column_set_title (col , "민감정보 개수" );
649+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
650+ renderer = gtk_cell_renderer_text_new ();
651+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
652+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_cnt );
653+
654+ /* --- Column #상태 --- */
655+ col = gtk_tree_view_column_new ();
656+ gtk_tree_view_column_set_title (col , "상태" );
657+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
658+ renderer = gtk_cell_renderer_text_new ();
659+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
660+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_stat );
661+
662+ /* --- Column #파일 크기 --- */
663+ col = gtk_tree_view_column_new ();
664+ gtk_tree_view_column_set_title (col , "파일 크기" );
665+ gtk_tree_view_append_column (GTK_TREE_VIEW (view ), col );
666+ renderer = gtk_cell_renderer_text_new ();
667+ gtk_tree_view_column_pack_start (col , renderer , TRUE);
668+ gtk_tree_view_column_add_attribute (col , renderer , "text" , d_treeview_size );
669+
670+ model = create_and_fill_model ();
671+
672+ gtk_tree_view_set_model (GTK_TREE_VIEW (view ), model );
673+
674+ g_object_unref (model ); /* destroy model automatically with view */
675+
676+ gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (view )),
677+ GTK_SELECTION_NONE );
678+
679+ return view ;
680+ }
681+ //treeview end//
682+
683+
563684void d_detect_btn_clicked (GtkButton * d_detect_btn , gpointer * data )
564685{
686+ GtkWidget * view ;
687+
565688 detect_func (path );
566689
690+ view = create_view_and_model ();
691+ gtk_container_add (GTK_CONTAINER (d_scrolledwindow ), view );
692+ gtk_widget_show_all ((GtkWidget * )d_scrolledwindow );
693+
567694 return ;
568695}
569696
@@ -626,21 +753,23 @@ void s_cloese_btn_clicked (GtkButton *setting_window, gpointer *data)
626753//main//
627754int main (int argc , char * argv [])
628755{
629- GtkBuilder * builder ;
756+ GtkBuilder * builder ;
630757 GtkWidget * main_window ,
631- * enrollment_window ;
758+ * enrollment_window ,
759+ * view ;
632760
633761 gtk_init (& argc , & argv );
634762
635763 builder = gtk_builder_new ();
636764 gtk_builder_add_from_file (builder , "main.glade" , NULL );
637765
638766 main_window = GTK_WIDGET (gtk_builder_get_object (builder , "main_window" ));
639- enrollment_window = GTK_WIDGET (gtk_builder_get_object (builder , "enrollment_window" ));
640- detect_window = GTK_WIDGET (gtk_builder_get_object (builder , "detect_window" ));
767+ enrollment_window = GTK_WIDGET (gtk_builder_get_object (builder , "enrollment_window" ));
768+ detect_window = GTK_WIDGET (gtk_builder_get_object (builder , "detect_window" ));
641769 setting_window = GTK_WIDGET (gtk_builder_get_object (builder , "setting_window" ));
642- d_scrolledwindow = GTK_SCROLLED_WINDOW (gtk_builder_get_object (builder , "d_scrolledwindow" ));
643- d_liststore = GTK_LIST_STORE (gtk_builder_get_object (builder , "d_liststore" ));
770+ d_scrolledwindow = GTK_SCROLLED_WINDOW (gtk_builder_get_object (builder , "d_scrolledwindow" ));
771+
772+
644773
645774
646775 //닫기x 버튼을 hide로 바꾸기//
0 commit comments