/** *保存日志 */ void save_log(void) { gchar *title = gtk_entry_get_text(GTK_ENTRY(contentTitleEntry)); GtkTextBuffer *gtb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(contentContentTextView)); GtkTextIter start; GtkTextIter end; SAVE_LOG_FILE_SUCCESS_RETURN_TYPE *saveSuccess = NULL;//是否保存成功 char *catalogFileStr = NULL; //目录文件字符串 gtk_text_buffer_get_start_iter(gtb,&start); gtk_text_buffer_get_end_iter(gtb,&end); gchar *content = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(gtb),&start,&end,TRUE); saveSuccess = save_log_file(SAVE_NEW_LOG_FILE,title,content,NULL); if(saveSuccess!=NULL) { //内容保存成功,接下来更新目录文件以及视图 catalogFileStr = convert_file_to_str_catalog(fileCatalogInUi,title,saveSuccess); fprintf(stderr,"修改目录文件%d\n",save_or_modify_catalog_file(catalogFileStr)); free(catalogFileStr); free(saveSuccess); init_right_main_view_hide_all("新增成功"); init_tree_view_catalog(); //刷新树目录; } else { //内容保存失败 init_right_main_view_hide_all("新增失败"); } }
/** *修改日志 */ void modify_log(void) { gchar *title = gtk_entry_get_text(GTK_ENTRY(contentTitleEntry)); //获取标题 GtkTextBuffer *gtb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(contentContentTextView)); GtkTextIter start; GtkTextIter end; SAVE_LOG_FILE_SUCCESS_RETURN_TYPE *saveSuccess = NULL;//是否保存成功 gtk_text_buffer_get_start_iter(gtb,&start); gtk_text_buffer_get_end_iter(gtb,&end); gchar *content = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(gtb),&start,&end,TRUE); //获取内容 saveSuccess = save_log_file(SAVE_MODIFY_LOG_FILE,title,content,modifyFileName); fprintf(stderr,"要修改的文件为%s 标题%s 内容%s 是否保存成功%s\n",modifyFileName,title,content,(saveSuccess==NULL?"否":"是")); if(saveSuccess!=NULL) { int i = 0; int k = 0; short hasDoublePoint = 0;//是否有冒号,用于判断是否点击第二层目录 int first = 0;//第一层 int second = 0;//第二层 int temp = 0; //计算当前权数 int nums = 0;//当前数的位数-1 char *catalogFileStr = NULL; //目录文件字符串 for(i=0 ; i<strlen(selectedTreeIndexStr) ; i++) { if(selectedTreeIndexStr[i] == ':') { hasDoublePoint = 1; nums = 0; } else { if(!hasDoublePoint) { //正在读一级目录序 temp = 0; for(k=0 ; k<nums ; k++) { temp = temp*10; } if(temp==0) first += selectedTreeIndexStr[i]-48; else first += ((selectedTreeIndexStr[i]-48)*temp); nums++; } else { //正在读二级目录序 temp = 0; for(k=0 ; k<nums ; k++) { temp = temp*10; } if(temp==0) second += selectedTreeIndexStr[i]-48; else second += ((selectedTreeIndexStr[i]-48)*temp); nums++; } } } FILE_CATALOG *tempfc = fileCatalogInUi; for(i=0 ; i<first ; i++) tempfc = tempfc->brother; FILE_DETAIL_CATALOG *tempdc = tempfc->headChild; for(i=0 ; i<second ; i++) tempdc = tempdc->brother; if(tempdc->title!=NULL) free(tempdc->title); tempdc->title = (char *)malloc(strlen(title)+1); memset(tempdc->title,0x00,strlen(title)+1); strcpy(tempdc->title,title); catalogFileStr = convert_file_to_str_catalog(fileCatalogInUi,NULL,NULL); fprintf(stderr,"劲哥你好:%s\n",catalogFileStr); fprintf(stderr,"修改目录文件%d\n",save_or_modify_catalog_file(catalogFileStr)); fprintf(stderr,"点击的 first:%d second:%d 原标题为:%s\n",first,second,tempdc->title); init_right_main_view_hide_all("修改成功"); init_tree_view_catalog();//刷新树目录 } else { init_right_main_view_hide_all("修改失败"); } free(saveSuccess); }
int main() { FILE *plane_list, *storm_list, *output_log_verbose, *output_log, *output_log_read, *verification_log, *statistics_log; //int sim_length = TIME_YEAR; init_simlib(); /* Set the log list to be ordered by event time */ list_rank[LIST_LOG] = EVENT_TIME; /* Set the in-port residence time list to be ordered by plane id */ list_rank[LIST_PLANE_PORT_TIME] = PLANE_ID; list_rank[LIST_AVG_PLANES_RUNWAY] = EVENT_TIME; list_rank[LIST_AVG_PLANES_DEBERTH] = EVENT_TIME; /* Set max attributes in a list to 9, for simlog */ maxatr = 10; storm_state = STORM_OFF; taxi_state = TAXI_IDLE; int i; for (i=0; i<NUMBER_OF_BERTHS; i++) { berths[i].state = BERTH_FREE; berths[i].time_unoccupied_last = 0; berths[i].time_unoccupied = 0; berths[i].time_loading = 0; berths[i].time_loading_last = 0; berths[i].time_occupied = 0; berths[i].time_occupied_last = 0; } stats.taxi_time_idle = 0; stats.taxi_time_idle_last = 0; stats.taxi_time_travelling = 0; stats.taxi_time_travelling_last = 0; stats.taxi_time_berthing_deberthing = 0; stats.taxi_time_berthing_deberthing_last = 0; /* initialize timest */ timest(0.0, 0); /* Load the input paramters for times and such */ FILE *input = fopen("config.ini", "r"); verification_log = fopen("verification.log", "w"); load_input_file(input, verification_log); fclose(input); /* initialize berths array to specified size */ //berths = (struct berth *)malloc(sizeof(struct berth)*G.num_berths); /* Generate the plane and storm list */ generate_input_files(); /* Schedule the plane landing and storm events using the input lists*/ plane_list = fopen("plane_list.dat", "r"); storm_list = fopen("storm_list.dat", "r"); schedule_input_list(plane_list); schedule_input_list(storm_list); fclose(plane_list); fclose(storm_list); plane_list = fopen("plane_list.dat", "r"); storm_list = fopen("storm_list.dat", "r"); verify_actors(storm_list, plane_list, verification_log); fclose(plane_list); fclose(storm_list); while(list_size[LIST_EVENT] != 0) { timing(); /* If sim time passes a year, exit the simulation. */ if ((int)sim_time>=G.sim_length) {//TIME_YEAR) { if (taxi_state == TAXI_IDLE) stats.taxi_time_idle += G.sim_length - stats.taxi_time_idle_last; if (taxi_state == TAXI_TRAVELLING_BERTHS || taxi_state == TAXI_TRAVELLING_RUNWAY) stats.taxi_time_travelling += G.sim_length - stats.taxi_time_travelling_last; if (taxi_state == TAXI_BERTHING || taxi_state == TAXI_DEBERTHING) stats.taxi_time_berthing_deberthing += G.sim_length - stats.taxi_time_berthing_deberthing_last; /* Because the stats.taxi_time_travelling isn't quite getting all of the time but I know that the idle and berthing/deberthing times are correct, I'm cheating and using those to figure out the travelling time. */ stats.taxi_time_travelling = G.sim_length - stats.taxi_time_idle - stats.taxi_time_berthing_deberthing; break; } /* printf("%.1f %.1f %s %s\n", sim_time/60, stats.taxi_time_berthing_deberthing/60.0f, strings_event[(int)transfer[EVENT_TYPE]], strings_taxi[taxi_state]); */ /* Main event handler switch */ switch(next_event_type) { case EVENT_LAND1: case EVENT_LAND2: case EVENT_LAND3: plane_land(next_event_type, transfer[EVENT_PLANE_ID]); break; case EVENT_STORM_START: storm_start(); break; case EVENT_STORM_END: storm_end(); break; case EVENT_BERTH: berth(transfer[BERTH_NUMBER]); break; case EVENT_DEBERTH: deberth(transfer[BERTH_NUMBER]); break; case EVENT_FINISH_LOADING: finish_loading(transfer[BERTH_NUMBER]); break; case EVENT_BERTH_FINISH: berth_finish(transfer[BERTH_NUMBER]); break; case EVENT_DEBERTH_FINISH: deberth_finish(transfer[BERTH_NUMBER]); break; case EVENT_TAXI_RETURNS_IDLE: taxi_returns(); break; } if (sim_time == 129705) printf("%d\n", taxi_state == TAXI_IDLE); /* Taxi handler */ switch (taxi_state) { case TAXI_IDLE: taxi_idle(); break; case TAXI_TRAVELLING_RUNWAY: taxi_travelling_runway(); break; case TAXI_TRAVELLING_BERTHS: taxi_travelling_berths(); break; case TAXI_BERTHING: taxi_berthing(); break; case TAXI_DEBERTHING: taxi_deberthing(); break; } }// end simulation loop printf("Log list size: %d\n", list_size[LIST_LOG]); output_log_verbose = fopen("output_log_verbose.csv", "w"); save_log_file_verbose(output_log_verbose); fclose(output_log_verbose); output_log = fopen("output_log.csv", "w"); save_log_file(output_log); fclose(output_log); /* output_log = fopen("output_log.csv", "w"); //verify_output(output_log, verification_log); fclose(output_log); fclose(verification_log); */ statistics_log = fopen("statistics.log", "w"); generate_statistics(statistics_log); fclose(statistics_log); /* Clean up files */ remove("plane_list.dat"); remove("storm_list.dat"); remove("storm_list.csv"); }