Exemplo n.º 1
0
/**
 *保存日志
 */
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("新增失败");
    }

}
Exemplo n.º 2
0
/**
 *修改日志
 */
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);

}
Exemplo n.º 3
0
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");
}